神经网络不同激活函数比较--读《Understanding the difficulty of training deep feedforward neural networks》
这篇论文比较了不同激活函数的中间各隐层输出值分布、梯度值分布、测试准确度等,从上图看出,至少在mnist和cifar10测试集下,看起来tanh和softsign都要好于sigmoid。
这篇论文比较了不同激活函数的中间各隐层输出值分布、梯度值分布、测试准确度等,从上图看出,至少在mnist和cifar10测试集下,看起来tanh和softsign都要好于sigmoid。
Mnist做为手写数字识别的基准数据集,one Hidden Layer Perceptron已可以取得较好性能(Error rate 2%-5%),更有诸多新型网络结构如CNN、RNN不断改善性能(Error rate 1%以下)。
而这篇论文,则进一步回归初心,挖掘纯粹MLP的性能,通过可变学习速率,旋转、畸变数据以扩展训练集,更多隐藏层等,观察性能如下:
没有花拳绣腿,纯粹的MLP,同样可以得到错误率0.5%以下的性能,唯一的缺点就是计算量,方法上简单、粗暴、有效!
反向传播算法是神经网络中的重要组成部分,是对权重和偏置变化影响代价函数过程的理解,目标是计算代价函数C 分别关于w 和b的偏导数,从而更新w、b,影响前向过程,最小化代价函数。
公式BP1与BP2在nielsen的书Neural Networks and Deep Learning中已有证明,下面补充BP3与BP4的证明:
BP算法过程如下:
在m大小的mini_batch内进行一次梯度更新,过程如下:
以mnist识别,三层网络[784,30,10]为例,nielsen的书中代码如下,添加了部分注释:
2015年年中Google发布了Deep Dream的新闻,展示了google神经网络模型对输入图片的理解,类似于“深度盗梦”,并引发了后续的艺术风格作画。
Deep Dream,其原理并不是尽可能地去正确识别图片对象,而是在网络识别对象模式的中间过程时,忽略确认操作,这样就解除了最小梯度限制,Test loss不再越来越小;而是让网络在已识别出的错误对象上,继续去强化认知和理解,最终找出了新图像的模板,而这迥异于原图的风格,形成了类似于创造梦境的效果。
Google的示例如下: