ディープラーニングにおける正規化技術の包括的な概要

ディープラーニングにおける正規化技術の包括的な概要

ディープニューラルネットワークのトレーニングは困難な作業です。 長年にわたり、研究者たちは学習プロセスを高速化し、安定させるためのさまざまな方法を提案してきました。 正規化は、この点で非常に効果的であることが証明されている手法です。

この記事では、それぞれのアプローチについて、その理由と思考プロセスを理解するのに役立つ類推と視覚化を使用して確認します。

なぜ正規化なのか?

たとえば、2 つの機能を持つ単純なニューラル ネットワーク モデルを構築します。 2 つの特徴は、0 から 65 までの範囲の年齢と、0 から 10,000 までの範囲の給与です。これらの特徴をモデルに入力し、勾配を計算します。

異なるサイズの入力は異なる重みの更新につながり、最小値に向かうオプティマイザーのステップは不均一になります。これにより、損失関数の形状も不均衡になります。この場合、オーバーシュートを回避するために学習率を低くする必要があり、これは学習プロセスの速度低下を意味します。

したがって、私たちの解決策は、入力を正規化し、平均(中心化)を減算して標準偏差で割ることで特徴を縮小することです。

このプロセスは「ブリーチング」とも呼ばれ、すべての値の平均がゼロ、分散が 1 になるため、収束が速くなり、トレーニングがより安定します。

これは素晴らしい解決策です。では、ネットワーク内のすべてのレイヤーでアクティベーションを正規化してみませんか?

次に、活性化の正規化方法を見てみましょう。

バッチ正規化

2015年にセルゲイ・ヨッフェとクリスチャン・セゲディ[3]は、内部共変量シフトの問題に対処するためにこの考え方を採用しました。 以前は、重みの更新により入力層の分布が変化し続けました。そのため、次のレイヤーは常に新しい分布に適応する必要があり、収束が遅くなり、トレーニングが不安定になる可能性があります。

バッチ正規化は、各レイヤーの後の分布を制御および最適化する方法を提供します。 プロセスは入力正規化と同じですが、学習可能な 2 つのパラメータ γ と β を追加します。

退屈な数式よりもコードで説明した方がはるかにわかりやすいので、BN コードは次のようになります。

 BatchNorm ( xガンマベータeps = 1e-5 ) を定義します
# x: 入力形状 [N, C, H, W]
NCHW = x . 形状
平均= torch.mean ( 入力= x次元= [ 0,2,3 ]keepdim = True )
var = torch.var ( 入力= xdim = [ 0,2,3 ] keepdim = True )
# 平均、変数形状: [1, C, 1, 1]
x = ( x - 平均) / torch.sqrt ( var + eps )

x * ガンマ+ ベータを返す

これら 2 つのパラメータは、ネットワークに沿ったバックプロパゲーションを通じて学習されます。活性化をスケーリング (γ) およびシフト (β) することで分布を最適化します。

分布が固定されているため、学習率を高め、収束速度を加速することができます。 計算の改善に加えて、BN は正規化手法としても使用できます。 データセット統計の近似によって生成されるノイズにより、ドロップアウトの必要性がなくなります。

しかし、それは諸刃の剣です。 この見積りは、大規模なバッチにのみ適用されます。 バッチ サイズが小さい場合、パフォーマンスは大幅に低下します。

BN のもう 1 つの欠点は、バッチ処理に依存していることです。 複数の例をまとめて渡すのではなく、単一の例を渡した場合、ネットワークは事前に計算されたトレーニングの平均と分散を使用する必要があり、異なる結果になった可能性があります。

この問題の重要性により、バッチ処理への依存を避けるための代替アプローチが生み出されました。

レイヤーの正規化

これは、2016年にGeoffrey E. Hintonらによってバッチサイズの制約を軽減する最初の試みでした[4]。この方法を提案する主な理由は、BN を再帰型ニューラル ネットワークに適用する代替方法を見つけることが不可能であるためです。

