(57)【特許請求の範囲】
【請求項１】
２つの反対のクラスから２つの訓練ベクトルを選択し、サポートベクトルマシン（以下、ＳＶＭ）の学習をする工程と、
予め用意された訓練ベクトルの集合の中から、複数の未使用訓練ベクトルを任意に選択し、その中のエラー量が最も大きい未使用訓練ベクトルを抽出する工程と、
該抽出された未使用訓練ベクトルを既使用訓練ベクトルに追加して訓練ベクトルを更新する工程と、
該更新された訓練ベクトルを用いて第１のＳＶＭの学習をする工程と、
前記更新された訓練ベクトルの個数が所定個数以上になった時または前記抽出された未使用訓練ベクトルのエラー量が所定値より小さくなった時に前記第１のSVMの学習を終了する工程とからなるＳＶＭの学習方法。
【請求項２】
請求項１に記載のＳＶＭの学習方法において、
非サポートベクトルを除去する工程を付加するようにしたＳＶＭの学習方法。
【請求項３】
請求項１又は２のＳＶＭの学習後に行われるＳＶＭの学習方法であって、
前記予め用意された訓練ベクトルの集合の中から１つの訓練ベクトルを任意に選択する工程と、
該選択された訓練ベクトルの誤差量が所定値より大きいときには、該訓練ベクトルを既使用訓練ベクトルに追加して訓練ベクトルを更新する工程と、
該更新された訓練ベクトルを用いて第２のＳＶＭの学習をする工程と、
未使用訓練ベクトルの数が予め決められた個数より小さくなった時に前記第２のＳＶＭの学習を終了する工程とからなるＳＶＭの学習方法。
【請求項４】
請求項３に記載のＳＶＭの学習方法において、
前記第２のＳＶＭの学習を終了する工程の個数が任意に変更できることを特徴とするＳＶＭの学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はサポートベクトルマシンの学習方法に関し、特に大量のデータセットを用いて行うサポートベクトルマシンの学習方法に関する。 
【背景技術】
【０００２】
サポートベクトルマシン（以下、ＳＶＭ）の学習の主要な処理は、ラベルｙｉ＝｛−１，＋１｝をもつ訓練データｘｉ（ここに、ｉ＝１，２，・・・，ｌ）の集合が与えられた時に、次の(1)式の制約二次計画問題（以下、ＱＰ問題）を解くことである。
【０００３】
【数１】
0005137074.tif 000002
【０００４】
ここに、Ｋ（ｘｉ，ｘｊ）はある特徴空間中の２つのベクトルｘｉ，ｘｊの内積を計算するカーネル関数、Ｃは訓練データ中のノイズの入った訓練データにペナルティを課すパラメータである。
【０００５】
さて、従来のＳＶＭの学習方法としては、分解（Decomposition）アルゴリズム、SMO（Sequential Minimal Optimization)アルゴリズム、CoreSVM等がある。
【０００６】
前記分解アルゴリズムは、ＳＶＭ学習の際に、当初のＱＰ問題を小さな複数のＱＰ問題に分解し、これらの小さな問題を繰り返し最適化する方法であり、下記の非特許文献１，２に記されている。
【０００７】
前記ＳＭＯアルゴリズムは、ＱＰ問題を解くために、２つの訓練データを選択し、それらの係数を分析して更新する方法であり、下記の非特許文献３，４に記されている。
【０００８】
さらに、前記CoreSVMは、ランダムサンプリングを用いたＳＶＭの一形式である。該CoreSVMは、ＱＰ問題を数理幾何学のＭＥＢ（minimum  enclosing  ball）問題に変換し、該ＭＥＢ問題を適用してＱＰ問題の解を得る方法であり、下記の非特許文献５，６に記されている。
【非特許文献１】E. Osuna, R. Freund, and F. Girosi, "An improved training algorithm for support vector machines," in Neural Networks for Signal Processing VII - Proceedings of the 1997  IEEE Workshop, N. M. J. Principe, L. Gile and E. Wilson, Eds., New York, pp. 276-285, 1997.
【非特許文献２】T. Joachims, "Making large-scale support vector machine learning practical," in Advances in Kernel Methods: Support Vector Machines, A. S. B. Scholkopf, C. Burges, Ed., MIT Press, Cambridge, MA, 1998.
【非特許文献３】J. Platt, "Fast training of support vector machines using sequential minimal optimization," in Advances in Kernel Methods - Support Vector Learning, B. Scholkopf, C. J. C. Burges, and A. J. Smola, Eds., Cambridge, MA: MIT Press, 1999.
【非特許文献４】R. Fan, P. Chen, and C. Lin, "Working Set Selection Using Second Order Information for Training Support Vector Machines". J. Mach. Learn. Res. 6, 1889-1918, 2005.
【非特許文献５】I. W. Tsang, J. T. Kwok, and P.-M. Cheung, "Core vector machines: Fast SVM training on very large datasets," in J. Mach. Learn. Res., vol. 6, pp. 363-392, 2005.
【非特許文献６】I. W. Tsang, A. Kocsor, and J. T. Kwok. "Simpler core vector machines with enclosing balls" Proceedings of the Twenty-Fourth International Conference on Machine Learning (ICML), pp.911-918, Corvallis, Oregon, USA, June 2007.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前記分解アルゴリズムおよびＳＭＯアルゴリズムは、ＳＶＭの学習を最適化するためには、全訓練データを考慮する必要があり、分割後の全訓練データを用いて学習するのに時間がかかるという課題、特に、多くの訓練データが非サポートベクトルの時には、効率が大変悪くなるという課題がある。また、前記CoreSVMは、訓練データをランダムサンプリングするため、終了条件を適切に設定しない限り学習効果が不安定になるという課題がある。
【００１０】
本発明は、前記した従来技術に鑑みてなされたものであり、その目的は、ＳＶＭの精度を維持しながら学習を高速化できるＳＶＭの学習方法を提供することである。
【課題を解決するための手段】
【００１１】
前記した目的を達成するために、本発明は、２つの反対のクラスから２つの訓練ベクトルを選択し、サポートベクトルマシン（以下、ＳＶＭ）の学習をする工程と、予め用意された訓練ベクトルの集合の中から、複数の未使用訓練ベクトルを任意に選択し、その中のエラー量が最も大きい未使用訓練ベクトルを抽出する工程と、該抽出された未使用訓練ベクトルを既使用訓練ベクトルに追加して訓練ベクトルを更新する工程と、該更新された訓練ベクトルを用いて第１のＳＶＭの学習をする工程と、前記更新された訓練ベクトルの個数が所定個数以上になった時または前記抽出された未使用訓練ベクトルのエラー量が所定値より小さくなった時に前記第１のSVMの学習を終了する工程とからなるＳＶＭの学習方法を提供する点に第１の特徴がある。
【００１２】
また、本発明は、前記の学習に続いて、予め用意された訓練ベクトルの集合の中から１つの訓練ベクトルを任意に選択する工程と、該選択された訓練ベクトルの誤差量が所定値より大きいときには、該訓練ベクトルを既使用訓練ベクトルに追加して訓練ベクトルを更新する工程と、該更新された訓練ベクトルを用いて第２のＳＶＭの学習をする工程と、未使用訓練ベクトルの数が予め決められた個数より小さくなった時に前記第２のＳＶＭの学習を終了する工程とからなるＳＶＭの学習方法を提供する点に第２の特徴がある。
【発明の効果】
【００１３】
本発明によれば、エラー量の大きな訓練ベクトルを用いてＳＶＭの学習ができるので、ＳＶＭの学習を効率的に行うことができ、学習を高速化することができる。また、訓練ベクトルのエラー量が予め設定した値より小さくなった場合あるいは未使用訓練ベクトルの数がある値より小さくなったときに学習を終了するので、学習の終了条件を適切に設定でき、学習効果を安定させることができる。
【発明を実施するための最良の形態】
【００１４】
以下に、図面を参照して、本発明を詳細に説明する。本発明では、訓練データを拡張および更新するための２段階学習方法を提供する。第１段階（第１フェーズ）では、できるだけ早く近似解を見つけ、第２段階（第２フェーズ）では、全部または予め決められた数ｎの訓練データ（ベクトル）に対して１つずつ解を求める点に特徴があり、以下に実施形態により説明する。
【００１５】
図１は、本発明の一実施形態の手順を示すフローチャートであり、前記第１段階（第１フェーズ）の処理手順を示す。ステップＳ１００では、最初の訓練ベクトル（または訓練データ）のセット（以下、Ｗ０と記す）として、２つのベクトルが選ばれる。ベクトル（またはデータ）を２つのクラスに分類する場合には、２つの反対のクラスから任意のベクトルを選ぶことができる。なお、本発明者の実験では、ＳＶＭ学習の結果は、該２つのベクトルの選定に依存しないことが確かめられている。
【００１６】
ステップＳ１０５では、ＳＶＭを訓練ベクトルのセットＷ０で学習して、解Ｓ０を求める。ステップＳ１１０では、繰り返し回数を示すｔをｔ＝０、訓練ベクトルの全データをＴとして、未使用の訓練ベクトルの集合Ｔ０を求める。該未使用の訓練ベクトルの集合Ｔ０は、ＴからＴ０を除去したものであり、Ｔ０＝Ｔ−Ｗ０となる。
【００１７】
ステップＳ１１５では、未使用の訓練ベクトルの数｜Ｔｔ｜が０になったかまたは使用済みの訓練データの数｜Ｗｔ｜が予め決められた数ｍより大きくなったか否かの判断がなされる。なお、記号「｜｜」は集合の要素の数を示す。この判断が肯定の場合には第１フェーズを終了し、否定の場合にはステップＳ１２０に進む。ステップＳ１２０では、前記未使用の訓練ベクトルの集合Ｔｔから訓練ベクトルを５９個ランダムサンプリングする。なお、５９個に限定されず、他の個数でもよい。
【００１８】
ステップＳ１２５では、前記５９個の訓練ベクトルの内のエラー量Ｅｔ（ｖｋ）の一番大きな訓練ベクトルｖｔが選ばれる。ここで、該訓練ベクトルｖｔは、次の(2)、(3)式より求めることができる。
【００１９】
【数２】
0005137074.tif 000003
【００２０】
ステップＳ１３０では、該エラー量Ｅｔ（ｖｋ）がある設定値εより小さいか否かの判断がなされる。この判断が肯定の場合には第１フェーズを終了し、否定の場合にはステップＳ１３０に進む。ステップＳ１３５では、既使用の訓練ベクトルＷｔに前記訓練ベクトルｖｔが追加され、一方未使用の訓練ベクトルＴｔから該訓練ベクトルｖｔが除去され、Ｔｔ＋１＝Ｔｔ−ｖｔとなる。次に、ステップＳ１４０に進み、ＳＶＭを訓練ベクトルＷｔ＋１で学習し、解Ｓｔ＋１を得る。次に、図示されていないが、場合によっては、該Ｓｔ＋１を基に得られたパラメータαを基に非サポートベクトルを除去する。ステップＳ１４５では、繰り返し回数ｔを１インクリメントする。そして、ステップＳ１１５に戻って、再度前記した処理を繰り返す。
【００２１】
以上のことから明らかなように、第１フェーズでは、ステップＳ１１５またはステップＳ１３０の判断が肯定になるまでステップＳ１１５〜Ｓ１４５の処理が繰り返され、該ステップＳ１１５またはステップＳ１３０の判断が肯定になると、第１フェーズは終了して第２フェーズに移行する。
【００２２】
以上のように、この第１フェーズでは、ランダムに選択された訓練ベクトル（上記の例では、５９個）の中から学習に関して最も優れたベクトル、すなわち、エラー量の一番大きな訓練ベクトルｖｔを求め、該訓練ベクトルｖｔを既使用の訓練ベクトルＷｔに加えて訓練ベクトルＷｔ＋１に更新し、該更新した訓練ベクトルＷｔ＋１を用いてＳＶＭを学習するようにしているので、早期にＳＶＭの近似解を求めることができるようになる。
【００２３】
また、該エラー量が前記設定値εより小さくなった時に第１フェーズを終了するので、該設定値εより小さいエラー量の訓練ベクトルを用いて行うＳＶＭの無駄な学習を回避できると共に、学習を高速化できる。
【００２４】
次に、フェーズ２の処理を図２を参照して説明する。該フェーズ２では、前記第１フェーズで学習されたＳＶＭに対して、さらに学習を行う。ステップＳ２００では、ｔ＝０と置かれる。ステップＳ２０５では、未使用訓練ベクトルの数｜Ｔｔ｜がある設定値ｎ以下になったかどうかの判断がなされる。この処理は、ＳＶＭ学習の終了条件であり、この設定値ｎの大きさを変えることにより、当初の訓練ベクトルの総数Ｔ０に対する訓練済みのベクトル（Ｔ０−Ｔｔ）の割合が、例えば１０％、２０％、４０％、８０％、あるいは１００％になったときに、第２フェーズを終了させることができるようになる（後述の図４参照）。
【００２５】
ステップＳ２０５の判断は、最初は否定であるのでステップＳ２１０に進む。ステップＳ２１０では、未使用訓練ベクトルＴｔの中から１つの訓練ベクトルｖがランダムに選ばれる。ステップＳ２１５では、未使用訓練ベクトルＴｔから該訓練ベクトルｖが除去される。ステップＳ２２０では、該訓練ベクトルｖのエラー量Ｅｔ（ｖ）がある値εより大きいか否かの判断がなされる。そして、該訓練ベクトルｖのエラー量がε未満の場合にはステップＳ２２０の判断が否定になり、ステップＳ２３５でｔが１インクリメントされた後、ステップＳ２０５に戻って、未使用訓練ベクトルの数｜Ｔｔ｜が前記設定値ｎ以下になったかどうかの判断がなされる。
【００２６】
一方、エラー量がＥｔ（ｖ）がεより大きい場合には、ステップＳ２２５に進んで、既使用訓練ベクトルＷｔに該訓練ベクトルｖが付加され、訓練ベクトルがＷｔ＋１に更新される。ステップＳ２３０では、該更新された訓練ベクトルＷｔ＋１を用いてＳＶＭの学習が行われ、解Ｓｔ＋１が求められる。次いで、ステップＳ２３０でｔが１インクリメントされて、ステップＳ２０５に戻る。続いて、前記したステップＳ２０５〜Ｓ２３５の手順が繰り返され、前記ステップＳ２０５の判断が肯定になると、第２フェーズを終了する。
【００２７】
上記のことから明らかなように、第２フェーズではエラー量が値εより大きな訓練ベクトルを用いて学習するので、ＳＶＭの精度は維持または向上され、かつステップＳ２０５の処理により第２フェーズの終了条件を適切化することができる。
【００２８】
また、前記ステップＳ１０５，Ｓ１３５，Ｓ２２５の処理にはＳＭＯが使用されるが、訓練データＷｔが全訓練データＴに比べてはるかに小さいので、学習効率が大きく向上する。
【００２９】
次に、本発明者が周知の評価基準データセットである「web」、「zero-one」、「KDD-CUP」を用いて学習した結果を図３に示す。図３は、従来の分解アルゴリズム（P)、CoreSVM（Q)、および本発明による学習方法（R)による学習時間を比較するものであり、縦軸の単位は、「web」と「zero-one」に対しては秒、「KDD-CUP」に対しては分である。この図から、本発明の学習方法（Ｒ）は、他の従来の学習方法よりも高速で学習できることが分かる。
【００３０】
また、図４には、従来のCoreSVM、本発明の第１フェーズ、第２フェーズ（１０％、２０％、４０％、８０％および１００％）に対して、評価基準データセット用いて行った分類精度と学習時間（分）を示す。左側の縦軸は分類精度を示し、右側の縦軸は学習時間（分）を示す。また、実線は分類精度を示し、点線は学習時間を示す。分類精度に関しては、従来のCoreSVMについては、約８２％〜９５％の変動があるのに対して、本発明の第１フェーズでは約８２％〜９３％の変動、本発明の第２フェーズ（１０％、２０％、４０％、８０％および１００％）では、約９２％〜９６％の変動結果が得られた。このことから、第１フェーズでも従来のCoreSVMに比べて変動が小さく、第１フェーズだけでも従来のCoreSVMと遜色がないことが分かる。本発明の第２フェーズにおいては、従来のCoreSVMに比べてさらに変動が小さく、その精度が従来のCoreSVMに比べて大きく勝ることが分かる。なお、本発明の第２フェーズを１０％実行するだけで、９２％以上の高い分類精度が得られ、かつ短時間で学習を終わることができ、第２フェーズを１０％実行するだけでも大きな効果が得られることが分かった。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態（第１フェーズ）の手順を示すフローチャートである。
【図２】本発明の他の実施形態（第２フェーズ）の手順を示すフローチャートである。
【図３】本発明の学習時間が従来の学習方式よりも短いことを示すグラフである。
【図４】本発明の分類精度の変動が従来の学習方式よりも小さく、かつ高精度であることを示すグラフである。
【符号の説明】
【００３２】
Ｐ・・・分解アルゴリズム、Ｑ・・・CoreSVM、Ｒ・・・本発明の学習方法。
【図１】
0005137074.tif 000004
【図２】
0005137074.tif 000005
【図３】
0005137074.tif 000006
【図４】
0005137074.tif 000007