勾配降下法

勾配降下法とは

パラメータの最適化手法の一つである勾配降下法を紹介します。

定義(勾配降下法)

パラメータ \(\boldsymbol{\theta}\) の損失関数を \(L(\boldsymbol{\theta})\) 、学習率を \(\eta\) とするとき

\[ \boldsymbol{\theta}\gets\boldsymbol{\theta}-\eta\nabla L(\boldsymbol{\theta}) \]

と \(\boldsymbol{\theta}\) を更新する手法を勾配降下法という。

勾配降下法にはバッチ勾配降下法確率的勾配降下法ミニバッチ勾配降下法の3種類があります。 以下ではこれらについて説明します。

バッチ勾配降下法

定義(バッチ勾配降下法)

データセット \(\mathcal{D}\) が

\[ \mathcal{D}=\{(\boldsymbol{x}_i,y_i)~|~\boldsymbol{x}_i\in\mathbb{R}^d,~y_i\in\mathbb{R}\}_{i=1}^N \]

で与えられ、パラメータを \(\boldsymbol{\theta}\in\mathbb{R}^d\) としてモデル関数 \(f(\boldsymbol{x}_i;\boldsymbol{\theta})\) を定める。 1データあたりの損失を

\[ l_i(y_i,f(\boldsymbol{x}_i;\boldsymbol{\theta})) \quad (i=1,\cdots,N) \]

として、平均損失

\[ L(\boldsymbol{\theta})=\frac{1}{N}\sum_{i=1}^N l_i(y_i,f(\boldsymbol{x}_i;\boldsymbol{\theta})) \]

を考える。 学習率を \(\eta\) とするとき

\[ \boldsymbol{\theta}\gets\boldsymbol{\theta}-\eta\nabla L(\boldsymbol{\theta}) \]

と \(\boldsymbol{\theta}\) を更新する手法をバッチ勾配降下法という。

確率的勾配降下法

定義(確率的勾配降下法)

データセット \(\mathcal{D}\) が

\[ \mathcal{D}=\{(\boldsymbol{x}_i,y_i)~|~\boldsymbol{x}_i\in\mathbb{R}^d,~y_i\in\mathbb{R}\}_{i=1}^N \]

で与えられ、パラメータを \(\boldsymbol{\theta}\in\mathbb{R}^d\) としてモデル関数 \(f(\boldsymbol{x}_i;\boldsymbol{\theta})\) を定める。 1データあたりの損失を

\[ l_i(\boldsymbol{w})=l_i(y_i,f(\boldsymbol{x}_i;\boldsymbol{\theta})) \quad (i=1,\cdots,N) \]

とする。 学習率を \(\eta\) とするとき、ランダムに \(i\) を選んで

\[ \boldsymbol{\theta}\gets\boldsymbol{\theta}-\eta\nabla l_i(\boldsymbol{w}) \]

と \(\boldsymbol{\theta}\) を更新する手法を確率的勾配降下法という。

ミニバッチ勾配降下法

定義(ミニバッチ勾配降下法)

データセット \(\mathcal{D}\) が

\[ \mathcal{D}=\{(\boldsymbol{x}_i,y_i)~|~\boldsymbol{x}_i\in\mathbb{R}^d,~y_i\in\mathbb{R}\}_{i=1}^N \]

で与えられ、パラメータを \(\boldsymbol{\theta}\in\mathbb{R}^d\) としてモデル関数 \(f(\boldsymbol{x}_i;\boldsymbol{\theta})\) を定める。 1データあたりの損失を

\[ l_i(\boldsymbol{w})=l_i(y_i,f(\boldsymbol{x}_i;\boldsymbol{\theta})) \quad (i=1,\cdots,N) \]

とする。 学習率を \(\eta\) とするとき、\(N\) 個のデータから \(B\) 個のデータを選んで

\[ \boldsymbol{\theta}\gets\boldsymbol{\theta}-\eta \frac{1}{B}\sum_{i\in\mathcal{B}}\nabla l_i(\boldsymbol{w}) \]

と \(\boldsymbol{\theta}\) を更新する手法をミニバッチ勾配降下法という。

演習問題

問題
解答