ニューラルネットワークの問題を解決するための新しいアイデア: OpenAI は線形ネットワークを使用して非線形問題を計算します

ニューラルネットワークの問題を解決するための新しいアイデア: OpenAI は線形ネットワークを使用して非線形問題を計算します

[[205570]]

深層線形ネットワーク (浮動小数点演算を使用して実装) は実際には線形ではなく、非線形計算を実行できることを示します。私たちはこれを活用して、進化戦略を使用して線形ネットワーク内のパラメータを見つけ、重要な問題を解決できるようにします。

ニューラル ネットワークは通常、線形層と非線形関数 (tanh や正規化線形単位 ReLU など) のスタックで構成されます。非線形性がない場合、理論上は一連の線形層は数学的には単一の線形層と同等です。したがって、浮動小数点演算は非線形であり、深層ネットワークのトレーニングには十分です。これは驚きです。

背景

コンピュータが扱う数値は完全な数学的オブジェクトではなく、有限個のビットを使用した近似表現です。浮動小数点数は、コンピューターで数学的なオブジェクトを表すためによく使用されます。各浮動小数点数は、小数点と指数の組み合わせで構成されます。 IEEE float32 標準では、小数部に 23 ビット、指数部に 8 ビット、正負の符号を示す符号ビットに 1 ビットが割り当てられます。

この規則とバイナリ形式に従うと、バイナリで表現できる最小のゼロ以外の正規数は 1.0..0 x 2^-126 となり、以下ではこれを min と呼びます。次に表現できる数値は 1.0..01 x 2^-126 で、これは min+0.0..01 x 2^-126 と表記できます。明らかに、*** と 2 番目の数字の間のギャップは、0 と min の間のギャップの 2^20 倍小さくなります。 float32 標準では、数値が表現可能な最小の数値よりも小さい場合、その数値は 0 にマッピングされます。したがって、ゼロに近い浮動小数点数を含むすべての計算は非線形になります。 (例外は逆定数で、一部のコンピューティング ハードウェアでは利用できない場合があります。この場合、フラッシュをゼロに設定する (FTZ)、つまりすべての逆定数をゼロとして扱うことでこの問題を解決します。)

したがって、通常、すべての数値とその浮動小数点表現の差は小さいですが、ゼロ付近に大きなギャップが生じる可能性があり、この近似誤差が大きくなる可能性があります。

これにより、通常の数学的ルールの一部が機能しない奇妙な効果が発生する可能性があります。たとえば、(a + b) xc は axc + bxc と等しくありません。

たとえば、a = 0.4 x 分、b = 0.5 x 分、c = 1 / 分と設定します。

この場合、(a+b) xc = (0.4 x min + 0.5 x min) x 1 / min = (0 + 0) x 1 / min = 0 となります。

ただし、(axc) + (bxc) = 0.4 x min / min + 0.5 x min x 1 / min = 0.9 です。

別の例として、a = 2.5 x min、b = -1.6 x min、c = 1 x min に設定できます。

すると: (a+b) + c = (0) + 1 x min = min

ただし、(b+c) + a = (0 x min) + 2.5 x min = 2.5 x min です。

このような小さなスケールでは、加算の基本的な操作は非線形になります。

進化戦略を用いた非線形性の活用

私たちは、この本質的な非線形性を計算的にネットワークを非線形化する手段として利用できるかどうか、また利用できるとすれば、深層線形ネットワークが非線形操作を実行できるかどうか疑問に思いました。問題は、現代の微分化ライブラリでは規模が小さい場合に非線形性が無視されることです。したがって、非線形性を利用するためにバックプロパゲーションを使用してニューラル ネットワークをトレーニングすることは困難または不可能です。

