UD机器学习 - C6 强化学习

0 Abstract

先介绍强化学习前沿和背景,再介绍强化学习基本设置和定义,再介绍强化学习通用解决框架和方案,然后根据算法的复杂性,由易到难的介绍强化学习的实际算法,依次为,动态规划,蒙特卡洛方法,TD learning(Q learning),最后DQN。后续增加策略梯度等。

1 Intro

1.1 前沿应用

  • 了解 AlphaGo Zero,一款先进的计算机程序,打败了专业人类围棋手。
  • 了解如何使用强化学习 (RL) 玩Atari 游戏。
  • 了解打败全世界的顶级 Dota 2 玩家的 OpenAI 机器人。
  • 了解无人驾驶车强化学习。
  • 要了解应用于金融领域的强化学习示例,请参阅这个最终项目,该项目的作者是一位毕业于机器学习工程师纳米学位的学员。
  • 了解电信强化学习。
  • 阅读这篇介绍库存管理强化学习的论文

1.2 设置

agent和训练puppy的例子:小狗通过主人的反馈来训练自己的action。

  • 训练过程
    agent environment
    reward observation/states action
    S0 A0
    R1 S1 A1
    R2 S2 A2 ...

1.3 OpenAI gym

1.3.1 安装和基本学习

  • 安装
    需要在你的计算机上安装 OpenAI Gym,你可以在课堂里完成所有的编程实现过程。你可以通过查看该 GitHub 代码库详细了解 OpenAI Gym。
    建议你花时间查看 leaderboard,其中包含每个任务的最佳解决方案。
    请参阅此博客帖子,详细了解如何使用 OpenAI Gym 加速强化学习研究。
  • Docker
    docker库:eboraas/openai-gym
    运行命令:docker run --name myaigym -d -p 8888:8888 -p 6006:6006 -v /Users/zhanggaochao/Documents/gym:/mnt/notebooks/ eboraas/openai-gym

1.3.2 相关资源

教程摘录这本关于强化学习的经典教科书中的章节。
请参阅此 GitHub 代码库以查看该教科书中的大多数图表的 Python 实现。
你还可以在该教科书第一章节之前的页面中找到另一个实用记法指南。

2 强化学习框架:问题

2.1设置回顾

agent environment
reward observation/states action
S0 A0
R1 S1 A1
R2 S2 A2 ...

2.2 阶段性任务与连续性任务

象棋是阶段性任务,每一局是一个阶段,不过是稀疏奖励问题,每个任务都有清晰的结束点 S0 A0 R1 S1 A1 R2 .. Rt St
如股票和金融投资是持续性任务,没有尽头 S0 A0 R1 S1 A1 R2 ....

2.3 奖励假设

  • 交互图
    UD机器学习 - C6 强化学习_第1张图片
  • Reward function
    下面是一个训练agent走路不跌倒的reward function:
    UD机器学习 - C6 强化学习_第2张图片

    UD机器学习 - C6 强化学习_第3张图片

    如果你想详细了解 DeepMind 的研究成果,请参阅此链接。研究论文位于此处。此外,请观看这个非常酷的视频。

2.4 累积奖励和折扣回报

All goals can be framed as the maximization of expected cumulative reward.

  • 累积奖励
    UD机器学习 - C6 强化学习_第4张图片
  • 折扣回报 discounted return
    UD机器学习 - C6 强化学习_第5张图片

    γ 是你设置的值,以便进一步优化智能体的目标。
    它必须指定0≤γ≤1。
    如果γ=0,智能体只关心最即时的奖励。
    如果γ=1,回报没有折扣。
    γ 的值越大,智能体越关心遥远的未来。γ 的值越小,折扣程度越大,在最极端的情况下,智能体只关心最即时的奖励。

2.5 MDP

  • 收垃圾的机器人例子
  1. Action space A = [search recharge wait]
  2. State space S = [high low]


    UD机器学习 - C6 强化学习_第6张图片
  • 具体定义
    UD机器学习 - C6 强化学习_第7张图片

    一步动态特性简单来说就是某个状态采取某个行动使agent进入其他状态的概率。
    可以用star one来记忆,s是states,a是actions,r是returns,t是折扣率,one是一步动态特性。

3 强化学习框架:解决方案

