强化学习基础-策略

1. 策略

总的来说,为什么选择这个动作,选择这个动作的逻辑就是策略。生活中各种各样的场景,你对每个场景判断后选择什么动作逻辑就是你的策略,这个策略就在你的大脑中(神经网络)

  • 给你一个游戏,每个游戏状态你选择什么样的操作,这个就是策略,不同人针对同一个场景选择的动作可能就是不同的,也就是策略不同。
  • 给你一个股票的k线,你当前选择买入,卖出,什么都不操作,具体选择哪一个动作就是你的策略,同样不同的人策略是不同的
  • 开车骑车,遇到了堵车怎么处理,是排队还是绕路,前面是行人是刹车还是踩油门,具体选择哪一个就是你的策略

策略就是从"环境感知"到"决策动作"的映射逻辑。

策略的本质 :映射函数

在数学或人工智能(强化学习)中,策略(Policy)通常被表示为一个函数 π ( a ∣ s ) \pi (a|s) π(a∣s):

  • s s s (State/场景):你观察到的信息(如:K线走势、前方的行人、游戏的当前分数)
  • a a a (Action/动作):你做出的反应(如:买入、刹车、放技能)。
  • π \pi π (Policy/策略):这就是你说的"逻辑"。它决定了在状态 (s) 下,选择动作 (a) 的概率或确定性。

策略的三个组成要素:一个完整的策略通常包含以下逻辑链条:

  • 目标导向:策略不是随机的,它是为了实现某个目标。炒股是为了盈利,开车是为了安全到达,游戏是为了赢。(奖励函数)
  • 规则与约束:策略必须在规则内运行(如交通法规、游戏机制)。(动作空间和状态空间)
  • 判断逻辑(if-then):这是你提到的核心。(每个动作的概率)
    • "如果(if)路口堵塞超过10分钟,那么(then)选择绕路。"
    • "如果(if)K线跌破支撑位,那么(then)止损卖出。"

2. 行为策略和目标策略

在强化学习中,为了区分"谁在采集数据"和"我们要优化谁",引入了这两个概念。理解它们的关键在于:数据源头与学习目标是否一致

行为策略 (Behavior Policy, μ \mu μ 或 π o l d \pi _{old} πold)

  • 定义: 实际在环境里"跑跑跳跳"、产生动作并收集奖励的那个策略。
  • 职责: 负责探索环境,产生实验数据(即 (s,a,r,s^{\prime }) 的序列)。

目标策略 (Target Policy, π \pi π 或 π n e w \pi _{new} πnew)

  • 定义: 我们正在努力学习、改进、并希望最终拿到冠军的那个策略
  • 职责: 负责利用学到的知识,变得越来越聪明。

如果只有一个策略(即同策略),会面临两个核心矛盾,区分它们正是为了解决这些问题:

1. 解决"探索"与"利用"的矛盾

  • 矛盾点:目标策略通常希望表现得尽可能完美(利用),但为了学得更好,我们需要模型去尝试一些奇怪的、可能出错的动作(探索)。
  • 解决方案: 我们可以让行为策略更激进地去冒险(比如带噪声的探索),而让目标策略平滑地学习最优路径。

2. 样本效率(变废为宝)

  • 矛盾点:目标策略每更新一次参数,它就变成了"新策略"。如果不区分两者,那么几秒钟前(旧策略)收集的数据在数学上就失效了。
  • 解决方案: 引入行为策略的概念后,我们可以把过去一小时内所有的尝 都看作是由旧的行为策略产生的。通过重要性采样等技术,我们可以告诉目标策略:"虽然这是旧数据,但通过对比我现在的想法和当时的动作概率,我依然能从这些旧经验里学到东西。"

之所以要区分它们,本质上是为了"打破时间的诅咒"。在异策略中,有了这两个概念,我们就可以建立一个经验回放池 (Replay Buffer),把成千上万次不同行为策略产生的数据存起来反复学习,而不必每更新一次参数就去环境里重新跑一遍。这大大节省了计算资源和时间。

行为策略和学习策略一致就是同策略(on-policy),否则为异策略(off-policy)

  • 模拟器成本高**:当数据收集非常昂贵或缓慢时,优先选择异策略以最大化利用每一条数据。**
  • 需要离线学习​**:例如在自动驾驶或医疗领域,只能利用已有的历史观测数据集进行训练(Offline RL)。**

3. 异策略(off-policy)

异策略本身并不主观"认为"样本是独立的,但它通过特定的手段(如经验回放)人为地制造了这种"独立性" ​,以满足神经网络训练的数学前提。

在强化学习中,智能体采集的原始样本是按时间顺序排列的。连续采集的数据序列具有强烈的时间相关性 s t s_{t} st紧接着 s t + 1 s_{t+1} st+1。如果直接按顺序学习,神经网络会面临以下问题:

  • 非独立同分布(Non-IID): 深度学习模型的基础假设是样本独立同分布。如果模型连续看到 100 个极其相似的动作,它的梯度更新会产生严重的偏移,导致训练不稳定。
  • 反馈循环: 当前的策略决定了下一步看到的数据,如果数据又是连续相关的,模型很容易陷入某个死循环或者过度拟合局部区域。

异策略算法(如 DQN, SAC)的核心组件是 经验回放池(Replay Buffer) 。这个机制的作用就是打破这种相关性

  • 随机采样 (Random Sampling) :算法从回放池中随机抽取一小撮样本(Mini-batch)进行训练。
  • 模拟 IID:通过这种随机性,原本有时序关系的样本被"打散"了。在训练时,网络看到的样本集合在统计学上更接近于**独立同分布 (IID)**。这就像是把整本书的题库打乱了再抽题,让神经网络学到的是通用的物理规律(如"碰到墙会反弹"),而不是特定的轨迹(如"先左转再右转")。

3.1 异策略学习序列信息

既然任务是序列化的,为什么把序列拆得稀碎,模型还能学会"长远打算"?

核心原因在于:异策略算法利用了"马尔可夫性"和"自举(Bootstrapping)"机制,将时序信息转化为了状态值(Value)的属性。

异策略学习的目标不是"路径",而是"关联"

异策略并不试图通过死记硬背整条轨迹来学习,它学习的是状态与状态之间的​逻辑递推关系​。

3.1.1. 原子级关联

每一个样本 ( s , a , r , s ′ ) (s,a,r,s′) (s,a,r,s′)都包含了一个微小的"逻辑断言":在状态 s s s做了 a a a,会得到 r r r并跳到 s s s

3.1.2. 拼图效应

你可以把异策略的学习想象成拼拼图: 每一条 ( s , a , r , s ′ ) (s,a,r,s^{\prime }) (s,a,r,s′) 就像拼图的一个连接处。通过随机采样,模型一会儿在学拼图左上角(这一组 s → s ′ s\rightarrow s^{\prime } s→s′),一会儿在学右下角(另一组 s → s ′ s\rightarrow s^{\prime } s→s′)。虽然样本被打散了,但由于 s ′ s′ s′(当前步的终点)在另一个样本中会作为 s s s(下一步的起点)出现。只要采样的样本(经验池)覆盖了环境的各个角落,模型就能通过无数个"连接处"把整个逻辑链条串联起来。

它不需要一口气看完整个视频,只需要看遍所有的"帧对"关系,最终就能推导出完整的剧情。

3.1.3. 马尔可夫假设

"此时此刻的状态 s s s 已经包含了所有对未来有用的历史信息"

如果这个假设成立,那么模型只需要知道【我在哪 ( s s s)】、【我做了什么 ( a a a)】和【我到了哪 ( s ′ s^{\prime } s′)】,就足以做出完美决策。它不需要记得它是怎么来到 s s s 的,所以打散序列不会损伤它的判断力。

3.1.4. 贝尔曼方程的自举机制

异策略算法(如 DQN)的核心公式是:

Q ( s , a ) ≈ r + γ m a x a ′ Q ( s ′ , a ′ ) Q(s,a)≈r+γmaxa′Q(s′,a′) Q(s,a)≈r+γmaxa′Q(s′,a′)

