策略产品经理必读系列—第四讲强化学习算法

编辑导语:强化学习是机器学习的一个分支,它能通过不断与环境的交互、试错,最终完成特定目的或者使得整体行动收益最大化。本文作者对强化学习进行了总结分析,一起来学习一下吧。

强化学习这个概念是2017年乌镇围棋峰会上AlphaGo战胜了当时世界排名第一的柯洁而被普通大众知道,后面随着强化学习在各大游戏比如王者荣耀中被应用,而被越来越多的人熟知。王者荣耀AI团队,甚至在顶级期刊AAAI上发表过强化学习在王者荣耀中应用的论文。

01简介强化学习

1.什么是强化学习

强化学习是一种机器学习的学习方式(四种主要的机器学习方式解释见上图)。

上图没有提到深度学习,是因为从学习方式层面上来说,深度学习属于上述四种方式的子集。而强化学习是独立存在的,所以上图单独列出强化学习,而没有列出深度学习。

强化学习和其他三种学习方式主要不同点在于:强化学习训练时,需要环境给予反馈,以及对应具体的反馈值。它不是一个分类的任务,不是金融反欺诈场景中如何分辨欺诈客户和正常客户。强化学习主要是指导训练对象每一步如何决策,采用什么样的行动可以完成特定的目的或者使收益最大化。

比如AlphaGo下围棋,AlphaGo就是强化学习的训练对象,AlphaGo走的每一步不存在对错之分,但是存在“好坏”之分。当前这个棋面下,下的“好”,这是一步好棋。下的“坏”,这是一步臭棋。

强化学习的训练基础在于AlphaGo的每一步行动环境都能给予明确的反馈,是“好”是“坏”?“好”“坏”具体是多少,可以量化。强化学习在AlphaGo这个场景中最终训练目的就是让棋子占领棋面上更多的区域,赢得最后的胜利。

打一个不是很恰当的比喻,有点像马戏团训猴一样。

那基于上述理论,强化学习就是训练对象如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。

2.强化学习的主要特点

1)试错学习

强化学习需要训练对象不停地和环境进行交互,通过试错的方式去总结出每一步的最佳行为决策,整个过程没有任何的指导,只有冰冷的反馈。所有的学习基于环境反馈,训练对象去调整自己的行为决策。

2)延迟反馈

强化学习训练过程中,训练对象的“试错”行为获得环境的反馈,有时候可能需要等到整个训练结束以后才会得到一个反馈,比如GameOver或者是Win。当然这种情况,我们在训练时候一般都是进行拆解的,尽量将反馈分解到每一步。

4)当前的行为影响后续接收到的数据

为什么单独把该特点提出来,也是为了和监督学习&半监督学习进行区分。在监督学习&半监督学习中,每条训练数据都是独立的,相互之间没有任何关联。但是强化学习中并不是这样,当前状态以及采取的行动,将会影响下一步接收到的状态。数据与数据之间存在一定的关联性。

02详解强化学习

下面我们对强化学习进行详细的介绍:

1.基本组成部分

本文使用一个小游戏叫做Pacman(吃豆人)的游戏介绍强化学习(ReinforcementLearning)的基本组成部分。游戏目标很简单,就是Agent要把屏幕里面所有的豆子全部吃完,同时又不能被幽灵碰到,被幽灵碰到则游戏结束,幽灵也是在不停移动的。

1)Agent(智能体)

强化学习训练的主体就是Agent,有时候翻译为“代理”,这里统称为“智能体”。Pacman中就是这个张开大嘴的黄色扇形移动体。

2)Environment(环境)

整个游戏的大背景就是环境;Pacman中Agent、Ghost、豆子以及里面各个隔离板块组成了整个环境。

3)State(状态)

当前Environment和Agent所处的状态,因为Ghost一直在移动,豆子数目也在不停变化,Agent的位置也在不停变化,所以整个State处于变化中;这里特别强调一点,State包含了Agent和Environment的状态。

