ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

强化学习与最优控制:一本书讲透序列决策的来龙去脉

强化学习与最优控制:一本书讲透序列决策的来龙去脉

《强化学习:序列决策与最优控制》我读了整整两周,从第一页起就被一个问题钩住了:为什么市面上那么多强化学习教材,有的偏数学推导,有的偏代码调参,很少有一本能把“序列决策”和“最优控制”这两条本来同源、后来分家、现在又重新汇合的脉络讲清楚。清华大学出版社这次引进的这本书,恰恰是冲着这个痛点来的。如果你已经在DQN、PPO这些算法里摸爬滚打过一阵,或者你从控制理论那边过来想搞懂强化学习到底在干什么,这本书值得你认真读一遍。

先说一下这本书的基本情况。它不是一本纯粹的算法手册,也不是一本纯理论的数学专著,它的主线是把强化学习放到“序列决策”的大框架里,再和“最优控制”的方法论对照着讲。这种写法在国内外教材里都不多见。李航、周志华这些老师的书各有侧重,但很少有一本书会花一整章去讲动态规划、最优控制里的经典方法,再告诉你这些方法和Q-learning、策略梯度之间到底是什么关系。这本书做了这件事,而且做得相当系统。

1. 内容整体设计与思路拆解

1.1 全书结构:从“决策”到“控制”再到“算法”的三段式推进

这本书的结构我读完以后觉得非常清晰,大致可以分成三大块。

第一块是基础理论,重点在马尔可夫决策过程(MDP)、贝尔曼方程、策略评估和策略改进这些概念。别看这些名词听起来基础,书里对它们的处理方式和很多入门书完全不同。比如讲贝尔曼方程,它不只给你一个公式,而是从“当前回报+未来价值的折扣”这个直觉出发,一步步推导出贝尔曼期望方程和贝尔曼最优方程,然后把两者放在一起对比,说明它们分别对应策略评估和策略优化这两个阶段。这种讲法让读者能真正理解为什么Q-learning里的更新公式长那个样子,而不是死记硬背。

第二块是最优控制方法的系统讲解。这块是我个人觉得全书最有价值的部分。书里花了很大篇幅讲动态规划、变分法、极大值原理、HJB方程这些经典控制理论的核心工具,然后明确告诉你:强化学习里所谓的“求解MDP”,本质上就是在不知道环境模型的情况下,近似求解最优控制问题。我读到这里的时候有种豁然开朗的感觉,以前在代码里反复调的折扣因子、奖励函数,原来都和最优控制理论里的某些参数一一对应。

第三块是深度强化学习算法。这部分的覆盖面很全,从DQN系列的改进(Double DQN、Dueling DQN、Prioritized Replay),到策略梯度方法(REINFORCE、PPO、TRPO),再到Actor-Critic架构下的SAC、TD3这些主流算法,每一类都给足了篇幅。特别值得一提的是,书里介绍每个算法的时候都会回到第二块讲的最优控制视角去解释,比如它说SAC本质上就是在用熵正则化来平滑最优控制解中的非唯一性问题。这个视角我很喜欢,至少我在其他书里没见到过这么清晰的表述。

1.2 这本书适合谁读,不适合谁读

我的经验是,这本书最适合两类人。一类是有一定代码经验、想补理论短板的算法工程师。如果你已经用PPO跑通过几个环境,但说不清楚“为什么PPO要加clip”或者“为什么GAE里的lambda通常取0.95”,这本书会帮你把这些问号一个个拉直。另一类是从控制工程、机器人领域转过来的人。你们学过PID、学过LQR,甚至写过MPC,现在想理解强化学习怎么和这些方法衔接,这本书的对照式写法简直是为你量身定做的。

说实话,纯零基础的小白读这本书会比较吃力。书里默认读者有概率论和线性代数的基础,一些推导过程跳步也比较多(这符合外版教材的风格)。我的建议是,如果你是纯新手,先找一本入门书(比如Sutton和Barto的《强化学习》)打个底,再来读这本。当然,如果你数学底子很好,直接硬啃也不是不行,只是要做好查资料的准备。

1.3 与市面上其他强化学习图书的对比

我把这本书和几本常见的书做了个对比,方便你根据自己的情况做判断:

对比维度本书Sutton《强化学习》李航《统计学习方法》一般实战类书籍
数学推导深度较深,最优控制视角贯穿始终深,偏随机近似与策略迭代理论中深,推导清晰但偏统计浅,以代码为主
最优控制内容完整一章,动态规划/HJB均有极少无无
代码覆盖部分章节有,侧重原理无无重,大量环境改写
可读性中等偏难中等偏难中等轻松
适合场景系统攻理论打理论基础作公式速查快速上手调参

这个表格只是我个人的读书感受,不一定客观,但你大概能从里面看出这本书的定位:它是一本给想“深入”而非“上手”的人看的书。

2. 核心细节解析与实操要点

2.1 马尔可夫性与回报设计的深层含义

马尔可夫性听起来是个很数学的概念,书里给了严格定义:状态s_t包含了所有历史信息,给定当前状态,未来的状态和过去无关。但真正让我觉得值得反复读的是它对“状态表示”这个工程问题的讨论。

在实际做强化学习项目的时候,你真正要解决的首要问题其实是:“怎么把一个实际问题抽象成MDP?”这里面有两个关键点。第一,状态空间的设计要满足马尔可夫性,也就是说当前状态要能足够描述系统的全部相关信息。万一状态设计不好,比如做自动驾驶的时候只把车辆的当前速度和位置作为状态,完全不管前轮转角,那这个MDP的马尔可夫性就被破坏了,RL算法在经验回放里训练时就会因为违背独立同分布假设而效果暴跌。第二,奖励函数的设计。书里特别强调了一点:奖励函数应该直接刻画你真正想优化的目标,不应该试图通过稀疏奖励加上大量人工规则去“诱导”模型学到你想要的行为。我自己在项目里也踩过这个坑,总想着加一堆势函数来引导,结果policy学到了利用规则漏洞的畸形行为,后来改成稀疏奖励加合适折扣因子,效果反而好了。

2.2 折扣因子与回报:从数学直觉到实际调参

关于折扣因子γ,书里给出的解释是我见过最清晰的:γ越小,智能体越短视,越关心眼前的奖励;γ越接近1,智能体越看重长期回报,但随之而来的是方差增大和收敛变慢。

实际工程中γ的选择直接影响算法的稳定性和收敛速度。书里虽然没有给出放之四海而皆准的数值,但我自己做项目时的经验是:

  • 单步效果明显的任务(比如CartPole倒立摆):γ取0.9到0.95就够了,太高反而收敛慢
  • 长期规划类任务(比如下棋、多级决策):γ通常取0.99甚至0.995
  • 连续控制类任务(比如机器人关节控制):γ取0.98到0.99之间比较合适

我个人建议你在调试的时候不要死守一个γ值不动,最好做一个简单的扫描实验:训练到中期,画一下不同γ下的回报曲线,选那个“曲线末端还能保持上升趋势”的值。这是个小技巧,书里没写,但实测下来非常有用。

2.3 状态空间与动作空间的连续化处理

这本书花了大量篇幅讨论连续状态和连续动作问题,我认为这恰恰是它与一些偏传统教材拉开差距的地方。传统强化学习教材讨论的很多例子都是表格型的离散问题,你直接将Q(s,a)存成一个表格就行。但真实工程里,你的状态几乎一定是连续的(比如无人机的姿态和位置),动作也大概率是连续的(比如电机力矩)。

书中从函数逼近讲到策略参数化,引入了深度神经网络作为函数近似器。这部分有一个重要的推导我建议你仔细看:为什么使用非线性函数逼近器的时候,直接使用TD误差更新Q网络会不稳定?简单说就是对同一个状态动作对(s,a),我们同时更新了目标值中的Q(s‘,a’),导致目标值在移动,你的Q网络在被追赶,目标值也在不断变化,这个过程会发散。理解了这一层,你就能明白为什么DQN要引入目标网络,为什么目标网络参数要周期性同步。这些工程细节书上没有展开到很细,但核心原理讲到了,配合代码就很顺。

3. 实操过程与核心环节实现

3.1 从算法到代码:这本书代码实践的打开方式

这本书不是一本以代码为核心的书,但它在介绍每个算法之后都会给出一些关键的伪代码或框架性代码。我刚拿到这本书的时候就在想,光看不练肯定不行,所以我给自己定了个规矩:每读完一个算法章节,就到OpenAI Gym或者PyBullet里把这个算法实现一遍。

书里讲DQN的章节给了我很好的指引。我按照书里的框架,把网络结构、经验回放、目标网络、探索策略这几个模块分开写,整个实现大约200行代码。我最喜欢的是书里对探索策略的描述:前期用较高的ε来充分探索,后期逐步降低ε来利用学到的策略。这个思想随处可见,但真正落地时有个细节容易被忽略——ε的退火过程不要太快,否则策略会被初始时的随机行为锁死,很难跳出局部最优。