这个公式赋予了打散样本"跨越时空"的能力:

  • 价值传递 :即便你只给模型一个孤立的样本 ( s , a , r , s ′ ) (s,a,r,s′) (s,a,r,s′),模型也会去查询它当前对s′价值的估计。
  • 远见性 :如果 s ′ s′ s′是一个接近终点的获胜状态,它的 Q ( s ′ , a ′ ) Q(s′,a′) Q(s′,a′)会很高。通过这一行公式,高价值会反向传播 给 s s s。
  • 结论 :序列的连贯性并没有消失,而是被浓缩进了Q值表 中。多次随机采样训练,收益就会像"水流"一样,通过 Q Q Q 函数这个中介,从终点逆流回起点。

3.2 类比事后诸葛亮

贝尔曼方程并不是真的知道了未来的价值,而是通过不断的采样,然后通过价值反推当前动作选择的价值,属于是事后诸葛亮。

3.2.1. 第一阶段:两眼一抹黑(初期的"事后")

在刚开始采样时,模型确实完全不知道未来的价值。它在环境里乱撞,即便偶尔做对了动作,只要没碰到那个带奖金的"终点",它依然觉得自己所有的动作都是平庸的。这时候,它连做"事后诸葛亮"的资格都没有,因为还没发生任何值得复盘的"好事"。

3.2.2. 第二阶段:复盘局部(中期的"事后")

当某次偶然撞到了奖金(比如样本:倒数第一步 -> 终点 -> 拿钱),模型开始复盘了:

它的逻辑: "虽然我不知道前面是怎么来的,但刚才在'倒数第一步'那个位置,往右走竟然拿到了钱!记下来,以后到了那里就往右走。"

这就是"事后": 只有在奖金发生之后,它才回头给"上一个动作"打高分。

3.2.3. 第三阶段:全局连通(成型后的"事后")

随着训练继续,模型开始展现出一种"逐级复盘"的能力:

既然"倒数第一步"值钱了,那么"倒数第二步"在复盘时就会发现:"嘿,如果我能走到'倒数第一步',我就离钱不远了。"

接力棒传导: 这种"事后"的觉悟,会从终点开始,沿着时间轴一帧一帧地向回传导。

最终结果: 训练结束时,模型在起点就能通过 Q 函数看到:"如果我往左走,经过 100 步的传导,最终能拿到钱。"

3.2.4. "事后诸葛亮"带来的挑战

正因为它是"事后"反推,所以会带来几个副作用:

  • 延迟满足带来的困难: 如果序列太长(比如要走 1 万步才有奖),这种"反向浸润"的速度会非常慢。模型可能需要采样数百万次,才能让起点的动作感知到 1 万步之后的收益。
  • 信用分配问题(Credit Assignment): 到底是因为哪一步做得好才拿到的奖?异策略靠的是耐心------通过成千上万次打散的采样和反推,慢慢磨掉噪声,把功劳归于正确的动作。

3.3. 总结

  • 统计上的独立(打散的目的):是为了让梯度更新更平稳,避免模型因为连续处理相似的样本而产生剧烈震荡(防止过拟合到当前轨迹)。**

  • 逻辑上的相关(学习的基础) :样本内部的 s → a → s ′ s→a→s′ s→a→s′转移逻辑从未被破坏。神经网络学习的是这个​ 转移规律。只要它掌握了规律,就能预测任何序列,而不需要按顺序观察序列。

异策略打散的是​训练数据的采样分布 ​,以满足数学优化的稳定性需求;而序列的逻辑连贯性则通过贝尔曼方程这一数学纽带,在Q值的迭代过程中被完美地保留并重建了。

3.4. 异策略的优点

3.4.1. 极高的样本效率 (Sample Efficiency)

  • 经验回放 (Experience Replay):异策略允许智能体将过去经历的所有数据存储在"经验池"中,并在后续训练中多次重复抽取使用。
  • 对比:同策略(On-Policy)算法在更新一次参数后,之前收集的数据就因与新策略不匹配而必须丢弃;而异策略可以持续压榨旧数据的价值,极大地减少了与环境交互的总次数。

3.4.2. 解耦探索与利用 (Decoupling Exploration and Exploitation)

  • 自由探索:在异策略中,负责收集数据的"行为策略"可以非常激进(例如完全随机探索),而"目标策略"则可以专注于学习最优的贪婪动作。
  • 降低风险:在自动驾驶等高风险领域,可以使用安全的基准策略来收集数据,而让模型在后台安全地学习更优方案,无需智能体亲自以不成熟的策略去冒险。

