Шахматы с глубоким обучением


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

Это интересное исследование или демонстрация, в зависимости от того, как вы об этом думаете. В последнее время глубокие нейронные сети поражают всех тем, что учатся распознавать вещи. Это поднимает вопрос, насколько хорошо они учатся на основе логики и стратегии — скажем, игре в шахматы.
Это вопрос, которым решил заняться Эрик Бернхардссон — в основном просто для удовольствия.
Вам не нужно знать теорию искусственных нейронных сетей, чтобы понять, что происходит. По сути, нейронная сеть может использоваться для изучения функции на основе данных. Ключевое различие между нейронной сетью и, скажем, поисковой таблицей для функции заключается в том, что вы надеетесь, что нейронная сеть изучит модель для функции, которая обобщает, так что она приближается к правильному ответу для данных, которые она не видела.
Обычно проблема заключается в том, что данных для обучения сети недостаточно, но в данном случае решение заключалось в загрузке 100 миллионов игр из базы данных игр FICS.
Нейронная сеть была трехслойной с 2048 нейронами в каждом слое. Входной слой состоит из набора из 12 блоков по 64 бита. Каждый 64-битный блок занимает позиции для одной из 12 возможных частей на битовой плате. Это достаточно хорошее разреженное распределенное представление состояния игры, продуманное так, чтобы дать нейронной сети шанс изучить те функции, которые могут быть эффективными.

Предполагается, что данные содержат информацию об оценочной функции f (p), которая дает вам меру качества хода, где p равно 1 для возможной победы, 0 для возможной ничьей и -1 для возможного проигрыша.
Вы можете предположить, что в идеальной игре каждый игрок будет делать оптимальные ходы и, следовательно,:
f (p) = — f (q), если ход q, сделанный другим игроком, следует за q;
и f (r)> f (q)
где r — это случайный ход, а не q, потому что случайный ход должен быть лучше для противника, чем для игрока, выбирающего лучший, возможно, оптимальный ход.
Эти правила не идеальны, но они представляют поведение, которое вы хотели бы иметь для функции оценки.
Сеть была обучена путем представления ей троек (p, q, r), то есть текущей позиции, хода, выбранного игроком-человеком, и случайного хода. Целевая функция, то есть функция, которая измеряет ошибку сети, была разработана таким образом, чтобы меньшие ошибки соответствовали свойствам идеальной оценочной функции.
Следует отметить несколько удивительных вещей. Во-первых, в модель не включаются никакие модели шахмат, игры в шахматы или правила игры в шахматы. Во-вторых, целевая функция просто позволяет сети оптимизировать теоретические свойства оценочной функции, и снова в модели отсутствует чувство «выигрыша» или «проигрыша» — действительно, модель не имеет представления о результатах какого-либо применяемых троек. Это означает, что он учится без какого-либо представления о том, кто выигрывает с учетом данных. Предыдущие программы игры в шахматы нейронной сети, например NeuroChess Себастьяна Труна использовали окончательный результат игры, чтобы изучить функцию оценки.
Так изучает ли он шахматы?
Замечательный ответ, кажется, да.
Выученная оценочная функция может быть помещена в любой из существующих шахматных движков и, следовательно, может быть протестирована с помощью созданных вручную оценочных функций. Движок, использующий изученную функцию оценки, был назван Deep Pink в честь Deep Blue от IBM. Он был противопоставлен Sunfish — шахматному движку, написанному на Python, который не является высоко оцененным шахматным движком, но ведет разумную игру.
Вы можете улучшить любую функцию оценки, позволив движку искать глубже, поэтому важно то, как эти две функции взаимодействуют друг с другом в зависимости от времени. Вы можете увидеть результат на диаграмме ниже.

В целом удивительно, что сеть освоила функцию оценки, которая вообще работает, но примерно в 1/3 случаев выигрыш достаточно впечатляет. У Эрика явно много работы, и он работает один, используя экземпляр AWS GPU. Программа размещена на GitHub, и в ней есть список предлагаемых улучшений. Я бы добавил к этому списку исследование возможностей, которым обучается сеть.

Больше мультяшных забав на xkcd, веб-комиксе о романтике, сарказме, математике и языке


Добавить комментарий