【机器学习】机器学习的基本分类-强化学习-Actor-Critic 方法

Actor-Critic 是一种结合了策略优化(Policy Gradient)和价值函数近似的强化学习算法。它通过同时训练一个 Actor(策略网络) 和一个 Critic(价值网络) 来改进学习效率和稳定性。


核心思想

  1. Actor

    • 负责生成动作,直接表示策略 ,即在给定状态 s 下选择动作 a 的概率分布。
    • Actor 的目标是通过策略梯度法最大化累计回报。
  2. Critic

    • 负责评估 Actor 的动作质量,使用状态值函数 或动作-状态值函数
    • Critic 提供 Actor 的优化方向。
  3. 协作

    • Actor 使用 Critic 提供的值函数或优势函数(Advantage Function)来改进策略。
    • Critic 通过 Actor 的采样结果更新值函数。

算法流程

1. 初始化
  • 初始化 Actor 的策略参数
  • 初始化 Critic 的价值参数
2. 交替更新
  1. 采样

    • 使用 Actor 的策略 在环境中采样得到轨迹
  2. Critic 更新

    • 计算目标值

    • 最小化 Critic 的损失:

  3. Actor 更新

    • 计算 Advantage Function(优势函数):

    • 使用策略梯度法更新 Actor 的参数:

  4. 重复以上步骤,直至收敛。


优势与改进

优点
  1. 结合策略优化与值函数近似
    • 提高了策略更新的稳定性。
  2. 连续动作空间
    • 适用于离散和连续动作空间。
缺点
  1. 高方差问题
    • 策略梯度方法固有的方差问题可能影响收敛。
  2. 价值函数的估计偏差
    • Critic 的值函数估计误差可能影响策略优化。
改进方法
  1. A3C(Asynchronous Advantage Actor-Critic)
    • 多线程并行更新,提升学习效率。
  2. PPO(Proximal Policy Optimization)
    • 引入限制更新步幅的机制,改进稳定性。
  3. SAC(Soft Actor-Critic)
    • 最大化策略熵,提升探索能力。

Python 示例

以下是一个简单的 Actor-Critic 框架示例(伪代码):

python 复制代码
import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim

# 定义 Actor 网络
class Actor(nn.Module):
    def __init__(self, state_dim, action_dim):
        super(Actor, self).__init__()
        self.fc = nn.Sequential(
            nn.Linear(state_dim, 128),
            nn.ReLU(),
            nn.Linear(128, action_dim),
            nn.Softmax(dim=-1)
        )

    def forward(self, state):
        return self.fc(state)

# 定义 Critic 网络
class Critic(nn.Module):
    def __init__(self, state_dim):
        super(Critic, self).__init__()
        self.fc = nn.Sequential(
            nn.Linear(state_dim, 128),
            nn.ReLU(),
            nn.Linear(128, 1)
        )

    def forward(self, state):
        return self.fc(state)

# 初始化环境和参数
state_dim = 4
action_dim = 2
actor = Actor(state_dim, action_dim)
critic = Critic(state_dim)
actor_optimizer = optim.Adam(actor.parameters(), lr=1e-3)
critic_optimizer = optim.Adam(critic.parameters(), lr=1e-3)

# 训练循环
for episode in range(1000):
    state = env.reset()
    while not done:
        # Actor 选择动作
        state_tensor = torch.tensor(state, dtype=torch.float32)
        action_probs = actor(state_tensor)
        action = np.random.choice(action_dim, p=action_probs.detach().numpy())

        # 交互环境
        next_state, reward, done, _ = env.step(action)

        # 计算 Advantage
        state_value = critic(state_tensor)
        next_state_tensor = torch.tensor(next_state, dtype=torch.float32)
        next_state_value = critic(next_state_tensor)
        advantage = reward + gamma * next_state_value - state_value

        # 更新 Critic
        critic_loss = advantage.pow(2).mean()
        critic_optimizer.zero_grad()
        critic_loss.backward()
        critic_optimizer.step()

        # 更新 Actor
        log_prob = torch.log(action_probs[action])
        actor_loss = -(log_prob * advantage.detach())
        actor_optimizer.zero_grad()
        actor_loss.backward()
        actor_optimizer.step()

        state = next_state

应用场景

  1. 机器人控制
    • 用于机械臂、移动机器人等连续控制任务。
  2. 游戏 AI
    • 复杂决策场景,如棋牌或模拟游戏。
  3. 自动驾驶
    • 强化学习中的路径规划或驾驶决策模块。

Actor-Critic 是强化学习中的一个重要框架,通过组合策略优化与价值函数评估,实现了高效的策略学习。针对实际问题的具体需求,可以进一步结合改进算法来提高性能和适用性。

相关推荐
小雨下雨的雨2 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
我没胡说八道5 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟5 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love5 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇5 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明5 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc5 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技5 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本5 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
极客老王说Agent5 小时前
2026电信IDC机房巡检深度报告:人工巡检频次和深度够吗?实在Agent重塑智慧运维新范式
人工智能·ai·chatgpt