ディープニューラルネットワークでは、層の数が固定されているため、各 BN 層の統計情報を保存することが容易です。 ただし、RNN では、入力形状と出力形状の長さが異なります。 したがって、この場合は、バッチ全体ではなく、単一の時間ステップ (サンプル) の統計を使用して正規化することをお勧めします。

 定義LayerNorm ( x , gamma , beta , eps = 1e-5 ):
# x: 入力形状 [N, C, H, W]

NCHW = x . 形状
平均= torch.mean ( 入力= x次元= [1,2,3 ] keepdim = True )
var = torch.var ( 入力= xdim = [ 1,2,3 ] keepdim = True )
# 平均、変数形状: [N, 1, 1, 1]
x = ( x - 平均) / torch.sqrt ( var + eps )

x * ガンマ+ ベータを返す

この方法では、バッチ(N)内の各例は[C、H、W]次元にわたって正規化されます。 BN と同様に、トレーニングを高速化および安定化でき、バッチ サイズによる制限はありません。 この方法は、バッチ サイズが 1 のオンライン学習タスクに使用できます。

インスタンスの正規化

ドミトリー・ウリヤノフらは2016年の論文[5]でインスタンス正規化を紹介した。 これは、バッチ処理への依存を減らしてスタイル転送ネットワークを改善するためのもう一つの試みです。

 定義InstanceNorm ( x , ガンマ, ベータ, eps = 1e-5 ):
# x: 入力形状 [N, C, H, W]
NCHW = x . 形状
平均= torch.mean ( 入力= xdim = [2,3 ]keepdim = True )
var = torch.var ( 入力= x dim = [ 2,3 ] 、 keepdim = True )
# 平均、変数形状: [N、C、1、1]
x = ( x - 平均) / torch.sqrt ( var + eps )

x * ガンマ+ ベータを返す

バッチとチャネル全体の正規化により、画像から特定のコントラスト情報を削除できるため、一般化に役立ちます。

このアプローチは、Pix2Pix や CycleGAN などの生成モデルで人気となり、StyleGAN2 で使用される有名な Adaptive Instance Normalization の先駆けとなりました。

グループの正規化

グループ正規化は2018年の論文[1]で導入され、CNNのBN制限に直接対処しています。 これは主に、バッチが多数のマシンに分割される分散学習を対象としています。 これらは、6 ~ 8 個、場合によっては 1 ~ 2 個といった少数の例に基づいてトレーニングされます。

GN は、レイヤーとインスタンスの混合として理解できます。 GN はチャネルをグループに分割し、グループ間で正規化します。 この方式により、計算はバッチ サイズに依存しなくなります。

 定義GroupNorm ( xガンマベータGeps = 1e-5 ):
