【深層学習】勾配消失問題とは?ニューラルネットワーク学習時の対処方法|ディープラーニング入門

こんにちは、Kosei(@kay_diacc2)です!

本記事では多層化されたニューラルネットワークの学習を行う際に考慮すべき「勾配消失問題」について解説します。本記事を読了いただくことで「ニューラルネットワークの学習方法」「勾配消失問題はと何か?」「勾配消失が起こらないための対策」が理解できます。

目次

ニューラルネットワークにおける処理の流れ

ニューラルネットワークの学習では、まず出力層から得られた出力結果が正解ラベルと比較され、出力結果と正解ラベルの差である誤差が算出されます。続いて、各出力結果から得られた誤差の総和(損失関数)を求めます。ニューラルネットワークではこの損失関数を最小化することが学習と位置付けられています。求められた損失関数の値をもとにパラメーター(重みやバイアス等)を更新していくのですが、その更新手段として損失関数の勾配が用いられ、損失関数の最小値を探索していくことになります。このような学習方法を「誤差逆伝播法」と言います。

ここで損失関数を最小化するための理論は下記で詳しく解説しています。

勾配消失問題とは

各層のパラメータを更新しながら誤差を最小化していくために勾配を用います。誤差伝播法において、勾配は上図のように伝播するイメージです。ここでポイントは出力側から入力側に近づくにつれて次々と勾配が掛け合わされていくという点です。

勾配消失問題とは、各層の勾配で小さい値が続いた場合、入力側付近の勾配はゼロと見なされてしまい、学習がうまく進まなくなってしまう問題」のことを言います。

浅い層のニューラルネットワークを構築する上で、勾配消失問題が深刻になることはほとんどありません。一方で、何層も多層化されたニューラルネットワークを構築する際はこの問題への対応が必要です。

活性化関数による勾配消失対策

勾配消失問題を引き起こす原因の1つとして、活性化関数があります。例えばシグモイド関数を利用した場合、勾配[∂f(x)/∂x]を計算すると、最大値が0.25であると分かります。これを多層ニューラルネットワークに適用すると勾配消失が起こりやすいことを意味します。近年活性化関数には、ReLU関数を用いるのが一般的となっています。

その他勾配消失問題の対策として、「損失関数を最小化するためのパラメータ探索アルゴリズムの選択」や「XavierやHeの初期値を用いて重みを初期化する」等があります。上述のReLU関数を用いる際はHeの初期値を用いるのが好ましいと言われます。

AI・機械学習まとめ

最後までご覧いただきありがとうございました。当サイトでは機械学習・深層学習における理論やPythonを用いた実装方法の解説記事を多数取り扱っております。

【初学者向け】データサイエンス・人工知能(AI)開発のおすすめ学習方法も解説してます。

ディープラーニングを学ぶ上でおすすめの教材はこちらで紹介しています。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる