Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2 3 4 5 6 7 8

AlphaZero - как работает??


java_guy ©   (01.02.19 13:29[80]


> Mystic ©  


а вы смогли бы сделать самообучающуюся шашечную программу типа lczero?


Mystic ©   (01.02.19 14:02[81]


> а вы смогли бы сделать самообучающуюся шашечную программу
> типа lczero?


Я думаю в этом направлении, но нету времени. В принципе план действий пока что такой:

☐ реализовать сервер на основе MCTS, который бы раздавал задания клиентам (доиграть с такой-то позиции) и хранил статы и базу возникающих позиций
☐ реализовать клиенты, которые бы брали задание у сервера и доигрывали партию

Потом уже можно обучать нейронную сеть, но лично мне было бы интересно дополнительно

☐ кластеризовать позиции; и для каждого кластера подобрать оптимальные значения параметров Propability, Ngames, чтобы оптимальный ход находился как можно быстрее для кластера (оптимизационная задача)

☐ Обучить нейросеть на этом наборе, чтобы вместе с вероятностью каждого хода шёл дополнительный параметр Ngames, который будет характеризовать достоверность оценки (чем меньше Ngames, тем больше MCTS будет стараться его дополнительно проверить).

Ну и кроме нейросети мне было бы интересно посмотреть на CLONALG и попытаться построить распознавание паттернов на его основе тоже


java_guy ©   (01.02.19 15:11[82]

> Mystic ©  

а как сами партии разыгрываются? случайными ходами?


Mystic ©   (01.02.19 19:46[83]

У меня сейчас MCTS а доигрывание случайными ходами.

https://github.com/mustitz/checkers

Собственно говоря, вполне можно использовать это для первой итерации. Потом веса будет возвращать натренированная нейросеть.


java_guy ©   (02.02.19 09:15[84]


> Потом веса будет возвращать натренированная нейросеть.


веса для чего? для оценочной функции?

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

это получается, она сама находили позиционные признаки и вычисляла для них коэффициенты? (веса)


xayam ©   (02.02.19 11:12[85]


> веса для чего? для оценочной функции?

там же нейросеть, значит для нейронов,
то что обозначается в англ. литературе как w (weight)


Mystic ©   (02.02.19 17:21[86]


> веса для чего? для оценочной функции?


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

В общем случае ситуация такая: для каждой позиции у нас есть статистика доигрываний, а именно сколько раз встрелилась позиция и какой процент набранных очков. Например, позиция после e2-e4 встретилась 42 раза, из них белые набирали 60.7% очков.

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

Но что делать в случае, когда мы только начали анализ, и никакой статистики у нас нет? В моих шашках сейчас мы пробуем сделать каждый ход, и только потом уже пользуемся формулой, когда хотя-бы одно доигрывание есть. Ещё есть опция считать, что изначально у нас была 1 симуляция, где мы набрали 50% очков (ничья).

Но... есть ещё вариант, чтобы некий Оракул посмотрел на позицию и заранее проставил желательно оба параметра (число симуляций и оценку). Чем эта оценка лучше рандома, тем адекватнее ходы попадут в симуляции, и тем будут сильнее играть программа. На крайняк Оракул может возвращать только оценку, а число симуляций проставим какой-нить константе (например 1). Вот эта оценка возникающей позиции и есть вес хода.

Роль этого Оракула может исполнять нейронная сеть. Которая тоже имеет свои веса. Итак, на входе нейросеть получает позицию, на выходе для каждого хода прогнозирует процент набранных очков. А дальше уже работает MCTS.

Как настроить коэффициенты этой нейросети? Ну... один из вариантов примерно такой. Допустим, у нас уже заданы некоторые коэффициенты нейросети (рандом). Наша задача усилить нейросеть. Отлично, играем со старыми коэффициентами много разных партий. Ну а дальше если ход привёл к победе, то заносим его в обучающий набор с коэффициентов 1, если к поражению — с нулём. Как только такой статистики много, делаем обучение новой нейросети.


java_guy ©   (02.02.19 17:49[87]

> Mystic ©

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

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


Mystic ©   (02.02.19 19:35[88]

А сколько всего картинок в мире? Нейросеть обучается распознавать животных на любых картинках, а не только на определённом размеченном датасете.

Так и тут, если позиция незнакомая, то нейросеть постарается оценить её на основании схожести со знакомыми.


java_guy ©   (02.02.19 20:40[89]

а как схожесть установить? вот в чем вопрос


xayam ©   (04.02.19 08:42[90]

Суперфинал в 17-00 по МСК


Mystic ©   (04.02.19 20:32[91]


> а как схожесть установить? вот в чем вопрос


Дые нейросеть сама устанавливает схожесть на основании обучающих данных. Иначе какой бы в ней был прок?


java_guy ©   (04.02.19 21:43[92]

Мистик, а как вы собираетесь определять схожесть? Это сложная математика?


xayam ©   (05.02.19 10:09[93]


> В остальном пока что SF10 пока что ведёт и в личной встрече,
>  и по очкам, и по рейтингу. Но посмотрим, какую сетку выберут
> для суперфинала.

В чате говорят, что лила проигрывает из-за перегрева gpu,
в остальных случаях на двух gpu со стокфишем ничья


xayam ©   (06.02.19 13:27[94]

мда, lc0 стабильно проигрывает только черными


Mystic ©   (06.02.19 13:32[95]


> Мистик, а как вы собираетесь определять схожесть? Это сложная
> математика?


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


xayam ©   (06.02.19 16:20[96]

похоже стокфиш проигрывает черными,
пока +2 в пользу sf но если проиграет то будет +1
а там бы продержаться lc0 черными


Mystic ©   (06.02.19 17:06[97]

Ну... там с раздачи тяжёлый вариант во французской, а игра чёрными SF по французской против AlphaZero это боль.


xayam ©   (06.02.19 17:30[98]

она выиграла белыми. Теперь нужно защитить черными :)


xayam ©   (06.02.19 17:39[99]


> игра чёрными SF по французской

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


Страницы: 1 2 3 4 5 6 7 8 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо