どもー、ちょげです。
ディープラーニングでは、重みの初期値を適切に設定しないと学習に問題が起こることがあります。
重みの初期値によって起こりうる問題について解説します。
勾配消失
まず、「勾配消失」という問題が起こります。
勾配消失とは、最小値を示す「勾配」がどんどん小さくなっていき、最終的に消滅してしまうというものです。
勾配が消失すると、パラメータが更新できなくなり、学習が停止してしまいます。
勾配消失は、学習が出来なくなるという重大な問題なのです。
表現力の制限
もう1つが「表現力の制限」です。
例えば、重みに初期値を設定した時に、全てのニューロンの出力がある数値に偏っていたとします。
全てのニューロンで同じような出力をすれば、パラメータの調整も同じように行われます。
結果全てのニューロンの重みが似通ったものになります。
どんなにニューロンを増やしても、重みが一緒だったら意味がありません。
つまり、「表現力の制限」とは1つ1つのニューロンの独自性のようなものが損なわれることです。
重みの初期値によって、この「表現力の制限」が起こりえます。
XavierとHeの初期値
重みの初期値には、これを使えば前述した2つの問題は防げるという初期値が2つあります。
それは「Xavier(ザビエル)の初期値」と「Heの初期値」です。
Xavierの初期値を使うことによって、根本的な原因となるニューロンの出力分布が偏る問題を防ぐことが出来ます。
しかし、活性化関数がReLU関数の時だけは違います。
活性化関数がReLU関数の時は、Heの初期値を使うことが推奨されています。
少し複雑に感じるかもしれません。
しかし、簡単にまとめると基本的には「Xavierの初期値」を使えばよくて、活性化関数がReLu関数の時は「Heの初期値」を使えばよいということです。
まとめ
重みの初期値について解説しました。
間違った重みの初期値を設定すると、「勾配消失」と「表現力の制限」を引き起こします。
ですが、ありがたいことに初期値は「Xavierの初期値」と「Heの初期値」の2つを使えば大丈夫です。
読んで頂きありがとうございました。
参考

コメント