UD机器学习 - C6 强化学习

0 Abstract

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

1 Intro

1.1 前沿应用

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 奖励假设

  • 交互图
  • Reward function
    下面是一个训练agent走路不跌倒的reward function:


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

2.4 累积奖励和折扣回报

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

  • 累积奖励
  • 折扣回报 discounted return

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

2.5 MDP

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


  • 具体定义

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

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

3.1 两种策略方案

  • determinstic policy 1对1,如
  • stochastic policy 1对多 用概率做,如

3.2 state-value function 状态值函数 v_\pi

  • 网格世界示范
  • 对于每一个state用同一种策略,计算的状态值
  • 定义

3.3 贝尔曼期望方程 Bellman Expectation Equation

  • 为了不用每次计算状态值,都从头开始算,可以用下一个状态的状态值
  • 定义
  • 计算预期值

3.4 最优性

  • 比较不同的策略

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

  • 定义

3.5 动作值函数 q_\pi

  • 与状态值函数定义的区别
  • 例子解释:

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

3.6 最优策略

  • 方法 是先定义了动作值函数,然后才能找到最优策略
  • 例子

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

3.7 贝尔曼方程

  • 贝尔曼预期方程 两组

  • 贝尔曼最优性方程 两组

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

  • 已经对全局了解了,每个状态对应的下一个状态的概率和回报
  • 主流程

4.1 计算状态值函数

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

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

  • 状态值函数
  • 动作值函数

4.3 策略改进

  • 选择该状态下最大的动作值对应的动作为当前策略
  • 因为当前t策略的状态值变大,可以使后面的状态值变大,满足更优条件策略

4.4 策略迭代

  • 流程图
  • 简单迭代
  • 截断策略迭代
    更换策略评估函数,原来是小于\theta,现在是迭代一定次数
  • 值迭代

    策略评估和策略迭代放在一起,每次迭代策略评估只评估一次

5 蒙特卡洛方法

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

5.1 状态值

  • first visit 只用第一次遇见的计算
  • every visit 每次遇见都计算

5.2 动作值函数

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

5.3 广义策略迭代

  • 回顾之前的迭代方法
  • 广义迭代方法
  • 增量均值

    用来计算状态动作对的动作值函数
    相当于一步动态规划,可以用上次的均值更新当前的均值
  • 策略评估

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


  2. epsilon-greedy policy :
    epsilon决定探索多一点还是利用经验多一点


  3. 背后理论:
  • 流程图
  • 常量\alpha
    从:
    变为:
    因为按照第一个方法更新,未来的动作值随着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) 状态值函数

  • 即每一步都更新状态值函数
  • 分解一下这个表达式为两个部分,一个是过去的,一个是TD Target
  • 流程图 对于间断性任务 episodic tasks

6.2 TD预测:动作值

  • 状态值更新
  • 动作值更新

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

  • 实例
  • 流程

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

  • 实例
  • 比较
  • 论文
    请参阅此 研究论文,以了解 Sarsamax(或 Q 学习)会收敛的证据
  • 流程

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

  • 比较
  • 流程

6.5 分析性能


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

10 深度Q-学习

10.1 神经网络作为值函数

  1. 误差函数

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

  2. 蒙特卡洛方法
  3. 时间差分学习

    TD(0) for episodic tasks
    Sara for continuing tasks
  4. Q 学习

  5. 比较

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

10.2 深度Q网络

  • 基本配置

    阅读延伸

10.3 调整技巧

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

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

    基本上是建立一个样本数据库,然后从中学习一个映射,基本上达到了
  • Fixed Q Targets 固定Q目标

    更新的时候,数学书用Q learning预测的动作值替代实际的动作值在数学上不成立,如下:

    但是用梯度去计算会不断趋近,但是w变化会导致Q learning预测的动作值变化,导致不会收敛,像下面一样:

    我们想要的是这样:

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

10.4 深度Q学习算法

10.4 DQN改进

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容