Содержание статьи
Научный форум dxdy
Интересным здесь является то, что выбранные бездоказательно, на основе опыта выигрышные/проигрышные комбинации могут и не оказаться таковыми в нужный момент времени. Потому что либо в итоге все зависит от контекста, в котором игрок оказывается после «реализации» данной комбинации (как мы помним, комбинация в нашем понимании — это не просто набор фигур, а еще и конкретный результат их «применения»). Т. е. если для данной комбинации были сделаны только определенные N ходов и не было сделано остальных M ходов, то оставшиеся M ходов могут стать решающими и нивелировать все преимущество/disпреимущество, которое было достигнуто за счет первых N ходов.
Вариант 2 , NNUE сеть для переборного движка Stockish. Изначально идея была в том, чтобы использовать alpha-beta движок Stockfish, содержащий много полезных переборных эвристик, таких как ходы-киллеры, нулевой ход, продления случайные и т. п. для игры в сёги (японский шахматы). Собственно говоря, переборный движок есть, единственная проблема это оценка позиции. Hisayori Noda решил использовать для оценки позиции нейронную сеть, при этом нашёл интересный вариант, когда в процессе операции «сделать ход» некоторыё веса нейронной сети пересчитываются. Получился сильный движок. Более того, идея вернулась в шахматы и появился Stockfish 12, который использует NNUE и играет примерно на 100 пунктов сильнее прошлой версии.
Бот для Марио (самый подробный отчет, много не озвучено читай текст с экрана)
https://youtu.be/CI3FRsSAa_U
Спойлер — не работает, на последнем уровне есть уникальный двойной прыжок которого нет на прошлых уровнях, и так как обучение происходит на реальной игре и поколение уже слишком далекие (12 миллионов) то нужно как минимум в 10 раз больше поколений провести чтоб этот прыжок «запомнился»(чтоб успешный прыжок оказал влияние на текущую конфигурацию нейросети) (и автор не захотел продолжать так как пол года уже этим занимался)
Что такое и ? В принципе по ним можно найти — аналог оценки позиции, вероятность победы стороны, которой сейчас ход от -1 (100% проигрыш) до +1 (100% выигрыш). И параметр , который определяет вероятность того, что данных ход лучший. Параметр используется потом в алгоритме MCTS, а оценка используется в доигрывании (roollout) которое в общем-то обычно останавливается на каком-то шаге (точно не уточнял).
Что такое и ? В принципе по ним можно найти — аналог оценки позиции, вероятность победы стороны, которой сейчас ход от -1 (100% проигрыш) до +1 (100% выигрыш). И параметр , который определяет вероятность того, что данных ход лучший. Параметр используется потом в алгоритме MCTS, а оценка используется в доигрывании (roollout) которое в общем-то обычно останавливается на каком-то шаге (точно не уточнял).
64 входа, несколько флагов (ход белых/черных, рокировки, взятия на проходе и тп).
На выходе — оценка позиции (например — +0,35 — у белых перевес 0,35). Отрицательные значения на выходе будут означать перевес черных.
Составить тренировочную базу позиций с помощью например уже имеющихся программ-как Стокфиш. Т.е. иметь к примеру 10 млн позиций с их оценками стокфиша.
И тренировать.
2) нейросеть жирафа получает на входе закодированную информацию о позиции.
Каждое поле закодировано 0 или 1 если там ферзь, ладья, слон, конь, пешка обоих цветов или взятие на проходе. На выходе для всех возможных ходов в позиции (примерно,грубо говоря, 1000 возможных ходов в шахматах всего) — оценка позиции после этого хода и вероятность того что именно этот ход лучший (это кажется можно посчитать взяв максимум из выданных оценок).
Ботофермы, например для Дестени2(игра) на консолях ПС4 ставят бота который управляет(джойстиком) делая какойто минимум действий чтоб получать награды/опыт/доджить АФК кик/бан. Такая ИИ/нейросеть работает очень просто(за чес можешшь собрать из готового) там детектор «врагов»(из картинки на экране) и навод оружия на них, плюс простая ориентация на местности. (очевидно такоеже работает для всех онлайн игр где можно продавать прокачанные аккаунты)
Много видео про ИИ/Нейросети/Машинное обучение на Ютубе сделаны чтоб «продаться спонсорам», где тоже все притянуто за уши и работает «только в этом конкретном случае» и сделав шаг в сторону все сломается.
Очень большой хайп раздули, и мыльный пузырь начал схлопываться так как на практике применимо очень мало из того что показано на презентациях докладах и демках.
Да, так, но только в поздних версиях Lc0. В более ранних оценки позиции не было вообще, хотя могу ошибаться. Её ввели для того, чтобы досрочно обрывать доигрывания в MCTS, потому что часто они служили источником смещённое оценки, не говоря о том, что забирали время. Поэтому вероятность ходов первична, она нужна методу MCTS как-то упорядочить дерево ходов. А оценка вторична, не говоря о том, что в ряде позиций она одинакова для всех ходов. Например, король с ферзём матуют одинокого короля. Тут почти любой ход не меняет оценку 100% выиграно, но рандомными ходами поставить мат тяжело.
Бот для Трекмании https://youtu.be/iZIPowqm-fo — важное уточнение в Этом видео обучение идет на TMNF и ее можно «ускорить» в бесконечное количество раз (получать результат ввода без задержек и ожидания рендера кадра), также в Трекмании
Детерминированная физика тоесть результат такого «инпута» всегда будет одинаков (физический движок работает на INT и не использует FLOAT).
И на TMNF можно ускорить время «читами» (игре 10 лет там все для этого сделано, утилиты для TAS готовые есть их можно и для ИИ обучения использовать)
Valen007 , думаю, сложность даже не в выборе ходов по имеющимся оценкам позиций, к которым они ведут, а в том, каким образом система будет оценивать позиции при условии, что это будет делаться через обучение и какой-либо опыт будет отсутствовать — нет никакого внешнего учителя. Мне кажется, что имеет смысл рассматривать какие-либо комбинации фигур на доске, которые либо ведут к победе, либо ведут к поражению с той или иной вероятностью. С большооооой поправкой, но все же это более менее очевидно для тех комбинаций, которые могут «разрешиться» путем взаимных взятий тем или иным способом. Думаю, что каждый исход разумно рассматривать отдельно в плане вероятности победы/поражения. В случае же статичных связок (две группы взаимно-упершихся друг в друга пешек) это сложно сказать. Поэтому предлагаю в ходе обучения ориентироваться именно по динамичным связкам (в которых фигуры могут ходить), а лучше — по связкам-развязкам (которые могут быть «разрешены» путем взаимного взятия). При этом на некотором этапе обучения могут быть проанализированы и статические связки, и обычные динамические связки (фигуры в которых могут вовсе никак не быть агрессивно связанными друг с другом). Предлагаю рассматривать последние 2 вида связок уже после того, как в течение многих игр собрана информация о связках-развязках. Так будет легче. Итак, мы начинаем со связок-развязок и процентов выигрышей/проигрышей. Изначально очень сложно сказать, какие связки-развязки действительно сильны и ведут к победе (поражению), а какие — нет. И это не только в связи с отсутствием опыта, но также и в связи с тем, что могут быть ходы, которые кардинально меняют ситуацию игры, которые ни разу не были сделаны системой и о которых она не знает. Этакие слепые зоны. Таким образом, думаю, в ходе обучения изначально можно сделать широкий выбор ходов, но со временем сужать его (ε-жадный алгоритм, в котором ε изначально = 1, а с течением времени падает). Думаю, ε даже можно менять периодически. В моменты пика ε на систему как бы будет снисходить вдохновение и, как следствие, нередко — озарение.