特性 | 说明 |
---|---|
连续动作空间 | 直接输出连续动作值(如方向盘角度、机器人关节扭矩) |
离线学习 | 使用经验回放(Replay Buffer) |
目标网络 | 使用目标网络提高稳定性(类似DQN) |
Actor-Critic结构 | 结合策略网络(Actor)和价值网络(Critic) |
问题 | 传统方法局限 | DDPG 解决方案 |
---|---|---|
连续动作控制 | DQN 无法直接处理连续动作 | 输出连续动作值 |
高方差 | Policy Gradients 高方差 | 使用 Critic 网络降低方差 |
稳定性差 | Actor-Critic 难收敛 | 引入目标网络和经验回放 |
DDPG 包含四个神经网络:
初始化:
对于每个episode:
y i = r i + γ Q ′ ( s i + 1 , μ ′ ( s i + 1 ∣ θ μ ′ ) ∣ θ Q ′ ) y_i = r_i + \gamma Q'(s_{i+1}, \mu'(s_{i+1}|\theta^{\mu'})|\theta^{Q'}) yi=ri+γQ′(si+1,μ′(si+1∣θμ′)∣θQ′)
L = 1 N ∑ i ( y i − Q ( s i , a i ∣ θ Q ) ) 2 L = \frac{1}{N} \sum_i (y_i - Q(s_i,a_i|\theta^Q))^2 L=N1i∑(yi−Q(si,ai∣θQ))2
∇ θ μ J ≈ 1 N ∑ i ∇ a Q ( s , a ∣ θ Q ) ∣ s = s i , a = μ ( s i ) ∇ θ μ μ ( s ∣ θ μ ) ∣ s i \nabla_{\theta^\mu} J \approx \frac{1}{N} \sum_i \nabla_a Q(s,a|\theta^Q)|_{s=s_i,a=\mu(s_i)} \nabla_{\theta^\mu} \mu(s|\theta^\mu)|_{s_i} ∇θμJ≈N1i∑∇aQ(s,a∣θQ)∣s=si,a=μ(si)∇θμμ(s∣θμ)∣si
θ Q ′ ← τ θ Q + ( 1 − τ ) θ Q ′ \theta^{Q'} \leftarrow \tau \theta^Q + (1-\tau)\theta^{Q'} θQ′←τθQ+(1−τ)θQ′
θ μ ′ ← τ θ μ + ( 1 − τ ) θ μ ′ \theta^{\mu'} \leftarrow \tau \theta^\mu + (1-\tau)\theta^{\mu'} θμ′←τθμ+(1−τ)θμ′
action = actor(state) + np.random.normal(0, exploration_noise)
(s, a, r, s', done)
Actor 网络:
actor = tf.keras.Sequential([
tf.keras.layers.Dense(400, activation='relu'),
tf.keras.layers.Dense(300, activation='relu'),
tf.keras.layers.Dense(action_dim, activation='tanh') # 输出[-1,1]范围动作
])
Critic 网络:
critic = tf.keras.Sequential([
tf.keras.layers.Dense(400, activation='relu', input_shape=(state_dim+action_dim,)),
tf.keras.layers.Dense(300, activation='relu'),
tf.keras.layers.Dense(1) # 输出Q值
])
优势 | 说明 |
---|---|
连续动作控制 | 直接输出连续动作值 |
样本高效 | 经验回放允许重复利用经验 |
稳定训练 | 目标网络和软更新提高稳定性 |
挑战 | 解决方案 |
---|---|
超参数敏感 | 需要仔细调整学习率、噪声参数等 |
训练速度慢 | 使用并行训练(如Ape-X) |
探索不足 | 自适应噪声或课程学习 |
ddpg_params = {
'actor_lr': 0.0001, # Actor学习率
'critic_lr': 0.001, # Critic学习率
'gamma': 0.99, # 折扣因子
'tau': 0.005, # 目标网络软更新系数
'buffer_size': 100000, # 经验回放大小
'batch_size': 64, # 批大小
'noise_std': 0.1, # 动作噪声标准差
}
算法 | 创新点 | 优势 |
---|---|---|
TD3 | 双Critic网络+延迟更新 | 减少Q值高估 |
SAC | 最大熵强化学习 | 探索更充分 |
PPO | 裁剪策略更新 | 训练更稳定 |