Xavierの初期値 (G検定)

Xavierの初期値

1. 定義と概要

Xavierの初期値(別名: Glorotの初期値)とは、ニューラルネットワークの重みを初期化する手法の一つです。前層のノード数(一つ前の層にあるニューロンの数)をnとしたとき、平均0・標準偏差1/√nの正規分布(平均値の周辺に値が集まる釣鐘型の分布)に従う乱数で重みを生成します。2010年にXavier Glorot氏とYoshua Bengio氏によって提案され、活性化関数がシグモイド関数やtanh関数(出力を-1から1の範囲に押しつぶす関数)である場合に適しています。

目的は、層を伝わるにつれてアクティベーション(各ニューロンが活性化関数を通した後に出力する値)の分布が0や1などの極端な値に偏ることを防ぐことにあります。あわせて、勾配消失問題(誤差を逆向きに伝える際に層を遡るほど勾配が小さくなり、学習がほとんど進まなくなる現象)を緩和する狙いもあります。

重みをすべて同じ値、例えば0で初期化すると、逆伝播(誤差を逆向きに伝えて各層の重みを更新する仕組み)の際に各ニューロンが同一の勾配を受け取ってしまい、対称性が崩れず学習が進みません。乱数による初期化が必要になる一方、標準偏差が大きすぎる単純な乱数を使うと問題が生じます。

層が深くなるにつれてアクティベーションの分布が、シグモイド関数の出力を0や1に近づける飽和領域(出力がほぼ0か1に張り付き、傾きにあたる勾配がほぼ0になる領域)に偏り、勾配消失が起きやすくなります。前層のノード数に応じて分散(値のばらつきの大きさを表す統計量)を調整するXavierの初期値はこの課題への対応として考案され、その後ReLU関数向けに分散を大きくしたHeの初期値が提案されました。

2. 試験対策ポイント

まず整理しておきたいのは、提案者と計算式、対応する活性化関数という3点の組み合わせです。前層のノード数をnとして両手法を並べると、次のように整理できます。

項目 Xavierの初期値 Heの初期値
提案者(提案年) Xavier Glorot氏・Yoshua Bengio氏(2010年) Kaiming He氏(2015年)
重みの標準偏差 1/√n √(2/n)
重みの分散 1/n 2/n
対応する活性化関数 シグモイド関数・tanh関数 ReLU関数

Kaiming He氏は後にResNet(代表的な画像認識モデル)の開発にも携わった人物として知られています。どの初期化手法がどの活性化関数に対応するかは取り違えやすい点で、名前と式と関数を一組にして覚えておきたいところです。

Heの初期値がXavierの初期値より分散を大きくする理由として、ReLU関数は0未満の入力を0に変換するため出力の半分の情報が失われる非対称性があり、その分を補うために分散を2倍にしている点が分かれ目です。表のとおり、Heの初期値の分散はXavierの初期値の分散のちょうど2倍という関係になります。標準偏差の数値そのものよりも、この分散比の理由づけが要点です。

重みをすべて0や同一の定数で初期化すると、逆伝播時に全ニューロンが同じ更新を受けて対称性が崩れず、ネットワークの表現力が活かされません。乱数による初期化が前提になる点も試験対策の論点です。Xavierの初期値、Heの初期値、勾配消失問題、活性化関数は、まとめて押さえておきたい関連語にあたります。

3. 関連概念との比較・相違点

Heの初期値との最大の違いは、対応する活性化関数と分散の大きさです。Xavierの初期値はシグモイド関数やtanh関数のように出力が0や1付近で頭打ちになる関数を前提に、標準偏差1/√nの正規分布を使います。一方、Heの初期値はReLU関数のように出力の半分が0になる非対称な関数を前提に、標準偏差√(2/n)というより分散の大きい正規分布を使います。

分散でみると、Heの初期値の分散はXavierの初期値の分散のちょうど2倍にあたります。活性化関数に合わない初期化手法を選ぶと、層を重ねた際に勾配消失や学習の停滞を招きやすくなります。

