next up previous
: 2次アルゴリズム : 1次アルゴリズム : 関数の勾配

勾配を使う計算法

さて, $l({\bf x})=l(x,y)$を最小化するため,先ず, 初期点

\begin{displaymath}
{\bf x}_0=
\left (
\begin{array}{c}
x_0\\
y_0\\
\end{array}\right )
\end{displaymath}

を与えて,$l({\bf x}_0)$を求め,次に,

${\bf x}={\bf x}_0$での$l({\bf x})$の微分,

\begin{displaymath}
\frac{d l}{d {\bf x}}({\bf x}_0)
= {\bf p}+ {\bf Q}{\bf x}_0
\end{displaymath}

を求め,これと微小な正数$\epsilon >0$を使って,


\begin{displaymath}
\Delta {\bf x} = -\epsilon \frac{d l}{d {\bf x}}({\bf x}_0)
\end{displaymath}

として, $l({\bf x}_0 +\Delta {\bf x})$を計算すると,

\begin{eqnarray*}
&&l({\bf x}_0 +\Delta {\bf x}) \\
&&=l({\bf x}_0)+\frac{d l}{...
...2 l}{d^2 {\bf x}}({\bf x}_0)
\frac{d l}{d {\bf x}}({\bf x}_0)\\
\end{eqnarray*}



ここで,任意のベクトル

\begin{displaymath}
{\bf z}
=\left (
\begin{array}{c}
p\\
q\\
\end{array}\right )
\end{displaymath}

について

\begin{displaymath}
{\bf z}^T{\bf z}=p^2+q^2
\end{displaymath}

ですから, ${\bf z}^T{\bf z} \ge 0$です。同様に,

\begin{displaymath}
\frac{d l}{d {\bf x}}({\bf x}_0) ^T \frac{d l}{d {\bf x}}({\bf x}_0) \ge 0
\end{displaymath}


\begin{displaymath}
\frac{d l}{d {\bf x}}({\bf x}_0)^T
{\bf Q} \frac{d l}{d {\bf x}}({\bf x}_0) \ge 0
\end{displaymath}

です。$\epsilon$が十分小さければ,

\begin{displaymath}
\Delta {\bf x} = -\epsilon \frac{d l}{d {\bf x}}({\bf x}_0)
\end{displaymath}

として,


\begin{displaymath}l({\bf x}_0 +\Delta {\bf x}) < l({\bf x}_0)\end{displaymath}

となります。

\begin{displaymath}
{\bf x}_1 ={\bf x}_0 +\Delta {\bf x}
\end{displaymath}

を新たな初期点としてこれを繰り返すことができます。このような方法を勾配法といいます。特に,毎回の繰り返しで,

\begin{displaymath}
l({\bf x}_n-\epsilon_n \frac{d l}{d {\bf x}}({\bf x}_n))
=\m...
...ilon>0} l({\bf x}_n-\epsilon \frac{d l}{d {\bf x}}({\bf x}_n))
\end{displaymath}

となるように,$\epsilon_n$を選ぶ繰り返し計算法を最急降下法と呼びます。

\begin{eqnarray*}
&&l({\bf x}_n+\epsilon_n {\bf\eta }_n)
=\min_{\epsilon,\epsilo...
... {\bf\eta}_{n+1}:{\bf x}_{n+1}によって決まる何らかの方向ベクトル
\end{eqnarray*}



を繰り返しながら

\begin{displaymath}
\{ {\bf x}_n\},\{{\bf\eta }_n \},\{ \epsilon_n \}
\end{displaymath}

を生成し,

\begin{displaymath}
\lim_{n \to \infty } l({\bf x}_n)=min_{{\bf x}}l({\bf x})
\end{displaymath}

とする計算法は,一次アルゴリズムと呼ばれています。
next up previous
: 2次アルゴリズム : 1次アルゴリズム : 関数の勾配
Yasunari SHIDAMA