Для обучения я случайным образом генерирую сетку со значениями формы N, содержащими 0 и 1. Определены два действия [0,1], и я хочу обучить политике, используя DQN, выполнять действие 0, когда следующее число равно 1 ивыполните действие 1, когда следующее число в массиве равно 0.
Я использую DQN с Keras для создания моей сети
Example :
N=11
grid=[ 0,1,0,1,1,1,1,0,0,0,0]
Agent mark = 0.5
start point=0
current state =[ 0.5,1,0,1,1,1,1,0,0,0,0]
action=[0,1]
Предположим, что мы перемещаемся только справа от массива:На следующем шаге должно быть выполнено ДЕЙСТВИТЕЛЬНОЕ действие 0, приводящее к следующему состоянию:
Next state=[ 0,0.5,1,0,1,1,1,1,0,0,0]
Это выполняется посредством воспроизведения опыта.Он хорошо тренируется, и я достигаю 100% выигрыша (рассчитывается путем последовательного решения одного и того же лабиринта 10 раз. Теперь пришло время оценить его по вариации этой сетки:
[0,0,0,0,1,0,1,1,0,1,0]
, начиная с
[0.5,0,0,0,1,0,1,1,0,1,0]
Сеть не может предсказать правильное допустимое действие, которое в данном случае равно 1.
Моя сеть выглядит следующим образом:
Dense
Relu
Dense
Relu
Dense (number_of_actions)