Chuyển đến nội dung chính

第 8 課:SAC 和高階演算法 — Off-Policy Deep RL

SAC:Soft Actor-Critic — 最大熵 RL。 TD3:雙延遲 DDPG。連續的行動空間。 DDPG。基於模型的強化學習概述。

🧠 人工智慧與機器學習 — 第 7 課 第 8 課:SAC 與高階演算法 — 離保單深盧比

強化學習:從基礎到高級

第 2 部分:深度強化學習 — 神經網路與 RL 的結合

亞洲開發網

簡介

**SAC(Soft Actor-Critic)**是一種用於連續動作空間的最先進的離策略演算法 - 將最大熵目標與 Actor-Critic 結合。 SAC 自動調節溫度,穩定且樣品效率高。


1. 最大熵 RL

$$\pi^* = \arg\max_\pi \sum_t \mathbb{E}_{\pi}[r(s_t, a_t) + \alpha \mathcal{H}(\pi(\cdot|s_t))]$$

關鍵見解:平衡獎勵最大化和熵(探索)→ 穩健的政策。


2.SAC 元件

class SACActorContinuous(nn.Module):
    """Gaussian policy for continuous actions"""
    def __init__(self, state_dim, action_dim, hidden=256):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(state_dim, hidden), nn.ReLU(),
            nn.Linear(hidden, hidden), nn.ReLU(),
        )
        self.mean = nn.Linear(hidden, action_dim)
        self.log_std = nn.Linear(hidden, action_dim)
    
    def forward(self, state):
        feat = self.net(state)
        mean = self.mean(feat)
        log_std = self.log_std(feat).clamp(-20, 2)
        return mean, log_std
    
    def sample(self, state):
        mean, log_std = self.forward(state)
        std = log_std.exp()
        dist = torch.distributions.Normal(mean, std)
        x = dist.rsample()  # Reparameterization trick
        action = torch.tanh(x)
        log_prob = dist.log_prob(x) - torch.log(1 - action.pow(2) + 1e-6)
        return action, log_prob.sum(-1)

雙 Q 網絡

class TwinQNetwork(nn.Module):
    def __init__(self, state_dim, action_dim, hidden=256):
        super().__init__()
        self.q1 = nn.Sequential(
            nn.Linear(state_dim + action_dim, hidden), nn.ReLU(),
            nn.Linear(hidden, hidden), nn.ReLU(),
            nn.Linear(hidden, 1),
        )
        self.q2 = nn.Sequential(
            nn.Linear(state_dim + action_dim, hidden), nn.ReLU(),
            nn.Linear(hidden, hidden), nn.ReLU(),
            nn.Linear(hidden, 1),
        )
    
    def forward(self, state, action):
        x = torch.cat([state, action], dim=-1)
        return self.q1(x), self.q2(x)

3. TD3 — 雙重延遲 DDPG

DDPG 的 3 個技巧:

  1. 雙批評者:取最小值→減少高估
  2. 延遲策略更新:更新參與者少於批評者
  3. 目標策略平滑:為目標操作添加噪音

4.演算法選擇指南

演算法行動空間開/關政策樣品效率最適合
DQN離散政策外好遊戲
聚苯醚兩者在保政策低通用
策略諮詢委員會連續政策外高機器人
TD3連續政策外高機器人
DDPG連續政策外好簡單連續

5. 基於模型的強化學習概述

學習環境模型 → 計劃,而非無模型:

方法學習模型?計劃?範例
無模型沒有沒有DQN、PPO
基於模型是的是的夢想家,MuZero
混合動力是的是的世界模特兒

總結

概念描述
策略諮詢委員會最大熵 + 雙重批評者 + 自動溫度
TD3雙批評家+延遲+平滑
熵鼓勵勘探,政策穩健
政策外取樣效率高,重播緩衝