フランク・ウルフのアルゴリズム

提供: testwiki
ナビゲーションに移動 検索に移動

フランク・ウルフのアルゴリズム (テンプレート:Lang-en-short) とは、テンプレート:仮リンク付き凸最適化問題を反復的一次最適化により解くアルゴリズム である。条件付き勾配法 (テンプレート:Lang)、[1] 簡約勾配法 (テンプレート:Lang)、 凸結合法 (テンプレート:Lang) とも呼ばれ、1956年にテンプレート:仮リンクおよびテンプレート:仮リンクにより提案された[2]。このアルゴリズムでは、各反復毎に目的関数の線形近似を行い、この(定義域を同じくする)線形関数を最適化する方向へと移動する。

問題定義

𝒟 をベクトル空間上のコンパクト集合とし、f:𝒟 を微分可能実関数とする。フランク・ウルフのアルゴリズムは、以下の最適化問題を解く。

Minimize f(𝐱)
subject to 𝐱𝒟.

アルゴリズム

フランク・ウルフのアルゴリズムの1ステップ
初期化:  k0 とし、𝐱0 を 𝒟 に含まれる任意の点とする。
ステップ 1. 降下方向の決定: 次の条件を満たす 𝐬k を解く。
Minimize 𝐬Tf(𝐱k)
Subject to 𝐬𝒟
(この部分問題は、f を 𝐱k 近傍で1次までテイラー近似して得られる線形関数を最小化するものと捉えることができる。)
ステップ 2. ステップサイズの決定: α2k+2 とする。もしくは、 0α1 を満す範囲内で、 f(𝐱k+α(𝐬k𝐱k)) を最小化するような テンプレート:Mvar を算出する。
ステップ 3. 更新: 𝐱k+1𝐱k+α(𝐬k𝐱k) とし、 kk+1 とした上でステップ 1. に戻る。

性質

たとえば最急降下法など、他の条件付き最適化問題の解法においては各反復毎に許容範囲を射影する必要があるのに対し、フランク・ウルフのアルゴリズムは全ての反復で同一の範囲について部分問題を解けば、解は自動的に許容範囲に収まる。

フランク・ウルフのアルゴリズムの収束性は一般には劣線形である。勾配がなんらかのノルムについてリプシッツ連続であれば、k 回の反復の後の目的関数の値と最適値との誤差は O(1/k) となる。部分問題を近似的に解いた場合でも同様の収束速度を実現することが示されている[3]

本アルゴリズムの各反復は、つねに許容範囲の極点の疎凸結合で表現することができる。このため、機械学習信号処理[4]および、例えば最小コストフロー問題などのテンプレート:仮リンク[5]によく用いられる疎貪欲法アルゴリズムを応用することができる。

許容範囲がもし一連の線形拘束条件により与えられている場合、各反復における部分問題は線型計画法により解くことができる。

一般の問題について最悪収束速度 O(1/k) を改善することは不可能であるが、たとえば強凸問題など特定の種類の問題について、より早い収束速度を得ることはできる[6]

解の値の下限と主双対解析

f は凸関数であるから、任意の二点 𝐱,𝐲𝒟 に対し次の不等式が成立する。

f(𝐲)f(𝐱)+(𝐲𝐱)Tf(𝐱)

この不等式は(未知の)最適解 𝐱*f(𝐱*)f(𝐱)+(𝐱*𝐱)Tf(𝐱)ある点 𝐱 について、最適な下限は次のように与えられる。

f(𝐱*)f(𝐱)+(𝐱*𝐱)Tf(𝐱)min𝐲D{f(𝐱)+(𝐲𝐱)Tf(𝐱)}=f(𝐱)𝐱Tf(𝐱)+min𝐲D𝐲Tf(𝐱)

フランク・ウルフのアルゴリズムは、各反復において上式最終項の最適化問題を解くので、降下方向決定部分問題における解 𝐬k を用いて解の下限 lk を徐々に更新していくことができる。すなわち、 l0= とおくと次のように更新すればよい。

lk:=max(lk1,f(𝐱k)+(𝐬k𝐱k)Tf(𝐱k))

このように未知の最適値の下限を知ることができると、終止条件として用いることができるため実用上有用である。また、各反復においてつねに lkf(𝐱*)f(𝐱k) が成立するため、近似の精度を効率的にみつもることができる。

このテンプレート:仮リンク、すなわち f(𝐱k) と lk との差も同一の収束速度で減少すること、つまり f(𝐱k)lk=O(1/k) が成立することが知られている。

脚注

テンプレート:脚注ヘルプ テンプレート:Reflist

参考文献

関連項目

外部リンク

テンプレート:最適化アルゴリズム