当前位置:首页 » 操作系统 » 零梯度和算法

零梯度和算法

发布时间: 2023-07-13 06:34:54

1. 梯度下降的求解过程

顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)。
其迭代公式为 ,其中 代表梯度负方向, 表示梯度方向上的搜索步长。梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标ak+1看做是的函数,然后求满足f(ak+1)的最小值的 即可。
因为一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0.而采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。

2. 浅谈策略梯度(PG)算法

Policy Optimization(策略优化)是强化学习中的一大类算法,其基本思路区别于Value-based的算法。因此,很多教科书都将model-free RL分成两大类,Policy Optimization和Value-based。本系列博客将会参考OpenAI发布的入门教程 Spinning Up [1] ,Spinning Up系列是入门Policy Optimization的非常好的教材,特别适合初学者。Policy Gradient(策略梯度,简称PG)算法是策略优化中的核心概念,本章我们就将从最简单的PG推导开始,一步步揭开策略优化算法的神秘面纱。

如果用一句话来表达 策略梯度 的直观解释,那就是“如果动作使得最终回报变大,那么增加这个动作出现的概率,反之,减少这个动作出现的概率”。这句话表达了两个含义:

本节我们将一步步推导出策略梯度的基础公式,这一小节非常重要,理解了推导过程,就基本上理解了策略梯度的核心思想。所以,一定要耐心的把这一小节的内容全部看懂,最好能够达到自行推导的地步。

我们用参数化的神经网络表示我们的策略 ,那我们的目标,就可以表示为调整 ,使得 期望回报 最大,用公式表示:

在公式(1)中, 表示从开始到结束的一条完整路径。通常,对于最大化问题,我们可以使用梯度上升算法来找到最大值。

为了能够一步步得到最优参数,我们需要得到 ,然后利用梯度上升算法即可,核心思想就是这么简单。

关键是求取最终的 回报函数 关于 的梯度,这个就是 策略梯度 (policy gradient),通过优化策略梯度来求解RL问题的算法就叫做 策略梯度算法 ,我们常见的PPO,TRPO都是属于策略梯度算法。下面我们的目标就是把公式(2)逐步展开,公式(2)中最核心的部分就是 ,这也是这篇博客最核心的地方。





在以上的推导中,用到了log求导技巧: 关于 的导数是 。因此,我们可以得到以下的公式:

所以,才有公式(5)到公式(6),接下来我们把公式(7)进一步展开,主要是把 展开。先来看看

加入log,化乘法为加法:

计算log函数的梯度,并且约去一些常量:


因此,结合公式(7)和公式(9),我们得到了最终的表达式

公式(10)就是PG算法的核心表达式了,从这个公式中可以看出,我们要求取的策略梯度其实是一个期望,具体工程实现可以采用蒙特卡罗的思想来求取期望,也就是采样求均值来近似表示期望。我们收集一系列的 ,其中每一条轨迹都是由agent采用策略 与环境交互采样得到的,那策略梯度可以表示为:

其中, 表示采样的轨迹的数量。现在,我们完成了详细的策略梯度的推导过程,长舒一口气,接下来的工作就比较轻松了,就是在公式(10)的基础上修修改改了。

再进行简单修改之前,我们再总结一下公式(10),毕竟这个公式是PG算法最核心的公式:

我们继续观察公式(10),对于公式中的 ,表示整个轨迹的回报,其实并不合理。对于一条轨迹中的所有动作,均采用相同的回报,就相当于对于轨迹中的每一个动作都赋予相同的权重。显然,动作序列中的动作有好有坏,都采取相同的回报,无法达到奖惩的目的,那我们该怎么表示 “某个状态下,执行某个动作” 的回报呢?

一种比较直观思路是,当前的动作将会影响后续的状态,并且获得即时奖励(reward),那么我们只需要使用 折扣累计回报 来表示当前动作的回报就行了,用公式表示为:

