【强化学习】QLearning

xiaoxiao2021-02-28  4

强化学习之Q Learning

标签: ReinforcementLearning QLearning 代码:https://github.com/gutouyu/ReinforcementLearning/tree/master


1. 算法思想

Q指的是状态动作效益。智能体Agent,每个时刻都有一个状态State, 在该状态下,它可以采取一系列动作中的一个动作Action。Q就是指在状态State下采取动作Action所获得的收益。 我们的Agent就是根据这张表Q-Table来采取动作的。每采取一个动作Action,就会到达一个状态State,会得到一个奖励Reward(Reward可正可负)。

2. 更新公式

Agent的学习过程,或者说是训练过程就是Q-Table的更新过程,也就是上式。在S状态下采取动作A,效用值是Q(S,A), α 是学习速率(learning rate), γ 是折扣因子(discount factor)。根据公式可以看出,学习速率 α 越大,保留之前训练的效果就越少。折扣因子 γ 越大,的作用就越大。是指的什么那?Agent在对状态State进行更新的时候,会考虑到眼前的利益(R),和记忆中的利益()。记忆中的利益,就是指Agent记忆中,下一个状态的动作中效用的最大值。如果Agent在下一个状态的某个动作上吃过甜头,那么它就希望通过提早的得知这个消息,以便下回再进行动作选择的时候继续进入这个吃甜头的状态。也可以理解成,采取当前动作的奖励,不仅仅是R,还有下一个状态好坏的一个奖励。Agent当然希望选择进入一个最大效用值更大的状态,也就是一个更好的状态。由此可见, γ 越大,所起到的作用就越大,Agent就会越重视过往经验,越小,Agent就会越重视验签利益R。

3. 实现

训练

Initialize Q arbitrarily //随机初始化Q值 Repeat (for each episode): //每一次游戏,从小鸟出生到死亡是一个episode Initialize S //小鸟刚开始飞,S为初始位置的状态 Repeat (for each step of episode): 根据当前Q和位置S,使用一种策略,得到动作A //这个策略可以是ε-greedy等 做了动作A,小鸟到达新的位置S',并获得奖励R //奖励可以是1,50或者-1000 Q(S,A) ← (1-α)*Q(S,A) + α*[R + γ*maxQ(S',a)] //在Q中更新S S ← S' until S is terminal //即到小鸟死亡为止

根据当前Q和位置S,使用一种策略,得到动作A //这个策略可以是ε-greedy等。 解释下这句话,假设我们现在每次都选择效用值最大的动作Action,也就是贪心去动作。那么会怎么样那?我们会一直被限制在有限的状态里出不来!就跟现实是一样的,贪心的Action就相当于是完全依照过往经验去做出选择。这样只能达到过往的水平,但是如果还存在另外一种更好的方式,是无法达到的,也就是缺少了探索。可是如果一直探索,一直乱走随机的State,那么又会导致收敛速度过慢的问题。解决办法就是,一定的概率来进行探索(探索的意思就是随机的选择一个Action),这个概率一般很小,0.01就够了。

4. 效果

全部代码见github 代码

转载请注明原文地址: https://www.6miu.com/read-200313.html

最新回复(0)