zoukankan      html  css  js  c++  java
  • 强化学习(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

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/ai1024/p/7385487.html
Copyright © 2011-2022 走看看