Я пытаюсь настроить глубокую нейронную сеть, которая предсказывает следующий шаг игрового агента для навигации по миру. Для управления игровым агентом требуется два плавающих входа. Первый контролирует скорость (0.0 = остановка / не двигаться, 1.0 = максимальная скорость). Второй управляет рулевым управлением (-1,0 = поворот налево, 0,0 = прямо, +1,0 = поворот направо).
Я спроектировал сеть так, чтобы в ней было два выходных нейрона, один для скорости (к ней применена сигмовидная активация) и для рулевого управления (имеет танг активацию). Фактический ввод, который я хочу передать в сеть, это данные пикселей и некоторые значения игрового состояния.
Чтобы обучить сеть, я просто запустил бы целую игру (около 2000 кадров / сэмплов). Когда игра закончится, я хочу тренировать модель. Вот где я борюсь, как будет выглядеть моя функция потери? Во время игры я собираю все действия / выходы из сети, состояние игры и награды за кадр / семпл. Когда игра закончена, я также получил информацию, выиграл или проиграл агент.
Edit:
Этот пост http://karpathy.github.io/2016/05/31/rl/ вдохновил меня. Возможно, я мог бы использовать дисконтированные (переместить, повернуть) пары значений, умножить их на (-1), если игровой агент проиграл, и (+1), если он выиграл. Теперь я могу использовать эти значения в качестве градиентов для обновления весов сетей?
Было бы хорошо, если бы кто-то мог помочь мне здесь.
Всего наилучшего,
Tobs.