卷积神经网络
它的权值共享的网络结构显著降低了模型的复杂度,减少了权值的数量。卷积层通过一块块卷积核在原始图像上平移来提取特征,每一个特征就是一个feature
map;而池化层通过汇聚特征后稀疏参数来减少要学习的参数,降低网络复杂度。
下图为CNN的发展史:
要训练CNN,会面临很多参数,由于参数过多,如果样本太少,容易出现过拟合。解决方式:
(1)数据增强,即图像翻转
(2)dropout正则,被抑制的神经元不参与前向传播,也不参与反向传播。因此,每输入一个样本,就相当于该神经网络尝试了一个新结构,但所有的结构共享权重,因为神经元不能依赖于其他的神经元存在,这种技术降低了神经元的复杂互适应关系。
注意:ResNet的引入
根据一般经验,只要没发生梯度消失与梯度爆炸,并且不过拟合,网络应该越深越好。但实际上,在训练CIFAR10的网络时,层数从20增加到56,错误率提升,准确率下降了。这种情况称为网络退化。为此,在ResNet中引入了一个shortcut结构,将输入跳层传递与卷积的结果相加。
循环神经网络
传统神经网络中,输入层到输出层的每层直接是全连接的,但是每层内部的神经元彼此之间没有连接。很难解决文本的上下文依赖的问题,RNN这样解决:隐层的输入不仅包括上一层的输出,还包括上一时刻该隐藏层的输出。
RNN的两个发展方向:增强隐藏层的功能,网络双向化及加深。
LSTM网络结构:将RNN隐藏层的圈变为LSTM中的Block(包括1个单元cell和三个门),参考Tensorflow技术解析与实战P128
基于Tensorflow的元框架Keras
Keras模型:包括Sequential模型(简单网络)与Model模型(复杂网络)
模型保存加载:save_model, load_model
只保存模型结构:model.to_json( )
只保存权重:model.save_weights()