MLP多层感知机梯度推导与反向传播 您所在的位置:网站首页 函数求导链式法则怎么求 MLP多层感知机梯度推导与反向传播

MLP多层感知机梯度推导与反向传播

2024-07-18 01:16| 来源: 网络整理| 查看: 265

MLP多层感知机梯度推导与反向传播

1.MLP梯度推导

2.MLP链式法则

3.MLP反向传播

1.MLP梯度推导

单输出感知器模型:

图1

运算法则:

输入X乘以权重W得到y,再通过激活函数得到输出(O)。在这里,激活函数是sigmoid函数。

E是loss函数值,这里是输出值(output)与真实值(target)的欧式距离。

 

E的大小是评价感知器模型好坏的指标之一,w权重是描述这个感知器模型的参数,通过计算E来优化感知器模型,即优化w的值。

表示第I层,第j个输入链接第k个输出的权值w。以下先对一个权重(值)w求得感知器模型的梯度。

红色部分使用了链式法则,链式法则其实就是连续求导,这里将求得sigmoid函数的导数。sigmoid导数如何求,将在下一环节展示。求得的sigmoid导数是s‘(x) = s(x)(1 - s(x))

现在把单个输出的感知器模型推广成多输出感知器模型。

图2

按照上面的思路,求w的梯度:

从上图加粗的线可以知道,Wjk只对Ok值有贡献,对Oi(i不等于k)没有贡献。因此Oi(i不等于k)对Wjk的偏导为0。换句话说,相关梯度与输入结点有关。

以上,梯度推导完毕。

2.MLP链式法则

 求导过程:

链式法则如下: 

图3

3.MLP反向传播 

多层感知器模型:

图4

参考上面的公式推导,现在完成从1到K的泛化处理。

首先根据前面的结论,梯度推导为:

针对多层感知器,x是该层的输入,即是上一层的输出O。如果这里用x表示会有歧义,因为O = sigmoid(x),x必须经过激活函数之后才会得到O,所以对多层感知器而言,梯度推导为:

K-1便是上图所对应的J。

现在,我们对结合上述结论,以及链式法则,完成下一层的梯度求导,即对求导。

先求到K层的梯度,继续使用链式法则,在K层的梯度上继续求第J层。

上述推导可以参考图4完成。I,J,K是连续的3层,即J = I + 1,K = J + 1。

通过上述推导,仔细的同学应该能发现其中的一定的规律,现在开始对其简化。

对第K层的第k结点有:

其中:

同理,对第J(K = J + 1)层的第j个结点有:

其中:

现在开始说反向传播。如果通过前向通路求得个个参数的梯度十分困难和繁琐。比如你需要先对第I层求得梯度,然后又求得第J层,最后是第K层。这样会重复计算,会造成资源浪费。对于反向传播的详细概念这里不赘述,可以参考:

https://www.jianshu.com/p/964345dddb70

如果使用反向传播的话,可以一次计算所有参数。如同上述推导过程一样,如果你要对第J层(第J层不是输出层,第K层是输出层)求得梯度,那么必须要经过求得第K层(输出层)梯度基础上才行,第I层,I-1,...,0层(输入层)同理。参考以下图示理解:

图5

图5求得

图6

在图5的基础上,在图6中求得。依此类推:

图7

图7在图5和图6的基础上,求得

以上,整个推导流程完毕。推导的时候,如果有疑惑一定要参考图示。

参考:网易公开课。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有