ディープラインネットワークにおける非線形計算
OpenAIは、浮動小数点演算を使用して実装されたディープラインネットワークが数学的に線形ではなく、非線形計算を行うように訓練できることを示した。コンピュータが数を表現する方法を利用することで、これらのネットワークは通常は明示的な非線形活性化関数を必要とする非自明な問題を解くことができる。
非線形性の原因となる浮動小数点アンダーフロー
理論数学において、ニューラルネットワークの連続する線形層は単一の線形層と等価である。しかし、コンピュータは有限精度の表現を使用し、具体的には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$ になるため)となり、2番目の式は $0.9$ となる。
- 結合法則の破綻: $(a + b) + c$ は $(b + c) + a$ と等しくない可能性がある。$a = 2.5 imes min$、$b = -1.6 imes min$、$c = 1 imes min$ の場合、最初の式は $min$ となり、2番目の式は $2.5 imes min$ となる。
この挙動は、TensorFlow のようなフレームワークでさらに増幅される。TensorFlow は ftz=true (非正規化数を無効に)でプリミティブを構築し、これにより $1e-38$ のスケール近くの非行列乗算演算には暗黙の非線形性が生じる。
進化戦略を用いた非線形線形ネットワークのトレーニング
現代の微分ライブラリは象徴的微分に依存しているため、これらの微視的な非線形性に『盲目』である。その結果、バックプロパゲーションを使ってアンダーフローを利用するネットワークを訓練することはできない。
これを克服するため、OpenAI は象徴的微分を使わずに勾配を推定するために 進化戦略 (ES) を使用した。float32 の非線形範囲内に留まるほど十分に小さな活性化を保つことで、ES はこれらの浮動小数点の人工物を計算的非線形性として利用するパラメータを見つけることができた。
MNIST パフォーマンス比較
| トレーニング方法 | トレーニング精度 | テスト精度 |
|---|---|---|
| バックプロパゲーション | 94% | 92% |
| 進化戦略 (ES) | >99% | 96.7% |
このパフォーマンスの向上は、浮動小数点の非線形性により、各層が下位レベルの特徴の非線形な組み合わせである新しい特徴を生成できるために起こる。これは通常、線形ネットワークでは不可能な能力である。
今後の示唆
OpenAI は、この能力をリカレントニューラルネットワークなどの他のアーキテクチャに拡張したり、翻訳や言語モデリングなどの複雑な機械学習タスクの改善に適用できると示唆している。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch