深度線性網路中的非線性運算

浮點下溢作為非線性的來源

在理論數學中,神經網路中的連續線性層相當於單一線性層。然而,電腦使用有限精度的表示方式,具體而言是 IEEE float32 標準,該標準由一個符號位、一個 8 位指數和一個 23 位小數部分組成。

非線性在零附近因為『下溢』而產生。最小的正規非零數記為 min ($1.0..0 imes 2^{-126}$)。任何小於此可表示值的數字會被映射為零。這在零附近產生了顯著的間隙和近似誤差,導致基本的數學規則失效:

  • 分配律失效:$(a + b) imes c$ 可能不等於 $a imes c + b imes c$。例如,若 $a = 0.4 imes min$,$b = 0.5 imes min$,且 $c = 1/min$,第一個表達式的結果為 $0$(因為 $a+b$ 下溢至 $0$),而第二個表達式的結果為 $0.9$。
  • 結合律失效:$(a + b) + c$ 可能不等於 $(b + c) + a$。若 $a = 2.5 imes min$,$b = -1.6 imes min$,且 $c = 1 imes min$,第一個表達式的結果為 $min$,而第二個表達式的結果為 $2.5 imes min$。

這種行為在如 TensorFlow 的框架中會被進一步放大,因為其透過將次規格數禁用 (ftz=true) 來構建原始操作,這意味著在 $1e-38$ 規模附近的任何非矩陣乘法操作都具有隱含的非線性。

使用演化策略訓練非線性線性網路

由於現代的微分函式庫依賴符號微分,它們對這些微觀非線性是「盲目的」。因此,反向傳播無法用來訓練網路以利用下溢。

為了克服這個問題,OpenAI 使用了 演化策略 (ES) 來在不依賴符號微分的情況下估計梯度。通過確保激活值保持足夠小以留在 float32 的非線性範圍內,ES 能夠找到將這些浮點誤 artefact 作為計算非線性的參數。

MNIST 效能比較

訓練方法 訓練準確度 測試準確度
Backpropagation 94% 92%
演化策略 (ES) >99% 96.7%

這種效能提升發生是因為浮點非線性使得每一層能夠產生新穎的特徵,這些特徵是低層特徵的非線性組合,這種能力對於線性網路來說通常是不可能的。

未來影響

OpenAI 建議此能力可擴展至其他架構,例如遞迴神經網路,或應用於改進複雜的機器學習任務,包括翻譯和語言建模。

Sources

相關

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch