赞
踩
读者大概率都会遇到这样的情况:模型在训练数据上表现非常好,但无法准确预测测试数据。原因是模型过拟合了,解决此类问题的方法是正则化。
正则化有助于防止模型过度拟合,学习过程变得更加高效。有几个正则化工具:Early Stopping、dropout、权重初始化技术 (Weight Initialization Techniques) 和批量归一化 (Batch Normalization)。
在本文中,将详细探讨批量归一化,内容如下。
什么是批量归一化?
批量归一化的工作原理?
为什么批量归一化有效?
如何使用批量归一化?
PyTorch 简单实现 Batch Normalization
在进入批量归一化 (Batch Normalization) 之前,让我们了解术语 “Normalization”。归一化是一种数据预处理工具,用于将数值数据调整为通用比例而不扭曲其形状。
通常,当我们将数据输入机器或深度学习算法时,倾向于将值更改为平衡的比例。规范化是为了确保模型可以适当地概括数据。
现在回到 Batch Normalization,这是一个通过在深度神经网络中添加额外层来使神经网络更快、更稳定的过程。新层对来自上一层的层的输入执行标准化和规范化操作。
那批量归一化中术语 “Batch” 是什么?典型的神经网络是使用一组称为 Batch 的输入数据集进行训练的。同样,批归一化中的归一化过程是分批进行的,而不是单个输入。
让我们通过一个例子来理解这一点,我们有一个深度神经网络,如下图所示。
输入 X1、X2、X3、X4 是标准化形式,因为它们来自预处理阶段。当输入通过第一层时,输入 X 和权重矩阵 W 进行点积计算,再经过 sigmoid 函数。以此类推。
第一层计算方式应用到每一层,最后一层记录为 L,如图所示。
输入 X 随时间归一化,输出将不再处于同一比例。当数据经过多层神经网络并经过 L 个激活函数时,会导致数据发生内部协变量偏移(Internal Covariate Shift)。在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化,这一过程被称作 Internal Covariate Shift。
现在我们对为什么需要批量归一化有了一个清晰的认识,那么让我们了解它是如何工作的。这是一个两步过程。先将输入归一化,然后执行重新缩放和偏移。
在最后的操作中,将对输入进行重新缩放和偏移。重新缩放参数 γ (gamma) 和偏移参数 β (beta)。
两个可训练参数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。