首頁 > 科技週邊 > 人工智慧 > 批處理:理論和張量實現

批處理:理論和張量實現

Joseph Gordon-Levitt
發布: 2025-03-06 11:00:15
原創
210 人瀏覽過

深度神經網絡訓練通常會面臨諸如消失/爆炸梯度和內部協變量轉移,減慢訓練和阻礙學習的障礙。 歸一化技術提供了解決方案,批次歸一化(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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板