勾配法の仕組みをわかりやすく解説
ニューラルネットワークで認識精度を高めるためには、適切な重みを設定することが重要です。
このページでは、適切な重みを求めるために用いる「勾配法」というアルゴリズムを解説します。
勾配法とは
ニューラルネットワークの精度を高めるには、損失関数を最小(予測誤差を最小)にする「最適な重み」を見つける必要があります。
重みの探索には勾配法を用いるのが一般的です。
配法は最小値や最大値を求めるためのアルゴリズムで、解析的に解くことが困難な問題に用いられます。「解析的に解けない」とは、ある関数に対してうまく微分ができない状態を指します。
勾配法の仕組み
勾配法は、関数を最小にするの値、関数を最小にするの値の組み合わせといったように、関数を最小にするような変数の値を求めます。
勾配法は傾きが0となる地点が関数の最小、最大値を与えるという考え方に基づいた手法です。これは、傾きが0となる地点で最小、最大値、極小、極大値をとる微分法の考え方に似ています。
勾配法では、数値微分を用いて、傾きが0となる最適なを求めます。具体的な手順は以下の通りです。
- 初期探索地点を定める。
- ある地点での傾きを求める。
- 傾きと学習率をもとに次の探索地点を求める。
- 2~3の更新を傾きが0となるが見つかるまで繰り返す。
勾配法と学習率
一変数関数の最小値問題を例に考えてみましょう。
例題
という関数について勾配法を用いて最小値を与えるを求めましょう。
のグラフは以下のようになります。
微分法を用いるとよりの時に最小値をとります。
今回はについて勾配法を用いて、を最小とするようなを求めます。
から更新してみましょう。学習率は0.25、です。
勾配法による更新を続けるとゆっくりに近づき、更新を続けるとと求めることができます。
初期値をとしましたが、この初期値は自由に設定することができます。
学習率を0.25としました。これも自由に設定することができ、この学習率の値によって学習速度が変化します。
学習率が学習速度にどう影響するかを以下のグラフを見て観察してみましょう。
上から順にとします。
学習率が小さすぎると学習に時間がかかります。また、学習率が大きすぎると最適な値を求めるのにかえって時間がかかっています。
勾配法の一般化
今までは一変数関数について勾配法を用いていました。
変数が増えても勾配法を使うことができます。個の変数を持つ関数についても勾配法を用いることができます。
個の変数をとする。
1 初期探索地点 を定める。
2 における勾配を求める。
3 新たに探索するを傾きと学習率を用いて求める。更新は以下のように表されます。
4 勾配が0となるを見つけるまで2~3の更新を繰り返す。
勾配の要素がすべて0となるまで更新を続けます。最終的にが最適な値となります。
カテゴリ: ニューラルネットワーク
関連するサービス
記事の筆者
AVILEN編集部
株式会社AVILEN