说实话,第一次翻开这本《强化学习的数学原理》中文版的时候,我心里是有点发怵的。市面上讲强化学习的书不少,但大多走“先把框架搭起来”的路线,公式能省就省,概念解释靠比喻硬撑。这一本不一样,它从第一章就开始老老实实地跟你谈概率、期望、随机变量,连“奖励”这种东西都要用数学语言重新定义一遍。如果你只是想调个库跑个demo,这章可能显得有点绕;但如果你想让自己的思维真正跟上强化学习这套体系,第一章基本概念就是你绕不过去的门槛。
这章的内容其实不复杂,来来回回就是几个名词:状态、动作、奖励、策略、回报、马尔可夫性质。但奇怪的地方在于,这些词你单独看全都认识,组合在一起就开始打架。我第一遍读完,脑子里只留下一个模糊的感觉:强化学习就是让智能体靠试错去最大化累积奖励。等我把笔记重新整理完,才意识到那一堆看似简单的关系背后,藏着整套理论大厦的地基。这篇笔记我尽量用“人话”把原书的推导逻辑串一遍,再附上我自己踩过的坑和记笔记时的一些习惯,希望能帮你少走点弯路。
1. 这本书的定位,以及为什么第一章这么“劝退”
先说说我对这本书的整体印象。它是一本典型的“原理型”教材,作者默认你已经掌握了概率论、线性代数和一点点最优化方法。它不像某些入门书那样,恨不得把强化学习包装成“调参的艺术”,而是从数学上把每个概念的定义、符号、性质讲清楚。换句话说,它回答的是“强化学习为什么是这样的”,而不是“强化学习怎么用”。
第一章作为全书起点的分量非常重,因为它要把后续所有章节都会用到的“通用语言”一次性建立起来。这一章出现的符号和定义,后面的策略迭代、价值迭代、时序差分、策略梯度全都要反复使用。如果第一章糊弄过去,到后面你会发现自己连公式都读不顺畅。我见过不少同学跳过前两章直接看DQN,结果回头补基础时花了更多时间。
从内容组织上看,第一章先定义了智能体与环境交互的框架,然后引入策略、回报、状态转移这些核心要素,最后把问题归结为“找一个策略来最大化期望回报”。这个逻辑链条非常清晰,但作为初学者,容易在“期望”这个环节卡住。原书在这里毫不含糊地使用了概率分布的语言,这正是它和市面上大部分科普书拉开差距的地方。
我个人觉得,读这一章时要做好“被符号轰炸”的心理准备,但不必恐慌。你不需要一次记住所有符号,你需要的是理解每一个符号所代表的“物理意义”。最好的办法是手里拿一支笔,把公式抄一遍,再用自己的话在旁边批注。我的笔记里就写满了这种“人话注释”,后面我会分享几个例子。
2. 核心概念拆解:从交互框架到数学定义
2.1 智能体与环境:到底谁在跟谁交互
强化学习的标准场景是一个智能体(agent)在一个环境(environment)中不断地做决策。书里用一个循环图来描述这个过程:在时刻 t,智能体观察当前状态 S_t,根据策略选择动作 A_t,环境收到动作后转移到新状态 S_{t+1},同时返回一个奖励 R_{t+1},然后进入下一轮。
这个流程看似朴素,但里面藏着几个容易混淆的细节。首先,状态和奖励的时间戳是错位的:你在 t 时刻做出动作,但对应的奖励和下一时刻状态是在 t+1 才出现。原书用 R_{t+1} 和 S_{t+1} 而不是 R_t 和 S_t,就是为了强调“奖励和转移是在动作之后发生的”。我第一次看的时候在这里栽过跟头,老是想着“作了动作A_t之后应该得到R_t”,后来才意识到这是记号习惯问题,不是本质区别,但顺着记号去理解问题会顺畅很多。
其次,环境并不一定都是“上帝视角”的。在数学原理层面,我们通常假设环境是概率性的,也就是说状态转移不是确定的。比如你在某个状态执行同一个动作,环境可能以 0.7 的概率把你送到状态A,以 0.3 的概率送到状态B。这个概率就叫转移概率,记作 p(s’|s, a)。这个概念在后面的贝尔曼方程里会反复出现,第一章先打个底。
提示:记不住符号的时候,试着把 p(s’|s,a) 读成“我知道当前状态s、选择了动作a之后,下一个状态是s’的可能性有多大”。这样读几遍,符号就不再是负担了。
2.2 奖励与回报:别把短视收益和长期收益搞混
奖励(reward)是强化学习里唯一来自环境的“反馈信号”,本质是一个实数。它告诉智能体“刚才那步走得好不好”。书里特别强调,奖励是即时反馈,不代表长期收益。真正决定智能体行为优劣的,是回报(return),也就是从当前时刻开始,未来所有奖励的某种累积。
这里就引入了折扣因子(discount factor)γ,取值范围是[0,1]。回报的定义是:
G_t = R_{t+1} + γ R_{t+2} + γ^2 R_{t+3} + ... = Σ_{k=0}^{∞} γ^k R_{t+k+1}
这个公式我每看一次都会重新感叹它的精妙。γ 在里面的作用,一方面是为了让无穷级数收敛(当γ<1时),另一方面代表了“智能体看待未来收益的耐心程度”。γ越接近1,说明智能体越看重长远收益;γ越接近0,说明它越短视,只在乎眼前利益。这个解释虽然简单,但实操中很多人忽略了一个问题:γ的取值会直接影响最优策略。比如在围棋这类回合制任务里,你希望γ=1,因为每一手棋对未来都很关键;但在股票交易这种场景里,γ设得太高可能导致策略过于激进,因为远期收益不确定性太大。
在叙事上,我习惯把回报想成“你从这一局游戏开始,到游戏结束为止,能累积到的总得分”。如果一盘棋下到中盘,你说“现在的回报是多少”,就是指从这步起一路走到终局的得分总和。这个类比帮我在理解值函数时省了很大力气。
2.3 策略:智能体的行为法则
策略(policy)是强化学习的核心对象,它定义了智能体在每个状态下如何选择动作。书里区分了确定性策略和随机性策略。确定性策略就是“看到状态s,就输出固定的动作a”,记作 a = π(s)。随机性策略则是给定状态s之后,在动作空间上定义一个概率分布,记作 π(a|s),表示“在状态s下选择动作a的概率”。
读到随机性策略的时候,很多人会问:为什么非要随机?确定性地选最优动作不好吗?书里的回答很直接:在很多场景下你不知道哪个动作是最优的,随机探索是获取信息的手段;而且在和对手博弈时,随机策略可以避免被预判。从数学上说,随机策略把策略从“函数”推广到了“条件分布”,这让后续的政策梯度方法有了施展空间。
我在笔记里给这两种策略各画了一个小例子:一个格子世界里有四个动作,确定性策略在S3时选“向右”,随机性策略则在S3时给“向上 0.1、向下 0.2、向左 0.3、向右 0.4”的概率。这样一对比,符号的含义马上具象了。
2.4 轨迹与回合:一次交互的时间线
把“状态-动作-奖励-下一状态”这条链拉长,就得到轨迹(trajectory)的概念。一般来说,一条轨迹长这样:
S_0, A_0, R_1, S_1, A_1, R_2, S_2, A_2, R_3, ...
有些任务有天然的终止状态,比如下棋分出胜负、游戏通关或失败,这样的任务叫回合制任务(episodic tasks)。另一些任务没有终止概念,比如机器人持续控制、投资组合管理,它们叫持续任务(continuing tasks)。
这两种任务的差别会在后续章节里造成算法上的分支。回合制任务好办,因为每局结束就可以算一次完整回报;持续任务就比较麻烦,没有终止点,回报公式里γ<1就成了保证收敛的必要条件。第一章在这里虽然只是简单提了一嘴,但它是后面理解蒙特卡洛方法和时序差分方法的前提。
3. 马尔可夫性质与马尔可夫决策过程
3.1 马尔可夫性质:为什么“过去不重要”
马尔可夫性质是整个强化学习最核心的假设,没有之一。它的定义是:给定当前状态 S_t,未来状态 S_{t+1} 的条件概率分布与历史状态 S_0, S_1, ..., S_{t-1} 无关。用公式表示就是:
p(S_{t+1} | S_t, S_{t-1}, ..., S_0, A_t) = p(S_{t+1} | S_t, A_t)
我一开始看到这个公式,觉得这是废话——当前状态当然决定了未来。后来才意识到,这个假设其实非常强。它要求智能体在决策时不需要翻旧账,所有影响未来的信息都必须被压缩到“当前状态”这一条里。换句话说,你要想让强化学习工作,就得把“你从哪来”“你之前做过什么”这些信息全部塞进状态定义里。
举一个经典例子:在自动驾驶场景中,如果“当前状态”只包含车辆此刻的速度和位置,那显然不满足马尔可夫性质,因为前几秒的加速度轨迹会影响未来安全性。要想满足马尔可夫性质,就得把状态定义扩充到包含最近几帧的速度变化、路面信息等。原书援引了“朝向目标的路径”这种直观例子,但真正理解这个假设的分量,还是得靠自己在设计状态表示时踩坑。
3.2 MDP的五元组,以及一个被忽略的细节
把马尔可夫性质嫁接到交互框架上,就得到了马尔可夫决策过程(Markov Decision Process,MDP)。书里给出的五元组是:
- S:状态集合
- A:动作集合
- p:状态转移概率,p(s’|s,a)
- r:奖励函数,r(s,a) 或 r(s,a,s’)
- γ:折扣因子
我特别想提醒你注意奖励函数的记号。很多教材把奖励函数写成 r(s,a),表示“在状态s下选择动作a的期望即时奖励”;但在实际采样中,你真正观察到的奖励 R_{t+1} 是在转移到 S_{t+1} 之后才得到的数值,它可能取决于转移到的具体目的地 s’,也就是 r(s,a,s’)。书里在第一章使用的是比较通用的形式,没有把问题复杂化,但你在自行阅读文献时,一定要先搞清楚作者到底用的是哪一种记号,否则很容易在推导贝尔曼方程时看晕。
MDP的优雅之处在于,它把“环境”这个概念完全抽象成了一个转移概率分布和一个奖励函数。一旦你用这两个对象描述你的问题,强化学习就变成了“在已知或未知的MDP上寻找最优策略”的数学问题。这种抽象能力,正是原理型教材带给你的最大收益。
3.3 为什么回报被定义成随机变量
这是第一章里我最初没跟上的地方:G_t 明明在公式里是一串奖励相加,怎么就成了随机变量?后来我理解了,关键在于你站在 t 时刻往回看,未来状态 S_{t+1}, S_{t+2}, ... 在你眼中是服从转移概率分布的随机变量。只要状态是随机的,对应奖励也是随机的,那么 G_t 作为一个“由随机变量组成的函数”,自然就是随机变量。
这个认识非常关键。因为如果 G_t 是随机变量,那我们说“某个策略好”就不能单看一次运行的回报,而要看它的期望值。这正是下一章引入状态价值函数 v_π(s) 的铺垫。换句话说,第一章在拼命告诉你:强化学习的一切决策标准,都是在“期望”意义下定义的。你可以把 G_t 的随机性类比成“掷骰子决定下一局的分数”——你不能因为某次掷出高分就认定这个骰子好,得看很多次之后的总分期望。
4. 学习笔记方法论:我是怎么啃下这一章的
4.1 用两栏笔记法对抗符号轰炸
面对这种公式密集的章节,我强烈推荐用两栏笔记法。右栏照抄原书的公式和定义,左栏用完全口语化的语言解释这个公式“到底在说什么”。比如说,右栏写:
π(a|s) = Pr(A_t = a | S_t = s)
左栏我就写:“在状态s时,选择动作a的概率是多少,这就是策略。策略不是建议,而是一张‘各状态选动作概率表’。”这种把公式翻译成“人话”的过程,能逼着你确认自己是不是真的懂了,还是只是在嘴上跟着念。
我的经验是,单纯看一遍书能记住的东西非常少,但如果你把每个定义都亲手抄一遍、再用自己的话解释一遍,这章内容基本就焊死在脑子里了。每次看到一个符号忘记了含义,先翻自己的左栏,会比翻原书更快、更有效。
4.2 画时间线图,理清S_t、A_t、R_{t+1} 的顺序
不少初学者容易被时间戳绕晕,我的解决办法是画一条时间轴:
... → S_t → A_t → R_{t+1} → S_{t+1} → A_{t+1} → R_{t+2} → ...
然后同时标出“决策时刻t”和“奖励产生时刻t+1”。这样你会很直观地看到,S_t 和 A_t 是“因”,R_{t+1} 和 S_{t+1} 是“果”。这个因果顺序是理解 MDP 动态过程的关键,也是后面推导值函数递推关系时不会搞错下标的基础。笔记里我特意用红色标注了“奖励总是比动作晚一拍出现”,后来这个习惯帮我避免了不少低级错误。
4.3 写代码验证概念,哪怕只是伪代码
数学书看累了,我会写点小代码来验证概念。比如用Python生成一个简单的随机策略,遍历一个3×3格子世界的所有状态,计算每个状态下的期望单步奖励(其实就是做一个查表操作)。这个练习本质上没有任何算法含量,但它能让你亲手实现“策略是分布”“奖励是随机变量”这些概念,把抽象的公式变成可触摸的对象。
import numpy as np # 简化版:4个状态,2个动作 # P[s][a] = 下一个状态的概率分布 # R[s][a] = 即时奖励期望 P = np.zeros((4, 2, 4)) R = np.zeros((4, 2)) # 填充示例数据:状态0,动作0 -> 以0.8到状态1,0.2停留状态0 P[0][0][1] = 0.8 P[0][0][0] = 0.2 R[0][0] = 1.0 # 随机策略:每个状态等概率选择动作 policy = np.ones((4, 2)) / 2 # 计算期望即时奖励 expected_reward = np.zeros(4) for s in range(4): for a in range(2): expected_reward[s] += policy[s][a] * R[s][a] print(expected_reward)这代码没什么实际用途,但对建立“策略是概率”“期望即时奖励是策略和奖励函数的乘积和”这两个直觉非常有效。我第一次跑通的时候,突然就觉得书里的公式没那么“飘”了。
4.4 常见易错点自查清单
第一遍学习时,我整理了四个最容易出错的地方,你可以用来对照自检:
- 把 R_t 和 R_{t+1} 搞混。很多推导的起点是 G_t = R_{t+1} + γG_{t+1},如果你对错时间下标,整个贝尔曼方程就废了。
- 随机策略 π(a|s) 和状态转移概率 p(s’|s,a) 搞混。前者是智能体控制的动作选择概率,后者是环境控制的状态转移概率,两者方向完全相反——一个是从状态到动作,一个是从状态动作到新状态。
- 忽视回报是随机变量。不少人下意识把 G_t 当常数对待,等到计算期望时才反应过来,推导已经乱套了。
- 不理解马尔可夫性质的“信息压缩”含义。总想着“增加历史信息”是万能的,却忽略了状态设计是前提,不满足马尔可夫性质时,所有依赖该假设的理论结论都不再成立。
5. 阅读顺序与搭配练习的建议
第一章不是那种可以一目十行刷完的章节。我建议你至少读两遍:第一遍快速浏览,抓住“强化学习解决什么问题、有哪些要素、目标是什么”这条主干;第二遍精读,争取把每个定义和公式都推导、复述一遍。两遍之间可以间隔两三天,让潜意识有个消化期,这个过程作用比你想的大。
如果你还想找点配套练习,原书后面一般会附一些思考题,务必动手做。另外可以自己去构造一个极小的MDP(比如2个状态、2个动作),把所有概念套进去算一遍。比如计算某个固定策略下的期望回报、验证马尔可夫性质成立与否、改变γ观察回报差异。这种“手算+编程”的组合拳,对初学者来说比任何视频课都管用。
我自己的节奏是每天晚上花40分钟读加抄写,两天读完第一章,然后用一个下午做练习和代码验证。整个过程不赶进度,因为我清楚这一章对后面所有章节的影响是决定性的。
6. 从基本概念到算法思维:我的几点体会
读完第一章,最让我受用的其实并不是某个具体公式,而是它建立起的“算法思维”框架。强化学习本质上是在不确定环境中用数值优化方法做决策,第一章把“智能体”“环境”“奖励”这些词从文学描述翻译成了数学对象,这让你在后续面对复杂算法时,思维方式会完全不一样。
有一点必须提醒:这一章的叙事风格比较“定义先行”,它先把每个概念扔给你,再慢慢展开联系。很多读者会觉得前面几页内容零散,好像每个概念都是孤立的。这时候不要慌,等你读到回报定义里出现策略、走到价值函数章节再看到期望时,前面那些概念会像拼图一样自动拼起来。这种“先给零件,再组装机器”的安排,其实是数学书的典型节奏,跟它较劲不如顺着它走。
在实操层面,我建议你在读完这一章后,至少做到三件事:能独立写出 MDP 五元组对应的具体问题实例;能在给定策略下计算一条轨迹的回报序列;能解释清楚为什么回报必须做折扣处理。这三件事如果都能顺利完成,你已经拿到后续章节的入场券了。
我个人在实际学习中的一个小技巧是,每当读到新概念,就回头翻一眼第一章里对应的定义,把新知识和旧定义捆在一起记忆。比如读到策略梯度方法里的策略 π 时,我会默想一遍“这是状态到动作的条件概率分布”,而不是只把它当成一个抽象记号。这样一路下来,第一章的内容会被反复激活,不会背了后面忘了前面。
另外说一个让很多人忽视的细节:书上有些公式的证明过程里,会用到概率论的分解技巧,比如把联合概率写成条件概率的乘积。如果你把第一章读完觉得哪里卡壳,大概率是概率基础不牢。这时候回头补一下条件概率、全期望公式和随机变量的函数期望,能省出后面十倍的复习时间。千万别觉得这些是“高数”的老知识就不管,强化学习里到处都是它们的影子。
希望这篇笔记能帮你在读这本《强化学习的数学原理》时少一点发怵、多一点方向。这一章只是起点,但它决定你能走多远。