神经网络中的辍学
神经网络的概念受到人脑神经元的启发,科学家们想要一台机器来复制相同的过程。这为人工智能中最重要的主题之一开辟了道路。神经网络 (NN) 基于称为人工神经元的连接单元或节点的集合,它们对生物大脑中的神经元进行松散的建模。由于这样的网络是在机器中人工创建的,我们将其称为人工神经网络 (ANN)。本文假设您对 ANN 有一定的了解。可以在此处找到有关 ANN 的更多信息。
现在,让我们更深入地了解 ANN 中Dropout的细节。
问题:
当全连接层有大量神经元时,更容易发生协同适应。协同适应是指一层中的多个神经元从输入数据中提取相同或非常相似的隐藏特征。当两个不同神经元的连接权重几乎相同时,就会发生这种情况。
这给我们的模型带来了两个不同的问题:
- 计算相同输出时机器资源的浪费。
- 如果许多神经元都在提取相同的特征,它会为我们的模型增加这些特征的重要性。如果重复提取的特征仅特定于训练集,则会导致过度拟合。
问题的解决方案:
正如标题所示,我们在训练 NN 时使用 dropout 来最小化协同适应。
在 dropout 中,我们通过将神经元值归零来在每个训练步骤中随机关闭一层神经元的一部分。要归零的神经元比例称为辍学率, .其余神经元的值乘以这样神经元值的总和保持不变。
这两个图像表示应用于 6 个单元的层的 dropout,在多个训练步骤中显示。 dropout 率为 1/3,每个训练步骤的剩余 4 个神经元的值按 x1.5 缩放。因此,我们选择了一个随机的神经元样本,而不是一次训练整个网络。这确保了共同适应得到解决,并且他们更好地学习了隐藏的特征。
可以使用 TensorFlow API 将 Dropout 应用于网络,例如,
tf.keras.layers.Dropout(
rate
)
# rate: Float between 0 and 1.
# The fraction of the input units to drop.