文章目录

  • 1. 简介
    • 1.1 机器学习分类
    • 1.2 强化学习特点
    • 1.3 组成部分
  • 2. 学习过程
    • 2.1 马尔科夫决策过程
    • 2.2 强化学习算法归类
      • 2.2.1 分类方法一
      • 2.2.2 分类方法二
    • 2.3 EE(Explore&Exploit)探索利用
    • 2.5 强化学习实际开展中的难点
  • 3 强化学习的应用
  • 4 Q-Learning
    • 4.1 Bellman方程
    • 4.2 如何更新Q-Value
    • 4.3 实例Flappy Bird
      • 1)状态选择
      • 2)动作选择
      • 3)奖赏的选择
      • 4)Q函数
      • 5)伪代码
  • Reference

1. 简介

1.1 机器学习分类

这里其他机器学习方法主要是监督学习和无监督学习,也是我们在理解强化学习的过程中最容易发生混淆的地方。

  • 监督学习:已知训练数据的标签,指代正确结果。
    任务:在训练集上按照对应的标签推断出反馈机制,从而在未知标签的样本上计算出尽可能正确的结果
    应用:分类和回归问题

  • 无监督学习:未知训练数据的标签
    任务:从无标签的数据集中发现隐藏的结构
    应用:聚类等,将相似度高的数据聚类在一起

  • 强化学习:不需要数据标签,但需要每一步的反馈
    基于环境的反馈而行动,通过不断与环境交互试错,使得整体行动收益最大化,每一步的反馈是奖励/惩罚,可以量化,基于反馈调整对象行为。

强化学习主要是指导训练对象每一步如何决策,采用什么样的行动可以完成特定的目的或者使收益最大化。
❗与无监督不同,不是为了寻找隐藏的数据集结构

因此如图所示,强化学习是除了监督学习和无监督学习之外的第三种机器学习范式。

1.2 强化学习特点

  • 试错学习:强化学习需要训练对象不停地和环境进行交互,通过试错的方式总结出每一步的最佳行为决策,没有任何指导,所有的学习基于环境反馈,训练对象去调整行为决策。
  • 延迟反馈:强化学习训练过程中,训练对象的“试错”行为→环境的反馈,一般一次完整的训练结束才能得到反馈,现在改进在训练过程一般都是进行拆解的,尽量将反馈分解到每一步。
  • 时间是重要因素:强化学习的一系列环境状态的变化和环境反馈等都是和时间强挂钩,整个强化学习的训练过程是一个随着时间变化,而状态&反馈也在不停变化的,所以时间是强化学习的一个重要因素。
  • 当前的行为影响后续接收到的数据:在监督学习&半监督学习中,每条训练数据都是独立的,相互之间没有任何关联。但在强化学习中,当前状态以及采取的行动,将会影响下一步接收到的状态。数据与数据之间存在一定的关联性

1.3 组成部分

Pacman吃豆人

Agent(智能体、机器人、代理):强化学习训练的主体。Pacman中就是这个黄色小人
Environment(环境):整个游戏的所有元素构成环境;Pacman中Agent、Ghost、豆子以及里面各个隔离板块组成了整个环境。
State(状态):当前 Environment和Agent所处的状态,因为Ghost位置移动,豆子数目变化,Agent的位置变化,所以整个State处于变化中;这里特别强调一点,State包含了Agent和Environment的状态。
Action(行动):基于当前的State,Agent可以采取哪些action,如本例中的移动方向;Action是和State强挂钩的,比如上图中很多位置都是有隔板的,很明显Agent在此State下是不能往上或者往下的,只能左右;
Reward(奖励):Agent在当前State下,采取了某个特定的action后,会获得环境的一定反馈就是Reward。这里面用Reward进行统称,虽然Reward翻译成中文是“奖励”的意思,但其实强化学习中Reward只是代表环境给予的“反馈”,可能是奖励也可能是惩罚。比如Pacman游戏中,Agent碰见了Ghost那环境给予的就是惩罚,吃到了豆环境给予的就是奖励

2. 学习过程

2.1 马尔科夫决策过程

整个训练过程都基于一个前提,我们认为整个过程都是符合马尔可夫决策过程(Markov Decision Process)的。

MDP核心思想:下一步的State只和当前的State以及当前State将要采取的Action有关,只回溯一步。比如上图State3只和State2以及Action2有关。我们已知当前的State和将要采取的Action,就可以推出下一步的State是什么,而不需要继续回溯上上步的State以及Action是什么,再结合当前的(State,Action)才能得出下一步State。比如AlphaGo下围棋,当前棋面是什么,当前棋子准备落在哪里,我们就可以清晰地知道下一步的棋面是什么了。

