ビッグデータダイジェスト制作 編纂者: Shijintian、Ni Ni、Hu Jia、Yun Zhou 多くの機械学習ラボでは、機械が何万時間もトレーニングされてきました。このプロセスでは、研究者は多くの回り道をして多くのバグを修正することがよくありますが、機械学習の研究プロセスでは、機械だけが経験と知識を獲得するわけではないことは確かです。私たち人間も豊富な経験を積んでいます。この記事では、最も実用的な研究提案をいくつか紹介します。 次に、この記事では、ディープ ニューラル ネットワーク (主に TensorFlow プラットフォームに基づく) のトレーニングに関するいくつかの経験を紹介します。これらのアドバイスの中には、あなたにとっては当たり前のことのように思えるものもあるかもしれませんが、他の人にとっては重要なものかもしれません。一部の提案は特定のタスクには適用できない場合がありますので、注意して使用してください。 一般的なアドバイス ADAM オプティマイザーを使用します。バッチ勾配降下法などの従来のオプティマイザーと比較すると、Adam オプティマイザーのパフォーマンスは優れています。 TensorFlow の使用に関する提案: 重みを保存および復元するときは、Adam オプティマイザーを作成した後に Saver を作成することを忘れないでください。これは、Adam にも復元する必要がある状態 (学習率の単位重みとも呼ばれます) があるためです。 Relu は、最適な非線形マッピング (活性化関数) です。 Sublime が最高のテキスト エディターであるのと同じように、ReLU は高速でシンプルであり、トレーニング中に勾配が徐々に減少しないのが魔法です。シグモイドは教科書では活性化関数としてよく使われますが、DNN では勾配をうまく伝達できません。 出力層では活性化関数を使用しないでください。これは明らかなことですが、ネットワーク内のすべてのレイヤーで共有関数を使用する場合はよくある間違いです。出力層で活性化関数を使用しないようにしてください。 各レイヤーにバイアス値を追加します。これは機械学習の入門です。バイアスは基本的に、平面を最適な位置に変換します。 y=mx+b 関数では、b は線を最も適合する位置に移動できる偏差値です。 分散スケール初期化を使用します。 Tensorflow では、 tf.contrib.layers.variance_scaling_initializer() に似たメソッドを使用して初期化します。 私たちの経験では、この方法は、通常のガウス初期化、切り捨て正規初期化、および Xavier 初期化よりもうまく機能します。 一般に、分散スケーリング初期化では、各レイヤーの入力と出力の数に応じて初期ランダム重みの分散を調整できます (TensorFlow では入力数がデフォルトで使用されます)。これにより、切り捨てやバッチ正規化などの追加の方法を必要とせずに、信号がネットワークのより深いところまで通過できるようになります。 Xavier 初期化法はこれに似ていますが、Xavier 初期化は基本的にすべてのレイヤーで同じです。ネットワークのレイヤー間の値の範囲が大きく異なる場合 (畳み込みネットワークでは一般的)、各レイヤーに同じ分散を使用することは適切ではない可能性があります。 入力データは正規化されます。トレーニング中に、データセットの平均を減算し、標準偏差で割ります。これにより、各方向の重みの伸張が軽減され、ニューラル ネットワークがより速く、より適切に学習できるようになります。これは、入力データを平均値を中心に維持することで最も効果的に実現されます。また、トレーニング セットが実際のデータ環境をシミュレートできるように、各テスト入力が一貫して正規化されていることを確認する必要があります。 データを適切にスケーリングします。これは正規化プロセスに関連していますが、正規化の前に実行する必要があります。たとえば、実際のデータ x の範囲は [0, 140000000] で、tanh(x) または tanh(x/C) 分布に従う可能性があります。ここで、C は、入力データが tanh 関数の傾きに適合するように曲線を調整するために使用される定数です。特に、入力データの一方または両方の端が無制限の場合、ニューラル ネットワークは (0,1) の範囲でより適切に学習できます。 一般的に、学習率を下げる必要はありません。学習率の低下は SGD ではより一般的ですが、ADAM ではより自然に処理できます。微妙なパフォーマンスの違いを本当に確認したい場合、トレーニングの最後に学習率を一時的に下げると、エラーが突然少し減少し、その後再び安定することがあります。 畳み込み層に 64 個または 128 個のフィルターがある場合、これは少し冗長になる可能性があります。特にディープ ネットワークの場合、128 個のフィルターは多すぎます。すでに多数のフィルターがある場合は、さらに追加しても意味がない可能性があります。 プーリングは、変換の不変性を可能な限り最大限に維持することです。プーリングにより、ニューラル ネットワークは基本的に、画像の一部の全体的な特性を学習できるようになります。たとえば、最大プーリングでは、畳み込みネットワークで画像が変位、回転、拡大縮小などの変換を受けた後も、画像の特徴を変更せずに維持できます。 ニューラルネットワークのデバッグ ニューラル ネットワークが学習できない場合、つまり、トレーニング中に損失または精度が収束しないか、期待どおりの結果が得られない場合です。以下の提案をお試しください:
ケース分析 上記の手順を理解しやすくするために、ここでは畳み込みニューラル ネットワークによって実行された回帰実験のいくつかの損失グラフ (TensorBoard 経由) を示します。 まず、このニューラル ネットワークはまったく収束しません。 数値が範囲外にならないようにクリッピングしてみます。 痛いですね、この滑らかでない線がいかに乱雑か見てください。学習率は高すぎますか? 学習率を下げて、1 つのサンプル ポイントのみでトレーニングしてみました。 学習率が変化していることがわかります(ステップ 300 から 3000 の間)。どうやら、学習率が急速に低下しすぎているようです。そこで、反復速度を遅くしたところ、うまくいきました。 2000 ステップから 5000 ステップの間で減衰があることがわかります。結果は良くなりましたが、損失がまだゼロになっていないため、十分ではありません。 次に、学習率の低下を停止し、値をより狭い範囲に絞り込み、tanh 関数を置き換えてみました。これにより損失は 1 に減少しますが、それでもオーバーフィッティングは達成できません。 このステップで、バッチ正規化を削除すると、ネットワーク出力は 1 回または 2 回の反復後にすぐに NaN になることがわかります。そのため、バッチ正規化を停止し、初期化を分散正規化に変更しました。これにより問題は解決され、1 つまたは 2 つの入力サンプルを使用してトレーニングすることでオーバーフィッティングを実現できます。グラフ下のY軸の値はクリップされていますが、初期誤差は5を超えており、誤差がほぼ4桁減少したことがわかります。 グラフの上半分は平滑化されていますが、テスト データにすぐに過剰適合し、トレーニング セット全体の損失が 0.01 を下回っていることがわかります。現時点では学習率はまだ低下していません。学習率を 1 桁下げてニューラル ネットワークのトレーニングを継続したところ、さらに良い結果が得られました。 これらははるかに良い結果です! しかし、トレーニングを 2 つの部分に分割するのではなく、学習率を幾何級数的に減少させるとどうなるでしょうか? 各反復で学習率を 0.9995 倍すると、結果はそれほど良くありません。 その理由はおそらく、学習率が急速に低下するためです。 0.999995 を使用すると若干改善されますが、結果は減衰なしとほぼ同じです。この一連の実験から、バッチ正規化は不適切な初期化によって引き起こされる爆発的な勾配を隠蔽し、学習率の減少は最後の段階での学習率の減少を除いて、ADAM オプティマイザーにとってあまり役に立たないという結論に達しました。バッチ正規化に加えて、範囲をクリッピングすると、実際の問題が隠されるだけです。また、tanh 活性化関数を使用して、高分散の入力データを変換しました。 これらの基本的なヒントがディープ ニューラル ネットワークの学習に役立つことを願っています。よくあることですが、単純な詳細が大きな影響を与えることがあります。 関連レポート: ディープニューラルネットワークの構築 [この記事は51CTOコラムBig Data Digest、WeChatパブリックアカウント「Big Data Digest(id: BigDataDigest)」のオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: ディープラーニングと比較すると、この新しいアルゴリズムの方が優れているようですね?
>>: ライトスピードコンピューティングが画期的な進歩を達成、AIトレーニングコストの問題が解決される可能性
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
昨年、ChatGPT とその他の AI 搭載サービス エンジンがリリースされて以来、このテクノロジー...
[[279165]]今日、認知学習はかつてないほど普及しています。一般的に言えば、認知学習と認知コ...
ロボット工学と自動化には違いがありますか? 自動化が自分に適しているかどうかわからない人はたくさんい...
[[387555]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...
人工知能は新たなインフラの一つとして、人々の社会生活のあらゆる分野に統合され、あらゆるものがつながり...
あなたは深淵を見つめ、深淵もまたあなたを見つめ返します。 「第一法則: ロボットは人間を傷つけたり、...
人工知能は近い将来、私たちの日常生活を変えるでしょう。企業は来たるイノベーションの波から価値を獲得す...
AnimateAnyoneに続き、Alibabaのもう一つの「ダンス作品」論文が人気を集めている—...