3.1 两种策略方案

  • determinstic policy 1对1,如
  • stochastic policy 1对多 用概率做,如
    UD机器学习 - C6 强化学习_第8张图片

3.2 state-value function 状态值函数

  • 网格世界示范
    UD机器学习 - C6 强化学习_第9张图片
  • 对于每一个state用同一种策略,计算的状态值
    UD机器学习 - C6 强化学习_第10张图片
  • 定义
    UD机器学习 - C6 强化学习_第11张图片

3.3 贝尔曼期望方程 Bellman Expectation Equation

  • 为了不用每次计算状态值,都从头开始算,可以用下一个状态的状态值
    UD机器学习 - C6 强化学习_第12张图片
  • 定义
    UD机器学习 - C6 强化学习_第13张图片
  • 计算预期值
    UD机器学习 - C6 强化学习_第14张图片

3.4 最优性

  • 比较不同的策略
    UD机器学习 - C6 强化学习_第15张图片

    因为右边策略所有的状态值都比左边的大,所以右边的策略比左边的策略好。

  • 定义
    UD机器学习 - C6 强化学习_第16张图片

3.5 动作值函数

  • 与状态值函数定义的区别
    UD机器学习 - C6 强化学习_第17张图片
  • 例子解释:
    UD机器学习 - C6 强化学习_第18张图片

    从某个状态开始,如果采取了某个动作,然后按照现在的策略获得的回报。

3.6 最优策略

  • 方法 是先定义了动作值函数,然后才能找到最优策略
  • 例子
    UD机器学习 - C6 强化学习_第19张图片

    通过最优动作值函数找到最优策略,即比较每个state对应actions的动作值函数,找到最大的动作值。至于如何通过interaction找到最优动作值,这是后面强化学习主要讨论解决的。

3.7 贝尔曼方程

  • 贝尔曼预期方程 两组

  • 贝尔曼最优性方程 两组

    UD机器学习 - C6 强化学习_第20张图片

4 强化学习框架:动态规划

  • 已经对全局了解了,每个状态对应的下一个状态的概率和回报
  • 主流程
    UD机器学习 - C6 强化学习_第21张图片

4.1 计算状态值函数

  • 少的时候解方程就行,写每个状态的状态值方程,
    UD机器学习 - C6 强化学习_第22张图片
  • 但是数据多了使用迭代方法,先初始化为0,然后一个一个的计算收敛,状态值过多不好解方程
    UD机器学习 - C6 强化学习_第23张图片
  • 收敛方法
    UD机器学习 - C6 强化学习_第24张图片
  • 对于有限的MDF,只要满足γ<1 或这如果以任何状态 s∈S 开始,并且遵守 π策略,就会保证会最终达到终止状态,就能保证上面收敛动作值,通过当前回报和下一步的状态值计算

4.2 把状态值函数变为动作值函数

  • 状态值函数
    UD机器学习 - C6 强化学习_第25张图片
  • 动作值函数
    UD机器学习 - C6 强化学习_第26张图片

4.3 策略改进

  • 选择该状态下最大的动作值对应的动作为当前策略
    UD机器学习 - C6 强化学习_第27张图片
  • 因为当前t策略的状态值变大,可以使后面的状态值变大,满足更优条件策略
    UD机器学习 - C6 强化学习_第28张图片

4.4 策略迭代

  • 流程图
    UD机器学习 - C6 强化学习_第29张图片
  • 简单迭代
    UD机器学习 - C6 强化学习_第30张图片
  • 截断策略迭代
    更换策略评估函数,原来是小于,现在是迭代一定次数
    UD机器学习 - C6 强化学习_第31张图片
  • 值迭代

    策略评估和策略迭代放在一起,每次迭代策略评估只评估一次
    UD机器学习 - C6 强化学习_第32张图片

5 蒙特卡洛方法

  • 对全局环境不了解,需要不断尝试迭代去做,蒙特卡洛方法主要讨论的是阶段性任务
  • 重要概念:off-policy评价时的policy和与环境交互的policy不同,后面会讲;主要是on-policy value function predict 根据指定的policy π,算出V状态值函数,即交互的策略和评价的策略一致
  • 离线策略
    UD机器学习 - C6 强化学习_第33张图片
  • 异同策略
    UD机器学习 - C6 强化学习_第34张图片