重みのゼロ初期化(あるいは同一の定数による初期化)との違いは、対称性が崩れるかどうかにあります。重みをすべて同じ値にすると、逆伝播時に全ニューロンが同一の勾配を受け取り、学習が進んでも各ニューロンが同じ働きしかできません。Xavierの初期値やHeの初期値は、平均0の正規分布に従う乱数を使うことで各ニューロンに異なる初期値を割り当て、この対称性の問題を避ける設計になっています。

バッチ正規化(各層の出力を学習中にその都度正規化して学習を安定させる手法)との違いは、勾配消失問題への対処のタイミングです。Xavierの初期値やHeの初期値は学習を始める時点の重みの分布を整える手法である一方、バッチ正規化は学習が進む過程で各層の出力の分布をそのつど調整し直す手法です。

両者は排反ではなく、適切な初期値でスタートしつつ、学習中の分布のずれをバッチ正規化で補うという組み合わせで使われることもあります。

4. ビジネス・実務での活用シナリオ

製造業の外観検査や画像認識AIの開発では、CNN(畳み込みニューラルネットワーク)をゼロから学習するプロジェクトで、活性化関数にReLU関数を用いる層にHeの初期値を採用します。これにより学習が安定し、収束までの試行回数と開発コストを抑えられます。

自然言語処理(人間が使う言葉をコンピュータに処理させる技術)や音声認識の分野では、シグモイド関数やtanh関数を含むゲート構造(情報の通過量を調整する仕組み)を持つ層があります。こうした層でXavierの初期値を使うと、深い層でも勾配消失を起こしにくくなり、学習の立ち上がりが安定します。

AI開発・運用の実務(MLOps)では、PyTorchライブラリのxavier_uniform_関数やkaiming_normal_関数を使い分けます。TensorFlowライブラリやKerasライブラリでも、初期化オプションを活性化関数に応じて指定します。初期化をフレームワークのデフォルト任せにすると学習が不安定になり、後の手戻りにつながります。

5. 要点まとめ

  • Xavierの初期値は前層のノード数nに対し平均0・標準偏差1/√nの正規分布で重みを生成し、シグモイド関数やtanh関数向けの初期化手法です。
  • Heの初期値は標準偏差√(2/n)でXavierの初期値より分散が大きく、ReLU関数の非対称性を補うためReLU系の活性化関数で使われます。
  • 重みのゼロ初期化は対称性が崩れず学習が進まない問題があり、Xavierの初期値やHeの初期値のような乱数による分散設計が勾配消失問題の緩和につながります。

6. 確認問題

問1Xavierの初期値は、活性化関数にシグモイド関数やtanh関数を用いる場合に適した初期化手法であり、前層のノード数をnとすると平均0・標準偏差1/√nの正規分布から重みを生成する。

解答・解説をみる

○ 正しい

Xavierの初期値の定義そのものです。前層のノード数に応じて標準偏差を1/√nに調整することで、アクティベーションの分布が極端に偏るのを防ぎます。

問2Heの初期値は、Xavierの初期値よりも重みの分散を小さく設定することで、ReLU関数を用いる層の勾配消失を防ぐ。

解答・解説をみる

× 誤り

正しくは、分散を小さくではなく大きくします。Heの初期値は標準偏差√(2/n)でXavierの初期値の1/√nより分散が大きく設計されています。ReLU関数は負の入力を0にして出力の半分の情報を失う非対称性があり、その分を補うために分散をちょうど2倍にしています。

問3ニューラルネットワークの重みをすべて同じ値、例えば0で初期化すると、逆伝播時に各ニューロンが同一の更新を受けてしまい、ネットワークの表現力が十分に活かされない。

解答・解説をみる

○ 正しい

重みが同一だと対称性が崩れず、全ニューロンが同じ勾配で更新され続けます。Xavierの初期値やHeの初期値のように乱数を用いた分散設計は、この問題を避けるための前提になります。