勾配降下法の可視化
目次
私たちは、2変数関数 \( f(x,y) \) に適用される
勾配降下法 アルゴリズムの収束を視覚化するインタラクティブな計算機を紹介します。
勾配降下法は、反復的に \( x \) と \( y \) の値を調整し、関数 \( f(x, y) \) の最小値を見つけます。初期値 \( x_0 \) と \( y_0 \) から開始し、関数の勾配を使用して最小値に向かってステップを進めます。ステップの大きさは学習率 \( r \) によって制御されます。このプロセスは、値の変化が十分に小さくなるか、他の停止基準が満たされるまで続きます。
以下は、初期値 \( x_0 \) と \( y_0 \)、学習率 \( r \) で関数 \( f(x, y) \) の勾配降下法の手順です。
勾配降下法の説明
1. 初期化:
- 変数 \( x \) と \( y \) の初期値を決定します。これらの初期値を \( x_0 \) と \( y_0 \) とします。
- ステップの大きさを制御する学習率 \( r \) を選びます。
2. 勾配の計算:
- 関数 \( f(x, y) \) について、\( x \) および \( y \) に関する偏微分を計算します:
\[
\dfrac{\partial f}{\partial x} \quad \text{および} \quad \dfrac{\partial f}{\partial y}
\]
- 現在の \( x \) と \( y \) の値でこれらの偏微分を評価します。これらの偏微分を \( \dfrac{\partial f}{\partial x}(x_k, y_k) \) および \( \dfrac{\partial f}{\partial y}(x_k, y_k) \) とし、\( k \) を現在の反復インデックスとします。
3. 更新ルール:
- 勾配の反対方向に \( x \) と \( y \) の値を調整します(関数を最小化するため):
\[
x_{k+1} = x_k - r \dfrac{\partial f}{\partial x}(x_k, y_k)
\]
\[
y_{k+1} = y_k - r \dfrac{\partial f}{\partial y}(x_k, y_k)
\]
- ここで、\( x_{k+1} \) と \( y_{k+1} \) は、1回の反復後の更新された \( x \) と \( y \) の値です。
4. 反復:
- 勾配を計算し、\( x \) と \( y \) の値を更新するプロセスを停止基準が満たされるまで繰り返します。停止基準には以下が含まれます:
- 最大反復回数。
- 反復間での \( x \) と \( y \) の値の変化が事前に定めたしきい値より小さい場合。
- 勾配の大きさ \( \dfrac{\partial f}{\partial x}(x_k, y_k) \) および \( \dfrac{\partial f}{\partial y}(x_k, y_k) \) が事前に定めたしきい値より小さい場合。
5. 収束:
- 停止基準が満たされると、\( x \) と \( y \) の値は、関数 \( f(x, y) \) の最小値に近づきます。
もう1つの 勾配降下法計算機も収束の調査に利用できます。
計算機の使用方法
この計算機は教育目的で使用されており、勾配降下法アルゴリズムを視覚化するためのものです。したがって、計算機に入力する関数には最小値があることが望ましく、初期値はグラフなどで見つけるのが良いでしょう。
関数 \( f(x,y) \)、\( x \) および \( y \) の初期値 \( x_0 \) と \( y_0 \)、および学習率 \( r \) を入力します。
出力内容:
1) 関数 \( f(x,y) \) の偏微分 \(
\dfrac{\partial f}{\partial x} \; \text{および} \; \dfrac{\partial f}{\partial y}
\)
2) ステップ番号と更新された \( x \) および \( y \) の値、
3) 更新された \( x \) と \( y \) における偏微分の値。
4) 更新されたすべての \( x \) および \( y \) のグラフ。
5) \( x \) と \( y \)、偏微分の値、および \( f(x,y) \) の値を含むテーブルが出力されます。
注意:下の値の表を見ると、収束がある場合、偏微分 \(
\dfrac{\partial f}{\partial x} \; \text{および} \; \dfrac{\partial f}{\partial y}
\) はゼロに近づき、\( f(x,y) \) はその局所最小値に近づきます。
関数 \( f(x,y) = \)
初期点 \( (x_0, y_0) \) を入力してください:
学習率 \( r \) を入力してください =
出力
ステップ |
\( x \) |
\( y \) |
\( \dfrac{\partial f}{\partial x} \) |
\( \dfrac{\partial f}{\partial y} \) |
\( f(x, y) \) |