Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Keras 機械学習 (Machine Learning)

勾配消失問題の対策(解決策)をご紹介(Kerasプログラムあり)

投稿日:2022年11月8日 更新日:

<目次>

勾配消失問題の対策(解決策)をご紹介(Kerasプログラムあり)
 (1-1) 勾配消失問題とは?
 (1-2) 勾配消失問題の対策方針
 (1-3) 活性化関数による対策(tanh・ReLU)

勾配消失問題の対策(解決策)をご紹介(Kerasプログラムあり)

(1-1) 勾配消失問題とは?

勾配消失問題とは、ニューラルネットワークの学習において、誤差逆伝播の際に勾配が層を伝っていく中で徐々に小さくなり、最終的に学習が進まなくなる現象を指します。

→(参考)勾配消失問題とは?原因や対策についてもご紹介

目次にもどる

(1-2) 勾配消失問題の対策方針

勾配消失の主な原因は、「微分すると値が小さくなる関数(例:シグモイド関数)」を用いている点にあります。そのため、対策としては「微分しても値が小さくなりにくい関数」を活性化関数として使うことが考えられます。ただし、出力層には「確率の関数」である必要があるため、シグモイド関数やソフトマックス関数を使うのが一般的です。一方、隠れ層に関しては、より勾配消失の影響を受けにくい活性化関数への変更が有効です。

Before(勾配消失が発生している例)
隠れ層にシグモイド関数を使用した場合の学習の様子です。

(図121)

Epoch 1/100
469/469 [==============================] - 2s 4ms/step - loss: 3.2976 - accuracy: 0.1034
Epoch 2/100
469/469 [==============================] - 2s 4ms/step - loss: 2.3066 - accuracy: 0.1049
~中略~
Epoch 100/100
469/469 [==============================] - 2s 4ms/step - loss: 2.3097 - accuracy: 0.1040
313/313 [==============================] - 1s 2ms/step - loss: 2.3104 - accuracy: 0.1009
[2.3104090690612793, 0.10090000182390213]

目次にもどる

(1-3) 活性化関数による対策(tanh・ReLU)

対策①:双曲線正接関数(tanh)
tanh関数(ハイパボリックタンジェント)は、シグモイド関数に似た形状をしていますが、出力範囲が「-1〜1」となっており、勾配がより保たれやすいです。
特にx=0のときに最大の勾配(1)を持つため、シグモイドよりも勾配消失が起きにくい特性を持ちます。

(図120①)

(図121)After(tanh関数を使用)

Epoch 1/100
469/469 [==============================] - 3s 4ms/step - loss: 3.1688 - accuracy: 0.1031
Epoch 2/100
469/469 [==============================] - 2s 4ms/step - loss: 2.3066 - accuracy: 0.1039
~中略~
Epoch 100/100
469/469 [==============================] - 2s 4ms/step - loss: 1.9901 - accuracy: 0.2111
313/313 [==============================] - 1s 2ms/step - loss: 1.9830 - accuracy: 0.2085
[1.9829636812210083, 0.2084999978542328]

対策②:ReLU
ReLU(Rectified Linear Unit)は、f(x) = max(0, x) で定義され、xが0以下のときは0、xが0より大きいときは1の勾配を持ちます。
この特性により、大きなxに対しても勾配が消失しないため、深層学習でよく利用されます。
また、数式がシンプルで計算効率が良いこともメリットです。
さらに、x<0の領域で微小な勾配を持たせるLeaky ReLUも存在します。

(図131)

(図122)After(ReLU関数を適用)

Epoch 1/100
469/469 [==============================] - 2s 4ms/step - loss: 363.2008 - accuracy: 0.4561
Epoch 2/100
469/469 [==============================] - 2s 4ms/step - loss: 12.7101 - accuracy: 0.7627
~中略~
Epoch 100/100
469/469 [==============================] - 2s 3ms/step - loss: 0.9683 - accuracy: 0.9020
313/313 [==============================] - 1s 2ms/step - loss: 1.4856 - accuracy: 0.8799
[1.4856008291244507, 0.8798999786376953]

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Keras, 機械学習 (Machine Learning)
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ロジスティック回帰をエクセルで計算する方法(ディープラーニング)

<目次> (1) ロジスティック回帰をエクセルで計算する方法(ディープラーニング)  (1-1) 【前提①】ロジスティック回帰とは?  (1-2) 【前提②】解決したい課題  (1-3) ロジスティッ …

no image

ディープラーニングの論理回路とは?Pythonのサンプルプログラムもご紹介

  <目次> (1) ディープラーニングの論理回路とは?Pythonのサンプルプログラムもご紹介  (1-1) ニューラルネットワークとは?  (1-2) 論理回路とは?  (1-3) AN …

多クラスのロジスティック回帰をKerasで実装した例をご紹介

  <目次> 多クラスのロジスティック回帰をKerasで実装した例をご紹介  (1-1) 実装のフローとポイント   ●STEP1:モデルの定義   ●STEP2:誤差関数の定義   ●ST …

no image

最尤推定とは?考え方を実世界の例も交えシンプルにご紹介

  <目次> (1) 最尤推定とは?考え方を実世界の例も交えシンプルにご紹介  (1-1) 最尤推定とは?  (1-2) 最尤推定の考え方  (1-3) 最尤推定の実際の計算方法は? (1) …

no image

ソフトマックス関数とは?ロジスティック回帰との関係性もご紹介

<目次> (1) ソフトマックス関数とは?ロジスティック回帰との関係性もご紹介  (1-1) 目的  (1-2) ソフトマックス関数とは?  (1-3) ソフトマックス関数の特徴  (1-4) ソフト …

  • English (United States)
  • 日本語
Top