TD3 (Twin Delayed Deep Deterministic Policy Gradient) 强化学习算法详解与实现

TD3 (Twin Delayed Deep Deterministic Policy Gradient) 是一种先进的深度强化学习算法,专门针对连续动作空间问题设计。它是DDPG算法的改进版本,通过多项技术创新解决了DDPG存在的高估偏差问题。

1. TD3算法核心思想

1.1 算法关键创新点

  1. 双Q网络 (Twin Critic):使用两个独立的Q函数估计器,取最小值作为目标值,减少高估偏差

  2. 延迟策略更新 (Delayed Policy Updates):策略(Actor)更新频率低于Q函数(Critic)更新

  3. 目标策略平滑正则化 (Target Policy Smoothing):在目标动作中添加噪声,防止策略在尖锐的Q函数峰值处过拟合

1.2 与DDPG的主要区别

特性 DDPG TD3
Critic数量 单Q网络 双Q网络
策略更新频率 每次迭代都更新 延迟更新(每n次)
目标策略噪声 添加平滑噪声
高估偏差 较严重 显著减少

2. TD3算法数学原理

2.1 关键公式

  1. 目标Q值计算

    text

  • y = r + γ * min(Q₁'(s',ã), Q₂'(s',ã))
    ã = clip(π'(s') + ε, a_low, a_high), ε ~ clip(N(0,σ), -c, c)
  • Critic损失函数

    text

  • L(θᵢ) = E[(Qᵢ(s,a) - y)²], i ∈ {1,2}
  • 策略更新(仅更新一个Q函数):

    text

  1. ∇J(ϕ) = E[∇aQ₁(s,a)|a=π(s) ∇ϕπ(s)]

2.2 算法伪代码

text

初始化Critic网络Qθ1, Qθ2和Actor网络πϕ
初始化目标网络Qθ1', Qθ2', πϕ'
初始化回放缓冲区D

for 回合 = 1 to M do
    初始化状态s
    for 时间步 = 1 to T do
        选择动作a = π(s) + 噪声(探索)
        执行a,观察r, s'
        存储(s,a,r,s')到D
        
        采样小批量{(s,a,r,s')}~D
        ã = π'(s') + 裁剪的噪声
        y = r + γ * min(Qθ1'(s',ã), Qθ2'(s',ã))
        
        更新Qθ1和Qθ2最小化(Q - y)²
        
        if 时间步 % d then
            更新πϕ最大化Qθ1(s,π(s))
            软更新目标网络:
            θ' ← τθ + (1-τ)θ'
            ϕ' ← τϕ + (1-τ)ϕ'
        end if
    end for
end for

3. TD3的PyTorch实现

以下是完整的TD3实现代码:

python

import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.optim import Adam
from collections import deque
import random

class ReplayBuffer:
    def __init__(self, capacity):
        self.buffer = deque(maxlen=capacity)
    
    def push(self, state, action, reward, next_state, done):
        self.buffer.append((state, action, reward, next_state, done))
    
    def sample(self, batch_size):
        state, action, reward, next_state, done = zip(*random.sample(self.buffer, batch_size))
        return np.stack(state), np.stack(action), np.stack(reward), np.stack(next_state), np.stack(done)
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值