【强化学习】一小时完全入门

1-1
价值:将来能够获得所有奖励之和的期望值
1-2
强化学习的某一个核心问题:
exploration 探索是否有其他更好的行动创造更大价值
exploitation 利用,利用已有价值函数
二者需要平衡
1-3 多臂老虎机
强化学习的算法-具体的学习过程
Value:action value在此,一个行动具有的价值就是对应即时奖励的期望值(因为没有将来的奖励)

价值函数:

策略函数:

Qt(a)初始值不能设为0,因为一旦这样,由于贪婪策略,一开始选了一个,尝到了甜头,(而另一个没尝所以没有甜头),以后就一直会选择那一个已经尝试过的。
为解决此问题,我们可以把初始值设大,鼓励更多探索
(也就是让预期变的很甜,而实际上两个选择都不会这么甜,让预期的甜头变成苦头,这样他遭受毒打之后自然会选择不那么苦的另一个)
但是左右老虎机策略如果改变,此方法依然失效
因此可以用e-greedy,让他有一定概率去探索另一个。
1-5 误差

Qn:对于第n次R的估计值
Rn:第n次的奖励
Rn-Qn:奖励预测误差
由于Qn存在误差,说明预测不准确,因此要将其迭代修正为Qn+1,1/n就是步长或者学习率
这就是误差学习法,也就是基于误差进行学习
但是这样还存在一个问题:学习率1/n会随着步数增加会越来越小。
当环境奖励策略不变时,问题不大。但如果奖励分布随着步数增长而变化,由于我们的学习率就会越来越小,我们的预测误差就会越来越大,预测结果就会走偏。
为了避免走偏,我们将学习率1/n变为常数α,得到以下公式:

Qn不再是Ri的平均值,而变成了Ri的加权平均,而且i越大,权重越大,这样就更加适用于奖励分布可能会改变的情况。
最后对比一下改进前后的预测价值修正方法

1-6 OOXX

这是一个行动价值的价值公式,也是一个基于误差的学习方法
它适用于没有延迟奖励,只有一个状态的情况
其格式可以总结为:
新的估计=旧的估计+学习率*误差
现在,为了解决延迟奖励与多状态的情况
我们要将其推广为状态价值公式
状态价值公式的学习方法是啥格式呢?
跟上面的行动价值的学习方法一样
新的估计=旧的估计-学习率*误差
->
新的状态行动价值=旧的状态行动价值-学习率*误差
我们依然先会为状态行动价值设置一个初始值,再做实验,然后得到某一次实验中真实的状态行动价值,最后用它减去学习率*误差,接着再做实验……

上图中,Q(St,At)代表在St状态下,采取At行动后,产生的价值Rt的估计,那么旧估计的误差自然就是旧估计Q(St,At)-t时刻后所有奖励Rt。
代入我们之前设想的格式,就很容易得到下面的第一个公式

但是这个式子在使用时,需要使用所有Rt的和,而这个Rt的和必须等到游戏运行到最终时,才会出现,所以迭代的比较慢。
为了让t时刻运行之后就能迭代,我们想了个骚操作——用估计值来代替真实值。
t时刻后,所有奖励的值≈t时刻所获得的奖励+此后奖励的估计值(而不是真实值)
那么我们的状态行动价值学习方法就变成了上面第二个式子。
这样的话,就不需要等到游戏结束再更新Q(St,At)了,速度应该提升了很多。
第一个式子,是蒙特卡罗法的雏形
第二个式子,是时序差分学习法的雏形