KATUBLO
2018年12月26日

【Deepleraning】確率的勾配降下法とは何か簡単にまとめてみた

やること

確率的勾配降下法とはなにかを解説する

 

前回扱った勾配降下法

前回導出した勾配降下法の式を書いておく.

 

 

$$
\begin{aligned} w ^ { ( k + 1 ) } & = w ^ { ( k ) } + \eta \sum _ { n = 1 } ^ { N } \left( t _ { n } – y _ { n } \right) x _ { n } \\ b ^ { ( k + 1 ) } & = b ^ { ( k ) } + \eta \sum _ { n = 1 } ^ { N } \left( t _ { n } – y _ { n } \right) \end{aligned}
$$

 

[math]x_n[/math]:入力データ

[math]x_n[/math]:出力データ

[math]t_n[/math]:正解の出力データ

 

確率的勾配降下法

今回扱う確率的勾配降下法は以下の式で定義される.

 

 

$$
\begin{aligned} w ^ { ( k + 1 ) } & = w ^ { ( k ) } + \eta \left( t _ { n } – y _ { n } \right) x _ { n } \\ b ^ { ( k + 1 ) } & = b ^ { ( k ) } + \eta \left( t _ { n } – y _ { n } \right) \end{aligned}
$$

 

[math]x_n[/math]:入力データ

[math]x_n[/math]:出力データ

[math]t_n[/math]:正解の出力データ

 

勾配降下法はN個分の[math]x_n , y_n , t_n [/math]データを計算し, 足し合わせることで一回のパラメーター更新を行った. しかし, 確率降下勾配法では1個分のデータでパラメーターを更新する. よって同じ計算量で

 

N個計算して一回パラメーターを更新する

1個計算してN回パタメーターを更新する

 

確率降下勾配法のほうが数多くパラメーターを更新することができる.

 

 

エポック数とは?

よく機械学習エンジニアの会話のなかで「エポック数」というワードがでてくる. ここでエポック数とはなにかを明確にしたいと思う. 確率降下勾配法に確率というワードがつく理由は, データ([math]x_n , y_n , t_n )[/math]をランダムの順番で選択することからこの名が付いている. つまりN=50 , 50個のデータがあるときは50!通りデータの順番があることになる. この1通りを1エポックという.

 

ミニバッチ勾配降下法

実際にパソコンに計算させる場合, データが大きいとメモリ不足等の問題で計算することができない. そこでデータをM個に分割して, 勾配を求めるミニバッチ勾配降下法という手法が用いられる.

 

各ブロックごとに確率的勾配降下法を用いて最適解をもとめる. だいたいM=50~500として計算を行う人が多い.

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

スポンサードリンク

大学生必見就活イベント