【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第1张图片
我的个人网站:天风的人工智能小站

我的CSDN账号Tian-Feng的博客_CSDN博客-机器学习领域博主

我的github账号:zhangwei668 - Overview

我的知乎账号:天风

文章目录

    • 一丶反向传播算法
      • 1.反向传播算法原理
      • 2. 反向传播算法实例
        • 2.1先算前向传播
        • 2.2 计算反向传播
        • 2.3 总结

一丶反向传播算法

1.反向传播算法原理

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第2张图片

要搞懂反向传播算法,首先弄清目的是为了什么,最终就是求误差函数对权重的导数,求到了可以干什么呢,看下图,

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第3张图片

这个公式是不是很眼熟,就是逻辑回归的权重更新公式,只不过变成二维,例如:w12表示上图X1-A2权重,求出误差函数对每个权重导数,设置一个学习率,通过不断更新权重,使得误差函数越来越小,训练出一个好的模型。
其实反向传播就是链式求导,J(w)可以理解为误差函数,就是先随机赋值权重Wij,然后进行正向传播,得到各个神经元的输出,然后反向求导对权重,带入正向传播求出的数值,得到误差函数对各个权重的导数,设置学习率,利用梯度下降不断更新权重,最后得到合适的权重。与逻辑回归算法类似。

那要怎么求误差函数对权重导数呢,其实就是链式求导,已知有输入X,权重(随机赋予),原始输出,激活函数(sigmoid),误差函数。

有了这些值可以求出上图各个神经元的输出(正向传播):举个栗子,上图

对于A1神经元:

img

这只是第一层隐藏层 ,到第二层,输出层,就是一层套着一层,误差函数就是原始输出跟预测输出的差值,所以当我们要求误差函数对权重导数:例如对W11,

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第4张图片

其中右边第一项还要继续拆分,这里不展开了。反正每一项大概都是这样求。 自此,基本完毕!

下面讲个例子,我相信大家应该懂了,不对是肯定懂了 。

2. 反向传播算法实例

假设存在以下神经网络,给出初始化权重和偏置量,激活函数为sigmoid

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第5张图片

2.1先算前向传播

  1. 先计算h1,h2:img

img img

同理可得: img

紧接着算下一层的o1,o2:imgimgimg

同理可得:img

\2. 计算误差imgimg同理可得:imgimg

2.2 计算反向传播

输出层:对于w5,想知道其改变对总误差有多少影响,于是得【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第6张图片

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第7张图片

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第8张图片

查看上图,其实反向传播就是链式求导,E可以理解为误差函数,就是先随机赋值权重,然后进行正向传播,得到各个神经元的输出,然后反向求导对权重,带入正向传播求出的数值,得到误差函数对各个权重的导数,设置学习率,利用梯度下降不断更新权重,最后得到合适的权重。与逻辑回归算法类似。

  • 如何求上述误差函数对w5求导公式,一步一步来:

img

img

imgimg

**
由此可得:

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第9张图片

为了减少误差,然后从当前的权重减去这个值(可选择乘以一个学习率,比如设置为0.5),得:img

又是熟悉的配方,按照上述步骤,可求其他权重。

[【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第10张图片](

  • 接下来求误差函数对w1的导数

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第11张图片

要想对w1求导,就需要对h1求导,而h1分别有w5,w7与o1,o2相连,所以求导公式稍变化

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第12张图片

这个与前面相差不大,合起来无非是变成两项,分别求出各项(有点想吐放松一下)

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第13张图片

1

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第14张图片

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第15张图片

3.综合可得,第二个公式按照上面步骤同理可得:img

合并:【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第16张图片

因为sigmoid函数求导公式为g(z)’ = g(z)*(1-g(z))

img

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第17张图片
全部合并:

【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第18张图片终于到最后一步了,不容易:

img同理:【反向传播算法搞不懂?看了几篇讲解还迷迷糊糊!我直接给你安排的明明白白!!!!】_第19张图片

2.3 总结

至此,算完了一轮更新的权重(w1 - w8),将他们重新带入神经网络,输出将会和原始输出差距减小,经过不停地迭代,最终误差函数会越来越小。

你可能感兴趣的:(深度学习,算法,人工智能)