4)Action(行动)

基于当前的State,Agent可以采取哪些action,比如向左or右,向上or下;Action是和State强挂钩的,比如上图中很多位置都是有隔板的,很明显Agent在此State下是不能往左或者往右的,只能上下。

5)Reward(奖励)

Agent在当前State下,采取了某个特定的action后,会获得环境的一定反馈就是Reward。这里面用Reward进行统称,虽然Reward翻译成中文是“奖励”的意思,但其实强化学习中Reward只是代表环境给予的“反馈”,可能是奖励也可能是惩罚。比如Pacman游戏中,Agent碰见了Ghost那环境给予的就是惩罚。

以上是强化学习的五个基本组成部分。

2.强化学习训练过程

下面我们需要介绍一下强化学习的训练过程。整个训练过程都基于一个前提,我们认为整个过程都是符合马尔可夫决策过程的。

1)马尔可夫决策过程(MarkovDecisionProcess)

Markov是一个俄国的数学家,为了纪念他在马尔可夫链所做的研究,所以以他命名了“MarkovDecisionProcess”,以下用MDP代替。

MDP核心思想就是下一步的State只和当前的状态State以及当前状态将要采取的Action有关,只回溯一步。比如上图State3只和State2以及Action2有关,和State1以及Action1无关。我们已知当前的State和将要采取的Action,就可以推出下一步的State是什么,而不需要继续回溯上上步的State以及Action是什么,再结合当前的(State,Action)才能得出下一步State。

实际应用中基本场景都是马尔可夫决策过程,比如AlphaGo下围棋,当前棋面是什么,当前棋子准备落在哪里,我们就可以清晰地知道下一步的棋面是什么了。

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

接下来我们使用强化学习来指导Agent如何行动了。

3.强化学习算法归类

我们选择什么样的算法来指导Agent行动了?本身强化学习算法有很多种,关于强化学习算法如何分类,有很多种分类方式,这里我选择三种比较常见的分类方式。

1)ValueBased

说明:基于每个State下可以采取的所有Action,这些Action对应的Value,来选择当前State如何行动。强调一点这里面的Value并不是从当前State进入下一个Stae,环境给的Reward,Reward是Value组成的一部分。

如何选择Action:简单来说,选择当前State下对应Value最大的Action。选择能够带来最大Value加成的Action。比如下图StateA状态下,可以采取的Action有3个,但是Action2带来的Value最大,所以最终Agent进入StateA状态时,就会选择Action2。

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

代表性算法:Q-Learning、SARSA(State-Action-Reward-State-Action)

适用场景:Action空间是离散的,比如Pacman里面的动作空间基本是“上下左右”,但有些Agent的动作空间是一个连续的过程,比如机械臂的控制,整个运动是连续的。如果强行要将连续的Action拆解为离散的也是可以的,但是得到的维度太大,往往是指数级的,不适宜训练。

同时在Value-Based场景中,最终学习完每个State对应的最佳Action基本固定。但有些场景即使最终学习完每个State对应的最佳Action也是随机的,比如剪刀石头布游戏,最佳策略就是各1/3的概率出剪刀/石头/布。

2)PolicyBased

PolicyBased策略就是对ValueBased的一个补充

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

代表性算法:PolicyGradients

适用场景:Action空间是连续的&每个State对应的最佳Action并不一定是固定的,基本上PolicyBased适用场景是对ValueBased适用场景的补充。对于Action空间是连续的,我们通常会先假设动作空间符合高斯分布,然后再进行下一步的计算。

3)Actor-Critic

AC分类就是将Value-Based和Policy-Based结合在一起,里面的算法结合了2.3.1和2.3.2。

上述就是三大类常见的强化学习算法,而在Pacman这个游戏中,我们就可以适用Value-Based算法来训练。因为每个State下最终对应的最优Action是比较固定的,同时Reward函数也容易设定。

4)其他分类

