深層線形ネットワーク (浮動小数点演算を使用して実装) は実際には線形ではなく、非線形計算を実行できることを示します。私たちはこれを活用して、進化戦略を使用して線形ネットワーク内のパラメータを見つけ、重要な問題を解決できるようにします。 ニューラル ネットワークは通常、線形層と非線形関数 (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 表現における非線形進化戦略の使用によるものです。これらの強力な非線形性により、どのレイヤーでも、下位レベルの機能の非線形な組み合わせである新しい機能を生成できます。ネットワーク構造は次のとおりです。
上記のコードでは、ネットワークには合計 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 はネットワーク アーキテクチャのみを提供し、最適化手法や損失関数などは提供しませんでした。 |
>>: 機械学習の問題を解決する一般的な方法があります!この記事を1つだけ読んでみてください!
連日続いている「室温超伝導」事件に、新たな続報が続いている。サンプルの半懸濁に成功した華科チームは本...
今、シリコンバレーに新たな AI ユニコーンが誕生しました!この中国人女性科学者が設立した会社はIm...
見知らぬ人々の集団の中に見覚えのある人を見つけたり、とても見覚えのある顔を見かけたりします。その人は...
人工知能は、知能機械や機械知能とも呼ばれ、人間が作った機械が示す知能を指します。人工知能は、医療、テ...
人工筋肉は科学界では常に重要な研究テーマとなっています。理想的には、人工筋肉は医療分野で患者の健康回...
出会いは幻想的で、窓の外はまた夜明けだった。弦楽器の音とかすかな笑顔をいつも思い出すが、世の中に花が...
[[388287]]なぜツリー構造が必要なのでしょうか? 1. 配列格納方法の分析:利点: 下付き...
「再帰的に自己進化する AI が人間を支配する」という問題に対する解決策はあるのでしょうか? !多く...
クラウド セキュリティのスタートアップ企業 Wiz の研究者は、SAS トークンの設定ミスが原因で、...
今はお金を稼ぐのが難しく、ビジネスも簡単ではないと言う人もいますが、今こそ最高の時代だと言う人もいま...
人工知能や機械学習 (AI/ML) をトレーニングするために現実世界のデータを収集することは、時間が...
自動運転アプリケーションでは、最終的には 3D シーン認識が必要になります。理由は簡単です。車は画像...
この記事では、さまざまな活性化関数を紹介し、活性化関数の長所と短所を比較します。この記事は、人工ニュ...