Конференция "Прочее" » 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, а конь блокирует эту пешку
 
Конференция "Прочее" » AlphaZero - как работает??
Есть новые Нет новых   [134427   +34][b:0.001][p:0.001]