(57)【特許請求の範囲】
【請求項１】
検索クエリに基づき文書の集合を検索した検索結果をランキングするためのランキング関数に関するパラメータを学習する装置であって、
検索クエリに対する検索結果の各文書について求められた特徴値及び前記検索クエリに対する適合度を含む訓練データの集合を記憶した訓練データ記憶手段と、
前記ランキング関数に関するパラメータを学習するＮ個（Ｎは２以上の自然数である)の計算ノードと、
前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てる分割手段と、を含み、
前記Ｎ個の計算ノードの各々は、
前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新する局所更新手段と、
前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記局所的なパラメータを取得する同期手段と、
前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータ及び前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新する大域更新手段と、
前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返す収束判定手段と
を含むランキング関数学習装置。
【請求項２】
前記局所更新手段は、前記分割手段によって割り当てられた前記訓練データの部分集合と、前回更新されたラグランジュ未定乗数、前記局所的なパラメータ、及び前記大域的なパラメータとを用いて、予め定められた目的関数の値を最適化するように、前記ラグランジュ未定乗数及び前記局所的なパラメータを更新し、
前記同期手段は、前記局所更新手段によって更新された前記ラグランジュ未定乗数及び前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記ラグランジュ未定乗数及び前記局所的なパラメータを取得し、
前記大域更新手段は、前記同期手段によって取得した前記他の計算ノードの前記ラグランジュ未定乗数及び前記局所的なパラメータ、並びに前記局所更新手段によって更新された前記ラグランジュ未定乗数及び前記局所的なパラメータに基づいて、前記目的関数の値を最適化するように、前記大域的なパラメータを更新する請求項１記載のランキング関数学習装置。
【請求項３】
前記訓練データ記憶手段に前記訓練データの集合が追加された場合に、前記ランキング関数に関するパラメータを学習する追加の計算ノードを更に含み、
前記追加の計算ノードは、
前記追加された前記訓練データの集合に基づいて、前記局所的なパラメータを更新する局所更新手段と、
前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから前記局所的なパラメータを取得する同期手段と、
前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータに基づいて、前記大域的なパラメータを更新する大域更新手段と、
前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返す収束判定手段とを含み、
前記計算ノードの各々の同期手段は、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノード及び前記追加の計算ノードに通知すると共に、前記他の計算ノード及び前記追加の計算ノードから通知された前記局所的なパラメータを取得する請求項１又は２記載のランキング関数学習装置。
【請求項４】
検索クエリに対する検索結果の各文書について求められた特徴値及び前記検索クエリに対する適合度を含む訓練データの集合を記憶した訓練データ記憶手段と、Ｎ個（Ｎは２以上の自然数である)の計算ノードと、分割手段とを含む、検索クエリに基づき文書の集合を検索した検索結果をランキングするためのランキング関数に関するパラメータを学習する装置におけるランキング関数学習方法であって、
前記分割手段によって、前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てるステップと、
前記Ｎ個の計算ノードの各々によって、前記ランキング関数に関するパラメータを学習するステップとを含み、
前記計算ノードによって学習するステップは、
局所更新手段によって、前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新するステップと、
同期手段によって、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記局所的なパラメータを取得するステップと、
大域更新手段によって、前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータ及び前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新するステップと、
収束判定手段によって、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返すステップと
を含むランキング関数学習方法。
【請求項５】
前記局所更新手段によって更新するステップは、前記分割手段によって割り当てられた前記訓練データの部分集合と、前回更新されたラグランジュ未定乗数、前記局所的なパラメータ、及び前記大域的なパラメータとを用いて、予め定められた目的関数の値を最適化するように、前記ラグランジュ未定乗数及び前記局所的なパラメータを更新し、
前記同期手段によって通知及び取得するステップは、前記局所更新手段によって更新された前記ラグランジュ未定乗数及び前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記ラグランジュ未定乗数及び前記局所的なパラメータを取得し、
前記大域更新手段によって更新するステップは、前記同期手段によって取得した前記他の計算ノードの前記ラグランジュ未定乗数及び前記局所的なパラメータ、並びに前記局所更新手段によって更新された前記ラグランジュ未定乗数及び前記局所的なパラメータに基づいて、前記目的関数の値を最適化するように、前記大域的なパラメータを更新する請求項４記載のランキング関数学習方法。
【請求項６】
追加の計算ノードによって、前記訓練データ記憶手段に前記訓練データの集合が追加された場合に、前記ランキング関数に関するパラメータを学習するステップを更に含み、
前記追加の計算ノードによって学習するステップは、
局所更新手段によって、前記追加された前記訓練データの集合に基づいて、前記局所的なパラメータを更新するステップと、
同期手段によって、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから前記局所的なパラメータを取得するステップと、
大域更新手段によって、前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータに基づいて、前記大域的なパラメータを更新するステップと、
収束判定手段によって、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返すステップとを含み、
前記計算ノードの各々の同期手段によって通知及び取得するステップは、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノード及び前記追加の計算ノードに通知すると共に、前記他の計算ノード及び前記追加の計算ノードから通知された前記局所的なパラメータを取得する請求項４又は５記載のランキング関数学習方法。
【請求項７】
コンピュータを、請求項１〜請求項３の何れか１項記載のランキング関数学習装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランキング関数学習装置、方法、及びプログラムに係り、特に、検索クエリに基づいて検索して得られた検索結果（文書の集合）に対して提示順序を決定するランキング関数を学習するランキング関数学習装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
ウェブ検索システムは、入力された検索要求単語集合(クエリ)に適合する文書集合を、被検索対象となる全文書集合から抽出する問題とみなすことができる。ただし、近年のウェブ検索システムは、クエリに適合する文書集合を抽出するというよりは、クエリとの適合度がより高い文書を、より上位に表示するランキング問題とみなしてシステムを構築している。つまり、検索システムにクエリが与えられると、図１２に示すように、検索対象となる全文書、或いは、クエリを含む全文書に対して、クエリと文書の適合度に則した「検索スコア」を計算し、検索スコアにしたがって文書を降順に並べて表示することによって検索結果を提示する。
【０００３】
クエリに対する各文書の適合度は、TF-IDFのようなクエリ頻度に基づくスコアや、PageRankのようなリンク解析に基づくスコアなど、多数の要因を用いて計算される。ここでは、これらの要因を「ランキング要因」と呼び、多数のランキング要因から提示順序を決定する処理を「ランキング処理」と呼ぶこととする。
【０００４】
人間の直観に合った検索文書のランキング処理を実現する方法として、人手によって作成した訓練データを用いてランキング処理装置を構築する技術が、これまでに多数提案されている（例えば、非特許文献１）。訓練データとは、想定されるクエリと、そのクエリに適合する文書集合とのペアで構成されており、各文書には、そのクエリとの適合度を示すラベルが人手により付けられている。このとき、クエリと各文書間の適合度を計算する際に利用するランキング要因の数がD個とすると、各文書は、各ランキング要因に基づくスコアをD個並べたD次元のベクトルで表現することができる。これに従い、ここでは、各文書をz= (z1, . . . , zD)のベクトルで表し、文書の「特徴ベクトル」と呼ぶ。ただし、ziはi番目のランキング要因のスコアである。クエリIDがi番目で、そのクエリに適合する文書集合内の文書番号がj番目の文書の特徴ベクトルをzi,jとする。訓練データの例を図１３に示す。
【０００５】
上記図１３において、それぞれの行が、あるクエリに対する検索結果文書の特徴表現と適合度を表している。適合度が大きい方が、当該クエリに対してより適切な結果であることを示している。注意点として、適合度は、クエリと文書のペアに対して付与されるため、たとえ同じ文書であっても、クエリによって異なる適合度が付与される。適合度は、例えば被験者が判断し、付与した多段階(例えば5段階)の値を用いる。
【０００６】
あたえられた訓練データから、ランキング処理装置を構築する従来技術について述べる。ここでの目標は、あたえられた訓練データの適合度と一致したランキングをあたえる関数を構築することになる。ここで、ランキングをあたえる関数を「ランキング関数」と呼ぶ。つまり、訓練データ中のクエリがあたえられたときに、クエリに関する文書集合の全順序関係を訓練データ通りにあたえる関数である。ただし、実際には全順序関係を決定する関数を構築するのは計算量の観点でコストが高くなる。そこで、各クエリ内の文書集合に対して訓練データに付与された適合度の違う２つの文書の組み合わせを可能な全ての組み合わせで作成し、２つの文書のどちらがより適合度が高いかという観点でランキング関数を構築する方法がよく用いられる（上記の非特許文献１を参照)。よって、実際に訓練データを利用する際には、訓練データは(ym, xm)の形式で利用される。ただし、図１４に示すように、クエリIDがi番目で適合度の異なるある文書のペア(zi,j ,zi,k)に対し、ペアにした文書で便宜上左側の文書の適合度が高いときに１、右の文書が高いときに−1となる変数をymとし、各文書を特徴ベクトル表現にしたものの差分ベクトルをxmとする(つまりxm=zi,j−zi,k)。
【０００７】
ここで，各ランキング要因に対する重み(信頼度)を表すパラメータをwとする。また、訓練データ中の文書ペアの総数をMとする。このとき、上記の非特許文献１で提案されているRankSVM法では、以下の（１)式で示される最適化問題の解を用いてランキング関数を構築する。
【０００８】
【数１】
0005734820.tif 000002
【０００９】
ただし、w・xmはwとxmの内積を表す。
【００１０】
この時、生成されるランキング関数は、パラメータベクトル^wにより表現される。この^wは、訓練データに基づいて得られた、ランキングを決定する各要因に対する信頼度に相当する値となっている。よって、ランキング関数f()は以下の（２）式で表わされる。
【００１１】
【数２】
0005734820.tif 000003
【００１２】
ランキング処理自体は、上記（２）式のランキング関数の出力値に基づいて文書を降順に並べることで行われる。
【００１３】
検索システムでは検索要求が多種多様なため、どのようなクエリに対しても精度良くランキングを提示するランキング関数を生成するのは難しい。少しでも精度の高いランキング関数を生成するためには、より多くの訓練データを用いてランキング関数を構築することが望まれる。よって、ランキング関数生成処理では、多くの訓練データを効率良く扱う枠組が必要となる。
【００１４】
訓練データの大規模化に対応するための方法は、これまでいくつか提案されている。基本的には、分散並列処理により対応する方法が現在主流である。複数の計算ノードに対して、分割した部分訓練データを割り振り、個々の計算ノードは独立に、割り当てられたデータのみを利用してランキング関数を構築する。その後、できあがった複数のランキング関数をそれぞれの方法で結合するというのが現在の使われている主な方法である（例えば、非特許文献２、３、４）
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】Thorsten Joachims. Optimizing search engines using clickthrough data. In Proc. of the eighth ACM international conference on Knowledge Discovery and Data mining (KDD '02), pages 133-142, 2002.
【非特許文献２】Krysta M. Svore and Christopher J.C. Burges. Large-scale learning to rank using boosted decision trees. In  Ron Bekkerman, Misha Bilenko, and John Langford, editors, Scaling Up Machine Learning: Parallel and  Distributed Approaches. Cambridge Univ. Press, May 2011.
【非特許文献３】Stephen Tyree, Kilian Wienberger, Kunal Agrawal, and Jennifer Paykin. Parallel boosted regression trees for  web search ranking. In WWW, 2011.
【非特許文献４】Jerry Ye, Jyh-Herng Chow, Jiang Chen, and Zhaohui Zheng. Stochastic gradient boosted distributed decision  trees. In CIKM, 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記の非特許文献２〜４で使われている方法は、単純な結合方法であるため、訓練データ全体を用いて構築したランキング関数より精度が落ちることがほとんどである。つまり、分散処理により高速化はできているが、精度を犠牲にしている面がある。
【００１７】
本発明は、上記の事情を鑑みてなされたもので、ランキング精度の低下を抑制して、高速にランキング関数を学習することができるランキング関数学習装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記の目的を達成するために第１の発明に係るランキング関数学習装置は、検索クエリに基づき文書の集合を検索した検索結果をランキングするためのランキング関数に関するパラメータを学習する装置であって、検索クエリに対する検索結果の各文書について求められた特徴値及び前記検索クエリに対する適合度を含む訓練データの集合を記憶した訓練データ記憶手段と、前記ランキング関数に関するパラメータを学習するＮ個（Ｎは２以上の自然数である)の計算ノードと、前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てる分割手段と、を含み、前記Ｎ個の計算ノードの各々は、前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新する局所更新手段と、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記局所的なパラメータを取得する同期手段と、前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータ及び前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新する大域更新手段と、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返す収束判定手段とを含んで構成されている。
【００１９】
第２の発明に係るランキング関数学習方法は、検索クエリに対する検索結果の各文書について求められた特徴値及び前記検索クエリに対する適合度を含む訓練データの集合を記憶した訓練データ記憶手段と、Ｎ個（Ｎは２以上の自然数である)の計算ノードと、分割手段とを含む、検索クエリに基づき文書の集合を検索した検索結果をランキングするためのランキング関数に関するパラメータを学習する装置におけるランキング関数学習方法であって、前記分割手段によって、前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てるステップと、前記Ｎ個の計算ノードの各々によって、前記ランキング関数に関するパラメータを学習するステップとを含み、前記計算ノードによって学習するステップは、局所更新手段によって、前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新するステップと、同期手段によって、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記局所的なパラメータを取得するステップと、大域更新手段によって、前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータ及び前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新するステップと、収束判定手段によって、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返すステップとを含む。
【００２０】
第１の発明及び第２の発明によれば、前記分割手段によって、前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てる。前記Ｎ個の計算ノードの各々によって、前記ランキング関数に関するパラメータを学習する。
【００２１】
このとき、各計算ノードでは、局所更新手段によって、前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新する。同期手段によって、前記局所更新手段によって更新された前記局所的なパラメータを、他の計算ノードに通知すると共に、前記他の計算ノードから通知された前記局所的なパラメータを取得する。大域更新手段によって、前記同期手段によって取得した前記他の計算ノードの前記局所的なパラメータ及び前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新する。収束判定手段によって、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、前記局所更新手段による更新、前記同期手段による通知及び取得、並びに前記大域更新手段による更新を繰り返す。
【００２２】
このように、各計算ノードにおいて、割り当てられた訓練データの部分集合に基づいて局所的なパラメータを更新し、他の計算ノードから取得した局所的なパラメータを用いて、大域的なパラメータを更新することを収束するまで繰り返すことにより、ランキング精度の低下を抑制して、高速にランキング関数を学習することができる。
【００２３】
第３の発明に係るランキング関数学習装置は、検索クエリに基づき文書の集合を検索した検索結果をランキングするためのランキング関数に関するパラメータを学習する装置であって、検索クエリに対する検索結果の各文書について求められた特徴値及び前記検索クエリに対する適合度を含む訓練データの集合を記憶した訓練データ記憶手段と、前記ランキング関数に関するパラメータを学習するＮ個（Ｎは２以上の自然数である)の計算ノードと、前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てる分割手段と、大域更新手段と、収束判定手段とを含み、前記Ｎ個の計算ノードの各々は、前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新する局所更新手段を含み、前記大域更新手段は、前記全ての計算ノードの前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新する手段であり、前記収束判定手段は、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、各計算ノードの前記局所更新手段による更新及び前記大域更新手段による更新を繰り返す手段であることを特徴とする。
【００２４】
第４の発明に係るランキング関数学習方法は、検索クエリに対する検索結果の各文書について求められた特徴値及び前記検索クエリに対する適合度を含む訓練データの集合を記憶した訓練データ記憶手段と、Ｎ個（Ｎは２以上の自然数である)の計算ノードと、分割手段と、大域更新手段と、収束判定手段とを含む、検索クエリに基づき文書の集合を検索した検索結果をランキングするためのランキング関数に関するパラメータを学習する装置におけるランキング関数学習方法であって、前記分割手段によって、前記訓練データ記憶手段に記憶された前記訓練データの集合を、Ｎ個の部分集合に分割して前記Ｎ個の計算ノードに割り当てるステップと、前記Ｎ個の計算ノードの各々によって、前記ランキング関数に関するパラメータを学習するステップと、前記大域更新手段によって更新するステップと、前記収束判定手段によって判定するステップと、を含み、前記計算ノードによって学習するステップは、局所更新手段によって、前記分割手段によって割り当てられた前記訓練データの部分集合に基づいて、前記ランキング関数に関するパラメータであって、かつ、局所的なパラメータを更新するステップを含み、前記大域更新手段によって更新するステップは、前記全ての計算ノードの前記局所更新手段によって更新された前記局所的なパラメータに基づいて、前記ランキング関数に関するパラメータであって、かつ、各計算ノードの前記局所的なパラメータを一致させるための大域的なパラメータを更新するステップであり、前記収束判定手段によって判定するステップは、前記大域的なパラメータの値が収束したか否かを判定し、前記大域的なパラメータの値が収束したと判定するまで、各計算ノードの前記局所更新手段による更新及び前記大域更新手段による更新を繰り返すステップであることを特徴とする。
【００２５】
第５の発明に係るプログラムは、コンピュータを、上記のランキング関数学習装置の各手段として機能させるためのプログラムである。
【発明の効果】
【００２６】
以上説明したように、本発明のランキング関数学習装置、方法、及びプログラムによれば、各計算ノードにおいて、割り当てられた訓練データの部分集合に基づいて局所的なパラメータを更新し、他の計算ノードから取得した局所的なパラメータを用いて、大域的なパラメータを更新することを収束するまで繰り返すことにより、ランキング精度の低下を抑制して、高速にランキング関数を学習することができる、という効果が得られる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施の形態に係るランキング関数学習処理の流れを示す図である。
【図２】本発明の第１の実施の形態に係るランキング関数学習装置の構成を示す概略図である。
【図３】本発明の第１の実施の形態に係るランキング関数学習装置の計算ノードにおけるランキング関数学習処理ルーチンの内容を示すフローチャートである。
【図４】本発明の第１の実施の形態に係るランキング関数学習装置の構成の他の例を示す概略図である。
【図５】本発明の第２の実施の形態に係るランキング関数学習処理の流れを示す図である。
【図６】本発明の第２の実施の形態に係るランキング関数学習装置の構成を示す概略図である。
【図７】本発明の第３の実施の形態に係るランキング関数学習システムの構成を示す概略図である。
【図８】本発明の第３の実施の形態に係る学習制御装置の構成を示す概略図である。
【図９】本発明の第３の実施の形態に係る学習装置の構成を示す概略図である。
【図１０】性能比較結果を示すグラフである。
【図１１】分散並列処理を行った場合の実験結果を示す図である。
【図１２】ランキング処理装置による処理を説明するための図である。
【図１３】訓練データを示す図である。
【図１４】訓練データを示す図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２９】
〔第１の実施の形態〕
＜発明の概要＞
本発明の処理の枠組は、基本的に分散計算環境を想定する。ここでは、図１に示すように、N個の計算ノードがあるとする。つぎに、M個の訓練データをN個に分割する。この時、分割した訓練データのn番目の部分集合をMnと書く。また、各部分集合は重複するデータを持たないと仮定する。つまり、∪nMn =(1, ... ,M)，∩n  Mn =空集合である。
【００３０】
訓練データの集合を分割し、各計算ノードに割り当てた後、各計算ノードは、自分自身に割り当てられた訓練データのみを用い、上記（１）式に示した従来法等を用いてランキング関数を学習する。このとき、n番目の計算ノードで得られるランキング関数で用いられるパラメータをvnとする。このvnは上記（１）式中のwに相当する。本発明の枠組では、各計算ノードは独立にランキング関数で用いるパラメータを学習することができるため、単純計算で学習時間を1/Nに縮減できるという計算量的な利点がある。ただし、vnは部分的な訓練データのみから生成されるため、部分的な情報しか用いることができないという観点で、基本的に訓練データ全体を使って学習したwを用いたランキング関数よりランキング精度は一般的に低くなる、という問題がある。また、独立に得られたvnから最良のvnを選択する方法、或いは、効果的にvnを結合する方法などはこれまで知られていない。
【００３１】
本発明では、各計算ノードで得られたvnは一致しなくてはいけないという制約パラメータwを導入する。この制約を入れることで、部分的なデータのみから生成されるvnは全体で一致しなくてはいけなくなるため、間接的に訓練データ全体の情報を包含した関数を学習することが可能となる。つまり、訓練データ集合を分割することで、ランキング関数の学習時間を短縮する性質を保持したまま、従来と同様に全体の訓練データを使って学習したランキング関数と同じようにランキング精度の高い関数を学習することが可能となる。また、分散計算環境を用いれば訓練データが増えても容易に扱えることから、従来では利用できなかった量の訓練データを用いてランキング関数を構築することができるようになるため、より高精度なランキング関数を学習することが可能となる。本発明の枠組では、ランキング関数に用いるパラメータ^wは、以下の（３）式で示す最適化式を解くことで得られる。
【００３２】
【数３】
0005734820.tif 000004
【００３３】
本発明では、参考文献１（Daniel Gabay and Bertrand Mercier. A dual algorithm for the solution of nonlinear variational problems via finite element approximation. Computers and Mathematics with Applications, 2(1):17 - 40, 1976.）及び参考文献２（Stephen Boyd, Neal Parikh, Eric Chu, Borja Peleato, and Jonathan Eckstein. Distributed optimization and statistical learning via the alternating direction method of multipliers. Foundations and Trends in Machine Learning, 2011.）に記載されたalternating direction method of multipliers (ADMM)と呼ばれる最適化の枠組を用いて上記最適化問題を解く。まず、ADMMの枠組に則って上記（３）式の最適化式を変形し、以下の（４）式に示す目的関数Lρを得る。
【００３４】
【数４】
0005734820.tif 000005
【００３５】
ここで、μnは、上記（４）式の制約をラグランジュ未定乗数法で表現した際のラグランジュ乗数に相当し、ρ/2 ||vn−w||2は最適化の解を効率的に求めるための追加の項である。ρは人手により決定するパラメータでρ>0とする。上記参考文献２に従って、un =μn/ρで上式を置き換える。その結果、上記（４）式は、以下の（５）式に変形される。
【００３６】
【数５】
0005734820.tif 000006
【００３７】
上記（５）式を用いることで、実際の最適化問題は、vn，w，unを順番に繰り返し求めることで最適解が得られることが保証されている。また、後述する第２の実施の形態のように、訓練データが逐次的に増加しても、つまり、計算ノードの個数が増加しても、最終的な最適解^wが得られることが参考文献３（Pedro Forero, Alfonso Cano, and Georgios Giannakis. Consensus-based distributed support vector machines. JMLR, 2010.）により保証される。これらの性質を利用することで、分散処理かつデータの逐次投入によるランキング関数学習処理を行うことが可能となる。
【００３８】
＜システム構成＞
本発明の第１の実施の形態に係るランキング関数学習装置１００は、学習用として与えられた訓練データを入力として受け取り、ランキング関数に関するパラメータを出力する。このランキング関数学習装置１００は、ＣＰＵと、ＲＡＭと、後述するランキング関数学習処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図２に示すように、ランキング関数学習装置１００は、入力部１０と、演算部２０と、出力部３０とを備えている。
【００３９】
入力部１０は、入力された訓練データとして、上記図１４で示した文書のペアによる訓練データを複数受け付ける。各訓練データは、ある検索クエリに対する検索結果文書ペアの複数の特徴値の各々の差分からなる差分ベクトルと、当該検索クエリに対する適合度の大小関係を示す変数とを含む。また、入力される訓練データには、様々な検索クエリに基づく訓練データが含まれる。
【００４０】
また、入力部１０は、人手により入力された計算ノード数Nとパラメータρを受け付ける。
【００４１】
演算部２０は、訓練データ記憶部２１、分割部２２、及びＮ個の計算ノード２３1〜２３Nを備えている。なお、計算ノード２３1〜２３Nのうちの任意の計算ノードを示す場合には、計算ノード２３と称することとする。
【００４２】
訓練データ記憶部２１は、入力部１０により受け付けた大量の訓練データからなる訓練データ集合を記憶する。訓練データ記憶部２１のデータ構造は、上記図１４に示す。
【００４３】
上記図１４に示すように、それぞれの行が、ある検索クエリに対する検索結果文書のペアの文書ＩＤと、ペアにした文書で便宜上左側の文書の適合度が高いときに１、右の文書が高いときに−1となる変数ymと、各文書を各特徴ベクトル表現にしたものの差分ベクトルxmとを表している。
【００４４】
分割部２２は、訓練データ記憶部２１に記憶された訓練データ集合を、Ｎ個の部分集合に分割し、Ｎ個の計算ノード２３1〜２３Nに割り当てる。また、分割部２２は、入力されたパラメータρを、Ｎ個の計算ノード２３1〜２３Nの各々に通知する。
【００４５】
Ｎ個の計算ノード２３1〜２３Nの各々は、分割データ記憶部３１、局所更新部３２、同期部３３、大域更新部３４、及び収束判定部３５を備えている。各Ｎ個の分割データ記憶部３１、局所更新部３２、同期部３３、大域更新部３４、及び収束判定部３５が存在することになるが、同様の機能を有す処理部は同じ番号で表わしている。
【００４６】
分割データ記憶部３１には、計算ノード２３に割り当てられた訓練データ集合の部分集合を記憶する。
【００４７】
局所更新部３２は、分割データ記憶部３１に記憶された訓練データ集合の部分集合を用いて、以下に説明するように、ラグランジュ未定乗数un及び局所的なパラメータvnを更新する。
【００４８】
（ラグランジュ未定乗数unの更新）
最初の処理として、局所更新部３２は、当該計算ノード２３nにおけるラグランジュ未定乗数unを更新する。
【００４９】
wとvnを固定したときunの最適値の方向は、以下の（６）式に示すように、上記（５）式に示す目的関数Lρ(w, vn,un)のunに関する勾配方向である。
【００５０】
【数６】
0005734820.tif 000007
【００５１】
上記（６）式の関係から、以下の（７)式に示す更新式を得る。
【００５２】
【数７】
0005734820.tif 000008
【００５３】
局所更新部３２は、上記（７）式に従って、ラグランジュ未定乗数unを更新する。上記（７）式の更新式は、各計算ノード２３で独立に計算できるため、他の計算ノード２３と通信などを行う必要がない。
【００５４】
（局所的なパラメータvnの更新）
次に、局所更新部３２は、当該計算ノード２３nにおける局所的なパラメータvnを更新する。
【００５５】
反復計算k（kは繰り返し回数を管理する変数）の時点で、unとwを固定したとき各vnの最適解は、以下の（８)式に示すように、上記（５）式に示す目的関数Lρ(w, vn,un)を最小にするvnを見つける問題である。
【００５６】
【数８】
0005734820.tif 000009
【００５７】
定義に従って、局所的なパラメータvnに関係する項のみを取り出すと、以下の（９）式が得られる。
【００５８】
【数９】
0005734820.tif 000010
【００５９】
上記（９）式は、従来法で示したRankSVMにバイアス項(−w+un)を追加したモデルとみなせる。また、バイアス項(−w +un)は、ここでは定数となるので、従来法のRankSVMと同じ方法で解くことができる。また、もし(−w+un)=0なら、RankSVMの式と一致する。つまり、ここの計算ノードでは、あたえられた訓練データの部分集合を使って独立に従来法のRankSVMを用いてパラメータvnを生成することと等価である。
【００６０】
局所更新部３２は、上記（９）式に従って、局所的なパラメータvnを更新する。また、パラメータvnも、unと同様に、各計算ノード２３で独立に更新することができる。
【００６１】
同期部３３は、当該計算ノード２３で今回更新されたunとvnを、自分以外の全ての計算ノード２３iへ通知する。また、同期部３３は、他の計算ノード２３i全てから通知された、今回更新されたuiとviを受け取る。この処理によって、個々の計算ノード２３は全ての計算ノード２３nの持つunとvnの値を取得することができる。
【００６２】
大域更新部３４は、他の計算ノード２３n全てから受け取ったunとvnを使って、以下のように、大域的制約パラメータwを更新する。
【００６３】
unとvnを固定したときwの最適解は、上記（５）式に示す目的関数Lρ(w, vn,un)のwに関する勾配が零ベクトルになる点である。その関係から以下の（１０)式〜（１３）式に示す関係式が得られる。
【００６４】
【数１０】
0005734820.tif 000011
【００６５】
ただし、￣v=ΣNn=1vn/N，￣u=ΣNn=1un/Nである。
【００６６】
上記（１３）式に示す関係式から、反復計算kの時点でのwは以下の（１４）式で求められる。
【００６７】
【数１１】
0005734820.tif 000012
【００６８】
大域的制約パラメータwの更新には、全てのvnとunが必要である。
【００６９】
そこで，大域更新部３４は、取得した全ての計算ノード２３nの持つunとvnの値を用いて、上記（１４）式に従って、大域的制約パラメータwを更新する。
【００７０】
個々の計算ノード２３で独立にwを求める。ここでの注意点として、個々の計算ノード２３は独立でwを求めるが、得られるwは全ての計算ノード２３で一致する。処理方法としては、任意のひとつの計算ノード２３でwを計算し、その後に各計算ノード２３に通知するといった処理を行うようにしてもよい。ただし、その場合には、選択された計算ノード２３の計算が終了し、結果が通知されるまで、それ以外の計算ノードは待機する必要がある。本実施の形態では、個々の計算ノード２３で同じ計算を行う方式をとった場合を例に説明する。
【００７１】
収束判定部３５は、得られた大域的制約パラメータwが収束して最適値になっているか判定する。
【００７２】
二つの小さな正の実数ε1、ε2をあたえ、以下の（１５)式、（１６）式を満たした際に収束したと判定する（参考文献２を参照）。
【００７３】
【数１２】
0005734820.tif 000013
【００７４】
収束判定で、収束していなかった場合は、ｋ=ｋ+1として、局所更新部３２による処理に戻る。収束していると判定された場合は、繰り返し処理を終了する。
【００７５】
この収束判定の処理もwと同様に任意のひとつの計算ノード２３で行い、その結果を全体に通知するようにしてもよい。しかし、同期処理が必要となるため、本実施の形態では、収束判定も全ての計算ノード２３で個別に行い、収束と判定されれば処理を終了する場合を例に説明する。この収束判定も、全ての計算ノードで結果が必ず一致するため、個々に判定をおこなっても結果は同じになる。
【００７６】
収束判定部３５は、収束したと判定されたときに得られた大域的制約パラメータｗを、ランキング関数を構成するパラメータとして出力部３０により出力する。なお、本実施の形態では、任意の一つの計算ノード２３から、大域的制約パラメータｗが出力される場合を例に説明したが、全ての計算ノード２３から、大域的制約パラメータｗが出力されてもよい。また、実際のランキングを生成する際には、従来法と同様に上記（２）式を用いて検索スコアを計算する。
【００７７】
＜ランキング関数学習装置の作用＞
次に、本実施の形態に係るランキング関数学習装置１００の作用について説明する。まず、大量の訓練データからなる訓練データ集合がランキング関数学習装置１００に入力されると、ランキング関数学習装置１００によって、入力された訓練データ集合が、訓練データ記憶部２１へ格納される。そして、ランキング関数学習装置１００において、分割部２２によって、訓練データ記憶部２１の訓練データ集合を、Ｎ個の部分集合に分割し、Ｎ個の計算ノード２３1〜２３Nに割り当てる。訓練データ集合の各部分集合が、計算ノード２３1〜２３Nの各々の分割データ記憶部３１に格納される。
【００７８】
そして、ランキング関数学習装置１００の各計算ノード２３によって、図３に示すランキング関数学習処理ルーチンが実行される。なお、以下では、計算ノード２３nによって実行した場合について説明する。
【００７９】
まず、ステップＳ１０１において、ラグランジュ未定乗数un、局所的なパラメータvn、及び大域的制約パラメータwの各々に、適当な値（例えば、０）を与えて初期化する。
【００８０】
そして、ステップＳ１０２において、局所更新部３２によって、上記ステップＳ１０１で初期化されたラグランジュ未定乗数un、局所的なパラメータvn、及び大域的制約パラメータw、又は前回更新されたラグランジュ未定乗数un、局所的なパラメータvn、及び大域的制約パラメータwに基づいて、上記（７)式に従って、ラグランジュ未定乗数unを更新する。
【００８１】
次のステップＳ１０３では、局所更新部３２によって、上記ステップ１０２で更新されたラグランジュ未定乗数unと、上記ステップＳ１０１で初期化された大域的制約パラメータw、又は前回更新された大域的制約パラメータwと、分割データ記憶部３１に記憶された訓練データ集合の部分集合とに基づいて、上記（９）式に従って、局所的なパラメータvnを更新する。
【００８２】
そして、ステップＳ１０４では、同期部３３によって、上記ステップＳ１０２で更新されたラグランジュ未定乗数un及び上記ステップ１０３で更新された局所的なパラメータvnを他の計算ノード２３に通知すると共に、他の計算ノード２３i全てから、更新されたラグランジュ未定乗数ui及び上記ステップ１０３で更新された局所的なパラメータviを取得する（ｉ＝１,・・・,ｎ−１，ｎ＋１，・・・,Ｎ）。
【００８３】
ステップＳ１０５では、大域更新部３４によって、上記ステップＳ１０２で更新されたラグランジュ未定乗数un及び上記ステップ１０３で更新された局所的なパラメータvnと、上記ステップＳ１０４で他の計算ノード２３i全てから取得したラグランジュ未定乗数uiび局所的なパラメータviとに基づいて、上記（１４）式に従って、大域的制約パラメータｗを更新する。
【００８４】
次のステップＳ１０６では、上記ステップ１０３で更新された局所的なパラメータvnと、上記ステップ１０５で更新された大域的制約パラメータｗと、前回更新された大域的制約パラメータｗとに基づいて、上記（１５）式、(１６)式に従って、大域的制約パラメータｗが収束したか否かを判定する。上記（１５）式および(１６)式を満たさない場合には、収束していないと判断し、上記ステップＳ１０２へ戻る。一方、上記（１５）式及び(１６）式を満たした場合には、収束したと判断し、上記ステップＳ１０７へ移行する。
【００８５】
ステップＳ１０７では、上記ステップＳ１０５で最終的に更新された大域的制約パラメータwkを、得られた最適解^wとして出力部３０により出力して、ランキング関数学習処理ルーチンを終了する。
【００８６】
以上説明したように、第１の実施の形態に係るランキング関数学習装置によれば、各計算ノードにおいて、割り当てられた訓練データの部分集合に基づいてラグランジュ未定乗数及び局所的なパラメータを更新し、他の計算ノードから取得したラグランジュ未定乗数及び局所的なパラメータを用いて、大域的制約パラメータを更新することを収束するまで繰り返すことにより、ランキング精度の低下を抑制して、高速にランキング関数を学習することができる。
【００８７】
また、web検索エンジン等で用いられている、文書の検索結果を表示する際に適合文書をどのような順序で提示するかを決定するランキング処理装置を自動的に構築することができる。
【００８８】
なお、上記の実施の形態では、各計算ノード２３が、大域更新部３４及び収束判定部３５を備えている場合を例に説明したが、これに限定されるものではない。例えば、図４に示すように、各計算ノード２３は、分割データ記憶部３１及び局所更新部３２を備え、演算部２０が、大域更新部３４、及び収束判定部３５を１つずつ備えるように構成してもよい。この場合には、大域更新部３４は、全ての計算ノード２３nで得られたunとvnを使って、大域的制約パラメータｗを更新し、収束判定部３５は、得られた大域的制約パラメータｗが収束して最適値になっているか判定するようにする。収束判定で、収束していなかった場合は、各計算ノード２３に得られた大域的制約パラメータｗを通知して局所更新部３２による処理に戻るようにする。
【００８９】
〔第２の実施の形態〕
次に、第２の実施の形態について説明する。なお、第１の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
【００９０】
第２の実施の形態では、訓練データ集合に新たな訓練データが追加された際の処理を行っている点が、第１の実施の形態と異なっている。
【００９１】
＜発明の概要＞
ランキング関数生成時に考慮したいこととして、ウェブ検索システムの検索対象となる文書集合は、時々刻々と変化しているため、それらの変化に対応したシステム作りがあげられる。この事象に対応するひとつの方法として、例えば、その時々で適した訓練データを逐次的に増やしていき、ランキング関数を現在の状態により適合したものに更新するという方法が考えられる。また、人間が検索システムを利用しているときに得られるクエリとそのときに選択した文書のペアを訓練データとみなすこともできるため、これらのフィードバックをリアルタイムで反映するといったことも考えられる。
【００９２】
上記非特許文献２〜４では、訓練データが逐次的に増加したときにどのように新しい訓練データを取り入れてランキング関数を構築するかといった点が特に言及されていないため、訓練データを逐次的に追加する際に必ずしも効率的になるとは言えない、という問題がある。
【００９３】
ここで、本発明における訓練データが逐次的に追加される際の処理について、図５を用いて説明する。
【００９４】
訓練データが逐次的に追加される際にも、本発明の枠組みは容易に対応することが可能である。本質的には、上記の第1の実施の形態で説明した静的な訓練データ集合を用いた学習方法をそのまま用いることができる。訓練データが時間毎に増加する際の処理では、前提として訓練データは無限に存在するという仮定をする。ただし、ある時刻tの時点では、たまたま、稼動している計算ノードはｎ個であったと想定する。その際に、本発明の枠組みでは、稼動しているｎ個の計算ノードだけを用いて部分的に処理を続行することが可能である。そして、時刻t+1の時にn+1個の計算ノードが利用できるといったように、各時刻で増加した訓練データの集合を、新たに追加したひとつの計算ノードに割り当てるような形で、訓練データが逐次的に増加する際にも学習処理を継続して行うことができる。
【００９５】
これは、本発明の方法が、ほぼ全ての計算を各計算ノード独立で行うことが可能であることに由来する。また、唯一全計算ノードで情報を共有しているwの更新では、最初からN個の計算ノードが止まることなく稼動して得られる解^wと、逐次的に追加して利用できる計算ノードを含む全ての計算ノードを利用して得た解^wとは一致する性質を持つ。この性質から、訓練データが逐次的に増加する環境でも効率良く計算することができる。
【００９６】
＜システム構成＞
図６に示すように、第２の実施の形態に係るランキング関数学習装置２００の演算部２２０は、訓練データ記憶部２１、分割部２２、Ｎ個の計算ノード２３1〜２３N、及びデータ追加部２２２を備えている。また、訓練データ記憶部２１に新たに訓練データが追加された場合には、演算部２２０は、訓練データの追加に対応する少なくとも１つ（図６の例では２つ)の計算ノード２２３N+1、２２３N+2を備える。なお、計算ノード２２３N+1、２２３N+2のうちの任意の計算ノードを示す場合には、計算ノード２２３と称することとする。
【００９７】
データ追加部２２２は、ある時点までで訓練データ集合が追加された場合に、訓練データ集合の追加分を、計算ノード２２３N+1に割り当てる。また、次の時点までで訓練データ集合が更に追加された場合には、データ追加部２２２は、訓練データ集合の更なる追加分を、計算ノード２２３N+2に割り当てる。
【００９８】
計算ノード２２３N+1〜２２３N+2の各々は、追加データ記憶部２３１、局所更新部３２、同期部３３、大域更新部３４、及び収束判定部３５を備えている。
【００９９】
追加データ記憶部２３１には、計算ノード２２３に割り当てられた、追加分の訓練データ集合を記憶する。
【０１００】
計算ノード２２３の局所更新部３２及び収束判定部３５は、計算ノード２３と同様である。
【０１０１】
計算ノード２２３の同期部３３は、当該計算ノード２２３nで今回更新されたunとvnを、自分以外の全ての計算ノード２３、２２３へ通知する。また、計算ノード２３の同期部３３も、当該計算ノード２３iで今回更新されたuiとviを、自分以外の全ての計算ノード２３、２２３へ通知する。計算ノード２３、２２３の各々の同期部３３は、他の計算ノード２３、２２３全てから通知された、今回更新されたunとvnを受け取る。この処理によって、個々の計算ノード２３、２２３は全ての計算ノード２３、２２３の持つunとvnの値を取得することができる。
【０１０２】
計算ノード２３、２２３の各々の大域更新部３４は、他の計算ノード２３、２２３全てから受け取ったunとvnを使って、上記（１４)式に従って、大域的制約パラメータwを更新する。
【０１０３】
＜ランキング関数学習装置の作用＞
次に、本実施の形態に係るランキング関数学習装置２００の作用について説明する。まず、大量の訓練データからなる訓練データ集合がランキング関数学習装置２００に入力されると、ランキング関数学習装置２００によって、入力された訓練データ集合が、訓練データ記憶部２１へ格納される。そして、ランキング関数学習装置２００において、分割部２２によって、訓練データ記憶部２１の訓練データ集合を、Ｎ個の部分集合に分割し、Ｎ個の計算ノード２３1〜２３Nに割り当てる。
【０１０４】
そして、ランキング関数学習装置２００の各計算ノード２３によって、上記図３に示すランキング関数学習処理ルーチンが実行される。
【０１０５】
各計算ノード２３によるランキング関数学習処理ルーチンの実行中に、訓練データ集合がランキング関数学習装置２００に追加入力されると、ランキング関数学習装置２００によって、追加入力された訓練データ集合が、訓練データ記憶部２１へ格納される。そして、ランキング関数学習装置２００において、データ追加部２２２によって、訓練データ記憶部２１の訓練データ集合の追加分を、計算ノード２２３N+1に割り当てる。ランキング関数学習装置２００の計算ノード２２３N+1によって、各計算ノード２３と同様に、ランキング関数学習処理ルーチンが実行される。
【０１０６】
このとき、各計算ノード２３、２２３で実行されるランキング関数学習処理ルーチンのステップＳ１０４では、更新されたラグランジュ未定乗数ui及び局所的なパラメータviを他の計算ノード２３、２２３に通知すると共に、他の計算ノード２３、２２３全てから、更新されたラグランジュ未定乗数ui及び上記ステップ１０３で更新された局所的なパラメータviを取得する。
【０１０７】
また、各計算ノード２３、２２３N+1によるランキング関数学習処理ルーチンの実行中に、訓練データ集合がランキング関数学習装置２００に追加入力されると、ランキング関数学習装置２００によって、追加入力された訓練データ集合が、訓練データ記憶部２１へ格納される。データ追加部２２２によって、訓練データ記憶部２１の訓練データ集合の更なる追加分を、計算ノード２２３N+2に割り当てる。ランキング関数学習装置２００の計算ノード２２３N+2によって、各計算ノード２３と同様に、ランキング関数学習処理ルーチンが実行される。
【０１０８】
また、訓練データ集合が追加入力される毎に、計算ノード２２３N+3, ２２３N+4,・・・と計算ノード２２３を追加し、訓練データ集合の更なる追加分を割り当て、ランキング関数学習処理ルーチンを同様に実行させる。
【０１０９】
以上説明したように、第２の実施の形態に係るランキング関数学習装置によれば、ランキング処理装置で利用するランキング関数を学習する際に、訓練データの大規模化と逐次投入化を同時に可能とする。これにより、従来扱えなかった大量の訓練データを用いて従来より高精度なランキング関数を構築することが可能となる。また、逐次的に訓練データを増加させながら、ランキング関数の構築が可能となるため、時々刻々と変化するデータに対応してランキング関数を適応させることが容易となる。
【０１１０】
また、検索のランキング関数学習処理においては、実際にユーザが入力した検索クエリとユーザがクリックしたＷｅｂページが、擬似的な訓練データとして利用可能である。これらのいわゆるユーザフィードバックを逐次的に取り入れてランキング関数の性能を向上させることが可能となる。
【０１１１】
なお、上記の実施の形態では、訓練データの追加前から実行されているランキング関数学習処理ルーチンを、計算ノードが実行している間に、訓練データが追加される場合を例に説明したが、これに限定されるものではない。Ｎ個の計算ノードによって、ランキング関数学習処理ルーチンの実行が終了した後に、訓練データが追加された場合であってもよい。この場合には、訓練データの追加前に実行完了したランキング関数学習処理ルーチンで最終的に得られた各種変数ｕ，ｖ，ｗの値を保持しておき、保持した値を、各種変数の初期値として設定して、追加された計算ノードを含む複数の計算ノードの各々によって、ランキング関数学習処理ルーチンを実行するようにすればよい。これによって、訓練データが追加される前に学習した結果を有効利用することができる。
【０１１２】
〔第３の実施の形態〕
次に、第３の実施の形態について説明する。なお、第１の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
【０１１３】
第３の実施の形態では、ネットワークで接続された複数の学習装置を備えた分散並列計算環境において、複数の学習装置による分散並列計算で、パラメータ更新を行っている点が、第１の実施の形態と異なっている。
【０１１４】
＜システム構成＞
図７に示すように、第３の実施の形態に係るランキング関数学習システム３００は、学習制御装置３０１、及びＮ個の学習装置３０２1〜３０２Nを備えている。学習制御装置３０１及びＮ個の学習装置３０２1〜３０２Nは、ネットワーク３０３を介して接続されている。なお、学習装置３０２1〜３０２Nのうちの任意の学習装置を示す場合には、学習装置３０２と称することとする。
【０１１５】
図８に示すように、学習制御装置３０１は、入力部１０、演算部３２０、及び出力部３３０を備えている。
【０１１６】
演算部３２０は、訓練データ記憶部２１及び分割部２２を備えている。
【０１１７】
分割部２２は、訓練データ記憶部２１に記憶された訓練データ集合を、Ｎ個の部分集合に分割し、ネットワーク３０３を介してＮ個の学習装置３０２1〜３０２Nに送信する。また、分割部２２は、入力されたパラメータρを、ネットワーク３０３を介してＮ個の学習装置３０２1〜３０２Nの各々に送信する。
【０１１８】
Ｎ個の学習装置３０２1〜３０２Nの各々は、図９に示すように、入力部３４０、演算部３５０、及び出力部３６０を備えている。
【０１１９】
入力部３４０は、学習制御装置３０１から送信された訓練データ集合の部分集合を受け付ける。また、入力部３４０は、他の学習装置３０２からネットワーク３０３を介して送信された情報を受け付ける。
【０１２０】
演算部３５０は、分割データ記憶部３１、局所更新部３２、同期部３３、大域更新部３４、及び収束判定部３５を備えている。
【０１２１】
分割データ記憶部３１には、学習装置３０２に送信された訓練データ集合の部分集合を記憶する。
【０１２２】
同期部３３は、当該学習装置３０２nで今回更新されたunとvnを、自分以外の全ての学習装置３０２へネットワーク３０３を介して送信する。また、同期部３３は、他の学習装置３０２i全てから送信された、今回更新されたuiとviを受け取る。この処理によって、個々の学習装置３０２は全ての学習装置３０２nの持つunとvnの値を取得することができる。
【０１２３】
大域更新部３４は、他の学習装置３０２i全てから受け取ったuiとviを使って、上記（１４）式に従って、大域的制約パラメータwを更新する。
【０１２４】
収束判定部３５は、得られた大域的制約パラメータwが収束して最適値になっているか判定し、収束したと判定されたときに得られた大域的制約パラメータｗを、ランキング関数を構成するパラメータとして、出力部３６０により学習制御装置３０１へ送信する。
【０１２５】
＜ランキング関数学習システムの作用＞
次に、本実施の形態に係るランキング関数学習システム３００の作用について説明する。まず、大量の訓練データからなる訓練データ集合が学習制御装置３０１に入力されると、学習制御装置３０１によって、入力された訓練データ集合が、訓練データ記憶部２１へ格納される。そして、学習制御装置３０１において、分割部２２によって、訓練データ記憶部２１の訓練データ集合を、Ｎ個の部分集合に分割し、ネットワーク３０３を介してＮ個の学習装置３０２へ送信して、Ｎ個の学習装置３０２に割り当てる。訓練データ集合の部分集合が、学習装置３０２1〜３０２Nの分割データ記憶部３１に格納される。
【０１２６】
そして、各学習装置３０２によって、上記図３に示すランキング関数学習処理ルーチンが実行される。
【０１２７】
少なくとも１つの学習装置３０２によって、最終的に更新された大域的制約パラメータｗが、ネットワーク３０３を介して学習制御装置３０１へ送信される。学習制御装置３０１は、学習装置３０２により受信した大域的制約パラメータｗを出力部３３０により出力する。
【０１２８】
以上説明したように、第３の実施の形態に係るランキング関数学習システムによれば、ネットワークを介して接続された複数の学習装置によって、分散並列処理によるランキング関数学習処理を行うため、処理を高速化でき、訓練データの更なる大規模化に対応することができる。
【０１２９】
なお、上記の実施の形態において、上述した第２の実施の形態における訓練データの逐次追加に対応する技術を適用してもよい。この場合には、訓練データが追加される毎に、ランキング学習処理を行う学習装置を増やして対応すればよい。
【０１３０】
＜実験例＞
次に、本発明の実施の形態で提案するランキング関数学習方法を用いた実験の結果について説明する。
【０１３１】
訓練データ集合が静的な場合と、逐次的に訓練データが追加される場合とについて、それぞれ実験を行った。また、比較手法として、参考文献３（Ryan McDonald, Keith Hall, and Gideon Mann. Distributed training strategies for the structured perceptron. In NAACL HLT, 2010.）に記載の方法を用いた。
【０１３２】
図１０に実験結果を示す。図１０のグラフの縦軸は精度であり、横軸は学習処理中の繰り返し回数である。また、「Batch」とは、全訓練データをはじめから利用した場合の実験結果を表わし、「Stream」とは、逐次的に訓練データを投入した場青の実験結果を表わす。また、「Batch ADMM」及び「Stream ADMM」が、本発明の実施の形態で提案するランキング関数学習方法提案手法の実験結果を表わし、「Batch Iter. Param Mix」及び「Stream Iter. Param Mix」が、比較手法を用いた場合の実験結果を表わす。本発明の実施の形態で提案するランキング関数学習方法を用いた場合には、従来方法より、精度が高くなることがわかった。また、逐次的に投入しても、全訓練データをはじめから使っているときとほぼ同じ解が得られることがわかった。
【０１３３】
また、分散並列処理を行う方法を用いた実験を行った。学習処理を行う計算機の数を、１個、１２個、３６個、７２個とした場合それぞれについて実験を行った。図１１に実験結果を示す。図１１のグラフの縦軸はエラー率であり、横軸は学習処理中の繰り返し回数である。分散並列処理を行う計算機の数を増やすほどエラーを少なくできることがわかった。
【０１３４】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０１３５】
例えば、上述のランキング関数学習装置、学習制御装置、学習装置は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【０１３６】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【０１３７】
１０、３４０  入力部
２０、２２０、３２０、３５０演算部
２１   訓練データ記憶部
２２   分割部
２３、２２３  計算ノード
３１   分割データ記憶部
３２   局所更新部
３３   同期部
３４   大域更新部
３５   収束判定部
１００、２００ランキング関数学習装置
２３１ 追加データ記憶部
３００ ランキング関数学習システム
３０１ 学習制御装置
３０２ 学習装置
【図１】
0005734820.tif 000014
【図２】
0005734820.tif 000015
【図３】
0005734820.tif 000016
【図４】
0005734820.tif 000017
【図５】
0005734820.tif 000018
【図６】
0005734820.tif 000019
【図７】
0005734820.tif 000020
【図８】
0005734820.tif 000021
【図９】
0005734820.tif 000022
【図１０】
0005734820.tif 000023
【図１１】
0005734820.tif 000024
【図１２】
0005734820.tif 000025
【図１３】
0005734820.tif 000026
【図１４】
0005734820.tif 000027