文章目录
不是特别清楚这三个流行且有用的模型(或者说层)的具体作用和使用方法。
概念
CNN演化
先引入一张CNN结构演化图:
2012年AlexNet做出历史突破以来,直到GoogLeNet出来之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数)。所以大家调侃深度学习为“深度调参”,但是纯粹的增大网络的缺点:
- 参数太多,容易过拟合,若训练数据集有限;
- 网络越大计算复杂度越大,难以应用;
- 网络越深,梯度越往后穿越容易消失(梯度弥散),难以优化模型
梯度消失
我们都知道神经网络中会使用非线性变换。
一般会使用sigmoid函数,得到,这个函数会把数据压缩到开区间(0,1),函数的图像如下:
可以看到,函数的两侧非常平滑,而且无限的接近0和1,仅仅是中间部分函数接近一条直线。
要知道,神经网络训练的方法是BP算法(反向传播)。BP算法的基础其实就是导数的链式法则,就是有很多乘法会连接在一起。
看sigmoid函数的图像知道了,值域最大是1,而且大多数值都被推向两侧饱和的区域,这些区域的导数很小。
可以预见到,随着网络的加深,梯度后向传播到输入层时,就所剩无几,基本不能引起参数W数值的扰动,这样输入层一侧的网络就学习不到新的特征了参数得不到更新)。
那么怎么办?我暂时看到了四种解决问题的办法。