自然梯度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然梯度相关的知识,希望对你有一定的参考价值。
参考技术A 首先,我们必须理解标准梯度下降。假设我们有一个神经网络,由一些参数向量参数化。我们想要调整这个网络的参数,所以网络的输出在某种程度上发生了变化。在大多数情况下,我们会有一个损失函数来告诉我们的网络它的输出应该如何变化。
利用反向传播,我们计算每个参数对损失函数的导数。这些导数代表了我们可以更新参数以得到损失函数中最大变化的方向,我们称之为梯度。
然后我们可以调整梯度方向上的参数,通过一小段距离,以训练我们的网络。
在我们如何定义“小距离”时出现了一个小问题。
在标准梯度下降法中,距离是指参数空间中的欧氏距离。
然而,根据调整参数的多少来定义“距离”并不总是正确的。为了形象化,我们来看两对高斯分布。
两个分布中,均值都从-1变化到1,距离都是2。然而,很明显,第一个分布的变化比第二个大得多。
这就引出了一个关键的观点:我们的梯度测量的是改变参数对输出的影响程度。但是,必须在上下文中看到这对输出的影响:第一个分布中+2的移位比第二个分布中+2的移位意味着更多。
自然梯度的作用是重新定义我们更新参数的“小距离”。并非所有参数都相等。与其平等地对待每个参数的变化,我们需要根据每个参数的变化对我们网络的整个输出分布的影响程度来衡量它。
首先,我们定义一种新的距离形式,它对应于基于KL散度的距离,KL散度是一种衡量新分布和旧分布差异的度量。
我们通过定义一个度量矩阵来实现这一点,它允许我们根据一些定制的度量来计算向量的距离。
对于一个有5个参数的网络,我们的度量矩阵是5x5。为了用metric计算参数delta变化的距离,我们使用下面的方法
如果我们的度规矩阵是单位矩阵,这个距离和我们用欧几里得距离是一样的。
然而,大多数时候我们的度规不是单位矩阵。有了度量,我们对距离的测量就可以考虑各种参数之间的关系。
结果是,我们可以用费雪信息矩阵作为度规,它可以用KL散度来度量delta距离。
费雪信息矩阵是KL散度的二阶导数
现在我们有了一个度量矩阵,它根据给定参数变化时的KL散度来度量距离。
这样,我们就可以计算出标准梯度应该如何缩放。
证明过程
https://wiseodd.github.io/techblog/2018/03/14/natural-gradient/
http://kvfrans.com/what-is-the-natural-gradient-and-where-does-it-appear-in-trust-region-policy-optimization/
策略梯度(Policy Gradient)
参考技术A 强化学习方法主要分为两类,一类是Model-based,另外一种是Model free,如图所示:而Model Free中又包含两种方法,其中一种是基于策略的角度考虑的方法,而Policy Gradient则是Policy based的基础方法。Value based的典型方法则是Q-learning方法,Actor-Critic则是Value based和Policy based方法相结合,它拥有两个Networks,分别是Actor和Critic,Actor使用Policy based的方法,Critic使用的是Value based的方法。
公式如下所示:
推导过程如下所示:
其中,s代表state,a代表action,pi代表我们的policy策略,也就是一个policy network,输入是state,输出是一个action,R代表Reward。
该Deep network的框架如下所示:
该网络输入为当前的状态(如游戏画面,五子棋的盘面等),输出则为各个Action的概率(假设总共有3个Actions)。因此,Policy Gradient公式可以理解为在当前State的状态下,采取不同Action的概率乘以其相应的权重,也就是其Reward。
1. Reinforcement Learning An Introduction
2. 李宏毅.DRL Lecture1
3. https://blog.csdn.net/qq_30615903/article/details/80747380
以上是关于自然梯度的主要内容,如果未能解决你的问题,请参考以下文章