图解强化学习 |手算PG算法
2026/5/23 15:30:32 网站建设 项目流程

🌞欢迎来到图解强化学习的世界
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

📆首发时间:🌹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)回合制更新

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询