强化学习SARSA算法会随着时间的推移降低值

时间:2019-04-18 18:13:23

标签: julia reinforcement-learning

我目前正在尝试在萨特顿(Sutton),巴托(Barto)的“强化学习,入门”中描述在一个有风的上游的网格世界上的SARSA算法。 (我使用的环境与萨顿(Sutton),巴托(Barto)-第130页。)基本上,有70个区域,一个区域可以在四个方向上移动:上,下,左或右。在某些状态下,风将使机芯向上移动一级。对于未达到目标的每个时间步,奖励为-1。

我实施了环境,一切似乎都正常进行。但是,学习算法似乎无效。该书的作者声称,当使用某些参数时,在学习了约150集后,该算法收敛到接近最优的解决方案。我的代码不是这种情况(用Julia v1.1.0编写)

g = GridWorld()
α = 0.5
γ = 1
ϵ = 0.1
Q = zeros(70,4)

for episode in 1:100000

isDone = false
S = g.start
A = eps_greedy(Q,ϵ,S)


while !isDone

    (R,isDone) = action(g,A)
    S´ = g.position

    A´ = eps_greedy(Q,ϵ,S´)

    Q[S,A] += α*(R + γ* Q[S´,A´] - Q[S,A])

    S = S´
    A = A´
end



end

对象g存储当前状态,当调用action(g,A)时,该状态根据操作A而改变。函数eps_greedy(Q,epsilon,S)只是获取当前状态,然后从操作值函数Q中选择一个epsilon-greedy操作。

问题是:我训练的时间越长,存储在Q中的动作值就会越低。例如,训练约2000集,开始状态的动作值在-950处都相似。训练20000将产生约-10000的作用值。 我不认为这会发生,但是我不太确定是什么导致了问题。任何帮助将不胜感激!

0 个答案:

没有答案