記号微分化に依存せずに勾配を評価するために進化戦略 (ES) を使用できます。進化戦略を使用すると、非線形性を考慮する方法として float32 のほぼゼロの動作を利用できます。バックプロパゲーションを通じて MNIST データセットで深層線形ネットワークをトレーニングすると、94% のトレーニング精度と 92% のテスト精度が得られます (Synced は、3 層の完全接続ネットワークを使用して 98.51% のテスト精度を達成します)。対照的に、進化戦略を使用してトレーニングされた同じ線形ネットワークは、99% を超えるトレーニング精度と 96.7% のテスト精度を達成でき、アクティベーション値が float32 の非線形範囲内に分散できるほど十分に小さくなることが保証されます。トレーニング パフォーマンスの向上は、float32 表現における非線形進化戦略の使用によるものです。これらの強力な非線形性により、どのレイヤーでも、下位レベルの機能の非線形な組み合わせである新しい機能を生成できます。ネットワーク構造は次のとおりです。

  1. x = tf . placeholder ( dtype = tf . float32 , shape = [ batch_size , 784 ])
  2.  
  3. y = tf . placeholder ( dtype = tf . float32 , shape = [ batch_size , 10 ])
  4.  
  5. w1 = tf . Variable ( np . random . normal ( スケール = np . sqrt ( 2. / 784 )、サイズ= [ 784 , 512 ] . astype ( np . float32 ))
  6.  
  7. b1 = tf . 変数 ( np . ゼロ ( 512 , dtype = np . float32 ))
  8.  
  9. w2 = tf . Variable ( np . random . normal ( スケール = np . sqrt ( 2. / 512 )、サイズ= [ 512 , 512 ] . astype ( np . float32 ))
  10.  
  11. b2 = tf . 変数 ( np . ゼロ ( 512 , dtype = np . float32 ))
  12.  
  13. w3 = tf . Variable ( np . random . normal ( スケール = np . sqrt ( 2. / 512 )、サイズ= [ 512 , 10 ] . astype ( np . float32 ))
  14.  
  15. b3 = tf . 変数 ( np . ゼロ ( 10 , dtype = np . float32 ))
  16.  
  17. パラメータ = [ w1 、 b1 、 w2 、 b2 、 w3 、 b3 ]
  18.  
  19. nr_params = sum ([ np . prod ( p . get_shape (). as_list ())内のpparams ])
  20.  
  21. スケーリング = 2 ** 125
  22.  
  23. get_logits(par)を定義します。
  24.  
  25. h1 = tf . nn .bias_add ( tf . matmul ( x , par [ 0 ]), par [ 1 ]) / スケーリング
  26.  
  27. h2 = tf . nn .bias_add ( tf . matmul ( h1 , par [ 2 ]), par [ 3 ] / スケーリング )
  28.  
  29. o = tf . nn .bias_add ( tf . matmul ( h2 , par [ 4 ]), par [ 5 ] / スケーリング )* スケーリング
  30.  
  31. 戻る

上記のコードでは、ネットワークには合計 4 つの層があり、最初の層には 784 (28 * 28) の入力ニューロンがあることがわかります。この数は、MNIST データセットの 1 つの画像に含まれるピクセル数と同じである必要があります。 2 番目と 3 番目の層はどちらも各層に 512 個のニューロンを持つ隠し層であり、最後の層は 10 個の分類カテゴリの出力です。各 2 つのレイヤー間の完全に接続された重みは、正規分布に従うランダムに初期化された値です。 nr_params はすべてのパラメータの合計です。以下は get_logist() 関数を定義します。この関数の入力変数 par は、上記で定義した nr_params である必要があります。これは、バイアス項目を追加するためのインデックスが 1、3、5 と定義されており、これらは上記で定義した nr_params と一致するためです。ただし、OpenAI はこの関数の呼び出しプロセスを提供していません。この関数の最初の式は、最初のレイヤーと 2 番目のレイヤー間の順方向伝播の結果を計算します。つまり、入力 x と w1 の積とスケーリングされたバイアス項を計算します (b1、b2、および b3 はすべて前のセクションでゼロ ベクトルとして定義されています)。次の 2 つのステップの計算は基本的に同様です。*** によって返される o は、画像認識のカテゴリになります。しかし、OpenAI はネットワーク アーキテクチャのみを提供し、最適化手法や損失関数などは提供しませんでした。

<<:  Kaggle機械学習モデル融合(スタッキング)体験

>>:  機械学習の問題を解決する一般的な方法があります!この記事を1つだけ読んでみてください!

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

ボストン・ダイナミクスCEO:軍の命令は否定しないが、ロボット犬を粗雑に扱っていると思う

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

音声認識技術はどのように発展したのでしょうか?

音声認識技術は 1950 年代に開発され始めました。それでは、このテクノロジーが長年にわたってどのよ...

将来、AIは人類を脅かすと思いますか?人工知能の未来はどうなるのでしょうか?

AIは現在どのように発展しているのでしょうか?テクノロジーの発展があまりにも速く、人工知能があらゆ...

...

ドローン時代の到来により、人工知能航空機が有人戦闘機に取って代わり、パイロットは失業することになるのでしょうか?

まず、ドローンはソレイマニの暗殺に使用され、その後、アルメニアとアゼルバイジャンの戦場でドローンが活...

巨大企業間の今後の AI 戦争: マイクロソフトは左に進んで 2B、グーグルは右に進んで 2C

AI時代の到来非常にドラマチックなのは、Microsoft Build 開発者会議と Google...

機械学習とは何ですか?

機械学習は人工知能 (AI) のサブセットです。これは、コンピューターを明示的にプログラミングするの...

Weiboはどのように実装されていますか? Weiboの背後にあるアルゴリズム

導入Weiboは多くの人が利用するソーシャルアプリケーションです。毎日Weiboを閲覧する人は、オリ...

...

フォレスター:AIと5Gがエッジコンピューティングの発展を推進

Forrester は 2021 年の技術予測シリーズを発表しましたが、その中にはエッジ コンピュー...

...

海外メディア:米国の研究者がAIでジェスチャーを認識する新しいセンサーデバイスを発明

海外メディアの報道によると、カリフォルニア大学バークレー校の研究者らは、ウェアラブルセンサーと人工知...

「バンカーズアルゴリズム」の秘密が明らかに!フロントエンド テーブルでカスタム数式を使用して「偶数に丸める」

銀行の収益モデルとは何でしょうか? 3 つの言葉: 情報の非対称性です。銀行は預金者から資金を集めて...