长期以来,人们一直认为非凸优化的难点在于容易陷入局部最小,例如下图所示的Ackley函数。
然而,LeCun和Bengio的研究表明,在high-D(高维)的情况下,局部最小会随着维度的增加,指数型的减少,在深度学习中,一个点是局部最小的概率非常小,同时鞍点无处不在。
这是各种优化方法逃离鞍点的动画。
参考:
https://mp.weixin.qq.com/s/Cava8C_s4JikR0BTHx__KQ
神经网络逃离鞍点
在DL领域,欠拟合意味着神经网络没有学到该学习的特征,而过拟合则意味着神经网络学习到了不该学习的特征。
在之前的描述中,我们一直强调过拟合的风险,然而实际上,欠拟合才是DL最大的敌人。
过拟合至少在训练集上表现出色,可以想象如果预测样本恰好和训练集样本近似的话,则模型是能够正确预测的。而欠拟合基本什么也做不了。
比如下面的场景:
1.对同一训练样本集\(T_1\),进行两次训练,分别得到模型\(M_1,M_2\)。
2.使用\(M_1,M_2\)对同一测试样本集\(T_2\)进行预测,得到预测结果集\(P_1,P_2\)。
3.如果\(P_1,P_2\)的结论基本相反的话,则说明发生了欠拟合现象。而过拟合则并没有这么夸张的效果。
参考:
https://mp.weixin.qq.com/s/zv8Mtch5Klm-qSgyBxI9QQ
六步走,时刻小心过拟合
https://zhuanlan.zhihu.com/p/74553341
过参数化、剪枝和网络结构搜索
如果你切换到工业级数据集,上亿条数据的时候,你会发现有些模型会随着数据量的增大,效果持续变好,而其他模型,一开始随着数据增加上升很快,但慢慢就会进入一个瓶颈期,再怎么增加数据都无法提高了。我们一般认为这是模型容量导致的。
在继续后续讲解之前,我们首先给出常见神经网络的结构图:
上图的原地址为:
http://www.asimovinstitute.org/neural-network-zoo/
单元结构:
层结构:
上图的原地址为:
http://www.asimovinstitute.org/neural-network-zoo-prequel-cells-layers/
参考:
https://mp.weixin.qq.com/s/ysnLwvbSD4fcL5LK7wSnyA
MIT高赞深度学习教程:一文看懂CNN、RNN等7种范例
卷积神经网络(Convolutional Neural Networks,ConvNets或CNNs)属于神经网络的范畴,已经在诸如图像识别和分类的领域证明了其高效的能力。
CNN的开山之作是Yann LeCun的论文:
《Gradient-Based Learning Applied to Document Recognition》
科学界的许多重要成果的开山之作,其名称往往和成果的最终名称有一定的差距。比如LeCun的这篇文章的名称中,就没有CNN。类似的还有Vapnik的SVM,最早被称为Support Vector Network。
英文不好的,推荐以下文章:
http://www.hackcv.com/index.php/archives/104/
CNN的直观解释
https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
上面文章的英文版本
这里以最经典的LeNet-5为例,提点一下CNN的要点。
LeNet-5的caffe模板:
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt
在《数学狂想曲(十六)》中我们讨论了卷积的数学含义,结合《 图像处理理论(一)》和《 图像处理理论(二)》,不难看出卷积或者模板(算子, kernel, filter),在前DL时代,几乎是图像处理算法的基础和灵魂。
为了实现各种目的,人们手工定义或发现了一系列算子:
到了DL时代,卷积仍然起着非常重要的作用。但这个时候,不再需要人工指定算子,算子本身也将由学习获得。我们需要做的只不过是指定算子的个数而已。
上面的两图形象的指出了ML和DL的差别。
比如,LeNet-5的C1:6@28*28,其中的6就是算子的个数。显然算子的个数越多,计算越慢。但太少的话,又会导致提取的特征数太少,神经网络学不到东西。
需要注意的是,传统的CV算法中,通常只有单一的卷积运算。而CNN中的卷积层,实际上包括了卷积+激活两种运算,即:
\[L_2=\sigma(Conv(L_1,W)+b)\]因此,相比全连接层而言,卷积层每次只有部分元素参与到最终的激活运算。从宏观角度看,这些元素实际上对应了图片的局部空间二维信息,它和后面的Pooling操作一道,起到了空间降维的作用。
实际上,传统的MLP(MultiLayer Perceptron)网络,就是由于1D全连接的神经元控制了太多参数,而不利于学习到稀疏特征。
CNN网络中,2D全连接的神经元则控制了局部感受野,有利于解离出稀疏特征。
至于激活函数,则是为了保证变换的非线性。这也是CNN被归类为NN的根本原因。
参考:
https://mp.weixin.qq.com/s/dIIWAKv9woLO8M0CyN8lsw
传统计算机视觉技术落伍了吗?不,它们是深度学习的“新动能”
Pooling操作(也称Subsampling)使输入表示(特征维度)变得更小,并且网络中的参数和计算的数量更加可控的减小,因此,可以控制过拟合。
它还可使网络对于输入图像中更小的变化、冗余和变换变得不变性。
LeNet-5最后一步的Gaussian Connections是一个当年的历史遗迹,目前已经被Softmax所取代。它的含义在上面提到的Yann LeCun的原始论文中有描述。
注意:现代版的LeNet-5最后一步的Softmax层,实际上包含了\(Wx+b\)和Softmax两种计算。相当于用Softmax函数替换Sigmoid/ReLU函数。
上图展示了不同分类的图片特征在特征空间中的分布,可以看出在CNN的低层中,这些特征是混杂在一起的;而到了CNN的高层,这些特征就被区分开来了。
上图是若干ML、DL算法按照不同维度划分的情况。
MNIST的例子中,由于图像是单通道(灰度图)的,因此,多数教程都只是展示了单通道卷积的计算步骤:
\[g(i,j)=\sum_{k,l}f(i+k,j+l)h(k,l)\]而多通道(例如彩色图像的RGB三通道)卷积实际上就是将各通道卷积之后的结果再加在一起:
\[g(i,j)=\sum_{c,k,l}f(i+k,j+l)h(k,l)\]上图展示了一个4通道图像经卷积之后,得到2通道图像的过程。
从中可以得出以下结论:
1.RGB通道信息在卷积之后,就不复存在了。无论输入图像有多少个通道,输出图像的通道数只和feature的个数相关。
2.即使是LeNet-5的MNIST示例中,实际上也是有多通道卷积的,只不过不在第一个卷积层而已。
3.多通道卷积除了二维空间信息的卷积之外,还包括了通道间信息的卷积。这也是CNN中1x1卷积的意义之一。
由于卷积和池化两层,不是一般的神经网络结构。因此CNN的反向传播算法实际上也是很有技巧的。
上面提到卷积操作可以转换为矩阵运算:\(y=Cx\)
其对应的梯度反向传播公式为:
\[\frac{\partial Loss}{\partial x} = \frac{\partial y^T}{\partial x}\cdot \frac{\partial Loss}{\partial y} = C^T \cdot \frac{\partial Loss}{\partial y}\]因此:
正向:\(Y=X*K\)
反向:\(\Delta X = \Delta Y * rot_{180}(K)\)
ConvBackpropInput:
ConvBackpropFilter:
卷积的反向传播,有时也被称为反卷积(Deconvolution)。
上图是Deep convolutional inverse graphics networks的结构图。DCIGN实际上是一个正向CNN连上一个反向CNN,以实现图片合成的目的。其原理可参考《深度学习(四)》中的Autoencoder。
参见:
http://www.cnblogs.com/pinard/p/6494810.html
卷积神经网络(CNN)反向传播算法
http://blog.csdn.net/zy3381/article/details/44409535
CNN误差反传时旋转卷积核的简明分析
https://mp.weixin.qq.com/s/dnElNURJ6xfWHJVf_yeT8w
理解多层CNN中转置卷积的反向传播
https://www.jianshu.com/p/f0674e48894c
Tensorflow反卷积(DeConv)实现原理
http://blog.csdn.net/Fate_fjh/article/details/52882134
卷积神经网络系列blog
https://zhuanlan.zhihu.com/p/47184529
卷积神经网络(CNN)详解
http://mp.weixin.qq.com/s/YRwGwelyA3VOYZ4XGAjUBw
CNN感受野首次可视化:深入解读及计算指南
https://mp.weixin.qq.com/s/EJyG3Y4EHTGMm_Q1mY4RvA
CNN入门手册(上)
https://mp.weixin.qq.com/s/T3tHFdjnQh4asE0V25vTog
CNN入门手册(中)
https://mp.weixin.qq.com/s/chsDjS39qcoHICUNbSdQHQ
长文揭秘图像处理和卷积神经网络架构
https://mp.weixin.qq.com/s/nIbfiDXkqkpdLzQo2Gmc2Q
利用卷积神经网络处理CIFAR图像分类
https://mp.weixin.qq.com/s/5BMU7SRQeuDg68XDcOUBZw
训练集样本不平衡问题对CNN的影响
https://mp.weixin.qq.com/s/p-wZ_6ZQW-zXzDqmRenNow
深度学习入门:几幅手稿讲解CNN
https://mp.weixin.qq.com/s/xXf7hTfH-vx4YbzlZVQucA
CNN入门再介绍
https://mp.weixin.qq.com/s/Q4snAlAi8tPQAyGm0qUy4w
CNN的全面解析
https://mp.weixin.qq.com/s/Do6erhin3W4dK_-RTAyD6A
卷积神经网络(CNN)概念解释
http://www.qingruanit.net/blog/23930/note5837.html
卷积神经网络(CNN)学习算法之—基于LeNet网络的中文验证码识别
https://mp.weixin.qq.com/s/XiaAPd20YxbM0wDiSTAYMg
深度学习之卷积神经网络(CNN)的模型结构
https://mp.weixin.qq.com/s/x-H6h4sRqTrZlOXKStnhPw
卷积神经网络背后的数学原理
https://mp.weixin.qq.com/s/qIdjHqurqvdahEd0dXYIqA
徒手实现CNN:综述论文详解卷积网络的数学本质
您的打赏,是对我的鼓励