ImageNet Classification with Deep
Convolutional Neural Networks
http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
这个网络也叫做alexnet,因为第一作者的名字是alex,这是个经典的网络,因为这个网络在12年的时候在imagenet上面提升了十个点的准确率。第三作者是hinton。
Abstract介绍的就是我们这个网络很牛逼啊,有卷积,下采样,relu,lrn,全连接,多gpu,还减少了过拟合,通过扩充数据集和dropout。然后就开始逐渐介绍这个网络。
有一些内容比较常见,我就记录下来我比较容易忽略的点。
对于一个网络过拟合来说,1000类用10个比特可以表示,所以作者说这个网络这么大,很容易就过拟合。
相比于全连接网络,cnn参数少,层差不多,而且还容易训练,理论上来说就差了那么一点儿,所以cnn很不错的啊。
Ilsvrc2010有test data 2012没有,所以2012用的是validation。
Top-1 error 和top-5 error。
第一个relu是为了放置saturate problem,速度很快好不好。Relu最开始训练是为了防止过拟合,但是这里是为了训练非常快。
第二个是多gpu训练。
第三个是lrn,感觉用处不太大,还是bn感觉更有大局观一些。
第四个是overlapping pooling,这个经过实践验证似乎是更好一些。
Conv-relu-lrn-pool
-conv-relu-lrn-pool
-conv-relu
-conv-relu
-conv-relu-pool
-fc-relu-fc-relu-softmax
为了减少过拟合,第一个是data augmentation,大量扩充数据集和,而且在计算的时候采用cpu,所以刚好不会影响运算效率,也不会占用空间。第二个是pca,去除噪声,随即改变一下主要的成分的所占比重。或者说是对于主要的相关信息的概率分布进行调整,使得在某些样本中能够强化学习一些较弱的特征,感觉这个还是有一些用的蛤,因为有些隐藏的小规律,可能在大规律的作用下难以被很好的发现。第三个是dropout,降低网络节点之间的相关度。
学习的时候采用momentum,虽然慢了点儿,但是还是比较准确的。
结果很牛逼啊很牛逼。
在最后的一个直观的图像展示中,有这么几点,第一个就是展示了一些和test data的欧式距离最相近的图片,这个相近,是采用的自编码来的,为啥捏,最后算出来的4096长度的向量计算上太不方便了,所以采用一个自编码对于高层的feature进行提取,降维。之所以不对原始图片进行这样的自编码然后计算距离是因为那样学出来的比较初级,自编码编码的是像素级的信息,而在这一层次,编码的就是抽象的语义级的信息。
之后还有一个有意思的工作可能开展就是采用连续的图片进行输入,而不是这样的静态图片。
下面问题来了:
1.
为什么按照论文中的图示,两个gpu 的特征差异这么大,第一个gpu似乎都是边缘,而第二个有了很多颜色。这是为什么?
2.
Lrn感觉奇奇怪怪的,尤其是各个参数,有没有什么道理?
3.
Dropout的位置有关系吗?比如说我在做实验的时候喜欢放在后面的fc。
4.
Pca到底有多大的效果?毕竟是比较初级的图像处理的方式,是否对于深层次的神经网络来说可以通过增加某些结果对于数据进行处理来代替这一步骤?
5. 两个gpu进行训练的交互性或者独立性对于最后结果的影响有多大-