3.4.3. 数据来源的多样性

  • 学习他人经验:异策略算法不仅能学习自己的历史记录,还能学习人类专家的演示数据或其他算法生成的轨迹。
  • 离线学习 (Offline RL):它支持直接从静态的历史数据集中提取知识,这使得它在无法实时交互的场景(如医疗决策、金融交易)中成为唯一可行的方案。

3.4.4. 消除数据相关性,提升训练稳定性

  • 打乱时序相关性:通过从经验池中随机采样(Random Sampling),异策略有效地打破了连续动作之间的强相关性。
  • 类比:这类似于学生复习时打乱题目顺序练习,而不是死记硬背某一次考试的题目顺序,从而让神经网络学习到更本质的规律,防止过拟合。

3.4.5. 数学机制的保障

  • 重要性采样 (Importance Sampling):通过数学上的重加权技术,异策略能够修正行为策略与目标策略之间的分布偏差,确保即使数据来源不同,梯度的估计依然是准确或收敛的。
  • 最优值函数估计:如 Q-Learning,它直接利用贝尔曼最优方程(Bellman Optimality Equation)来更新,这保证了只要数据覆盖足够广,它就能收敛到最优策略,无论数据由谁产生。

4. 同策略(on-policy)

在强化学习中,同策略(On-policy)算法指的是:"正在学习、更新的策略"与"在环境中实际干活、采样数据的策略"必须是同一个。

通俗点说,就是"边练边打"------你必须亲自下场实战,根据自己当下的反馈来调整自己的动作,而不能靠看别人的录像或自己很久以前的经验来学习。

  • 一致性**:用于生成行为的数据采集策略(Behavior Policy)与被改进的目标策略(Target Policy)是同一个。**
  • 即用即弃**:由于学习必须基于"当前的"策略,一旦策略更新,之前旧策略产生的数据就不再适用,必须丢弃并重新采集。**
  • 样本分布一致**:因为数据是由当前策略直接生成的,数据的统计分布与策略的目标分布完全一致,不需要像异策略那样使用重要性采样来修正偏差**

就像一位厨师在学做新菜,他必须亲自动手尝试每一道工序,并根据这一次 做出来的味道(反馈)来调整下一次放盐的分量。他不能通过看别人(异策略)的视频来直接改进自己的手感。

5. 同策略vs异策略

  • 同策略(On-Policy)像是在看视频:你必须完整地看一遍视频才能理解剧情,如果快进或跳过,你就乱了。
  • 异策略(Off-Policy)像是在拼地图:
    • 你收集的是成千上万张碎片照片(每一个样本 ( s , a , r , s ′ ) (s,a,r,s′) (s,a,r,s′) )。
    • 每张照片只拍了一个路口。
    • 虽然照片是乱序洗出来的,但只要照片覆盖了所有路口,你就能通过照片边缘的重合部分(相同的s和s′),在脑海中构建出一张完整的交通枢纽图。
    • 结果:你不需要按顺序走一遍路,也能知道从 A 点到 Z 点的最优路径。
  • 异策略: 像"复盘高手"。它可以利用任何数据学习,不管是自己以前的数据、别人的数据,甚至是随机乱试的数据(只要有 s , a , r , s ′ s,a,r,s^{\prime } s,a,r,s′ 这种记录就行)。
  • 同策略: 像"现场教学"。老师教你游泳,你必须现在跳下水游一圈,老师根据你这这一圈的动作给你指点。你昨天游的那一圈(旧数据)对老师今天的指点已经没有参考价值了,因为你今天的水平和昨天已经不一样了。

6. 梯度过期

既然异策略允许使用历史数据,为什么还会担心梯度"过期"呢?

答案在于:​**异策略的数据兼容性"与"优化算法的梯度方向"是两个层面的问题 **

6.1 异策略确实能用旧数据,但"梯度"是即时的

