Привет,
Я нашел несколько примеров реализации DQN, но, поскольку я не эксперт по TensorFlow или Машинному обучению, я немного запутался.
https://dumpz.org/c77HNAA4XxGF вот один из них.
Я понимаю что, в 73-й строке мы берем некоторый кусок данных:
[{state, action, reward, newState, done}]
если быть точным, затем получаем
currentStates
, который равен
[[state1, state2, ...]]
, затем на 75 мы используем модель для получения
currentQs
, которые равны, насколько я понимаю,
[[act1, act2, ...]]
, потому что наша модель используется для получения действия от состояния среды. То же самое происходит с
newCurrentStates
и
futureQs
.
Но затем на 88 мы видим
let maxFutureQ = Math.max (futureQs);
. Что здесь происходит?
futureQs
- это массив массивов с вероятностями действий для каждого futureState? И тогда
maxFutureQ
должен быть вероятностью действия, почему тогда мы складываем это с наградой? Эта часть меня сбивает с толку.
Также я не могу понять, почему нам нужно делать
currentQ [action] = newQ;
на 94. Мы же в итоге все равно потеряем эту часть, нет?
Может кто-нибудь помочь мне понять, что здесь происходит и, может быть, оставить комментарии к строкам?
Заранее спасибо.