【深度学习】CNN的发展历史、各项重要技术

发展历程:

leNet - AlexNet - VGG / GoogleNet(Inception) - resNet - denseNet - 剪枝

NiN / MSRANet / highwayNet / 

 

【leNet】1998

经典的5层网络:( 卷积 + tanh + 池化) * 2  + 全连接 120 + 全连接 84 + outPut 10 (MNIST)

首次使用卷积代替全连接。卷积:pattern匹配 、局部连接、参数共享、平移等变

引入了最大池化提取特征 2x2 ,少量平移不变性。

 

【AlexNet】2012 ImageNet

网络更深:5个卷积层 + 3个全连接层

四个网络重点:

1、使用非饱和神经元relu,代替sigmoid,速度快

2、双GPU

3、添加了归一化LRN(local response normalization,局部相应归一化)层,提高泛化能力。

4、pooling overlap

过拟合解决:

增强数据:反射,旋转

加入dropout

将图像分为上下两部分,全连接合并在一起

 

【VGG】 2014 ImageNet

关键点:

用更深的网络表达特征,

提出3x3的卷积核,大卷积核可以通过小的+多层实现,非线性描述更多,参数更少。

提出1x1的卷积核,升维、降维、通道之间信息交换、增加非线性。

LRN / overlapPooling没用,

多尺度:裁剪到一个随机大小,再随机取其中的 224 x 224 的照片

参数爆炸多,大概有134m辣么多。  奇怪的是只用了74个epoch就训练好了,比AlexNet的90个还要少。

 

【GoogLeNet】2014 ImageNet 分类

V1

引入Inception,(1*1, 3*3, 5*5, 3*3maxPooling), 加入了好多个inception层,同时使用了不同的卷积核,从加深到加宽。

用GlobalAvgPool去代替全连接层,最终留下了一层方便做finetune的全连接层。

加了两个softmax分支,1是避免梯度消失(太深了),2是搞一个简单模型用于模型融合。

V2

用两个3x3代替了5x5

首次使用BN进行了正则化。

V3

使用 Factorization into small convolutions 的思想,将 7x7 的搞成 1x7 的和 7x1 的。

降低了参数量,能处理更加丰富的空间特征。

 

【resNet】

不是过拟合问题,不是梯度消失 、 梯度爆炸的问题: 之前的做法 BN, Relu。

主要解决的是神经网络退化的问题。

网络深度虽然有,但是实际表达不出来。

1、我们甚至不能很好的表达linear, relu会损失一些信息,不能从输出反推输入。那就直接加入linear

2、在某些层秩很小,越深就越难改变。

3、层之间的相关性随着层数增加持续衰减 甚至指数衰减。

空间  、 深度不一致问题: 空间不一致 加个weight / 深度不一致 加个1x1卷积核

使用global avg pooling代替全连接。

 

 【denseNet】

将所有的 input 做concat, 然后经过Hl函数(BN relu 3x3卷积)

 

后续发展:

在denseNet上面剪枝。 

 

个人思考:

CNN是在空间上共享参数 、 RNN是在时间上共享参数.

CNN通道数越来越多,单个feature map越来越小。

共享参数的条件: 结构相似,或者说是平移不变性。

 

 

局部连接 --> 一个点和附近的比较相关,和比较远的不太相关

不同size的卷积核 --> 不同大小的pattern

平移不变性 --> 金融数据一定没有, 要不要搞个weight

 

posted on 2020-04-24 11:18  yesuuu  阅读(933)  评论(0编辑  收藏  举报

导航