AlphaZero. Нейронная сеть играет в шахматы

Тема в разделе "Машинное отделение", создана пользователем grizly, 6 дек 2017.

  1. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    А я уже не помню пароля от старого аккауна. Если администраторы напишут мне в личку, тогда смогу старый аккаунт использовать..
  2. pavelgttfj8 Учаcтник

    • Участник
    Рег.:
    07.12.2017
    Сообщения:
    156
    Симпатии:
    51
    Репутация:
    2
    Оффлайн
    На самом деле на уровне мастера спорта только (при классическом контроле). 1к в секунду для стокфиша это маловато
  3. Rom Учаcтник

    • Участник
    Рег.:
    12.02.2012
    Сообщения:
    549
    Симпатии:
    202
    Репутация:
    21
    Оффлайн
    Достаточно для уровня чемпиона мира. Тестировал против соответствующих движков, поэтому точно знаю.
  4. pavelgttfj8 Учаcтник

    • Участник
    Рег.:
    07.12.2017
    Сообщения:
    156
    Симпатии:
    51
    Репутация:
    2
    Оффлайн
    Я решил небольшой эксперимент провести, 2 игры sf9 со стокфишем уровня 8 на личессе, который как раз соответствует мастеру спорта играющиму с классическим контролем.
    1-я игра 180к нод/ход, что соответствует 3-м минутам на ход при скорости 1к в секунду, вторая игра 300к/ход что равно 5-ти минутам на ход при 1к. Ну и результаты так себе, конечно. Контроль классический, но время фиксировано, не думаю что это сильно повлияло



  5. Rom Учаcтник

    • Участник
    Рег.:
    12.02.2012
    Сообщения:
    549
    Симпатии:
    202
    Репутация:
    21
    Оффлайн
    Не знаю, какой уровень Стокфиша на Личесс. Но я знаю, что Shredder 8 (топ 2004 года) и Fruit 2.1 (топ 2005 года), программы околочемпионского уровня на одном ядре современного компьютера. Это несложный вывод, так как в те годы игралось много матчей между людьми и машинами.

    Несколько лет назад я провел матч между этими программами и Гудини 4 - топовым тогда движком. Гудини имел всего одну минуту на партию, а его соперники 256 минут. То есть даже больше чем классический контроль. Тем не менее Гудини удержал примерное равенство. В матчах из 100 партий с каждым соперником он, насколько я сейчас помню, наиграл на +28 пунктов против Шреддера и на -42 пункта против Фрукта.

    Теперь уже несложно провести сравнение и со Стокфишем. Пару месяцев назад я наиграл около тысячи партий Стока против Гуди 4, давая примерно 1/8 минуты на партию против минуты (с небольшим добавлением времени на ход, так как основным эвристикам движков требуется некоторая минимальная глубина). Настройки Стока были специальные, ультраблицевые. Результат матчей - примерное равенство.

    Вот собственно и все. Достаточно простой способ сравнения. Стокфишу хватает примерно 200 тысяч позиций на ход, чтобы играть на уровне топовых движков первой половины 00-х.
    —- добавлено: 19 ноя 2018, опубликовано: 19 ноя 2018 —-
    И, чтобы уж не скатываться совсем в оффтоп. Демис Хассабис развил определенную активность в последнее время, кажется что-то наклевывается в отношении Альфа Зеро.
    Комсюк нравится это.
  6. pavelgttfj8 Учаcтник

    • Участник
    Рег.:
    07.12.2017
    Сообщения:
    156
    Симпатии:
    51
    Репутация:
    2
    Оффлайн
    Это интересно
  7. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    894
    Симпатии:
    399
    Репутация:
    10
    Оффлайн
    В этом тезисе речь шла не компьютере, а о человеке. Алгоритмическое мышление человека это всегда сознание. Подсознание выполнить формализованный набор инструкций не способно.

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

    Не впечатлило. Заумно и воды много.
  8. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    894
    Симпатии:
    399
    Репутация:
    10
    Оффлайн
    Кстати, у нас был терминологический спор являются ли нейронные сети алгоритмами. Нейронные сети принято относить к алгоритмам, т.к. на компьютерах они эмулируются алгоритмическими средствами. Но является ли такая эмуляция единственно возможной реализацией нейронных сетей? Скорей всего нет. Ведь у человека по видимому все наоборот. У нас в голове алгоритмическое мышление эмулируется нейронными средствами. Поэтому нейронное мышление у человека весьма эффективно, а вот последовательность инструкций человек выполняет крайне плохо и медленно. Компьютер, напротив, с последовательностью инструкций работает сверхэффективно, а с нейронными сетями куда хуже - одна нейронная операция Лилы требует выполнения миллиарда инструкций.
    Kesandr нравится это.
  9. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.953
    Симпатии:
    379
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    Нейросеть и мышление человека это несравнимые вещи. Предположим, что человек смотрит на картинку. Он никогда не скажет «с вероятностью 65.452679% это панда» Так что не надо сравнивать мышление человека и нейросети, там физика процессов отличается чуть более чем полностью.
    WinPooh нравится это.
  10. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    894
    Симпатии:
    399
    Репутация:
    10
    Оффлайн
    Человек скажет: это точно панда или это похоже на панду или это может быть пандой. Такая же вероятностная оценка. То что у человека оценка качественная, а не количественная, это как раз следствие различия в "элементной базе", на которой работает нейронная сеть у человека и у компьютера.

    Для понимания мышления полезно рассматривать логику, а не физику процессов. Например, у человека складывающего числа и у компьютера складывающего числа физика процессов совершенно различна, а логика одна и та же.
  11. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.953
    Симпатии:
    379
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    Я про фотку
    [​IMG]

    Большинство людей тут вилят точно панду без всякой вероятностной оценки. Нейросеть видит панду с вероятностью 65%, гиббона с вероятностью 23% и т. п. Это совсем не похоже на человеческое мышление.

    Опять же я не вижу одинаковой логики в складывании чисел у человека и у процессора. Как по мне она разная. Вообще, мышление человека мне представляется во многом как раз дискретным, а нейросеть она непрерывна.
  12. Jadn Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    3.038
    Симпатии:
    1.070
    Репутация:
    37
    Оффлайн
    Плохой почерк когда-нибудь разбирали? Никогда не было ситуации "это что за буква? Ну, вероятно П, но может и Н." Понятно, человек не назовет точно в процентах это своё "вероятно", но принципиально ситуация та же.
    Undying нравится это.
  13. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.953
    Симпатии:
    379
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    Не согласен. Я вижу, что это закорючка, вижу варианты «П», «Н». И далее начинаю перебирать варианты. На выходе у меня множество возможных вариантов (возможно отсортированное), а сверху перебор. По сути я оперирую дискретной информацией. Что, по сути, согласуется со строением мозга: нейрон или возбудился, или не возбудился. Промежуточных вариантов, вроде «возбудился на 63.34664%» нету, там дискретные процессы.
  14. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    894
    Симпатии:
    399
    Репутация:
    10
    Оффлайн
    Ключевое выделено. Сортировка невозможна без определения вероятности.

    Но нейронов в мозге не один, а много. 3 нейрона возбудились на букву «П», 2 нейрона на букву «Н». Соответственно мы осознаем, что вариант с «П» более вероятен.
    Jadn нравится это.
  15. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.953
    Симпатии:
    379
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    Почему? Отсортировать (топологически) мы может любое частично упорядоченное множество, для этого нам необязательно вводить на нём вероятностную меру.

    Мы этого пока что не знаем, это только предположения.
  16. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Почерк врача. Не знаю, как надо перебрать варианты чтобы понять, что тут написано. А врачи меж собой понимают, значит и нейросеть можно обучить чтобы понимала.
    Вот пример задачи, с которой нейросеть лучше справляется чем человек.



    [​IMG]

    Вложения:

    • poch3.PNG
      poch3.PNG
      Размер файла:
      860,5 КБ
      Просмотров:
      214
  17. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    А как обучать оптимальнее всего, свою нейросеть?
    Т.е. допустим, прочитал литературу, матчасть, создал эти ячейки памяти, слои, веса, персептроны..
    Ну начала программа играть сама с собой и самообучаться? Мне кажется, вначале куда важнее учить её с "учителем" .
    А учителем будет Стокфиш. К примеру, показал Стокфиш свою оценку позиции, а необученная нейросеть - свою, плохую оценку.

    "Учим", т.е. меняем веса в нейронах и т.д. всё по теории. И так с учителем-Стокфишем, наша нейросеть обучается допустим, на 1 миллионе партий,
    пока наконец, не заиграет по силе как сам этот Стокфиш. Так? А уже далее, она будет обучаться, играя сама с собой, это и есть необходимое условие,
    чтобы стать сильнее "учителя" .
  18. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    894
    Симпатии:
    399
    Репутация:
    10
    Оффлайн
    Не необходимое Превзойти учителя можно и просто играя с учителем. Нельзя превзойти учителя если обучаться на партиях Стокфиша с другими алгоритмическими движками.
    —- добавлено: 21 ноя 2018 —-
    Откуда такая уверенность? Нынешние компьютерные нейронки вовсе не превосходят нейронку человека. Даже в такой простой задаче как шахматы. Гроссмейстер оценивает позицию лучше, чем нейронка Лилы. Сильнее гроссмейстера Лила играет за счет абсолютного превосходства в счете.
  19. svoitsl Учаcтник

    • Участник
    Рег.:
    05.01.2018
    Сообщения:
    164
    Симпатии:
    28
    Репутация:
    1
    Оффлайн
    думаю что так оптимальнее всего. и сеть выбрать поменьше, хотя бы 10х128, тогда и результат будет при в обозримые сроки на не самом монстроидальном домашнем железе.
    Хотя вряд ли такая сеть далеко выйдет за уровень чемпиона мира .
  20. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Это что, 10 слоёв по 128 нейронов в каждом? Маловато как то..
  21. svoitsl Учаcтник

    • Участник
    Рег.:
    05.01.2018
    Сообщения:
    164
    Симпатии:
    28
    Репутация:
    1
    Оффлайн
    Ну это с какой стороны смотреть...
    Если для её обучения нужно 7-10 млн игр (4-5- со стоком, 2-3- само с собой, 2- эндшпили) и ваше оборудование позволяет наигрывать 50 тыс игр в сутки (а сколько оно позволяет на такой сети?) то к лету следующего года у вас такая сеть может быть.
    Ну если у Вас бывшая майнинговая ферма - то наверное и быстрее получится
  22. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Получается, нужно обучить нейросеть с 1280 нейронами?
    А в мозгу человека, их миллиарды. Разница - в миллионы раз! Конечно понятно, что в мозгу на шахматах задействованы далеко не все нейроны, но кажется во первых, что всё таки больше чем 1280, которая 0,0000001 часть от всех :)

    Ну или следует признать, что мозг человека производит за секунду больше операций, не только чем самый крутой суперкомпьютер, а даже больше чем вся мировая IT-индустрия ? :)
    И эта вся производительность в моей одной башке ? :)

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

    А говорят мол, возможности счёта у компа больше чем у человека.. Может быть, существует целая пропасть дальнейших улучшений по скорости обучения искусственных нейросетей, и в будущем, когда заиграют нейросети с миллионами нейронов, то нынешний Стокфиш будет вообще проигрывать в 99 партиях из 100..
  23. svoitsl Учаcтник

    • Участник
    Рег.:
    05.01.2018
    Сообщения:
    164
    Симпатии:
    28
    Репутация:
    1
    Оффлайн
    Да, нам есть чем гордиться (тут и до веры в Бога не далеко...)

    Есть все же надежда , что и сети размером 20х256 (которую сейчас усиленно тренируют, до сих пор с сомнительной перспективой) смогут достичь хотя бы 10 из 100 (разница 350 Эло).
  24. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Ясно, спасибо. Я вот тоже планирую в будущем свою нейросеть запрограммировать и обучить, теперь понятно, с какого количества нейронов надо начинать..
    Потому что уверен, что 1) чем больше нейросеть, тем больше у неё перспективы, 2) существуют проблемы только со скоростью обучения по времени,
    но здесь поле для деятельности большое, и будут эту самую скорость обучения наращивать. Может и мне придёт какая отличная идея, как побыстрее
    обучить, без миллиона партий.
  25. svoitsl Учаcтник

    • Участник
    Рег.:
    05.01.2018
    Сообщения:
    164
    Симпатии:
    28
    Репутация:
    1
    Оффлайн
    Что б это будуще пришло поскорее вы тоже можете принять посильное участие в разработке LC0
    С программистами там дела не очень....
    Или прям напрямую спросить, что можно сделать
  26. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    А сколько у неё нейронов? (сорри, сейчас мало времени, всю информацию перекапывать)..
  27. svoitsl Учаcтник

    • Участник
    Рег.:
    05.01.2018
    Сообщения:
    164
    Симпатии:
    28
    Репутация:
    1
    Оффлайн
    да сеть там 20х20х256 (если я не ошибаюсь), то есть точно такая же как A0.
    На большую пока не хватает ресурсов.
  28. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Недопонял. Это три слоя, первый - 20, второй - 20, и третий - 256 нейронов всего?
    Тогда это ещё меньше, чем я выше писал - думая что, вы привели пример - 10 слоёв по 128 нейронов каждый.

    Эта буква x тогда непонятна - то ли умножать надо, то ли суммировать.
  29. svoitsl Учаcтник

    • Участник
    Рег.:
    05.01.2018
    Сообщения:
    164
    Симпатии:
    28
    Репутация:
    1
    Оффлайн
    "х" скорее всего умножение, а вот подробности лучше узнать тут
  30. Launder Новичок

    • Новичок
    Рег.:
    25.11.2016
    Сообщения:
    87
    Симпатии:
    22
    Репутация:
    1
    Оффлайн
    Ну барин, извиняйте. Товарищ читающий лекцию, выдающийся учёный. Поэтому, если интересует именно разобраться, то, вероятно, имеет смысл подходить не только с позиции впечатлило/не впечатлило, но ещё учесть, что, Ваша впечатлительность, напрямую зависит от того, насколько Вы в состоянии воспринять прочитанное и осознать, хотя бы примерное, поле контекстов, к которым, сказанное может быть применимо. А без них, возможно да, вода и общие слова... Что ж поделать...
    Вот, Вам, где воды поменьше, ну за сложность, звиняйте :)
    Это глава, можете полистать оглавление, все эти научные проблемы возникли не вчера...
    Мышление человека НА ПОРЯДКИ сложнее, нейронной сети. Между прочим, это одна из причин, почему компьютерные шахматы (и не только), развиваются на порядок быстрее, чем человек - они устроены проще, а значит в них и разобраться проще и развивать, соответственно тоже проще. А у человека где вход где выход не понятно, да и вообще говорить о нём в кибернетических терминах, мягко говоря, некорректно...

    Так ведь в этом и бикус. Что, для того, чтоб посчитать определённый участок доски, и происходящее в нём ВАЖНЫМ, нужно иметь ПРЕДСТАВЛЕНИЕ о шахматах ВООБЩЕ. Понимать, что в них может быть, а что не может и почему, какие мотивы там заложены. И вот понимание этих мотивов, это некий взгляд, это сознание о происходящем. Чтоб эти представления имели место быть, им, по-видимому, и нужна некая чувственная ткань, обеспечивающая работу мысли...
  31. Rom Учаcтник

    • Участник
    Рег.:
    12.02.2012
    Сообщения:
    549
    Симпатии:
    202
    Репутация:
    21
    Оффлайн
    - 20 блоков, по 2 свёрточных слоя в каждом блоке. Итого - 40 слоёв.
    - В каждом слое 256 фильтров, где каждый фильтр по сути представляет собой трехмерную таблицу, состоящую из коэффициентов нейросети.
    - В каждом фильтре 3х3х256 = 2304 значений коэффициентов нейросети.
    - Каждый коэффициент, это как правило 16 или 32-битное число с плавающей запятой.

    Сюда следует ещё добавить входной и выходные слои, которые тоже имеют некоторый (заметно меньший) размер.
  32. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Итого - 40 слоёв.
    Тогда понятнее, так написать - 40х256 .
    И я думал , что это нейросеть из (40 умножим на 256 ) = 10240 нейронов..

    А вы говорите, что это только количество неких фильтров. Тогда сколько нейронов?
    Или подразумевается - 10240 нейронов, и у каждого нейрона ещё и по 2304 значений веса , в зависимости от того, к какому следущему нейрону идёт связь?

    Ну если так, то тогда у нас 10240 умножим на 2304 == 23 592 960 .
    Обучение такой нейросети эквивалентно задаче нелинейной оптимизации в пространстве 23 миллионов измерений ?
  33. Rom Учаcтник

    • Участник
    Рег.:
    12.02.2012
    Сообщения:
    549
    Симпатии:
    202
    Репутация:
    21
    Оффлайн
    Принято считать в блоках.
    10240 фильтров, 23 592 960 "нейронов". Не считая выходных слоёв. Подробнее смотрите здесь (не про шахматы, но не суть).
    Полагаю что да. Аппроксимация нелинейной функции по набору игровых позиций.
  34. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    894
    Симпатии:
    399
    Репутация:
    10
    Оффлайн
    Очевидно что человеческое мышление сложнейшая вещь. Кто с этим спорит? Но в нем можно выделить две уже достаточно понятные компоненты. Первое это алгоритмическое мышление - способность выполнить последовательный набор инструкций. Здесь все просто и давно на компьютерах реализовано. Второе это нейронное мышление. Здесь сложнее, но многое уже понятно и соответственно есть практические результаты по эмуляции нейронного мышления на компьютерах.

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

    "Представление о шахматах вообще" это как раз выработанные алгоритмы и сформированные нейронные сети под конкретную задачу. Как человек использует представления о шахматах во время игры в целом понятно. Сочетание алгоритмического и нейронного мышления. Ничего магического в этом нет. И даже сэмулировать на компьютере это можно.

    А вот каким образом человек создает алгоритмы и нейронные сети для игры в шахматы и в дальнейшем улучшает их? Это вопрос, в котором ничего не ясно. И эмулировать это непонятно как.
  35. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    39
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Ага, типа давайте напишем сразу "программу "Программист" ".
    Чтобы нам самим не надо было изучать всю эту матчасть по нейросетям.
    А указать ей - "Изучи матчасть, и создай нейросеть, чтобы она обыграла и Альфа-Зеро, и Лилу и Стокфиша".
    И программа изучает, и создаёт .

    А ещё интереснее такую задачу ей указать "Покопайся в интернете, изучи все известные законы физики, там.. теорию относительности, квантовую теорию,
    стандартную Модель Вселенной", и открой новые, неизвестные нам законы физики. Чтобы например, мы могли черпать энергию вакуума.
    :)

Поделиться этой страницей