假设我们有一个神经网络,由一些参数向量参数化。我们想要调整这个网络的参数,所以网络的输出在某种程度上发生了变化。在大多数情况下,我们会有一个损失函数来搭盯穗告诉我知卜们的网络它的输出应该如何变化。
利用反向传播,我们计算每个参数对损失函数的导数。这些导数代表了我们可以更新参数以得到损失函数中最大变化的方向,我们称之为梯度。
然后我们可以调整梯度方向上的参数,通过一小段距离,以训练我们的网络。
在我们如何定义“小距离”时出现了一个小问题。
在标准梯度下降法中,距离是指参数空间中的欧氏距离。
然而,根据调整参数的多少来定义“距离”并不总是正确的。为了形象化,我们来看两对高斯分布。
两个分布中,均值都从-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/
阅读原文
鸡尾酒会问题是在计算机 语音识别 领域的一个问题。
当前语音识别技术已经可以以较高精度识别一个人所讲的话,但是当说话的人数为两人或者多族野人时,语音识别率就会极大的降低 ,这一难题被称为鸡尾酒会问题。
该问题 给定混合信号 ,分离出虚穗枣鸡尾酒会中 同时说话的每个人的独立信号 。
设有N个信号源(N个人说话)
通常假设观察信号也有N个(N个麦克风)
该假设意味着混合矩阵是个方阵(每个麦克风都接收了N个人说话的声音)
即 J = D,其中D是输入数据的维数,J是系统模型的维数。
要分离出鸡尾酒会中同时说话的每个人的独立信号,常用的方法是盲信号分离算法。
盲信号(Blind Source Separation,BSS)分离指的是 从多个观测到的混合信号中分析出没有观测的原始信号 。通常观测到的 混合信号(麦克风接收到) 来自 多个传感器(多个人说话) 的输出,并且传感器的输出信号独立(线性不相关)。
盲信号的 “盲” 字强调了两点:
我们先看只有 2 个信号源的情况,则观测信号也只有 2 个。
矩阵表达形式:
A 11 :1号麦克风接收到1号人的声音;
A 12 :1号麦克风接收到2号人的声音;
所以, x 1 = A 11 ·S 1 + A 12 ·S 2 ,为1号麦克风得到的混合声音。
因为信号混合方法未知,所以 A 矩阵未知。
模型最终目的,y 1 = S 1 ,y 2 = S 2 。
理想状态下,W 矩阵 是 A 矩阵 的 逆矩阵。
由于参数空间不是欧几里得度量(两点间直线),在大多的情况下都是黎曼度量(两点间弧线,即空间参数向量不是线性变化差拆的),因此对于W矩阵的求解选用 自然梯度解法 。
比较 W(n+1) 与 W(n) 两个矩阵的差异 需要用 黎曼度量 (相似性度量)。
自然梯度法计算公式:
计算步骤:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)