5.1 状态值

  • first visit 只用第一次遇见的计算
    UD机器学习 - C6 强化学习_第35张图片
  • every visit 每次遇见都计算
    UD机器学习 - C6 强化学习_第36张图片

5.2 动作值函数

  • 因为对全局环境不是全然了解,就不能通过状态值函数来计算动作值函数了
    UD机器学习 - C6 强化学习_第37张图片
  • 依然通过first visit,和every visit,只不过这次加了当前状态和动作,当次数多了的时候,这两种方法会收敛到一致
    UD机器学习 - C6 强化学习_第38张图片
  • 为了让每个状态动作对都有出现的可能,we use stochastic policy instead of deterministic policy

5.3 广义策略迭代

  • 回顾之前的迭代方法
    UD机器学习 - C6 强化学习_第39张图片
  • 广义迭代方法
    UD机器学习 - C6 强化学习_第40张图片
  • 增量均值

    用来计算状态动作对的动作值函数
    UD机器学习 - C6 强化学习_第41张图片
    相当于一步动态规划,可以用上次的均值更新当前的均值
    UD机器学习 - C6 强化学习_第42张图片
  • 策略评估

    对于每个value-action pair用上面的增量均值方法计算
    UD机器学习 - C6 强化学习_第43张图片
  • 策略改进
  1. 不能完全采用动态规划的方法,选择最大的动作值函数为当前动作,因为这样会导致部分策略没有被完全探索过


    UD机器学习 - C6 强化学习_第44张图片
  2. epsilon-greedy policy :
    epsilon决定探索多一点还是利用经验多一点


    UD机器学习 - C6 强化学习_第45张图片
  3. 背后理论:
    UD机器学习 - C6 强化学习_第46张图片
  • 流程图
    UD机器学习 - C6 强化学习_第47张图片
  • 常量
    从:
    UD机器学习 - C6 强化学习_第48张图片
    变为:
    UD机器学习 - C6 强化学习_第49张图片
    因为按照第一个方法更新,未来的动作值随着N变大,对动作值更新的影响会越来越小。
    而第二个方法The agent will mostly trust the most recent returns and gradually forget about those that came in the past,会更看重最近的动作值

5.4 流程图:

6 时间差分方法 TD learning

  • 可以在每步都进行更新,能用于连续性和间断性任务
  • 与mc差别:
    就是每一个步骤都更新状态值,而不是等到某个episode结束了再更新
    即计算累加回报时,mc用actual return,td用estimated return(TD target)

6.1 TD(0) 状态值函数

  • 即每一步都更新状态值函数
    UD机器学习 - C6 强化学习_第50张图片
  • 分解一下这个表达式为两个部分,一个是过去的,一个是TD Target
    UD机器学习 - C6 强化学习_第51张图片
  • 流程图 对于间断性任务 episodic tasks
    UD机器学习 - C6 强化学习_第52张图片

6.2 TD预测:动作值

  • 状态值更新
    UD机器学习 - C6 强化学习_第53张图片
  • 动作值更新
    UD机器学习 - C6 强化学习_第54张图片

6.3 TD控制:Sarsa(0) 在下一次action更新

  • 实例
    UD机器学习 - C6 强化学习_第55张图片
  • 流程
    UD机器学习 - C6 强化学习_第56张图片

6.4 TD控制:Sarsamax(aka Q-Learining) 在下一次state就更新

  • 实例
    UD机器学习 - C6 强化学习_第57张图片
  • 比较
    UD机器学习 - C6 强化学习_第58张图片
  • 论文
    请参阅此 研究论文,以了解 Sarsamax(或 Q 学习)会收敛的证据
  • 流程
    UD机器学习 - C6 强化学习_第59张图片

6.4 TD控制:预期Sarsa 其实就是计算TD Target的时候取期望而不是取最大值

  • 比较
    UD机器学习 - C6 强化学习_第60张图片
  • 流程
    UD机器学习 - C6 强化学习_第61张图片

6.5 分析性能

UD机器学习 - C6 强化学习_第62张图片

简单来说,就是on-policy用评估和改进的策略取选择动作,off-policy用一套评估和改进,用另一套选择动作
如果你要了解详情,建议阅读该教科书(尤其是第 6.4-6.6 部分)的第 6 章节。
UD机器学习 - C6 强化学习_第63张图片

