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

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

  1. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    Google - это супергигантская корпорация, а дипмайнд - лишь небольшая её часть, которая занимается передовыми исследованиями и решает достаточно маленькую часть задач. Про универсальный ИИ на все случаи жизни здесь разговора не было.
    Помимо дипмайнда есть люди которые занимаются поиском, ютубом, беспилотниками, поддержкой и развитием всей инфраструктуры, аналитикой, переводом и многими другими вещами.
  2. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.885
    Симпатии:
    323
    Репутация:
    21
    Адрес:
    Киев
    Оффлайн
    Ну... в альфа-зеро это скорее закодированная база из сотни миллионов позиций, которые встретились в обучающих партиях. Для данной позиции она ищет в этой базе похожие, и берёт их оценку. Проблема в том, что без нейросети процесс поиска настолько медленный, что теряет всякий смысл. Ну и кроме оценки позиции возвращается список ходов-кандидатов, которые рассматривались лучшими в подобных положениях.

    Обучать с базовой или с нуля вопрос не такой однозначный. Проблема в том, что оценка позиции и ходы-кандидаты должны соответствовать стилю того переборного алгоритма, что используется. Может получится так, что для адекватного выбора хода в варианте Найдорфа необходимо перебрать миллион позиций, а нейросеть просто физически не сможет это сделать. А перестроить сеть так, чтобы не играть Найдорф, у неё может не получится, потому что изначально альтернативам давался маленький вес. Ну а если сеть будет обучаться с нуля, то на этапе играть Найдорфа или 2. c3 она увидит, что в Найдорфе русская рулетка, а во 2. c3 небольшой плюс, и пойдёт туда.
    Launder и Polarity нравится это.
  3. Jadn Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    2.987
    Симпатии:
    784
    Репутация:
    28
    Оффлайн
    Это заразно, что ли? Нейронная сеть тоже реализует алгоритм.

    В первое верю, а вот что будет не сильно уступать в скорости - думаю, это нереально.

    Все это уже было. Фрицы с Джуниорами призывали в свою команду гроссов. Но потом выяснилось, что простая и быстрая оценочная функция в сочетании с поиском - лучше.
    WinPooh нравится это.
  4. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.885
    Симпатии:
    323
    Репутация:
    21
    Адрес:
    Киев
    Оффлайн
    Она изучает, что получилось в результате обучения. И потом улучшает алгоритм обучения/игры.

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

    Не для любых задач, а для игр. Допустим мы хотим применить наработки DeepMind для какой-нить игры, например, шашки. Тогда нам надо (1) реализовать генератор ходов; (2) векторизовать шашечную позицию и (3) векторизовать ходы (4) выбрать структуру нейросети.

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

    Векторизация это способ описания позиции в виде вектора/массива действительных чисел. Один из вариантов использовать на входе массив чисел размерностью 4x32, где первом измерение это признаки (белая простая, белая дамка, чёрная простая, чёрная дамка), второе измерение — 32 чёрных поля, на котором происходит игра. Тогда для начальной позиции мы получим
    Код:
    1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    
    Это не единственное представление, вполне можно использовать массив 2x32, где по первому измерению будут простые/дамки, а цвет будет кодироваться -1 +1. Тогда начальная позиция будет в виде

    Код:
    +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1  0  0  0  0  0  0  0  0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
    0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
    
    Для ходов можно подавать отдельно все возможные пары клетка №1/клетка №2, всего 32*31/2 = 496 вариантов. Понятно, что одной паре может соответствовать несколько ходов, но этим можно пренебречь, потому что на практике такое встречается очень редко, и можно считать, что два и больше таких ходов получат одинаковые оценки.

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

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

    Далее в игру включается алгоритмы DeepMind. У них в кармане есть два алгоритма. Первый алгоритм это обучение нейросети, мы используем генератор ходов, структуру нейросети и выбранную векторизацию для того, чтобы каким-то образом настроить коэффициенты нейросети. Второй алгоритм это выбор хода, который использует обученную нейросеть (плюс генератор ходов плюс векторизацию) для выбора хода в игре.

    Соответственно, DeepMind вполне может заниматься улучшением алгоритма обучения нейросети и улучшением алгоритма выбора хода, но шахматы/го/сёги/дота это всего-лишь один из наборов входных данные для этого алгоритма.
    sovaz1997, WinPooh и Undying нравится это.
  5. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Скорее нейронная сеть эмулируется алгоритмическими средствами. В мышлении человека нейронная сеть то же есть, но реализована совсем по другому.
  6. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    8.784
    Симпатии:
    2.012
    Репутация:
    84
    Адрес:
    Москва
    Оффлайн
    Архитектуры у них совершенно разные. Искусственные нейронные сети - это всего лишь достаточно простые конструкции, в виде цепочек из перемножения матриц и нелинейных функций активации между ними. Один-единственный реальный нейрон - гораздо более сложная система. На данном этапе развития общего у ИНС и биологических нейронных сетей ненамного больше, чем пара слов в названии. Можно вспомнить хотя бы, что биологические сети принципиально асинхронные. И обучение у них построено на совершенно других принципах - никакого "обратного распространения ошибок" в живых нейронах нет.

    Да, появление ИНС вдохновлялось исследованиями в нейробиологии. Но не более того. Об "эмуляции" здесь говорить не приходится, что реально происходит в живых сетях, знают ещё очень приблизительно.
    Так что ИНС - это всего-навсего алгоритм, математическая абстракция. Достаточно многошаговый алгоритм, впрочем.

    То есть ИНС эмулирует биологические нейроны не в большей степени, чем самолёт "эмулирует" птицу.
    Mustitz нравится это.
  7. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Конечно, архитектура разная. Раз искусственная нейронная сеть эмулирована алгоритмическими средствами. Когда ZX Spectrum эмулируем на IBM, от этого архитектура IBM не становится идентичной архитектуре ZX Spectrum. И собственно само понятие искусственная нейронная сеть говорит о том, что термин нейронная сеть это более общее понятие, которое нельзя сводить только к нынешним алгоритмическим эмуляциям.
  8. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    8.784
    Симпатии:
    2.012
    Репутация:
    84
    Адрес:
    Москва
    Оффлайн
    Да, можно сказать, что библиотека, скажем, Keras или TensorFlow эмулирует некую идеальную в платоновском смысле нейросеть.
    Здесь снова хочется процитировать Борхеса, но я не буду :)
  9. NeoNeuro Учаcтник

    • Участник
    Рег.:
    17.02.2013
    Сообщения:
    556
    Симпатии:
    159
    Репутация:
    34
    Оффлайн
    Я не верю в alphazero.
    Нейронные сети - это круто, но логические задачи им не под силу.
    Обыграть стокфиш? - а как же вначале научиться правилам?
    Нет ни одной статьи, ни одного примера, в котором ИНС можно научить правилам шахмат (просто правилам, с точки зрения правил ФИДЕ)
    Нет ни одного материала по ИНС по решению задач, требующих РАСЧЁТА. ИНС ведь имитируют МГНОВЕННУЮ реакцию человека, ИНТУИЦИЮ. Это просто фильтр, через который идут данные и дают результат.
    Но расчёты - нет.

    и вот, не постепенно, а сразу обыгрывается сильнейший движок.

    Это всё равно что выпустить современный автомобиль ДО появления двигателей и электроники, причём чтобы в авто БЫЛИ двигатель и электроника, а в статьях писать, как автоматическая телега обогнала лошадь.

    Я думаю всё проще: ИНС используются в помощь обычному алгоритму для уточнения расчётов. Шахматный материал считает не ИНС, а обычный алгоритм. Не верите?
    Найдите ссылку, чтобы инс научилась считать?
    Счёт предметов на пальцах - это главное, что начало отличать человека от животных.
    Научить ИНС считать предметы - это сложнейшая задача. Пока не решённая.
    смотрите, задача:
    даём вектора данных, требутся посчитать единицы
    010101 - 3
    111111 - 6
    000001 - 1
    шесть цифр на входе, одна на выходе.
    Это стандарт интерфейса ИНС,
    сможет ли любая из существующих сетей ответить на вопрос

    011000 - ?
    должно быть 2. для человека очевидно. Для ИНС - неразрешимая задача. Конечно, может быть в недрах какой-нибудь компании и можно "по-тихому" сделать автоматическую телегу с дутыми колёсами и музыкой из дверей, 300 лет назад.
    Последние данные очков репутации:
    hornet: 1 20 дек 2018
    SKY и hornet нравится это.
  10. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    8.784
    Симпатии:
    2.012
    Репутация:
    84
    Адрес:
    Москва
    Оффлайн
    crem нравится это.
  11. Strat7 Учаcтник

    • Участник
    Рег.:
    06.05.2017
    Сообщения:
    246
    Симпатии:
    116
    Репутация:
    5
    Оффлайн
    Бред. Сможет любая из сетей если её правильно обучить. В этом и смысл нейронок. Сначала придумать структуру сети потом обучить на правильных данных и тогда будут правильные результаты. А вы дали 7 чисел и требуете ответа.

    Если он ранее тоже обучался и программированию и системам счисления и логике. Дайте эту задачу необученному человеку и он назовет вас кое кем или скажет куда идти.
    WinPooh, FlashNeo, Undying и ещё 1-му нравится это.
  12. NeoNeuro Учаcтник

    • Участник
    Рег.:
    17.02.2013
    Сообщения:
    556
    Симпатии:
    159
    Репутация:
    34
    Оффлайн
    Вы пробовали ? Я пробовал - не получилось.
    Нейронок много, бесплатные и платные.
    Узнавал у специалистов - общее мнение - это НЕВОЗМОЖНО.
    Нейронка умным образом аппроксимирует значение между точками. Но не делает логически операций. А тут логика нужна - нужно посчитать цифры.

    да для любого человека старше 5 лет это очевидно.
    берём пять шесть чисел. нули и единицы. нужно узнать сколько там единиц.

    есть задача и попроще, чем обучение счёту. Это обучение ходу ладьи.

    берём на вход 4 вектора (числа)
    x1, y1, x1, y2 и ставим решение - может так ходить или не может.
    набираем ходы
    1, 1, 8, 1 - это ход ладья a1 - h1. он возможен, значит ответ - 1 (ПРАВДА)
    далее
    1, 1, 1, 8 - 1
    1, 1, 8, 8 - 0 (ЛОЖЬ - ладья не ходит с a1 на h8)
    я этому пытался обучить нейронку. это оказалось невозможным. почитал литературу - понял, что это КОНЦЕПТУАЛЬНО невозможно. Так устроены нейронные сети. ну не понимают они логику. аппроксимируют числа только внутри выборки. то есть если задать ей ВСЕ возможные ходы ладьей - она запомнит. Но именно - ВСЕ. она не понимает сути - как ходит ладья.

    Научить программу ходу ладьи в обще случае - это очень СЛОЖНАЯ задача. Ключевое слово - научить.
    Если бы ИНС могла научиться играть в шахматы (неважно на каком уровне), это был бы высочайший уровень ии, можно было бы говорить о сравнении разума человека и компьютера.
    я не говорю о том, что компьютер неспособен в принципе научиться шахматным правилам - это сложная задача и в будущем она будет решена.
    Но сейчас.. это выглядит странно.
    Не бывает такого, чтобы сложная задача, состоящая из тысячи мелких была решена хорошо, но ни одна из этих мелких задач - не решена.

    Как может ИНС, неспособная обучиться ходу ладьи (самому простому из ходов), вдруг способна научиться играть в шахматы сильнее стокфиша?


    ----
    как-то читал статью об ИНС, которая научилась играть в шашки на уровне мастера. Там было написано, между делом, как-бы невзначай -
    ИНС анализирует позиции, после нескольких полуходов. Причем эти "полухода" делаются обычными алгоритмами. ИНС не учили правилам. Она лишь даёт оценку позиции и всё. В этом варианте действительно мы видим настоящее моделирование интуиции и это будет работать.
    Правда было неясно, как ход выбирается. не исключено, что дают все ВОЗМОЖНЫЕ ходы для проверки.
    но - если играть только интуитивно, без расчёта, то будут комбинационные проигрыши. Значит, расчёт чистом в виде инс будет плохо работать. Думаю, что AlphaZero - это просто ПОМОЩЬ ИНС для обычной программы, вроде стокфиша. Это тоже самое, что "Адванс" - где ИНС играет роль "советника".
  13. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    8.784
    Симпатии:
    2.012
    Репутация:
    84
    Адрес:
    Москва
    Оффлайн
    Задача обучения шахматным правилам с нуля и не ставилась, насколько известно. Но если бы её поставили, думаю, что трудностей бы не возникло. Научилась же нейросеть играть в видеоигры Атари, имея в качестве входных данных только изображение с экрана. Шахматы вряд ли в визуальном плане сложнее.
  14. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    Философствуют о том, работает на самом деле альфа зеро или нет, как правило люди, которые далеки от машинного обучения. Те же кто профессионально вовлечён в область машинного обучения, обычно едины во мнении.
    WinPooh нравится это.
  15. Strat7 Учаcтник

    • Участник
    Рег.:
    06.05.2017
    Сообщения:
    246
    Симпатии:
    116
    Репутация:
    5
    Оффлайн
    Необязательно есть гнилое яблоко чтобы сказать - оно гнилое. Вы попробовали и у вас не получилось. На основании этого вы делаете вид что это невозможно. Уровень логики и доказательств сразу виден, спорить даже не имеет смысла.

    Эффект Даннинга — Крюгера — когнитивное искажение, которое заключается в том, что люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации. Это приводит к возникновению у них завышенных представлений о собственных способностях, в то время как действительно высококвалифицированные люди, наоборот, склонны занижать свои способности и страдать недостаточной уверенностью в своих силах, считая других более компетентными. Таким образом, менее компетентные люди в целом имеют более высокое мнение о собственных способностях, чем это свойственно людям компетентным.

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

    Горе-строитель, у которого в частном доме рухнул потолок, скажет, что «надо было толще арматуру брать», но не скажет, что не сделал расчёт плиты перекрытия на распределённую и сосредоточенную нагрузку, потому что он в принципе не знал о необходимости таких расчётов, а когда его уволят, или когда горе-заказчик пошлёт его лесом, он не будет понимать за что, так как в принципе не способен осознать узость своего понимания строительной механики. Часто такая ситуация возникает с шабашниками, которые не понимают, почему им не платят за работу то, что они якобы заработали. Им невозможно объяснить, почему тот или иной элемент в строительстве они сделали неправильно, потому что у них на всё один ответ «мы так всю жизнь делали, наши деды так делали, и ничего», а фразу «расчёт балки на прогиб» они никогда и не слышали. Короче говоря, объяснить некомпетентному человеку то, что он некомпетентен, невозможно именно в силу его некомпетентности.

    Впрочем, именно у талантливых-то наблюдается обратный эффект: они хорошо понимают, насколько сложны законы реальности и насколько обширно поле знаний, которым в перспективе можно овладеть, – это приводит их к занижению собственных способностей, к недооценке своего места в обществе. «Я знаю, что ничего не знаю», – повторял мудрец Сократ, который вел более чем скромную жизнь и постоянно подвергался нападкам со стороны глупцов, уверенных в своей правоте.

    Как был проверен эффект.

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

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

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

    Впрочем, надежда на то, что слепцы, неспособные узреть бездну своего невежества и сияющие вершины знаний, которых достигли другие люди, могут исправиться, все-таки существует. Даннинг и Крюгер предложили профанам пройти специальный обучающий курс, где им не только давали знания, касающиеся их профессии, но и представление о методах, с помощью которых можно получить реальные показатели компетентности. Эти методы позволяли проверять как профессионализм других, так и собственный реальный уровень. По итогам обучения профаны осознали уровень своей прежней некомпетентности – причем даже в том случае, если их профессиональный уровень после этого не вырос.
    Последние данные очков репутации:
    Комсюк: -2 (обрамляй свой текст тегом "цитата", если он не авторский) 20 дек 2018
    Vlad_Imir, Sergey1983, Benas и ещё 1-му нравится это.
  16. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    Видимо плохо пробовали.
    Интересно, какие же это платные нейронки? Может вы с шарлатанами общались?
    Ну и термин ИНС среди специалистов в области машинного обучения не употреляет практически никто. Это тоже показатель, хоть и косвенный.
  17. NeoNeuro Учаcтник

    • Участник
    Рег.:
    17.02.2013
    Сообщения:
    556
    Симпатии:
    159
    Репутация:
    34
    Оффлайн
    Во-первых, я сделал вывод о том, что невозможно не из того, что у меня не получилось, а из специализированных книг, где писали, что к примеру, обучение ИНС работает только в пределах заданных чисел. Например, легко научить ИНС складывать или умножать, давая ей примеры. если все примеры будут от 1 до 100, то ИНС научится считать только числа.. от 1 до 100. Например, 25 + 12 она посчитает правильно (с небольшой погрешностью). а вот 2500 + 12000 - она может выдать .. примерно 101 . Потому что выходит за пределы. К примеру, обучить синусу ИНС вроде бы можно, но - она не поймёт, что там периодичность. Само понятие не под силу - за пределами ИНС не работает.

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

    Я обсуждал эти вопросы с профессорами ТулГу и СпбГУ, в том числе с автором книг по ИИ. Я занимался и занимаюсь вопросами ИИ довольно активно.

    Я не исключаю, что здесь есть эксперты в области ИИ. И был бы рад пообщаться.
    Наука - это не когда смотрят на что-то сложное и говорят "ух ты..". Наука - это когда сложное разбирают на элементарные кусочки, каждый из которых объяснить проще, чем целое.
    Правильно поставленный вопрос зачастую важнее описания сложной вещи.
    Вопрос здесь такой:
    Можно ли ИНС обучить ходу ладьи? Не заучивая все 500 правильных вариантов.
    hornet и Undying нравится это.
  18. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    В ТулГУ многослойные персептроны изучают:
    https://tidings.tsu.tula.ru/tidings/pdf/web/file/tsu_izv_technical_sciences_2016_02.pdf
    Это не наука, это позор. Попробуйте найти более квалифицированные источники.
  19. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    8.784
    Симпатии:
    2.012
    Репутация:
    84
    Адрес:
    Москва
    Оффлайн
    Всё-таки, учитывая достаточно специфический и прикладной характер тульских изделий, я бы не относился к тульской науке так уж свысока. Изделия, по крайней мере, работают - доказано на практике многократно.
    А каковы ваши научные достижения, ув. Polarity, которые позволяют вам так снисходительно бросаться словами типа "позор"? Ссылками на публикации не поделитесь?
  20. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    Для того чтобы понять что это "позор", мне не нужны публикации. Я представляю где чему учат и на каком уровне. Толковых мест в России к сожалению очень мало.
    Я сейчас занимаюсь NLP, но разбираюсь достаточно неплохо в современном RL/CV.

    Ну и касательно самой дискуссии. Зачем нейронку учить умножать два числа? Или как ходит ладья?
    Есть среда, которая следит за всеми правилами игры. Она написана людьми, там никаких нейронок нет.
    Нейронная сеть альфа зеро вообще генерит оценки для всех ходов, даже для невозможных в данный момент. Но выбирается лучший ход среди возможных. Воспринимайте это как физические законы, которые иногда вам очень хотелось бы нарушить, но нельзя.
  21. Magystr Новичок

    • Новичок
    Рег.:
    19.04.2011
    Сообщения:
    62
    Симпатии:
    14
    Репутация:
    2
    Оффлайн
    Если я правильно понял, обучить нейронную сеть правильно ходить ладьей невозможно. Именно поэтому она никогда не достигнет уровня Стокфиша. Как ей при этом удалось переплюнуть остальные движки, а также превзойти на несколько порядков человеческие возможности в шахматах, уважаемые профессора всем известных университетов не комментируют.
    Программа LC0 доступна для свободного скачивания и установки. Также с ней всегда можно поиграть онлайн.
  22. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    A0 относится к области обучения с подкреплением (по-английски reinforcement learning, RL).
    Как правило, всегда выделяется среда которая взаимодействует как-то с агентом.
    Аналогия из реальной жизни: среда - дороги с ПДД, агент - человек, который водит машину.

    Для того чтобы обучаться, нужно задать среду и агента. В шахматах среду задать очень просто, закодить правила не составляет труда. В случае с дорогами наоборот, это сделать сложно. Проблемы в реалистичном описании среды - одна из причин, почему reinforcement learning пока редко встречается на практике.

    Теперь про агента. Он в A0 состоит из 2 частей: нейронная сеть + алгоритм поиска. Нейронная сеть - это то что улучшается в процессе обучения, а алгоритм поиска MCTS был известен науке давно, он здесь фиксирован.
    Каждая возникающая позиция в процессе поиска оценивается нейронкой ровно 1 раз. Алгортим MCTS занимается всем остальным, т. е. выбирает следующую наиболее "интересную" позицию для оценки нейронкой и затем уточняет промежуточные результаты для некоторых уже оцененных позиций.

    P. S. Вот пример как люди оригинально попытались подойти к проблеме реалистичного описания среды, чтобы научить компьютер водить: они просто взяли игру GTA 5.
    https://www.youtube.com/watch?v=rvnHikUJ9T0
    Можете посмотреть что получилось :)
  23. NeoNeuro Учаcтник

    • Участник
    Рег.:
    17.02.2013
    Сообщения:
    556
    Симпатии:
    159
    Репутация:
    34
    Оффлайн
    Как улучшить игру движка при помощи нейронной сети (ИНС - искусственная нейронная сеть). Полная аналогия с адвансом.

    1. берём шахматный движок.
    2. Берём первые линии, примерно одинаковые по оценке ходы.
    Например,
    Ход Лf1 - e1 имеет оценку 0.34
    Ход Лa1-d1 имеет оценку 0.32
    3. Оба хода предлагаем для анализа ИНС. По сути -речь идёт о статистическом анализе.
    4. ИНС видит, что у чёрных слон на c5, у белых пешка на f2 и король на g1. В таких позициях статистически ладью на f1 лучше оставить, если есть другие схожие ходы. ИНС хорошо видит статистику.
    5. ИНС принимает решение - снизить оценку ходу Лf1-e1 до 0.3 и повысить оценку ходу Лa1-d1 до 0.35
    6. Принимается решение сделать ход Ла1-d1
    7. Тактика при этом не ослабевает, она вся рассчитана на первых двух пунктах обычным движком.

    Итог:
    если говорить о том, что Шахматный движок + ИНС сильнее, чем просто шахматный движок - то ДА, это возможно на сегодняшний день. Для этого ИНС не нужно иметь возможность научиться ходить ладьёй. Зато мы имеем дело с добавлением обучаемой интуиции в классические переборные шахматные алгоритмы.
  24. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.885
    Симпатии:
    323
    Репутация:
    21
    Адрес:
    Киев
    Оффлайн
    Пробуем один Dense слой с одним выходом, у которого все веса равны единице без активации. Тогда
    result = 1*x1 + 1*x2 + 1*x3 + 1*x4 + 1*x5 + 1*x6 = x1 + x2 + x3 + x4 + x5 + x6
    В точности требуемое вами поведение.

    Как обучить такую нейросеть? По сути надо много-много примеров ходов с оценками Stockfish и изменение оценки на выходе.Возникает вопрос, откуда это брать?

    Кроме того, как показывает практика, AlphaZero намного сильнее в оценке динамики на много ходов за горизонтом Stockfish, посему оценку некоторых ходов придёться менять значительно.
    crem и WinPooh нравится это.
  25. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Нейронка АльфаЗеро и не умеет ходить ладьей. Возможные ходы в позиции задаются внешним образом и подаются на вход нейронной сети. А нейронная сеть только говорит какие из возможных ходов ей нравятся больше, а какие меньше.

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

    В голове человека думаю примерно тоже самое. То есть при обучении человека шахматных правилам не нейронное мышление обучается ходить ладьей, а другой компонент мышления, который мы эмулировать еще не умеем.
    NeoNeuro нравится это.
  26. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Поэтому нейронные движки добились колоссальных успехов в геометрических играх таких как го, шахматы, сёги, позиция в которых сама по себе позиция является образом. А успехи в более сложных играх типа Старкрафта и Доты намного более скромные. Сразу возникает проблема как характеристики и способности юнита отобразить в образе.
  27. FlashNeo Новичок

    • Новичок
    Рег.:
    23.11.2018
    Сообщения:
    90
    Симпатии:
    50
    Репутация:
    0
    Оффлайн
    Я прошу прощения. Это больше матметоды
    Надо формализовать задачу как c = F(a;b), где F - искомая функция.
    Если мы ищем функцию, например, умножить (а;b), то она с высокой долей вероятности найдется с помощью регрессионного анализа. Например, с помощью метода наименьших квадратов - это даже я знаю. И тогда 2500+1200 будет вполне себе нормальный результат.

    Вон на хабре пример находится
    https://habr.com/post/307004/

    Можно искать вещи более сложные, с помощью разложения функции в ряд Тейлора или Фурье. Но это уже чуть-чуть матана надо.

    И вообще по запросу "регрессионный анализ нейронные сети" находится много чего. Например, нелинейные зависимости (не архисложно ни капли)
    --- добавлено: 21 дек 2018, опубликовано: 21 дек 2018 ---
    P.S ВСЕ элементарные функции можно представить в виде экспоненты или натурального логарифма на поле комплексных чисел. Погонять нейросеть на нахождение коэффициентов к этой функции - дело нетрудное...

    Вложения:

    • s1_43.pdf
      Размер файла:
      191,3 КБ
      Просмотров:
      18
  28. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.885
    Симпатии:
    323
    Репутация:
    21
    Адрес:
    Киев
    Оффлайн
    Я краем глаза читал, что на вход нейросети подаются только последние 8 ходов без никаких тэгов «возможно»/«невозможно». А на выходе чуть меньше 10000 выходов, где перемешаны и возможные и невозможные ходы. Просто значения невозмных ходов игнорируются уже дальше алгоритмом игры.
    --- добавлено: 21 дек 2018 ---
    Например, строим LSTM по всем игровым событиям :)
  29. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    У АльфаЗеро на вход нейронной сети подается матрица со всеми возможными ходами в шахматах для каждой клетки(в сумме примерно полторы тысячи получается). И насколько понимаю в этой матрице единичками отмечены ходы, которые возможны в рассматриваемой позиции.
  30. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    Это называется маскингом. Если бы там был какой-нибудь attention (механизм внимания), то это было бы разумно. Но его там нет, так что никаких масок на вход не подаётся.
    Undying нравится это.
  31. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Разработчики АльфаЗеро пишут следующее:
    Только число возможных ходов в шахматной позиции не 1500, а 4672. Забыл уже за год цифру.
  32. Polarity Новичок

    • Новичок
    Рег.:
    23.04.2018
    Сообщения:
    70
    Симпатии:
    16
    Репутация:
    0
    Оффлайн
    Простите, неверно трактовал ваше исходное предложение. Здесь немного перепутана терминология. Имеются ввиду абсолютно все ходы в шахматах, а не те, которые возможны в данной конкретной позиции.
  33. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Кстати, ваше предложение насчет разного кодирования белопольного и чернопольного слона, в текущей архитектуре не понятно как реализовать. Насколько я понимаю на входе нейронной сети у АльфаЗеро и Лилы фигура вообще никак не кодируется, кодируются только возможные ходы этой фигуры. А ходы у белопольного и чернопольного слона одинаковые - по диагонали в четырех направлениях.
  34. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.885
    Симпатии:
    323
    Репутация:
    21
    Адрес:
    Киев
    Оффлайн
    Так это выход нейросети, а не вход. Получаем на выходе распределение вероятностей для 4672 возможных ходов, которое потом используется в поиске.
  35. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    788
    Симпатии:
    326
    Репутация:
    8
    Оффлайн
    Это вход нейросети: https://arxiv.org/pdf/1712.01815.pdf

    Но выход нейросети такой же. Только на входе у всех возможных ходов стоят единицы. А на выходе вместо единицы какие-то значения рассчитанные нейронной сетью от 0 до 1. Для хороших ходов большие, для плохих - меньшие.
    --- добавлено: 21 дек 2018 ---
    Хотя для начала можно попробовать просто сделать слой, который будет задавать белая клетка или черная. Может этого хватит для того, чтобы нейронная сеть что-то начала понимать про разноцветность слонов.

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