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的示例如下:




最近俄国的一款APP比较火,名叫Prisma,利用人工神经网络技术,可以学习名画艺术风格,对我们的照片进行艺术化处理。
好奇心起,了解了一下其原理,简单说即学习一副画的风格,并将这幅画的风格应用到另一幅图片上。那我们完全可以利用Tensorflow Neural Network功能,来实现类似Prisma的功能,可以自定义诸多参数,比如多幅画的混合风格,不同权重,学习率等,来任意定制我们想要的绘画风格,取得比Prisma更灵活的效果。
利用神经网络进行人工智能绘画,起源于2015年9月的一篇论文”A Neural Algorithm of Artistic Style”,如下图显示不同风格的处理效果。

代码参考anishathalye/neural-style,基于Tensorflow CNN工具包和VGG模型。VGG做为常用的几种模型结构,与AlexNet类似,如下图示意:

转换图片风格命令如下:
python neural_style.py --content <content file> --styles <style file> --output <output file>