强化学习第八章:值函数近似
什么叫做函数近似
原有表格法的优缺点
回顾之前的动作状态价值
在强化学习过程中会不断更新这个表格,用状态和动作进行索引,直观便于分析。但是如果动作或者状态的取值范围很大或者不是离散而是连续的,这个表格会变得超级大或者根本 无法建立 这个表格,同时需要很多经验才能保证全部访问所有的状态-动作对进行更新。
函数近似
假使用一根直线来近似状态价值离散点,输入状态,输出状态价值,这样只用保存直线的斜率和截距两个参数即可。
这样做大大 减少了参数量 ,但是 准确性降低 了,同时在 更新参数向量 的时候,所有的状态价值都会 随着改变 ,不用访问所有状态,也能修改其状态价值, 增加 了 泛化性 ,这种做法叫值近似。
除了线性还可以扩展到非线性。
准确性高了,参数增加了。
值函数近似的目标函数
目标是找到一个最优的参数向量,让每个状态的近似值更接近真实值。
目标函数的定义
对于随机变量S来说,要求期望就得知道分布,但不知道S的分布
- 假设为均匀分布
- 假设为平稳发布
访问到次数更多的权重更大,那其实得按照某个策略访问足够多次,当这个马尔科夫链的状态转移矩阵达到平稳状态的时候才能用,但并不是每个马尔科夫链都能达到平稳分布,所有后面举的例子是用频率代替概率?
目标函数的优化算法
提到优化算法,又是最小化J,自然而然想到梯度下降。
经过一番计算后,真实梯度为
这里会计算期望,可以避免吗,可以,用随机梯度下降
如何近似真实的状态价值呢,左手MC右手TD
伪代码
目标函数的优化算法的理论分析
目标函数的优化算法里面各种近似,会存在一些问题,先回顾下整个流程
真实梯度到随机梯度下降,状态价值到状态价值近似,导致最终的梯度下降并不是在优化原始的J。
- 真实误差
- 贝尔曼误差
- 投影贝尔曼误差
- 三种误差的理解
Sarsa with 状态动作价值函数近似
随机梯度下降优化式
伪代码
Q-Learning with 状态动作价值函数近似
随机梯度下降优化式
伪代码
Deep Q-Learning
目标函数
- 技巧一:双网络
利用梯度下降算法进行求解的时候,w出现在了两个位置,将两个位置的w进行区分,更新的时候固定wT
具体的做法:
为什么能这样做
- 技巧二:经验回放 Replay Experience
什么叫经验回放
简而言之,收集经验形成均匀分布的经验池
之前的是s-a,现在是S-A,随机变量就要有分布,啥分布,没先验知识的时候就是均匀分布。 - 能否在Tabular Q-Learning中使用经验回放
可以,主要提高数据利用率,前提是环境是确定的,这样,经验才有用。 - 伪代码
总结
三个误差函数的理解,DQN的技巧。