这在spinning up中叫做reward to go,所以,公式(10)可以表示为:

当然,使用reward to go的权重分配还是相当初级,我们可以使用更加高级的权重分配方式,进一步减少回报分配的方差,限于篇幅原因,我们后续再聊。

本章我们花了大量的篇幅推导了策略梯度(PG)的核心公式,得到了关键表达式(10),理解该公式对于我们后续理解整个PG算法族非常有帮助,希望大家能够认真的理解这一公式推导过程。

我们是行者AI,我们在“AI+游戏”中不断前行。

如果你也对游戏感兴趣,对AI充满好奇,就快来加入我们吧~

3. 梯度下降法原理和步骤

一、梯度法思想
梯度法思想的三要素:出发点、下降方向、下降步长。
机器学习中常用的权重更新表达式为
:,这里的λ就是学习率,本文从这个式子出发来把机器学习中的各种“梯度”下降法阐释清楚。
机器学习目标函数,一般都是凸函数,什么叫凸函数?限于篇幅,我们不做很深的展开,在这儿我们做一个形象的比喻,凸函数求解问题,可以把目标损失函数想象成一口锅,来找到这个锅的锅底。非常直观的想法就是,我们沿着初始某个点的函数的梯度方向往下走(即梯度下降)。在这儿,我们再作个形象的类比,如果把这个走法类比为力,那么完整的三要素就是步长(走多少)、方向、出发点,这样形象的比喻,让我们对梯度问题的解决豁然开朗,出发点很重要,是初始化时重点要考虑的,而方向、步长就是关键。事实上不同梯度的不同就在于这两点的不同!
梯度方向是

,步长设为常数Δ,这时就会发现,如果用在梯度较大的时候,离最优解比较远,W的更新比较快;然而到了梯度较小的时候,也就是较靠近最优解的时候,W的更新竟然也保持着跟原来一样的速率,这样会导致W很容易更新过度反而远离了最优解,进而出现在最优解附近来回震荡。所以,既然在远离最优解的时候梯度大,在靠近最优解的时候梯度小,我们让步长随着这个律动,于是我我们就用λ|W|来代替Δ,最后得到了我们熟悉的式子:

所以说这时的λ是随着坡度的陡缓而变化的,别看它是个常数。
二、全量梯度下降法(Batch gradient descent)
全量梯度下降法每次学习都使用整个训练集,因此每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点,凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点,缺陷就是学习时间太长,消耗大量内存。
第二、随机梯度下降法(Stochastic Gradient Descent)
SGD一轮迭代只用一条随机选取的数据,尽管SGD的迭代次数比BGD大很多,但一次学习时间非常快。
SGD的缺点在于每次更新可能并不会按照正确的方向进行,参数更新具有高方差,从而导致损失函数剧烈波动。不过,如果目标函数有盆地区域,SGD会使优化的方向从当前的局部极小值点跳到另一个更好的局部极小值点,这样对于非凸函数,可能最终收敛于一个较好的局部极值点,甚至全局极值点。
缺点是,出现损失函数波动,并且无法判断是否收敛。

热点内容
linuxloadrunner 发布:2025-03-16 23:12:18 浏览:763
搭建fms服务器 发布:2025-03-16 23:11:27 浏览:977
代码编程图片 发布:2025-03-16 23:09:58 浏览:411
研发加密 发布:2025-03-16 23:09:51 浏览:608
哪些车有配置前后防撞钢梁 发布:2025-03-16 22:55:35 浏览:728
服务器怎么设置外网访问 发布:2025-03-16 22:53:03 浏览:185
安卓手机如何绕过缓存软件 发布:2025-03-16 22:35:16 浏览:242
c语言求职 发布:2025-03-16 22:34:23 浏览:429
在线教育培训源码 发布:2025-03-16 22:31:57 浏览:233
反编译vb工具 发布:2025-03-16 22:27:04 浏览:353