手帳と試行

学んだことをアウトプットしていきます。 日々、ノートあるのみ。

最急降下法

勾配法による連続最適化の基本となる最急降下法について軽く触れる。

反復法

ある連続関数 f(x)f(\bm x) を最小化するような問題を考える。

minimizexf(x)\begin{aligned} \operatorname*{minimize}_{\bm x} \quad f(\bm x) \end{aligned}

これに対して、何らかの反復法により

{xi}i=1t={x1,x2,,xt}\{\bm x^i\}_{i=1}^t = \{\bm x^1, \bm x^2, \dots, \bm x^t\}

を生成して、f(x)f(\bm x) の最小値を探すことを考える。

勾配法

各反復ステップにおける更新を、

xt+1=xt+Δx\begin{aligned} \bm x^{t+1} = \bm x^{t} + \Delta \bm x \end{aligned}

とする。すなわち、次のような更新規則を与えることを考える。

xx+Δx\bm x \gets \bm x + \Delta \bm x

すると、Δx\Delta \bm x について、

f(x+Δx)<f(x)f(\bm x + \Delta \bm x) \lt f(\bm x)

が達成されれば、あとはひたすら x\bm x を更新しつづけることで、局所最適解を探すことができる。勾配法では、f(x)f(\bm x)x\bm x による微分に基づいて、これを満たす Δw\Delta \bm w を探しに行く。

最急降下法

目的関数 f(x)f(\bm x)x\bm x によって微分可能であるとする。f(x)f(\bm x) を1次の項までテイラー展開する。

f(x+Δx)f(x)+(f(x)x)TΔx\begin{aligned} f(\bm x + \Delta \bm x) \approx f(\bm x) + \left( \frac{\partial f (\bm x)}{\partial \bm x} \right)^\mathsf{T} \Delta \bm x \end{aligned}

1次の項の係数部分 fx\dfrac{\partial f}{\partial \bm x} は、f(x)f(\bm x)x\bm x の各成分で微分したものを並べた勾配ベクトルである。上式から、ベクトル Δx\Delta \bm x1次の項が常に負になるような向きを向いていればよいことがわかる。

(f(x)x)TΔx<0\begin{aligned} \left( \frac{\partial f (\bm x)}{\partial \bm x} \right)^\mathsf{T} \Delta \bm x \lt 0 \end{aligned}

これが達成されるには、Δx\Delta \bm xfx\dfrac{\partial f}{\partial \bm x} と逆向きになっていればよい。すなわち、ある実数 η\eta を用いて、次のように定めればよい。

Δx=ηf(x)x\begin{aligned} \Delta \bm x = - \eta \frac{\partial f (\bm x)}{\partial \bm x} \end{aligned}

こうして得られる次の更新規則に従って局所最適解を探すアルゴリズムを、最急降下法 (steepest descent method) という。

xxηf(x)x\begin{aligned} \bm x \gets \bm x - \eta \frac{\partial f (\bm x)}{\partial \bm x} \end{aligned}

ここで η\etaステップ幅 (step size) とか学習率 (learning rate) とか呼ばれる実数である。