10 深度Q-学习

10.1 神经网络作为值函数

  1. 误差函数
    UD机器学习 - C6 强化学习_第64张图片

    因为真实的q和v是通过跟环境的交互来不断学习的,这是 reinforcement learning 和 supervised learning 的根本区别

  2. 蒙特卡洛方法
    UD机器学习 - C6 强化学习_第65张图片
  3. 时间差分学习

    TD(0) for episodic tasks
    UD机器学习 - C6 强化学习_第66张图片
    Sara for continuing tasks
    UD机器学习 - C6 强化学习_第67张图片
  4. Q 学习
    UD机器学习 - C6 强化学习_第68张图片

    UD机器学习 - C6 强化学习_第69张图片
  5. 比较
    UD机器学习 - C6 强化学习_第70张图片

    离线策略的优势主要是把采取的动作与学习流程不再相关
    UD机器学习 - C6 强化学习_第71张图片
    我们可以行动的时候用探索性策略,但是学习最佳的状态值或者动作值函数,online performance虽然不好,但是能找到更好的策略;可以观察来学习规律;适合离线更新和batch learning因为不用再每个时间步更新策略

10.2 深度Q网络

  • 基本配置
    UD机器学习 - C6 强化学习_第72张图片

    阅读延伸
  • Mnih et al.,2015 年,《通过深度强化学习实现人类级别的控制》。

10.3 调整技巧

有时候不会收敛到最优值函数,会震荡和发散

  • Experience Replay 经验回放
    可以先按照初始的策略做一些动作,形成缓存区,然后sample缓存区中的数据载入DQN去训练
    停止一边学习,一遍训练;先训练中,形成一个样本库再batch learning

    基本上是建立一个样本数据库,然后从中学习一个映射,基本上达到了
    UD机器学习 - C6 强化学习_第73张图片
  • Fixed Q Targets 固定Q目标

    更新的时候,数学书用Q learning预测的动作值替代实际的动作值在数学上不成立,如下:
    UD机器学习 - C6 强化学习_第74张图片

    但是用梯度去计算会不断趋近,但是w变化会导致Q learning预测的动作值变化,导致不会收敛,像下面一样:
    UD机器学习 - C6 强化学习_第75张图片

    我们想要的是这样:
    UD机器学习 - C6 强化学习_第76张图片

    解决consecutive experience tuples的问题,让Q learning预测动作值用的w先固定住,等训练一定的batch后,再用训练后的w去更新
    UD机器学习 - C6 强化学习_第77张图片
    这样把目标和参数拆开来,使学习算法更加稳定,不太可能发散或震荡

10.4 深度Q学习算法

  • 流程
    UD机器学习 - C6 强化学习_第78张图片

    sample和learn阶段没有依赖关系,比如多次sample,一次learning

  • 扩展
    Mnih et al.,2015 年,《通过深度强化学习实现人类级别的控制》(DQN 论文)
    He et al. ,2015 年,《深入研究纠正器:在 ImageNet 分类方面超过人类水平》(权重初始化)

10.4 DQN改进

  • Double DQNs

    刚开始训练的时候基本是随机的,选择最大的不可靠,会高估Q值
    UD机器学习 - C6 强化学习_第79张图片

    用Double DQNs去解决,用一组参数去选择最佳action,另一组去评估动作;在原始的Double DQNs的论文里维持两组参数,随机选一个用来选择最佳action,另一组去评估动作;但是当我们跟Fixed Q Target相结合的时候,我们可以用旧的w去做
    UD机器学习 - C6 强化学习_第80张图片
  • Prioritized Replay

    经验回放的时候有些经验的优先级不一样,用TD error delta方,error越大可以学的规律越多
    UD机器学习 - C6 强化学习_第81张图片
  • Dueling Networks
  • 扩展
    Thrun 和 Schwartz,1993 年,《使用函数逼近进行强化学习存在的问题》( 高估 Q 值)
    van Hasselt et al.,2015 年,《双 Q 学习的深度强化学习》
    Schaul et al.,2016 年,《优先经验回放》
    Wang et al.,2015 年。《深度强化学习的对抗网络架构》。
    Hausknecht 和 Stone,2015 年,《部分可观察 MDP 的深度递归 Q 学习》

你可能感兴趣的:(UD机器学习 - C6 强化学习)