CNN & RNN 及一些常识知识(不断扩充中)

时间:2023-03-08 17:39:06

参考:

http://blog.****.net/iamrichardwhite/article/details/51089199

一、神经网络的发展历史

五六十年代,提出感知机

八十年代,提出多层感知机,也就是神经网络,神经网络的层数直接决定了它对现实的刻画能力。

但是,多层神经网络带来了一些问题:

优化函数越来越容易陷入局部最优解

梯度消失现象更加严重

06年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层,神经网络有了真正意义上的深度,解开了深度学习DNN的热潮。近期出现的高速公路网络和深度残差学习进一步避免了梯度消失,达到了前所未有的100多层。

二、CNN的提出:卷积神经网络

全连接DNN中参数数量膨胀,不仅容易过拟合,还容易陷入局部最优。对此,提出CNN,通过卷积核作为中介,取代全连接来连接相邻的两层。同一个卷积核在所有图像内共享,图像通过卷积操作后仍然保留原来的位置关系。CNN模型限制了参数的个数并且挖掘了局部结构的这个特点。

三、RNN的提出:循环神经网络

全连接DNN无法对时间序列上的变化进行建模,但样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要,所以提出了RNN。

RNN中,神经元的输出可以再下一个时间戳直接作用到自身。但同时在时间轴上出现了梯度消失现象,引入长短时记忆单元LSTM,通过门的开关实现时间上的记忆功能,并防止梯度消失。

为了利用未来的信息,引入双向RNN、双向LSTM,同时利用历史和未来的信息。

四、CNN的典型代表:LeNet5

目标问题:手写体识别

输入层:32*32

C1:卷积层,6个特征图,每个和输入中的5*5的邻域相连,特征图大小28*28,每个卷及神经元参数数目:5*5+1=26,25个unit参数和1个bias参数,连接数目(5*5+1)*6*(28*28)=122,304个,因为参数共享,所以总的参数为(5*5+1)*6=156个。

S2:下采样层,6个14*14的特征图,每个图的每个单元和C1中的2*2邻域相连,不重叠。

C3:卷积层,16个卷积核,得到16个特征图,每个大小10*10,每个特征图的每个神经元和S2中的某三层中5*5邻域相连

S4:下采样层,由16个5*5大小的特征图构成,每个单元与C3中的2*2邻域相连接

C5:卷积层,120个神经单元,和C5全连接

F6:全连接层,84个单元,和C5全相连

输出层:欧式径向基函数

五、CNN反向传播的三种情况

卷积层后是一个pooling层:

mean-pooling:等值复制

max-pooling:在前向传播中记录最大值的位置

pooling层后是一个卷积层:

先对卷积层中对应的残差图进行扩充

扩充后的矩阵与对应的核进行卷积

矩阵求和

卷积层与前一层连接方式未定:

定义卷积核与前一层特征图之间的连接强度,可表示为另一个值的softmax函数,通过加入规则化项加强洗属性

六、著名实现

Alex Net

ZF Net

GoogLeNet

VGGNet

ResNet

七、过拟合和正则化

两种正则化方法:

penalizing weights:

l1-norm/l2-norm

weights/embedding

dropout:

删除部分节点