# 勾配降下法(gradient descent)
Created: October 15, 2020 5:20 PM
Tags: algorithm, optimization
> ... 勾配降下法の原理は、コストが極小値または大局的最小値に達するまで坂 を下るというものである。イテレーションのたびに勾配に沿って 1 ステップ進むが、その距離は勾配の傾きと学習率によって決定される。
![[ScreenShot_2020-10-15_at_5.22.27_PM.png]]
[[📖Python機械学習プログラミング 達人データサイエンティストによる理論と実践]] p.35
**バッチ勾配降下法**(batch gradient descent)
トレーニングデータセット全体から計算されたコスト勾配とは逆方向に進むことによ り、コスト関数を最小化する方法。バッチ勾配降下法の実行では、大局的最小値に 1 ステップ近づくたびにトレーニングデータ全体を再び評価する必要がある。この場合は計算コストがかなり高くつく可能性がある。確率的勾配降下法(stochastic gradient descent)である。このアルゴリズムは逐次的勾配降下法(iterative gradient descent)やオ ンライン勾配降下法(online gradient descent)とも呼ばれる。
**確率的勾配降下法** (stochastic gradient descent)
逐次的勾配降下法やオンライン勾配降下法とも呼ばれる。
$\eta (y^{(i)} - \phi(z^{(i)}))\bm{x}^{(i)}$
> 確率的勾配降下法については勾配降下法の近似と見なすことができるが、重みの更新頻度がより 高いことから、通常ははるかに高速に収束する。勾配はそれぞれ 1 つのトレーニングサンプルに基 づいて計算されるため、勾配降下法よりも誤差曲面のノイズが多い。これについては、確率的勾配 降下法のほうが浅い極小値をより簡単に抜け出せるという利点もある。ただし、第 12 章で説明するように、非線形のコスト関数を使用していることが前提となる。確率的勾配降下法を使って正確 な結果を得るには、トレーニングデータをランダムな順序に並べ替えることが重要となる。エポッ クごとにトレーニングデータをシャッフルして循環 ※42を避ける必要があるのは、そのためである。
> 確率的勾配降下法の実装では、固定の学習率 $\eta$ は $\cfrac{c_{1}}{[ イテレーションの回数 ] + c_{2}}$ に減少する適応学習率(adaptive learning rate)によって置き換えられることが多い。ここで、 c 1 と c 2 は定数である。確率的勾配降下法は大局的最小値に到達しないが、それにかなり近い 場所で収束することを付け加えておく。そして適応学習率を使用すれば、コストの最小値にさらに近づける ことができる。
もう一つの利点は、[[オンライン学習]] に利用できることである。
[[📖Python機械学習プログラミング 達人データサイエンティストによる理論と実践]] p.44