虽然异策略(如 DQN)可以从经验池中抽取一年前的数据,但在计算梯度时,它是用当前的参数去评估这些旧数据的。

  • 异策略的操作:拿着"现在的 Q 网络"去对比"旧样本里的奖励",计算误差(TD Error),然后更新。
  • 异步的问题:在异步更新中,Worker A 在时间点 T1拿到模型参数开始算梯度,等它算完准备提交时已经是T10了,此时全局参数已经被 Worker B、C 修改了 9 次。
  • 过期梯度(Stale Gradient)的本质:Worker A 算出的梯度方向是指向T1 版本的山谷,但现在的模型已经站在了 T10的位置。这就好比你拿着昨天的地图T1的梯度在今天的地形T10 的参数上走,虽然地图上的路(样本数据)是真的,但你的方位(参数状态)错了,这会导致更新方向偏离最优路径

6.2. 异策略的"容忍度"并非无限

虽然异策略在数学上允许数据分布不一致,但如果​数据版本 ​(行为策略)与​当前学习版本​(目标策略)差异过大,会产生以下问题:

  • 重要性偏移:如果现在的策略已经进化得非常厉害,而旧数据全是随机乱撞的"垃圾数据",这些数据对当前更新的贡献度(有效信息)会变得极低。
  • 收敛变慢:过期梯度就像是在优化过程中加入了"滞后噪声"。在异步训练中,如果延迟(Staleness)太高,这种噪声会掩盖真正的下降方向,导致模型不收敛。

6.3. Q-learning 也怕过期梯度

Q-learning 虽然是异策略,但它依赖​自举 (Bootstrapping) :​ Q ( s , a ) ← Q ( s , a ) + α [ r + γ m a x Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a)←Q(s,a)+α[r+γmaxQ(s′,a′)−Q(s,a)] Q(s,a)←Q(s,a)+α[r+γmaxQ(s′,a′)−Q(s,a)]

注意等式右边的 m a x Q ( s ′ , a ′ ) maxQ(s′,a′) maxQ(s′,a′) ,在异步更新中,如果一个 Worker 计算梯度时用的 Q值版本太旧,它计算出来的 TD Target 就是过期的。用一个过期的目标去修正现在的参数,会造成逻辑上的前后矛盾(即目标值的不稳定),进而引发震荡。

6.4. 总结:数据 vs. 梯度

为了方便理解,我们可以做这样一个区分:

  • 异策略解决了"数据过期"的问题:它允许你把陈旧的经验(State, Action)喂给模型。
  • 同步机制解决了"梯度过期"的问题 :它确保当模型根据这些经验进行学习时,它的"修正动作"(梯度)是针对模型当前状态的最优方向。**

异策略就像你可以读旧课本学习。但"异步更新"导致的问题是:老师在黑板上已经讲到第 10 课了,你却还在按照第 1 课的理解去回答第 10 课的问题。虽然第 1 课的知识(数据)是正确的,但你的回答方向(梯度)与当下的进度不匹配。

这就是为什么即便在异策略算法中,人们依然倾向于使用​**同步并行(如 A2C 的同步版或大规模并行 DQN)**​,因为这样能确保每一次参数更新都是"新鲜"且"准确"的。

相关推荐
Hcoco_me17 小时前
大模型面试题84:是否了解 OpenAI 提出的Clip,它和SigLip有什么区别?为什么SigLip效果更好?
人工智能·算法·机器学习·chatgpt·机器人
陆研一18 小时前
2026国内无痛使用Gemini 3与GPT-5.2
人工智能·ai·chatgpt
Blossom.11820 小时前
AI Agent智能办公助手:从ChatGPT到真正“干活“的系统
人工智能·分布式·python·深度学习·神经网络·chatgpt·迁移学习
Hcoco_me1 天前
大模型面试题89:GPU的内存结构是什么样的?
人工智能·算法·机器学习·chatgpt·机器人
marteker1 天前
通用人工智能应用程序的兴起
人工智能·chatgpt
2301_782129951 天前
从消耗品到资产:构建你的“认知资本”与自我成长的AI系统
人工智能·chatgpt
Hcoco_me1 天前
大模型面试题83:ViT一般怎么进行预训练?
人工智能·深度学习·机器学习·chatgpt·机器人
Hcoco_me2 天前
大模型面试题79:举例一个你用到过的MCP的场景
人工智能·深度学习·机器学习·chatgpt·机器人
LaughingZhu2 天前
Product Hunt 每日热榜 | 2026-01-20
数据库·人工智能·经验分享·神经网络·搜索引擎·chatgpt