(57)【要約】【課題】本発明は、パラメタの正確性が高く、勾配法による学習を高速化できるパラメタ学習装置を提供する。【解決手段】パラメタ学習装置１は、評価関数を最適化するパラメタを勾配法で学習するために、事例集合ごとの事例数の比と、事例集合ごとに予め設定された事例の１個あたりの処理時間とに基づいて、事例集合ごとに反復計算を行う計算ノード部５の割当数を算出して、この計算ノード部の個数に応じて、計算ノード部５のそれぞれに事例集合を１個割り当てた後、その割り当て内容を示す割当情報を生成して、全ての計算ノード部５に出力する計算ノード部設定手段３２を備える。【選択図】図１
2012079080.tif 000002
【特許請求の範囲】
【請求項１】
パラメタに任意の値を設定すると、入力されたデータである事例に対して評価値を出力する評価関数が前記パラメタを共有し、かつ、前記事例を共有しない複数の関数の線形結合として予め定義され、前記評価関数を最適化する前記パラメタを勾配法で学習するために、前記評価関数を予め保持する関数保持部と、前記事例の集合である事例集合を予め複数保持する事例集合保持部と、前記パラメタを保持するパラメタ保持部と、並列で前記事例の勾配を反復計算して、当該勾配を累積した勾配累計値を算出する複数の計算ノード部と、前記複数の計算ノード部が算出した勾配累計値に基づいて前記パラメタ保持部が保持するパラメタを更新するパラメタ更新処理部とを備えるパラメタ学習装置において、
前記パラメタ更新処理部は、
前記事例集合ごとの事例数の比と、前記事例集合ごとに予め設定された前記事例の１個あたりの処理時間とに基づいて、前記事例集合ごとに前記反復計算を行う計算ノード部の個数を算出し、算出した当該計算ノード部の個数に応じて前記計算ノードのそれぞれに前記事例集合を１個割り当てる計算ノード部設定手段を備え、
前記計算ノード部は、
前記事例集合保持部から、前記計算ノード部設定手段によって割り当てられた事例集合に含まれる事例を入力する事例入力手段と、
前記事例入力手段に入力した事例を用いて、前記事例の勾配を反復計算する勾配計算手段と、
前記勾配計算手段によって反復計算された事例の勾配を累積することで前記勾配累計値を算出する勾配累積手段と、
を備えることを特徴とするパラメタ学習装置。
【請求項２】
前記計算ノード部設定手段は、前記事例集合に含まれる事例数をカウントすることで前記事例集合ごとの事例数の比を算出することを特徴とする請求項１に記載のパラメタ学習装置。
【請求項３】
前記計算ノード部設定手段は、前記事例集合ごとの事例数の比として、予め求めた前記事例集合ごとの事例数の予測相対比が設定されることを特徴とする請求項１に記載のパラメタ学習装置。
【請求項４】
前記勾配累積手段は、前記勾配計算手段によって反復計算された事例数を示す勾配累計数をさらに算出し、
前記パラメタ更新処理部は、
前記反復計算の１回分の時間を示す反復計算時間が予め設定され、前記反復計算時間を前記勾配累積手段が算出した勾配累計数で除算することで処理時間補正値を算出し、前記事例の１個あたりの処理時間を前記処理時間補正値に補正する処理時間補正手段をさらに備えることを特徴とする請求項１から請求項３の何れか一項に記載のパラメタ学習装置。
【請求項５】
パラメタに任意の値を設定すると、入力されたデータである事例に対して評価値を出力する評価関数が前記パラメタを共有し、かつ、前記事例を共有しない複数の関数の線形結合として予め定義され、前記評価関数を最適化する前記パラメタを勾配法で学習するために、前記評価関数を予め保持する関数保持部と、前記事例の集合である事例集合を予め複数保持する事例集合保持部と、前記パラメタを保持するパラメタ保持部とを備えるコンピュータを、
並列で前記事例の勾配を反復計算して、当該勾配を累積した勾配累計値を算出する複数の計算ノード部、前記複数の計算ノード部が算出した勾配累計値に基づいて前記パラメタ保持部が保持するパラメタを更新するパラメタ更新処理部として機能させ、
前記パラメタ更新処理部を、
前記事例集合ごとの事例数の比と、前記事例集合ごとに予め設定された前記事例の１個あたりの処理時間とに基づいて、前記事例集合ごとに前記反復計算を行う計算ノード部の個数を算出し、算出した当該計算ノード部の個数に応じて前記計算ノードのそれぞれに前記事例集合を１個割り当てる計算ノード部設定手段として機能させ、
前記計算ノード部を、
前記事例集合保持部から、前記計算ノード部設定手段によって割り当てられた事例集合に含まれる事例を入力する事例入力手段、
前記事例入力手段に入力した事例を用いて、前記事例の勾配を反復計算する勾配計算手段、
前記勾配計算手段によって反復計算された事例の勾配を累積することで前記勾配累計値を算出する勾配累積手段、
として機能させることを特徴とするパラメタ学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パラメタを共有し、かつ、事例を共有しない複数の関数の線形結合である評価関数を最適化するパラメタを学習するパラメタ学習装置およびそのプログラムに関する。
【背景技術】
【０００２】
従来から、事例（ベクタ）ｘに対して、パラメタ（ベクタ）θをとる評価関数ｆ（ｘ；θ）を定義したとき、事例集合Ｘ＝｛ｘ１，ｘ２，・・・，ｘｎ｝全体に対して、評価関数を最適化するパラメタを学習することは、機械学習の基本技術として知られている。この評価関数の最適化は、例えば、自然言語処理、音声認識処理または画像認識処理など、非常に広い分野で利用されている。
【０００３】
典型的には、評価関数の最適化とは、事例に対する評価関数の出力の総和を最小化または最大化することである。すなわち、最小化とは、例えば、下記の式（１）を満たすパラメタθを求める処理である。
【０００４】
【数１】
2012079080.tif 000003
【０００５】
ここで、最適なパラメタを解析的に求めることができない場合、勾配法と呼ばれる最適値の反復的な探索手法が、広く用いられている。勾配法の一例として、最急降下法のアルゴリズムを説明する。なお、評価関数ｆのθによる勾配∂ｆ（ｘ；θ）／∂θが計算可能であると仮定する。
【０００６】
１：θの初期値θ（０）を適当に決める。
２：ｉ回目の反復計算の結果であるθの推定値をθ（ｉ）とするとき、下記の式（２）によって、ｉ＋１回目の反復計算の結果である新しい推定値θ（ｉ＋１）を得る。
３：ｉをインクリメント（ｉ←ｉ＋１）した後、前記２に戻る。このような反復計算を何らかの条件を満たす（例えば、所定の回数が終了する）まで繰り返す。
【０００７】
【数２】
2012079080.tif 000004
【０００８】
なお、式（２）では、λは、学習係数と呼ばれる正数で、学習の安定性と速度とのバランスを考慮して適切な値に予め設定する。また、λとして、ｉの増加に従って、その値が減少するような関数を用いることもある。
【０００９】
この最急降下法では、全ての学習事例に対して評価関数ｆの勾配を計算した後、初めてθを更新するため、学習する事例数が非常に多い場合、その学習速度が遅くなるという問題があった。また、最急降下法では、学習が終了するまでの間、全ての事例を保持し続けなければならないことも問題であった。さらに、最急降下法では、事例が無限に発生し、それらを逐次学習しなければならないような場合（いわゆるオンライン学習）に適用することが困難であった。
【００１０】
そこで、このような最急降下法の問題を解決するために、確率勾配降下法が提案されている（非特許文献１参照）。この確率勾配降下法は、最急降下法の各反復計算において、全ての事例に対する評価関数ｆの勾配の総和を求める代わりに、確率的に選択されたある１個の事例の勾配を用いる。以下、確率勾配降下法のアルゴリズムを説明する。
【００１１】
１：θの初期値θ（０）を適当に決める。
２：ｉ回目の反復計算の結果であるθの推定値をθ（ｉ）とするとき、下記の式（３）によって、ｉ＋１回目の反復計算の結果である新しい推定値θ（ｉ＋１）を得る。
３：ｉをインクリメント（ｉ←ｉ＋１）した後、前記２に戻る。このような反復計算を何らかの条件を満たすまで繰り返す。
【００１２】
【数３】
2012079080.tif 000005
【００１３】
この確率勾配降下法は、事例に含まれる外れ値に大きな影響を受けるため、学習が安定して収束しないことが多い。そこで、ｓｍａｌｌ  ｂａｔｃｈ法と呼ばれる、最急降下法と確率勾配降下法との折衷手法が提案されている（非特許文献１参照）。
【００１４】
つまり、確率勾配降下法が各反復計算において事例を１個処理してパラメタを更新するのに対し、ｓｍａｌｌ  ｂａｔｃｈ法は、２個以上の事例を選択して各勾配の和によってパラメタを更新する。
【００１５】
また、ｓｍａｌｌ  ｂａｔｃｈ法は、勾配法の並列化による高速解法としても用いられている（非特許文献２参照）。すなわち、非特許文献２に記載の高速解法は、複数の事例に対する勾配計算を、コンピュータが持つ複数の計算実行部（例えば、ＣＰＵコア）、ネットワークに接続された複数のコンピュータなどの複数の計算ノード部で並列に実行し、その結果を集計することでパラメタを更新している。
【００１６】
ここで、パラメタに任意の値を設定すると、入力された事例に対して評価値を出力する評価関数が、パラメタを共有し、かつ、事例を共有しない複数の関数の線形結合として表現されている場合を考える。例えば、２個の関数を結合した場合を考えると、事例集合Ｘ１＝｛ｘ１１，ｘ１２,・・・｝に対して関数ｆ１、事例集合Ｘ２＝｛ｘ２１，ｘ２２,・・・｝に対して関数ｆ２が定義され、下記の式（４）を満たすパラメタθを求めるような場合である。なお、式（４）では、ｗ１，ｗ２は、各評価関数の値の線形結合重みである。
【００１７】
【数４】
2012079080.tif 000006
【００１８】
このような評価関数の最適化は、時として相反する複数の条件を両立させるパラメタを求める手段として、広く知られている（非特許文献３参照）。ここで、前記した２関数の線形結合で表現される評価関数の最適化を確率勾配降下法で行うには、以下の最適化アルゴリズムが考えられる。
【００１９】
１：θの初期値θ（０）を適当に決める。
２：ｉ回目の反復計算の結果であるθの推定値をθ（ｉ）とするとき、Ｘ１，Ｘ２から確率的（例えば、ランダム）に各々１個の事例ｘ１（ｉ），ｘ２（ｉ）を選択し、下記の式（５）によって、ｉ＋１回目の反復計算の結果である新しい推定値θ（ｉ＋１）を得る。
３：ｉをインクリメント（ｉ←ｉ＋１）した後、前記２に戻る。このような反復計算を何らかの条件を満たすまで繰り返す。
【００２０】
【数５】
2012079080.tif 000007
【００２１】
なお、式（５）では、ｗ１´，ｗ２´は、Ｘ１，Ｘ２に含まれる事例数を考慮して予め定めた線形結合重みである。
【先行技術文献】
【非特許文献】
【００２２】
【非特許文献１】Stochastic Gradient Learning in Neural Networks. Leon Bottou. In proceedings of Neuro-Nimes 91. 1991. http://leon.bottou.org/papers/bottou-91c
【非特許文献２】Parallel Stochastic Gradient Descent. Olivier Delalleau and Yoshua Bengio.August 11th, 2007. http://www.cs.toronto.edu/amnih/cifar/talks/delalleau talk.pdf.
【非特許文献３】Large Margin Component Analysis. Lorenzo Torresani and Kuang-chihLee. In proceeding of NIPS 2007. pp. 1385-1392. http://books.nips.cc/papers/files/nips19/NIPS2006 0791.ps.gz
【発明の概要】
【発明が解決しようとする課題】
【００２３】
しかし、前記した従来の最適化アルゴリズムは、１回の反復計算において、各事例集合からそれぞれ１個の事例を選択するため、各事例集合に含まれる事例数が大きく異なる場合には、一定回数の反復計算の結果、考慮される事例数の事例集合に占める割合が大きく異なる。すなわち、従来の最適化アルゴリズムは、事例数が多い事例集合に比べ、事例数が少ない事例集合の方が、その事例集合に含まれる事例が選択される回数が多いので、パラメタに与える影響が大きくなる。このため、従来の最適化アルゴリズムは、学習したパラメタの正確性が低くなるという問題がある。
【００２４】
また、従来の最適化アルゴリズムにおいて、ｓｍａｌｌ  ｂａｔｃｈ法による並列化を考えると、以下の問題が生じる。例えば、前記した２関数の結合の例に、勾配δｆ１（ｘ１；θ）／δθの計算に要する時間と、勾配δｆ２（ｘ２；θ）／δθの計算に要する時間とが大きく異なる場合が考えられる。この場合、従来の最適化アルゴリズムは、１回の反復における並列計算に要する時間が、勾配計算に時間が長くかかる関数に制約されてしまい、並列化による恩恵を十分に受けることができない。すなわち、従来の最適化アルゴリズムは、勾配計算に時間がかかる関数がある場合、その関数の計算が終わるまで待つ必要があり、待ち時間が長くなるという問題がある。
【００２５】
そこで、本発明は、前記した問題を解決し、パラメタの正確性が高く、勾配法による学習を高速化できるパラメタ学習装置およびそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
前記した課題に鑑みて、本願第１発明に係るパラメタ学習装置は、パラメタに任意の値を設定すると、入力されたデータである事例に対して評価値を出力する評価関数が前記パラメタを共有し、かつ、前記事例を共有しない複数の関数の線形結合として予め定義され、前記評価関数を最適化する前記パラメタを勾配法で学習するために、前記評価関数を予め保持する関数保持部と、前記事例の集合である事例集合を予め複数保持する事例集合保持部と、前記パラメタを保持するパラメタ保持部と、並列で前記事例の勾配を反復計算して、当該勾配を累積した勾配累計値を算出する複数の計算ノード部と、前記複数の計算ノード部が算出した勾配累計値に基づいて前記パラメタ保持部が保持するパラメタを更新するパラメタ更新処理部とを備えるパラメタ学習装置において、前記パラメタ更新処理部が、計算ノード部設定手段を備え、前記計算ノード部が、事例入力手段と、勾配計算手段と、勾配累積手段とを備えることを特徴とする。
【００２７】
かかる構成によれば、パラメタ学習装置は、計算ノード部設定手段によって、事例集合ごとの事例数の比と、事例集合ごとに予め設定された事例の１個あたりの処理時間とに基づいて、事例集合ごとに反復計算を行う計算ノード部の個数を算出する。ここで、計算ノード部設定手段は、計算ノード部の個数を処理時間で除算した値の比と、事例数の比とからなる等式を解いて、計算ノード部の個数を算出する。このように、算出した計算ノード部の個数に応じて計算ノードのそれぞれに事例集合を１個割り当てる。つまり、計算ノード部設定手段は、事例数の比を考慮した割り当てを行うことで、各事例集合に含まれる事例が選択される回数の均衡化を図り、事例数の少ない事例集合がパラメタに与える影響を低減する。さらに、計算ノード部設定手段は、事例の１個あたりの処理時間を考慮した割り当てを行うことで、各計算ノード部が反復計算に要する時間の均衡化を図り、反復計算の待ち時間を短くする。
【００２８】
また、パラメタ学習装置は、事例入力手段によって、事例集合保持部から、計算ノード部設定手段によって割り当てられた事例集合に含まれる事例を入力する。そして、パラメタ学習装置は、勾配計算手段によって、事例入力手段に入力した事例を用いて、事例の勾配を反復計算する。さらに、パラメタ学習装置は、勾配累積手段によって、前記勾配計算手段によって反復計算された事例の勾配を累積することで前記勾配累計値を算出する。
【００２９】
また、本願第２発明に係るパラメタ学習装置は、前記計算ノード部設定手段が、前記事例集合に含まれる事例数をカウントすることで前記事例集合ごとの事例数の比を算出することが好ましい。
【００３０】
また、本願第３発明に係るパラメタ学習装置は、前記計算ノード部設定手段は、前記事例集合ごとの事例数の比として、予め求めた前記事例集合ごとの事例数の予測相対比が設定されることが好ましい。
【００３１】
また、本願第４発明に係るパラメタ学習装置は、前記勾配累積手段が、前記勾配計算手段によって反復計算された事例数を示す勾配累計数をさらに算出し、前記パラメタ更新処理部が、前記反復計算の１回分の時間を示す反復計算時間が予め設定され、前記反復計算時間を前記勾配累積手段が算出した勾配累計数で除算することで処理時間補正値を算出し、前記事例の１個あたりの処理時間を前記処理時間補正値に補正する処理時間補正手段をさらに備えることが好ましい。
【００３２】
ここで、本願第１発明に係るパラメタ学習装置は、関数保持部と、事例集合保持部と、パラメタ保持部とを備えるコンピュータを、複数の計算ノード部、パラメタ更新処理部、計算ノード部設定手段、事例入力手段、勾配計算手段、勾配累積手段として機能させるパラメタ学習プログラムによって実現することもできる。
【発明の効果】
【００３３】
本発明によれば、以下のような優れた効果を奏する。
本願第１，５発明によれば、事例数の比を考慮した割り当てを行うことで、各事例集合に含まれる事例が選択される回数の均衡化を図り、事例数の少ない事例集合がパラメタに与える影響を低減する。また、本願第１，５発明によれば、事例の１個あたりの処理時間を考慮した割り当てを行うことで、各計算ノード部が反復計算に要する時間の均衡化を図り、反復計算の待ち時間を短くする。従って、本願第１，５発明によれば、パラメタの正確性が高く、勾配法による学習を高速化できる。
【００３４】
本願第２発明によれば、事例集合ごとの事例数の比を算出するので、利用者が事例集合ごとの事例数の比を手動で設定する必要がなく、利便性がよい。
本願第３発明によれば、事例集合が無限に発生する場合においても、パラメタの正確性が高く、勾配法による学習を高速化できる。
本願第４発明によれば、事例の１個あたりの処理時間を処理時間補正値によって補正するため、パラメタが正確になるにつれて勾配の反復計算に要する時間が大きく変化する場合であっても、反復計算の待ち時間を短くすることができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の第１実施形態に係るパラメタ学習装置の構成を示すブロック図である。
【図２】本発明に係るパラメタ学習装置の概略を説明するフローチャートである。
【図３】図１のパラメタ更新処理部の動作を示すフローチャートである。
【図４】図１の計算ノード部の動作を示すフローチャートである。
【図５】本発明の変形例２に係るパラメタ学習装置の構成を示すブロック図である。
【図６】本発明の変形例３に係るパラメタ学習装置の構成を示すブロック図である。
【図７】図６のパラメタ更新処理部の動作を示すフローチャートである。
【図８】本発明の第２実施形態に係るパラメタ学習装置の構成を示すブロック図である。
【図９】図８のパラメタ学習装置の動作を示すシーケンス図の前半部分である。
【図１０】図８のパラメタ学習装置の動作を示すシーケンス図の後半部分である。
【発明を実施するための形態】
【００３６】
（第１実施形態）
以下、本発明の各実施形態について、適宜図面を参照しながら詳細に説明する。なお、各実施形態において、同一の機能を有する手段には同一の符号を付し、説明を省略した。
【００３７】
［パラメタ学習装置の概略］
以下、図１を参照し、本実施形態の第１実施形態に係るパラメタ学習装置１の概略について説明する。このパラメタ学習装置１は、１台のコンピュータで構成されており、パラメタ更新処理部３と、複数の計算ノード部５とを備える。
【００３８】
パラメタ更新処理部３は、後記する計算ノード部５による反復計算の結果に基づいて、パラメタを更新（学習）する。
【００３９】
計算ノード部５は、それぞれが、勾配の反復計算を並列に行う。ここで、計算ノード部５は、勾配の反復計算を行う処理単位となるものであり、例えば、ＣＰＵコアのそれぞれ、または、勾配の反復計算を行うプログラムによって生成されるプロセスのそれぞれである。また、パラメタ学習装置１が複数のコンピュータで構成されている場合、計算ノード部５は、それぞれのコンピュータとしてもよい。この例は、第２実施形態として後記する。
【００４０】
以下、図２を参照して、パラメタ学習装置１によるパラメタ学習の概略を説明する（適宜図１参照）。ここで、前記したように、評価関数が２関数の線形結合で表されることとする。従って、事例集合が、線形結合した関数と同数、つまり、事例集合Ｘ１，Ｘ２という２個存在することになる。また、ｉは反復計算の回数を意味するカウンタである。
【００４１】
手順１：パラメタ更新処理部３は、全ての計算ノード部５に事例集合Ｘ１，Ｘ２の何れか１個を割り当てる（ステップＳ１）。ここで、事例集合Ｘ１に割り当てられた計算ノード部５を「計算ノード部５Ｘ１」とし、事例集合Ｘ２に割り当てられた計算ノード部５を「計算ノード部５Ｘ２」）とする。
【００４２】
手順２：パラメタ更新処理部３は、全ての計算ノード部５が参照可能なパラメタθを用意し、パラメタθの初期値θ（０）を適当に決定する（例えば、乱数を初期値θ（０）として決定する、ステップＳ２）。
【００４３】
手順３：ｉ回目の反復計算の結果であるパラメタθをθ（ｉ）とするとき、計算ノード部５は、以下の手順（ａ）および手順（ｂ）で表される反復計算を行う。ここでは、計算ノード部５Ｘ１の反復計算について説明するが、計算ノード部５Ｘ２も同様の反復計算を行う（ステップＳ３）。
手順（ａ）：計算ノード部５Ｘ１は、事例集合Ｘ１から確率的に選択された事例ｘ１を入力する（例えば、事例集合Ｘ１からランダムに選択された事例ｘ１を入力する）。
手順（ｂ）：計算ノード部５Ｘ１は、勾配∂ｆ１（ｘ１；θ（ｉ））／∂θ（ｉ）を計算する。
【００４４】
手順４：パラメタ更新処理部３は、計算ノード部５Ｘ１，５Ｘ２による反復計算の結果を、下記の式（６）を用いて集計することで、ｉ＋１回目の反復計算の結果である新しいパラメタθ（ｉ＋１）を更新（学習）する（ステップＳ４）。
【００４５】
【数６】
2012079080.tif 000008
【００４６】
なお、式（６）において、Ｘ１（ｉ）は、計算ノード部５Ｘ１が反復計算時間内に処理した事例集合Ｘ１の部分集合を示す。また、Ｘ２（ｉ）は、計算ノード部５Ｘ２が反復計算時間内に処理した事例集合Ｘ２の部分集合を示す。
【００４７】
手順５：パラメタ更新処理部３は、ｉをインクリメント（ｉ←ｉ＋１）した後、前記した手順２に戻る。そして、パラメタ更新処理部３は、この手順２〜手順５の処理を予め設定された終了条件を満たすまで繰り返し、パラメタの学習を行う（ステップＳ５）。
【００４８】
［パラメタ学習装置の構成］
以下、図１に戻り、パラメタ学習装置１の構成について説明する。本実施形態では、パラメタ学習装置１を、日本語などの言語で作成された文章に含まれる単語間の類義性尺度を算出するためのパラメタを学習する装置として説明する。この場合、例えば、事例集合Ｘ１は、ある文章に含まれる単語が事例ｘ１として集合したものとなる。また、例えば、事例集合Ｘ２は、別の文書に含まれる単語が事例ｘ２として集合したものとなる。
【００４９】
図１に示すように、パラメタ学習装置１は、関数保持部１１と、パラメタ保持部１２と、事例集合保持部１３と、勾配計算結果保持部１４と、設定値保持部１５と、パラメタ更新処理部３と、複数の計算ノード部５とを備える。
【００５０】
＜保持部＞
関数保持部１１は、パラメタθの学習に必要な計算手順を保持するメモリ、ハードディスクなどの記憶手段である。具体的には、関数保持部１１は、学習対象の評価関数を構成する線形結合した関数ｆ１（ｘ１；θ（ｉ））において、勾配∂ｆ１（ｘ１；θ（ｉ））／∂θ（ｉ）を計算手順として予め保持する。また、関数保持部１１は、関数ｆ２（ｘ２；θ（ｉ））の勾配∂ｆ２（ｘ２；θ（ｉ））／∂θ（ｉ）を計算手順として予め保持する。そして、関数保持部１１は、関数ｆ１，ｆ２の線形結合重みｗ１´，ｗ２´を予め保持する。
【００５１】
なお、事例集合Ｘ１に含まれる事例をｘ１とし、事例集合Ｘ１における１番目の事例をｘ１１とし、事例集合Ｘ１における２番目の事例をｘ１２とする。
また、事例集合Ｘ２に含まれる事例をｘ２とし、事例集合Ｘ２における１番目の事例をｘ２１とし、事例集合Ｘ２における２番目の事例をｘ２２とする。
【００５２】
パラメタ保持部１２は、パラメタθ（ｉ）を保持するメモリ、ハードディスクなどの記憶手段である。
事例集合保持部１３は、事例集合Ｘ１＝｛ｘ１１，ｘ１２,・・・｝，Ｘ２＝｛ｘ２１，ｘ２２,・・・｝を予め保持するメモリ、ハードディスクなどの記憶手段である。また、事例集合保持部１３は、計算ノード部５からの事例要求に応じて、この事例要求で指定された事例集合Ｘ１，Ｘ２に含まれる事例を確率的（例えば、ランダム）に１個選択して計算ノード部５に出力する機能を備える。
【００５３】
勾配計算結果保持部１４は、全ての計算ノード部５による反復計算の結果を保持するメモリ、ハードディスクなどの記憶手段である。具体的には、勾配計算結果保持部１４は、事例集合Ｘ１，Ｘ２ごとに、後記する勾配累計値Ｓ１，Ｓ２と、後記する勾配累積数ｃ１，ｃ２とを保持する。
【００５４】
設定値保持部１５は、全ての計算ノード部５において、反復計算に必要な設定値を保持するメモリ、ハードディスクなどの記憶手段である。具体的には、設定値保持部１５は、事例集合Ｘ１，Ｘ２ごとに、後記する計算ノード部５の割当数（個数）ｎ１，ｎ２を保持する。また、設定値保持部１５は、後記する計算ノード部５の割当情報を設定値として保持する。また、設定値保持部１５は、事例集合Ｘ１，Ｘ２ごとに、事例ｘ１，ｘ２の１個あたりの処理時間ｔ１，ｔ２を予め保持する。この処理時間ｔ１，ｔ２は、学習実験を繰り返し行い、反復計算の待ち時間が少なくなる値を手動で計算しておく。そして、設定値保持部１５は、一回の反復計算を行う時間を示す反復計算時間を予め保持する。さらに、設定値保持部１５は、確率勾配法の計算に必要な更新重みλを予め保持する。
【００５５】
＜パラメタ更新処理部＞
パラメタ更新処理部３は、パラメタ初期化手段３１と、計算ノード部設定手段３２と、勾配計算結果初期化手段３３と、反復計算開始指示手段３４と、反復計算終了指示手段３５と、パラメタ更新手段３６と、終了判定手段３７とを備える。
【００５６】
パラメタ初期化手段３１は、パラメタθの初期値θ（０）を適当に決定して、この初期値θ（０）をパラメタ保持部１２に保持する。ここで、パラメタ初期化手段３１は、例えば、乱数を発生させて、この乱数を初期値θ（０）として決定する。
【００５７】
計算ノード部設定手段３２は、事例集合Ｘ１，Ｘ２ごとの事例数の比と、事例集合Ｘ１，Ｘ２ごとに予め設定された事例の１個あたりの処理時間ｔ１，ｔ２とに基づいて、事例集合Ｘ１，Ｘ２ごとに反復計算を行う計算ノード部５の割当数（個数）ｎ１，ｎ２を算出する。ここで、計算ノード部設定手段３２は、計算ノード部５の割当数ｎ１，ｎ２を処理時間ｔ１，ｔ２で除算した値の比と、事例数の比とからなる等式を解いて、割当数ｎ１，ｎ２を算出する。そして、計算ノード部設定手段３２は、算出した計算ノード部の個数ｎ１，ｎ２に応じて、計算ノード部５のそれぞれに事例集合Ｘ１，Ｘ２を１個割り当てた後、各計算ノード部５に割り当てた事例集合Ｘ１，Ｘ２を示す割当情報を生成する。その後、計算ノード部設定手段３２は、算出した割当数ｎ１，ｎ２と、生成した割当情報とを設定値保持部１５に保持すると共に、この割当情報を全ての計算ノード部５に出力する。なお、計算ノード部設定手段３２による割り当ての具体例は、後記する。
【００５８】
勾配計算結果初期化手段３３は、勾配計算結果保持部１４に保持された勾配累計値Ｓ１，Ｓ２と、勾配累積数ｃ１，ｃ２とをそれぞれ「０」に初期化する。
【００５９】
反復計算開始指示手段３４は、全ての計算ノード部５に対して、反復計算の開始を指示する反復計算開始指示を出力する。具体的には、反復計算開始指示手段３４は、図示を省略したタイムカウンタを「０」に初期化し、これと同時に、反復計算開始指令を全ての計算ノード部５に出力する。また、反復計算開始指示手段３４は、反復計算開始指令を出力した後、タイムカウンタをカウントアップ（更新）する。
【００６０】
反復計算終了指示手段３５は、全ての計算ノード部５に対して、反復計算の終了を指示する反復計算終了指示を出力する。具体的には、反復計算開始指示手段３４は、タイムカウンタが設定値保持部１５に保持された反復計算時間を超えたとき、反復計算終了指示を全ての計算ノード部５に出力する。
【００６１】
パラメタ更新手段３６は、全ての計算ノード部５による反復計算の結果に基づいて、パラメタ保持部１２が保持するパラメタθ（ｉ）を更新する。具体的には、パラメタ更新手段３６は、勾配計算結果保持部１４が保持する勾配累計値Ｓ１，Ｓ２および勾配累積数ｃ１，ｃ２と、関数保持部１１が保持する線形結合重みｗ１´，ｗ２´と、設定値保持部１５が保持する更新重みλとを用いて、下記の式（７）に示すように、パラメタθ（ｉ）を更新する。
【００６２】
【数７】
2012079080.tif 000009
【００６３】
終了判定手段３７は、予め設定された終了条件を満たすか否かを判定する。終了判定手段３７によって終了条件を満たすと判定された場合、パラメタ更新処理部３は、パラメタの学習を終了する。一方、終了判定手段３７によって終了条件を満たさないと判定された場合、パラメタ更新処理部３は、パラメタの学習を継続する。ここで、終了条件としては、例えば、予め設定した反復上限回数よりも反復計算の回数が多くなること、または、パラメタ保持部１２に保持されたパラメタが一定時間以上更新されないことがあげられる。
【００６４】
＜計算ノード部＞
計算ノード部５は、初期化手段５１と、反復計算開始判定手段５２と、パラメタ入力手段５３と、事例入力手段５４と、勾配計算手段５５と、勾配累積手段５６と、反復計算終了判定手段５７とを備える。
【００６５】
初期化手段５１は、計算ノード部５の初期化処理として、パラメタ更新処理部３から入力された割当情報を参照して、この計算ノード部５に何れの事例集合が割り当てられたか判別して、計算手順を入力する。例えば、初期化手段５１は、この計算ノード部５に事例集合Ｘ１が割り当てられた場合、関数保持部１１から、割り当てられた事例集合Ｘ１に対応する勾配∂ｆ１（ｘ１；θ（ｉ））／∂θ（ｉ）を計算手順として入力する。また、例えば、初期化手段５１は、この計算ノード部５に事例集合Ｘ２が割り当てられた場合、関数保持部１１から、割り当てられた事例集合Ｘ２に対応する勾配∂ｆ２（ｘ２；θ（ｉ））／∂θ（ｉ）を計算手順として入力する。
【００６６】
反復計算開始判定手段５２は、反復計算を開始するか否かを判定する。具体的には、反復計算開始判定手段５２は、パラメタ更新処理部３から反復計算開始指示が入力されたとき、反復計算を開始すると判定する。この場合、後記するパラメタ入力手段５３、事例入力手段５４、勾配計算手段５５および勾配累積手段５６が、その処理を開始する。
【００６７】
一方、反復計算開始判定手段５２は、パラメタ更新処理部３から反復計算開始指示が入力されない場合、反復計算を開始しないと判定する。この場合、計算ノード部５は、反復計算開始指示が入力されるまで待機する。
【００６８】
パラメタ入力手段５３は、パラメタ保持部１２からパラメタθ（ｉ）を入力する。
【００６９】
事例入力手段５４は、事例集合保持部１３から、計算ノード部設定手段３２によって割り当てられた事例集合に含まれる事例を入力する。具体的には、事例入力手段５４は、パラメタ更新処理部３から入力された割当情報を参照して、この計算ノード部５に何れの事例集合が割り当てられたか判別する。そして、事例入力手段５４は、割り当てられた事例集合が指定された事例要求を生成して、この事例要求を事例集合保持部１３に出力する。
【００７０】
例えば、事例入力手段５４は、この計算ノード部５に事例集合Ｘ１が割り当てられた場合、事例集合Ｘ１が指定された事例要求を生成して事例集合保持部１３に出力する。この場合、事例入力手段５４は、事例集合保持部１３から、事例集合Ｘ１から選択された事例ｘ１が１個入力される。また、例えば、事例入力手段５４は、この計算ノード部５に事例集合Ｘ２が割り当てられた場合、事例集合Ｘ２が指定された事例要求を生成して事例集合保持部１３に出力する。この場合、事例入力手段５４は、事例集合保持部１３から、事例集合Ｘ２から選択された事例ｘ２が１個入力される。
【００７１】
勾配計算手段５５は、事例入力手段５４に入力した事例を用いて、事例の勾配を反復計算する。例えば、勾配計算手段５５は、この計算ノード部５に事例集合Ｘ１が割り当てられた場合、事例入力手段５４に入力された事例ｘ１と、パラメタ入力手段５３に入力されたパラメタθ（ｉ）とを用いて、初期化手段５１に入力された勾配∂ｆ１（ｘ１；θ（ｉ））／∂θ（ｉ）を計算する。また、例えば、勾配計算手段５５は、この計算ノード部５に事例集合Ｘ２が割り当てられた場合、事例入力手段５４に入力された事例ｘ２と、パラメタ入力手段５３に入力されたパラメタθ（ｉ）とを用いて、初期化手段５１に入力された勾配∂ｆ２（ｘ２；θ（ｉ））／∂θ（ｉ）を計算する。
【００７２】
勾配累積手段５６は、勾配計算手段５５によって計算された事例の勾配を累積した勾配累計値を反復計算の結果として算出する。また、勾配累積手段５６は、勾配計算結果保持部１４に保持されている勾配累積数に「１」を加算する。
【００７３】
例えば、勾配累積手段５６は、この計算ノード部５に事例集合Ｘ１が割り当てられた場合、勾配計算手段５５が計算した勾配∂ｆ１（ｘ１；θ（ｉ））／∂θ（ｉ）を、勾配計算結果保持部１４に保持されている勾配累計値Ｓ１に加算する。このとき、勾配累積手段５６は、勾配計算結果保持部１４に保持されている勾配累積数ｃ１に「１」を加算する。また、例えば、勾配累積手段５６は、この計算ノード部５に事例集合Ｘ２が割り当てられた場合、勾配計算手段５５が計算した勾配∂ｆ２（ｘ２；θ（ｉ））／∂θ（ｉ）を、勾配計算結果保持部１４に保持されている勾配累計値Ｓ２に加算する。このとき、勾配累積手段５６は、勾配計算結果保持部１４に保持されている勾配累積数ｃ２に「１」を加算する。
【００７４】
反復計算終了判定手段５７は、反復計算を終了するか否かを判定する。具体的には、反復計算終了判定手段５７は、パラメタ更新処理部３から反復計算終了指示が入力されたとき、反復計算を終了すると判定する。この場合、計算ノード部５は、処理を終了する。
【００７５】
一方、反復計算終了判定手段５７は、パラメタ更新処理部３から反復計算終了指示が入力されない場合、反復計算を終了しないと判定する。この場合、事例入力手段５４、勾配計算手段５５および勾配累積手段５６は、その処理を反復して行う。言い換えるなら、反復計算開始指示が入力されてから反復計算終了指示が入力されるまでの間、事例入力手段５４、勾配計算手段５５および勾配累積手段５６は、その処理を反復して行うことになる。
【００７６】
＜計算ノード部設定手段による割り当て＞
以下、計算ノード部設定手段３２による割り当てについて、その具体例を説明する。ここで、事例集合Ｘ１には１００個の事例ｘ１が含まれ、事例集合Ｘ２には２００個の事例ｘ２が含まれるとする。また、事例ｘ１の１個あたりの処理時間ｔ１が１（秒）であり、事例ｘ２の１個あたりの処理時間ｔ２が２（秒）であるとする。さらに、パラメタ学習装置１は、１０個の計算ノード部５を備えるとする。
【００７７】
まず、計算ノード部設定手段３２は、事例集合保持部１３を参照し、事例集合Ｘ１に含まれる事例ｘ１の個数をカウントし、事例集合Ｘ１の事例数｜Ｘ１｜を求める。また、計算ノード部設定手段３２は、事例集合Ｘ２に含まれる事例ｘ２の個数をカウントし、事例集合Ｘ２の事例数｜Ｘ２｜を求める。
【００７８】
次に、計算ノード部設定手段３２は、事例集合Ｘ１で反復計算を行う計算ノード部５の割当数ｎ１と、事例集合Ｘ２で反復計算を行う計算ノード部５の割当数ｎ２とを算出する。つまり、計算ノード部設定手段３２は、下記の式（８）に示すように、事例数の比｜Ｘ１｜：｜Ｘ２｜と、処理時間ｔ１，ｔ２とに基づいて、割当数ｎ１，ｎ２を算出する。より具体的には、割当数ｎ１を処理時間ｔ１で除算した値と、割当数ｎ２を処理時間ｔ２で除算した値との比を、式（８）の左辺とする。そして、計算ノード部設定手段３２は、式（８）の左辺と、事例数の比｜Ｘ１｜：｜Ｘ２｜である式（８）の右辺との等式を解いて、割当数ｎ１，ｎ２を求める。
【００７９】
【数８】
2012079080.tif 000010
【００８０】
例えば、前記した値を式（８）に代入すると、式（９）に示すようになる。この場合、計算ノード部設定手段３２は、式（９）より、ｎ１：ｎ２＝４：１を求め、計算ノード部５が１０個であるため、割当数ｎ１＝２、および、割当数ｎ２＝８をそれぞれ算出する。
【００８１】
【数９】
2012079080.tif 000011
【００８２】
次に、計算ノード部設定手段３２は、算出した割当数ｎ１，ｎ２に応じて、計算ノード部５のそれぞれに事例集合Ｘ１，Ｘ２の一方を割り当てる。前記した例では、計算ノード部設定手段３２は、１０個の計算ノード部５のうち、２個の計算ノード部５を事例集合Ｘ１に割り当てると共に、８個の計算ノード部５を事例集合Ｘ２に割り当てる。ここで、計算ノード部５の演算速度が同一であると仮定するならば、計算ノード部設定手段３２は、何れの計算ノード部５を事例集合Ｘ１または事例集合Ｘ２に割り当ててもよい。例えば、計算ノード部設定手段３２は、１個目および２個目の計算ノード部５を事例集合Ｘ１に割り当てて、３個目から１０個目までの計算ノード部５を事例集合Ｘ２に割り当てるというように、順番に割り当てを行うことができる。また、例えば、計算ノード部設定手段３２は、２個の計算ノード部５をランダムに選択して、それら２個の計算ノード部５を事例集合Ｘ１に割り当てて、残り８個の計算ノード部５を事例集合Ｘ２に割り当てるというように、ランダムな割り当てを行うこともできる。
【００８３】
次に、計算ノード部設定手段３２は、例えば、１個目および２個目の計算ノード部５を事例集合Ｘ１に割り当てて、３個目から１０個目までの計算ノード部５を事例集合Ｘ２に割り当てたことを示す割当情報を生成する。最後に、計算ノード部設定手段３２は、割当数ｎ１，ｎ２および割当情報を設定値保持部１５に保持すると共に、この割当情報を全ての計算ノード部５に出力する。
【００８４】
［パラメタ更新処理部の動作］
以下、図３を参照し、パラメタ更新処理部３の動作について説明する（適宜図１参照）。
パラメタ更新処理部３は、パラメタ初期化手段３１によって、パラメタθの初期値θ（０）を決定して、この初期値θ（０）をパラメタ保持部１２に保持する（ステップＳ１１）。
【００８５】
パラメタ更新処理部３は、計算ノード部設定手段３２によって、計算ノード部５の割当数ｎ１，ｎ２を算出し、割当数ｎ１，ｎ２に応じて計算ノード部５のそれぞれに事例集合Ｘ１，Ｘ２を１個割り当てる。そして、パラメタ更新処理部３は、計算ノード部設定手段３２によって、各計算ノード部５に割り当てた事例集合Ｘ１，Ｘ２を示す割当情報を生成し、この割当情報を全ての計算ノード部５に出力する（ステップＳ１２）。
【００８６】
パラメタ更新処理部３は、勾配計算結果初期化手段３３によって、勾配計算結果保持部１４に保持された勾配累計値Ｓ１，Ｓ２と、勾配累積数ｃ１，ｃ２とをそれぞれ「０」に初期化する（ステップＳ１３）。
【００８７】
パラメタ更新処理部３は、反復計算開始指示手段３４によって、全ての計算ノード部５に対して、反復計算開始指示を出力する（ステップＳ１４）。また、パラメタ更新処理部３は、反復計算終了指示手段３５によって、反復計算開始指示の出力から反復計算時間が経過したとき、全ての計算ノード部５に対して、反復計算終了指示を出力する（ステップＳ１５）。
【００８８】
パラメタ更新処理部３は、パラメタ更新手段３６によって、全ての計算ノード部５による反復計算の結果に基づいて、パラメタ保持部１２が保持するパラメタθ（ｉ）を更新する。つまり、パラメタ更新処理部３は、パラメタ更新手段３６によって、反復計算開始指示を出力してから反復計算終了指示を出力する間、各計算ノード部５が算出した勾配累計値Ｓ１，Ｓ２および勾配累積数ｃ１，ｃ２を用いて、パラメタθ（ｉ）を更新する（ステップＳ１６）
【００８９】
パラメタ更新処理部３は、終了判定手段３７によって、終了条件を満たすか否かを判定する（ステップＳ１７）。終了判定手段３７によって終了条件を満たすと判定された場合（ステップＳ１７でＹｅｓ）、パラメタ更新処理部３は、パラメタの学習を終了する。一方、終了判定手段３７によって終了条件を満たさないと判定された場合（ステップＳ１７でＮｏ）、パラメタ更新処理部３は、ステップＳ１３の処理に戻る。
【００９０】
［計算ノード部の動作］
以下、図４を参照し、計算ノード部５の動作について説明する（適宜図１参照）。
計算ノード部５は、初期化手段５１によって、計算ノード部５の初期化を行う。具体的には、計算ノード部５は、初期化手段５１によって、パラメタ更新処理部３から入力された割当情報を用いて、この計算ノード部５に何れの事例集合が割り当てられたか判別する。そして、計算ノード部５は、初期化手段５１によって、関数保持部１１から、割り当てられた事例集合に対応する勾配を計算手順として入力する（ステップＳ２１）。
【００９１】
計算ノード部５は、反復計算開始判定手段５２によって、反復計算を開始するか否かを判定する（ステップＳ２２）。パラメタ更新処理部３から反復計算開始指示が入力されたとき（ステップＳ２２でＹｅｓ）、計算ノード部５は、反復計算開始判定手段５２によって、反復計算を開始すると判定し、ステップＳ２３の処理に進む。
【００９２】
一方、パラメタ更新処理部３から反復計算開始指示が入力されていない場合（ステップＳ２２でＮｏ）、計算ノード部５は、反復計算開始判定手段５２によって、反復計算を開始しないと判定する。この場合、計算ノード部５は、ステップＳ２２の処理に戻り、反復計算開始指示が入力されるまで待機する。
【００９３】
計算ノード部５は、パラメタ入力手段５３によって、パラメタ保持部１２からパラメタを入力する（ステップＳ２３）。そして、計算ノード部５は、事例入力手段５４によって、事例集合保持部１３から、計算ノード部設定手段３２が割り当てた事例集合に含まれる事例を１個入力する（ステップＳ２４）。
【００９４】
計算ノード部５は、勾配計算手段５５によって、事例入力手段５４に入力した事例を用いて、事例の勾配を計算する（ステップＳ２５）。そして、計算ノード部５は、勾配累積手段５６によって、勾配計算手段５５で計算した事例の勾配を累積した勾配累計値を反復計算の結果として算出する（ステップＳ２６）。
【００９５】
計算ノード部５は、反復計算終了判定手段５７によって、反復計算を終了するか否かを判定する（ステップＳ２７）。パラメタ更新処理部３から反復計算終了指示が入力されたとき（ステップＳ２７でＹｅｓ）、計算ノード部５は、反復計算終了判定手段５７によって、反復計算を終了すると判定する。この場合、計算ノード部５は、ステップＳ２２の処理に戻り、反復計算開始指示が入力されるまで待機する。
【００９６】
一方、パラメタ更新処理部３から反復計算終了指示が入力されていない場合（ステップＳ２７でＮｏ）、計算ノード部５は、反復計算終了判定手段５７によって、反復計算を終了しないと判定する。この場合、計算ノード部５は、ステップＳ２４の処理に戻り、反復計算を継続する。
【００９７】
以上のように、本発明の第１実施形態に係るパラメタ学習装置１は、事例集合ごとの事例数の比を考慮した割り当てを行うことで、各事例集合に含まれる事例が選択される回数の均衡化を図り、事例数の少ない事例集合がパラメタに与える影響を低減する。また、パラメタ学習装置１は、事例集合ごとの事例の１個あたりの処理時間を考慮した割り当てを行うことで、各計算ノード部が反復計算に要する時間の均衡化を図り、反復計算の待ち時間を短くする。従って、パラメタ学習装置１は、パラメタの正確性が高く、勾配法による学習を高速化できる。
【００９８】
なお、第１実施形態では、評価関数が２関数の線形結合で表されることとして説明したが、本発明に係るパラメタ学習装置は、３関数以上の線形結合で評価関数が表される場合にも適用することができる。例えば、評価関数が３関数の線形結合で表される場合、事例集合Ｘ３で反復計算を行う計算ノード部５の割当数ｎ３を事例ｘ３の１個あたりの処理時間ｔ１で除算した項を、前記した式（８）の左辺に追加する。また、事例集合Ｘ３の事例数｜Ｘ３｜の項を式（８）の右辺に追加する。つまり、本発明に係るパラメタ学習装置は、下記の式（１０）を解くことで、割当数ｎ１，ｎ２、および、事例集合Ｘ３で反復計算を行う計算ノード部５の割当数ｎ３を求めることができる。
【００９９】
【数１０】
2012079080.tif 000012
【０１００】
なお、第１実施形態では、計算ノード部５を１０個として説明したが、本発明において、計算ノード部の個数は、２個以上であれば、特に限定されない。
【０１０１】
なお、第１実施形態では、本発明に係るパラメタ学習装置を独立した装置として説明したが、本発明では、一般的なコンピュータを、前記した各手段として協調動作させるパラメタ学習プログラムによって実現することもできる。このパラメタ学習プログラムは、通信回線を介して配布してもよく、ＣＤ−ＲＯＭやフラッシュメモリ等の記録媒体に書き込んで配布してもよい。
【０１０２】
（変形例１：事例の割り当て）
以下、図１に戻り、本発明の変形例１に係るパラメタ学習装置１Ｂについて説明する。パラメタ学習装置１Ｂは、全ての計算ノード部５に対して、事例集合だけでなく、個々の事例も割り当てる。
【０１０３】
計算ノード部設定手段３２Ｂは、計算ノード部設定手段３２と同様、割当数ｎ１，ｎ２を算出し、算出した割当数ｎ１，ｎ２に応じて、計算ノード部５のそれぞれに事例集合Ｘ１，Ｘ２を割り当てる。そして、計算ノード部設定手段３２Ｂは、事例集合Ｘ１，Ｘ２に含まれる事例数｜Ｘ１｜，｜Ｘ２｜と、割当数ｎ１，ｎ２とに基づいて、全ての計算ノード部５に１個以上の事例ｘ１，ｘ２を割り当てる。より具体的には、計算ノード部設定手段３２Ｂは、事例数｜Ｘ１｜，｜Ｘ２｜を割当数ｎ１，ｎ２で除算することで、全ての計算ノード部５に１個以上の事例ｘ１，ｘ２を割り当てる。
【０１０４】
例えば、事例集合Ｘ１には１００個の事例ｘ１が含まれ、事例集合Ｘ２には２００個の事例ｘ２が含まれるとする。また、例えば、計算ノード部設定手段３２Ｂが、１０個の計算ノード部５のうち、１個目および２個目の計算ノード部５を事例集合Ｘ１に割り当てて、３個目から１０個目までの計算ノード部５を事例集合Ｘ２に割り当てたとする。
【０１０５】
この場合、例えば、計算ノード部設定手段３２Ｂは、事例集合Ｘ１について、事例数｜Ｘ１｜／割り当て数ｎ１＝１００／２＝５０という計算を行う。つまり、計算ノード部設定手段３２Ｂは、１個目および２個目の計算ノード部５には、それぞれ５０個の事例ｘ１を割り当てると計算する。そして、計算ノード部設定手段３２Ｂは、１個目の計算ノード部５には事例ｘ１１〜ｘ１５０を割り当てて、２個目の計算ノード部５には事例ｘ１５１〜ｘ１１００を割り当てるというように、先頭から順番に５０個ずつ事例ｘ１を割り当てる。
【０１０６】
また、計算ノード部設定手段３２Ｂは、事例集合Ｘ２について、事例数｜Ｘ２｜／割り当て数ｎ２＝２００／８＝２５という計算を行う。つまり、計算ノード部設定手段３２Ｂは、３個目から１０個目までの計算ノード部５には、それぞれ２５個の事例ｘ２を割り当てると計算する。そして、計算ノード部設定手段３２Ｂは、事例集合Ｘ２について、３個目の計算ノード部５には事例ｘ２１〜ｘ２２５を割り当てて、４個目の計算ノード部５には事例ｘ２２６〜ｘ２５０を割り当てるというように、先頭から順番に２５個ずつ事例ｘ２を割り当てる。その後、計算ノード部設定手段３２Ｂは、割り当てた事例集合と事例とを示す割当情報を生成して、全ての計算ノード部５に出力する。
【０１０７】
以下、事例入力手段５４Ｂおよび事例集合保持部１３Ｂについて補足する。ここで、事例入力手段５４Ｂは、１個目の計算ノード部５に備えられているとする。
事例入力手段５４Ｂは、事例集合Ｘ１、および、事例ｘ１１〜ｘ１５０が割り当てられたことを示す割当情報が入力される。そして、事例入力手段５４Ｂは、この割当情報で指定された事例集合Ｘ１と、事例ｘ１１〜ｘ１５０を先頭から１個ずつ順に指定した事例要求を生成して、事例集合保持部１３Ｂに出力する。例えば、１回目の勾配計算において、事例入力手段５４Ｂは、事例集合Ｘ１と、先頭の事例ｘ１１とを指定した事例要求を生成して、事例集合保持部１３Ｂに出力する。
【０１０８】
事例集合保持部１３Ｂは、事例入力手段５４Ｂからの事例要求に応じて、その事例要求で指定された事例を事例入力手段５４Ｂに出力する。前記した例では、事例集合保持部１３Ｂは、事例集合Ｘ１に含まれる先頭の事例ｘ１１を事例入力手段５４Ｂに出力する。
【０１０９】
（変形例２：事例が無限に発生する場合）
以下、図５を参照し、本発明の変形例２に係るパラメタ学習装置１Ｃについて説明する。
例えば、インターネット上には、記事、論文、個人の趣味に関するものなど、内容を問わず、新たな文書が次々と公開されている。このとき、これら文書に含まれる文章を事例ｘ１として集合させた事例集合Ｘ１として定義し、これら文書に含まれる単語を事例ｘ２として集合させた事例集合Ｘ２と定義するならば、事例ｘ１，ｘ２は無限に発生するといえる。そこで、パラメタ学習装置１Ｃは、無数に発生する事例を用いて、パラメタの学習を行うため、事例集合生成手段１６をさらに備える。
【０１１０】
設定値保持部１５Ｃは、図１の設定値保持部１５と同様に、計算ノード部５の割当数ｎ１，ｎ２と、計算ノード部５の割当情報とを保持する。さらに、設定値保持部１５Ｃは、後記する予測相対比を予め保持する。
【０１１１】
事例集合生成手段１６は、インターネットなどの外部から事例集合を生成して事例集合保持部１３に保持する。例えば、事例集合生成手段１６は、従来の検索ロボットと同様に、インターネットで公開されているＷｅｂページを巡回し、各Ｗｅｂページに含まれる文書情報（例えば、日本語のテキスト情報）を取得する。そして、事例集合生成手段１６は、取得した文書情報を句点単位で区切ることで文書情報に含まれる文章を判別し、各文章（事例ｘ１）が集合した事例集合Ｘ１を生成する。また、事例集合生成手段１６は、取得した文書情報を形態素解析することで文書情報に含まれる単語を判別し、各単語（事例ｘ２）が集合した事例集合Ｘ２を生成する。
【０１１２】
計算ノード部設定手段３２Ｃは、設定値保持部１５Ｃに保持された予測相対比を用いて、計算ノード部５の割り当てを行う。ここで、事例が無限に発生するため、計算ノード部設定手段３２Ｃは、事例集合Ｘ１の事例数｜Ｘ１｜および事例集合Ｘ２の事例数｜Ｘ２｜をカウントできないため、予測相対比を用いる。つまり、この予測相対比は、前記した式（８）の右辺に相当するものであり、例えば、１つの文章に２０個の単語が含まれると経験的に判っている場合、「１：２０」となる。そして、計算ノード部設定手段３２Ｃは、前記した式（８）右辺に予測相対比を代入して、図１の計算ノード部設定手段３２と同様に計算ノード部５の割当数ｎ１，ｎ２を計算し、計算ノード部５の割り当てを行う。
【０１１３】
（変形例３：処理時間の補正）
［パラメタ学習装置の構成］
以下、図６を参照し、本発明の変形例３に係るパラメタ学習装置１Ｄの構成ついて説明する。
ここで、例えば、反復計算を繰り返してパラメタθの学習が進むにつれ、パラメタθが正確になり、勾配の反復計算に要する処理時間ｔ１，ｔ２が大きく変化する場合がある。そこで、パラメタ学習装置１Ｄは、処理時間ｔ１，ｔ２を補正するため、処理時間補正手段３８をさらに備える。
【０１１４】
処理時間補正手段３８は、設定値保持部１５に保持された反復計算時間を、勾配計算結果保持部１４に保持された勾配累積数ｃ１，ｃ２で除算することで処理時間補正値ｔ１´，ｔ２´を算出し、処理時間ｔ１，ｔ２を処理時間補正値ｔ１´，ｔ２´に補正する。
【０１１５】
例えば、処理時間補正手段３８は、ｔ１´＝Ｔ／ｃ１という計算を行って処理時間補正値ｔ１´を算出する。このとき、処理時間補正手段３８は、処理時間補正値ｔ１´に端数が生じる場合、四捨五入してもよい。そして、処理時間補正手段３８は、設定値保持部１５に保持された処理時間ｔ１を処理時間補正値ｔ１´に書き換える。なお、処理時間補正手段３８は、処理時間ｔ１についても、処理時間ｔ２と同様に補正できる。
【０１１６】
［パラメタ更新処理部の動作］
以下、図７を参照し、図６のパラメタ更新処理部３の動作ついて、図３と異なる点を説明する。
ステップＳ１１の処理からステップＳ１６の処理は、図３の各ステップと同様の処理のため、説明を省略する。
【０１１７】
パラメタ更新処理部３は、処理時間補正手段３８によって、設定値保持部１５に保持された反復計算時間を、勾配計算結果保持部１４に保持された勾配累積数ｃ１，ｃ２で除算することで処理時間補正値ｔ１´，ｔ２´を算出し、処理時間ｔ１，ｔ２を処理時間補正値ｔ１´，ｔ２´に補正する（ステップＳ１７’）。
【０１１８】
パラメタ更新処理部３は、終了判定手段３７によって、終了条件を満たすか否かを判定する（ステップＳ１８）。終了判定手段３７によって終了条件を満たすと判定された場合（ステップＳ１８でＹｅｓ）、パラメタ更新処理部３は、パラメタの学習を終了する。一方、終了判定手段３７によって終了条件を満たさないと判定された場合（ステップＳ１８でＮｏ）、パラメタ更新処理部３は、ステップＳ１２の処理に戻る。
【０１１９】
つまり、パラメタ更新処理部３は、補正した処理時間ｔ１，ｔ２を用いて、再度、計算ノード部５を割り当てることになる。従って、本発明の変形例３に係るパラメタ学習装置１Ｄは、パラメタθが正確になるにつれて勾配の反復計算に要する処理時間ｔ１，ｔ２が大きく変化する場合でも、処理時間ｔ１，ｔ２補正することで適切な割り当てを可能とし、反復計算の待ち時間を短くすることができる。
【０１２０】
（第２実施形態）
［パラメタ学習装置の構成］
以下、図８を参照し、本発明の第２実施形態に係るパラメタ学習装置１Ｅの構成について、第１実施形態と異なる点を説明する。図８に示すように、パラメタ学習装置１Ｅは、１台のパラメタ更新処理装置３Ｅと、複数の計算ノード装置５Ｅとを備える。ここで、パラメタ更新処理装置３Ｅおよび計算ノード装置５Ｅは、個別のコンピュータとして構成され、互いにネットワークで接続されている。
【０１２１】
パラメタ更新処理装置３Ｅは、関数保持部１１と、パラメタ保持部１２と、事例集合保持部１３と、勾配計算結果保持部１４と、設定値保持部１５と、パラメタ更新処理部３と、入出力インタフェース４１とを備える。
【０１２２】
入出力インタフェース４１は、計算ノード装置５Ｅとの間で各保持部に保持されたデータなどを入出力するインタフェースである。
なお、パラメタ更新処理装置３Ｅが備える他の手段は、第１実施形態と同様のため、説明を省略する。
【０１２３】
計算ノード装置５Ｅは、計算ノード部５と、入出力インタフェース６３とを備える。
入出力インタフェース６３は、ネットワークを介して、パラメタ更新処理装置３Ｅとの間で、各保持部に保持されたデータなどを入出力するインタフェースである。
なお、計算ノード装置５Ｅが備える他の手段は、第１実施形態と同様のため、説明を省略する。
【０１２４】
［パラメタ学習装置の動作］
以下、図９，図１０を参照し、パラメタ学習装置１Ｅの動作について説明する（適宜図８参照）なお、図９がシーケンス図の前半部分であり、図１０が図９の続きである。また、図９，図１０では、縦軸を時間軸とする。さらに、図９，図１０の各ステップは、図３，図４において、同一符号で図示したステップに対応する。
【０１２５】
ステップＳ２５Ａ，Ｓ２５Ｂの処理は、図４ステップＳ２５と同様の処理であるが、処理時間が異なるために別の符号を付した。つまり、計算ノード部５Ｘ１が勾配計算に要する処理時間ｔａ（ステップＳ２５Ａの処理時間）が、計算ノード部５Ｘ２が勾配計算に要する処理時間ｔｂ（ステップＳ２５Ｂの処理時間）より短いとする。なお、図９，図１０では、計算ノード部５Ｘ１，５Ｘ２を１個ずつ図示したが、複数であってもよい。
【０１２６】
パラメタ更新処理部３は、パラメタ初期化手段３１によって、パラメタθの初期値θ（０）を決定して、この初期値θ（０）をパラメタ保持部１２に保持する（ステップＳ１１）。
【０１２７】
パラメタ更新処理部３は、計算ノード部設定手段３２によって、計算ノード部５の割当数ｎ１，ｎ２を算出し、割当数ｎ１，ｎ２に応じて計算ノード部５Ｘ１，５Ｘ２に事例集合Ｘ１，Ｘ２を１個割り当てる。そして、パラメタ更新処理部３は、計算ノード部設定手段３２によって、計算ノード部５Ｘ１，５Ｘ２に割り当てた事例集合Ｘ１，Ｘ２を示す割当情報を生成し、この割当情報を計算ノード部５Ｘ１，５Ｘ２に出力する（ステップＳ１２）。
【０１２８】
パラメタ更新処理部３は、勾配計算結果初期化手段３３によって、勾配計算結果保持部１４に保持された勾配累計値Ｓ１，Ｓ２と、勾配累積数ｃ１，ｃ２とをそれぞれ「０」に初期化する（ステップＳ１３）。
【０１２９】
ステップＳ１１〜Ｓ１３の処理と並行して、計算ノード部５Ｘ１は、ステップＳ２１，Ｓ２２の処理を行う。まず、計算ノード部５Ｘ１は、初期化手段５１によって、計算ノード部５Ｘ１の初期化を行う（ステップＳ２１）。
【０１３０】
計算ノード部５Ｘ１は、反復計算開始判定手段５２によって、反復計算を開始するか否かを判定する（ステップＳ２２）。ここで、パラメタ更新処理部３から反復計算開始指示が入力されていないので、計算ノード部５Ｘ１は、反復計算開始判定手段５２によって、反復計算を開始しないと判定する。従って、計算ノード部５Ｘ１は、反復計算開始指示が入力されるまで待機する。
なお、計算ノード部５Ｘ２におけるステップＳ２１，Ｓ２２の処理は、説明を省略する。
【０１３１】
パラメタ更新処理部３は、反復計算開始指示手段３４によって、計算ノード部５Ｘ１，５Ｘ２に対して、反復計算開始指示を出力する（ステップＳ１４）。
【０１３２】
ステップＳ１４の処理に応じて、計算ノード部５Ｘ１は、ステップＳ２２以降の処理を行う。計算ノード部５Ｘ１は、反復計算開始判定手段５２によって、反復計算を開始するか否かを判定する（ステップＳ２２）。ここで、パラメタ更新処理部３から反復計算開始指示が入力されたので、計算ノード部５Ｘ１は、反復計算開始判定手段５２によって、反復計算を開始すると判定し、ステップＳ２３の処理に進む。
【０１３３】
計算ノード部５Ｘ１は、パラメタ入力手段５３によって、パラメタ保持部１２からパラメタθ（ｉ）を入力する（ステップＳ２３）。そして、計算ノード部５Ｘ１は、事例入力手段５４によって、事例集合保持部１３から、計算ノード部設定手段３２が割り当てた事例集合Ｘ１に含まれる事例ｘ１を１個入力する（ステップＳ２４）。
【０１３４】
計算ノード部５Ｘ１は、勾配計算手段５５によって、事例入力手段５４に入力した事例ｘ１を用いて、事例の勾配∂ｆ１（ｘ１；θ（ｉ））／∂θ（ｉ）を計算する（ステップＳ２５Ａ）。そして、計算ノード部５Ｘ１は、勾配累積手段５６によって、勾配計算手段５５で計算した事例の勾配を累積した勾配累計値Ｓ１を反復計算の結果として算出する（ステップＳ２６）。
【０１３５】
計算ノード部５Ｘ１は、反復計算終了判定手段５７によって、反復計算を終了するか否かを判定する（ステップＳ２７）。ここで、パラメタ更新処理部３から反復計算終了指示が入力されていないので、計算ノード部５Ｘ１は、反復計算終了判定手段５７によって、反復計算を終了しないと判定する。つまり、計算ノード部５Ｘ１は、反復計算終了指示が入力されるまで、ステップＳ２４〜Ｓ２７の処理を繰り返す。
【０１３６】
ステップＳ１４の処理に応じて、計算ノード部５Ｘ２は、計算ノード部５Ｘ１と同様、ステップＳ２２以降の処理を行う。そして、計算ノード部５Ｘ２は、計算ノード部５Ｘ１と同様、反復計算終了指示が入力されるまで、ステップＳ２４〜Ｓ２７の処理を繰り返す。
【０１３７】
図１０に示すように、反復計算時間が経過したとき、パラメタ更新処理部３は、反復計算終了指示手段３５によって、計算ノード部５Ｘ１，５Ｘ２に対して、反復計算終了指示を出力する（ステップＳ１５）。
【０１３８】
ステップＳ１５の処理に応じて、計算ノード部５Ｘ１は、反復計算終了判定手段５７によって、反復計算を終了すると判定する。また、計算ノード部５Ｘ２は、計算ノード部５Ｘ１と同様、反復計算を終了すると判定する（ステップＳ２７）
【０１３９】
パラメタ更新処理部３は、パラメタ更新手段３６によって、計算ノード部５Ｘ１，５Ｘ２による反復計算の結果に基づいて、パラメタ保持部１２が保持するパラメタθ（ｉ）を更新する（ステップＳ１６）。
【０１４０】
パラメタ更新処理部３は、終了判定手段３７によって、終了条件を満たすか否かを判定する（ステップＳ１７）。終了判定手段３７によって終了条件を満たすと判定された場合、パラメタ更新処理部３は、パラメタの学習を終了する。一方、終了判定手段３７によって終了条件を満たさないと判定された場合、パラメタ更新処理部３は、図９のステップＳ１３の処理に戻る。
【０１４１】
以上のように、本発明の第２実施形態に係るパラメタ学習装置Ｅは、事例集合ごとの事例数の比を考慮した割り当てを行うことで、各事例集合に含まれる事例が選択される回数の均衡化を図り、事例数の少ない事例集合がパラメタに与える影響を低減する。また、パラメタ学習装置１は、事例集合ごとの事例の１個あたりの処理時間ｔａ，ｔｂを考慮した割り当てを行うことで、計算ノード部５Ｘ１，５Ｘ２が反復計算に要する時間（図１０の例では、計算ノード部５Ｘ１，５Ｘ２がステップＳ２６を終了してから、反復計算終了指示を出力するまでの時間）の均衡化を図り、反復計算の待ち時間を短くする。
【０１４２】
従って、本発明の第２実施形態に係るパラメタ学習装置１Ｅは、複数のコンピュータがネットワークで接続されている環境においても、各コンピュータを計算ノード部としてそれぞれ扱うことで、パラメタθの正確性を高くすると共に、勾配法による学習を高速化できる。
【産業上の利用可能性】
【０１４３】
本発明に係るパラメタ学習装置は、様々な分野の機械学習に利用することができ、例えば、自然言語処理、音声認識処理および画像認識処理に利用することができる。
【符号の説明】
【０１４４】
１，１Ｂ，１Ｃ，１Ｄ，１Ｅ  パラメタ学習装置
１１  関数保持部
１２  パラメタ保持部
１３，１３Ｂ  事例集合保持部
１４  勾配計算結果保持部
１５，１５Ｃ  設定値保持部
１６  事例集合生成手段
３  パラメタ更新処理部
３１  パラメタ初期化手段
３２，３２Ｂ，３２Ｃ  計算ノード部設定手段
３３  勾配計算結果初期化手段
３４  反復計算開始指示手段
３５  反復計算終了指示手段
３６  パラメタ更新手段
３７  終了判定手段
３８  処理時間補正手段
５  計算ノード部
５１  初期化手段
５２  反復計算開始判定手段
５３  パラメタ入力手段
５４，５４Ｂ  事例入力手段
５５  勾配計算手段
５６  勾配累積手段
５７  反復計算終了判定手段
【図１】
2012079080.tif 000013
【図２】
2012079080.tif 000014
【図３】
2012079080.tif 000015
【図４】
2012079080.tif 000016
【図５】
2012079080.tif 000017
【図６】
2012079080.tif 000018
【図７】
2012079080.tif 000019
【図８】
2012079080.tif 000020
【図９】
2012079080.tif 000021
【図１０】
2012079080.tif 000022