首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
100 | WikiSQL任务简介
101 | ASDL和AST
102 | Tranx简介
103 | Lambda Caculus概述
104 | Lambda-DCS概述
105 | Inductive Logic Programming:基本设定
106 | Inductive Logic Programming:一个可微的实现
107 | 增强学习的基本设定:增强学习与传统的预测性建模有什么区别?
108 | 最短路问题和Dijkstra Algorithm
109 | Q-learning:如何进行Q-learning算法的推导?
110 | Rainbow:如何改进Q-learning算法?
111 | Policy Gradient:如何进行Policy Gradient的基本推导?
112 | A2C和A3C:如何提升基本的Policy Gradient算法
113 | Gumbel-trick:如何将离散的优化改变为连续的优化问题?
114 | MCTS简介:如何将“推理”引入到强化学习框架中
115 | Direct Policty Gradient:基本设定及Gumbel-trick的使用
116 | Direct Policty Gradient:轨迹生成方法
117 | AutoML及Neural Architecture Search简介
118 | AutoML网络架构举例
119 | RENAS:如何使用遗传算法和增强学习探索网络架构
120 | Differentiable Search:如何将NAS变为可微的问题
121 | 层次搜索法:如何在模块之间进行搜索?
122 | LeNAS:如何搜索搜索space
123 | 超参数搜索:如何寻找算法的超参数
124 | Learning to optimize:是否可以让机器学到一个新的优化器
125 | 遗传算法和增强学习的结合
126 | 使用增强学习改进组合优化的算法
127 | 多代理增强学习概述:什么是多代理增强学习?
128 | AlphaStar介绍:AlphaStar中采取了哪些技术?
129 | IMPALA:多Agent的Actor-Critic算法
130 | COMA:Agent之间的交流
131 | 多模态表示学习简介
132 | 知识蒸馏:如何加速神经网络推理
133 | DeepGBM:如何用神经网络捕捉集成树模型的知识
134 | 文本推荐系统和增强学习
135 | RL训练方法集锦:简介
136 | RL训练方法:RL实验的注意事项
137 | PPO算法
138 | Reward设计的一般原则
139 | 解决Sparse Reward的一些方法
140 | Imitation Learning和Self-imitation Learning
141 | 增强学习中的探索问题
142 | Model-based Reinforcement Learning
143 | Transfer Reinforcement Learning和Few-shot Reinforcement Learning
144 | Quora问题等价性案例学习:预处理和人工特征
145 | Quora问题等价性案例学习:深度学习模型
146 | 文本校对案例学习
147 | 微服务和Kubernetes简介
148 | Docker简介
149 | Docker部署实践
150 | Kubernetes基本概念
151 | Kubernetes部署实践
152 | Kubernetes自动扩容
153 | Kubernetes服务发现
154 | Kubernetes Ingress
155 | Kubernetes健康检查
156 | Kubernetes灰度上线
157 | Kubernetes Stateful Sets
158 | Istio简介:Istio包含哪些功能?
159 | Istio实例和Circuit Breaker
当前位置:
首页>>
技术小册>>
NLP入门到实战精讲(下)
小册名称:NLP入门到实战精讲(下)
### 111 | Policy Gradient:如何进行Policy Gradient的基本推导? 在强化学习(Reinforcement Learning, RL)的广阔领域中,策略梯度(Policy Gradient)方法占据了举足轻重的地位,尤其是在处理连续动作空间或复杂策略时表现出色。不同于基于值函数(如Q-learning)或基于模型的方法,策略梯度方法直接优化策略本身,使得在给定状态下选择最佳动作的概率最大化。本章将深入解析Policy Gradient的基本原理及其基本推导过程,为读者构建坚实的理论基础。 #### 一、引言 强化学习问题通常可以形式化为一个马尔可夫决策过程(MDP),其中包含四个关键元素:状态空间$S$、动作空间$A$、转移概率$P(s'|s, a)$以及奖励函数$R(s, a)$。目标是找到一个策略$\pi(a|s)$,该策略能够最大化从任意初始状态开始的累积折扣奖励,即期望回报$J(\pi)$。 策略$\pi$可以是任意的函数,它根据当前状态$s$输出一个动作$a$的概率分布。在Policy Gradient方法中,我们不直接优化价值函数(如Q值或V值),而是直接优化策略参数$\theta$,使得策略$\pi_\theta(a|s)$能够最大化期望回报。 #### 二、策略梯度定理 策略梯度定理是Policy Gradient方法的核心,它建立了策略参数梯度与期望回报梯度之间的关系。该定理表明,策略参数的更新方向应沿着能够增加期望回报的方向。 **定理(策略梯度定理)**:对于任意可微的策略$\pi_\theta(a|s)$,其关于参数$\theta$的梯度可以表示为: $$\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) R(\tau)\right]$$ 其中,$\tau = (s_0, a_0, r_0, s_1, a_1, r_1, \ldots, s_T, a_T, r_T)$表示一条完整的轨迹,$R(\tau) = \sum_{t=0}^T \gamma^t r_t$是轨迹的总折扣奖励,$\gamma$是折扣因子。 这个定理的关键在于引入了$\log \pi_\theta(a_t|s_t)$项,它作为权重因子,使得在轨迹中表现好的动作(即导致高奖励的动作)对应的策略参数得到更多的正向更新,而表现差的动作则得到较少的更新或负向更新。 #### 三、基本推导过程 为了更清晰地理解策略梯度定理的推导,我们可以从期望回报的定义出发,逐步推导。 **步骤1:期望回报的定义** 首先,我们定义期望回报$J(\theta)$为从初始状态$s_0$开始,遵循策略$\pi_\theta$所得到的累积折扣奖励的期望值: $$J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[R(\tau)] = \mathbb{E}_{\tau \sim \pi_\theta}\left[\sum_{t=0}^T \gamma^t r_t\right]$$ **步骤2:利用链式法则** 为了找到$J(\theta)$关于$\theta$的梯度,我们可以使用链式法则(也称为微积分的链式规则)。然而,由于$J(\theta)$是通过复杂的采样过程(即轨迹$\tau$)定义的,直接应用链式法则并不直观。因此,我们考虑将期望回报重写为状态访问频率的加权平均,即: $$J(\theta) = \sum_s d^{\pi_\theta}(s) \sum_a \pi_\theta(a|s) R_s^a$$ 其中,$d^{\pi_\theta}(s)$是在策略$\pi_\theta$下状态$s$的稳态分布,$R_s^a = \mathbb{E}[r_t | s_t=s, a_t=a]$是从状态$s$采取动作$a$后得到的即时奖励的期望值。 **步骤3:对$J(\theta)$求导** 现在,我们对$J(\theta)$关于$\theta$求导。由于$d^{\pi_\theta}(s)$和$R_s^a$通常与$\theta$无直接关系(除非环境是动态的且依赖于策略),我们主要关注$\pi_\theta(a|s)$的导数。应用链式法则和概率的对数导数技巧,我们得到: $$\nabla_\theta J(\theta) = \sum_s d^{\pi_\theta}(s) \sum_a \nabla_\theta \pi_\theta(a|s) R_s^a$$ 由于$\nabla_\theta \pi_\theta(a|s) = \pi_\theta(a|s) \frac{\nabla_\theta \pi_\theta(a|s)}{\pi_\theta(a|s)} = \pi_\theta(a|s) \nabla_\theta \log \pi_\theta(a|s)$,上式可进一步化简为: $$\nabla_\theta J(\theta) = \sum_s d^{\pi_\theta}(s) \sum_a \pi_\theta(a|s) \nabla_\theta \log \pi_\theta(a|s) R_s^a$$ 注意到,这里的$R_s^a$是状态-动作对的即时奖励期望值,但在实际中,我们往往只能获得整个轨迹的总奖励。因此,我们用一个更实用的形式来表示梯度,即使用轨迹的总折扣奖励$R(\tau)$来替代$R_s^a$,并通过期望来整合所有可能的轨迹: $$\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) R(\tau)\right]$$ 这正是策略梯度定理的表达式。 #### 四、实现与优化 在实际应用中,直接计算上述梯度是不切实际的,因为我们需要遍历所有可能的轨迹。因此,通常采用蒙特卡洛采样(Monte Carlo sampling)或时间差分(Temporal Difference, TD)学习的方法来近似这个梯度。 - **蒙特卡洛方法**:通过多次模拟来估计$R(\tau)$,并据此更新策略参数。这种方法简单直观,但样本效率低,尤其是在高维状态空间中。 - **REINFORCE算法**:是蒙特卡洛策略梯度方法的一个典型实现,它使用轨迹的总奖励来作为梯度估计中的权重。 - **Actor-Critic方法**:结合了值函数估计和策略梯度,通过引入一个Critic网络来估计动作值函数(Q值或V值),从而提供更稳定的梯度估计。 此外,为了改善策略梯度的学习效率和稳定性,还可以采用多种技巧,如基线减除(Baseline Subtraction)、重要性采样(Importance Sampling)和熵正则化(Entropy Regularization)等。 #### 五、结论 通过本章的探讨,我们深入理解了Policy Gradient方法的基本原理及其基本推导过程。策略梯度定理为我们提供了直接优化策略参数的途径,使得在复杂环境中学习最优策略成为可能。然而,实际应用中仍需考虑多种因素,如样本效率、学习稳定性等,并采取相应的优化措施。希望本章的内容能为读者在强化学习领域,尤其是Policy Gradient方法的研究与实践提供有力支持。
上一篇:
110 | Rainbow:如何改进Q-learning算法?
下一篇:
112 | A2C和A3C:如何提升基本的Policy Gradient算法
该分类下的相关小册推荐:
ChatGPT大模型:技术场景与商业应用(中)
巧用ChatGPT快速搞定数据分析
PyTorch 自然语言处理
AI时代产品经理:ChatGPT与产品经理(下)
程序员必学数学基础课
python与ChatGPT让excel高效办公(下)
企业AI之旅:深度解析AI如何赋能万千行业
ChatGPT写作超简单
ChatGLM3大模型本地化部署、应用开发与微调(下)
可解释AI实战PyTorch版(下)
深度强化学习--算法原理与金融实践(五)
深度强化学习--算法原理与金融实践(四)