目的与疑惑
在深度学习中,每层输入数据的分布可能因为前一层参数的微小变动而有较大变化,
这种现象称为内部协变量偏移(Internal Covariate Shift)。
批量归一化通过规范化层输入来减少内部协变量偏移,使网络更稳定,通常也能加快收敛速度。
我的疑惑:后向传播后所有参数都会进行微调,那么再次输入数据 , 每层的输出数据变化应该是正常现象啊?
解释:
我们的本来目的是,批量输入数据然后获得合适的分布
例子:输入一个物品 合适的分布:狗>>狼>猫
现在的情况是,每次后向传播更新参数后,前向传播得到的分布都误差很大
第一次后向传播:输入一个物品,分布:狼>>猫>狗
第二次后向传播:输入一个物品,分布:猫>狗>>狼
正确的情况是,每次后向传播更新参数后,前向传播得到的分布都在一个规律内 且 越来越准确
第一次后向传播:输入一个物品,分布:狗>猫>狼
第二次后向传播:输入一个物品,分布:狗>>猫>狼
所以为了避免现在的情况:引入了批量归一化
批量归一化与降低学习率的区别
降低学习率
作用
1.缓和梯度更新:降低学习率会减少每次参数更新的步幅,这可以防止参数在优化过程中过度摆动,从而有助于避免梯度爆炸问题。
2.提高稳定性:较小的更新步幅可以帮助模型更平稳地逼近最优点,尤其是在接近最优解时,防止超过最优点。
限制:
1.训练速度减慢:较小的学习率意味着收敛到最佳性能所需的迭代次数可能会增加,从而导致整体训练时间变长。
2.可能陷入局部最小值:如果学习率过小,网络可能会在达到全局最优解之前就陷入局部最小值或鞍点。
使用批量归一化
作用:
1.稳定输入分布:批量归一化通过规范化层输入,减少了内部协变量偏移,使得每层的输入在训练过程中保持更加稳定的分布。
2.允许使用更高的学习率:由于输入分布的稳定性,可以使用更高的学习率进行训练,而不会导致梯度消失或爆炸,从而加快了模型的收敛速度。
限制:
1.增加计算负担:批量归一化会增加每次迭代的计算复杂度,因为它需要计算每个小批量的均值和方差,然后对数据进行规范化处理。
2.依赖于批量大小:批量归一化的效果依赖于批量的大小,过小的批量可能会导致估计的均值和方差不准确,影响模型性能。
注意:
没有必要和丢弃法混合使用
一般归一化在卷积层与全连接层之后,在激活函数前
可参考文章:28 批量归一化【动手学深度学习v2】 - 哔哩哔哩 (bilibili.com)
引入可学习的尺度参数(𝛾γ)和偏移参数(𝛽β)作用
这两个参数帮助模型保持和恢复那些可能在归一化过程中被不恰当地标准化掉的有用信息。我们可以通过一个比较形象的例子来解释这两个参数的作用:
形象例子:调整温度和风味
想象一下,你在制作一道菜,这道菜的味道受到配料比例的影响。在我们的例子中,配料比例相当于每层神经网络中的特征输入。为了确保每次做出的菜品都有相似的基础味道,你决定对所有配料进行“标准化”处理——即确保每种配料的量都处于一个标准化的水平(相当于批量归一化中的均值为0和方差为1的标准化步骤)。这样做可以让基础味道保持一致,但也可能会使菜品失去一些独特风味。
为了弥补这一点,你引入了两种“调味剂”:
尺度调整剂(𝛾γ):这相当于你可以决定增加或减少某种配料的比例(例如,如果某种配料的特性被标准化减弱了,你可能想通过增加它的比例来恢复它的影响力)。
风味偏移剂(𝛽β):这允许你根据需要添加或减少某种特定风味的强度,以达到完美的口感平衡。
神经网络中的应用
在神经网络中,𝛾γ 和 𝛽β 的作用与“调味剂”类似:
𝛾γ(尺度参数):允许模型调整每个特征归一化后的缩放程度。这是重要的,因为不是所有特征都应该具有相同的方差(即同样的“重要性”或“活跃度”)。有些特征可能更重要,因此需要更大的方差来强调其效果。
𝛽β(偏移参数):允许模型对每个特征进行垂直平移。这帮助模型调整特征的平均活跃度或激活阈值,以便更好地捕捉数据中的关键信息。
通过学习适当的 𝛾γ 和 𝛽β 值,神经网络能够自适应地恢复或保留那些对完成特定任务至关重要的特征属性,即便这些特征在批量归一化的过程中被标准化。这样,网络不仅能从标准化带来的优势中受益(如更快的收敛和更高的稳定性),还能保持必要的灵活性,以适应复杂和多变的数据特性。