为什么我们要先定义好整个训练过程符合MDP了,因为只有符合MDP,我们才方便根据当前的State,以及要采取的Action,推理出下一步的State。方便在训练过程中清晰地推理出每一步的State变更,如果在训练过程中我们连每一步的State变化都推理不出,那么也无从训练。

2.2 强化学习算法归类

2.2.1 分类方法一

( 1 ) Value Based

说明: 基于每个状态下可以采取的所有动作,这些动作对应的价值 ,来选择当前状态如何行动。强调一点这里面的价值并不是环境给的Reward,Reward是价值组成的一部分。

如何选择Action:简单来说,选择当前State下对应Value最大的Action。

强调一点这里面的Value值,在强化学习训练开始时都是不知道的,我们一般都是设置为0。然后让Agent不断去尝试各类Action,不断与环境交互,不断获得Reward,然后根据我们计算Value的公式,不停地去更新Value,最终在训练N多轮以后,Value值会趋于一个稳定的数字,才能得出具体的State下,采取特定Action,对应的Value是多少

代表算法:Q-Learning

适用场景:Action空间离散的情况,比如吃豆人上下左右;有时每个State对应的最佳Action也是随机的,如剪刀石头布三个1/3

( 2 ) Policy Based

对Value-Based的补充

说明: 基于每个State可以采取的Action策略,针对Action策略进行建模,学习出具体State下可以采取的Action对应的概率,然后根据概率来选择Action。

如何选择Action:基于得出的Policy函数,输入State得到Action

代表算法:Policy Gradient

适用场景:Action空间是连续的&每个State对应的最佳Action并不一定是固定的,基本上Policy Based适用场景是对Value Based适用场景的补充。

(3 ) Actor Critic

AC分类就是将Value-Based和Policy-Based结合在一起

2.2.2 分类方法二

我们是否在agent在状态s下执行它的动作a之前,就已经可以准确对下一步的状态和回报做出预测,如果可以,那么就是Model-based,如果不能,即为Model-free。

(1)Model Based:对环境进行建模

agent已经学习出整个环境是如何运行的,当agent已知任何状态下执行任何动作获得的回报和到达的下一个状态都可以通过模型得出时,此时总的问题就变成了一个动态规划的问题,直接利用贪心算法即可了。

(2)Model Free:不需要对环境进行建模也能找到最优的策略

虽然我们无法知道确切的环境回报,但我们可以对它进行估计。Q-learning中的Q(s,a)就是对在状态s下,执行动作a后获得的未来收益总和进行的估计,经过很多轮训练后,Q(s,a)的估计值会越来越准,这时候同样利用贪心算法来决定agent在某个具体状态下采取什么行动

2.3 EE(Explore&Exploit)探索利用

在Value-Based中,如下图StateA的状态下,最开始Action1&2&3对应的Value都是0,因为训练前我们根本不知道,初始值均为0。如果第一次随机选择了Action1,这时候StateA转化为了StateB,得到了Value=2,系统记录在StateA下选择Action1对应的Value=2。如果下一次Agent又一次回到了StateA,此时如果我们选择可以返回最大Value的action,那么一定还是选择Action1。因为此时StateA下Action2&3对应的Value仍然为0。Agent根本没有尝试过Action2&3会带来怎样的Value。

所以在强化学习训练的时候,一开始会让Agent更偏向于探索Explore,而不是根据哪一个Action带来的Value最大就执行该Action,选择Action时具有一定的随机性,目的是为了覆盖更多的Action,尝试每一种可能性。等训练很多轮以后各种State下的各种Action基本尝试完以后,我们这时候会大幅降低探索的比例,尽量让Agent更偏向于利用Exploit,哪一个Action返回的Value最大,就选择哪一个Action。

2.5 强化学习实际开展中的难点

Reward的设置: 如何去设置Reward函数,如何将环境的反馈量化是一个非常棘手的问题。比如在AlphaGo里面,如何去衡量每一步棋下的“好”与“坏”,并且最终量化,这是一个非常棘手的问题。

采样训练耗时过长,实际工业届应用难: 强化学习需要对每一个State下的每一个Action都要尽量探索到,然后进行学习。实际应用时,部分场景这是一个十分庞大的数字,对于训练时长,算力开销是十分庞大的。很多时候使用其他的算法也会获得同样的效果,而训练时长,算力开销节约很多。强化学习的上限很高,但如果训练不到位,很多时候下限特别低。

容易陷入局部最优: 部分场景中Agent采取的行动可能是当前局部最优,而不是全局最优。网上经常有人截图爆出打游戏碰到了王者荣耀AI,明明此时推塔或者推水晶是最合理的行为,但是AI却去打小兵,因为AI采取的是一个局部最优的行为。再合理的Reward函数设置都可能陷入局部最优中。

