首页 > 科技周边 > 人工智能 > 批处理:理论和张量实现

批处理:理论和张量实现

Joseph Gordon-Levitt
发布: 2025-03-06 11:00:15
原创
234 人浏览过

深度神经网络训练通常会面临诸如消失/爆炸梯度和内部协变量转移,减慢训练和阻碍学习的障碍。 归一化技术提供了解决方案,批次归一化(BN)特别突出。 BN可以加速收敛,提高稳定性并增强许多深度学习体系结构的概括。本教程解释了BN的机制,其数学基础和Tensorflow/keras实现。 机器学习中的

归一化标准化输入数据,使用最小 - 最大缩放,z得分归一化和对数转换的日志转换等方法。这可以减轻异常效应,改善收敛性并确保合理的特征比较。 归一化数据可确保对学习过程的同等特征贡献,从而防止大规模特征主导并导致次优模型性能。 它允许模型更有效地识别有意义的模式。

深度学习培训挑战包括:

  1. 内部协变量偏移:激活分布在训练期间跨层的分布变化,妨碍适应和学习。
  2. 消失/爆炸梯度:梯度在反向传播过程中变得太小或太大,阻碍了有效的重量更新。
  3. 初始化敏感性:
  4. 初始权重影响训练;初始化差会导致收敛速度缓慢或失败。
  5. 批量归一化可以通过在每个小批量内进行归一化激活来解决这些问题,从而稳定训练并改善模型性能。

批量归一化在训练过程中,在微型批次中的一层激活归一化。它计算每个特征的激活的平均值和方差,然后使用这些统计数据进行归一化。 可学习的参数(γ和β)尺度并移动归一化激活,从而使模型可以学习最佳的激活分布。

Batch Normalization: Theory and TensorFlow Implementation 来源:Yintai MA和Diego Klabjan。 通常在层的线性转换(例如,在完全连接的层中的矩阵乘法或卷积层中的卷积)和非线性激活函数(例如relu)之前应用

bn。 关键组件是迷你批次统计(平均值和方差),标准化以及使用可学习参数的缩放/移动。

bn通过在每个迷你批次内进行归一化激活来解决内部协变量的转移,从而使对后续层的输入更加稳定。这使得可以更快地通过更高的学习率收敛并降低初始化敏感性。 它还正规化,通过减少对特定激活模式的依赖性来防止过度拟合。

>

批准的数学:

>BN在训练和推理过程中以不同的方式运行。

训练:

    归一化:
  • 平均值(μb )和方差(σb 2 ),在微型批次中为每个特征计算出:>

Batch Normalization: Theory and TensorFlow Implementation

Batch Normalization: Theory and TensorFlow Implementation

激活(x i)已归一化:

>

Batch Normalization: Theory and TensorFlow Implementation

(ε是数值稳定性的小常数)。

>
  • 缩放和变化:可学习的参数γ和β尺度和移位:

Batch Normalization: Theory and TensorFlow Implementation

>

>推论:批量统计量被使用移动平均值(动量因子α)计算的运行统计(运行均值和方差)替代:>

Batch Normalization: Theory and TensorFlow Implementation

Batch Normalization: Theory and TensorFlow Implementation 这些运行统计数据和学习的γ和β在推断期间用于归一化。

tensorflow实现:

实现注意事项:

import tensorflow as tf
from tensorflow import keras

# Load and preprocess MNIST data (as described in the original text)
# ...

# Define the model architecture
model = keras.Sequential([
    keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    keras.layers.BatchNormalization(),
    keras.layers.Conv2D(64, (3, 3), activation='relu'),
    keras.layers.BatchNormalization(),
    keras.layers.MaxPooling2D((2, 2)),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(10, activation='softmax')
])

# Compile and train the model (as described in the original text)
# ...
登录后复制

放置:线性变换和激活功能之前。>

    批量尺寸:
  • 较大的批量尺寸提供更准确的批处理统计信息。> 正则化: bn引入正则化效果。
  • 限制和挑战:
  • >
  • > bn的有效性降低了。小批量尺寸:
  • 可靠的批处理统计量较低。

计算开销:增加内存和训练时间。

  • 缓解限制:变体和扩展:
  • 层归一化,组归一化,实例归一化,批次重归化和权重归一化提供替代方案或改进,具体取决于特定需求。结论

    批处理是一种有力的技术,可改善深度神经网络训练。 记住其优势,实施细节和限制,并考虑其项目在您的项目中的最佳性能。

    >

以上是批处理:理论和张量实现的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板