Предлагаю сделать мир, в котором скрестить клеточные автоматы + RL на связке python +визуализация typescript(уже сделана) Кому интересно, просто напишите коммент.
@АлексейРоманенко-с8г6 жыл бұрын
Олег Доход мне интересно
@ОлегДоходицифровыефинансы6 жыл бұрын
@@АлексейРоманенко-с8г А есть какой-то контакт ваш? Или напишите мне на мейл, указан в графе обо мне на моем канале.
@user-UMPp2vu1616xo6 жыл бұрын
На днях сделал нейронную сеть, которая учится играть в крестики-нолики не зная правил на основе RL с Policy Gradient. Когда заработало - просто писал от радости. github.com/dim2r/ml
@ОлегДоходицифровыефинансы6 жыл бұрын
Круто, тоже разбирал такого типа программу. Вы мне можете пояснить, как программа сохраняет найденную стратегию для последующей игры? В моей версии - это был просто Pickle файл Python, в котором заложены все возможные ходы и ценности цепочек действий. А как быть если игра в разы сложнее? Там же триллионы данных будут, как их потом передать для использования. Это единственное что я пока не понимаю в Rl и никто толково не смог мне разъяснить как это делается в AlphaGo или Doom , ведь очевидно, что там невозможно сохранить все возможные состояния и их ценности после полного обучения. Как это происходит?
@user-UMPp2vu1616xo6 жыл бұрын
@@ОлегДоходицифровыефинансы Нейронная сеть на вход получает байты - состояние доски или картинку игры. На выход дает набор чисел - вероятности того или иного действия. Вопрос - как научить сеть давать действия, приводящие к выигрышу? В самом простом случае делается так -- играется одна партия. На каждый ход запоминается состояние доски и реакция нейросети. После игры становится известен результат. Далее происходит анализ сделанных ходов. Если результат положительный, то выходные вероятности увеличиваются. Если результат отрицательный, то вероятности уменьшаются. Гениально и просто. Это делается стандартным алгоритмом обратного распространения. Только этот алгоритм может как уменьшать, так и увеличивать вероятности действий в зависимости от результата партии. В целом идея такая.
@ОлегДоходицифровыефинансы6 жыл бұрын
@@user-UMPp2vu1616xo Да, я понял. 1) А как быть, если правила игры постоянно меняются. В жизни ведь так бывает. Например 1000 партий выиграете в игру с одними правилами, программа условно учит все возможные ходы и подстраивается под все особенности оптимальной игры, а потом раз правила немного изменились , и сеть проиграет сразу, так как она подстроилась очень точно под все особенности. 2) И второе. Как быть в сложных играх с неполной информацией, например покер, где состояний 10^30? Вы их физически не запишете в файл, но Alpha zero как-то делала это. Вот этот аспект наиболее интересен, так как такие игры приближены к жизни, и хочется в этом разобраться. А крестики-нолики - это простая абстракция, но в жизни таких простых игр не существует.
@user-UMPp2vu1616xo6 жыл бұрын
@@ОлегДоходицифровыефинансы На счет смены правил еще не разбирался. Насколько я понял, в alpha zero используются другие алгоритмы, основанные на выборе веток в дереве. Идет рекурсивный просмотр ходов вперёд. Нейронная сеть используется, чтобы выбирать наиболее перспективные ветки игры. Плюс на вход подается не просто состояние доски, а несколько "кадров" игры. Alfa-Go тренировали 40 дней на TPU. Для простых граждан эта мощность пока недостижима.
@user-UMPp2vu1616xo6 жыл бұрын
мой код тут github.com/dim2r/ml . Там на обучение строк 20 . Остальное - отладка, интерфейс с игроком и тд.