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

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

Ответ
 
Опции темы Опции просмотра
Старый Вчера, 11:48   #1
Magystr
3 разряд
 
Аватар для Magystr
 
Регистрация: 03.08.2016
Сообщений: 156
Сказал(а) спасибо: 13
Поблагодарили 128 раз(а) в 70 сообщениях
Репутация: 6
По умолчанию Шахматные нейронные сети. Что это такое и как они работают?

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

Сначала - как она работает. На примере оценки одной позиции, любой, к примеру - начальной.
На вход сети приходит позиция (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 вне форума   Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
AAM (Вчера), ba70 (Вчера), Chess762 (Вчера), Maratka (Вчера), Философ (Вчера)
Старый Вчера, 12:24   #2
Maratka
Гроссмейстер
 
Аватар для Maratka
 
Регистрация: 11.04.2017
Адрес: РФ, Крым, Севастополь.
Сообщений: 3,962
Сказал(а) спасибо: 929
Поблагодарили 3,348 раз(а) в 2,382 сообщениях
Репутация: 85
По умолчанию Re: Шахматные нейронные сети. Что это такое и как они работают?

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

Сеть можно доучить, в результате чего вероятности выигрышей по тем или иным ходам изменятся, а книгу можно дополнить новыми партиями с тем же результатом.

Принципиальная разница лишь в том, что ходы в случае сети всегда считаются, а в случае книги - берутся готовые (ну или вернее сказать -текущие оболочки отключают движки, и ходят самостоятельно. Ничто не мешает изменить оболочку с движком так, чтобы движок получил 2-3 самых перспективных хода из книги, и начал их обработку в соответствие с заложенной в него логикой).
Maratka на форуме   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
AAM (Вчера), Chess762 (Вчера)
Ответ


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

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

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

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


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


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