Сначала зайдите на github, этот проект все еще находится в стадии активной разработки и поддержки, с помощью этого проекта вы можете настроить свой собственный кластер и обучить свой собственный альфа-гоу китайских шахмат:
icyChessZero
В Китае проживает 1,3+ миллиарда человек, и аудитория китайских шахмат тоже очень широкая, однако проектов с открытым исходным кодом, связанных с китайскими шахматами alpha go/zero, не так много, известные в Китае можно пересчитать по пальцам. , и содержание очень похоже, все они используют метод обучения сети альфа-ноль + альфа-го и перечисляют два относительно известных:
- Jiajia Zero: Это команда, которая поддерживает и перемещает Leela Zero (шахматный проект альфа-ноль) в китайский шахматный проект.В настоящее время он является самым сильным с точки зрения очков Эло, и есть небольшая тенденция к коммерциализации.
- cczero: Код поддерживает почти один человек.Это также китайский шахматный проект, организованный и поддерживаемый людьми.Цель состоит в том, чтобы стать самым сильным проектом с открытым исходным кодом.
Оба проекта замечательны, так зачем мне самому писать один? Это начинается раньше Еще после выхода альфа-го и до выхода альфа-0 у меня была идея использовать нейронные сети для создания китайских шахмат, но в то время люди толком не знали, как это делать. и Го были очень разными. Я написал относительно наивную сеть, надеясь использовать сеть без какого-либо алгоритма, подобного Монте-Карло, для предсказания регулярности человеческих ходов. В конце концов, простая стратегическая сеть в Го может достичь некоторых любительских шахматных навыков. Уровень, я не гонюсь за лучшим в мире, несколько любительских абзацев для меня вполне нормально.
В то время я написал краулер и просканировал множество отечественных шахматных записей, в том числе многие партии известных нам шахматных мастеров, а затем начал обучать сеть предсказывать ходы человека:
Это очень наивный сетевой код, который я реализовал в то время:
icyElephant
Мой подход в то время состоял в том, чтобы использовать 2 сети для прогнозирования движения человека, одну из которых назвали сетью выбора (сеть 1 на рисунке 1), чтобы предсказать, какой ребенок переместится, а другую назвали сетью перемещения, чтобы предсказать, куда движется ребенок. будет двигаться. , по сравнению с методом альфа-ноль, альфа-ноль использует одну сеть для выполнения двух задач:
Интуитивно кажется, что сетевая логика сначала прогнозирует выбор, а затем прогнозирует размещение, больше соответствует процессу человеческого мышления, однако разница в точности между этими двумя сетями очень мала, когда они фактически обучаются с использованием реальных игровых данных. :
И мой метод в то время (сеть выбора-хода) не подходил для предсказания вероятности каждого хода в поиске по дереву Монте-Карло, поэтому позже, когда я написал icyChessZero, я также использовал форму сети политик альфа-ноль. После обучения этой сети я обнаружил, что хотя точность предсказания шахматных ходов не очень низкая, но просто играя против этой сети, которая предсказывает ходы, я обнаружил, что, хотя эта сеть имеет хороший старт, как только она достигает середины в играх и эндшпилях , Интернет часто ведет себя странно, раздавая фигуры. Я думаю, что это явление вызвано разницей между Го и шахматами. Потому что ситуация в Го больше подходит для оценки непосредственно с доски (так называемый «потенциал») , а в шахматах больше логического мышления.
До этого момента есть еще много проектов, которые можно сделать, например, в Zhihu есть серия статей:
RUS Bo: Самодельный AlphaGo за 28 дней
Статья под названием 28-дневная самопальная альфа идет (хотя этот цикл статей был потом евнухом, и автор продал лампу, наверное из-за недостаточной вычислительной мощности), но если идти дальше, то на самом деле есть некий порог, Использование дерева Монте-Карло Выполнение вспомогательных игр и обучение обучению с подкреплением нейронной сети требует огромной вычислительной мощности.Этот порог, другие проекты с открытым исходным кодом обычно решаются с помощью краудфандингового обучения, такого как cczero и Jiajia zero, но некоторые преодолели этот порог. не перешагнул этот порог, например, другой проект на Zhihu раньше:
Cheng Shidong: AlphaZero Practice - китайские шахматы (с бумажным переводом)
Этот проект ограничен огромным количеством ресурсов, необходимых для обучения с подкреплением.Хотя код написан, но из-за недостаточной вычислительной мощности автор может сдаться только после сжигания нескольких сотен долларов.
Итак, как мне справиться с этой проблемой? Я воспользовался своим статусом студента и получил в свои руки каждую машину с графическим процессором, до которой мог дотянуться.Я упросил дедушку сказать моей бабушке, чтобы она купила четыре или пять машин, и сформировал кластер.Хотя вычислительная мощность еще недостаточно, я могу хотя бы начать тренироваться. .
Чтобы фундаментально решить эту проблему, мы можем использовать только огромное количество вычислительной мощности, но мы также можем частично облегчить эту проблему с помощью некоторых методов повышения эффективности, некоторых широко используемых методов, таких как:
- Ускоряем код с помощью c/c++
- Используйте многопроцессорность для запуска нескольких сетей одновременно
- Используйте сопрограммы для группировки нескольких переадресаций в пакеты для повышения эффективности использования графического процессора.
- Используйте сопрограммный/многопроцессный алгоритм дерева Монте-Карло, чтобы ускорить скорость поиска дерева Монте-Карло.
- Используйте несколько машин для распространения шахматного репертуара и используйте больше графических процессоров.
Кроме метода ускорения C/C++, я еще не использовал его, я использовал другие методы, подробнее см.:
Глубокое понимание метода альфа-го и его применения в китайских шахматах.
После реализации функции использования дерева Монте-Карло для поиска ходов я позволил сети обучения с учителем и двум алгоритмам обучения с учителем + дерево Монте-Карло конкурировать друг с другом, и результаты следующие:
В 29 партиях дерево Монте-Карло не проиграло ни одной партии, а 5 партий с ничьей были превышены лимитом количества ходов на тот момент (100 ходов, в целях экономии времени), а ничьи были все мкт без исключения Преимущество. Это ясно доказывает, что дерево Монте-Карло может эффективно улучшить шахматную мощь сети политик.
Принцип этого проекта прост, но реализация логична. Начал писать в марте (сомнительно) и не успел написать. Писал с перерывами. Побегав несколько дней в мае, появились некоторые баги, а потом снова всплыла куча вещей., этот проект снова был отложен, а в июле или августе я неожиданно обнаружил, что у меня наконец-то появилось немного времени, так что, наконец, я завершил первую версию моей китайской шахматной альфы go zero .
Потом начался долгий процесс обучения.Поскольку мои вычислительные мощности очень ограничены,пока только кластер из 4 или 5 gpu серверов обучает эту версию альфа ноль.Мой первоначальный результат оценки основан на лабораторных ресурсах.Я могу обкатать его на лет 10. Позже, по мере того, как расчет становился все более и более точным, я обнаружил, что вполне возможно завершить обучение всего за один год или даже за полгода (моя цель — достичь уровня среднего и высшего человеческого .На пределе вычислительных мощностей и времени) но одной машины точно мало, машин много, поэтому я написал распределённую версию, да ещё и потратил неделю на рефакторинг большого количества кода, после этого рефакторинга некоторые баги исчезли необъяснимым образом Теперь кривая эло, наконец, начинает нормально расти.
Предложение PS: если у вас есть разрешение на бездействующий сервер графического процессора в Beiyou, и вы готовы присоединиться к кластеру для совместного обучения, я надеюсь, что вы можете связаться со мной
На мой взгляд, ценно не только тренировать самую сильную сеть (конечно, если есть ресурсы для обучения самой сильной сети, я не против [вручную закрою лицо]), исследовать точки оптимизации в этом тренировочном процессе, и будьте осторожны. Если в процессе обучения с подкреплением альфа-ноль есть какие-либо необоснованные места, они ценны.
Открытый исходный код на этот раз включает в себя как главный, так и подчиненный код кластера.Я загрузил минимальный образец кластеризации на диск Google:
col AB.research.Google.com/drive/1SC-a…
Этот минимальный образец можно запустить непосредственно с помощью Google Colab (бесплатно), просто сохраните файл на свой собственный диск Google и откройте его с помощью Colab (обратите внимание, чтобы включить ускорение GPU):
Выполнение всего кода в этом минимальном примере в google colab должно привести к результатам, подобным следующим, что указывает на то, что случайный вес был инициализирован и использован для подигры дерева Монте-Карло:
В соответствии с прогрессом и ситуацией с другими проектами, для достижения моей небольшой цели потребуется 4000 ~ 5000 эло.Теперь этот проект достиг около 700 эло, поэтому достижение цели не является невозможным.
Кроме того, данный проект относится к реализации многих подобных проектов, таких как:
Цель написания этого проекта также состоит в том, чтобы надеяться, что на пути исследования будет еще одна дорога и еще один человек.
Последний совет для тех, кто интересуется алгоритмом альфа-нуля:
Если у вас недостаточно вычислительных мощностей, не играйте в шахматы, если вам нечего делать.Для сложной игры, такой как Го, вы можете начать обучение с простой игры, такой как Гомоку, которая имеет гораздо более низкий порог вычислительной мощности.
Кроме того, если вы хотите обсудить какие-то технические вопросы, вы можете приватно пообщаться, прокомментировать или передатьicybee@yeah.netсвяжитесь со мной