權重初始化
權重初始化是訓練開始前,為網路參數選擇隨機初始值的這件事。它聽起來無關緊要(反正之後會被更新),但起點深刻地影響訓練是否能成功。權重設太大,訊號與梯度會在穿層時爆炸;太小則縮減為零;全都相同,則一層裡每個神經元永遠算同一件事。良好的初始化讓激活與梯度的尺度從第一層到最後一層大致維持不變,學習才能乾淨地開始。
指導原則是保持變異數:訊號穿過一層時,你希望其變異數大致維持不變、而非增長或衰減。對一個輸入扇入(fan-in)為 n(輸入數)的稠密層,一個線性神經元的輸出變異數是 n 乘以 Var(w) 乘以 Var(x),所以要讓輸出變異數等於輸入變異數,需要 Var(w) 約等於 1/n。Xavier/Glorot 初始化(2010)設 Var(w) = 2/(fan_in + fan_out) 以平衡前向與反向傳播,是為 tanh 這類對稱激活設計的;He/Kaiming 初始化(2015)用 Var(w) = 2/fan_in 來補償 ReLU 把一半輸入歸零的效應,是 ReLU 家族網路的標準。
權重必須隨機、不能是常數:若一層裡每個權重起初都相同,每個神經元會收到相同的梯度、永遠保持相同,因此隨機性「打破對稱」,讓神經元得以分化。偏置通常初始化為零(權重已經打破對稱)。初始化與其餘配方相互作用:正規化層(批次或層正規化)與殘差連接大幅降低對它的敏感度,但它仍然重要;例如把每個殘差區塊最後的批次正規化 gamma 初始化為零,會讓該區塊一開始等同於恆等映射,穩定極深的網路。
每個 CNN 與 Transformer 都倚賴有原則的初始化。He 初始化是 ReLU 卷積網路(ResNet)的預設;Transformer 與 ViT 使用縮放過的變體(如標準差很小的截斷常態,有時再乘以 1/sqrt(2 乘以層數) 以在深度下保持殘差流穩定),而像零初始化殘差分支或 LayerScale 這類特殊技巧則穩定訓練。在遷移學習中,問題整個改變了:你不是隨機初始化,而是從預訓練權重(ImageNet 或 CLIP 主幹)初始化,這就是微調收斂遠快於從零訓練的原因。
為何重要:一個訓練不起來、一開始就產生 NaN、或 ReLU 全數死亡的網路,往往是初始化錯了(尺度不對,或框架預設與激活不匹配)。讓初始化匹配非線性:ReLU 用 He,tanh 或 sigmoid 用 Xavier。