我把我复现DQN时的关键训练循环贴在下面(这里以伪代码形式展示,避免版权问题):

# 训练循环的伪代码结构 for episode in range(total_episodes): state = env.reset() episode_reward = 0 while not done: # 基于epsilon-greedy选择动作 if random.random() < epsilon: action = env.action_space.sample() else: action = argmax(q_net(state Tensor)) next_state, reward, done = env.step(action) # 存经验,做回放 replay_buffer.add(state, action, reward, next_state, done) if len(replay_buffer) > batch_size: sample_batch = replay_buffer.sample(batch_size) # 计算TD目标,更新网络 state = next_state episode_reward += reward # 目标网络软同步或硬同步

这个流程如果你已经写过应该看着非常眼熟,但如果你之前只是照着别人的完整代码跑过,现在自己动手从零写一次,你一定会遇到很多问题:维度对不上、网络输出和动作空间的映射搞反、经验回放里状态转换写错等等。解决这些问题本身就是学习的过程,也是我强烈建议你边读边动手的原因。

3.2 “最优控制方法”章节的笔记心得

这本书最独特的部分就是最优控制那一章。我当时学控制理论的时候用的是《现代控制理论》那本教材,李雅普诺夫、线性二次型调节器(LQR)这些东西都是当数学工具学的,完全没想过它们和强化学习的关联。这本书把我过去割裂的知识打通了。

举个例子,书中把最优控制的动态规划原理和强化学习的贝尔曼最优性原理放在一起对照。从数学形式上说,它们几乎是同一个东西,唯一的差别在于:经典最优控制假设系统模型已知(所以可以直接计算期望),而强化学习不假设模型已知,只能通过采样来估计。这个差异其实决定了两个领域后续发展路径完全不同。最优控制发展出model predictive control这类以模型为基础的算法,强化学习发展出model-free的Q-learning、policy gradient等算法。

书中还有一张对比表(我记得大概是这个意思),把LQR、MPC和RL放在一起比了以下几个方面:

方法需要模型?处理非线性?处理高维状态?计算实时性
LQR需要弱(线性化后近似)中等很好
MPC需要中等有限(优化开销大)中等
无模型RL不需要强强(靠网络表示)训练慢,推理快

这张表帮助我理解了一个很重要的问题:什么时候该用RL,什么时候用MPC更好。如果你的系统模型足够准确,状态维度不高,MPC可能又快又稳;但当系统非线性强、模型不准、状态维度高到传统方法无计可施时,RL才有用武之地。这个判断能力,对工作中做技术选型特别有价值。

3.3 基于模型强化学习与无模型方法的对比实验

这本书对基于模型的强化学习MBRL用了相当大的篇幅。我过去一直不太理解MBRL到底比model-free好在哪里,直到看到书中关于“样本效率”的讨论。model-free的PPO动辄就需要几百万步的交互才能学到像样的策略,如果你的任务是真实机器人,这种样本消耗完全不可接受。MBRL的方法(比如PETS、Dreamer这些思路)让智能体先从交互中学习一个环境动态模型,再基于这个模型做规划或生成虚拟样本,样本效率可以高出几个数量级。

我自己在读书期间用书里描述的思路,在一个模拟的机械臂环境中试了试MBRL。最初训练一个dynamics model(用神经网络拟合状态转移函数),然后在这个模型上做模型预测路径积分控制,也就是MPPI这个思路,效果确实让我惊讶:几百个真实样本就能让机械臂学会到达目标点,而用PPO往往要几万步才能到类似水平。当然,MBRL也有它的问题——学到的模型可能不准,模型误差会被策略利用,最终在真实环境中失效。书里对这个问题也有讨论,并引入了“模型不确定性估计”这个概念,这给我打开了新的思路。

3.4 离线强化学习与IQL:不与环境交互的算法思路

书里的离线强化学习章节给我的冲击也很大。传统强化学习假设智能体必须实时与环境交互、获取经验、更新策略,但很多实际场景不允许这样做:比如在医疗、自动驾驶、工业控制这些领域,收集一次新数据要冒巨大风险,你只能利用已有的数据集来学习策略。