上述三种分类是常见的分类方法,有时候我们还会通过其他角度进行分类,以下分类方法和上述的分类存在一定的重叠:

根据是否学习出环境Model分类:Model-based指的是,agent已经学习出整个环境是如何运行的,当agent已知任何状态下执行任何动作获得的回报和到达的下一个状态都可以通过模型得出时,此时总的问题就变成了一个动态规划的问题,直接利用贪心算法即可了。这种采取对环境进行建模的强化学习方法就是Model-based方法。

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

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

4.EE(Explore&Exploit)

3里面介绍了各种强化学习算法:Value-Based、Policy-Based、Actor-Critic。但实际我们在进行强化学习训练过程中,会遇到一个“EE”问题。这里的DoubleE不是“ElectronicEngineering”,而是“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。

Explore&Exploit是一个在机器学习领域经常遇到的问题,并不仅仅只是强化学习中会遇到,在推荐系统中也会遇到,比如用户对某个商品or内容感兴趣,系统是否应该一直为用户推送,是不是也要适当搭配随机一些其他商品or内容。

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

我们实际在应用强化学习去训练时,经常会遇到各类问题。虽然强化学习很强大,但是有时候很多问题很棘手无从下手。

1)Reward的设置

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

2)采样训练耗时过长,实际工业届应用难

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

3)容易陷入局部最优

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

03强化学习的实际应用

虽然强化学习目前还有各种各样的棘手问题,但目前工业界也开始尝试应用强化学习到实际场景中了,除了AlphaGo还有哪些应用了:

1.自动驾驶

目前国内百度在自动驾驶领域中就使用了一定的强化学习算法,但是因为强化学习需要和环境交互试错,现实世界中这个成本太高,所以真实训练时都需要加入安全员进行干预,及时纠正Agent采取的错误行为。

2.游戏

游戏可以说是目前强化学习应用最广阔的,目前市场上的一些MOBA游戏基本都有了强化学习版的AI在里面,最出名的就是王者荣耀AI。游戏环境下可以随便交互,随便试错,没有任何真实成本。同时Reward也相对比较容易设置,存在明显的奖励机制。

目前一些互联网大厂也在推荐系统中尝试加入强化学习来进行推荐,比如百度&美团。使用强化学习去提高推荐结果的多样性,和传统的协同过滤&CTR预估模型等进行互补。

本文由@KingJames原创发布于人人都是产品经理。未经许可,禁止转载。

