阐述、总结【动手学强化学习】章节内容的学习情况,复现并理解代码。
初次接触强化学习的内容,主要学习参考以下两大部分:
(1)【动手学强化学习】——上海交大,张伟楠教授团队
① 教学视频
② 教材内容
(2)【强化学习的数学原理】——西湖大学,赵世钰教授团队
① 教学视频
② B站大佬代码实现
非常感谢大佬们的倾囊相授,后续章节的学习以实现代码的复现为目标,充分理解背后的数学原理
此专栏只为记录个人学习情况,若有不对之处,欢迎评论区交流讨论。
理解一个新型的事物、技术,个人习惯性地采用“5W1H”的方式建立知识体系框架,下面以个人理解的方式去进行强化学习这项技术内涵的阐述。
一、What:什么是强化学习?
- 阐述①:
广泛地讲,强化学习是机器通过与环境交互来实现目标的一种计算方法。机器和环境的一轮交互是指,机器在环境的一个状态下做一个动作决策,把这个动作作用到环境当中,这个环境发生相应的改变并且将相应的奖励反馈和下一轮状态传回机器。这种交互是迭代进行的,机器的目标是最大化在多轮交互过程中获得的累积奖励的期望。强化学习用智能体(agent)这个概念来表示做决策的机器。相比于有监督学习中的“模型”,强化学习中的“智能体”强调机器不但可以感知周围的环境信息,还可以通过做决策来直接改变这个环境,而不只是给出一些预测信号。
- 阐述②:
强化学习是一种机器学习的方法,它让软件代理在与环境的交互中学习如何采取行动以最大化某种累积奖励。这种学习方式不需要监督,也不需要大量标记的数据集,而是通过试错来不断优化其行为策略。
二、Where&When:什么时候、什么场景适合使用强化学习?
涉及到什么场景使用该技术,其实答案的导向就偏向于回答“强化学习适合解决什么类型的问题?”‘
答:序贯决策问题!
- 什么是序贯决策问题?
序贯决策问题是指在面对具有随机性或不确定性的动态系统时,需要按照时间顺序做出一系列决策以达到最优或接近最优的结果。这类问题的特点在于,决策过程不是一次性的,而是在一段时间内,根据系统的当前状态和历史信息,持续地做出决策。每次决策都会影响到系统未来的状态,因此决策者必须考虑长期后果,而不仅仅是短期利益。
- 典型示例场景
背景:
假设你是一家零售店的经理,负责管理某种商品的库存。这种商品的需求量是随机的,每天可能会有所不同。你的目标是保持适当的库存水平,既不过多占用资金,又不会因为缺货而失去销售机会。
决策过程:
- 初始状态:假设今天早上你有100件商品的库存。
- 需求预测:根据历史数据,你可以预测明天的需求量。假设需求量的概率分布如下:
- 需求为0件的概率为0.1
- 需求为50件的概率为0.3
- 需求为100件的概率为0.4
- 需求为150件的概率为0.2
- 决策点:你需要决定是否订购更多商品,以及订购多少。假设你可以从供应商那里订购任意数量的商品,每件商品的进价为10元,售价为20元。未售出的商品会在一天结束时以每件5元的价格处理掉。
- 执行决策:假设你决定订购50件商品,那么今天的总库存为150件。
- 反馈:假设实际需求为100件,那么今天结束后你将剩余50件库存。
- 下一个决策点:明天早上,你需要再次根据新的库存水平和最新的需求预测,决定是否订购更多商品。
目标:
你的目标是最大化利润。利润由销售收入减去进货成本和处理未售出商品的成本组成。
三、Why:为什么要使用强化学习?
明确了“强化学习”面向的问题,其实就可以将“why”的问题转化为“强化学习技术在处理序贯决策问题上具备哪些优势?”
- 解决序贯决策问题的常见方法
①动态规划(Dynamic Programming, DP)
②蒙特卡罗方法(Monte Carlo Methods)
③模拟退火(Simulated Annealing)
④遗传算法(Genetic Algorithms, GA)
⑤混合整数线性规划(Mixed Integer Linear Programming, MILP)
⑥基于树的方法(Tree-Based Methods)
⑦……
- 强化学习技术的优势
1. 适应性强
无需先验知识:强化学习可以从零开始学习,不需要预先知道环境的动态特性或模型。这对于那些难以建模或模型未知的复杂系统尤其有用。
在线学习:强化学习可以在线学习,即在与环境交互的过程中不断优化策略。这使得它能够适应环境的变化,即使环境是非静态的或动态变化的,适应随机性和不确定性的环境。
2. 泛化能力强
处理高维状态空间:通过使用函数近似(如深度神经网络),强化学习可以处理高维状态空间和动作空间,这是传统动态规划方法难以做到的。
处理连续动作空间:许多现实世界的问题涉及连续的动作空间,强化学习通过策略梯度方法等技术可以有效处理这些情况。
3. 自动优化
自动发现最优策略:强化学习通过试错和奖励信号自动发现最优策略,而不需要人工设计复杂的规则或启发式方法。
4. 可扩展性强
并行计算:强化学习算法可以很容易地并行化,利用现代计算资源(如GPU和分布式计算)来加速训练过程。
5. 实时决策
实时适应:强化学习可以实现实时决策,适用于需要快速响应的场景,如自动驾驶、实时推荐系统等。
增量学习:强化学习可以进行增量学习,即在新数据到来时逐步更新模型,而不需要重新训练整个模型。
四、Who:哪些人适合学习、使用强化学习?
这个回答就因人而异了,个人理解,学习并使用一门技术主要还是面向待解决的问题,上面讨论过强化学习适合解决“序贯决策”问题,因此问题可转化为“如何判断待解决问题是否具有序贯决策属性?”
- 判断流程
判断一个问题是否具有序贯决策属性,关键在于识别该问题是否需要在多个时间点上根据当前状态和历史信息做出一系列决策,以达到某个长期目标。
1. 时间维度
多阶段决策:问题是否需要在多个时间点上做出决策,而不是一次性完成?
动态变化:问题的环境或状态是否会随时间变化?
2. 状态和动作
状态:是否存在一个或多个可以描述当前情境的状态变量?
动作:在每个时间点上,是否有多个可能的决策或动作可供选择?
3. 反馈机制
即时反馈:每个决策或动作是否会立即产生反馈(如奖励或惩罚)?
长期影响:每个决策或动作是否会影响未来状态,进而影响未来的决策?
4. 目标函数
优化目标:是否存在一个明确的目标函数,需要通过一系列决策来最大化或最小化?
累积效应:目标函数是否依赖于一系列决策的累积效果,而不仅仅是单次决策的效果?
5. 不确定性
随机性:环境或状态的变化是否具有随机性或不确定性?
部分可观测性:是否只能部分观测到环境状态,而不是完全可观测?
- 典型示例
例1:库存管理
- 时间维度:每天需要决定是否订购商品。
- 状态:当前库存水平、需求预测。
- 动作:订购数量。
- 反馈机制:每天的销售情况和剩余库存。
- 目标函数:最大化利润。
- 不确定性:需求量是随机的。
例2:自动驾驶
- 时间维度:每秒需要做出驾驶决策。
- 状态:车辆位置、速度、周围交通状况。
- 动作:加速、减速、转向。
- 反馈机制:车辆的实时状态和环境变化。
- 目标函数:安全、高效地到达目的地。
- 不确定性:交通状况和行人行为是随机的。
例3:股票交易
- 时间维度:每天或每小时需要决定买卖操作。
- 状态:当前股价、市场趋势、经济指标。
- 动作:买入、卖出、持有。
- 反馈机制:股票价格变动和交易结果。
- 目标函数:最大化投资回报。
- 不确定性:市场波动是随机的。
从后续章节的学习而言,应用强化学习的第一步就是将待解决问题建模为“马尔可夫决策过程(MDP)”
五、How:如何使用强化学习?
针对“How”的问题说来话长了,毕竟不同领域的问题各有不同,面向的问题可能导致环境、模型构建天差地别,同时可使用的硬件条件、软件环境、算力等也存在差异。
因此对于这个问题的回答就是“学习好技术的基础原理,从典型算法上手复现,再针对自身领域问题因地制宜!”