参考:
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:
删除部分节点