动手学深度学习PyTorch版---day02
目录
Day02
过拟合、欠拟合及解决方案;梯度消失,梯度爆炸;注意力机制与Seq2seq;卷积神经网络基础
1.过拟合,欠拟合及解决
训练误差
指模型在训练集上表现出来的误差
泛化误差
指模型在任意测试集上表现出来的误差的期望,通常用测试集的误差来近似
过拟合
训练集上,高方差和低偏差
过拟合解决方案
dropout(训练与测试不同);权重衰减(正则化是在损失函数添加惩罚项,使得训练出的模型参数较小)
欠拟合
训练集上,低方差和高偏差
2.梯度消失,梯度爆炸
考虑环境因素
协变量偏移
训练数据使用的是猫和狗的真实的照片,但是在测试时,我们被要求对猫和狗的卡通图片进行分类
标签偏移
训练数据集,数据很少只包含流感p(y)的样本。而测试数据集有流感p(y)和流感q(y),其中不变的是流感症状p(x|y)。
概念偏移
相同事物,不同叫法
3.卷积神经网络基础
1*1卷积,相当于全连接层
pytorch,四维张量,形状为(B,C,H,W),B是批量大小,C,H,W分别表示通道数、高度、宽度
经典网络:LeNet,ALexNet,VGG,GoogLeNet
ALexNet
特征:
- 8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。
- 将sigmoid**函数改成了更加简单的ReLU**函数。
- 用Dropout来控制全连接层的模型复杂度。
- 引入数据增强,如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合
VGG
通过重复使⽤简单的基础块来构建深度模型。
GoogLeNet
- 由Inception基础块组成。
- Inception块相当于⼀个有4条线路的⼦⽹络。它通过不同窗口形状的卷积层和最⼤池化层来并⾏抽取信息,并使⽤1×1卷积层减少通道数从而降低模型复杂度。
- 可以⾃定义的超参数是每个层的输出通道数,我们以此来控制模型复杂度。
4.批量归一化,残差结构,密集连接
BN
超参数:每个特征通道上计算,拉伸参数γ和偏移参数β
(1)对输入的标准化(浅层模型)
处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。
标准化处理输入数据使各个特征的分布相近
(2)批量归一化(深度模型)
利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
对全连接层做批量归一化
位置:全连接层中的仿射变换和**函数之间
对卷积层做批量归一化
位置:卷积计算之后、应⽤**函数之前
如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。 计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。
预测时的批量归⼀化
训练:以batch为单位,对每个batch计算均值和方差。
预测:用移动平均估算整个训练数据集的样本均值和方差。