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

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

関連記事

no image

AzureのMachine Learning(機械学習)の始め方

  <目次> (1) AzureのMachine Learning(機械学習)の始め方  (1-0) やりたいこと  (1-1) STEP1:(事前準備)ワークスペースの作成  (1-2) …

no image

TensorFlowで「AttributeError: module ‘tensorflow’ has no attribute ‘xxxxxx’」が出た時の原因と対策について

  <目次> (1) TensorFlowで「AttributeError: module ‘tensorflow’ has no attribute ‘xxxxx …

多層パーセプトロンのアルゴリズムをご紹介(Excel計算のオマケ付き)

  <目次> 多層パーセプトロンのアルゴリズムをご紹介(Excel計算のオマケ付き)  【前提①】多層パーセプトロンとは?  多層パーセプトロンの流れを整理   ●STEP1:分布の種類を仮 …

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

<目次> 勾配消失問題とは?原因や対策についてもご紹介  やりたいこと/概要  STEP0:前提  STEP1:勾配消失問題の原因と流れ  STEP2:サンプルプログラム  STEP3:まとめと学び …

no image

ディープラーニングのモデルの評価とは?実際のPythonプログラムもご紹介

<目次> ディープラーニングのモデルの評価とは?実際のPythonプログラムもご紹介  (1-1) モデルの評価の概要  (1-2) モデルの評価の指標  (1-3) モデルの評価の実装例①  (1- …

  • English (United States)
  • 日本語
Top