勾配降下法
勾配降下法とは
パラメータの最適化手法の一つである勾配降下法を紹介します。
定義(勾配降下法)
パラメータ \(\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}\) を更新する手法をミニバッチ勾配降下法という。