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

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

  1. ZER Начинающий

    • Начинающий
    Рег.:
    15.12.2017
    Сообщения:
    5
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Нельзя :) Точнее, СКОРЕЕ ВСЕГО нельзя. Сейчас есть очень много теорий, как работает мозг. И почти все теории утверждают, что общего в работе мозга и синтетической нейросети нет вообще. Разве что слово "нейрон" их объединяет. По одной из перспективных теорий - основной элемент мозга - это кортикальные колонны, которые запоминают одновременно всю семантическую информацию за всю жизнь. Каждая колонна - это контекст изменения этой информации. Расположение этих колонн друг относительно друга критично, этим определяется структура, но они расположены по всему объему мозга, что позволяет иметь голографическую память (удаляя часть мозга, мы не теряем информацию, а только теряем контекст восприятия). Объем памяти колонны от 300 до 500 мегабайт. Эта информация семантическая, сжатая. Передача сигналов волновая, кодирование идет нейромедиаторами, количество которых превышает два десятка... есть возбуждающие, есть стопорящие. В компьютерных моделях это сделать можно, и даже есть положительные результаты, но обсуждаемые здесь нейросети - это совершенно другое. Поэтому нет, мозг - это не нейросеть.
    Alhimik88, N1mTzo, Gridnev и 3 другим нравится это.
  2. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Я бы сказал что сравнить можно, кто же запретит сравнить? Вот в статье ведь сравнили! Но нет никаких гарантий что сравнение верное.
  3. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.546
    Симпатии:
    1.265
    Репутация:
    36
    Адрес:
    Киев
    Оффлайн
    Да и считать можно по разному. Например, можно моделировать поведение каждой молекулы. А можно моделировать на уровне рецепторов и нейродедиаторов...

    Также мозг достаточно специализирован, можно моделировать только ту зону, которая отвечает за шахматы. А можно весь целиком со спинным мозгом...
  4. cesare Учаcтник

    • Участник
    Рег.:
    11.03.2016
    Сообщения:
    115
    Симпатии:
    130
    Репутация:
    5
    Оффлайн
    Мозг гораздо сложнее и мощнее нейросети. Проблема белкового шахматиста в том, что подключается сознание, которое чудовищно медленно и однопотоково. Это примерно как учиться ходить, сознательно контролируя каждую мышцу.
    Если бы для выживания человечеству требовалось играть в шахматы, стокфиш бы нервно курил в сторонке. Все решения принимались бы на подсознательном уровне и практически правильно.

    Могу предложить такой эксперимент - ребенку каждый день показывают 100500 случайных позиций с четкой оценкой. И так лет пять. Правила шахмат при этом даже объяснять не надо. А потом учим его правилам и сажаем играть с супергроссом.
    sovaz1997 и Нестор нравится это.
  5. crem Учаcтник

    • Участник
    Рег.:
    24.11.2016
    Сообщения:
    140
    Симпатии:
    203
    Репутация:
    14
    Оффлайн
    Интересно, что даже утверждение о том что alphazero "знало правила игры", не правда.

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

    Точно также alphazero не знает цели игры, просто в процессе обучение ему сообщают что "в этой ситуации этот ход был легальным и в конце концов привёл к победе/поражению/ничьей", и больше вообще абсолютно ничего.

    Оно даже не знает изначально как ходят фигуры, то есть например не знает где окажется конь на следующем ходе если им походить, всё из наблюдений выясняет!

    (представляю как он удивляется когда впервые видит взятие на проходе :)) )
    Любитель_, Gridnev и Undying нравится это.
  6. ZER Начинающий

    • Начинающий
    Рег.:
    15.12.2017
    Сообщения:
    5
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    В том и дело, что в настоящий момент почти все, кто занимается мозгом, соглашаются, что в мозгу нет специализированных зон. Нет, ну есть конечно зрительные, слуховые... но так чтобы была зона, отвечающая за шахматы - этого нет. Раньше да, была концепция, что существуют отдельные нервные клетки, которые побуждают особую реакцию на какие-то явления, на конкретных людей или происшествий. Типа если есть бабушка, то должен быть нейрон, который отвечает за ее восприятие. Эту концепцию так и стали называть - концепция "нейрона бабушки". Но в итоге выяснилось, что это совершенно не так. Все нейроны могут быть задействованы для всего. Поэтому мы и имеем голографическую память
  7. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Шахматная Альфа знает правила, как в обычном MCTS движке у него есть генератор ходов.
    НС правила знать и не надо, она занимается аппроксимацией. То есть некая функция от позиции. Которая должна возвращать оценку и некий вектор.
    У нас есть позиции, для которых мы знаем значение функции (не точно, примерно - есть шум). Этого достаточно.

    Правила не знает нейронная сеть (переборные алгоритмы правила знают) - но ей этого и не надо. Ровно так-же как ОФ в обычной программе не надо знать правила. Или сортировке ходов - сортировка ходов в шахматной программе тоже правила не знает. Но при этом вес каждому ходу выставить может.
    Gridnev нравится это.
  8. minga Новичок

    • Новичок
    Рег.:
    02.11.2016
    Сообщения:
    11
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Что, Стокфиш работал на 64 потоках и имел в располяжении только 1 гиг хеш памяти? При таком сумбуре, когда 64 потока меняют данные в одном гигабайте, там мог накопиться мусор. Вот дали бы Стокфишу обычный компьютер на Core i7 и дали бы всего лишь одно ядро и один поток и дефолтную хеш память. Очень даже может быть, что результат тогда против альфы мог быть получше
    Локомотив и sovaz1997 нравится это.
  9. hornet Учаcтник

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    843
    Симпатии:
    768
    Репутация:
    466
    Оффлайн
    Так а в каком месте партии (в любой из проигранных) сток совершил ошибку?
  10. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    в любом месте любой партии одна неточность (не ошибка!) может привести к проигрышу в движковом матче

    Впрочем, с4 во французской тянет на ошибку, но то дебют такой
    Любитель_ нравится это.
  11. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    А вот интересно, если такой сетке подать нелегальный ход - например, ферзь как конь пошёл - она ему вес близкий к нулю выдаст, или вообще что-нибудь случайное?
  12. hornet Учаcтник

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    843
    Симпатии:
    768
    Репутация:
    466
    Оффлайн
    Я клоню к тому, что мы до сих пор не знаем который конкретно ход плохой ( как обычно бывало в анализах) :"... этот ход ошибка, этот ход ещё ошибка, а этот - решающая ошибка!" Мы не находим никакую ошибку - ни решающую, ни первую, ни вторую... Не слабо, да?O_o
    Undying нравится это.
  13. crem Учаcтник

    • Участник
    Рег.:
    24.11.2016
    Сообщения:
    140
    Симпатии:
    203
    Репутация:
    14
    Оффлайн
    Случайное. Во время тренировки сети об этих ходах ничего не говорили, поэтому эти значения вообще не оптимизировались.

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

    • Начинающий
    Рег.:
    15.12.2017
    Сообщения:
    5
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Так ведь сетке не дают на вход ходы, а дают на вход историю позиций из 8 досок. А она сама выдает вектор ходов. При этом ходы ферзя, устроены так, что задается направление (одно из 8 возможных), и длина отрезка. Вроде бы так.
  15. Camon14 Хранитель традиций

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    28.05.2012
    Сообщения:
    18.567
    Симпатии:
    10.939
    Репутация:
    687
    Нарушения:
    31
    Оффлайн
    если "неточность" ведет к поражению, то это не неточность, это решающая ошибка. неточность уменьшает оценку позиции, но не ведет к поражению в перспективе.
  16. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Легальность рокировки историей из 8 ходов не проверишь, нужны все ходы с начала партии или битовые флаги в описании позиции.
  17. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    Вот вы бы (лично Вы) попробовали матч 6-ядерного (с хэшем 1 МБ) и одноядерного (с хэшем 16 ГБ) и нам рассказали
    И никаких "может быть" будет не надо
  18. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    У нас пока нет движков, которые могут провести полный анализ партии. Там будет что-то такое: Сначала мат в 15478 ходов черным, потом ничья, потом мат в 1258799 ходов белым. Тут будет понятно, кто какие ошибки делал. Мне больше интересно то, как сеть оценивала позицию до Rf8. Ничья ли там или выиграно? У меня в симуляции SF сделал ничью после хода Kf8, но что говорила сеть там, мы не знаем. Непонятно, почему в PGN нет информации о глубине и оценках позиции.
  19. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    не путайте с книжками докомпьютерной эры

    я же назвал с4
    Ты хоть одну партию видел?
  20. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Я проверяю рокировки битовой маской, у которой в начале партии единицы установлены в углах (ладьи) и там, где стоят короли. После хода битовая маска рокировки пересекается с масками короля и ладьи. Возможность рокировки проверяются 4-мя битовыми масками для всех типов рокировок.
  21. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    у тебя симуляция 10 секунд на ход... одинаковых движков (и не удивлюсь, если с одного экзешника) :)

    патамушта PGN сделана руками из статьи
  22. ZER Начинающий

    • Начинающий
    Рег.:
    15.12.2017
    Сообщения:
    5
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    В позиции A0 содержит поля о рокировках.
    Colour - чей ход
    Total move count - всего ходов
    P1 castling 2 - рокировки одной стороны
    P2 castling 2 - рокировки другой
    No-progress count - ну и для правила 50[/QUOTE]
  23. crem Учаcтник

    • Участник
    Рег.:
    24.11.2016
    Сообщения:
    140
    Симпатии:
    203
    Репутация:
    14
    Оффлайн
    Да, на вход нейросети ходы-кандидаты не передаются.
    Есть две сети, обоим на вход подаётся текущая позиция (с историей на 8 полуходов).

    Первая выдаёт свою оценку "перспективности" (вероятности, что так надо ходить) каждому из 4672 ходов.
    Вторая выдаёт вероятность победы/ничьей/поражения для позиции.

    Первая используется для выбора, какой из узлов дерева продлить.
    Вторая используется для оценки ситуации после продления этого узла.

    Нейросети правил не знают, их знает только "контроллер" метода монте-карло, он не пытается продлить нелегальные ходы, какими бы "перспективными" эти ходы нейрость ни считала.
  24. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    а ты только недавно узнал, как ставить количество ядер...
    Сиди, не умничай :grabli:
  25. hornet Учаcтник

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    843
    Симпатии:
    768
    Репутация:
    466
    Оффлайн
    Не дерзи.
  26. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    могу увеличить время на ход и поставить Komodo против SF здесь.
  27. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    1.316
    Симпатии:
    566
    Репутация:
    15
    Оффлайн
    Как таковой глубины у Альфа Зеро нет. Он же не сплошняком считает, а одни варианты просчитывает глубже, а другие совсем поверхностно. Что здесь глубиной считать? А вот оценки позиции, да, могли бы и опубликовать, было бы интересно.
  28. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    Соваз, ты какой пункт оспариваешь?
    Там не ничья или ход не Стока?
    Второе вроде ты не оспаривал сегодня... Так зачем тебе матч?
  29. redhelicopter Старожил

    • Участник
    • Старожил
    Рег.:
    11.11.2014
    Сообщения:
    629
    Симпатии:
    2.219
    Репутация:
    40
    Оффлайн
    Это не так: на глубоком анализе вылазят ошибки и неточности за SF и почти ничего не вылазит за А0.

    Тут многие напирают на то что такой анализ делается на SF, а потому неточен - однако если бы дело было в этом, многие ходы A0 обозначались бы как ошибочные. Как это происходит обычно, когда партии сильных движков анализируются более слабым.
    ШахматыЭтоДиагноз нравится это.
  30. ZER Начинающий

    • Начинающий
    Рег.:
    15.12.2017
    Сообщения:
    5
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    А оценок позиций тоже нет. Есть выходной вектор ходов с вероятностями. Где больше - туды ходим.
  31. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Мне интересно, ничья ли после Kf8.
    —- добавлено: 15 дек 2017 —-
    Да, оценку выдавать в процентах можно. Ну, хоть какая-то доп. информация должна быть.
  32. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    Насколько глубоком?

    вот анализ с Личесса
    то, что их Сток анализирует партию 1 минуту, позволяет отнести его к слабым

    [Event "AlphaZero-SF"]
    [Site "https://lichess.org/zbCOTavB"]
    [Date "2017.12.06"]
    [Round "?"]
    [White "AlphaZero"]
    [Black "Stockfish8"]
    [Result "1-0"]
    [ECO "E17"]
    [Annotator "lichess.org"]
    [PlyCount "111"]
    [EventDate "2017.??.??"]

    1. Nf3 Nf6 2. d4 e6 3. c4 b6 4. g3 Bb7 5. Bg2 Be7 6. O-O O-O 7. d5 exd5 8. Nh4
    {E17 Queen's Indian Defense: Classical Variation, Polugaevsky Gambit} c6 9.
    cxd5 Nxd5 10. Nf5 Nc7 11. e4 d5 12. exd5 Nxd5 13. Nc3 Nxc3 14. Qg4 g6 15. Nh6+
    Kg7 16. bxc3 Bc8 17. Qf4 Qd6 18. Qa4 g5 19. Re1 Kxh6 20. h4 f6 21. Be3 $6 {
    (-0.64 в()/^ -1.48) Inaccuracy. Best move was Rxe7.} (21. Rxe7 Qxe7 22. Ba3 c5
    23. Bxa8 Bf5 24. Bg2 Rd8 25. hxg5+ fxg5 26. Bc1 Kg7 27. Be3 h6) 21... Bf5 $2 {
    (-1.48 в()/^ -0.25) Mistake. Best move was Kg7.} (21... Kg7 22. Rad1 Qe6 23.
    Bxg5 Qf7 24. Be3 b5 25. Qe4 a5 26. a4 bxa4 27. Qxa4 Re8 28. Bf1) 22. Rad1 Qa3
    $6 {(-0.61 в()/^ 0.00) Inaccuracy. Best move was Qc7.} (22... Qc7 23. Be4) 23.
    Qc4 b5 24. hxg5+ fxg5 25. Qh4+ Kg6 26. Qh1 Kg7 27. Be4 Bg6 28. Bxg6 hxg6 29.
    Qh3 Bf6 30. Kg2 Qxa2 31. Rh1 Qg8 32. c4 Re8 33. Bd4 $2 {
    (0.00 в()/^ -1.07) Mistake. Best move was Rd6.} (33. Rd6 bxc4 34. Qh6+ Kf7 35.
    Rxf6+ Kxf6 36. Qxg5+ Ke6 37. Rd1 Qf7 38. Qg4+ Qf5 39. Qxc4+ Ke7) 33... Bxd4 $2
    {(-1.07 в()/^ 0.00) Mistake. Best move was Rd8.} (33... Rd8 34. Bxf6+ Kxf6 35.
    cxb5 Rd5 36. Qg4 Nd7 37. Qf3+ Kg7 38. bxc6 Nf6 39. Rb1 Rf8 40. Rb7+) 34. Rxd4
    Rd8 $2 {(-0.24 в()/^ 1.59) Mistake. Best move was Re5.} (34... Re5 35. cxb5
    cxb5 36. Rd3 Re6 37. Qh6+ Kf7 38. Qxg5 Nc6 39. Rf3+ Ke8 40. Qxb5 Rb8 41. Qc5)
    35. Rxd8 Qxd8 36. Qe6 Nd7 37. Rd1 Nc5 38. Rxd8 Nxe6 39. Rxa8 Kf6 40. cxb5 cxb5
    41. Kf3 Nd4+ $6 {(1.29 в()/^ 2.10) Inaccuracy. Best move was Ke5.} (41... Ke5
    42. Ke3 Ng7 43. Rxa7 Nf5+ 44. Kd3 Kd5 45. Rb7 Nd6 46. Rb8 g4 47. Rg8 Nc4 48.
    Kc3) 42. Ke4 Nc6 43. Rc8 Ne7 $2 {(1.60 в()/^ 3.92) Mistake. Best move was Nb4.}
    (43... Nb4 44. Rc5) 44. Rb8 Nf5 $6 {
    (3.50 в()/^ 4.33) Inaccuracy. Best move was b4.} (44... b4 45. Rxb4) 45. g4 Nh6
    $2 {(3.92 в()/^ 4.98) Mistake. Best move was Nd6+.} (45... Nd6+ 46. Kd5 Nf7 47.
    Rxb5 Ne5 48. Rb4 Nf3 49. Ra4 Nh2 50. Ra6+ Kg7 51. Rxa7+ Kf6 52. Ra4) 46. f3 Nf7
    47. Ra8 Nd6+ 48. Kd5 Nc4 49. Rxa7 Ne3+ 50. Ke4 Nc4 51. Ra6+ Kg7 52. Rc6 Kf7 $6
    {(4.23 в()/^ 4.78) Inaccuracy. Best move was Nd2+.} (52... Nd2+ 53. Ke3 Nb1 54.
    Kd3 b4 55. Rb6 Nc3 56. Rxb4 Nd5 57. Rb5 Nf4+ 58. Ke3 Nh3 59. Ke4) 53. Rc5 Ke6
    $6 {(4.01 в()/^ 4.87) Inaccuracy. Best move was Kf6.} (53... Kf6 54. Rd5) 54.
    Rxg5 Kf6 55. Rc5 g5 56. Kd4 {Black resigns.} 1-0


    https://lichess.org/zbCOTavB#30

    коменты будут?
    —- добавлено: 15 дек 2017, опубликовано: 15 дек 2017 —-
    тебе Fruit сказал, что объективно проиграно
    Это знак качества :rtfm:
    Не надо гонять движки, это экспертное мнение
    sovaz1997 нравится это.
  33. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Комсюк, У Fruit какое-то особенное понимание позиции? Мне просто интересно, какие есть основания считать ту позицию выигранной.
  34. Vladruss НедоКМС, победитель второразрядников.

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    30.12.2009
    Сообщения:
    16.477
    Симпатии:
    8.522
    Репутация:
    530
    Нарушения:
    31
    Оффлайн
    Это результат рандомности как следствие многоядерности. На одном ядре Сток находит правильный ход без всяких проблем.
    Где-то слышал прикол "Победил не приходя в сознание". Походу, здесь это именно тот самый случай.
    Нубы подбирали соперника. У ученых свои таракан* в голове.
    Локомотив нравится это.
  35. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    Найди свой пост с оценкой после ночного анализа

    да уж получше чем у голого Стока :)

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