Q-learning
q-learning是一种时间差分控制算法,其基础是时间差分预测:
上一个状态的值=先前状态的值+学习率(奖励+折扣因数(当前状态的值)-先前状态的值)
直观理解就是实际奖励和期望奖励
之差乘以学习率
。试图最小化这个误差。
Q函数也叫状态-行为值函数,用于确定状态s下一个行为a的好坏程度。根据以下方程更新Q值:
是对未来奖励的衰减率,越大对未来越重视,为0时只考虑眼前的值。
为什么是maxQ而不是minQ呢?想象一个极端情况,五子棋,最后一步,下在X位置赢,100分;其他位置输,0分。那怎么衡量倒数第二步的价值呢?当然是由最后一步的最大价值决定,不能因为最后一步走错了,就否定前面动作的价值。
![](https://img.haomeiwen.com/i8750168/5cecc501414ded2a.png)
以冰冻湖为例。设当前处于状态(3,2),并具有向左和向右两种行为。(图5.5)
使用贪婪策略探索出一种新的行为(向下),选择该行为。(图5.6)
这时在(3,2)执行向下行为,到达新状态(4,2)。那么如何更新上一状态(3,2)的值呢?观测Q表(图5.7)
![](https://img.haomeiwen.com/i8750168/ac06097c7d8cc268.png)
设为0.1,
为1,根据
则:
此时,Q(3,2),向下的值更新为0.83。
现在处于(4,2),需要执行一种行为。设选择概率选择最佳行为,在状态(4,2)下向右具有最大值,故选择向右。(图5.8)
![](https://img.haomeiwen.com/i8750168/62d1b45ed5d184f1.png)
执行后处于(4,3),然后更新(4,2)的值:
![](https://img.haomeiwen.com/i8750168/7bf41c729691896f.png)
q_learning实践可参考这个网站:TensorFlow 2.0 (七) - 强化学习 Q-Learning 玩转 OpenAI gym
DQN
在q-learning中,需要将每个状态下所有可能行为的值都保存在Q表中,并选取在状态下具有最大值的行为作为最佳行为。如果具有许多状态且每个状态下具有多种行为,那么便利每个状态下的所有行为要耗费大量时间。一种更好的方法是利用某一参数来近似Q函数,即
。
可以利用一个权重为的神经网络来近似每个状态下所有可能行为的Q值。这就是DQN。
在q-learning中:
式中是目标值,
是预测值,目的是通过学习一种正确的策略来使得
最小化。
同理,在DQN中,定义损失函数为目标值与预测值的均方差,同时通过更新权重来最小化损失:
式中。
通过梯度下降来更新权重并最小化损失。
![](https://img.haomeiwen.com/i8750168/c895e298e5f18560.png)
实践参考这个网站:TensorFlow 2.0 (八) - 强化学习 DQN 玩转 gym Mountain Car
![](https://img.haomeiwen.com/i8750168/b7e982c35ebbe0d6.png)
网友评论