3 强化学习的应用

自动驾驶/游戏/推荐系统

4 Q-Learning

Value-Based

Q-Value(State, Action): Q-value是由State和Action组合在一起决定的。实际的项目中我们会存储一张表,我们叫它Q表。key是(state, action), value就是对应的Q-value。每当agent进入到某个state下时,我们就会来这张表进行查询,选择当前State下对应Value最大的Action,执行这个action进入到下一个state,然后继续查表选择action,这样循环。Q-Value的价值就在于指导Agent在不同state下选择哪个action。

强化学习入门——以Q-Learning为实例相关推荐

  1. [PARL强化学习]Sarsa和Q—learning的实现

    [PARL强化学习]Sarsa和Q-learning的实现 Sarsa和Q-learning都是利用表格法再根据MDP四元组<S,A,P,R>:S: state状态,a: action动作 ...

  2. 强化学习入门简单实例 DQN

    [强化学习入门 第一讲 MDP](https://zhuanlan.zhihu.com/p/25498081) [随笔分类 - 0084. 强化学习](https://www.cnblogs.com/ ...

  3. 深度强化学习入门到精通--资料综述

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 人工智能是21世纪最激动人心的技术之一.人工智能,就是像人一样的智能,而人的智能包 ...

  4. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  5. 【大全】深度强化学习入门到精通

    聚焦AI干货,关注:决策智能与机器学习 人工智能是21世纪最激动人心的技术之一.人工智能,就是像人一样的智能,而人的智能包括感知.决策和认知(从直觉到推理.规划.意识等).其中,感知解决what,深度 ...

  6. 强化学习入门8—深入理解DDPG

    文章目录 Deep Deterministic Policy Gradient 简介 网络结构 算法流程 小结 本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG.DD ...

  7. 强化学习入门知识与经典项目分析1.3

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  8. 写给开发同学的 AI 强化学习入门指南

    该篇文章是我学习过程的一些归纳总结,希望对大家有所帮助. 最近因为 AI 大火,搞的我也对 AI 突然也很感兴趣,于是开启了 AI 的学习之旅.其实我也没学过机器学习,对 AI 基本上一窍不通,但是好 ...

  9. 深度强化学习(Deep Reinforcement Learning)的资源

    深度强化学习(Deep Reinforcement Learning)的资源 2015-04-08 11:21:00|  分类: Torch |  标签:深度强化学习   |举报 |字号 订阅 Goo ...

  10. 【强化学习入门】梯度赌博机算法中,偏好函数更新:梯度上升公式是精确梯度上升的随机近似的证明

    本文证明强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,偏好函数更新公式:Ht+1(At)=Ht(At)+α(Rt−Rt‾)(1−πt(At))H_{t+1}(A_t) = H_t(A_t) + \ ...

最新文章

  1. JAVA基础整理-100.Java 多线编程
  2. Vue中foreach数组与js中遍历数组的写法
  3. 编程语言“铁三角”,JavaScript 力压 Java和Python
  4. selenium对富文本的操作
  5. python算法题排序_python-数据结构与算法- 面试常考排序算法题-快排-冒泡-堆排-二分-选择等...
  6. FPGA复位激励编写(方法一)
  7. MFC更改环境目录可执行文件目录下继承的值
  8. 【渝粤题库】陕西师范大学202281 中央银行学II 作业(专升本)
  9. elasticsearch的性能表现
  10. mysql找出最大的天数_mysql 计算连续登录最大天数
  11. 190811每日一句
  12. 电脑系统运行框代码大全
  13. Invalid bound statement (not found): com.wu.dao.BlogMapper.addBook错误
  14. 设计模式-一些输出方式demo
  15. WIN7系统VC6中添加OCX出现“不支持此接口” 问题的解决方法
  16. 中国移动灵犀云语音识别及合成SDK(iOS)使用指南
  17. 淘宝天猫价格监控接入方案
  18. 红帽考试资料_冰山一角
  19. python与spider的区别_python – Scraw spider与Scraped items之间的区别
  20. 实践Python控制NI SMU PXIe-4143

热门文章

  1. 统计学之基础知识(数据分析准备)
  2. 以太网MII接口类型大全 MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XL
  3. CF/TC 做题计划
  4. es与数据库的同步方案
  5. 启动牛市的密钥藏宝计划(TPC),火热来袭!
  6. 基于OBD的量产车评估(PVE)测试方法
  7. C语言实现汉诺塔问题(保姆式讲解)
  8. 解决chrome下textarea控件滚动条不好使情况
  9. MySQL UDF 提权
  10. navicat连接远程服务器mysql报10060错误