Task 3
- 学习 批量归一化(文字+视频)
- 学习 卷积神经网络(文字+视频)
Task 3.1 批量归一化(Batch Normalization,BN)
归一化背景
当输入特征维度的值范围差距很大的时候,不同维度的值对模型的影响可能影响巨大,对模型训练造成影响,所以要设法让它们有同样的数值的范围,这些方法称为特征归一化(feature normalization)。
Z值归一化(Z-score normalization)
Z值归一化,也称为标准化(standardization)。如上图所示,做法是:对于每个维度
i
i
i,计算其平均值(mean)
m
i
m_i
mi 和标准差(standard deviation)
σ
\sigma
σ:
x
~
i
r
←
x
i
r
−
m
i
σ
i
\widetilde{x}_i^r \leftarrow \frac{x_i^r - m_i}{\sigma_i}
x
ir←σixir−mi
好处:归一化后,这个维度上数值平均值是0,方差是1,所有特征不同维度的数值都在0上下,能制造较好的误差表面,有效帮助训练。
应用:深度学习中,一般而言,特征归一化要放在激活函数前,个人理解原因是归一化能帮助输入数据保持在一个适当的尺度上,从而提高训练的稳定性和速度。
批量归一化
实际的训练过程中,我们不会让这网络一下子考虑整个训练数据里面的所有样本,而是只会考虑一个批量里面的样本,只对一个批量里面的数据做归一化,即批量归一化。
批量归一化适用于批量大小比较大的时候。批量大小如果比较大,批量数据就足以近似数据集的分布,这个时候就不需要对整个数据集做特征归一化,而只在一个批量上做特征归一化即可。
由于批量归一化需要使用一个批量的数据来计算 μ \mu μ 和 σ \sigma σ,但测试时难有批量,但不用担心,Pytorch已经在训练时对每一个批量计算出来的 μ \mu μ 和 σ \sigma σ计算移动平均(moving average),我们不需要特别处理。
Task 3.2 卷积神经网络-上
卷积背景
卷积神经网络常用图像分类,一张图像就是一个三维张量,假设拉成向量输入全连接网络后,会变得非常大,模型的神经元特别多,增加了过拟合的风险;另外考虑图像本身的特性,并不一定需要全连接或者说每个输入特征都对应一个权重。
局部性
特性1:识别图像特征不需要整张图像,重要的是抓住特征模式(pattern)。
简化应用1:卷积神经网络设定一个感受野(receptive field),每个神经元都只关心自己的感受野里面发生的事情。
平移不变性
特性2:同样的模式,可能出现在图像的不同区域,没必要每个区域都检测同一个模式。
简化应用2:让不同感受野的神经元共享参数,如下图所示。
小结:卷积神经网络模型偏差很大,但用在图像上不是问题,卷积层的感受野、参数共享都是为图像设计的;如果把它用在图像之外的任务,就要仔细想想这些任务有没有图像类似的特性。
Task 3.3 卷积神经网络-下
下采样(downsampling)
对一张较大的图像,把图像偶数列、奇数行都拿掉,图像变成为原来的 1/4。
特性3:下采样不改变图像的内容信息,如下图下采样后主体还是一只鸟。
简化应用3:汇聚将图像变小,减小运算量。
汇聚没有参数,可以理解为一个操作符,汇聚操作如:
- 最大汇聚(max pooling):取每组最大的一个值
- 平均汇聚(mean pooling):取每组的平均值
除了常见的图像任务,卷积神经网络还可以应用一些其他有相关特性的任务上:
- 下围棋的任务:AlphaGo
- 语音处理
- 文字处理
卷积神经网络不能处理图像放大缩小或者旋转的问题,可以通过数据增强(裁剪图片、旋转图片、缩放图片)来改善,以及Special Transformer Layer架构处理。