🌞欢迎来到图解强化学习的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
📆首发时间:🌹2026年5月23日🌹
✉️希望可以和大家一起完成进阶之路!
目录
PG算法的基础认识
PG的网络结构
策略网络(Policy Network)
网络更新
网络更新过程
带基线的 PG
手动计算
PG算法的基础认识
Policy Gradient,策略梯度算法
传统价值算法(DQN)只能选离散最优动作,连续动作场景难以适配PG直接优化决策策略,离
散、连续动作空间都能适用不靠估值选动作,直接更新策略参数;需跑完完整回合汇总数据后再更
新。
PG的网络结构
策略网络(Policy Network)
PG 只有一个网络:Actor 网络,没有 Critic,没有价值输出。
输入:当前的状态S
输出:动作的概率
输入状态 s (6维) ↓ 全连接层 1 (ReLU) ↓ 全连接层 2 (ReLU) ↓ 输出层 → Softmax → 动作概率 [p0, p1, p2]PG 不输出价值,只输出动作概率
网络更新
网络更新过程
目的:让总奖励高的动作被选中的概率变大,让总奖励低的动作概率变小,直接优化决策策略。
(1)采集一整条回合数据。
从游戏开始到结束,收集所有的:状态 s、动作 a、奖励 r、是否结束 done
(PG 必须等一整局玩完才能更新)
(2)计算每一步动作的 累计折扣回报 Gₜ。
从当前步开始,到回合结束,所有未来奖励的加权总和:
Gₜ 越大 → 这个动作越好
Gₜ 越小 → 这个动作越差
(3)前向传播,计算动作的对数概率
将状态 s 输入 PG 策略网络,得到动作概率 π(a|s),再取对数
(4)计算 PG 损失函数
(5)反向传播更新网络参数
最小化损失 → 等价于 最大化总奖励→ 好动作概率上升,坏动作概率下降
PG 更新 = 收集整局数据 → 算总回报 G → 用 -logπ * G 做损失 → 让好动作更容易被选中
log_prob = log( 你刚才选的那个动作的概率 )
用 log_prob,乘积求导转为加减求导,梯度计算数学上更简便,最大化动作概率等价最大化对数
概率,适配深度学习最小损失的优化范式。
作用只有一个:告诉网络,我刚才选了哪个动作。因为概率永远 < 1,所以
log_prob 永远是负数。(0.9 → -0.1;0.5 → -0.69;0.1 → -2.3)
G(累计奖励)
G 代表:你刚才做的这个动作,到底好不好
G 越大 → 动作越好
G 越小 → 动作越差
带基线的 PG
下面的流程图中,我们并没有使用回报,而是使用了优势函数:
区别在于:
之前(用 G_t):两个动作都被强化(因为 G_t 都是正的)
现在(用 Advantage):只强化“比平均好”的动作,抑制“比平均差”的动作
baseline的确定,最简单的方式比如可以使用用当前 batch 的平均回报
G = [2.8, 2.0]
b = (2.8 + 2.0) / 2 = 2.4
b0 = b1 = 2.4
手动计算
动作空间:{左(0), 右(1)}
折扣因子:γ = 0.9
批次:先看单条轨迹(B=1),长度 T=2
策略网络:给定状态输出动作概率(softmax 后)
t = 0
输入:当前状态s
输出 logits:z0 = [0.2, 1.0]
softmax 得到概率:πθ(a|s0) = softmax(z0)≈ [0.31, 0.69] P(左)=0.31 P(右)=0.69
采样动作a0 = 1(右)
环境反馈奖励r0 = 1
进入下一状态s1
t = 1
z1 = [1.2, 0.3]
πθ(a|s1) ≈ [0.71, 0.29]
a1 = 0(左)
r1 = 2
τ ={
s0, a0=1, r0=1,
s1, a1=0, r1=2
}
计算 Return(回报)
(1)PG算法叫做策略梯度算法,因为直接对策略进行梯度优化
(2)策略梯度公式:
(3)回合制更新