(57)【要約】【課題】カーネル計算、カーネル・キャッシュ及び訓練データが多数の分散形マシンあるいはプロセッサに分散している、訓練データの大きな集合を有する問題を解くための、並列サポート・ベクトル・マシン技術を提供する。【解決手段】複数の処理ノードの１つにおける訓練データの集合に基づいたサポート・ベクトル・マシンのトレーニングの方法は、ａ）ローカル・データに基づいて訓練データのローカル・ワーキング・セットを選択する段階と、ｂ）ローカル・ワーキング・セットに関する選択されたデータを送信する段階と、ｃ）訓練データのグローバル・ワーキング・セットの識別を受け取る段階と、ｄ）訓練データのグローバル・ワーキング・セットを最適化する段階と、ｅ）訓練データのグローバル・ワーキング・セットの勾配の一部分を更新する段階と、ｆ）収束条件を満足するまで段階ａ）から段階ｅ）までを繰り返す段階と、を有する。【選択図】図９Ａ
2007095069.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理ノードの１つにおける訓練データの集合に基づいたサポート・ベクトル・マシンのトレーニングの方法であって、
ａ）ローカル・データに基づいて訓練データのローカル・ワーキング・セットを選択する段階と、
ｂ）前記ローカル・ワーキング・セットに関する選択されたデータを送信する段階と、
ｃ）訓練データのグローバル・ワーキング・セットの識別を受け取る段階と、
ｄ）前記訓練データのグローバル・ワーキング・セットを最適化する段階と、
ｅ）前記訓練データのグローバル・ワーキング・セットの勾配の一部分を更新する段階と、
ｆ）収束条件を満足するまで前記段階ａ）から段階ｅ）までを繰り返す段階と、
を有する方法。
【請求項２】
前記ローカル・データは、勾配のローカル・サブセットを有する請求項１に記載の方法。
【請求項３】
前記ローカル・データは、勾配とカーネル値のローカル・サブセットの関数の最大値を有する、請求項１に記載の方法。
【請求項４】
前記選択されたデータは、前記ローカル・ワーキング・セットの勾配を有する請求項１に記載の方法。
【請求項５】
前記ローカル・ワーキング・セットの前記勾配は、最大値を有する勾配である請求項４に記載の方法。
【請求項６】
前記１つの処理ノードは、訓練データの集合の全体を蓄積する請求項１に記載の方法。
【請求項７】
前記１つの処理ノードは、訓練データの集合の一部分のみを蓄積する請求項１に記載の方法。
【請求項８】
前記受け取る段階は、訓練データの前記グローバル・ワーキング・セットの少なくとも一部分を受け取る段階をさらに有する、請求項７に記載の方法。
【請求項９】
前記勾配の一部分を更新する段階は、カーネル行列の一部分を生成する段階を有する請求項１に記載の方法。
【請求項１０】
複数の処理ノードを使用する訓練データの集合に基づいたサポート・ベクトル・マシンのトレーニングの方法であって、
ａ）前記複数の処理ノードのそれぞれにおいて、ローカル・データに基づいて訓練データのローカル・ワーキング・セットを選択する段階と、
ｂ）前記ローカル・ワーキング・セットに関する選択されたデータを使用して、訓練データのグローバル・ワーキング・セットを生成する段階と、
ｃ）前記複数の処理ノードのそれぞれにおいて、前記訓練データのグローバル・ワーキング・セットを最適化する段階と、
ｄ）前記複数の処理ノードのそれぞれにおいて、前記訓練データのグローバル・ワーキング・セットの勾配の一部分を更新する段階と、
ｅ）収束条件を満足するまで段階ａ）から段階ｄ）までを繰り返す段階と、
を有する方法。
【請求項１１】
前記ローカル・データは、勾配のローカル・サブセットを有する請求項１０に記載の方法。
【請求項１２】
前記ローカル・データは、勾配とカーネル値のローカル・サブセットの関数の最大値を有する請求項１０に記載の方法。
【請求項１３】
前記選択されたデータは、前記ローカル・ワーキング・セットの勾配を有する請求項１０に記載の方法。
【請求項１４】
前記ローカル・ワーキング・セットの勾配は、最大値を有する勾配である請求項１３に記載の方法。
【請求項１５】
ネットワーク・ノードの木構造を使用して、前記最大値を有する勾配を決定する段階と、
階層的な一斉同報(broadcast)を使用して、前記最大値を有する勾配を送信する段階と、
をさらに有する、請求項１４に記載の方法。
【請求項１６】
前記複数の処理ノードのそれぞれは、訓練データの集合の全体を蓄積する請求項１０に記載の方法。
【請求項１７】
前記複数の処理ノードのそれぞれは、訓練データの集合の一部分のみを蓄積する請求項１０に記載の方法。
【請求項１８】
前記複数の処理ノードのそれぞれにおいて、前記訓練データのグローバル・ワーキング・セットの少なくとも一部分を受け取る段階をさらに有する、請求項１７に記載の方法。
【請求項１９】
前記更新する段階は、前記複数の処理ノードのそれぞれにおいてカーネル行列の一部分を生成する段階を有する、請求項１０に記載の方法。
【請求項２０】
複数の処理ノードの１つにおける訓練データの集合に基づいてサポート・ベクトル・マシンをトレーニングする装置であって、
ａ）ローカル・データに基づいて、訓練データのローカル・ワーキング・セットを選択する手段と、
ｂ）前記ローカル・ワーキング・セットに関する選択されたデータを送信する手段と、
ｃ）訓練データのグローバル・ワーキング・セットの識別を受け取る手段と、
ｄ）前記訓練データのグローバル・ワーキング・セットを最適化する手段と、
ｅ）前記訓練データのグローバル・ワーキング・セットの勾配の一部分を更新する手段と、
ｆ）収束条件を満足するまで前記段階ａ）から段階ｅ）までを繰り返す手段と、
を有する装置。
【請求項２１】
前記ローカル・データは、勾配のローカル・サブセットを有する請求項２０に記載の装置。
【請求項２２】
前記ローカル・データは、勾配とカーネル値のローカル・サブセットの関数の最大値を有する請求項２０に記載の装置。
【請求項２３】
前記選択されたデータは、前記ローカル・ワーキング・セットの勾配を有する請求項２０に記載の装置。
【請求項２４】
前記ローカル・ワーキング・セットの前記勾配は、最大値を有する勾配である請求項２３に記載の装置。
【請求項２５】
前記受け取る手段は、前記訓練データのグローバル・ワーキング・セットの少なくとも一部分を受け取る手段をさらに有する、請求項２０に記載の装置。
【請求項２６】
前記勾配の一部分を更新する手段は、カーネル行列の一部分を生成する手段を有する、請求項２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して機械学習(machine learning)に関し、特に、サポート・ベクトル・マシン（ＳＶＭ；support vector machine）に関する。
【背景技術】
【０００２】
機械学習は、コンピュータが「学習する」ことを可能にする技術を含んでいる。詳しくは、機械学習は、コンピュータ・システムがタスクを行うように直接にプログラミングするのではなくて、何らかのタスクを行うようにコンピュータ・システムを訓練することを含んでいる。コンピュータ・システムは、あとで未知のデータを処理するときに使用するために、あるデータを観察し、データの何らかの構造を自動的に決定する。
【０００３】
機械学習技術は、一般に、訓練(training)データから関数を創出する。訓練データは、（通常はベクトルである）入力オブジェクトと所望の出力との対から成る。関数の出力は、（回帰(regression)と呼ばれる）連続した値でもよく、あるいは（分類(classification)と呼ばれる）入力オブジェクトのクラス（分類）ラベルを予測することができるものであってもよい。学習マシンのタスクは、少数の訓練例（すなわち入力と目標出力の対）を観察したのみで、任意の有効な入力オブジェクトに対する関数の値を予測することである。
【０００４】
学習マシンの１つの特定の型は、サポート・ベクトル・マシンである。ＳＶＭは、例えば、V. Vapnik, "Statistical Learning Theory", Wiley, New York, 1998（非特許文献１）、及び、C. Burges, "A Tutorial on Support Vector Machines for Pattern Recognition", Data Mining and Knowledge Discovery, 2, 121-167, 1998（非特許文献２）に述べられているように、当該分野において公知である。本発明の以下の説明を助けるために、公知ではあるが、ここでＳＶＭの簡単な説明を行う。
【０００５】
円あるいは正方形の分類を有するデータを示す、図１に示す分類を考える。２つのクラスを分割する最良の方法は何か、との疑問が起きる。図２に示すように、ＳＶＭは、サポート・ベクトルにより定められる最大マージン超平面を創出する。サポート・ベクトルは、符号２０２，２０４，２０６として示され、超平面２０８を定めるための分類境界として使用される訓練データのそれらの入力ベクトルを定める。分類問題において超平面を定める目的は、異なるクラス各々のサポート・ベクトルの間の距離であるマージン（ｗ）２１０を最大化することである。言い換えれば、最大マージン超平面は、最も近いサポート・ベクトルからの距離が最大化されるように、訓練例を分割する。２次計画（ＱＰ）最適化問題を解くにより、サポート・ベクトルは決定される。例えば、R. Fletcher, "Practical Methods of Optimization", Wiley, New York, 2001（非特許文献３）、及び、M. S. Bazaraa, H. D. Shrali and C. M. Shetty, "Nonlinear Programming: Theory and Algorithms", Wiley Interscience, New York, 1993（非特許文献４）に述べられているように、ＳＶＭとともに使用するためのいくつかの公知のＱＰアルゴリズムが存在する。最適な超平面を決定するためには、訓練データ・ベクトル（すなわちサポート・ベクトル）の少数のサブセットのみを考慮する必要がある。したがって、サポート・ベクトルを定める問題は、フィルタリング問題であると考えることもできる。特に、訓練段階の間のＳＶＭの仕事は、サポート・ベクトルではない訓練データ・ベクトルを除外することである。
【０００６】
図２から分かるように、最適な超平面２０８は、分類されるべきデータが直線的に分離できると想定する線形のもの(linear)である。しかし、いつもそうであるとは限らない。例えば、データが２つの集合（Ｘ及びＯ）に分類される図３を考える。図の左側に示すように、１次元空間では２つのクラスは直線的には分離できない。しかし、図の右側に示すように、１次元のデータを２次元空間にマッピングすることによって、線３０２によりデータは直線的に分離できる。この同じ考えを図４に示す。図４の左側に、サポート・ベクトル（周囲に輪郭線を有する円として示す）により定められる分類境界を有する２次元データを示す。しかし、クラス・分割線（デバイダ）４０２は直線ではなく曲線であり、２次元データは直線的には分離できない。しかしながら、図４の右側に示すように、２次元データを高次元空間にマッピングすることによって、超平面４０４によりデータは直線的に分離可能となる。高次元の空間内のベクトル間の内積(dot product)を計算するマッピング関数は、カーネルと呼ばれ、本明細書においては、一般にｋとして参照される。低次元から高次元にデータをマップするカーネル関数の使用は、例えば、上記の非特許文献１に説明されているように、当該分野において公知である。
【０００７】
上述のようにＳＶＭが訓練された後に、次の式を適用することにより入力データを分類することができる。
【０００８】
【数１】
2007095069.tif 000003
【０００９】
ここで、ｘiはサポート・ベクトルを表し、ｘは分類されるべきベクトルであり、αi，ｂは訓練アルゴリズムにより得られるパラメタであり、ｙは分類されるベクトルに割り当てられるクラス・ラベルである。
【００１０】
式ｋ(ｘ，ｘi)＝ｅｘｐ(−‖ｘ−ｘi‖2／ｃ)は、カーネル関数の例、具体的に言えば動径基底関数の例である。他の形式のカーネル関数も同様に使用することができる。
【００１１】
ＳＶＭは分類及び回帰の強力なツールであるが、その１つの欠点は、その計算と記憶のための必要条件が訓練ベクトルの数とともに急速に増加することであり、実用上の関心がある多くの問題に対してＳＶＭをその守備範囲外としている。上述のように、ＳＶＭのコアとなる部分は２次計画問題であり、サポート・ベクトルを残りの訓練データから分離する。汎用のＱＰソルバー(solver)は、訓練ベクトルの数の３乗に比例して（すなわちＯ(ｋ3)で）スケーリング（拡大縮小）する傾向がある。勾配降下法に通常は基づいている専用のアルゴリズムは、効率の面では利点があるが、それでも、１０万のオーダーの訓練ベクトル（２クラス問題）を有する問題に対しては、依然として非実用的なほどに遅くなる。
【００１２】
ＱＰを加速するための１つの既存の方法は、訓練データのサブセットが大域的最適に到達するまで反復して最適化される「チャンキング(chunking)」に基づいている。この技術は、B. Boser, I. Guyon, V. Vapnik, "A training algorithm for optimal margin classifiers", Proc. 5th Annual Workshop on Computational Learning Theory, Pittsburgh, ACM, 1992（非特許文献５）、E. Osuna, R. Freund, F. Girosi, "Training Support Vector Machine, an Application to Face Detection", Computer vision and Pattern Recognition, pp. 130-136, 1997（非特許文献６）、及び、T. Joachims, "Making large-scale support vector machine learning practical," in Advances in Kernel Methods, B. Scholkopf, C. Burges, A. Smola (eds.), Cambridge, MIT Press, 1998（非特許文献７）に記載されている。J. C. Platt, "Fast Training of support vector machines using sequential minimal optimization," in Advances in Kernel Methods, B. Scholkopf, C. Burges, A. Smola (eds.), Cambridge, MIT Press, 1998（非特許文献８）に述べられている「逐次最小最適化（ＳＭＯ；Sequential Minimal Optimization）」は、チャンク・サイズを２つのベクトルにまで減少させるものであり、これらのチャンキング・アルゴリズムの中では最も普及している。最適化処理の早期に非サポート・ベクトルを除外することは、計算をかなり節減できる別の方策である。効率的なＳＶＭの具体例は、上記の非特許文献７、及び、R. Collobert, S. Bengio, J. Mariethoz, "Torch: A modular machine learning software library," Technical Report IDIAP-RR 02-46, IDIAP, 2002（非特許文献９）に説明されているように、非サポート・ベクトルの早期での識別のために、「シュリンキング(shrinking)」として公知の段階を組み込んでいる。カーネル・データのキャッシングと組み合わせて、これらの技術は必要計算量を甚だしく減少させる。D. DeCoste, B. Scholkopf, "Training Invariant Support Vector Machine," Machine Learning, 46, 161-190, 2002（非特許文献１０）に説明されている「ダイジェスティング(digesting)」という名の別の方法は、新しいデータを付け加える前の完了に近いサブセットを最適化し、その結果、メモリのかなりの量を節減する。
【００１３】
並列化によってＳＶＭの計算速度を改善することは、計算段階の間の依存性のために困難である。R. Collobert, Y. Bengio, S. Bengio, "A Parallel Mixture of SVMs for Very Large Scale Problems," Neural Information Processing Systems, Vol. 17, MIT Press, 2004（非特許文献１１）に説明されているように、データの初期クラスタリングによって、あるいは個々に最適化されたサブセットからの結果の訓練された組み合わせによって、独立に最適化できる小さなサブセットに問題を分割することにより並列化が試みられてきた。問題をこのように構造化できれば、データの並列化は効率的であり得る。しかし、多くの問題に対しては、小さい問題に分割した後に、大域的最適を発見できるか否かは疑わしい。A. Tveit, H. Engum, "Parallelization of the Incremental Proximal Support Vector Machine Classifier using a Heap-based Tree Topology," Tech. Report, IDI, NTNU, Trondheim, 2003（非特許文献１２）に説明されているような、近位(proximal)ＳＶＭのような標準のＳＶＭアルゴリズムの変形は、より並列化に適しているが、高次元の問題に対する性能と適用性は依然として疑わしい。J. X. Dong, A. Krzyzak, C. V. Suen, "A Fast Parallel Optimization for Training Support Vector Machine," Proceedings of third International Conference on Machine Learning and Data Mining, P. Perner and A. Rosenfeld (Eds.), Springer Lecture Notes in Artificial Intelligence (LNAI 2734), pp. 96-105, Leipzig, Germany, July 5-7, 2003（非特許文献１３）に説明されている別の並列化方式は、ブロック対角によってカーネル行列を近似している。
【００１４】
他の並列化技術も存在する。G. Zanghirati, L. Zanni, "A Parallel Solver for Large Quadratic Programs in Training Support Vector Machines," Parallel Computing, 29, 535-551, 2003（非特許文献１４）は、高速の収束のためにスペクトル勾配法を使用する勾配射影に基づく並列最適化アルゴリズムを説明している。「並列サポート・ベクトル法及び装置(Parallel Support Vector Method and Apparatus)」と題する、２００４年１０月２９日出願の米国特許出願番号第１０／９７８，１２９（米国特許公開２００６／０１１２０２６Ａ１（特許文献１））は、分散された形態で個々に最適化される小さいサブセットに訓練データ集合を分割する並列化技術を説明している。大きな２次計画（ＱＰ）問題を解くために内点（ＩＰ；Interior point）法が公知であり、並列化が、例えばM. D'Appuzo, M. Marino, "Parallel Computational Issues of an Interior Point Method for Solving Large Bound-Constrained Quadratic Programming Problems," Parallel Computing, 29, 467-483, 2003（非特許文献１５）において提案されている。
【特許文献１】米国特許公開２００６／０１１２０２６Ａ１
【非特許文献１】V. Vapnik, "Statiscal Learning Theory（統計的学習理論）", Wiley, New York, 1998
【非特許文献２】C. Burges, "A Tutorial on Support Vector Machines for Pattern Recognition（パターン認識のためのサポート・ベクトル・マシンについてのチュートリアル）", Data Mining and Knowledge Discovery, 2, 121-167, 1998
【非特許文献３】R. Fletcher, "Practical Methods of Optimization（最適化の実用的方法）", Wiley, New York, 2001
【非特許文献４】M. S. Bazaraa, H. D. Shrali and C. M. Shetty, "Nonlinear Programming: Theory and Algorithms（非線形プログラミング、理論とアルゴリズム）", Wiley Interscience, New York, 1993
【非特許文献５】B. Boser, I. Guyon, V. Vapnik, "A training algorithm for optimal margin classifiers（最適マージン分類子のための訓練アルゴリズム）", Proc. 5th Annual Workshop on Computational Learning Theory, Pittsburgh, ACM, 1992
【非特許文献６】E. Osuna, R. Freund, F. Girosi, "Training Support Vector Machine, an Application to Face Detection（サポート・ベクトル・マシンのトレーニング、面検出への応用）", Computer vision and Pattern Recognition, pp. 130-136, 1997
【非特許文献７】T. Joachims, "Making large-scale support vector machine learning practical（大規模なサポート・ベクトル・マシン学習を実用的にする）," （Advances in Kernel Methods（カーネル法における進歩）, B. Scholkopf, C. Burges, A. Smola (編), Cambridge, MIT Press, 1998に所収）
【非特許文献８】J. C. Platt, "Fast Training of support vector machines using sequential minimal optimization（逐次最小最適化を使用するサポート・ベクトル・マシンの高速トレーニング）," （Advances in Kernel Methods（カーネル法における進歩）, B. Scholkopf, C. Burges, A. Smola (編), Cambridge, MIT Press, 1998に所収）
【非特許文献９】R. Collobert, S. Bengio, J. Mariethoz, "Torch: A modular machine learning software library（Ｔｏｒｃｈ：モジュール式の機械学習ソフトウェア・ライブラリ）," Technical Report IDIAP-RR 02-46, IDIAP, 2002
【非特許文献１０】D. DeCoste, B. Scholkopf, "Training Invariant Support Vector Machine（不変サポート・ベクトル・マシンのトレーニング）," Machine Learning, 46, 161-190, 2002
【非特許文献１１】R. Collobert, Y. Bengio, S. Bengio, "A Parallel Mixture of SVMs for Very Large Scale Problems（非常に大規模な問題のためのＳＶＭの並列組み合わせ）," Neural Information Processing Systems, Vol. 17, MIT Press, 2004
【非特許文献１２】A. Tveit, H. Engum, "Parallelization of the Incremental Proximal Support Vector Machine Classifier using a Heap-based Tree Topology（ヒープ・ベースの木トポロジーを使用する増分近位サポート・ベクトル・マシン分類子の並列化）," Tech. Report, IDI, NTNU, Trondheim, 2003
【非特許文献１３】J. X. Dong, A. Krzyzak, C. V. Suen, "A Fast Parallel Optimization for Training Support Vector Machine（サポート・ベクトル・マシンの訓練のための高速並列最適化）," Proceedings of third International Conference on Machine Learning and Data Mining, P. Perner and A. Rosenfeld（編）, Springer Lecture Notes in Artificial Intelligence (LNAI 2734), pp. 96-105, Leipzig, Germany, July 5-7, 2003
【非特許文献１４】G. Zanghirati, L. Zanni, "A Parallel Solver for Large Quadratic Programs in Training Support Vector Machines（サポート・ベクトル・マシンの訓練における大きい２次計画法のための並列ソルバー）," Parallel Computing, 29, 535-551, 2003
【非特許文献１５】M. D'Appuzo, M. Marino, "Parallel Computational Issues of an Interior Point Method for Solving Large Bound-Constrained Quadratic Programming Problems（大きな境界条件付き２次計画問題を解くための内点法の並列計算問題）," Parallel Computing, 29, 467-483, 2003
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ＳＶＭならびに上述の技術は、強力な回帰と分類のツールではあるが、非常に大きい問題に対しては良く適合できない。
【課題を解決するための手段】
【００１６】
本発明は、訓練データの大きな集合（セット；set）を使用して問題を効率的に解くための並列ＳＶＭ技術を提供する。本発明による１つの態様においては、カーネル・キャッシュ及び訓練データと同様に、カーネル計算も、多数の分散形マシンあるいはプロセッサに分けられている。
【００１７】
１つの実施態様においては、訓練データの集合に基づいてサポート・ベクトル・マシンを訓練するために、複数の処理ノードが使用される。処理ノードのそれぞれは、処理ノードに対して局所的なデータに基づいて、訓練データのローカル・ワーキング・セットを選択する。１つの実施態様においては、データは勾配のローカル・サブセットであってもよい。ノードは、ワーキング・セットに関する選択されたデータを送信し、訓練データのグローバル（大域）ワーキング・セットの識別(identification)を受け取る。１つの実施態様においては、選択されたデータは、最大値を有するローカル（局所）ワーキング・セットの勾配であってもよい。処理ノードは、訓練データのグローバル・ワーキング・セットを最適化し、訓練データのグローバル・ワーキング・セットの勾配の一部分を更新する。勾配の一部分の更新には、カーネル行列の一部分の生成を含んでもよい。収束条件を満足するまで、これらの段階は繰り返される。
【００１８】
さまざまな実施態様において、ローカル処理ノードのそれぞれは、訓練データのすべて、あるいは一部分のみを蓄積してもよい。ローカル処理ノードが訓練データの一部分のみを蓄積する場合には、最適化段階を行うために、ローカル処理ノードは、訓練データのグローバル・ワーキング・セットの少なくとも一部分も受け取る。
【００１９】
訓練データのグローバル・ワーキング・セットを最適化する段階と、グローバル・ワーキング・セットの勾配の一部分を更新する段階は、ローカル処理ノードのそれぞれで実行されるが、訓練データのグローバル・ワーキング・セットを生成する機能は、個別の処理ノードから受け取った選択されたデータ（例えば、ローカル・ワーキング・セットの勾配）に基づいて、集中形式で実行される。１つの実施態様においては、最大値を有する勾配は、ネットワーク・ノードの木構造を使用して決定され、決定された勾配は、階層的な一斉同報（ブロードキャスト）技術を使用してローカル処理ノードに送信される。
【００２０】
本発明による以上のまたは他の利点は、下記の詳細説明と添付図面の参照により、当業者には明白であろう。
【発明を実施するための最良の形態】
【００２１】
ここで、２クラス分類問題に重点をおいて、二重定式化(dual formulation)で解かれた標準的なサポート・ベクトル・マシン（ＳＶＭ）アルゴリズムに照らして、本発明の原理を説明する。当業者は、同様の方法で回帰あるいは多クラスの分類のような別の問題に本発明の原理を適用可能であることを認識するであろう。
【００２２】
Ｉ個の訓練例(ｘi，ｙi)の集合（セット）を考える。ここで、ｘi∈Ｒdはｄ次元のパターンを表わし、ｙi＝±１はクラス・ラベルである。Ｋ(ｘi，ｘj)はパターンの間のカーネル値の行列であり、αiは最適化により決定されるべきラグランジュ係数である。ＳＶＭ問題を解くことは、次の２次関数を最小化することを含んでいる。
【００２３】
【数２】
2007095069.tif 000004
【００２４】
ここで説明するアルゴリズムは、勾配降下法に基づいており、勾配は、大域的最適化の状態の情報を維持するためと、ワーキング・セットを選択するためにも使用される（以下参照）。αに対してＷの勾配は次式で表される。
【００２５】
【数３】
2007095069.tif 000005
【００２６】
大きな最適化に対しては完全には比例的に拡大縮小しない傾向があるので（およそｎ3に比例）、ＳＶＭを用いた実装では、大きな１つの最適化においては、式(1)の２次計画（ＱＰ）問題を解かない。逆に、訓練データの集合は、ｎw個の要素を有する小さなワーキング・セットに分割される。ｎwは、通常、非常に小さい（多くの場合ｎw＝２）。最適化は、ワーキング・セットｎwに対して実行され、各最適化の後に新しいワーキング・セットが訓練データから選択される。図５Ａ、図５Ｂ、図６を用いてこのアルゴリズムを以下に説明する。図５Ａは、訓練データのワーキング・セットへの分割（セグメンテーション）を伴う基本的なＳＶＭ最適化アルゴリズムを示すフローチャートである。図５Ｂは、その同じアルゴリズムの疑似コードを示す図である。図６は、図５Ａ、図５Ｂに示すアルゴリズムのデータ項目を例示する略図である。図６は、ｄ次元のｎ個のベクトル、カーネル行列６０４、勾配６０６、及びα６０８を有する訓練データ集合６０２を示す。なお、このアルゴリズムはワーキング・セットｎwがサイズ２である場合を示しており、これは、非特許文献８に述べられている公知の逐次最小化最適化アルゴリズムに対応する。しかし、他のワーキング・セット・サイズも同様に使用することができる。ワーキング・セット・サイズが２であれば、最適化を解析的に解くことができ都合がよいが、より大きいサイズのワーキング・セットは、標準的な数値最適化アルゴリズムを使用して最適化できる。
【００２７】
このアルゴリズムは次のように説明される。なお、このアルゴリズムを、図５Ａのフローチャートの各ステップを特に参照して説明する。図５Ｂの疑似コードの各部分を図５Ａのフローチャートの各ステップと関連付けることは、当業者には容易に可能であろう。
【００２８】
最初に、ステップ５０２において、値が初期化される。アルファ（α）を０（αi＝０）に、勾配を−１（Ｇi＝−１）に初期化することにより、実行可能な点から開始する。さらに、初期化段階は、特定のマシン上で処理されるインデックスの範囲（ｌｏからｈｉ）も設定する。この場合は、１つのマシンのみが存在するから、図５Ｂの疑似コードで符号５５０に示すように、ｌｏは１に設定され、ｈｉはｎに設定される。ステップ５０４において、ステップ５０８で計算された勾配に基づいて、ワーキング・セット（ｘi，ｘj）が選択される（最初の反復に対しては、ワーキング・セットに対して２個の訓練データ・サンプルがランダムに選ばれる）。ステップ５０６において、ワーキング・セットは最適化される。関数Ｗ（式(1)）の最適化は、ワーキング・セットのαのみを考慮して実行され、他のすべてのαは一定に維持される。これは、ワーキング・セットのα値を（Δα1，Δα2）だけ変化させる。ステップ５０６における最適化は、カーネル行列の要素Ｋ(ｘi，ｘi) ６１０，Ｋ(ｘj，ｘi) ６１４，Ｋ(ｘi，ｘj) ６１２，Ｋ(ｘj，ｘj) ６１６を必要とする。
【００２９】
次に、ステップ５０８において、すべての勾配（Ｇk） ６０６が更新される。訓練データ集合では、各ベクトルごとに１つの勾配がある。したがって、カーネル行列のすべての要素Ｋ(ｘi，ｘk) （列６２０），Ｋ(ｘj，ｘk) （列６１８）（ｋ＝１，…，ｎ）は、この更新に対して計算されなければならない。ステップ５１０において、収束条件が満たされたかとうかが判定される。大域的最適への収束は、すべてのαがＫａｒｕｓｈ−Ｋｕｈｎ−Ｔｕｃｋｅｒ（ＫＫＴ）条件を満たす場合に保証される。ＫＫＴ条件は、２次最適化問題の最適解が満足しなければならない条件を定める。ＫＫＴ条件は必要十分条件である（すなわち、ＫＫＴ条件は、解が真に最適であるかをテストするために使用でき、最適な値をまだ有しないパラメタを識別できる）。さまざまな具体例において、収束基準は、勾配の値の測定に基づいてもよいし、最適化の間のαの変化に基づいてもよいし、あるいはタイム・リミット（制限時間）に基づいてもよい。このような発見的方法は、大部分のアプリケーションに対してＫＫＴ条件の正確な近似を提供することができる。収束条件が満たされなければ、ステップ５０４に移行し、収束基準が満たされて大域的最適が発見されたことを示されるまで、ステップ５０４，５０６，５０８が繰り返される。
【００３０】
図７は、図５Ａ及び図５Ｂに示すアルゴリズムの主要な計算ブロックと記憶ブロックを示す図であって、それらの間の通信の要件を（矢印によって示すように）表示している。図７において、ｎは訓練ベクトルの数であり、ｄは訓練ベクトルの次元であり、ｎwはワーキング・セット内のベクトルの数であり、ｉは反復の回数（すなわち、ワーキング・セットが選択された回数）である。例えば、１００万個の訓練ベクトル（ｎ＝１０6）がある場合には、カーネル行列の全体は１０12の要素で構成され、ベクトル次元数ｄ＝１０4である場合には、カーネル計算はおよそ１０16回の演算を必要とする。このような数は、平均的な現状の技術のパーソナル・コンピュータあるいはワークステーションが合理的な時間で処理することができる範囲を明らかに超えている。
【００３１】
本発明は、マシンの間の非常に密な結合を必要とせずに、単一の最適化を複数のマシンに広げることによる並列化を利用する。本発明は、低コストの接続ネットワークを有するメッセージ・パッシング型(message-passing)マルチプロセッサ上で効率的に機能を発揮する。さらに本発明は、図５を用いて上述した有効な分割（セグメンテーション）方法を維持する。したがって、現在使用されている最も効率的なＳＶＭアルゴリズムに、並列化利得が加えられる。本発明は、図７に示す機能の最も計算コストがかかる部分を並列化する。本発明は、図７の機能ブロックを垂直にスライスに分割し、スライスの各々は異なるマシンにマップされていると考えることができる。この垂直のスライシングと並列化とが図８に示されている。図示されるように、ワーキング・セットを最適化し（８０４）、勾配を更新し、ＫＫＴ制約条件をテストし（８１０）、カーネルを計算する計算ステップ（８１４）は、複数のマシン（あるいはプロセッサ）８０２−１，８０２−２，…，８０２−ｎに分割され分配されている。結果として、カーネル・キャッシュ８１２と（一部の実施形態においては）訓練データ８１６の蓄積も、複数のマシン（あるいはプロセッサ）８０２−１，８０２−２，…，８０２−ｎに分割され分配される。次のワーキング・セットを発見し、（一部の実施形態において）訓練データを分散する機能（８０６）は、分散されずに、ネットワーク上に広げられ、１つまたは複数の集中マシン（あるいはプロセッサ）によりネットワークを代表して実行される。図８に示す機能分割は、実験に基づいて、有利であるとして選ばれた。この実験に際して、蓄積ブロックと計算ブロックは小さなユニットに分割され、さまざまな方法で組み合わされた。
【００３２】
図９Ａ、図９Ｂ及び図１０を用いて本発明の実施の一形態を以下に説明する。図９Ａは、この実施形態におけるアルゴリズムのフローチャートである。図９Ｂは、その同じアルゴリズムの疑似コードを示す図である。図１０は、図９Ａ及び図９Ｂに示すアルゴリズムにおける、２つのマシン１００２，１００４に蓄積されたデータ項目を例示する略図である。理解しやすいように２つのマシンのみを示したが、当業者は、３つ以上のマシンの場合にも議論を容易に拡張できよう。
【００３３】
この実施形態においては、訓練データの集合の全体が、ローカル・マシンのそれぞれに蓄積されると仮定する。図１０は、次元ｄのｎ個のベクトルを有する訓練データ集合１００６を示し、マシン１００２，１００４のそれぞれは訓練データ集合の全体を蓄積している。以下にさらに詳細に説明するように、マシンのそれぞれは、カーネル行列の一部分のみを蓄積する。すなわち、マシン１００２はカーネル行列の上半分（すなわち、部分１００８）を蓄積し、マシン１００４はカーネル行列の下半分（すなわち、部分１０１０）を蓄積する。さらに、マシン１００２に蓄積される勾配１０１２と、マシン１００４に蓄積される勾配１０１４が示されている。マシン１００２，１００４のそれぞれは、すべてのα１０１６を蓄積する。
【００３４】
より一般的には、本実施形態によれば、各マシンは以下に記載のものを蓄積する。
【００３５】
【数４】
2007095069.tif 000006
【００３６】
ここで、ｎは訓練ベクトルの数であり、ｄは訓練ベクトルの次元であり、ｐはマシンの台数である。
【００３７】
アルゴリズムは、次のように説明される。なお、このアルゴリズムを、図９Ａのフローチャートの各ステップを特に参照して説明する。図９Ｂの疑似コードの各部分を図９Ａのフローチャートの各ステップと関連付けることは、当業者には容易に可能であろう。図９Ａは、ネットワーク９０２により実行されるステップと、ローカル・マシン９０４のそれぞれにより実行されるステップを示している。ネットワークによって実行されるステップは、ＳＶＭアルゴリズムを実行するすべてのマシンを代表して、集中形態で実行されるステップである。したがって、このようなステップは分配されず、代わりにすべてのローカル・マシンに対し、集中化される。しかし、これらのネットワークでのステップ９０２は、単一の中央マシンにより実行することも可能であり、あるいは複数のマシンにより実行することもできる。重要なことは、実行される機能は、すべてのマシンの間で協調される集中化した機能であることである。ローカル・マシン９０４において実行されるステップへの言及は、このステップがｐ個のローカル・マシンのすべてにより実行されることを意味することが、理解されるべきである。
【００３８】
ステップ９０６において、完全な訓練データ集合が、ネットワーク９０２によって、ローカル・マシン９０４に分配される。ステップ９１２において、ローカル・マシン９０４において値が初期化される。この初期化は、図５Ａのステップ５０２に関連して上述したものである。なお、ローカル・マシン９０４のそれぞれは、インデックスの特定の範囲（ｌｏからｈｉ）のみを処理し、これらの値は図９Ｂの疑似コードにおいて符号９５０に示すように設定される。図１０に示すように、マシン１００２はｌｏ1からｈｉ1までのインデックスを処理し、マシン１００４はｌｏ2からｈｉ2までのインデックスを処理する。ステップ９１４において、ローカル・マシン９０４は、ステップ９２０で計算された勾配に基づいてワーキング・セット（ｘi，ｘj）を選択する（最初の反復に対しては、ワーキング・セットに対して２個の訓練データ・サンプルがランダムに選ばれる）。なお、各マシンは、（図１０に示すように）カーネル行列の局部的なビュー(view)のみを有するので、大域的最適化を行うことができない。したがって符号９１６に示すように、ローカル・マシン９０４は、ネットワークを介してネットワーク・マシン９０２にｎw個の最大勾配（Ｇi，Ｇj）を送信する。単一のマシン（９０２）上で発生しているとここで説明することは、実際には、ネットワーク上の複数のマシンの間のデータの交換を介して分散形式で発生することが可能である。分散技術では、グローバル・ワークセットに（各マシン上で）到達するために、マシンはワークセットの伝搬／交換に関与する。このような伝搬／交換のための技術を図１３〜図１５を用いて以下でさらに詳細に説明する。
【００３９】
次に、ネットワーク・マシン９０２は、ステップ９０８において、受信した勾配を使用してグローバル・ワーキング・セットを選択する。これはｎwに依存する。小さいｎw（例えば、ｎw＝２）の場合には、計算コストはネットワーク通信コストと比較して小さい。大域的に最適なワーキング・セットのインデックスｉ，ｊは、符号９２２で示すように、ローカル・マシン９０４に通信される。なお、大域的に最適なワーキング・セットの選択は、大域的最適に速く収束するために重要である。実験によれば、各ローカル・マシンのローカル・データにもとづいて各ローカル・マシンが最適化を行い、その後に結果を集約するよりも、ネットワーク・マシン９０２においてすべての勾配の大域的なビューに基づいて最適化を行うことの方がより有効であることが、示されている。
【００４０】
ステップ９１８において、図５Ａのステップ５０６に関連してすでに説明したように、グローバル・ワーキング・セットが最適化される。ステップ９１８における最適化は、カーネル行列要素Ｋ(ｘi，ｘi)，Ｋ(ｘj，ｘi)，Ｋ(ｘi，ｘj)，Ｋ(ｘj，ｘj)を必要とする。図１０に示すように、ローカル・マシン１００２，１００４のそれぞれは、訓練データ１００６の集合全体を含んでおり、各ローカル・マシンは、必要なカーネル行列要素Ｋ(ｘi，ｘi) １０２０，Ｋ(ｘj，ｘi) １０２２，Ｋ(ｘi，ｘj) １０２４，Ｋ(ｘj，ｘj) １０２６を決定することができる。次に、集合全部の勾配が更新される必要がある。ここでもローカル・マシン１００２，１００４はそれぞれ訓練データ１００６の集合の全体を含んでいるから、ステップ９２０において、各ローカル・マシンは、自身の勾配の集合を更新することができる。なお、Ｋ(ｘi，ｘj)はＫ(ｘj，ｘi)と等価であり、したがって、マシンがこれらの要素の一方を有するならば、マシンはこれらの要素の両方を実効的に有していることになる。しかし図５Ａ、図５Ｂの方法とは異なり、本発明による原理によれば、ローカル・マシン１００２，１００４のそれぞれは、カーネル行列のサブセットをのみを蓄積する。したがって、カーネル要素Ｋ(ｘi，ｘk)，Ｋ(ｘj，ｘk)に対して、図１０に列１０２８，１０３０としてそれぞれ示すように、ローカル・マシン１００２は（ｋ＝ｌｏ1，…，ｈｉ1）に対してこれらの要素を計算する。ローカル・マシン１００４は、図１０に列１０３２，１０３４としてそれぞれ示すように、（ｋ＝ｌｏ2，…，ｈｉ2）に対してこれらの要素を計算する。ステップ９１０の収束テストが満たされると、この方法は終了する。
【００４１】
したがって、本発明による利点によれば、ローカル・マシンのそれぞれは、カーネル行列の一部のみを計算し蓄積する必要がある。ローカル・マシン１００２は部分１００８を計算し蓄積し、ローカル・マシン１００４は部分１０１０を計算し蓄積する。カーネル行列の計算と蓄積は（計算リソースに関して）最もコストを要する機能の１つであるから、分散されたローカル・マシンにこれらの機能を分散することは、著しい処理の最適化をもたらす。
【００４２】
図１１Ａ、１１Ｂ及び図１２を用いて本発明の他の実施形態を以下にさらに説明する。。図１１Ａは、この実施形態におけるアルゴリズムのフローチャートである。図１１Ｂは、その同じアルゴリズムの疑似コードを示す図である。図１２は、図１１Ａ及び図１１Ｂに示すアルゴリズムにおける、２つのマシン１２０２，１２０４に蓄積されたデータ項目を例示する略図である。理解しやすいように２つのマシンのみを示したが、当業者は、３つ以上のマシンの場合にも議論を容易に拡張できよう。
【００４３】
この実施形態においては、マシンは訓練データの集合の全体を蓄積するわけではないと仮定し、代わりに、訓練データは複数のローカル・マシンに分散される。図１２は、次元ｄのｎ個のベクトルを有する訓練データ集合を示す。しかし、図１０を用いて上述した実施形態とは異なり、この実施形態においては、マシン１２０２，１２０４のそれぞれは、訓練データ集合の一部のみを蓄積する。マシン１２０２はハッチングが付された部分１２０６を蓄積し、マシン１２０４はハッチングが付された部分１２０７を蓄積する。以下にさらに詳細に説明するように、マシンのそれぞれはカーネル行列の一部分のみを蓄積する。すなわち、マシン１２０２はカーネル行列の上半分（すなわち、部分１２０８）を蓄積し、マシン１２０４はカーネル行列の下半分（すなわち、部分１２１０）を蓄積する。さらに、マシン１２０２に蓄積される勾配１２１２と、マシン１２０４に蓄積される勾配１２１４が示されている。マシン１２０２，１２０４のそれぞれは、すべてのα１２１６を蓄積する。
【００４４】
より一般的には、本実施形態においては、各マシンは以下に記載のものを蓄積する。
【００４５】
【数５】
2007095069.tif 000007
【００４６】
ここで、ｎは訓練ベクトルの数であり、ｄは訓練ベクトルの次元であり、ｐはマシンの台数である。
【００４７】
アルゴリズムは、次のように説明される。なお、アルゴリズムを、図１１Ａのフローチャートの各ステップを特に参照して説明する。図１１Ｂの疑似コードの各部分を図１１Ａのフローチャートの各ステップと関連付けることは、当業者には容易に可能であろう。図１１Ａは、ネットワーク１１０２により実行されるステップと、ローカル・マシン１１０４のそれぞれにより実行されるステップを示している。ネットワークによって実行されるステップは、ＳＶＭアルゴリズムを実行するすべてのマシンを代表して、集中形態で実行されるステップである。したがって、このようなステップは分配されず、代わりにすべてのローカル・マシンに対し、集中化される。しかし、これらのネットワークでのステップ１１０２は、単一の中央マシンにより実行することも可能であり、あるいは複数のマシンにより実行することもできる。重要なことは、実行される機能は、すべてのマシンの間で協調される集中化した機能であることである。ローカル・マシン１１０４において実行されるステップへの言及は、このステップがｐ個のローカル・マシンのすべてにより実行されることを意味することが、理解されるべきである。
【００４８】
ステップ１１０６において、ネットワーク１１０２は、各ローカル・マシンの訓練データ部分をそのローカル・マシンに分配する。ステップ１１１２において、ローカル・マシン１１０４において値は初期化される。この初期化は、図５Ａのステップ５０２に関連して上述したものである。なお、ローカル・マシン１１０４のそれぞれは、インデックスの特定の範囲（ｌｏからｈｉ）のみを処理し、これらの値は図１１Ｂの疑似コードの符号１１５０に示すように設定される。図１２に示すように、マシン１２０２はｌｏ1からｈｉ1までのインデックスを処理し、マシン１２０４はｌｏ2からｈｉ2までのインデックスを処理する。ステップ１１１４において、ローカル・マシン１１０４は、ステップ１１２０で計算された勾配に基づいてワーキング・セット（ｘi，ｘj）を選択する（最初の反復に対しては、ワーキング・セットに対して２個の訓練データ・サンプルがランダムに選ばれる）。なお、各マシンは、（図１２に示すように）カーネル行列の局部的なビューのみを有するので、大域的最適化を行うことができない。したがって、符号１１１６に示すように、ローカル・マシン１１０４は、ネットワークを介してネットワーク・マシン１１０２にｎw個の最大勾配（Ｇi，Ｇj）を送信する。ネットワーク上のデータの効率的な伝送を、図１３〜図１５を用いて以下にさらに詳細に説明する。
【００４９】
次に、ネットワーク・マシン１１０２は、ステップ１１０８において、受信した勾配を使用してグローバル・ワーキング・セットを選択する。これはｎwに依存する。小さいｎw（例えば、ｎw＝２）の場合には、計算コストはネットワーク通信コストと比較して小さい。大域的に最適なワーキング・セットのインデックスｉ，ｊは、符号１１２２に示すように、ローカル・マシン１１０４に通信される。なお、大域的に最適なワーキング・セットの選択は、大域的最適に速く収束するために重要である。実験によれば、各ローカル・マシンのローカル・データにもとづいて各ローカル・マシンが最適化を行い、その後に結果を集約するよりも、ネットワーク・マシン１１０２においてすべての勾配の大域的なビューに基づいて最適化を行うことの方がより有効であることが、示されている。
【００５０】
ステップ１１１８において、図５Ａのステップ５０６に関連してすでに説明したように、グローバル・ワーキング・セットが最適化される。ステップ１１１８における最適化は、カーネル行列要素Ｋ(ｘi，ｘi)、Ｋ(ｘj，ｘi)、Ｋ(ｘi，ｘj)，Ｋ(ｘj，ｘj)を必要とする。しかしながら、上述した実施形態とは異なり、本実施形態では、ローカル・マシン１００２，１００４のそれぞれは訓練データの一部分のみを含んでおり、したがって、ローカル・マシンは、必要なカーネル行列要素を決定するために必要とされるデータを有していない。図１２に示すように、マシン１２０２は、トレーニング・データ要素ｘjを有しているが要素ｘiを有していない。また、マシン１２０４は、データ要素ｘiを有しているが要素ｘjを有していない。したがって、符号１１２２に示すように、ローカル・マシンの間でトレーニング・データ要素ｘi，ｘjの転送が必要である。これは図１２にも示されている。図１２において、マシン１２０２がトレーニング・データ要素ｘjを送出しトレーニング・データ要素ｘiを受け取ることが示され、マシン１２０４がトレーニング・データ要素ｘiを送出しトレーニング・データ要素ｘjを受け取ることが示されている。これは、通信オーバヘッドを大きくすることを暗示するように思われるおそれがあるが、このオーバヘッドが大きくないことがシミュレーションによって示されており、このオーバヘッドはｌｏｇ (ｐ)に比例する。
【００５１】
ここで図１１Ａに戻り、必要な訓練データ項目がローカル・マシンのそれぞれに転送されると、ステップ１１１８においてカーネル行列要素Ｋ(ｘi，ｘi) １２２０，Ｋ(ｘj，ｘi) １２２２，Ｋ(ｘi，ｘj) １２２４，Ｋ(ｘj，ｘj)１ ２２６をローカル・マシンにより計算することができる。次に、集合全部の勾配を更新する必要がある。ここでもローカル・マシン１２０２，１２０４は必要なトレーニング・データ要素を含んでいるから、ステップ１１２０において各ローカル・マシンは自身の勾配の集合を更新することができる。上述のように、本発明による原理によれば、ローカル・マシン１２０２，１２０４のそれぞれは、カーネル行列のサブセットのみを蓄積する。したがって、カーネル要素Ｋ(ｘi，ｘk)，Ｋ(ｘj，ｘk)に関して、図１２にそれぞれ列１２２８，１２３０として示すように、ローカル・マシン１２０２は（ｋ＝ｌｏ1，…，ｈｉ1）に対してこれらの要素を計算する。ローカル・マシン１２０４は、図１２にそれぞれ列１２３２，１２３４として示すように、（ｋ＝ｌｏ2，…，ｈｉ2）に対してこれらの要素を計算する。勾配を更新すると、最適化ステップ（１１１８）と勾配更新ステップ（１１２０）を行うためにローカル・マシンが受け取った訓練データ・ベクトルｘi及びｘjは、このようなデータ要素が本来は割り当てられなかったローカル・マシンから除去してもよい。これは、疑似コードでは符号１１５２として表されている。例えば、この除去手順は、データ要素ｘiをマシン１２０２から、データ要素ｘjをマシン１２０４から除去する。ステップ１１１０の収束テストが満たされると、この方法は終了する。
【００５２】
ここでも本発明による利点によれば、ローカル・マシンのそれぞれは、カーネル行列の一部分を計算し蓄積する必要があるだけである。ローカル・マシン１２０２は部分１２０８を計算し蓄積し、ローカル・マシン１２０４は部分１２１０を計算し蓄積する。カーネル行列の計算と蓄積は（計算リソースに関して）最もコストを要する機能の１つであるから、分散されたローカル・マシンにこれらの機能を分散することは、著しい処理の最適化をもたらす。図１１Ａ、図１１Ｂ及び図１２を用いて説明した本実施形態の利点は、カーネル行列、訓練データ、計算及び通信が、ローカル・マシンの間で全体として均一に分散されることである。
【００５３】
本明細書において説明される実施形態の計算及び通信の一般的なモデリングを以下の示す。このアルゴリズムの計算上の過酷な部分は、勾配の更新である。最適化においてαjが変化すれば、各マシンはそのそれぞれの勾配を計算しなければならない。
【００５４】
【数６】
2007095069.tif 000008
【００５５】
１回の反復に対する更新を計算するために必要とする時間Ｔcは、次式により近似できる。
【００５６】
【数７】
2007095069.tif 000009
【００５７】
これは、カーネル計算がすべての他の計算に対して支配的であってｄ回の演算を必要とすることと、合理的な近似、例えばＲＢＦ（動径基底関数）あるいは多項式カーネルに対して２つのベクトルの内積が計算されることと、ｄが大きいこと、を仮定している。
【００５８】
１回の反復に対する通信において必要とされるものは、次のワーキング・セットを決定するための各マシンからｎw個の要素と、勾配の更新のための各マシンに対する最大ｎt＝ｎw＊ｄ個の要素である。
【００５９】
２つのプロセッサの間でｎt個の要素を通信するため要する時間ｔtは、次式で与えられる。
【００６０】
【数８】
2007095069.tif 000010
【００６１】
したがって、勾配を収集しデータを分配することを含む合計通信時間Ｔtは、（勾配の更新に対するデータの分配に一斉同報（ブロードキャスト）を使用すると仮定して）次式で与えられる。
【００６２】
【数９】
2007095069.tif 000011
【００６３】
これは、オーダーがＯ(ｌｏｇ (ｐ))で表されるプロセッサ数に対する有利なスケーリング(scaling)を示している。一斉同報を行う機能を備えていない場合には、式(7)の第２項と第３項にはｌｏｇ (ｐ)で乗算されるが、これはスケーリングのオーダーを変えない。カーネル値のキャッシングの効果は、式(5)を次式で置換することによりモデル化できる。
【００６４】
【数１０】
2007095069.tif 000012
【００６５】
ここで、γは平均のキャッシュ・ヒット率、すなわち、カーネル値への要求（リクエスト）のうちキャッシュから満足し得るものの割合である。
【００６６】
実際のカーネル関数が知られている場合にのみ決定できる若干の定数因子を無視しているために、これらの式は、計算と通信のための時間を正確には予測しない。しかし、これらの式は、時間見積もりを通常支配する項目のスケーリングを示している。並列化の視点からは、通信時間ＴtがＯ(ｌｏｇ (ｐ))であり計算時間ＴcがＯ(１／ｐ)であることは重要であって、多数のプロセッサの場合に対して本発明の原理が有用であることを示している。さらに、メモリ必要量もＯ(１／ｐ)に比例し、その結果、多くの場合、超線形加速(superlinear acceleration)に導く高いキャッシュ・ヒット率γを得る。
【００６７】
制約要因は、プロセッサ間の一定の通信オーバヘッドｔ1であり、これは、例えば、０．０５〜０．ｌｍｓとすることができる。計算時間が少なくなると、定数項、すなわち式(7)のｌｏｇ (ｐ)＊ｔ1が支配的になってくる。すなわち非常に多数のマシンの場合に対しては、その各々の計算が時間的に通信のレイテンシー（待ち時間）に匹敵するようになってくる。その点以上では、マシンの数をさらに増加しても、速度はそれ以上には改善されない。式(5)〜(8)は、ｎwが小さいかどうか、最適化のための計算が無視し得るかどうかについて、合理的な推定を提供する。通常、ｎw＜１００であるｎwが使用可能であり、その場合には、この簡略化が正当とされる。
【００６８】
上述した所要のネットワーク通信を実現するためには、さまざまな可能性があることを当業者は認識するであろう。さらに詳細には、符号９１６（図９）及び符号１１１６（図１１）に示すように、ローカル・マシンはそのｎw個の最大勾配をネットワークに送信し、ステップ９０８（図９）及びステップ１１０８（図１１）において、グローバル・ワーキング・セットが選択される。単純な実施形態においては、グローバル・ワーキング・セットを決定するために、最大勾配の決定のための単一のネットワーク・マシンに最大勾配を送ることができる。しかし、さらに処理を最適化するために、より効率的なネットワーク通信を、さまざまな実施形態で実現することができる。
【００６９】
図１３は、そのような１つの実施形態を示し、最大勾配を選択するために複数のネットワーク・ノードが使用されている。ローカル・マシンのそれぞれは、符号１３０２〜１３１６のハッチングが付された円として表されている。図１３のネットワーク・アーキテクチャを利用する実施形態では、ローカル・マシン１３０２〜１３０６のそれぞれは、その最大勾配を、次に高いレベルのネットワーク・ノードに送信する。ローカル・マシン１３０２，１３０４は、ネットワーク・ノード１３１８にそれらの最大勾配を送信し、ローカル・マシン１３０６，１３０８は、ネットワーク・ノード１３２０にそれらの最大勾配を送信し、ローカル・マシン１３１０，１３１２は、ネットワーク・ノード１３２２にそれらの最大勾配を送信し、ローカル・マシン１３１４，１３１６は、ネットワーク・ノード１３２４にそれらの最大勾配を送信する。順番に、ネットワーク・ノード１３１８，１３２０，１３２２，１３２４のそれぞれは、受信した勾配についてのｎw個の最大勾配を決定し、次いで、決定した最大勾配を次にレベルが高いネットワーク・マシンに送信する。ネットワーク・マシン１３１８，１３２０は決定した最大勾配をネットワーク・マシン１３２６に送信し、ネットワーク・マシン１３２２，１３２４は決定した最大勾配をネットワーク・マシン１３２８に送信する。最後に、ネットワーク・マシン１３２６，１３２８は受信した勾配の最大勾配を決定し、トップ・レベルのネットワーク・マシン１３３０に決定した最大勾配を送信する。次いで、ネットワーク・マシン１３３０は、その受信した勾配についてのｎw個の最大勾配を決定する。
【００７０】
次に、ワーキング・セット内のｎw個のベクトル（図１１Ａ及び図１１Ｂのアルゴリズムが使用されていれば、ｎw個のベクトルのベクトルに加えてワーキング・セットのｎw個のデータ・ベクトルも）が、ネットワーク・マシンからローカル・マシンに一斉同報（ブロードキャスト）される。さらに詳しくは、ネットワーク・マシン１３３０は、ネットワーク・マシン１３２６，１３２８にインデックスを送信する。ネットワーク・マシン１３２６は、ネットワーク・マシン１３１８，１３２０にインデックスを送信する。ネットワーク・マシン１３２８は、ネットワーク・マシン１３２２，１３２４にインデックスを送信する。ネットワーク・マシン１３１８は、ローカル・マシン１３０２，１３０４にインデックスを送信する。ネットワーク・マシン１３２０は、ローカル・マシン１３０６，１３０８にインデックスを送信する。ネットワーク・マシン１３２２は、ローカル・マシン１３１０，１３１２にインデックスを送信する。ネットワーク・マシン１３２４は、ローカル・マシン１３１４，１３１６にインデックスを送信する。したがって、本実施形態によれば、最大値を有する勾配は、トップ・レベルのネットワーク・マシンから中間のネットワーク・マシンを介してローカル・マシンまでの、結果の階層的な一斉同報に加えて、ネットワーク・マシンの木構造を使用して決定される。
【００７１】
図１４は、最大勾配を選択するために複数のネットワーク・ノードが使用される、他の実施形態を示す図である。ここでも、ローカル・マシンのそれぞれは、ハッチングが付された円１４０２〜１４１６として表されている。図１４に示す実施形態は、最大勾配の決定に関しては、図１３に示すものと同じである。しかしながら、（図１３で行われたような）階層的な方法で中間のネットワーク・マシンを介してインデックスをローカル・マシンに一斉同報で戻す代わりに、図１４に示す実施形態では、トップ・レベルのネットワーク・マシン１４３０が、ローカル・マシン１４０２〜１４１６のそれぞれにインデックスを直接送信する。
【００７２】
図１５は、ネットワーク通信のための他の実施形態を示す。この実施形態においては、各マシン（グラフ内のハッチングが付されたノードにより表す）は、そのワーキング・セットを隣接ノードに送信し、次いで、隣接ノードから受け取った２個のワーキング・セットを使用して、各ノードは、最良のｎw個のサンプルを新しいワーキング・セットとして計算する。次に、各マシンは、この新しいワーキング・セットをその２番目に近い隣接ノードに送信し、再び各ノードは、受け取った２つのワーキング・セットを使用して、新しいワーキング・セットを計算する。このプロセスは、各々の連続した反復の間に、データを交換するマシンの間隔を１つずつ増加して、繰り返される。例えば、マシン１５０２を考える。１回目の反復の間に、マシン１５０２は、そのワーキング・セットをマシン１５０４，１５０６を送り、マシン１５０４，１５０６からワーキング・セットを受け取るでろう。次に、マシン１５０２は、マシン１５０４から受け取ったワーキング・セットと、マシン１５０６から受け取ったワーキング・セットとを使用して、最良のｎw個のサンプルを新しいワーキング・セットとして計算するであろう。２回目の反復の間に、マシン１５０２は、その最も最近に計算したワーキング・セットをマシン１５０８，１５１０に送り、最も最近に計算されたワーキング・セットをマシン１５０８，１５１０から受け取るであろう。次に、マシン１５０２は、マシン１５０８から受け取ったワーキング・セットと、マシン１５１０から受け取ったワーキング・セットとを使用して、新しいワーキング・セットとして最良のｎw個のサンプルを計算するであろう。このプロセスは、各々の連続した反復の間に、データを交換するマシンの間隔を１つずつ増加して、継続する。
【００７３】
当業者は、本明細書において説明されているさまざまなフローチャートとブロック図が、本発明によるさまざまな実施形態の機能的なステップと機能的な要素を表していることを認識するであろう。実際のハードウェアの実施形態は変化してもよく、本発明によるさまざまな実施形態をいかに実現するかは、本明細書の説明から当業者には容易に明白であろう。例えば、本明細書において説明した機能は、本明細書において説明した機能を定めるコンピュータ・プログラム・コードを実行するプロセッサを含むコンピュータにより実行することができる。
【００７４】
このようなコンピュータは、この技術分野において公知であり、例えば、公知のコンピュータ・プロセッサ、メモリ・ユニット、記憶装置、コンピュータ・ソフトウェア、及び他の構成部品を使用して、実現することができる。図１６は、このようなコンピュータの高レベルでの構成を示すブロック図である。コンピュータ１６０２は、このような動作を定めるコンピュータ・プログラム命令を実行することによりコンピュータ１６０２の総合的な動作を制御するプロセッサ１６０４を含んでいる。コンピュータ・プログラム命令は、記憶装置１６１２（例えば、磁気ディスク）に蓄積することが可能であり、コンピュータ・プログラム命令の実行が要求された場合に、メモリ１６１０にロードされる。したがって、コンピュータ１６０２の動作は、メモリ１６１０及び／または記憶装置１６１２に蓄積されたコンピュータ・プログラム命令により定められ、コンピュータ１６０２は、コンピュータ・プログラム命令を実行するプロセッサ１６０４により制御される。さらにコンピュータ１６０２は、ネットワークを介して他の装置と通信するための、１つまたは複数のネットワーク・インタフェース１６０６を有する。さらにコンピュータ１６０２は、コンピュータ１６０２と利用者とのインタラクションを可能にする装置（例えば、ディスプレイ、キーボード、マウス、スピーカ、ボタンなど）を表す入力／出力（Ｉ／Ｏ）１６０８を含んでいる。実際のコンピュータの具体例には他の構成部品が含まれていること、図１６は単に説明のためのこのようなコンピュータの構成要素の一部の高レベル表現であることを当業者は理解するであろう。さらに、本明細書において説明した機能は、ハードウェア、ソフトウェア、及びハードウェアとソフトウェアのさまざまな組み合わせを使用して実現できることを、当業者は理解するであろう。
【００７５】
前述の詳細な説明は、あらゆる点で例示であって制限例ではないことが理解されるべきであり、本明細書において開示した本発明の範囲は、この詳細な説明から決定されるべきではなく、特許法により許容される最大限に応じて解釈されるように、特許請求の範囲から決定されるべきである。本明細書において示し説明した実施形態は本発明による原理の実例に過ぎず、さまざまな修正が本発明の範囲と技術思想から逸脱することなく当業者により実現可能であることが、理解されるべきである。当業者は、本発明の範囲と技術思想から逸脱することなく、さまざまな他の特徴の組み合わせを実現することが可能であろう。
【図面の簡単な説明】
【００７６】
【図１】２クラスのデータ集合を示す図である。
【図２】サポート・ベクトルにより定められた最大マージン超平面を使用して分類された２クラスのデータ集合を示す図である。
【図３】データが直線的に分離できるように低次元データを高次元空間へマッピングすることを示す図である。
【図４】データが直線的に分離できるように低次元データを高次元空間へマッピングすることを示す図である。
【図５Ａ】訓練データのワーキング・セットへの分割（セグメンテーション）を使用する基本的なＳＶＭ最適化アルゴリズムを示すフローチャートである。
【図５Ｂ】図５Ａに示すアルゴリズムの疑似コードを示す図である。
【図６】図５Ａ及び図５Ｂに示すアルゴリズムにおけるデータ項目を例示する略図である。
【図７】図５Ａ及び図５Ｂに示すアルゴリズムの主要な計算及び記憶ブロックを示すブロック図である。
【図８】図７の機能ブロックを垂直にスライスした分割を示す図であって、スライスの各々は異なるマシンにマップされていることが示されている。
【図９Ａ】本発明の実施の一形態によるアルゴリズムを示すフローチャートである。
【図９Ｂ】図９Ａに示すアルゴリズムの疑似コードを示す図である。
【図１０】図９Ａ及び図９Ｂに示すアルゴリズムにおけるデータ項目を例示する略図である。
【図１１Ａ】本発明の別の実施形態によるアルゴリズムを示すフローチャートである。
【図１１Ｂ】図１１Ａに示すアルゴリズムの疑似コードを示す図である。
【図１２】図１１Ａ及び図１１Ｂに示すアルゴリズムにおけるデータ項目を例示する略図である。
【図１３】本発明のさまざまな実施形態によってデータを通信するための論理的なネットワーク・アーキテクチャを示す図である。
【図１４】本発明のさまざまな実施形態によってデータを通信するための論理的なネットワーク・アーキテクチャを示す図である。
【図１５】本発明のさまざまな実施形態によってデータを通信するための論理的なネットワーク・アーキテクチャーを示す図である。
【図１６】本発明の実施形態における処理ノードを実現するために使用することができるコンピュータを高レベルで示すブロック図である。
【符号の説明】
【００７７】
２０２，２０４，２０６    サポート・ベクトル
２０８，４０４    超平面
６０２，１００６    訓練データ集合
６０４    カーネル行列
１６０２    コンピュータ
１６０４    プロセッサ
１６０６    ネットワーク・インタフェース
１６０８    入力／出力（Ｉ／Ｏ）
１６１０    メモリ
１６１２    記憶装置
【図１】
2007095069.tif 000013
【図２】
2007095069.tif 000014
【図３】
2007095069.tif 000015
【図４】
2007095069.tif 000016
【図５Ａ】
2007095069.tif 000017
【図５Ｂ】
2007095069.tif 000018
【図６】
2007095069.tif 000019
【図７】
2007095069.tif 000020
【図８】
2007095069.tif 000021
【図９Ａ】
2007095069.tif 000022
【図９Ｂ】
2007095069.tif 000023
【図１０】
2007095069.tif 000024
【図１１Ａ】
2007095069.tif 000025
【図１１Ｂ】
2007095069.tif 000026
【図１２】
2007095069.tif 000027
【図１３】
2007095069.tif 000028
【図１４】
2007095069.tif 000029
【図１５】
2007095069.tif 000030
【図１６】
2007095069.tif 000031