写在前面:主要是跟着“跟着李沐学AI”做的笔记,有些东西也不是很懂,部分内容会参考b站上的内容,在这篇文章中参考了
论文引用 Krizhevsky A , Sutskever I , Hinton G .ImageNet Classification with Deep Convolutional Neural Networks[J].Advances in neural information processing systems, 2012, 25(2).DOI:10.1145/3065386.
pass1
title
ImageNet Classification with Deep Convolutional Neural Networks
摘要
摘要的主要内容是说训练了一个很大很深的卷积神经网络用于对大量的图片进行分类,并且说明了测试的结果优于之前的数据;接着对模型进行了介绍,参数和神经元的熟练,池化层和全连接层等等;然后说使用GPU进行对模型进行了加速;最后说使用模型参加比赛,结果很好。
ps:对于论文而言摘要写得并不是很好
说明
池化层
池化的本质就是采样,作用是减少数据的数据量,降低运算的需求,同时也保留了数据的重要信息。
池化层可以提升平移不变性(对输入做出少量平移时,对输出不会带来太大的影响)
池化操作的过程:与卷积操作类似,通过滑动窗口进行计算,需要计算窗口的大小和滑动的步长,不同的是池化操作不需要计算权重操作,输入的通道数和输出的通道数相同。
分类
1、平均池化
计算每个窗口的平均值,平滑特征图,有助于保留背景信息
2、最大池化
找到每个窗口的最大值,可以突出图像中的关键信息
全连接层
作用是在整个卷积神经网络中起到“分类器”的作用,将学到的“分布式特征表示”映射到样本标记空间的作用。
讨论部分
讨论部分说明了神经网络深度的主要,当深度减少的时候损失会增加,(当然除了要关注深度,网络的宽度也是很重要的)。还说明了要在video方面应用。
图片
上图中显示网络预测结果挺好
找与训练的最后一层的向量相似的向量,找出相似的图片(我也没听太懂……)
结果
与其他的结果的对比
总结
第一遍看过后文章的结果很好,使用神经网络实现的
pass2
introduction
介绍部分主要是说对于物体识别的方法主要使用的是机器学习,而为了降低过拟合的问题,要使用更大的数据集,更有力的模型。(对于过拟合的问题,当时的观点主要是使用正则来减少过拟合,但对于现在的观点而言,减少过拟合更重要的是网络的设计);除此之外,提到文章使用的是CNN,提出CNN的好处等等,同时提出深度在网络上很重要。
dataset
介绍ImageNet的数据集,对数据的处理只是对图片的裁剪256×256,多出来的部分(大于256)以中心裁剪两边。
the architecture
首先提出ReLu非线性函数,对比与sigmoid和tanh的优点;然后就是工程化的工作,使用多GPU进行训练,接着是正则化、归一化以及overlapping pooling,最后是总体的架构。
总体而言,是将模型横向划分,放在两个GPU上进行训练(model parallel模型并行,将模型切开进行训练),每个GPU都有自己的卷积核参数,第二个卷积层的输入是第一个卷积层的输出,这时两个GPU是各做各的,到第三个卷积层的输入就把对方的第二个卷积层的输出也作为输入(即GPU0中3的输入包括GPU0中2的输出和GPU1中2的输出),然后在经过4和5,也是各做各的,之后再进行全连接,全连接的输入是每个GPU第五个卷积的输出合并起来做全连接。
全连接之后就是分类层,将输入的图片变成一个4096长的向量(来自于两个GPU,每个分别是2048,进行拼接,成为一个4096的向量)。
深度学习的主要作用是将一张输入的图片通过卷积、池化、全连接等操作,压缩为一个4096维的向量,这个向量中包含图片的信息,使得机器能够识别出来(即从人能够看懂的东西转化为机器能够看懂的东西)。
reducing overfitting
如何降低过拟合
数据增强(data augmentation) (不是很懂)
将图片进行人工放大,第一种方法是在图片中随机扣除一块区域的图片,然后拼成新的图片,第二种是将RGB的channal进行改变,颜色会有不同,因此每次图片跟原始图片是有一定的不同的
dropout
随机把一些隐藏层的输出变成用50%的概率设为0,模型发生变化,这样每次得到一个新的模型,这些模型之间权重是共享的,除了设置成0的,非0的东西都是一样的,这样就等价于做了模型融合
后来发现dropout其实也不是在做模型融合,更多的dropout就是一个正则项(dropout在现行模型上等价于一个L2正则项)
文章说没有dropout的话,overfitting会非常严重,有dropout的话,训练会比别人慢两倍
dropout在全连接上还是很有用的,在RNN和Attension中使用的非常多
details of learning
模型使用的是SGD进行训练的,SGD难以调参,但是里面的噪声对于模型的泛化而言是有好处的。
这部分的总结可以参考:作者:如果我是泡橘子 https://www.bilibili.com/read/cv14334869/?jump_opus=1 出处:bilibili
细节部分会在下篇文章中补充……