离线强化学习要解决的核心问题是分布偏移:你用来学习策略的数据集和数据收集时用的行为策略所对应的状态分布不一致,一旦策略更新偏离了行为策略覆盖的区域,Q值的估计就会极其不准。书中详细介绍了Implicit Q-Learning(IQL)这个思路,它通过只使用数据集里的状态-动作对来更新Q函数,避免了对未见动作的过估计。我读的时候就在想,这个技术以后在具身智能或者大模型+决策的领域肯定会有越来越广泛的应用,因为收集真实交互数据的成本实在太贵了。

如果你对IQL感兴趣,我的建议是动手用d3rlpy这个库跑一跑它的实现。这个库专门做离线强化学习,内置了IQL、CQL、TD3+BC等一堆算法,可以直接在Gym的MuJoCo环境里跑。我试过用IQL在halfcheetah-medium-v2数据集上训练,最后拿到的策略比直接在数据集上用BC(行为克隆)好很多,尤其在长距离任务上,BC策略会逐渐偏离,而IQL能学到更稳定的长期行为。这种对比非常直观,也让我对书中的理论讲解有了感性认知。

注意,离线强化学习的调参比在线RL麻烦不少。IQL里的expectile参数(我用0.7到0.9)对最终性能影响很大,温度参数也要跟着数据集质量一起调。我的经验是先固定expectile为0.8,把温度从1往下扫,看哪个值的评估Q值曲线最稳定。

4. 常见问题与排查技巧实录

4.1 读书过程中最容易卡壳的地方

这本书毕竟不是畅销小说,有些地方的密度很高。我梳理了几个读者大概率会卡壳的点,以及对应的对策。

第一个卡壳点是策略梯度定理的推导。书里用了很多期望运算,对我来说一开始跟上节奏有点吃力。如果你也卡在这里,我给你的建议是:先放过推导细节,只看结果,明白策略梯度的本质是在“增加高回报动作的概率、降低低回报动作的概率”,然后直接去代码里看REINFORCE的实现,理解log_prob和reward的乘积到底在做什么,再回头看推导就顺多了。

第二个卡壳点是Actor-Critic架构里两个网络的耦合关系。很多人搞不懂为什么明明有Q函数了还要有一个策略网络。我的理解是这样:Critic负责估计当前策略的优劣,Actor负责在这个估计的指引下找到更好的策略。Critic越准,Actor的更新方向就越可靠;Actor越新,Critic需要重新评估的对象也一直在变。这种互相促进、互相制约的关系,是深入理解现代强化学习算法的关键。

第三个卡壳点是PPO里的clip范围为什么有效。书里讲了PPO的替代目标和clip机制,但没有把背后的直觉说得特别透。我自己是后来看到一篇博客才想明白的:clip的本质是限制新旧策略的比值不要太离谱,让每次更新都保持在一个“信托区域”内,避免一步走太远导致策略崩掉。想通了这一点,你就明白为什么PPO比原始的策略梯度方法稳定那么多,也就能理解为什么它是目前工业界最常用的强化学习算法之一。

4.2 从理论到实践:复现算法时的典型问题速查

我在边读书边写代码的过程中积攒了一些典型的踩坑经验,分享给你,应该能帮你省下几个晚上的时间:

问题表现根本原因排查方法
训练过程loss直接NaN学习率过大或网络输出无上界降低学习率到1e-4级别,检查奖励是否过大
DQN训练一段时间后突然崩掉目标网络更新太频繁,Q值被过高估计将目标网络同步周期改大,或换成软更新τ=0.005
PPO训练时动作分布塌缩成一个点clip范围配合学习率导致策略过早锁定调大clip_range或降低actor学习率
奖励曲线上下震荡幅度极大折扣因子设置过大,加上GAE的λ过大降低γ到0.98,λ降到0.9
SAC训练时熵系数自己变成负数自动调熵的target_entropy和动作维度不匹配检查target_entropy设置,通常设为-dim(A)

4.3 值得注意的实践心得

这本书读完以后,我最大的感受就是:理论扎实能让你少走很多弯路。以前我在项目里调参,完全靠试错和玄学,看到不收敛就换学习率,再不行就换一个算法。读了这本书以后,我开始理解每个超参数在算法里到底作用于什么环节,出问题时能推理出是哪个模块出了问题,调参的效率提升了一大截。

