2

В настоящее время я пытаюсь заставить Tasauro TD gammon работать. Однако я немного смущен тем, как плата кодируется для ввода в нейронную сеть.Кодировка платы в TD-Gammon Tesauro

Я понимаю, что он использовал 4 единицы за каждую точку на доске для каждого игрока (2 * 96 единиц), каждые два дополнительных блока для шашек на баре и переносные шашки (2 * 2 единицы), а также два единицы, указывающие, в чём очередь. Это дает в общей сложности 198 входов. Я также полностью понимаю, как кодировать различные количества шашек для каждой точки.

То, что я действительно не уверен в том, что это последовательность входов. Разве что 96 первых входов кодируют белые шашки на доске, за которыми следуют два входа для белого бара и проверенные шашки; и являются ли остальные входы, выделенные черным шашкам, черной полосе, черным и двум единицам для указания текущего игрока?

Или, скорее, 4 последовательных входных блока кодируют одну точку платы для одного цвета, следующие 4 входных блока кодируют одну и ту же точку, но теперь для другого игрока?

Я был бы очень рад, если бы у кого-то было какое-то знание, потому что все, что я нашел в Интернете, довольно неоднозначно, с точки зрения последовательности ввода Tesauro, используемой для кодирования конкретной ситуации нарды.

Приветствия, Stephan

+2

Вы пытаетесь совместить точное кодирование функции TD gammon? IMO, вы, вероятно, можете немного погубить себя, пытаясь сопоставить кодировку функций несколько десятилетий назад, когда хорошо известно, что другие нейронные сети работают лучше с разными кодировками. Мое предложение состоит в том, что вы используете представление на доске, которое правильно реализует игру (или разрабатывает собственную), а затем пробуйте различные кодировки объектов из представления этой доски. Обратите внимание, что я не преуменьшаю вклад Tesauro в AI нарды как минимум. –

+0

Во-первых, спасибо за быстрый ответ Крис! Я хочу использовать TD gammon в качестве эталона для более сложного подхода к обучению подкрепления, который был разработан в лаборатории, в которой я работаю. Поэтому я подумал, что было бы неплохо оставаться как можно ближе к версии Tesauro. Но я думаю, что всегда полезно пройти пробную пробку. – neurotronix

+0

Нет проблем, BTW, даже если вы не можете реплицировать точную кодировку функций, которую использовал TD Gammon, вы все равно можете выбрать кодировку, которая достаточно близко, а затем сравнить предложенный вами подход к подкреплению подходов к [временной разностной парадигме, используемой TD Gammon] (http://www.bkgm.com/articles/tesauro/tdl.html) для этого же набора функций. По крайней мере, это будет сравнение яблок с яблоками. –

ответ

2

Как отмечалось в this article about the details of TD Gammon:

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

Понятно, что существует несколько различных версий TD Gammon, и ни одна из них не определяет конкретную версию TD Gammon. Похоже, что он хорошо справился с кодировкой сырой платы и даже лучше, когда были добавлены некоторые функции ручной работы.

Таким образом, это, вероятно, что-то вроде дикой охоты на гусей, чтобы прикрепить точные функции, и, вероятно, это не то, что вы хотите. Вы можете сравнить, для фиксированной функции кодирования, предлагаемый подкрепляющий подход к обучению с временным разностным обучением (также как описано в этой статье). Это было бы справедливое сравнение вашего предлагаемого подхода с временным разным обучением (в отличие от его сравнение с фактическим TD Gammon, так как у вас мало надежды на то, чтобы точно воспроизвести TD Gammon.)

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

+0

Да, я не хочу, чтобы функции более высокого уровня отражались в представлении доски, а скорее на наивном, необработанном кодировании.Я думаю, что я был слишком одержим повторением Тесау ровно. Спасибо за ваш вклад! – neurotronix

2

Я знаю, это очень старый вопрос, но все же я хотел бы поделиться

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

Sutton

case 0 => if (men >= 1) 1.0f else 0.0f 
case 1 => if (men >= 2) 1.0f else 0.0f 
case 2 => if (men >= 3) 1.0f else 0.0f 
case 3 => if (men >= 4) (men - 3)/2.0f else 0.0f 

Tesauro89

case 0 => if (men == 1) 1.0f else 0.0f 
case 1 => if (men == 2) 1.0f else 0.0f 
case 2 => if (men == 3) 1.0f else 0.0f 
case 3 => if (men >= 4) (men - 3)/2.0f else 0.0f 

Tesauro92

case 0 => if (men == 1) 1.0f else 0.0f 
case 1 => if (men >= 2) 1.0f else 0.0f 
case 2 => if (men == 3) 1.0f else 0.0f 
case 3 => if (men >= 4) (men - 3)/2.0f else 0.0f 

GNU Backgammon

case 0 => if (men == 1) 1.0f else 0.0f 
case 1 => if (men == 2) 1.0f else 0.0f 
case 2 => if (men >= 3) 1.0f else 0.0f 
case 3 => if (men >= 4) (men - 3)/2.0f else 0.0f 

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

Кодирование Sutton требует гораздо большего количества эпох, другие сходятся значительно быстрее. Tesauro89 является самым быстрым в игровой стадии контакта, Tesauro92 в гонке. Кодирование GnuBG находится между кодировками Tesauro.

Также я пробовал различные функции активации для скрытого слоя (40 скрытых единиц): сигмовидный, tanh, relu, утечка relu, расширенный elu, softrelu/softplus, симметричный эллиотт и журнал. Ноль-центрированные fuctions, такие как tanh и симметричный эллиот, сходятся намного быстрее, чем другие. Опять же, быстрее означает количество эпох, я не измерял время. Очень дешево relu может быть хорошим выбором. Обучение прекратилось, когда сети больше не могли улучшаться. Все сети в конечном итоге остановились почти на том же MSE. Поэтому мой вывод: детали реализации не так важны.

Несколько лет назад (возможно, 10) Тесауро повторил тренировку TD-gammon без всех используемых вручную функций. Скорость обучения была медленной, но по мере того, как компьютеры стали быстрее, игрок с наивным кодированием соответствовал более сложному игроку после разумного времени.

Я попробовал еще несколько экзотических функций, но они вообще не работали.