详解经典强化学习算法,搞定“阿尔法狗”下围棋
👆点击“博文视点Broadview”,获取更多书讯
想必你一定听说过“阿尔法狗”下围棋的故事,没错,它用的就是强化学习领域的算法。
强化学习作为人工智能的一个子领域,受到越来越多的关注,其产生的决策智能被视为走向通用人工智能的最可行方法之一。
但纷繁复杂的概念以及层出不穷的算法容易给学习者造成极大的困扰。
本文旨在用简洁的语言梳理强化学习的概念以及算法,为读者呈现强化学习的轮廓和涵盖内容。
下面总结了一些经典的强化学习算法(图1),并从多个角度对强化学习算法进行分类,其中包括:
(1)基于模型(Model-Based)和无模型的(Model-Free)学习方法;
(2)基于价值(Value-Based)和基于策略的(Policy-Based)学习方法;
(3)蒙特卡洛(Monte Carlo)和时间差分(Temporal-Difference)学习方法;
(4)在线策略(On-Policy)和离线策略(Off-Policy)学习方法。
大多数强化学习算法都可以根据以上类别进行划分,希望这些分类能帮助读者建立强化学习知识体系框架。
图1 强化学习算法分类图。加粗方框代表不同分类,其他方框代表具体算法
什么是“模型”?
在深度学习中,模型是指具有初始参数(预训练模型)或已习得参数(训练完毕的模型)的特定函数,例如全连接网络、卷积网络等。
而在强化学习算法中,“模型”特指环境,即环境的动力学模型。
回想一下,在马尔可夫决策过程中,有五个关键元素: 。
和 表示环境的状态空间和动作空间;
表示状态转移函数, 给出了智能体在状态 下执行动作 ,并转移到状态 的概率;
代表奖励函数, 给出了智能体在状态 执行动作 时环境返回的奖励值;
表示奖励的折扣因子,用来给不同时刻的奖励赋予权重。
如果所有这些环境相关的元素都是已知的,那么模型就是已知的。
此时,可以在环境模型上进行计算,而无须再与真实环境进行交互。
但通常情况下智能体并不知道环境的奖励函数 和状态转移函数 ,所以需要通过和环境交互,不断试错(Trials and Errors),观察环境相关信息并利用反馈的奖励信号来不断学习。
可以看到,基于模型和无模型的区别在于,智能体在学习过程中是否利用环境模型(或称为环境的动力学模型)(图2)。
图2 基于模型的方法和无模型的方法
基于模型的方法可以分为两类:一类是给定模型(Given the Model)的方法,另一类是学习模型(Learn the Model)的方法。
对于给定模型的方法,智能体可以直接利用环境模型的奖励函数和状态转移函数。
例如,在AlphaGo算法中,围棋规则固定且容易用计算机语言进行描述,因此智能体可以直接利用已知的状态转移函数和奖励函数进行策略的评估和提升。
而对于另一类学习模型的方法,由于环境的复杂性或不可知性,我们很难直接得到模型。
可行的替代方式是先通过与环境交互学习环境模型,然后将模型应用到策略评估和提升的过程中。
基于模型的方法的主要优点是,通过模型可以预测未来的状态和奖励,从而帮助智能体进行更好的规划。
例如,MBMF算法采用了朴素规划的算法;AlphaGo算法采用了专家迭代的算法。
基于模型的方法的缺点在于,利用模型的假设过强。
现实问题中环境的动力学模型可能很复杂,甚至无法显式地表示出来,导致模型通常无法获取。
另一方面,在实际应用中,学习得到的模型往往是不准确的,这给智能体训练引入了估计误差,基于带误差模型的策略的评估和提升往往会造成策略在真实环境中失效。
相较之下,无模型的方法不需要构建环境模型。智能体直接与环境交互,并基于探索得到的样本提升其策略性能。
例如,Q-learning算法对状态-动作对 的 值进行估计,通常选择最大 值对应的动作执行,并利用环境反馈更新 值函数,随着 值收敛,策略随之逐渐收敛达到最优;策略梯度(policy gradient)算法不对值函数进行估计,而是将策略参数化,直接在策略空间中搜索最优策略,最大化累积奖励。
这两种算法都不关注环境模型,而是直接搜索能最大化奖励的策略。
与基于模型的方法相比,无模型的方法由于无需学习环境模型,也就不存在环境拟合不准确的问题,相对更易于实现和训练。
然而,无模型的方法也有其自身的问题。
最常见的问题是在真实环境中进行探索的代价是极高的,如巨大的时间消耗、不可逆的设备损耗及安全风险,等等。
比如在自动驾驶中,我们不能在没有任何防护措施的情况下,让智能体用无模型的方法在现实世界中探索,因为任何交通事故的代价都将是难以承受的。
深度强化学习中的策略优化主要有两类:基于价值的方法和基于策略的方法。
两者的结合产生了Actor-Critic类算法和QT-Opt等其他算法,它们利用价值函数的估计来帮助更新策略。
其分类关系如图3所示。
图3 基于价值的方法和基于策略的方法。图片参考(Li, 2017)
基于价值的方法通常意味着对动作价值函数 的优化。
优化后的最优值函数表示为 ,最优策略通过选取最大值函数对应的动作得到 (“≈”由函数近似误差导致)。
基于价值的方法的优点在于采样效率相对较高,值函数估计方差小,不易陷入局部最优;缺点是它通常不能处理连续动作空间问题,且最终的策略通常为确定性策略而不是概率分布的形式。
此外,深度 网络等算法中的 -贪心策略(ϵ-greedy)和max算子容易导致过估计的问题。
常见的基于价值的算法包括Q-learning、深度Q网络(Deep Q-Network,DQN)及其变体:
(1)优先经验回放(Prioritized Experience Replay,PER)基于TD误差对数据进行加权采样,以提高学习效率;
(2)Dueling DQN改进了网络结构,将动作价值函数 分解为状态值函数 和优势函数 以提高函数近似能力;
(3)Double DQN使用不同的网络参数对动作进行选择和评估,以解决过估计的问题;
(4)Retrace修正了 值的计算方法,减少了估计的方差;
(5)Noisy DQN给网络参数添加噪声,增加了智能体的探索能力;
(6)Distributed DQN将状态-动作值估计细化为对状态-动作值分布的估计。
基于策略的方法直接对策略进行优化,通过对策略迭代更新,实现累积奖励最大化。
与基于价值的方法相比,基于策略的方法具有策略参数化简单、收敛速度快的优点,且适用于连续或高维的动作空间。
一些常见的基于策略的算法包括策略梯度算法(Policy Gradient,PG)、信赖域策略优化算法(Trust Region Policy Optimization,TRPO)、近端策略优化算法(Proximal Policy Optimization,PPO)等,信赖域策略优化算法和近端策略优化算法在策略梯度算法的基础上限制了更新步长,保证策略单调提升以防止策略崩溃(Collapse),使算法更加稳定。
除了基于价值的方法和基于策略的方法,更流行的是两者的结合,这衍生出了Actor-Critic方法。
Actor-Critic方法结合了两种方法的优点,利用基于价值的方法学习 值函数或状态价值函数V来提高采样效率(Critic),并利用基于策略的方法学习策略函数(Actor),从而适用于连续或高维的动作空间。
Actor-Critic方法可以看作是基于价值的方法在连续动作空间中的扩展,也可以看作是基于策略的方法在减少样本方差和提升采样效率方面的改进。
虽然Actor-Critic方法吸收了上述两种方法的优点,但同时也继承了相应的缺点。
比如,Critic存在过估计的问题,Actor存在探索不足的问题等。
一些常见的Actor-Critic类的算法包括Actor-Critic(AC)算法和一系列改进:
(1)异步优势Actor-Critic算法(A3C)将Actor-Critic算法扩展到异步并行学习,打乱数据之间的相关性,提高了样本收集速度和训练效率;
(2)深度确定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG)沿用了深度 网络算法的目标网络,同时Actor是一个确定性策略;
(3)孪生延迟DDPG算法(Twin Delayed Deep Deterministic Policy Gradient,TD3)引入了截断的(Clipped)Double Q-Learning解决过估计问题,同时延迟Actor更新频率以优先提高Critic拟合准确度;
(4)柔性Actor-Critic算法(Soft Actor-Critic,SAC)在 值函数估计中引入熵正则化,以提高智能体探索能力。
蒙特卡洛方法和时间差分方法的区别在于更新准则(图4)。
图4 蒙特卡洛方法和时间差分方法
蒙特卡洛方法必须等到一条轨迹生成(真实值)后才能更新,而时间差分方法在每一步动作执行都可以通过自举法(估计值)及时更新。
这种差异将使时间差分方法具有更大的偏差,而使蒙特卡洛方法具有更大的方差。
在线策略方法和离线策略方法依据策略学习的方式对强化学习算法进行划分(图5)。
图5 在线策略方法和离线策略方法
在线策略方法试图评估并提升和环境交互生成数据的策略,而离线策略方法评估和提升的策略与生成数据的策略是不同的。
这表明在线策略方法要求智能体与环境交互的策略和要提升的策略必须是相同的。
而离线策略方法不需要遵循这个约束,它可以利用其他智能体与环境交互得到的数据来提升自己的策略。
常见的在线策略方法是Sarsa,它根据当前策略选择一个动作并执行,然后使用环境反馈的数据更新当前策略。
因此,Sarsa与环境交互的策略和更新的策略是同一个策略。它的Q函数更新公式如下:
Q-learning是一种典型的离线策略方法。
它在选择动作时采用max操作和ϵ-贪心策略,使得与环境交互的策略和更新的策略不是同一个策略。
它的 函数更新公式如下:
以上内容摘自《深度强化学习:基础、研究与应用》一书。想继续阅读的读者欢迎关注和购买此书阅读。
▊《深度强化学习:基础、研究与应用》
董豪、丁子涵、仉尚航等 著
一本书轻松上手深度学习|强化学习|模仿学习|集成学习|并行计算|多智能体强化学习
中国人自己写的深度强化学习著作
该书是一线科研人员与开源社区人员为国内人工智能领域提供的一本详尽教材,主要围绕深度强化学习领域基础知识和算法实践。
本书是为计算机科学专业背景、希望从零开始学习深度强化学习并开展研究课题和实践项目的学生准备的。本书也适合没有很强的机器学习背景、但是希望快速学习深度强化学习并将其应用到具体产品中的软件工程师阅读。
(京东满100减50,快快扫码抢购吧!)
热文推荐