勾配降下法

目次

はじめに

勾配降下法は、変数ベクトル \( \mathbf{x} = \begin{pmatrix} x_1 \\ x_2 \\ \dots \\ x_n \end{pmatrix} \) を調整して、微分可能な関数 \( f(\mathbf{x}) \) の局所最小値を見つける反復的な最適化アルゴリズムです。初期値としてベクトル \( \mathbf{x} \) の推測 \( \mathbf{x}_0 \) から開始し、関数の勾配を使って最小値に向かってステップを進めます。このステップの大きさは学習率 \( r \) によって制御されます。このプロセスは、変数 \( \mathbf{x} \) の値の変化が十分に小さくなるか、勾配の大きさがゼロに近づくか、他の停止基準が満たされるまで続きます。

勾配降下法の更新式

勾配降下法の基本的なアイデアは、関数の最小値を見つけるために変数を反復的に調整することです。この調整は次の更新式によって導かれます: \[ \mathbf{x}_{k+1} = \mathbf{x}_k - r \nabla f(\mathbf{x}_k) \] ここで、\( \mathbf{x} \) は変数のベクトル、\( r \) は \( r \gt 0 \) である学習率、\( \nabla f(\mathbf{x}_k) \) は \( \mathbf{x} = \mathbf{x}_k \) における関数 \( f \) の勾配であり、次のように表されます: \[ \nabla f(\mathbf{x}) = \begin{pmatrix} \dfrac{\partial f}{\partial x_1} \\ \dfrac{\partial f}{\partial x_2} \\ \dots \\ \dfrac{\partial f}{\partial x_n}\\ \end{pmatrix} \]
この更新式は、勾配 \( \nabla f(\mathbf{x}) \) が関数 \( f \) の最大の増加方向を指しているという概念から来ています。関数を最小化するためには、勾配の反対方向に進みます。学習率 \( r \) は、この方向に進むステップの大きさを決定します。

勾配降下法の詳細な説明

1. 初期化:
- 変数ベクトル \( \mathbf{x} \) の初期推測値で開始します。これを \( \mathbf{x}_0 \) とします。
- 最小値に向かって進むステップの大きさを制御する学習率 \( r \) を選択します。
2. 勾配の計算:
- 関数 \( f(\mathbf{x}) \) について、勾配 \( \nabla f(\mathbf{x}) \) を計算します。
- この勾配を現在の値 \( \mathbf{x} = \mathbf{x}_k \) で評価します。反復 \( k \) での勾配を \( \nabla f(\mathbf{x}_k) \) とします。
3. 更新ルール:
- 更新式を使用して \( \mathbf{x} \) の値を調整します: \[ \mathbf{x}_{k+1} = \mathbf{x}_k - r \nabla f(\mathbf{x}_k) \] - ここで、\( \mathbf{x}_{k+1} \) は1回の反復後に更新された \( \mathbf{x} \) の値です。
4. 反復:
- 勾配を計算し、変数 \( \mathbf{x} \) の値を更新するプロセスを、停止基準が満たされるまで繰り返します。停止基準には以下が含まれます:
- 最大反復回数。 - 反復間の \( \mathbf{x} \) の値の変化が事前に定めたしきい値より小さい場合。
- 勾配の大きさ \( \|\nabla f(\mathbf{x}_k)\| \) が事前に定めたしきい値より小さい場合。
5. 収束:
- 停止基準が満たされると、\( \mathbf{x} \) の値は関数 \( f(\mathbf{x}) \) の最小値に近い値となります。
勾配降下法アルゴリズムを 可視化する計算機 も含まれており、アルゴリズムの理解を深めるために使用できます。
もう1つの 勾配降下法計算機 も収束を調査するために含まれています。