バッチ正規化は、確かにディープラーニングの分野における大きな進歩の 1 つであり、近年研究者によって議論されているホットなトピックの 1 つです。バッチ正規化は、トレーニングをより高速かつ安定的に行うために広く採用されている手法であり、最も影響力のある方法の 1 つとなっています。しかし、その汎用性にもかかわらず、この記事で説明するように、この方法を妨げる領域がまだいくつかあり、正規化の実行方法にはまだ改善の余地があることが示唆されています。
1. バッチ正規化を使用するのはなぜですか? 何かを議論する前に、まずバッチ正規化とは何か、どのように機能するか、そしてその使用例について説明する必要があります。 1. バッチ正規化とは何か トレーニング中、各中間活性化層の出力分布は、以前の重みを更新するたびに反復ごとに変化します。この現象は内部共変量シフト (ICS) と呼ばれます。したがって、このような事態を防ぎたい場合、当然の対応としては、すべてのディストリビューションを修正することになります。簡単に言うと、分布が動く場合、この分布を制約して動かないようにすることで勾配の最適化を助け、勾配の消失を防ぎ、ニューラル ネットワークのトレーニングを高速化します。したがって、この内部共変量シフトを減らすことが、バッチ正規化の開発を推進する重要な原則です。 2. 仕組み バッチ正規化は、バッチ全体の経験的平均を減算し、経験的標準偏差で割ることで、前の出力層の出力を正規化します。これにより、データはガウス分布のように見えます。 ここで、μ と *σ^2^* はそれぞれバッチ平均とバッチ分散です。 また、新しい平均と共分散 γ と β を学習します。つまり、簡単に言えば、バッチ正規化は、バッチ分布の 1 次および 2 次運動量を制御するのに役立つものと考えることができます。 vgg16 ネットワークの中間畳み込み層の特徴分布出力。 (左) 正規化なし、(右) バッチ正規化を適用した場合 3. 利点 バッチ正規化を使用する利点をいくつか挙げますが、これについてはすでに多くの記事で説明されているため、詳細には触れません。
一般化するために必要なデータが少なくなります。 2. バッチ正規化の呪い さて、この記事の要点に戻ると、バッチ正規化によってパフォーマンスが低下したり、まったく機能しなくなったりするケースが多くあります。 1. バッチサイズが小さいと不安定になる 前述のように、バッチ正規化では、バッチの前に出力を正規化するために平均と分散を計算する必要があります。バッチ サイズが大きい場合、この統計的推定値は比較的正確ですが、バッチ サイズが小さくなるにつれて、推定値の精度は低下し続けます。 バッチ正規化で 32、16、8、4、2 イメージ/GPU を使用する場合の ResNet-50 検証エラー 上記は ResNet-50 の検証エラー グラフです。バッチ サイズが 32 のままであれば、最終的な検証エラーは約 23 になり、バッチ サイズが小さくなるにつれてエラーは減少し続けることが推測できます (バッチ サイズは平均そのものなので 1 にはなりません)。損失は大きく異なります(約10%)。 バッチ サイズが問題なら、なぜもっと大きなバッチを使用しないのでしょうか。すべての場合に、より大きなバッチを使用できるわけではありません。微調整を行う場合、過度に高い勾配によってモデルが損傷するのを防ぐため、大きなバッチ サイズを使用することはできません。分散トレーニング中、大きなバッチは最終的に小さなバッチのグループとしてインスタンス間に分散されます。 2. トレーニング時間の増加 NVIDIA とカーネギーメロン大学が実施した実験の結果によると、「バッチ正規化は計算集約的ではなく、収束に必要な反復の総数は削減されますが」、反復あたりの時間は大幅に増加し、バッチサイズが大きくなるにつれてさらに増加することがわかりました。 Titan X Pascal を使用した ImageNet 上の ResNet-50 バッチ正規化が合計トレーニング時間の 1/4 を消費していることがわかります。その理由は、バッチ正規化には入力データに対する 2 回の反復が必要であり、1 回はバッチ統計を計算し、もう 1 回は出力を正規化するためです。 3. トレーニングと推論中に異なる結果が出る たとえば、現実世界で「物体検出」を行うことです。オブジェクト検出器をトレーニングする場合、通常は大きなバッチを使用します (YOLOv4 と Faster-RCNN はどちらもデフォルトのバッチ サイズ = 64 でトレーニングされます)。しかし、実稼働環境に移行すると、これらのモデルはトレーニング時ほどうまく機能しなくなります。これは、大きなバッチでトレーニングされるのに対し、リアルタイムではフレームごとに処理する必要があるため、バッチ サイズは 1 に等しくなるためです。この制限を考慮して、一部の実装では、トレーニング セットに基づいて事前に計算された平均値と分散を使用することを好みます。もう 1 つの可能性は、テスト セットの分布に基づいて平均と分散を計算することです。 4. オンライン学習が苦手 バッチ学習とは対照的に、オンライン学習は、データインスタンスを個別に、またはミニバッチと呼ばれる小さなグループで順番に入力することで、システムを段階的にトレーニングする学習手法です。各学習ステップは高速かつ低コストであるため、システムは新しいデータが到着するとリアルタイムで学習できます。 典型的なオンライン学習パイプライン 外部データ ソースに依存しているため、データは個別に、またはバッチで到着する場合があります。各反復でバッチ サイズが変化するため、入力データのスケールとオフセットに対する一般化能力が低く、最終的にはパフォーマンスに影響します。 5. リカレントニューラルネットワークには適さない バッチ正規化は畳み込みニューラル ネットワークのトレーニングと一般化の速度を大幅に向上させることができますが、再帰構造に適用するのは困難です。バッチ正規化は、RNN のスタック間に適用できます。この場合、正規化は「垂直」、つまり各 RNN の出力に適用されます。しかし、これを「水平」に適用することはできません (たとえば、時間ステップ間)。繰り返しの再スケーリングによって爆発的な勾配が生成され、トレーニングに悪影響を与えるためです。 [^注]: いくつかの研究実験では、バッチ正規化によってニューラル ネットワークが敵対的脆弱性に対して脆弱になることが示されていますが、研究と証拠が不足しているため、これを含めませんでした。 代替方法 これらはバッチ正規化を使用する場合の欠点の一部です。バッチ正規化がうまく機能しない場合は、いくつかの代替手段があります。
要約する つまり、ディープニューラルネットワークのトレーニングは簡単そうに見えますが、簡単ではないと思います。この意味では、選択できるアーキテクチャは非常に少なく、各モデルには固定の学習率、固定のオプティマイザー、固定のトリックがあります。これらの技術は自然淘汰によって選択されます。誰かが技術を考案し、人々がそれを導入し、それがうまくいけばそれが保持されるのと同じです。うまくいかなければ、人々は最終的にそれを忘れてしまい、誰もそれを使わなくなります。さらに、バッチ正規化はディープラーニングの発展における画期的な技術です。ただし、前述したように、バッチ次元に沿った正規化ではいくつかの問題が発生するため、正規化手法にはまだ改善の余地があることが示唆されます。 |
<<: AIがFBIに加わったとき、KGBはそれを専門家と呼んだ
>>: データ詐欺師はどこにでもいる。いわゆる「万能薬」を暴く方法
機械学習と AI は IT サービスにさらに深く浸透し、ソフトウェア エンジニアが開発したアプリケー...
[[207803]]環境要件ウブントゥ 17.10 Python 2.7.14環境構築1. Ubun...
Photoshop のようなソフトウェアを使用することは、創造的な作業とみなされますか、それとも反...
これまで、多くの独創的なコンピュータ アルゴリズムの設計が私たちのコンピューティング技術を変えてきま...
[[436311]]最近、Meta CEO マーク・ザッカーバーグ氏によるメタバースの推進が大きな...
人工知能(AI)は日々驚異的な速度で成長しており、それに伴い、さまざまな業界を取り巻く統計も変化して...
世界がインダストリー4.0へと向かうにつれ、モノのインターネットへの世界的な支出は2022年までに1...
デジタルトランスフォーメーションは10年以上にわたってビジネス変革の中核を担ってきましたが、AIの台...
7月6日、 2023年世界人工知能会議(WAIC 2023)が上海で開幕し、同会議の最高賞である「優...
Microsoft Azure と研究チームは協力して、コードネーム「Singularity」という...
COVID-19 により、企業はデジタル変革の取り組みを数か月、場合によっては数年も加速させるようプ...
「新製品のホームページについてどう思いますか?」あなたは、UI、フロントエンド、マーケティング、運...