Как программировать нейронную сеть для шахмат?

Согласно https://www.oracle.com/technetwork/java/javase/overview/jmc-5-3-certified-system-config-2159573.html

[113 ]

  • Java SE 7 Обновление 4 и выше может контролироваться Java Mission Control 5.3.
  • Предыдущие версии Java SE, 1.4.2, 5.0 и 6, не могут отслеживаться Java Mission Control 5.3
    1. 23
      задан bias 19 July 2009 в 05:21
      поделиться

      4 ответа

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

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

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

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

      5
      ответ дан 29 November 2019 в 02:01
      поделиться

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

      Кроме того, ваш вопрос ничего не говорит о количестве слоев. Вы хотите использовать 385 входных нейронов для кодирования текущей ситуации. Но как вы хотите решить, что делать? По нейрону на поле? Самое высокое возбуждение побеждает? Но часто есть более чем один возможный ход.

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

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

      Я пытался построить и обучить ANN, чтобы играть в крестики-нолики, когда мне было около 16 лет ... и я потерпел неудачу. Я бы предложил сначала попробовать такую ​​простую игру.

      и мне не удалось. Я бы предложил сначала попробовать такую ​​простую игру.

      и мне не удалось. Я бы предложил сначала попробовать такую ​​простую игру.

      4
      ответ дан 29 November 2019 в 02:01
      поделиться

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

      Ваши варианты, как я их вижу, следующие: :

      • Разработать некоторую эвристическую функцию для оценки состояния платы и обучить эту сеть. Но напрашивается вопрос: зачем вообще использовать ANN, когда вы можете просто использовать свою эвристику?

      • Используйте некоторую статистическую меру, такую ​​как «Сколько игр выиграли белые или черные из этой конфигурации доски?», Которая даст Вы пригодны между белым или черным.

      4
      ответ дан 29 November 2019 в 02:01
      поделиться

      Я не понимаю, почему вы не можете иметь нейронную сеть для статического оценщика, если вы также делаете классический мини-макс просмотр с альфа-бета-обрезкой. Многие шахматные движки используют минимакс со статическим оценщиком мозга, который просто складывает фигуры или что-то в этом роде; это не имеет большого значения, если у вас достаточно уровней минимакса. Я не знаю, насколько улучшится сетка, но терять нечего. Однако тренировать это было бы сложно. Я бы предложил использовать движок, который смотрит вперед на много ходов (и принимает нагрузку на процессор и т. Д.), Чтобы обучить оценщика двигателю, который смотрит вперед меньше ходов. Таким образом, вы получите движок, который не занимает столько процессора (надеюсь).

      9
      ответ дан 29 November 2019 в 02:01
      поделиться
      Другие вопросы по тегам:

      Похожие вопросы: