Coursera_Machine_Learning_笔记10_强化学习_Reinforcement
1- 什么是强化学习
强化学习(Reinforcement Learning, RL)是一种机器学习范式,智能体(Agent)通过与环境(Environment)交互,学习如何通过试错来最大化累积奖励(Cumulative Reward)。其关键思想是,指定一个价值函数,告诉模型什么时候表现良好,什么时候表现不佳,而不必像监督学习那样告诉算法每个输入的正确输出是什么。强化学习目前主要应用于机器人、供应链优化、股票交易、游戏、大语言模型(LLM)等行业。
举个例子,机器狗穿越障碍物的控制过程中,障碍物可能是台阶,也可能是凹凸不平的地面,机器狗需要根据自己的位置、姿态执行什么样的动作控制,在这个过程中我们没有办法穷举机器狗在可能遇到的所有场景,即没有办法通过监督学习算法告诉机器狗在什么场景应该执行什么样的动作。但是我们可以通过奖励机制,让机器狗自己尽可能的尝试前进,当机器狗表现得当,给予一定奖励,表面不好,给予一定惩罚,通过这种方式使机器狗表现越来越好。
2- 强化学习中的概念介绍
下图是一个火星探测器的例子,它可以去不同地方利用不同传感器来分析不同地方的岩石,可去不同地方拍摄照片供科学家观看。火星探测器的位置在强化学习中被称为状态,探测器当前所在的状态为 4。假设状态 1 采集的图片是科学家最想看到的,奖励设置为 100,状态 6 的图片也勉强可以接受,奖励 40。那么探测器在状态 4 可以执行动作向左走、向右走。当完成某项最终任务并获得奖励的状态称为终止状态。
关于强化学习解决的问题有一个比喻,当前脚下有 5 元钱,智能体可以选择向下伸手去拿,或者花半个小时走到另一个地方去拿一张 10 元的钞票,智能体怎么选?
概念介绍:
- 状态(State,s):描述智能体当前所处的环境,如智能体当前的位置、姿态等
- 终止状态(terminal state):算法进入某状态后,获得奖励,任务终止,如设备断电了,一天工作结束了
- 奖励(Reward, R):有时又称为即时回报,环境对智能体动作的即时反馈,智能体完成某项动作,算法给予的积分
- 动作(action, a):智能体在某一状态下可以采取的动作,如向左/右移动
- 折扣系数 (discount factorγ):折扣系数是一个小于 1 的数字,它反映的是算法对延迟得到回报的忍受度下降,回报对第 1 步的奖励系数是 1,第 2 步获得的奖励会乘以折扣系数,第 3 步获得的奖励会乘以折扣系数的 2 次方…
- 回报(return):强化学习的目标不是最大化单次即时回报,而是最大化整个交互过程中的累积回报。累积回报通常定义为未来回报的总和,可能通过折扣因子(Discount Factor,γ)进行加权。回报的计算方式如下图所示,其中 R1 为当前状态的奖励,R2 为下一状态的奖励。
策略(Policy,π):指导智能体在给定状态下选择动作的规则,如始终选择更接近的奖励,始终追求更大的奖励,先获取只隔一步的奖励等。不同应用场景相关概念举例如下图:
强化学习的最终目标是:找到一种策略,告诉算法在每个状态下采取什么动作(a =π(s)),使回报最大化。强化学习的这种根据当前状态决策动作的过程被称为马尔可夫决策过程(MDP),其核心思想是未来取决于现在,而不取决于进入当前状态之前发生的任何事情。
3- 价值函数定义
价值函数评估某一状态或状态 - 动作对的长期回报,价值函数通常用大写字母 Q 表示(有的文献也用 Q* 表示),它是当前所处的状态及在该状态下执行的动作的函数,在状态 s 下只执行一次动作 a ,之后的动作达到最佳状态,Q 就是这一步动作的回报。
例如,当智能体处于状态 2 时,执行向右 ->向左 ->向左,然后到达状态 1(终端状态),Q(2,→) 的值为 12.5(这个路径为在状态 2 下向右移动的最佳路径,12.5 为在状态 2 下向右移动的最大回报);又如智能体处于状态 2,执行向左移动,到达终端状态 1 的 Q(2,←) 的值为 50(这个路径为在状态 2 下向左移动的最佳路径,50 为在状态 2 下向左移动的最大回报)。依此类推计算所有状态的向左/向右移动的价值函数,如下图第行方框所示。
下图第一行方框的箭头为本示例的最佳策略,从下图计算出每个状态下的 Q 值后可以看出,不同状态下的能取得最大回报的动作从整个策略来看也是最佳动作。在状态 s 下的最大回报值就是价值函数 Q(s,a) 的最大值,在状态 s 下执行的最佳动作,也是最优策略中在 s 状态下的动作,即π(s)=a。
4- 贝尔曼方程
贝尔曼方程可以用于计算价值函数,符号定义:
- s:智能体当前状态
- a:基于当前状态执行的动作
- R(s):当前状态下的奖励
- s’:执行动作 a 后到达的下一个状态
- a’:在状态 s’ 下执行的动作
那么贝尔曼方程定义为:
下图以状态 2 执行向右的动作,以及状态 4 执行向左的动作为例分别计算了价值函数,其中γ 取 0.5。当到达终止状态时 Q(s,a)=R(s)。
贝尔曼方程有两部分组成,第一部分是当前状态的回报值,第二部分是折扣系数乘以下一个状态的最大价值(Q(s’,a’))。不断迭代循环代入第二部分,可以看出,Q(s,a) 即是 s 状态下的最大回报值。
下图展示了计算状态 4 下向左移动的 Q(4,←) 的计算方法。
5- 强化学习在随机环境下的表示方法
在某些场景下机器人并不总会完全按照期望的方式去行动,比如算法告诉机器人向左移动,但机器人可能因为滑倒了,就没有再按既定的指令向左移动,而改为向右移动,我们称这种情况为随机环境。机器人总会有一定概率不按指令行动,比如 10% 的概率。
例如,机器人在状态 4 时,大概率会按状态 4-3-2-1 的路径行进,但也会存在一定概率按 4-3-4-3-2-1,或者 4-5-6 的路径去执行。那么预期回报则应该取不同情况的回报的均值,表示方法参考下图公式。
回到贝尔曼方程,当智能体在状态 3 时,动作指令为向左,那么下一个状态可能是 2,也可能是 4,那么原贝尔曼方程在随机环境下则应改为:
其中 E 为 Expected,实际取的是两种状态的概率均值。
6- 连续状态空间描述
前面的类容主要假设了智能体有 6 个状态,这 6 个状态是离散的状态,意味着智能体只能处于这 6 个位置,但大多数智能体是处于 6 个以上或任意离散数量的位置,甚至处于大量连续位置中的任何一个。
以自动驾驶卡车为例,卡车的状态变量包括纵向位置、横向位置、角度、纵向速度、横向速度、角速度 6 个变量,这些变量可以是其取值范围内的任意值。此时状态 s 则是一个向量:
对于自动驾驶直升机,其状态则包括三个方向的位置,三个方向的角度,三个方向的速度及角速度。那么其状态 s 表示如下:
7- 连续状态空间应用示例 - 月球着陆器
下面以一个月球着陆器的小游戏展开算法介绍,下图紫色小设备为月球着陆器,我们期望它平稳的落在两个旗帜之间,那么关于它的位置包括横向和纵向两个方向,以及两个方向的速度,另外还有一个偏转角度及角速度的状态,l 表示左侧支架先着陆,r 表示右侧支架先着陆,l 和 r 的取值为 0 或 1。其状态向量描述如下图所示。
着陆器有 4 个可执行的动作:
- 什么也不做,随着重力自然下降
- 点燃左侧助推器,将着陆器向右推
- 点燃下方助推器(主助推器),将着陆器向上推
- 点燃右侧助推器,将着陆器向左推
定义奖励函数 R(s):
- 设法着陆,根据到达着陆中心时的飞行情况奖励 100-140
- 向地面移动获得额外的奖励
- 坠机 -100
- 软着陆奖励 100
- 侧边支架先着陆奖励 10
- 点燃主助推器 -0.3
- 点燃侧边助推器 -0.03
算法的最终目标是:学习获得一个策略π,使得在给定状态 s 下选择动作 a=π(s),使最大限度的获得最大回报总和。
8- 学习状态 - 动作价值函数
核心思想是训练一个神经网络来计算价值函数 Q(s,a),这个神经网络的输入为向量
动作的 Q(s,a),最终选择 Q(s,a) 最高的 a 执行。
基于贝尔曼方程构建训练数据集,前面提过强化学习不是一个监督学习算法,这里要做的不是输入一个状态,让算法给出一个动作,而是输入一个状态 - 动作对,输出一个 Q(s,a)。如下图所示,输入 X 对应 (s,a),输出 Y(即 f(x))为
学习算法过程参考下图描述,首先给 Q(s,a) 赋一个随机值,这个过程是给所有状态 - 动作对 (s,a) 的 Q 值进行初始化,通常是从一个小的均匀分布如 [-0.1,0.1] 中抽取,以确保每个动作在该状态下的初始回报估计有所差异,从而鼓励智能体自由探索。
完成初始化后,重复执行下列过程:
- 启动着陆器(智能体),与环境交互,进行数据收集,这个过程具体为观察当前状态 s ,根据初始化的 Q 值,选择动作 a ,执行动作 a, 环境返回 R(s) 及 s’,获取 (s,a,R(s),s’)
- 将 1 万次动作数据 (s,a,R(s),s’) 存入元组中,这个元组被称为回放缓冲区(Replay Buffer)
- 利用执行的 1 万次动作的数据训练神经网络,完成训练后使用神经网络计算当前状态 - 动作的 Q 值,其中输入 x=(s,a),目标输出 y=
- 训练后得到的新的神经网络获得的 Q 值为
- 用新的
只要运行算法足够长时间,不断更新 Q 值,算法就会对 Q(s,a) 有一个较好的预测,这样就可以用它来为机器选择一个状态 s 下的较好的动作,学会在复杂环境中选择最优动作序列。这个学习算法有时被称为 DQN 算法(Deep Q Network)。
对上述神经网络改进,提升运行效率,改进如下:
- 将输入由 (s,a) 改为 s
- 将输出的 1 个神经元 Q(s,a),改为对应 4 个具体动作的 Q(s,a) 的 4 个神经元
经过这样的优化,原来对 1 个状态需要训练 4 次的神经网络只需要训练 1 次,在求取 4 个动作的 Q(s,a) 中的最大值时也更方便。
9- ε- 贪婪策略在强化学习中的应用
贪婪策略是指在每个状态下,智能体始终选择当前下能带来最大回报的动作。数学上,贪婪策略可以表示为:
- π(s):在状态 s 下选择的动作。
- Q(s,a):状态 - 动作价值函数,表示在状态 s 下执行动作 a 的预期累积回报。
贪婪策略的核心思想是 " 短视 " 地选择当前最优动作,而不考虑未来的可能变化。
在价值函数学习中,智能体通过更新 Q 表(或 Q 函数)来估计每个状态 - 动作对的长期回报。贪婪策略在以下场景中发挥作用:
在训练过程中的动作选择时,智能体可能使用 ε- 贪婪策略(ε-Greedy Policy)来平衡探索和执行贪婪动作。具体来说,在第 8 部分内容的循环体的第 1)步:
- 以概率 1-ε 的概率选择贪婪动作(即对应的动作)。
- 以概率 ε 的概率随机选择动作,以探索未知的可能性。
算法通过参数ε 控制探索概率,ε通常取值在 0 到 1 之间。在训练初期,**通常较大以鼓励探索,ε 设置为 1;随着训练进行,**ε逐渐减小以倾向于利用已知的最优动作,如减小到 0.01。
10- 迷你批处理(Mini-batch)与软更新
1. 迷你批处理
迷你批处理可以加速强化学习算法,这个方法也适用于监督学习,帮助加速训练神经网络、训练线性回归/逻辑回归模型。在强化学习中,Mini-batch(小批量)是一种用于训练神经网络(如 DQN 或其他基于深度学习的强化学习算法)的技术,通过从经验回放缓冲区(Replay Buffer)中随机采样一小部分经验数据(通常是几十到几百个样本,称为 batch_size)来更新模型参数。它是深度学习中常用的批量梯度下降的变种,旨在提高训练效率和稳定性。
具体动作是每次迭代训练从回放缓冲区中取 batch_size 个元组,构成一个 Mini-batch,进行训练,而不是一次性将整个 "1 万 " 条数据一次性用于训练,一次训练的数据量太大,会大大降低训练效率。
2. 软更新
在 set Q =
11- 小结
强化学习作为机器学习的一个核心分支,已从理论转向实际应用和大规模集成,广泛应用于机器人与自动驾驶领域,尤其与大语言模型(LLM)的结合成为 2025 年的热点。尽管强化学习在研究领域备受瞩目,但实际部署中占比不足 5%,工程应用中仍以监督学习和无监督学习为主。
截止到本篇内容,机器学习(ML)的内容告一段落,如果前期没有相关学习基础的同学可以从第 1 篇开始启浏览,内容之前有一些由浅入深。有了机器学习的基础,接下来,将开启深度学习相关内容更新,内容大致包括构建深度神经网络、卷积神经网络、LSTM、变形器等等,都是些耳熟能详的名词,一起期待吧!