Forchess - форум о заочных шахматах  

Вернуться   Forchess - форум о заочных шахматах > Заочные турниры и партии > Шахматные программы и движки

 
 
Опции темы Опции просмотра
Старый 15.02.2019, 11:48   #1
Magystr
2 разряд
 
Аватар для Magystr
 
Регистрация: 03.08.2016
Сообщений: 311
Сказал(а) спасибо: 85
Поблагодарили 227 раз(а) в 123 сообщениях
Репутация: 10
По умолчанию Шахматные нейронные сети. Что это такое и как они работают?

Предлагаю здесь поразбираться, что же такое Шахматная нейронная сеть, что в ней хранится, как она работает и как ее тренируют.

Сначала - как она работает. На примере оценки одной позиции, любой, к примеру - начальной.
На вход сети приходит позиция (fen-код), далее - производятся некие расчеты в черном ящике, и на выходе - один из возможных результатов: выигрыш, ничья или проигрыш. В этом основное отличие от АБ-движков, в которых оценка выдается в сантипешках.
Что же из себя представляет этот черный ящик и какие расчеты внутри него производятся?
Черный ящик - это как раз и есть нейронная сеть. Предположим, что мы ведем речь о сети, размерностью 20*256.
Сеть можно представить в виде слоеного торта, например, "Наполеон" или "Прага". В данном случае у этого пирога 20 слоев.
На каждом слое (не только на верхнем) расположено 256 вишенок. Между вишенками имеются связи. Если связать каждую из вишенок со всеми остальными - это будет очень похоже на сеть, в которую и будет ловиться Вяленая Рыба. Отсюда и название - нейронная СЕТЬ.
Ну вот собственно и все устройство сети в первом приближении. Внутри каждой вишенки - не косточка, как могло бы показаться изначально, а некое число - весовой коэффициент, рассчитанный ранее в процессе тренировки сети. И все. Никаких позиций нигде в сети не хранится - не предназначена она для этого.
Когда на вход приходит какая-либо позиция, нейронная сеть разбивает ее на много-много элементарных составляющих - виртуальных переменных и присваивает этим переменным соответствующие значения.
Далее эта информация поступает в первый слой сети. По заданным связям между вишенками происходит умножение этих переменных на соответствующие коэффициенты. Когда все необходимые пути между вишенками на первом слое пройдены, результаты "проваливаются" на следующий слой сети. В нем также производятся перемещения по имеющимся связям между вишенками и соответствующие вычисления. Таким образом в результате огромного количества вычислений, сеть и выдает оценку позиции в виде одного из трех возможных результатов. Этот расчет - очень длительный, потому нейронная сеть рассматривает существенно меньшее количество позиций, чем обычный движок, но производимая оценка достаточно надежная, потому что учитывается огромное количество нюансов позиции.
Еще раз: никакие позиции ни в каком виде в сети не содержатся, никаких дебютных библиотек в ней нет, и никакие полученные в результате обсчета оценки в нее не записываются.

Определение лучшего хода производится следующим образом:
Изначально строится дерево, в котором заданное количество веточек (например, 512). Каждая из этих веточек отдается на обсчет одному ядру графической карты (Как мы знаем, у современных графических карт несколько тысяч ядер). Когда все ветки обсчитаны и все результаты получены, они суммируются по веткам и получается примерно следующее (для начальной позиции): ход е2-е4 - всего рассмотрено 200 позиций, из них 50 выигрышей, 130 ничьих, 20 проигрышей. Оценка хода 115/200*100% = 55.75%, повторяемость 200/512 = 0.39. Аналогично, в результате того же самого этапа расчета для хода d2-d4 - оценка 54.97%, повторяемость 0.28. А для хода а2-а4, к примеру, - оценка 100%, повторяемость 0.002. В оценке хода присутствует как основной параметр - вероятность выигрыша (точнее наверное - математическое ожидание результата партии), как дополнительный параметр - повторяемость, показывающий какой процент времени был потрачен на анализ именно этого продолжения.

На основании полученных данных, принимается решение, для каких ветвей анализа необходимо уточнение полученной оценки (ветвление позиции) и нужен ли следующий этап расчета, или пора делать ход.

Процесс тренировки сети - это процесс изменения (подстройки) весовых коэффициентов в каждой из имеющихся вишенок таким образом, чтобы выдаваемый сетью результат для каждой случившейся позиции в процессе данного цикла тренировки соответствовал действительности.
Magystr вне форума   Ответить с цитированием
10 пользователя(ей) сказали cпасибо:
AAM (15.02.2019), Alex_Lk (23.02.2019), ba70 (15.02.2019), Chess762 (15.02.2019), Maratka (15.02.2019), sovaz1997 (24.02.2019), TCH (24.02.2019), Барков Кирилл (25.02.2019), Кевин (25.02.2019), Философ (15.02.2019)
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:21. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Рейтинг@Mail.ru