THE END
1.强化学习的基础知识和6种基本算法解释ADP和TD学习是离线强化学习算法,但在线强化学习算法中也存在主动ADP和主动TD学习!4、Exploration 基于模型的在线学习,主动ADP Exploration 算法是一种主动ADP算法。与被动ADP算法类似,代理试图通过经验学习转换和奖励函数,但主动ADP算法将学习所有动作的结果,而不仅仅是固定的策略。它还有一个额外的函数,确定代理在https://baijiahao.baidu.com/s?id=1752610004711982199&wfr=spider&for=pc
2.强化学习极简入门:通俗理解MDPDPMCTC和Q学习策略梯度PPO本文介绍了强化学习的基本概念,如马尔可夫决策过程(MDP)、策略梯度、优势函数和Actor-Critic算法,并详细探讨了PPO算法的原理,包括目标函数、信任区域优化和近端策略优化。文章通过实例和公式推导,帮助初学者理解RL中的策略更新和价值学习过程。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/v_JULY_v/article/details/128965854
3.强化学习实战教程:从理论基础到游戏AI的应用开发指南以机器人自主导航为例,利用基于策略的强化学习算法,训练机器人学会在复杂环境中规划最优路径,以达到目标位置。 结语 通过本篇教程,我们了解了强化学习的基本概念和原理,并通过实战示例展示了强化学习在游戏AI和机器人控制中的应用。希望读者能够通过本教程对强化学习有更深入的了解,进而在实际项目中应用强化学习技术,实https://www.jianshu.com/p/166f0ed40f46
4.强化学习算法入门(豆瓣)《强化学习算法入门》使用通俗易懂的语言,按照“原理-公式-程序”的方式,对强化学习的基础知识进行了详细讲解。书中先让大家从熟悉的“平均值计算”作为切入点,学习强化学习的基本概念,然后结合实例学习了函数近似方法、深度强化学习的原理和方法等,比较了各算法的特点和应用,并用Python和MATLAB两种语言进行了编程实现。https://book.douban.com/subject/36693351/
5.入门指南人工智能的新希望——强化学习全解很多人说,强化学习被认为是真正的人工智能的希望。本文将从7个方面带你入门强化学习,读完本文,希望你对强化学习及实战中实现算法有着更透彻的了解。 大数据文摘(微信ID:BigDataDigest)作品,转载请联系邮箱zz@bigdatadigest.cn 作者| FAIZAN SHAIKH 编译团队 | Jennifer Zhu 赖小娟 张礼俊 https://36kr.com/p/1721373523969
6.深度学习:卷积神经网络从入门到精通带目录完整pdf[92MB]电子书下本书专注讨论深度学习中应用非常广泛的模型——卷积神经网络,该模型特别适用于图像分类和识别、目标分割和检测以及人工智能游戏方面,受众对象包括计算机、自动化、信号处理、机电工程、应用数学等相关专业的研究生、教师以及算法工程师和科研工作者。本书的最大特色是对卷积神经网络进行由浅入深的分类描述,依次包括:现代雏https://www.jb51.net/books/684151.html
7.深度学习入门到精通系列深入浅出强化学习Sarsa从算法来看, 这就是他们两最大的不同之处了. 因为 Sarsa 是说到做到型, 所以我们也叫他 on-policy, 在线学习, 学着自己在做的事情. 而 Q learning 是说到但并不一定做到, 所以它也叫作 Off-policy, 离线学习. 而因为有了 maxQ, Q-learning 也是一个特别勇敢的算法. https://blog.51cto.com/u_14013325/4285906
8.强化学习算法与应用综述摘要:强化学习是机器学习领域的研究热点, 是考察智能体与环境的相互作用, 做出序列决策、优化策略并最大化累积回报的过程. 强化学习具有巨大的研究价值和应用潜力, 是实现通用人工智能的关键步骤. 本文综述了强化学习算法与应用的研究进展和发展动态, 首先介绍强化学习的基本原理, 包括马尔可夫决策过程、价值函数、探索-https://c-s-a.org.cn/html/2020/12/7701.html
9.17个机器学习的常用算法应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。 4.强化学习: 在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一https://aidc.shisu.edu.cn/78/aa/c13626a161962/page.htm
10.强化学习QLearning算法详解腾讯云开发者社区QLearning是强化学习算法中value-based的算法,Q即为Q(s,a)就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。 https://cloud.tencent.com/developer/article/2157015
11.头条文章图6 强化学习的基本学习流程 部分机器学习代表算法介绍如下: ? 线性回归 在机器学习中,有一组输入变量(x)用于确定输出变量(y)。输入变量和输出变量之间存在某种关系,机器学习的目标是量化这种关系。 图7 数据集的绘制 x 和 y 值 ? 在线性回归中,输入变量(x)和输出变量(y)之间的关系表示为 y = ax +https://card.weibo.com/article/m/show/id/2309404598738399395890
12.科学网—[转载]基于深度强化学习的六足机器人运动规划以平面随机梅花桩为例,设定随机起始点与目标区域,利用深度强化学习算法进行训练,并得到六足机器人在平面梅花桩环境中的运动策略。为了加快训练进程,采用具有优先经验重放机制的深度确定性策略梯度算法。最后在真实环境中进行验证,实验结果表明,所规划的运动策略能让六足机器人在平面梅花桩环境中高效平稳地从起始点运动到https://blog.sciencenet.cn/blog-951291-1288193.html