强化学习(Reinforcement Learning, RL) / 增强学习:
- 一个智能体从与环境的交互中不断学习以完成特定目标(比如取得最大奖励值)
- 强化学习就是智能体不断与环境进行交互,并根据经验调整其策略来最大化其长远的所有奖励的累积值
- 强化学习的目标:学习到一个策略
来最大化期望回报
- 强化学习的关键问题:贡献度分配问题(与深度学习类似),每一个动作并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,并且有一定的延时性
- 贡献度分配问题:即一个系统中不同的组件对最终系统输出结果的贡献或影响
- 强化学习和监督学习的区别:
- 强化学习不需要给出“正确”策略作为监督学习,只需要给出策略的(延迟)回报,并通过调整策略来取得最大化的期望回报
- 强化学习的例子:
- 下棋这类人物,虽然很难知道每一步的“正确”动作,但是其最后的结果(即输赢)却很容易判断。因此,如果可以通过大量的模拟数据,通过最后的结果(奖励)来倒推每一步棋的好坏,从而学习出“最佳”的下棋策略,这就是强化学习
14.1 强化学习问题
14.1.1 典型例子
- 多臂赌博机问题
- 悬崖行走问题
14.1.2 强化学习定义
强化学习的基本要素:
强化学习的基本要素 | 定义 |
---|---|
状态 s | 对环境的描述,离散 or 连续,状态空间为 S |
动作 a | 对智能体行为的描述,离散 or 连续,动作空间为 A |
策略 π(a|s) | 智能体根据环境状态 s 来决定下一步动作 a 的函数 |
状态转移概率 p(s’|s,a) | 智能体根据当前状态 s 做出一个动作 a 后,环境在下一时刻转变为状态 s’ 的概率 |
即时奖励 r(s,a,s’) | 标量函数,智能体根据当前状态 s 做出动作 a 后,环境反馈给智能体一个奖励(也和下一时刻状态 s’ 有关) |
策略 π(a|s):即智能体如何根据环境状态 s 来决定下一步的动作 a,通常可以分为:
- 确定性策略:从状态空间 S 到动作空间 A 的映射函数
- 采用确定性策略的智能体总是对同样的环境做出相同的动作,会导致其策略很容易被对手预测
- 随机性策略:在给定环境状态 s 时,智能体选择某个动作 a 的概率分布
- 强化学习一般选用随机性策略,其优点:
- 在学习时可以通过引入一定随机性更好地探索环境
- 随机性策略的动作具有多样性,这点在多个智能体博弈时也非常重要
- 强化学习一般选用随机性策略,其优点:
14.1.3 马尔可夫决策过程 MDP
智能体与环境的交互序列:
智能体与环境的交互可以看作一个马尔可夫决策过程 MDP:
- 即下一时刻的状态
只取决于当前的状态
以及(额外的变量:)动作
马尔可夫决策过程 MDP:(给定策略 )
- 轨迹:
- 轨迹
的概率:
14.1.4 强化学习的目标函数
14.1.4.1 总回报
总回报 Return:给定策略 ,智能体和环境一次交互过程的轨迹
所收到的累积奖励为总回报
两种强化学习任务:
- 回合式任务:环境中有一个 or 多个特殊的终止状态,到达终止状态,则一轮交互(回合/试验)结束
- eg. 下棋、游戏等一般的强化学习任务
- 持续式任务:环境中没有终止状态(eg. 终身学习的机器人)
- 折扣回报
- 引入折扣率
来降低远期回报的权重,避免由于没有终止状态导致总回报无穷大
- 折扣率
- 当
接近于 0,智能体更在意短期汇报
- 当
接近于 1,长期回报变得更重要
- 当
- 引入折扣率
- 折扣回报
14.1.4.2 目标函数
强化学习的目标:学习到一个策略 来最大化期望回报 ,即希望智能体执行一系列的动作来获得尽可能多的平均回报
- 目标函数
14.1.5 深度强化学习
深度强化学习:将强化学习和深度学习结合在一起,用强化学习来定义问题和优化目标,用深度学习来解决状态表示、策略表示等问题
- 两种不同的集合强化学习和深度学习的方式:分别用深度神经网络来建模强化学习中的值函数、策略,然后用误差反向传播算法来优化目标函数
14.2 基于值函数的学习方法
14.2.1 值函数
14.2.1.1 状态值函数 V
一个策略 的期望回报可以分解为
- 状态值函数
- 表示从状态 s 开始,执行策略
得到的期望总回报
- 表示从状态 s 开始,执行策略
- 贝尔曼方程:
- 表示当前状态的值函数可以通过下个状态的值函数来计算
14.2.1.2 状态-动作值函数(Q 函数)
- 状态-动作值函数 / Q 函数
- 即上面状态值函数的贝尔曼方程的第二个期望,指初始状态为 s 并进行动作 a,然后执行策略
得到的期望总回报
- 即上面状态值函数的贝尔曼方程的第二个期望,指初始状态为 s 并进行动作 a,然后执行策略
- Q 函数的贝尔曼方程:
14.2.1.3 值函数的作用
值函数的作用:对策略 (的期望回报)的评估,因此可以根据值函数来优化策略
- 最优策略:存在一个最优的策略
,其在所有状态上的期望回报最大,即:
- 难以实现
- 策略改进:
- 值函数可以看作对策略
的评估
- 若在状态 s,有一个动作
使得
,说明执行动作
的回报比当前的策略
要高,就可以调整参数使得策略中动作
的概率
增加
- 学习最优策略的方法:先随机初始化一个策略,计算该策略的值函数,并根据值函数来设置新的策略,然后一直反复迭代直到收敛
- 值函数可以看作对策略
14.2.2 动态规划算法(基于模型的强化学习)
基于模型的强化学习:模型指马尔可夫决策过程 MDP,即 MDP 的状态转移概率 和奖励
已知,则可以通过贝尔曼方程迭代计算值函数
- 动态规划算法:模型已知时,可以使用动态规划的方法来计算
- 策略迭代算法
- 值迭代算法
- 动态规划方法的两点限制:
- 要求模型已知,即要给出马尔可夫决策过程的状态转移概率
和奖励函数
,实际中这个要求很难满足
- 效率问题:当状态数量较多时,算法效率比较低
- 一种有效的改进方法是通过一个函数(eg. 神经网络)来近似计算值函数,以减少复杂度,并提高泛化能力,参见深度 Q 网络
- 要求模型已知,即要给出马尔可夫决策过程的状态转移概率
14.2.2.1 策略迭代算法
策略迭代每次迭代分为两步:
- 策略评估:计算当前策略下每个状态的值函数
- 由贝尔曼方程迭代计算状态值函数
- 由贝尔曼方程迭代计算状态值函数
- 策略改进:根据值函数来更新策略
14.2.2.2 值迭代算法
值迭代:合并策略评估和策略改进两个过程,直接计算出最优策略
- 直接优化贝尔曼最优方程,迭代计算最优值函数
- 值函数的最优贝尔曼方程
- 值函数的最优贝尔曼方程
14.2.3 蒙特卡罗采样方法(模型无关的强化学习)
模型无关的强化学习:基于采样的学习算法。马尔可夫决策过程的状态转移概率 和奖励
未知,因此要通过采样来求解马尔可夫决策过程的最优策略
蒙特卡罗方法的策略学习过程:
- 通过采样的方式来计算 Q 函数
- 当
- 当
- 在近似估计出 Q 函数
后,就可以进行策略改进
- 然后在新的策略下重新通过采样来估计 Q 函数,并不断重复,直至收敛
贪心法:
- 利用和探索:对当前策略的利用,对环境的探索以找到更好的策略
- 对于一个确定性策略
,其对应的
贪心法策略为:
- 这样
贪心法就将一个仅利用的策略转为带探索的策略
14.2.4 时序差分学习方法
蒙塔卡罗方法:一般需要拿到完整的轨迹,才能对策略进行评估并更新模型,因此效率较低
时序差分学习方法:结合了动态规划和蒙特卡罗方法
- 引入动态规划算法来提高蒙特卡罗方法的效率。模拟一段轨迹,每行动一步 or 几步,就利用贝尔曼方程来评估行动前状态的价值
14.2.4.1 SARSA 算法(同策略)
14.2.4.2 Q 学习(异策略)
Q 学习:与 SARSA 算法不同,Q 学习算法不通过 来选下一步的动作 𝑎’,而是直接选最优的 Q函 数,因此更新后的 Q 函数是关于策略 𝜋 的,而不是策略
的,即是异策略的
14.2.5 深度 Q 网络(基于值函数的深度强化学习)
值函数近似:
- 为了在连续的状态和动作空间中计算值函数
,可以用一个函数
(可以是神经网络)来表示近似计算
目标函数
- s’, a’ 是下一时刻的状态向量和动作向量
- 存在两个问题:
- 目标不稳定,参数学习的目标依赖于参数本身
- 样本之间有很强的相关性
深度 Q 网络:
- 目标网络冻结:在一个时间段内固定目标中的参数,来稳定学习目标
- 经验回放:构建一个经验池(由智能体最近的经历组成的数据集)来去除数据相关性
- 训练时,随机从经验池中抽取样本来代替当前的样本用来进行训练,这样就打破了和相邻训练样本的相似性,避免模型陷入局部最优
- 经验回放在一定程度上类似于监督学习,先收集样本,然后在这些样本上进行训练
14.3 基于策略函数的学习方法
策略搜索:在策略空间中直接搜索来得到最佳策略,本质上一个优化问题
与基于值函数的方法的区别:策略搜索可以不需要值函数,直接优化策略
基于策略函数的深度强化学习:
可以直接用深度神经网络来表示一个参数化的从状态空间到动作空间的映射函数:
- 最优的策略是使得在每个状态的总回报最大的策略,因此策略搜索的目标函数为
- 策略搜索:通过梯度上升的方法来优化参数 θ 使得目标函数 J(θ) 最大
- 参数 θ 优化的方向是使得总回报 G(τ) 越大的轨迹 τ 的概率
也越大
- 参数 θ 优化的方向是使得总回报 G(τ) 越大的轨迹 τ 的概率
- 策略梯度
是从时刻 t 作为起始时刻收到的总回报
14.3.1 REINFORCE 算法
REINFORCE 算法:通过采样的方法(通过随机游走的方法采集多个轨迹)来近似策略梯度中的期望
- 结合随机梯度上升算法,每次采集一条轨迹,计算每个时刻的梯度并更新参数
- 主要缺点:不同路径之间的方差很大,导致训练不稳定,这是在高维空间中使用蒙特卡罗采样方法的通病
14.3.2 带基准线的 REINFORCE 算法
减少方差的方法:
- 引入一个控制变量:假设要顾及函数 f 的期望,为了减少 f 的方差,引入一个已知期望的函数 g,令
- 方差
为函数 f 和 g 的相关性,相关性越高,则
的方差越小
- 方差
带基准线的 REINFORCE 算法(引入基线):
- 在每个时刻 t,其策略梯度为
- 为了减小策略梯度的方差,引入一个和
无关的基准函数
的选择:
- 为了可以有效地减小方差,
和
越相关越好,一个很自然的选择是令
为值函数
- 值函数
是未知的,因此可以用一个可学习的函数
来近似值函数
- 目标函数
- 目标函数
- 策略函数参数 t 的梯度
- 为了可以有效地减小方差,
14.4 演员-评论员算法
演员-评论员算法:是一种结合策略梯度和时序差分学习的强化学习方法
- 演员 actor:策略函数
,即学习一个策略来得到尽量高的回报
- 评论员 critic:值函数 ,对当前策略的值函数进行估计,即评估演员的好坏
借助于值函数,演员-评论员算法可以进行单步更新参数,不需要等到回合结束才进行更新
算法过程:
- 开始训练时,演员随机表演,评论员随机打分
- 每步更新中,分别进行策略函数
和值函数
的学习
- 评论员调整打分标准:更新参数
使得值函数
接近于估计的真实回报
,即
- 演员调整自己的表演策略:将值函数
作为基线函数来更新参数
,减少策略梯度的方差
- 评论员调整打分标准:更新参数
14.5 总结和深入阅读
强化学习与监督学习的区别:
- 强化学习的样本通过不断与环境进行交互产生,即试错学习;而监督学习的样本由人工收集并标注
- 强化学习的反馈信息只有奖励,并且是延迟的,而监督学习需要明确的指导信息(每一个状态对应的动作)
强化学习算法:
- 基于值函数的方法:在策略更新时可能会导致值函数的改变比较大,对收敛性有一定的影响
- 基于策略函数的方法:在策略更新时更加平稳些,但因为策略函数的解空间比较大,难以进行充分的采样,导致方差比较大,并容易收敛到局部最优解
- 演员-评论员算法:融合了以上两种方法,取长补短,有更好的收敛性
不同的强化学习算法的优化步骤都可以分为 3 步:
- 执行策略,生成样本
- 估计回报
- 更新策略
深度强化学习:
- 基于值函数的深度强化学习:深度 Q 网络
- 同时使用策略网络和值网络来近似策略函数和值函数
习题
习题 14-1 让一个智能体通过强化学习来学习走迷宫,如果智能体走出迷宫,奖励为 +1,其他状态奖励为 0. 智能体的目标是最大化期望回报.当折扣率 𝛾 = 1 时, 智能体是否能学会走迷宫的技巧?如何改进?
习题 14-2 证明公式(14.25)
习题 14-3 证明公式(14.27)和公式(14.28)会收敛到最优解
习题 14-4 比较证明公式(14.21)和公式(14.38)的不同之处.
习题 14-5 分析SARSA算法和Q学习算法的不同
习题 14-6 证明公式(14.54)
习题 14-7 在演员-评论员算法和生成对抗网络中都有两个可学习的模型,其中一个模型用来评估另一个模型的质量.请分析演员-评论员算法和生成对抗网络在学习方式上的异同点