2019/04/23
2020/04/14
勾配法の仕組みを具体例でわかりやすく解説
ニューラルネットワークは適切な重みを設定することで認識精度を高めます。
今回は適切な重みを求めるために用いる勾配法というアルゴリズムを解説します。
ニューラルネットワークではこの勾配法を改良したAdam,Momentumといったアルゴリズムが使用されます。
数値微分について理解したうえでこの記事を読むと理解がすんなりといくでしょう。
勾配法
ニューラルネットワークで最適な重みを求める必要があります。「最適な重み」とは損失関数を最小にする重みを指します。損失関数の値を最小にするということは、最も予測誤差が少ないということですね。
では、どのように損失関数の値を最小にする重みを求めるのでしょうか。
勾配法を用いるのが一般的です。この勾配法は最小値や最大値を求めるためのアルゴリズムで、解析的に解くことが困難な問題に用いられるます。「解析的に解けない」とは、ある関数に対してうまく微分ができない状態を指すと考えるとよいでしょう。
では、勾配法についての理解を深めていきましょう。
勾配法の仕組み
勾配法は関数を最小にするような変数の値を求めます。
例えば関数\( f(x) \)を最小にする\( x \)の値であったり、関数\( g(x,y,z) \)を最小にする\( x, y, z \)の値の組み合わせを求めます。
勾配法は傾きが0となる地点\( x \)が関数の最小、最大値を与えるという考えに基づいた手法です。これは微分法の考えに似ています。微分法では傾きが0となる地点で最小、最大値、極小、極大値などをとっていましたね。
勾配法では以下の作業を繰り返して、傾きが0となる最適な\( x \)を求めます。勾配法では傾きを求めるために数値微分を用います。数値微分を用いることで解析的に解けない関数の傾きを強引に求めます。
1 初期探索地点\( x \)を定める。
2 ある地点\( x \)での傾きを求める。
3 傾きと学習率をもとに次の探索地点\( x’ \)を求める。
4 2~3の更新を傾きが0となる\( x \)が見つかるまで繰り返す。
勾配法の利用と学習率
勾配法について一変数関数の最小値問題を例に考えてみましょう。
今回は\( y = x^2 + 1 \)という関数について勾配法を用いて最小値を与える\( x \)を求めます。以下に\( y = x^2 + 1 \)のグラフを描きました。
この関数を最小にする\( x \)は微分を用いると\( y’ = 2x \)より\( x = 0 \)の時に最小値をとると分かります。
勾配法を用いるとどのように求まるのでしょうか。
勾配法では以下の作業を繰り返して最適な\( x \) を求めます。
1 初期地点\( x \)を決める。
2 ある\( x \)においての傾きを求める。
3 新たに探索する\( x’ \)を傾きと学習率\( \eta \)を用いて求める。これを更新と呼ぶ。更新は以下のように表されます。
\( \ \ \ x’ = x – \eta \frac{ \partial f }{ \partial x } \)
4 傾きが0となる\( x \)を見つけるまで2~3の更新を繰り返す。
今回は\( y = x^2 + 1 \)について勾配法を用いて、\( y \)を最小とするような\( x \)を求めます。
\( x_0 = 2 \)から更新してみましょう。学習率\( \eta \)は0.25、\( f'(x) = 2x \)です。
\( x_1 = x_0 – \eta f'(x_0) = 1\)
\( x_2 = x_1 – \eta f'(x_1) = 0.5 \)
\( x_3 = x_2 – \eta f'(x_2) = 0.25 \)
\( x_4 = x_3 – \eta f'(x_3) = 0.125 \)
勾配法による更新を続けるとゆっくり\( x = 0 \)に近づくのが見て取れます。更新を続けると\( x = 0 \)と求まります。
初期値を\( x_0 = 2 \)としました。この初期値は自由に定めることができます。
学習率を0.25としました。この学習率の値によって学習速度が変化します。
学習率\( \eta \)が学習速度にどう影響するかを以下のグラフを見て観察してみましょう。
左から順に\( \eta = 0.01,\eta = 0.1,\eta = 0.2\)とします。学習率が小さすぎると学習に時間がかかります。また、学習率が大きすぎると最適な値を求めるのにかえって時間がかかっています。
勾配法の一般化
今までは一変数関数について勾配法を用いていました。
変数が増えても勾配法を使うことができます。\( n \)個の変数を持つ関数についても勾配法を用いることができます。
\( n \)個の変数を\( x_1, \ldots, x_n \)とする。
1 初期探索地点\( x = (x_1,\ldots, x_n) \) を定める。
2 \( x = (x_1,\ldots, x_n) \)における勾配を求める。
3 新たに探索する\( x’ = (x’_1,\ldots, x’_n) \)を傾きと学習率\( \eta \)を用いて求める。更新は以下のように表されます。
\( \ \ \ (x’_1, \ldots , x’_n )=x_1 – \eta \frac{ \partial f }{ \partial x_1 } , \ldots , x_n – \eta \frac{ \partial f }{ \partial x_n } \)
4 勾配が0となる\( x \)を見つけるまで2~3の更新を繰り返す。
勾配の要素がすべて0となるまで更新を続けます。最終的に\( x_{final} = (x_1, \ldots, x_n) \)が最適な値として求まります。
まとめ
今回は勾配法について説明しました。勾配法は解析的に解くのが困難な時に有効なアルゴリズムで、最適化問題などに用いられます。
勾配法は学習に時間がかかる、勾配が0になる極小値で更新がストップしてしまうなどの欠点があります。特に勾配が0になる極小値で更新が停滞する現象は勾配消失と呼ばれます。
これらの欠陥を補うためにAdam,Momentumといった様々な改良手法が開発されています。
更新を繰り返す前に初期値を設定する必要がありますが、初期値はランダム、あるいは特定の値に指定することができます。
最新投稿記事
-
AIプロジェクトの企画と失敗しない進め方を解説 2021年1月19日
-
AVILEN人材育成コース受講体験談:山田裕之さん「E資格の”その先”を目指して」 2021年1月8日
-
AI導入とは?RPAとの関係、プロセス、事例、メリット、費用を詳細に解説 2020年12月7日
-
注目のAI開発企業11社!支援領域や提供方法など検証! 2020年10月28日
-
AI人材を育成できる研修プログラムを一挙紹介! 2020年10月20日
-
【2021年版】期待のAI資格11選!就職・転職にも使える! 2020年10月18日
-
JDLAとは?G検定、E資格の認定プログラム、合格者の会など紹介! 2020年10月14日
-
G検定(2020#3)受験申し込み開始、11月7日(土)実施-JDLA 2020年10月1日
-
【独占】コロナ禍で人材登録急増、アノテーション単月売上高は4倍超-パソナJOB HUB 2020年10月1日
-
E資格を転職に活用!評判とデータを徹底調査! 2020年9月29日
週間ランキング
【2021年版】コスパ重視のG検定対策!おすすめの本・講座・教材を一挙紹介! 2020年6月6日
【2021年版】期待のAI資格11選!就職・転職にも使える! 2020年10月18日
G検定に短期間・独学で合格した勉強法を解説! 2020年8月3日
G検定は難しい?難易度・合格ライン・問題を徹底解説! 2020年6月19日
注目のAI開発企業11社!支援領域や提供方法など検証! 2020年10月28日
G検定に落ちた人、合格した人。勉強法の違いはどこにある? 2020年6月25日
最弱オセロを初めて攻略した天才オセロ高校生。負け方を解説! 2020年7月31日
【2021年版】E資格とは?大注目のディープラーニングの資格を解説! 2020年9月29日
E資格の難易度を、合格率と問題から徹底分析! 2020年8月11日
評判上昇中のG検定を取得するメリットを解説! 2020年7月10日
