介绍
强化学习 Reinforcement Learning 简称 RL,是一种机器学习方法,旨在训练智能体(或机器人)从环境中获得经验,通过试错的方式逐渐提高其决策能力,以实现特定的目标。强化学习涉及到智能体与环境之间不断的互动和反馈,智能体根据环境的反馈调整其行为策略,逐渐学习到最优的决策方案。强化学习在众多领域中都有广泛的应用,如自动驾驶、游戏策略、金融交易、机器人控制等。
强化学习背后的思想是:
一个agetn(智能体/机器人)从“与环境交互并从行动中获取奖励”中学习——这类似于人的成长过程。
Tips:
强化学习解决特定类型的问题,其中决策是连续的,并且目标是长期的,例如游戏、机器人、资源管理或物流。
重要概念
- agent: 可以通过反复试验学习并做出决策的实体,它从周围环境中获得奖励和惩罚。
- environment: 虚拟的世界,用于 agent 通过与其交互来学习。
- state: 对 environment 的完整描述。
- action: agent 执行的操作
- reward: 分为激励和惩罚,是 RL 的基本因素,用于告诉 agent 它的 action 产生的结果是好还是坏。
RL 过程简介
框架
过程
强化学习过程:状态、行动、奖励和下一个状态的循环:
- agent 从 environment 中获取第一个 state S0;
- 基于 S0,agent 采取第一个 action A0;
- environment 给出一个新的 state S1;
- environment 给出 reward R1;
循环以上 state、action 和 reward 步骤。
agent 的目的是最大化累积奖励。
马尔可夫性质
RL 过程称为马尔可夫决策过程 (MDP)。
MDP 意味着 agent 只需要根据当前的状态来决定采取什么行动,而不是之前采取的所有状态和行动的历史。
基于回报假设的中心思想
RL 的目的是获取累积的奖励,期望获取最大累积收益。
-
基本公式
G t = R t + 1 + R t + 2 + . . . G_t = R_{t+1} + R_{t+2} + ... Gt=Rt+1+Rt+2+...
等价于:
G t = ∑ k = 0 T R t + k + 1 G_t =\sum_{k=0}^T R_{t+k+1} Gt=k=0∑TRt+k+1 -
Jerry & Tom 的故事
这里 agent 是 Jerry。
Jerry 想要获得最大的累积奖励就是要吃掉所有的奶酪,但是越靠近 Tom 的地方危险就越大——即使那边有更多的奶酪,我们可能也不愿意先去冒这个风险,因为一旦被 Tom 抓住就无法再获取更多的奶酪,从而无法达成 Jerry 的目标。
所以再这里我们引入奖励系数
γ
\gamma
γ:
- 危险越大,回报系数 γ \gamma γ 越小,Jerry 更关心短期奖励;
- 危险越小,回报系数 γ \gamma γ 越大,Jerry 更关心长期奖励;
- 改良后的公式
G t = ∑ k = 0 ∞ γ k R t + k + 1 w h e r e γ ∈ [ 0 , 1 ) G_t =\sum_{k=0}^\infty \gamma^k R_{t+k+1} where \gamma \in [0, 1) Gt=k=0∑∞γkRt+k+1whereγ∈[0,1)
R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . R_{t+1} + \gamma R_{t+2} + \gamma ^2 R_{t+3} + ... Rt+1+γRt+2+γ2Rt+3+...
本公式是在基本公式的基础上增加了奖励的权重:在每一步中都会按照权重的时间指数形式对奖励重新计算。
随着时间的增加,Jerry 离 Tom 越近未来奖励发生的可能性越小。
任务模型
- 场景任务模型
这个模型中存在明确的开始点和结束点,例如游戏:进入游戏是开始点,游戏结束(被打死,或者玩到通关)是结束点。 - 连续任务模型
在这个模型中一旦开始就会一直持续下去——除非主动退出,例如投资股票,需要不断的关注时长的变化。
两种解决思路
针对任务模型,这里提出了两种解决思路:
- 蒙特卡洛方法
- 时间差学习方法
- 蒙特卡洛方法(Monte Carlo)
在场景的结束时获取所有的奖励,并计算总体奖励
1.1 步骤
- 游戏开始作为场景的起点;
- 游戏结束作为场景的终点;
- 在终点我们会得到一个 stats、actions、rewords和新states 的列表;
- 根据公式计算总奖励;
- 根据上面的公式更新 V ( s t ) V(st) V(st);
- 开始新一轮的游戏;
随着运行次数增多,我们的 Jerry 会吃得越来越多。
- 时间差学习方法(TD Temporal Difference Learning)
- TD 的方法与蒙特卡洛方法相反,它不会等待场景的结束在去计算,而是在每一步中评估未来预期最大奖励:它为当前经历的状态 S 评估价值 V;
- TD的核心思想是评估:通过将其更新为一步目标来更新先前的估计 V ( S t ) V(S_t) V(St);
- 两者之间的区别
- TD 不会等待场景的结束,而是在(t+1)时刻后都会使用得到的奖励值 R t + 1 R_{t+1} Rt+1来评估当前状态下的价值 V ( S t + 1 ) V(S_{t+1}) V(St+1);
- 蒙特卡洛方法则需要经历多个周期才能得到理想的效果。
探索与开发的平衡
- 探索:探索是指获取环境中更多的信息;
- 开发:是从已知的信息中获取最大的收益;
我们时可要记住 Jerry 的目标是最大化预期的累积收益。
在上面这个例子中,如果只有开发,则如果 Jerry 周边有无穷的小奶酪的话,Jerry 仅会关注周围的小奶酪,而不会获取到远处的大奶酪;假如在这里加入一些探索,Jerry 就能获得更大的奖励。
所以我们需要指定一个规则,用于对探索和开发的平衡。
三种方法
- 基于价值的方法
- 基于策略的方法
- 基于模型的方法
- 基于价值的方法
目标: 优化价值函数
V
(
s
)
V(s)
V(s)
价值函数 告诉我们在 agent 每个状态下的最大未来预期回报。
公式:
每个状态的价值是 agent 从该状态开始在未来期望累积的奖励总额。
agent 利用价值函数来选择每一步的状态:它会选择最大价值的状态。
- 基于策略的方法
目标: 直接优化策略函数
π
(
s
)
\pi(s)
π(s)
策略: 是在给定的时间定义的 agent 的行为
公式:
通过策略函数,可以得到状态和最佳操作的映射关系。
两种策略:
- 确定性:一个给定的状态总是返回相同的操作;
- 随机性:输出操作的分布概率;
- 基于模型的方法
不同的环境有不同的模型,所以需要针对每种环境建立一个模型。
Q-Learning & Deep Q-Learning
Q-Learning: 采用传统的算法去产生 Q table;
Deep Q-Learning: 采用神经网络产生 Q value;
参考文档
[1] https://medium.com/free-code-camp/an-introduction-to-reinforcement-learning-4339519de419