5

Я пытаюсь понять эту статью, объясняя, как тренировать нейронную сеть, чтобы играть в игру в понг. https://cloud.github.com/downloads/inf0-warri0r/neural_pong/README.pdfКак тренировать нейронную сеть для игры в понг?

Я недавно начал изучать нейронную сеть, и я знаю концепцию Back Propagation. В этой статье Back Propagation используется для обучения нейронной сети.

В этой нейронной сети имеется пять входных нейронов.

  1. координату х шара (BX)
  2. координата у шара (по)
  3. скорости шара в направлении х (BVX)
  4. скорость шара в направлении у (BVY)
  5. Положение весла (py).

В скрытом слое есть десять нейронов и один нейрон в выходном слое, который выведет положение лопасти (py).

enter image description here

С этого момента у меня были некоторые сомнения, чтобы очистить.

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

  1. Теперь я не понимаю, что это был бы желаемый результат в этом случае. Может ли это быть расстоянием между положением, в котором мяч попадает в стену, и положением весла, которое мы должны сохранить ноль?

  2. Я знаю, что контрольная весла будет жестко закодирована для синхронного перемещения с мячом, но как мы произвольно перемещаем другое весло во время обучения? Какие значения следует указывать во входном файле «py»?

  3. В какой момент игры должны быть предоставлены все пять входов bx, by, bvx, bvy и py? Должны ли мы давать эти входы и выполнять одну эпоху инерции нейронной сети только тогда, когда мяч попадает в стену?

ответ

5

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

  1. В репозитории кода он, как представляется, использует выход как расстояние от весла до места, где он должен быть. Затем он тренирует сеть на основе фактического расстояния от весла до мяча всякий раз, когда лопасть промахивается.

  2. Оригинальная бумага перемещает противоположную лопасть, просто тренируя две сети друг против друга. Это имеет некоторые недостатки, но в этом случае не должно быть проблемой. Значение для py выглядит как текущая координата paddle y

  3. В коде он предоставляет сети состояние токов игры в каждом кадре, а затем позволяет им выбирать целевое расстояние для перемещения.Затем он обучает NN, когда они пропускают мяч.

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

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

Смежные вопросы