# x: 形状 [N, C, H, W] を持つ入力フィーチャ
# G : グループ数
NCHW = x . 形状
x = torch.reshape ( 入力= x形状= [ NGC // GHW ] )
平均= torch.mean ( 入力= x次元= [2,3,4 ] keepdim = True )
var = torch.var ( 入力= xdim = [ 2,3,4 ] keepdim = True )
# 平均、変数形状: [N、G、1、1、1]
x = ( x - 平均) / torch.sqrt ( var + eps )
x = torch.reshape ( 入力= x形状= [ N CHW ] )
x * ガンマ+ ベータを返す

GN は、小さなバッチでトレーニングされた BN よりも優れていますが、大きなバッチでは結果に勝てません。ただし、出発点としては良いです。

活性化の正規化方法は基本的には聞いたことがあり、よく使います。次に重みの正規化方法を紹介します。

重量標準化

入力とレイヤー出力はすでに正規化されており、残っているのは重みだけです。特に出力を正規化したい場合には、制御なしに大きくなる可能性があるからです。 重みを正規化することで、よりスムーズな損失とより安定したトレーニングを実現します。

 定義WeightStand ( w , eps = 1e-5 ):
# w: 入力特徴の形状 [Cin, Cout, kernel_size, kernel_size]
平均= torch.mean ( 入力= w次元= [ 0,2,3 ]keepdim = True )
var = torch.var ( 入力= w dim = [ 0,2,3 ]keepdim = True )
# 平均、変数形状: [1, Cout, 1, 1]

w = ( w - 平均) / torch.sqrt ( var + eps )

戻る

重みの標準化は、グループ正規化の補助として適しています。 1 つのサンプルのみが使用される BN (ビッグ バッチ正規化) の場合、これらの方法を組み合わせると、より良い結果が得られます。

さらに、バッチ チャネル正規化と呼ばれる BCN 方式を提案した人もいます。つまり、各レイヤーは BN と GN の両方を使用します。

要約する

正規化はディープラーニングの基本的な概念です。 計算を高速化し、トレーニングを安定させます。 長年にわたり、さまざまな技術が開発されてきました。この記事では、それに関連する現在の方法を整理します。お役に立てば幸いです。


<<:  TikTokの背後にあるAIの仕組み

>>:  インテリジェント運転ビッグデータの最先端の研究の進歩と典型的な応用

ブログ    
ブログ    

推薦する

今後5年間の産業AIの8つの主要な発展トレンド

ChatGPT と生成型人工知能 (AI) が世間の注目を集めるようになり、突如として世界で最も議論...

アリババが自社開発の音声認識モデルDFSMNをオープンソース化、精度は最大96.04%

[[232541]]最近、アリババDAMOアカデミーの機械知能研究所は、新世代の音声認識モデルDF...

強化学習でデータ分析を行うにはどうすればいいでしょうか?シンガポール国立大学等によるTKDE 2022レビュー論文

データの処理と分析は基本的かつ広範囲にわたります。アルゴリズムはデータの処理と分析において重要な役割...

LLaVA-1.6は非常に強力で、Gemini Proを上回り、推論機能とOCR機能が向上しています。

昨年 4 月、ウィスコンシン大学マディソン校、マイクロソフト リサーチ、コロンビア大学の研究者が共同...

機械学習 = 「新しいボトルに入った古いワイン」の統計?いいえ!

最近、ディープラーニングと人工知能に関するジョークがソーシャルメディア上で広く流布しており、この2つ...

ガートナーの調査結果: CEO は AI を業界に最も大きな影響を与える破壊的技術と見なしている

「ジェネレーティブ AI はビジネスや運用モデルに多大な影響を及ぼすでしょう」と、ガートナーの著名な...

AIが広告部門に侵入、Google社員は職を失うことを懸念

12月24日、グーグルが社内の効率化のために人工知能(AI)ツールの導入を検討していると報じられた。...

北京の自動運転路上試験、安全走行距離が300万キロ超え

IT Homeは5月30日、新華社通信が伝えたところによると、記者が29日に北京市インテリジェント車...

「AI+教育」は偽のトリックか本物のスキルか?本質は依然としてAIの能力のテスト

近年、教育業界の資金のほとんどは「AI+教育」を追い求めています。現在、「AI+教育」分野では、さま...

知識経済は死んだ! AIが生み出す「直感経済」の新時代!

AI をめぐっては興奮と恐怖が同時に存在しているのは否定できない現実です。一方では、マイクロソフト...

在庫 | 今年の世界の AI 事情

​​​ [[253255]]​​ 1. 2018 年の世界の AI 業界の発展は非常に爆発的でした。...

...

AIの新たな方向性:敵対的攻撃

[[249559]]近年のAI分野を調査していく中で、近年、世界中の研究者の視野の中に敵対的攻撃とい...

ガイド | NLP の問題の 90% を解決する方法を段階的に教えます

[[279869]]テキストデータはどこにでもある既存の企業でも、新しいサービスを開発している企業で...

Transformer ではまだ注意が必要ですか?

ここ数週間、AI コミュニティでは、注意を必要としないアーキテクチャを使用して言語モデルを実装すると...