勾配降下法【gradient descent】
概要

ある関数が最小値となるときの変数の値を求める最適化問題の解法の一つである。関数の最小値を求めたいとき、関数が多項式など表される場合なら、これを微分した導関数が0になる方程式を解くといった解析的な手法(式の変形、導出、代入などの組み合わせ)が使えるが、実際には関数の形が分からなかったり、複雑すぎて導関数を求めることができないといった制約がある場合がある。
このような場合、変数に様々な値を代入してみて結果を調べ、出力が減る方向に少しずつ動かしていくというアプローチで近似的に最小値を求めることができる。具体的には、数値微分などの手法で現在の位置における関数の微分値(勾配:接線の傾き)を求め、勾配と逆方向(出力がより小さくなる側)に向かって移動する。
一度に動かす移動量は「学習率」と呼ばれるパラメータで決定される。この値が大きすぎると、底を飛び越えて前後を行き来するような振動状態に陥ってしまう場合があり、逆に、小さすぎると一度にわずかしか進まないため、なかなか底にたどり着かず収束が遅くなってしまう。問題の性質に合わせて適切な値を設定する必要がある。
この移動を何度も繰り返すと、関数の描く曲線を底に向かって下っていくように、出力が徐々に小さくなっていく。出力が最小となる底にたどり着くと勾配が0に近い値になり、それ以上移動しなくなるため、繰り返しを打ち切って位置を確定する。変数が複数あっても勾配を成分ごとに算出して移動するため、多次元のベクトルを扱う関数にも適用できる。
統計解析や機械学習の分野では、モデルのパラメータ推定に広く利用されている。データ数やパラメータが多い場合、解析的に解を求めることが困難あるいは不可能になるため、数値計算で解を求めるこの手法が有効となる。特に、ニューラルネットワークの学習においては、誤差逆伝播法という基本的な学習手法の中核的な要素として、各ノードのパラメータ更新に用いられる。