批量归一化(Batch Normalization)
error surface 不平坦是训练困难的原因之一, 批量归一化能将 error surface 变得平坦.
损失值是又 参数w 与 输入x 共同作用的,
如果x输入变化很小 -> 损失值变化小;
如果x输入变化很大 -> 损失值变化大;
所以将 x 做归一化(特征归一化), 使得不同特征的变化对 损失值影响相对稳定, 可以使得 error surface 变得平坦.
Z值归一化
深度学习中的归一化
不仅仅输入层需要做归一化, 中间层也需要做适当的归一化
测试时的归一化
在训练的时候,如果有在做批量归一化,每一个批量计算出来的 µ,σ,都会拿出来算移动平均(moving average)
CNN
抓住特征(pattern)就能识别物体,但pattern不会占据所有图像,所以神经元也没必要关注所有图像内容
每个神经元只关注一块守备范围(receptive field),守备范围是可以重叠的,多个神经元可以关注同一个守备范围,守备范围也可以不同大小,形状也可以是出正方形外的形状;
典型kernel size: 3x3 是不是意味着pattern只能在3x3范围内才能识别出来? NO
守备范围需要重叠overlap,防止pattern出现在交界的地方;在边界上需要考虑,padding来补空;
Pattern 会出现在不同的守备范围内,需要守备范围对应的neural都具备检测这个pattern的detector吗?如果有的话,量会很大 --> 简化方法: 参数共享, 不同守备范围的neural用同样的参数,输入不一样,输出也是不一样的。
共用参数等价于拿一组参数扫过各个守备范围(下面的故事)来找一个特征,检测不同的特征用不同的参数(filter), 64个neural == 64个filter, 检测64个特征;第二层再用N个filter来检测较大范围的pattern
第二卷积层,一个3x3的守备区相当于原图像的5x5,cover的范围越来越大,用这种方法层数越多,能看到的范围越大。