逐次最小問題最適化法

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

テンプレート:Infobox algorithm 逐次最小問題最適化法テンプレート:Lang-en-short, SMO)はサポートベクターマシン (SVM) の訓練で生じる2次計画問題 (QP) を解くためのアルゴリズムである。1998年にマイクロソフトリサーチテンプレート:仮リンクによって発明された[1]。SMOはサポートベクターマシンの訓練のために広く使われ、人気のLIBSVMツールによって実装される[2][3]。以前から利用できたSVM訓練法はより一層複雑で、高価なサードパーティーのQPソルバーを必要としたので、1998年のSMOアルゴリズムの公表はSVMコミュニティでたくさんの興奮を引き起こした[4]

最適化問題

テンプレート:Main データセット (x1, y1), ..., (xn, yn) に関する二項分類問題を考える。ここで xi は入力ベクトル、テンプレート:Nobrはそれに対応する2値ラベルである。ソフトマージンサポートベクターマシンは以下の双対問題で表される2次計画問題を解くことによって訓練される: テンプレート:Indent テンプレート:Indent テンプレート:Indent テンプレート:Indent ここで C は SVM hyperparameter、K(xi, xj) はテンプレート:仮リンクで、どちらもユーザが与える。変数 αiラグランジュ乗数である。

アルゴリズム

SMOは上記の最適化問題を解くための反復型アルゴリズムである。SMOはこの問題をその時解析的に解かれる一連の最小の可能な部分問題に分割する。ラグランジュ乗数 αi を伴う線形等式制約のため、最小の可能な問題はそのような2つの乗数を含む。そして、任意の2つの乗数 α1α2 について、次の制約に分解される: テンプレート:Indent テンプレート:Indent k は前述の和の等式より導かれる定数である。そしてこの問題は解析的に解くことができる。

アルゴリズムは次のように進行する:

  1. 最適化問題のKKT条件を破るラグランジュ乗数 α1 を見つける。
  2. 第2の乗数 α2 を選び、組 (α1,α2) を最適化する。
  3. 収束するまでステップ1、2を繰り返す。

すべてのラグランジュ乗数がKKT条件を十分に満たすとき、全体の最適化が終了する。このアルゴリズムは収束することが保証されている。しかし、データセットが大きくなると、組 (α1,α2)の選び方がO(n2)で大きくなるので、より速く収束させるために、部分問題を構成する変数を選び出すためのヒューリスティックを使うことが重要となる。

関連項目

参考文献

テンプレート:Reflist