举一个具体例子。我在做一个多AGV路径规划项目的时候(这也是我读这本书的直接动机),一开始用的是最原始的DQN,结果训练非常不稳定,AGV之间的碰撞惩罚多了以后Q值直接发散。读完书里关于off-policy学习和经验回放的部分后我意识到,问题出在奖励函数设计:碰撞的惩罚太多,而单步的正常奖励太少,导致TD误差方差过大。我重新设计了奖励,把碰撞惩罚的绝对值降下来,同时引入目标距离差作为势函数奖励,问题迎刃而解。这本书没教我怎么设计AGV奖励函数,但它教了我从TD误差的构成上去诊断问题,这就是理论的用处。

4.4 在Gazebo仿真环境中应用书本知识的经验

刚好书里也涉及了机器人仿真的内容,我顺便聊一下Gazebo里做强化学习的坑。很多人一上来就想在Gazebo里直接训练,这个思路非常危险。Gazebo的物理引擎本身就带延迟,加上渲染和通信的耗时,每一步交互可能都要100毫秒以上,训练一个策略往往需要数百万步交互,时间成本不可接受。

我个人的建议是三层递进训练法:先在Gym或PyBullet这类轻量级环境里验证算法逻辑和超参,再把策略迁移到Gazebo环境里做Sim-to-Sim验证,最后才考虑Sim-to-Real。书里对domain randomization的讲解正好用得上,它通过随机化仿真环境的物理参数(质量、摩擦系数、控制延迟等)来提高策略的泛化性,这是解决Gazebo到真实机器人迁移问题的最实用手段之一。

如果你是在Gazebo里做多AGV的路径规划,还有一个额外的坑:你不仅要训练出能避开障碍物的策略,还要考虑多车协同带来的非平稳性——其他AGV的决策会影响当前AGV的状态转移,这让环境不再是一个常规的MDP。对于这类问题,书里的多智能体强化学习章节有讨论(虽然比较简略),更实用的方法是用集中训练分布执行的框架,比如MAPPO。书里虽然没写MAPPO的实现,但你理解了PPO以后,再去看MAPPO的代码会轻松很多。

5. 因果强化学习:这本书藏得最深的一条暗线

5.1 为什么要从因果视角重新审视强化学习

我读完全书以后发现,它用了不少隐晦的方式在铺垫因果推断和强化学习结合的前景。传统强化学习只利用相关性——观察到状态、执行动作、看到回报之间的统计关联。但问题是:相关不一定等于因果。比如一个智能体在训练环境里发现天黑后道路湿滑(数据关联),实际上湿滑的可能是路面本身并没有下雨,它学到的策略可能只是记忆了某段时间序列的模式,一旦时间变了策略就崩掉。如果它学到的是“刚下过雨→路面湿滑→需要减速”这个因果结构,那么即使改变一天中的时间,策略仍然稳定。

书里将这个思想延伸到解释为什么一些强化学习算法在仿真环境里表现优异,但到了现实世界泛化性很差。核心原因就是模型学到的是虚假相关,没有catch到环境背后的因果机制。这点对做真实机器人、自动驾驶的同学来说极其致命。

5.2 CRL的核心机制:把因果工具嵌入RL流程

书中虽然对CRL展开不算特别多,但它指出了一个方向:因果推断工具可以嵌入强化学习的几个关键环节中,用来提升样本效率、策略泛化和可解释性。

具体来说有这么几个方向值得关注。第一是把因果结构作为先验知识引入表示学习。比如你可以在状态表示学习中加入一个因果图,约束encoder的表示维度之间不要出现没有因果解释的复杂依赖,这样学到的表示更紧凑也更利于后续学习。第二是因果归因在奖励设计中的应用。比如你设计一个稀疏奖励任务时,可以利用因果归因方法判断哪些状态维度对最终奖励的贡献是因果性的,从而把这些维度合成一个更密度的奖励信号,避免策略在无关维度上浪费探索。第三是干预(intervention)在off-policy评估中的应用。离线数据里存在选择偏差,通过因果推断中的do算子能更准确地评估一个新策略在目标环境里的表现,这个方向的研究这两年热度提升很快。

书里把这些问题留给读者去思考,没有深入展开,但对已经具备一定经验的读者来说,这个点拨作用已经足够。我自己的体会是,强化学习接下来的一个重要演进方向,一定是越来越多的因果推断方法进入RL流程,这本书敏锐地抓住了这个趋势,这也让我对它的评价更高了一层。

6. 如何最大化利用这本书:一份个人建议的阅读路线

6.1 如果你是一名算法工程师

