• 强化学习(David Silver)6:值函数近似


    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

  • 相关阅读:
    Java程序运行机制及开发环境
    Redis源码分析(八)--- t_hash哈希转换
    Redis源码分析(八)--- t_hash哈希转换
    Redis源码分析(八)--- t_hash哈希转换
    Redis源码分析(九)--- t_list,t_string的分析
    Redis源码分析(九)--- t_list,t_string的分析
    Redis源码分析(九)--- t_list,t_string的分析
    Redis源码分析(十)--- testhelp.h小型测试框架和redis-check-aof.c日志检测
    Redis源码分析(十)--- testhelp.h小型测试框架和redis-check-aof.c日志检测
    Redis源码分析(十)--- testhelp.h小型测试框架和redis-check-aof.c日志检测
  • 原文地址:https://www.cnblogs.com/ai1024/p/7385487.html
Copyright © 2020-2023  润新知