本周主要学习内容包括上次blog未尽部分以及对经典文章的精读总结和思考。
CNN中对损失函数(Loss function)的选择因问题类型的不同而有各异的合适选择。应用的比较多的包括S Softmax loss,Hinge loss和Contrastive loss。
还有一些比较常用的正则化方法,诸如dropout/dropconnect以及学习连接的重要性等方法。dropout是在全连接层随机dropout一半的连接,训练多个网络,取最终综合的结果。dropconnect是在drop一些weight,使其为0**重点内容**。
同样涉及到网络参数的初始化时,也有很多讲究,最常用的是利用高斯分布,Xavier,MSRA等方法。具体细节可参考下边的文献。
接下来介绍几种CNN网络训练中更快的计算方法。
FFT
该方法将时域的卷积运算转换到频域里的矩阵乘积运算。值得思考的是这种时域运算到频域运算的变换能否在应用到更多的地方呢,比如直接在频域学习特征,或者空域上的非线性在频域是否又是怎样的存在?这些都是有待研究的。
低秩矩阵分解,它旨在通过减少参数量来压缩模型,即:
还有一种方法就是VQ(Vector Quantization)。
最近又把AlexNet看了一遍,其中注意到了如下几点:
- CNN work的原因——因为我们对数据的先验理解较少,所以若模型能补偿这方面的不足是最好的,同时CNN模型对图片的先验假设也是符合现实的,即图像的统计平稳性和像素级上的相关性;
- 多GPU的运用——虽然本文中只用了两块GPU,但利用多GPU来完成参数的并行计算思想至关重要;
- 文中利用了dropout来缓解过拟合的问题——这一方法确实提高了网络预测的精确率,但网络的收敛时间变长了。至于在此基础上发展而来的dropconnect等是否很好的解决了这一问题以及如何解决这种trade-off的问题,仍然值得思考;
- 文中的学习率是手工调整,在一些文章中也提出了学习率自适应的方法,这里需要调研下,看是否还有点可以挖掘;
- 文中最后提及了CNN在视频处理方面的可能应用,而在ILSVRC2015中就有了关于在视频中进行物体探测的竞赛内容。这个值得跟进关注。。。
看了几篇论文有了些其他的思考,也一并记下来。CNN网络的结构选择也有很多的trick,但理论支持很少,超参的调整也是如此,这种conv+pooling的固定框架在一定程度上局限了模型的可能性,当然在此基础上引入了很多其他中间层,诸如Norm层、NB层、Spatial Transformer Networks等。但这些并不够,固定框架基础上的超参调整虽然较难,但探索不同模型加你的参数设置更加的困难,而这种难度可能会带来意想不到的收获。
参考文献: 【1】Recent Advances in Convolutional Neural Networks.Jiuxiang Gu.et.al. 【2】Improving neural networks by preventing co-adaptation of feature detectors. G. E. Hinton.et.al 【3】Learning both Weights and Connections for Efficient Neural Networks. Song Han .et.al 【4】ImageNet Classification with Deep Convolutional Neural Networks.Alex Krizhevsky.et.al 【5】Spatial Transformer Networks. Max Jaderberg.et.al