如果我们采用多层BP神经网络去训练1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话,就有 1 0 12 10^{12} 1012个连接,也就是 1 0 12 10^{12} 1012个权值参数。这训练量是很惊人的.卷积神经网络使用权值共享网络结构,降低了网络模型的复杂度,减少了权值的数量。
卷积网络是一个生物神经网络.其的结论来源于一只猫.
D.H.Hubel 和 T.N.Wiesel直接将示波器插入猫的视觉神经中,观察猫在看东西时的波形变化.提出了感受野(receptive field)的概念
假设猫 t t t时刻看到局部图片产生的信号值的函数为 h ( t ) h(t) h(t),图片移动的函数为 x ( t ) x(t) x(t),
将它们放在同一坐标系,即卷积就是描述两个函数相互作用的结果 y ( t ) = x ( t ) ∗ h ( t ) y(t)=x(t)*h(t) y(t)=x(t)∗h(t)
这是一种自适应,平移不变的 识别模式
移动窗口,计算特征图中的第二个值,注:对应位置权值不变.最终得图
一个卷积的计算过程完成了,生成了一个特征图. 这个过程还有一些其他的知识点:
W W W值相当于filter,他的不同,可以构造出不同的特征图,多提供几个filter就可以有多几个特征.效果如下
一种典型的用来识别数字的卷积网络是LeNet-5。当年美国大多数银行就是用它来识别支票上面的手写数字的。能够达到这种商用的地步,它的准确性可想而知。
下采样中如果发现输入不能数据不规整
- 空白地方补0
- 上采样,即下采样的逆算法
卷积神经网络采用BP网络相同的学习算法,来学习对应的权值.
卷积神经网络在提取图象特征上面有显著的效果,但随着卷积层的堆叠,识别准确率反而下来了.学习算法随着层数变多,梯度消失了.残差网络怎么有效缓解梯度消失问题?
图中 x x x表示输入, H ( x ) H(x) H(x)表示输出.
假设我们有如下的一个网络,它可以在训练集和测试集上可以得到很好的性能。
接着我们构造如下的网络,前面4层的参数复制于上面的网络,训练时这几层的参数保持不变。换言之,我们只是在上面的网络新增加了几个紫颜色表示的层。
相信大家预想的结果是一样的,理论上,这个新的网络在训练集或者测试集上的性能要比第一个网络的性能好,毕竟多了几个新增加的层提取特征。然后,实际上这个新的网络却比原先的网络的性能要差(梯度消失)。
理论上,由于我们copy了前四层的参数,理论上前四层已经足够满足我们的性能要求,那么新增加的层便显得有些多余,如果这个新的网络也要达到性能100%,则新增加的层要做的事情就是“恒等映射”,也即后面几个紫色的层要实现的效果为 f ( x ) = x f(x)=x f(x)=x 。这样一来,网络的性能一样能达到100%。而退化现象也表明了,实际上新增加的几个紫色的层,很难做到恒等映射.
这时候,巧妙的通过添加”桥梁“,使得难以优化的问题瞬间迎刃而解。
可以看到通过添加这个桥梁,把数据原封不动得送到FC层的前面,而对于中间的紫色层,可以很容易的通过把这些层的参数逼近于0,进而实现 f ( x ) = x f(x)=x f(x)=x 的功能。
通过跳连接,可以把前四层的输出先送到FC层前面,也就相当于告诉紫色层:”兄弟你放心,我已经做完98%的工作了,你看看能不能在剩下的2%中发点力,你要是找不出提升性能的效果也没事的,我们可以把你的参数逼近于0,所以放心大胆的找吧。
当然了,实际上网络运行的时候,我们并不会知道哪几层就能达到很好的效果,然后在它们的后面接一个跳连接,于是一开始便在两个层或者三个层之间添加跳连接,形成残差块,每个残差块只关注当前的残余映射,而不会关注前面已经实现的底层映射
神经网络无非是拟合一个复杂的函数映射关系,而通过跳链接,可以很好的“切割”这种映射关系,实现“分步”完成。
从数学定量分析的角度去看,残差网络是如何解决梯度消失的问题的
如图A,B,C,D为不同的网络模块.
梯度消失的一般原因是因为在连乘导致梯度为0,而上图在计算梯度的时候前面加一个1,可以有效避免梯度消失的问题,所以可以加深网络层之后,也可以训练的很好。
《Deep Learning(深度学习)学习笔记整理系列之(七)》
《请简短地描述卷积(convolution)》
《从头深度学习(经典卷积网络篇)- LeNet-5》
《卷积神经网络》
《为什么残差连接的网络结构更容易学习?》
《残差神经网络为何可以缓解梯度消失?》