1、简介
1.1、为什么有值函数近似
状态空间太大,基于DP/MC/TD的方法的离散值太多,存储量太大,运行太慢
1.2、值函数近似有两种方法
一个是状态值函数方法;一个是状态动作值方法
1.3、值函数近似的三种类型
类型1:输入状态S,输出v
类型2:输入状态S,action a,输出Q(s,a,w)
类型3:输入状态S,输出Q(s,a1,w),Q(s,a1,w)
2、增量计算方法
2.1、基础
逼近函数:特征的线性组合/神经网络/决策树/最近邻/傅里叶基/小波基
训练方法:可以拥有非平稳,非独立同分布的数据
2.2、状态值函数逼近
使用状态特征函数来表征一个状态, 无需存储状态
MC倾向于一个局部最优解;线性非线性都OK
线性TD(0)倾向于全局最优解
2.3、动作-状态值函数逼近
TD不一定收敛
同策略的非线性TD不一定收敛; 异策略线性/非线性TD都不收敛
GradientTD对于非线性函数也收敛; 但是课程中没有说明为什么以及怎么做
2.4、控制算法的收敛性
MC/Sarsa不收敛, 但是会非常接近最优值; Q-lerning对于线性问题不收敛
MC/Sarsa/Q-learing/Gradient Q-learing对于非线性问题都不收敛
3、批量计算方法
3.1、思想
增量算法没有使用历史信息来逼近; 而因为是用函数逼近值函数, 值函数对于历史的刻画不够(个人理解, 非课程描述)
3.2、使用最小二乘损失来逼近值函数
值函数:
经验回放随机抽样+随机梯度下降,就可以收敛到最小二乘
个人理解: 这里的经验回放和增量算法的不同在于样本顺序的不同, 在增量算法中, 样本按照时序进入算法, 这里是随机顺序进入
状态值函数:
DQN: Deep Q-network+ Q-learing, 需要记住四个值: s, a, r, s', Q-learing步, 最大化的是a'
DQN中有两个NN(个人理解是先批量处理样本, 得出一个NN, 然后在新的一批样本中, 用已有的NN升级另一个NN, 如此往复, 用以保持算法的稳定性)
DQN的核心: 回放+固定Q
这样, 是否回放和是否使用固定Q可以组成四种方法; 回放对于效果的提升最大, 是数量级的提升
使用经验回放可以找到最小二乘解, 使用线性值函数逼近可以直接求得最小二乘解
目标方程: 0= Sigma lambda*(拟合目标 - V(St))*V(St)
收敛性: LSTD/LSMC对于线性拟合函数都收敛
如果发现文中有问题,敬请联系作者批评指正,真诚欢迎您的指教,谢谢!
微信: legelsr0808
邮箱: legelsr0808@163.com