大模型通识 / AI 理论基础
10. 强化学习:模型怎样从行动和反馈中改进
原文备份 · 第 11 / 14 篇 · 查看极客时间原知识库 ↗
本篇目录 · 10 节
来源:AI 理论基础
复习助手已经能生成题目,现在需要决定下一步:继续出一道用户已经很熟悉的题,还是复习刚才答错的概念?
简单题可能让用户立刻答对,页面上的正确率很好看;复习薄弱概念可能暂时更费力,却有机会改善之后的表现。系统如果只追求“这一题答对”,与追求“一段时间后掌握得更好”,可能会作出不同选择。
这就进入了强化学习,Reinforcement Learning,RL关心的问题:在环境中选择行动,观察后果和奖励,利用这些经验改进之后的决策。
本篇用构造的复习场景讲清基本机制,不声称某种出题顺序已经被教育实验验证。你不需要训练模型,只需能读懂表格、做简单加减乘法。我们也不会把一个普通复习应用都改造成强化学习系统;这个例子用来说明它适合描述什么问题。
先分清:谁在行动,谁在提供反馈
在这个例子中,需要学习决策的是出题助手,不是正在做题的用户。用户的反应是助手所处环境的一部分。
| 概念 | 在复习例子中怎样理解 |
|---|---|
| 智能体,agent | 负责选择下一步复习活动的系统 |
| 环境,environment | 用户、题库以及活动执行后产生反馈的过程 |
| 状态,state | 对当前决策情形的描述,例如剩余时间、相关学习进展 |
| 动作,action | 选择复习薄弱概念、出一道题、结束本次练习等 |
| 奖励,reward | 按事先定义的规则,给行动后果计算的一个数值 |
| 策略,policy | 根据当前可用信息选择动作的规则 |
动作会影响之后的情形。出过一道题以后,用户可能学到了新内容,也可能只是猜对,还可能感到疲劳;下一次决策面对的条件就变了。强化学习通常关注这种行动与后续结果相互关联的过程。《动手学深度学习》:状态、动作、转移与奖励
这里还有一个容易忽略的区别:助手并不能直接读取用户真实掌握了什么。它通常只能得到答题记录、耗时等观察,observation,再据此估计当前情况。为了建立简单模型,我们可能把这些记录组成一个“状态表示”,但它未必包含决定未来结果所需的全部信息。Hugging Face:状态与观察的区别
所以,用户连续答对两题,不必然意味着概念已经掌握。观察不完整,是决策本身需要面对的困难。
策略不是一句口号,而是怎样选动作
“帮用户学得更好”是目标,还不是可执行的策略。
一种具体策略可以是:最近两次都错了,就先展示概念解释;最近都答对,就换一道更难的题。另一种策略可以为几个动作分配概率,例如当前有 70% 的概率选择复习薄弱概念,30% 的概率选择巩固题。
前者可以是人工写出的规则,后者也不必然是学出来的。是否属于强化学习,关键在于是否利用行动、奖励及后续情形的经验,改进策略或支持策略的估计。
如果采用监督式模仿,示范可以直接告诉系统“在这种情形下应选择哪一个动作”。奖励反馈通常只评价实际选出的动作及其后果,不会同时告诉你没选的那些动作会怎样。系统的选择还会影响之后收集到什么经验,这也是探索会变得重要的原因。
一次交互可以画成下面这样:
当前观察 → 策略选择动作 → 环境执行并发生变化
↑ ↓
└──────── 新观察、奖励 ──────────┘
收集这些经历 → 训练更新策略或价值估计 → 再进行选择
第一圈表示执行任务;下面那条更新路径表示学习。已经训练好的策略也可以在参数固定的情况下运行,并不要求每执行一个动作就立即改一次模型。
奖励与回报:不要只看眼前这一分
奖励是某一步收到的计分,回报,return则汇总一段过程中的奖励。强化学习通常希望提高预期回报,也就是考虑可能发生的不同结果后,平均能得到多好的累计计分,而不是只追求某一次幸运的高分。
假设我们定义了一个教学用计分规则:两个练习阶段各记录奖励,第三阶段按延后检查的结果计分。两个构造轨迹如下:
| 轨迹 | 第一步奖励 | 第二步奖励 | 第三步奖励 | 直接相加的回报 |
|---|---|---|---|---|
| A:先拿到两次即时得分 | 1 | 1 | 0 | 2 |
| B:前面没得分,后面得分较高 | 0 | 0 | 4 | 4 |
只看第一步,A 更好;看完整过程,B 的总分更高。这里没有证明“先做难题一定更好”,我们只是用指定数值展示:即时奖励和累计目标可以给出不同判断。
有时还会使用折扣回报。把后续奖励乘以逐步累积的折扣因子 γ,可以表达对近期与远期奖励的不同权重。例如 γ=0.9:
三步折扣回报 = 第一步奖励 + 0.9×第二步奖励 + 0.9²×第三步奖励
A:1 + 0.9×1 + 0.81×0 = 1.9
B:0 + 0.9×0 + 0.81×4 = 3.24
越晚的奖励,在这个设定中权重越小。有限时长任务也可以直接汇总奖励,不一定非要折扣。折扣因子是目标定义的一部分,不是“未来奖励真实发生的概率”,更不是模型正确率。《动手学深度学习》:回报与折扣因子
延迟反馈:最后做对了,前面哪一步有帮助
如果用户在第三阶段表现更好,究竟是前面的解释有效,还是题目碰巧容易,或者用户本来就会?最终得到一个高分,并不会直接给出每一步动作的贡献。
这类问题通常叫作信用分配,credit assignment:把后续结果与前面的决策联系起来,学习哪些选择值得重复。这里的“信用”指贡献归因,与征信无关。
因此,一条成功经历不能证明里面每个动作都正确;一条失败经历也不代表每一步都应该避免。学习算法需要结合多次经历和估计来改进决策。
一种有用的中间概念是价值,value:在某种情形下,按某种策略继续行动,预期能得到多少回报。动作价值则进一步问“在这里先选这个动作,后面再继续,会怎样”。它估计的是未来回报,不是这一刻已经拿到的奖励。
可以用价值估计辅助挑动作,也可以直接调整策略给不同动作分配的概率,还有方法同时学习两者。本篇不展开算法清单,先把它们共同面对的问题记住:当前的好选择,可能需要靠后面的反馈才能判断。
一个能手算的更新:把新经验纳入估计
先把任务简化成单步情形:在相似的起始条件下,选择一种复习活动,完成后收到评分,本次任务就结束,没有后续奖励。
假设系统目前估计某个活动的平均奖励为 2,这次实际得到 6。一个简单的增量更新是:
新估计 = 旧估计 + 更新幅度 × (这次奖励 - 旧估计)
取更新幅度 0.25:
新估计 = 2 + 0.25×(6 - 2) = 3
它没有因为一次得到 6,就宣布以后都能得到 6;而是让估计从 2 朝新观察移动一部分。若之后一次评分为 0,同样更新会得到 3+0.25×(0-3)=2.25。
这里的更新幅度影响新经验的权重。固定幅度的这种更新,也不等于对所有历史记录取普通算术平均。
我们特意规定“动作后任务结束”,才可以只用本次奖励作为更新目标。多步任务中还要考虑后续回报;例如 Q-learning 会把即时奖励与下一状态的价值估计联系起来,并在真正终止时去掉后续项。《动手学深度学习》:Q-learning 的经验更新与终止状态
这个小表格式更新也说明:强化学习并不必然需要深度神经网络。用神经网络来表示策略或价值函数时,才会进一步结合第 07、08 篇的网络、损失、梯度和参数更新机制。
探索与利用:为什么不永远选当前最高分的动作
假设目前估计活动 A 平均能得 3 分,活动 B 能得 2 分。但 A 已经试了很多次,B 只试过一次,那一次用户恰好很疲劳。永远只选 A,系统可能一直没有机会修正对 B 的判断。
利用,exploitation,是根据已有估计选择当前看起来较好的动作;探索,exploration,是尝试其他可能值得选择的动作,以获得更多信息。
一种简单方法叫作 ε-greedy,可以先读成“多数时候按当前估计选择,少数时候随机尝试”。假设 ε=0.1,有两个动作,A 是当前唯一估计最好的动作:
- 90% 的概率直接选 A;
- 10% 的概率在 A、B 中等概率随机选一个。
因此总的选择概率是:A 为 0.9+0.1÷2=0.95,B 为 0.1÷2=0.05。不是 A 占 90%、B 占 10%,因为随机分支也可能选回 A。《动手学深度学习》:ε-greedy 探索策略
这些是选择概率,不保证每 100 次恰好出现 95 次 A 和 5 次 B。探索也不等于无条件地把任何动作都交给真实用户试验;具体项目可以先在可控的任务环境中验证动作和反馈是否合理。
奖励写偏了,学得越积极也可能离目标越远
现在回到开头:如果只奖励“用户答对一题”,系统可能总出已经会的题。得分越来越高,却没帮助用户掌握新内容。
其他看似方便的指标,也可能出现类似偏差:
| 只按这个指标奖励 | 可能得到的行为 | 被忽略的真实目标 |
|---|---|---|
| 生成卡片数量 | 把同一内容拆成大量重复卡片 | 有效覆盖知识、减少冗余 |
| 用户点击次数 | 不断安排需要点击的步骤 | 高效完成复习 |
| 回答长度 | 输出更长、重复更多的解释 | 准确、清楚、适合当前问题 |
这类利用计分规则的缺口获得高奖励、却没有完成真实意图的现象,常被讨论为奖励投机,reward hacking。它不要求模型有“故意作弊”的心理;优化一个不完整指标,就可能产生这种结果。原始论文:Concrete Problems in AI Safety
补上一项奖励也不能自动解决全部问题。例如奖励“延后测试答对”,还需要检查测试是否覆盖目标知识,是否因为总挑容易测试的内容而高估效果,以及不同用户的条件是否可比。
这与第 06 篇的原则相通:训练计分与用户目标有距离。也与第 09 篇相通:需要在没有用于反复调规则的材料和情形下检查效果。奖励更高,是优化结果的一个信号;它仍需要与真实任务表现对照。
大语言模型怎样用上强化学习
对语言模型,也可以把生成回答看成选择行为,再对生成结果提供奖励。根据任务建模的粒度,可以把整个回答看作一次动作,也可以把生成过程看作一系列 Token 选择。
奖励不一定来自用户每次亲自按赞。它可以来自明确的检查规则,也可以来自一个根据人类偏好训练出来的评分模型。以 InstructGPT 论文的方法为例,研究者先收集示范进行监督微调,再用回答比较数据训练奖励模型,之后利用奖励模型的评分进行强化学习优化。原始论文:Training language models to follow instructions with human feedback
这条路线通常称为基于人类反馈的强化学习,RLHF。其中,收集比较数据、训练奖励模型、根据奖励更新回答策略,是不同环节。“有人工标注”不意味着每个环节都是强化学习;“用了人类偏好”也不意味着一定采用同一种训练算法。第二部分会详细区分这些方法。
强化学习也并非必须完全没有标准答案。某些任务可以用已有答案或测试程序检查结果,再把检查结果转成奖励。区别在于训练怎样利用这个反馈改进行为,而不是表面上有没有一份参考答案。
同样,奖励模型偏好某个回答,不等于回答中的事实已经被证明;规则检查通过,也只说明满足了被检查的条件。奖励信号覆盖不到的错误,仍可能留下来。
Agent 执行循环,不自动等于强化学习训练
一个代码助手先读文件、再修改代码、运行测试、根据报错继续修改,看上去也有“行动与反馈”。但如果整个过程中模型参数和策略学习模块都没有进行训练更新,它是在使用已有能力执行任务,不能只凭循环形态就认定它正在强化学习。
固定模型可以根据新上下文改变下一步动作,这叫当前情境下的决策变化;训练则要利用经验改变之后决策所依赖的策略或估计。把一次执行记录保存下来,也只是获得了数据,还需要后续学习过程才会影响训练出的能力。
反过来,强化学习也不必每次在线现场探索:已有交互记录可以用于离线强化学习,但记录的覆盖范围等条件会限制学到的策略。研究教程:Offline Reinforcement Learning
对个人项目,先问清“谁在选动作、反馈是什么、哪里发生更新、用什么检查效果”,比看到一个 Agent 名称就判断它如何学习更有用。
理解检查:这个系统究竟在学什么
- 复习助手选择题目,用户作答。我们讨论的强化学习智能体是助手还是用户?助手是否一定能看到用户的真实掌握程度?
- 两条三步奖励序列分别为
[1,1,0]、[0,0,4]。当折扣因子为 0.9 时,哪条折扣回报更高? - 一个单步、动作后即结束的任务中,旧奖励估计为 2,新奖励为 6,更新幅度为 0.25。新估计是多少?为什么不是直接改成 6?
- 只有 A、B 两个动作,A 当前最好。若 10% 概率在两个动作中均匀探索,B 的总选择概率是多少?
- 系统一直提高“生成卡片数量”的奖励,是否足以说明它越来越会帮助复习?代码助手根据报错改代码,是否足以说明它正在进行强化学习训练?
第 1 题: 是出题助手。用户及其反应属于环境的一部分;助手通常只有答题记录等观察,不能直接读取完整学习状态。
第 2 题: 第二条更高,分别为 1.9 与 3.24。这是指定奖励下的计算,不能直接推导出哪种真实教学方式更有效。
第 3 题: 是 2+0.25×(6-2)=3。一次奖励可能包含随机波动,增量更新只把估计向它移动一部分。该公式在这里没有包含后续奖励,因为任务已经结束。
第 4 题: 是 5%。10% 的探索分支还要在两个动作间各分一半;A 的总概率为 95%。
第 5 题: 两者都不足以证明。卡片数量可能因重复而增加,需要检查学习目标;代码助手的动作变化也可能只是固定模型利用新上下文,是否训练要看是否存在相应的学习更新。
这一篇说明了模型怎样利用行动后的评价改进决策。下一篇把视角转向输出本身:从判断类别、预测数值,到生成文字、图片等新内容,生成式 AI 在做什么?
上一篇:09|学会与背会有什么区别:泛化、过拟合与分布变化
下一篇:11|生成式 AI:模型怎样从识别内容走向生成内容
返回:第一部分大纲