#python #theano #keras #reinforcement-learning
#python #theano #keras #подкрепление-обучение
Вопрос:
Я работаю в программе обучения с подкреплением и использую эту статью в качестве ссылки. Я использую python с keras (theano) для создания нейронной сети, а псевдокод, который я использую для этой программы, является
Do a feedforward pass for the current state s to get predicted Q-values for all actions.
Do a feedforward pass for the next state s’ and calculate maximum overall network outputs max a’ Q(s’, a’).
Set Q-value target for action to r γmax a’ Q(s’, a’) (use the max calculated in step 2). For all other actions, set the Q-value target to the same as originally returned from step 1, making the error 0 for those outputs.
Update the weights using backpropagation.
Уравнение функции потерь здесь такое
где моя награда равна 1, maxQ(s’,a’) = 0,8375 и Q (s, a) = 0,6892
Мой L был бы 1/2*(1 0.8375-0.6892)^2=0.659296445
Теперь, как мне обновить веса моей модели нейронной сети, используя указанное выше значение функции потерь, если моя структура модели такова
model = Sequential()
model.add(Dense(150, input_dim=150))
model.add(Dense(10))
model.add(Dense(1,activation='sigmoid'))
model.compile(loss='mse', optimizer='adam')
Ответ №1:
Предполагая, что NN моделирует функцию Q value, вы просто передаете цель в сеть. например
model.train_on_batch(state_action_vector, target)
Где state_action_vector — это некоторый предварительно обработанный вектор, представляющий ввод состояния-действия в вашу сеть. Поскольку ваша сеть использует функцию потерь MSE, она вычислит условие прогнозирования, используя действие состояния при прямом проходе, а затем обновит веса в соответствии с вашей целью.
Комментарии:
1. Пожалуйста, предоставьте более подробное описание. Спасибо