勾配降下法と共役勾配降下法


11

プロジェクトの場合、これら2つの方法を実装し、さまざまな機能でのパフォーマンスを比較する必要があります。

共役勾配法は、の線形方程式系を解くことを意図しているように見えます

Ax=b

ここで、は対称で正定で実数のn行n列の行列です。A

一方、勾配降下法について読むと、Rosenbrock関数の例が表示されます。

f(x1,x2)=(1x1)2+100(x2x12)2

見てのとおり、共役勾配法ではこれを解決できません。それとも私は何かを逃していますか?

回答:


14

勾配降下法と共役勾配法は、どちらも非線形関数、つまり、Rosenbrock関数のような関数を最小化するためのアルゴリズムです。

f(x1,x2)=(1x1)2+100(x2x12)2

または多変量2次関数(この場合は対称2次項)

f(x)=12xTATAxbTAx.

どちらのアルゴリズムも反復型で、検索方向に基づいています。この記事の残りの部分では、dは長さnのベクトルになります。f x αはスカラーで、上付き文字は反復インデックスを示します。勾配降下法と共役勾配法を使用して、解く値x を見つけることができます。xdnf(x)αx

minf(x)

どちらの方法も、初期推定から始まり、次の形式の関数を使用して次の反復を計算しますx0

xi+1=xi+αidi.

言い換えると、の次の値は、現在の位置から開始し、検索方向にある距離移動することで見つかります。どちらの方法でも、移動する距離はラインサーチで見つけることができます(を最小化します)。他の基準を適用することもできます。2つの方法が異なるのは、選択です。勾配法の場合、です。共役勾配法では、Grahm-Schmidt法を使用して勾配ベクトルを直交化します。特に、ですが、は等しいですX I dはI α I F X I + α iはdのIをα iがdのIをxxidiαif(xi+αidi)αidi、D 0 = - F X 0D 1 - F X 1d 0d 1 T d 0 = 0di=f(xi)d0=f(x0)d1f(x1)へのマイナスそのベクトルの投影よう。後続の各勾配ベクトルは、前のすべての勾配ベクトルに対して直交化されます。これにより、上記の2次関数の非常に優れた特性が得られます。d0(d1)Td0=0

上記の2次関数(および関連する定式化)でも、共役勾配法を使用したの解法の説明が行われます。これは、である点で最小値が達成されるためです。f x x A x = bAx=bf(x)xAx=b


9

この文脈では、どちらの方法も関数の最小化問題と考えることができます: 対称である場合、最小化される。AϕAx=b

ϕ(x)=12xTAxxTb
AϕAx=b

勾配降下法は、勾配方向を調べることによって最小化子を繰り返し検索する方法です。共役勾配は似ていますが、という意味で、検索方向も互いに直交している必要があり。piTApj=0i,j

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.