大模型- 强化学习-蒙特卡洛(Monte Carlo)和时序差分(Temporal-Difference, TD)--81

参考

Https://newfacade.github.io/notes-on-reinforcement-learning/07-monte-carlo-td.html
https://g.co/gemini/share/0a61decbcef5

蒙特卡洛(Monte Carlo)和时序差分(Temporal-Difference, TD)
这两种方法都是强化学习中非常重要的策略评估方法,目的是在不知道环境完整模型的情况下,仅仅通过与环境交互得到的经验来计算一个策略的价值。
想象一下,一个智能体(比如一个机器人)正在学习走迷宫。我们想知道,在迷宮的某一个位置,根据它当前的策略,最终能获得多少奖励(比如,找到出口的奖励是100,每走一步的惩罚是-1)。这个“能获得多少奖励”的期望值,就是我们说的“价值”。

蒙特卡洛(Monte Carlo)

蒙特卡洛方法非常直观,它的核心思想是:“不见兔子不撒鹰”,一定要等一局游戏(一个episode)完全结束之后,再回头更新这一路上所有状态的价值。

image

工作方式:

让智能体从某个状态出发,完整地玩一局游戏,直到游戏结束(比如走出迷宫或者掉进陷阱)。
记录下这一局游戏中,从每个状态开始,直到最后获得了多少总奖励(这个总奖励被称为"Return",即G_t)。
用这个“真实”的总奖励,来更新这一局游戏中经历过的所有状态的价值
重复很多很多次,每个状态的价值最终会趋近于它真实的平均奖励。

一个比喻:
蒙特卡洛方法就像是期末考试。你必须上完一整个学期的课,然后参加期末考试,拿到最终成绩单。你用这张最终的成绩单来评估你这一个学期的学习效果。你不会在期中或者平时测验后就去调整你对整个学期表现的最终评估。

优点:
因为每次都使用完整一局的真实奖励,所以评估是无偏的。也就是说,平均来看,它的估计是准确的。
缺点:
方差高:每一局游戏的结果可能千差万别,运气成分影响很大,导致价值的估计值波动很大。
效率低:必须等到一局游戏结束后才能学习和更新,对于那些很长的或者根本不会结束的任务(比如一个需要一直保持平衡的机器人),就不适用了。

时序差分学习 (Temporal-Difference, TD)

时序差分学习是一种更“急功近利”的方法,它不等一局游戏结束,而是每走一步,就根据当前获得的奖励和对下一个状态价值的“估计”,来更新当前状态的价值。

工作方式:

智能体在状态S,执行一个动作A,获得奖励R,并到达下一个状态S'。
它不等待游戏结束,而是立即用 “已获得的奖励R” + “对下一个状态S'价值的估计值” 来作为当前状态S价值的一个更好的“目标”。
然后用这个“目标”来更新状态S的价值。这个过程被称为自举(Bootstrapping),即用一个估计值(下一个状态的价值)来更新另一个估计值(当前状态的价值)。

image

TD学习就像是平时的小测验。你不需要等到期末,每完成一次作业、参加一次小测,老师就会给你一个反馈。
根据这个反馈和你对后续课程难度的“预估”,来动态调整你对自己最终成绩的预期。

优点:

方差低:因为它只依赖于一步的随机性,所以估计值的波动比MC小。
效率高:每走一步都可以学习,可以用于连续不断的任务,学习速度通常比MC快。
缺点:因为更新依赖于一个“估计值”(下一个状态的价值),而不是真实的完整奖励,所以它的评估是有偏的。如果最初的估计不准,这个偏差会一直传播下去。

两者的比较
Action-value based Monte Carlo:

\(Q(S_{t}, A_{t}) \longleftarrow Q(S_{t}, A_{t}) + \alpha[G_{t} - Q(S_{t}, A_{t})]\)

Action-value based Monte Carlo:

\(Q(S_{t}, A_{t}) \longleftarrow Q(S_{t}, A_{t}) + \alpha[R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_{t}, A_{t})]\)

N步自举 (n-step Bootstrapping)

理解了MC和TD之后,n步自举就很好理解了。它其实是介于MC和TD之间的一种方法,试图在“有偏低方差的TD”和“无偏高方差的MC”之间找到一个平衡。

工作方式:它既不等游戏结束(不像MC),也不只看一步(不像TD),而是往前看固定的 n 步。它会记录接下来n步的奖励,并结合第n步之后那个状态的价值估计,来更新当前状态的价值。
n步自举就像是月考。它不像小测验那么频繁(n=1的TD),也不像期末考那样要等那么久(n=无穷大的MC),而是通过一个阶段性的、信息更丰富的反馈来评估和调整。
当 n = 1 时,它就是TD学习。
当 n 趋近于一局游戏的总步数时,它就变成了蒙特卡洛方法。
通过调整 n 的大小,我们可以在偏差和方差之间进行权衡,找到最适合当前任务的学习方式。

posted @ 2025-07-13 11:24  jack-chen666  阅读(57)  评论(0)    收藏  举报