読者です 読者をやめる 読者になる 読者になる

akimachoのはてなブログ

ICTとデザインのためのブログ

# 勾配消失問題とは何か?

機械学習 読書 データ解析 数学

はじめに

Neural Networks and Deep Learning

邦題 ニューラルネットと深層学習 Chapter5の"The vanishing gradient problem"まで読んだのでメモです。

見取り図

私の理解を見取り図にしました。間違ってたら教えて下さい。

f:id:akimacho:20160701235735p:plain


メモ

多層ネットワークは浅いネットワークよりも強力であるという理論的にはわかっているようなのですが、 いざ実際にニューラルネットを訓練してみるとうまくいきません。そして、なぜそうなってしまうのか、どうすればいいのかというのが、この章の説明されます(まだ全部読んでないけど)

多層ネットの学習を調べるために各層の学習速度を調べてみると、最初の方のレイヤーほど学習速度が低くなることが分かります。

これが勾配消失という現象で、この逆が勾配爆発。実際に各層の学習速度を比較した片側対数グラフ(Neural Networks and Deep Learning Chap5より引用)が以下のものです。

入力層に一番近い隠れ層(Hidden layer1)と出力層に一番近い層(Hidden layer4)の学習速度では100倍近い差があることが分かります。

f:id:akimacho:20160701235725p:plain

これがどうして起こるのかが次の節なのでおいおい読みます。


箸休めに、岡谷貴之“深層学習 ”の勾配消失問題を読んだので、これもメモ。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

本書によれば、勾配消失は逆伝播計算の線形性によって引き起こされます。

Neural Networks and Deep Learningに従えば、誤差逆伝播法は以下の基本式により構成されます(岡谷さんの本だとちょっと違います)。

(1) 出力層での誤差

まずこの式によって出力と教師信号との誤差を求めます。

f:id:akimacho:20160702000702p:plain

(2) 任意の層での誤差

次に以下の式を使って誤差を出力層から入力層に向かって伝播させます。第2層の誤差を求めたければ、第3層の誤差を計算する必要があります。

f:id:akimacho:20160702000729p:plain

他にあと2式ありますが、省略しました。

ご覧のように(2)式は入れ子状になっているので、各層の重みを繰り返しかける必要が出てくるのでパラメタによってはデルタが発散したり収束してしまいます。結果として、重みが適切に更新されなくなり学習がうまくいかなくなってしまいます。

各層の重みが大きいと誤差を出力層から入力層へ逆伝播するうちに発散したり0に収束してしまい、重みの更新がうまくいかずに学習が困難になります。

この勾配消失問題が、3層以上の多層ネットワークの学習における最大障壁になっていて、これを乗り越えることによりディープラーニング(深層学習)が可能になったわけですね。

勾配消失問題を回避する方法として提案されたのが、自己符号化器を使った事前学習になります。


おわりに

甘利俊一さんの"脳・心・人工知能"面白いです。脳神経とかシナプスの説明をすっ飛ばして、いきなりパーセプトロンに入る本が多いですが、本書は脳の仕組みにはじまってその中で機械学習を位置づけがなされています。なので、これまでの勉強の背景が分かってよかったです。まだ前半しか読んでないですが、いい本でした。