今天继续回归卷积神经网络的入门教程,主要是介绍全连接网络的训练过程,通俗的讲就是我们入门教程(1)里面讲的是全连接网络长什么样,神经元之间的关系是什么样的,里面的参数代表什么意思,这些都是说了的,对吧!然后全连接网络的训练就是怎么计算参数的值是多少,比如说我们有一直线方程y=kx + b,里面的k和b就是两个未知的参数,然后计算这两个参数就是通过两个点的坐标,利用二元一次方程组来计算。这个计算的过程,在NN里面叫做训练!也就是说网络(也可以理解为模型或者方程)建好了以后是不知道里面的参数值是多少的,需要根据计算得到。然后我们把计算的方法叫做算法,而今天要讲的是反向传播算法,他是训练NN的一个经典算法,而且是很多网络的基础,所以要清楚的掌握!!!
这里先澄清一下概念,我们题目里面的卷积神经网络这个鬼,他不是一个定理或者定义,什么意思呢,就是它是可变的,你可以让他是什么样,他就是什么样,别犯糊涂。一般的卷积神经网络包含卷积层和下采样层,最后是全连接的NN。什么是下采样的?还记得入门教程(1)里面最后那张gif图吗,一个5x5的原始图像,经过一个大小为3x3的卷积核得到了一个3x3大小的图片(最后得到图片大小的计算公式:5-3+1=3,这里默认strides=1,padding=0,先埋个坑,后面再讲什么是strides和padding)。这里是得到了3x3的图片,如果我们的输入图像很大呢,比如是256x256的,那么用3x3的卷积核卷积一下得到的图片大小就是(256-3+1)x(256-3+1)=254x254大小的一张图,如果给这张图再做一次下采样,那么这张图就变为了原来图片的1/4。看一下下面这个图,先简单有个认识,后面我会把卷积神经网络的常用的层(Conv,BN,Pooling,Sampling,Activation,etc)都单独讲一次。
划重点:1. BP反向传播算法是对全连接神经网络的一种训练过程,他其实就是梯度下降+链式求导法则组成。2.一般的CNN也包括全连接层,全连接层前面的卷积层,下采样层都是直接对像素进行操作(有没有很熟悉?看前面的图像滤波的文章)。所以BP也可以训练CNN。
还是那句话,讲这个的教程网上一大堆一大堆的,但是我就是比较无聊,在重复一遍吧!No,我要和别人讲的不一样,而且让你看了以后一定可以学会,就是这么自信!今天我将会通过我见过的最直观的讲解方式,加上我自己幽默风趣(dou bi)的语言讲给大家。停!
开始正题
Step 0: 今天的图1是一个包含1个Inputs,3个Hidden Layer,1个Outputs的全连接神经网络。圈圈代表?神经元。神经元里面写的f1,f2, f3, f4, f5 这些是激活函数,也就是输入和权重相乘相加(相爱相杀)之后得到的值在作为函数f的输入,其他同理。
图1(如果显示不完全,请点开看大图)
Step 1:由输入x1,x2组成的输入向量和权重w1,w2相乘得到的值作为f1的输入,计算结果y1作为Hidden 2 的第一个输入向量。同理可得y2, y3, y4, y5, y,看图2-6 ,今天图有点过,费点流量能彻底学会BP算法不过也值了,下次再有人问你的时候,就不会有任何问题。
图2-6
Step 2: 图7是根据y的值计算损失,z是真实值,真实值和预测值之差就得到我们的损失。
Step 3:重点来了,Step 2计算得到的是Hidden 3和Outputs之间的损失,现在要计算Hidden 2和Hidden 3之间的损失,就是Hidden 3和Outputs之间的损失和权重的积deta4。
同理可以计算deta5,deta6,deta1,deta2,deta3。如图8-12.
图8-12
Step 4:Step 4开始利用梯度下降法计算新的权重参数,计算新的参数的过程就是神经网络的训练过程,神经网络的学习过程就是计算参数的过程,当全部参数都更新完的时候,神经网络就完成了一次训练。接下来计算新的参数的方法就是我们上一篇讲的梯度下降法的内容。其中w1是权重初始值,aita是学习率(以前说过哦~),注意看清新的权重加号后面一部分,是由4项组成的哦,应该清楚每一项代表的意思。同理可以得到图13-18的.
看完这么图,不知道有没有看懂,有没有哪里还不明白的地方?下面我把需要注意的地方说下。
划重点:
今天就写到这里了,下一次我会把常用的网络层做一个总结介绍,希望大家关注哦!
[参考文献]