本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。
原文链接:深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
极市导读
本文详细介绍了深度强化学习中的软演员-评论家算法(SAC),包括其数学原理、网络架构设计以及PyTorch实现。
深度强化学习是人工智能领域最具挑战性的研究方向之一,其设计理念源于生物学习系统从经验中优化决策的机制。在众多深度强化学习算法中,软演员-评论家算法(Soft Actor-Critic, SAC)因其在样本效率、探索效果和训练稳定性等方面的优异表现而备受关注。
传统的深度强化学习算法往往在探索-利用权衡、训练稳定性等方面面临挑战。SAC算法通过引入最大熵强化学习框架,在策略优化过程中自动调节探索程度,有效解决了这些问题。其核心创新在于将熵最大化作为策略优化的额外目标,在保证收敛性的同时维持策略的多样性。
本文将系统阐述SAC算法的技术细节,主要包括:
-
基于最大熵框架的SAC算法数学原理
-
演员网络与评论家网络的具体架构设计
-
基于PyTorch的详细实现方案
-
网络训练的关键技术要点
SAC算法采用演员-评论家架构,演员网络负责生成动作策略,评论家网络评估动作价值。通过两个网络的协同优化,实现策略的逐步改进。整个训练过程中,演员网络致力于最大化评论家网络预测的Q值,同时保持适度的策略探索;评论家网络则不断优化其Q值估计的准确性。
接下来,我们将从演员网络的数学原理开始,详细分析SAC算法的各个技术组件:
演员(策略)网络
演员是由参数φ确定的策略网络,表示为:
这是一个基于状态输出动作的随机策略。它使用神经网络估计均值和对数标准差,从而得到给定状态下动作的分布及其对数概率。对数概率用于熵正则化,即目标函数中包含一个用于最大化概率分布广度(熵)的项,以促进智能体的探索行为。关于熵正则化的具体内容将在后文详述。演员网络的架构如图所示:
动作对数概率计算
完成动作计算后,就可以计算奖励和预期回报。演员的损失函数中还包含熵正则化项,用于最大化分布的广度。计算采样动作𝑎_t的对数概率Log(π_ϕ)时,从预tanh变换x_t开始分析更为便利。
至此完成了演员部分的推导,这里有动作又有对数概率,就可以进行损失函数的计算。下面是这些数学表达式的PyTorch实现:
import gymnasium as gym
from src.utils.logger import logger
from src.models.callback import PolicyGradientLossCallback
from pydantic import Field, BaseModel, ConfigDict
from typing import Dict, List
import numpy as np
import os
from pathlib import Path &nbs