MLP多层感知机梯度推导与反向传播 | 您所在的位置:网站首页 › 函数求导链式法则怎么求 › MLP多层感知机梯度推导与反向传播 |
MLP多层感知机梯度推导与反向传播
1.MLP梯度推导 2.MLP链式法则 3.MLP反向传播 1.MLP梯度推导单输出感知器模型: ![]() 运算法则: 输入X乘以权重W得到y,再通过激活函数得到输出(O)。在这里,激活函数是sigmoid函数。 E是loss函数值,这里是输出值(output)与真实值(target)的欧式距离。
E的大小是评价感知器模型好坏的指标之一,w权重是描述这个感知器模型的参数,通过计算E来优化感知器模型,即优化w的值。
红色部分使用了链式法则,链式法则其实就是连续求导,这里将求得sigmoid函数的导数。sigmoid导数如何求,将在下一环节展示。求得的sigmoid导数是s‘(x) = s(x)(1 - s(x)) 现在把单个输出的感知器模型推广成多输出感知器模型。 ![]() 按照上面的思路,求w的梯度: 从上图加粗的线可以知道,Wjk只对Ok值有贡献,对Oi(i不等于k)没有贡献。因此Oi(i不等于k)对Wjk的偏导为0。换句话说,相关梯度与输入结点有关。 以上,梯度推导完毕。 2.MLP链式法则求导过程: 链式法则如下: ![]() 多层感知器模型: ![]() 参考上面的公式推导,现在完成从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中求得 ![]() 图7在图5和图6的基础上,求得 以上,整个推导流程完毕。推导的时候,如果有疑惑一定要参考图示。 参考:网易公开课。
|
CopyRight 2018-2019 实验室设备网 版权所有 |