1、LeNet-5

论文

这个可以说是CNN的开山之作,由Yann LeCun在1998年提出,可以实现对手写数字、字母的识别。结构如下:

机器学习CNN算法全程 cnn算法模型_神经网络

Input(32×32)–>CONV(6 filters)–>AvgPOOL–>CONV(16 filters)–>AvgPOOL–>FC(120)–>FC(84)–>FC(10)

2、AlexNet

论文 AlexNet于2012年由Alex Krizhevsky, Ilya Sutskever 和 Geoffrey Hinton等人提出,并在2012 ILSVRC (ImageNet Large-Scale Visual Recognition Challenge)中取得了最佳的成绩。这也是第一次CNN取得这么好的成绩,并且把第二名远远地甩在了后面,因此震惊了整个领域,从此CNN才开始被大众所熟知。

机器学习CNN算法全程 cnn算法模型_神经网络_02

输入的图片是256×256,然后进行随机的裁剪得到227×227大小,然后输入进网络中

AlexNet共有8层,其中5个CONV层和3个FC层,这里没有算上POOL层,因为严格意义上它不算层,因为没有可训练的参数。

关于AlexNet有如下要点:

  1. 用ImageNet的1500万张来自2万2千个类别的图片进行训练,在两个GTX 580 GPU上训练了5,6天;
  2. 使用ReLU激活函数,而之前的神经网络,包括LeNet,都是使用sigmoid或者tanh激活函数,AlexNet证明了ReLU函数在效率效果上更佳,速度提高很多倍;
  3. 使用了很多的数据扩增技术(Dada Augmentation),比如图片反转、剪切、平移等等,来扩充训练集,使得训练的模型鲁棒性更强;
  4. 第一次使用dropout正则化技术;
  5. 使用mini-batch SGD(也成随机梯度下降)来加快训练。

3、VGG Net

论文 这个网络于2014年被牛津大学的Karen Simonyan 和Andrew Zisserman提出,主要特点是 “简洁,深度”。 深, 是因为VGG有19层,远远超过了它的前辈; 而简洁,则是在于它的结构上,一律采用stride为1的3×3filter,以及stride为2的2×2MaxPooling。所以虽然深,但是结构大家一眼就可以记住。

机器学习CNN算法全程 cnn算法模型_机器学习CNN算法全程_03


若干个CONV叠加,然后配一个MaxPooling,再若干个CONV,再加一个MaxPooling,最后三个FC。而且,每个MaxPooling之后,CONV的filter的个数都翻倍,分别是64,128,256,512,结构十分规则有规律。

4. Inception Net(GoogleNet)

论文

看了前面的网络结构之后,我们会发现,他们越来越深,filter越来越多,参数越来越多。 似乎提高CNN的表现的方法就是堆叠更多的CONV、POOL层排成一列(我们称之为sequential model)就行了。

但我们也应该清楚,一味地增加层数、增加通道数(filters越多,输出图像的通道数就越多),会让我们的计算量急剧增加,模型变得过于复杂,从而更容易过拟合,这样反而会让模型的性能下降。

Inception Net不再是使用Sequential model,在结构上有了重大创新。

降维:一个1×1的filter去卷积,图像的长和宽都不会变化,同时,输出图像的channels数等于filters的个数。

机器学习CNN算法全程 cnn算法模型_ide_04


通过使用1×1CONV,输出的通道数大大减少,这样,整个模型的参数也会大大减少。上面这个部分,称为“Inception Module”,而Inception Network,就是由一个个的inception module组成的:

机器学习CNN算法全程 cnn算法模型_深度学习_05

5、ResNet (残差网络)

论文

ResNet,于2015年由微软亚洲研究院的学者们提出。

CNN面临的一个问题就是,随着层数的增加,CNN的效果会遇到瓶颈,甚至会不增反降。这往往是梯度爆炸或者梯度消失引起的。

ResNet就是为了解决这个问题而提出的,因而帮助我们训练更深的网络。 它引入了一个 residual block(残差块):

机器学习CNN算法全程 cnn算法模型_网络_06


这个残差块把某一层的激活值,直接一把抓到了后面的某一层之前 ,这个过程称之为“skip connection(跳跃连接)”。 这个做法,相当于把前面的信息提取出来,加入到当前的计算中,论文作者认为,这样的做法,可以 使神经网络更容易优化。事实上确实是这样。通过这种residual block,他们成功地搭建了一个拥有 152层的CNN

机器学习CNN算法全程 cnn算法模型_ide_07