我认为你的路线应该这样走:先精读第一、二、三章(MDP和动态规划),这部分能帮你补齐理论短板。然后直接跳到深度强化学习算法的章节,把每个算法的数学目标和代码结构对应起来看。最优控制那一章可以放到最后读,它更多是给你一个更高维度的视角,不直接影响你写代码,但会影响你做方案选型。

6.2 如果你是一名控制工程师

我给你的建议是完全相反的:从最优控制那一章开始读。你已经有很强的控制理论功底,从这个熟悉的领域切入,再去看强化学习如何通过采样和函数逼近来近似最优控制解,会非常丝滑。读的时候建议你把书里的无模型RL算法当作“不知道模型时的自适应控制”来理解,这样整个知识迁移会很自然。

6.3 如果这本书是你研究生涯的第一本强化学习书

说实话,我劝你谨慎。这本书不是不能作为入门书,但你需要准备好在数学推导上反复磨。我的建议是配合Sutton的书一起读,以Sutton为主、这本书为辅,遇到不理解的地方再看这本书的推导。另外,你至少要在读前三章的时候同步做一些简单的代码练习,比如用动态规划求解Gridworld问题,别光看不练,不然真的很难形成直觉。

6.4 是否需要动手复现书中的每个算法

我的建议是:不要把每个算法都完整写一遍(时间成本太高),但至少要手动复现这几类算法各一个代表:DQN、PPO、SAC,外加IQL。这四个算法覆盖了off-policy值函数方法、on-policy策略梯度方法、最大熵Actor-Critic方法和离线RL方法。这四个写下来,你对现代强化学习的核心范式就有了完整的概念。书里的每个算法都有清晰的伪代码和关键细节说明,配合GitHub上一些开源实现(比如cleanrl),复现起来效率会很高。

提醒:复现的时候不要太迷信默认超参数。不同环境对超参的敏感度差别很大,书里的参数只是起点,不是终点。最终判断好不好还是看训练曲线和控制效果,不要用“这是论文里的设置”来拒绝调整。

7. 这本书的局限性与其他书互补阅读的建议

毫无疑问,这本书也有它自己的局限。我在读的过程中感受到这么几点:第一,它对多智能体强化学习的覆盖相对较浅,如果你专门做多智能体方向,还需要另找资料;第二,它没有专门章节讲模仿学习、逆强化学习这些和序列决策紧密相关的主题,而这些在真实应用中常常和强化学习配合使用;第三,它不太涉及当前大模型时代的RLHF(人类反馈强化学习),这个技术现在红得发紫,但这本书成书时间较早;第四,它没有详细讲到分布式RL框架(比如IMPALA、Ape-X这些),这些内容如果靠自己去查论文,需要花费不少时间。

我的意思是,这本书解决的是“地基”问题,它不是强化学习的百科全书。用最优控制的框架把强化学习的核心方法论讲清楚,帮读者建立一个统一的视角,这件事它完成得很好。剩余的各种前沿主题,本来就该靠论文和专题书去补充。没有一本书是万能的,重要的是读完之后你获得了什么样的认识框架。

从这个意义上来说,这本书很适合放在案头作为常备参考。第一遍读是通过它建立体系,之后每做一个项目,都回头翻翻相关章节,往往会有新的体会。像我最近在做逆强化学习相关的工作,就翻回去重读了回报设计相关的小节,依然觉得有收获。

8. 写在最后:一些实操上的建议

我个人在实际使用中印象最深的一个体会是:这本书可能改变你调试RL算法的方式。没读它之前,我调试PPO就是调整学习率和clip参数,效果不好就加网络宽度,再不行就换算法,完全是经验驱动的盲调。读完它以后再调试,我会先问自己:现在的问题是在策略评估环节(Critic不知道什么样的动作是好的),还是在策略优化环节(Actor的更新方向受到方差影响过大)?这个诊断式的思维切换,帮我节省了大量试错时间。这也是为什么我特别推荐工程师认真读一读这本书——表面上你在读理论,实际上你在获得一种更高效的调试方法论。

最后再分享一个读这本书的小技巧:每一章读完以后,不要急着进入下一章,试着用自己的话把这一章的核心公式从头到尾推导一遍。不用一字不差,逻辑链条通顺就行。我的经验是,第一次“默写”的时候往往会有卡壳,而那个卡壳的地方,恰恰是你还没有真正理解的地方。回头翻书补上,比多看一遍的收获大得多。祝你阅读愉快,也欢迎你读完以后和我交流读书心得。

返回列表