Choose Language
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
language choose
Abak Logo
Игра в Abak Evolution с обучением с подкреплением
Обучение с подкреплением изменило правила игры для всех в области ИИ. Я использовал его для обучения нейронной сети Abak с выдающимися результатами.

В 2018 году Google победил чемпиона по Го с помощью нейронной сети AlphaGo, и было столько шума. Появились новые отличные библиотеки машинного обучения с открытым исходным кодом, использующие домашние GPU для ускорения процесса обучения.

Я принял решение попробовать сделать это с Abak, но когда я только начинал, я едва знал, что такое нейронная сеть. У меня было небольшое искушение в колледже (1996), но без данных, GPU и цели подступиться к этому было сложно. Более того: с математической стороны нейронные сети — это тяжёлая тема, и нужно много вдохновения.

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

Стоя на плечах гигантов, моим первым намерением было учиться у доктора Джеральда Тесауро, который разработал TD-Gammon в 90-х годах. Если я правильно помню, это была первая практическая реализация алгоритма обучения с подкреплением.

Но поскольку Abak — двумерная игра, я не мог использовать предложенную модель и должен был разработать свою собственную. Я решил использовать выходные данные некоторых алгоритмов как часть модели в качестве экспертной информации, чтобы нейронной сети было легче учиться. Мне казалось, что я жульничаю, делая это.

Вот сравнение обеих моделей — для нард и для Abak.

Модель нард

Широко используемая TD-модель нард описывает столбцы. Для каждого столбца доски используются 4 входа для его описания.

  • Нет шашек: [0,0,0,0]
  • Одна шашка: [1,0,0,0]
  • Две шашки: [1,1,0,0],
  • Три шашки: [1,1,1,0]
  • Более трёх шашек: [1,1,1,1].

Она содержит 28 таких наборов (по одному на каждый столбец доски) для каждой команды, итого 28*2*4 входов, плюс несколько для подсчёта шашек на баре. К сожалению, я пишу это по памяти, которая может быть неточной.

Модель Abak Evolution

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

Модель описания игры состоит из четырёх частей [477 входов]:

  • Описание шашек (14x30): Описание включает статистику шашки, расстояние, высоту и т.д. Оно не включает класс, который наследуется от позиции в модели.
  • Статус команды (4x2): Подсчёт некоторых характеристик шашек или статуса.
  • Карта силы (24x2).
  • Статус игры: кто бросает следующим! (1).

Полное описание модели вы можете посмотреть ниже.

Версии:

1.- Python Cumpy (TD-V1).

Первая версия этого ИИ была обучена на чистом Python с использованием Cumpy, библиотеки, подобной Numpy, которая работает на GPU. Я хотел учиться с нуля, поэтому, хотя какое-то время я играл с Tensorflow, я решил пойти без прикрытия (ну, вооружённый фантастической комбинацией Python и Cumpy).

Особенности:

  • Одна сеть, которая оценивает шансы команды 0 на победу в партии.
  • Не учитывает очки.
  • Не имела флага «кто бросает следующим».
  • Не имела карты силы.
  • Один скрытый слой с сигмоидными активаторами.
  • Потребовалось 45 000 партий, чтобы победить мой предыдущий ИИ, написанный с экспертной информацией (GOFAI).
  • Обучалась на 4 500 000 партий. И побеждала GOFAI в 75% случаев.
  • Она была в продакшене 2 года.

2.- Tensorflow (TD-V2).

Моей проблемой с версией 1 было то, что она плохо рассчитывала шансы на победу, потому что была обучена без флага «кто бросает следующим». Каким-то образом результаты нейронной сети были довольно хороши для выбора хорошего хода, но с математической точки зрения они были непоследовательны. Версия 2 решила эту проблему и добавила новую сеть для расчёта шансов на завершение партии в 1, 2 или 3 очка.

На этот раз я выбрал Tensorflow для обучения новой модели, потому что хотел изучить фреймворк, и нашёл отличный пример для начала.

Особенности:

  • Одна сеть для расчёта шансов команды 0 на победу в партии.
  • Одна сеть для расчёта вероятности завершения партии в 1, 2 или 3 очка.
  • Включает новую карту силы.
  • Два скрытых слоя с различными активаторами: Leaky RELU для скрытых слоёв и сигмоид в выходном слое.
  • Потребовалось 12 000 партий, чтобы побеждать TD-V1 в 50% случаев.
  • Обучалась на 350 000 партий и достигла 80% процента побед над TD-V1.

3.- Версия 3: В ожидании.

На финальном этапе принятия решения о выборе лучшего хода используется простой алгоритм, который ищет лучшее эквити [%W*%p1+%W*%p2+%W*%p3].

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

Я хотел бы сделать нейронную сеть, которая будет это обрабатывать. Это будет V3. В данный момент не в разработке.

Модель нейронной сети Abak:

Описание шашки (14 входов x 30 шашек):

  • Расстояние до дома
    x/25
  • Количество шашек сверху
    x/4
  • Количество шашек снизу
    x/4
  • На баре
    [0,1]
  • Дома
    [0,1]
  • В безопасности (расстояние = 0).
    [0,1]
  • Образует блок с другой шашкой
    [0,1]
  • Может быть поймана друидом
    [0,1]
  • Поймана друидом
    [0,1]
  • Ловит (этот вход только для каждого друида)
    [0,1]
  • Риск быть взятой в ближней зоне (6 позиций вперёд)
    [0..1]
  • Риск быть взятой в дальней зоне (12 позиций вперёд)
    [0..1]
  • Риск быть пойманной друидом
    [0..1]
  • Возможности хода
    [0..1]

Игровые данные для каждой команды (4x2):

  • Количество шашек на баре.
    x/15
  • Количество безопасных шашек.
    x/15
  • Все шашки дома.
    [0,1]
  • Количество безопасных шашек 0.
    [0,1]

Карта силы: (24*2):

И наконец, карта силы, похожая на ту, что предложил доктор Тесауро для нард, но упрощённая. Для каждой позиции и для каждой команды она содержит число от 0 до 1, отражающее силу этого блока:

  • 0.0
    если пусто.
  • 0.1
    если одна шашка.
  • 0.5
    если эта шашка — страж.
  • 1.0
    если две или более шашек.

Abak Evolution Backgammon — это потрясающий вариант нард с классами шашек, который буквально добавляет новое измерение в классическую настольную игру.