IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立ヴァンタラ株式会社の特許一覧

特許7628866情報処理システム、情報処理方法、及び情報処理プログラム
<>
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図1
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図2
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図3
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図4
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図5
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図6
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図7
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図8
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図9
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図10
  • 特許-情報処理システム、情報処理方法、及び情報処理プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-03
(45)【発行日】2025-02-12
(54)【発明の名称】情報処理システム、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
   G06F 17/10 20060101AFI20250204BHJP
   G06N 99/00 20190101ALI20250204BHJP
【FI】
G06F17/10 Z
G06N99/00 180
【請求項の数】 14
(21)【出願番号】P 2021062592
(22)【出願日】2021-04-01
(65)【公開番号】P2022158010
(43)【公開日】2022-10-14
【審査請求日】2024-03-07
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】奥山 拓哉
【審査官】坂東 博司
(56)【参考文献】
【文献】国際公開第2020/202312(WO,A1)
【文献】特開2020-204929(JP,A)
【文献】米国特許出願公開第2016/0260013(US,A1)
【文献】OKUYAMA, Takuya et al.,,"Binary optimization by momentum annealing", Physical Review E [online],,Vol. 100,Iss. 1,米国,American Physical Society,2019年07月10日,pp.012111-1~012111-9,[online],[令和 6年11月22日検索],インターネット<URL:https://journals.aps.org/pre/pdf/10.1103/PhysRevE.100.012111>, DOI:10.1103/PhysRevE.100.012111,DOI:10.1103/PhysRevE.100.012111
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
行列積を用いて最適化問題の最適解探索を行う情報処理システムであって、
記憶部と協働して処理を実行する処理部を有し、
前記処理部は、
前記最適化問題を、第1の状態変数ベクトルと所定行列と第2の状態変数ベクトルとの積を含んだ目的関数で表される二次計画問題に変換する変換処理と、
前記所定行列と前記第1の状態変数ベクトルとを乗算して第1ベクトルを計算し、該第1ベクトルに基づくパラメータを含んだ確率分布に基づいて前記第2の状態変数ベクトルの確率的更新を行い、前記所定行列と前記第2の状態変数ベクトルとを乗算して第2ベクトルを計算し、該第2ベクトルに基づくパラメータを含んだ確率分布に基づいて前記第1の状態変数ベクトルの確率的更新を行う処理を繰り返すことで、前記第1の状態変数ベクトル及び前記第2の状態変数ベクトルの確率的更新を行う状態更新処理と、
前記第1の状態変数ベクトルと前記第2ベクトルとの内積によって前記積を計算することで、前記目的関数の関数値を算出する関数値算出処理と
を実行することを特徴とする情報処理システム。
【請求項2】
請求項1に記載の情報処理システムであって、
前記処理部は、
前記状態更新処理及び前記関数値算出処理を、前記第1の状態変数ベクトル及び前記第2の状態変数ベクトルに対応する複数のレプリカ毎に独立かつ並行に実行する
ことを特徴とする情報処理システム。
【請求項3】
請求項2に記載の情報処理システムであって、
複数の演算装置を有し、
前記処理部は、
前記レプリカ毎の前記状態更新処理及び前記関数値算出処理を、前記複数の演算装置によって実行する
ことを特徴とする情報処理システム。
【請求項4】
請求項3に記載の情報処理システムであって、
前記処理部は、
前記関数値算出処理によって前記レプリカ毎の前記関数値を算出し、
前記レプリカ毎の前記関数値及び逆温度の差分に基づいて前記レプリカ毎の重みを算出し、該重みに基づいて、前記複数のレプリカから選択するレプリカの選択数を決定するリサンプリング処理を実行する
ことを特徴とする情報処理システム。
【請求項5】
請求項4に記載の情報処理システムであって、
前記選択数は、前記複数のレプリカの合計数と同一である
ことを特徴とする情報処理システム。
【請求項6】
請求項4に記載の情報処理システムであって、
前記選択数は、前記複数のレプリカの合計数よりも多い
ことを特徴とする情報処理システム。
【請求項7】
請求項4に記載の情報処理システムであって、
前記選択数は、前記複数のレプリカの合計数よりも少ない
ことを特徴とする情報処理システム。
【請求項8】
請求項4に記載の情報処理システムであって、
前記処理部は、
前記リサンプリング処理において、前記選択数に応じて、前記選択するレプリカが配置される前記演算装置に該レプリカのコピーを配置可能である場合には該演算装置を該レプリカのコピーを配置するコピー先として決定し、配置不可能である場合には他の前記演算装置を前記コピー先として決定する
ことを特徴とする情報処理システム。
【請求項9】
行列積を用いて最適化問題の最適解探索を行う情報処理システムが行う情報処理方法であって、
前記最適化問題を、第1の状態変数ベクトルと所定行列と第2の状態変数ベクトルとの積を含んだ目的関数で表される二次計画問題に変換する変換処理と、
前記所定行列と前記第1の状態変数ベクトルとを乗算して第1ベクトルを計算し、該第1ベクトルに基づくパラメータを含んだ確率分布に基づいて前記第2の状態変数ベクトルの確率的更新を行い、前記所定行列と前記第2の状態変数ベクトルとを乗算して第2ベクトルを計算し、該第2ベクトルに基づくパラメータを含んだ確率分布に基づいて前記第1の状態変数ベクトルの確率的更新を行う処理を繰り返すことで、前記第1の状態変数ベクトル及び前記第2の状態変数ベクトルの確率的更新を行う状態更新処理と、
前記第1の状態変数ベクトルと前記第2ベクトルとの内積によって前記積を計算することで、前記目的関数の関数値を算出する関数値算出処理と
を含んだことを特徴とする情報処理方法。
【請求項10】
請求項9に記載の情報処理方法であって、
前記状態更新処理及び前記関数値算出処理は、
前記第1の状態変数ベクトル及び前記第2の状態変数ベクトルに対応する複数のレプリカ毎に独立かつ並行に実行される
ことを特徴とする情報処理方法。
【請求項11】
請求項10に記載の情報処理方法であって、
前記情報処理システムは、複数の演算装置を有し、
前記レプリカ毎の前記状態更新処理及び前記関数値算出処理は、前記複数の演算装置によって実行される
ことを特徴とする情報処理方法。
【請求項12】
請求項11に記載の情報処理方法であって、
前記関数値算出処理によって前記レプリカ毎の前記関数値を算出し、
前記レプリカ毎の前記関数値及び逆温度の差分に基づいて前記レプリカ毎の重みを算出し、該重みに基づいて、前記複数のレプリカから選択するレプリカの選択数を決定するリサンプリング処理
を含んだことを特徴とする情報処理方法。
【請求項13】
請求項12に記載の情報処理方法であって、
前記リサンプリング処理において、前記選択数に応じて、前記選択するレプリカが配置される前記演算装置に該レプリカのコピーを配置可能である場合には該演算装置が該レプリカのコピーを配置するコピー先として決定され、配置不可能である場合には他の前記演算装置が前記コピー先として決定される
ことを特徴とする情報処理方法。
【請求項14】
請求項1~8の何れか1項に記載の情報処理システムとしてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
特許文献1には、「イジングモデルの1つのスピンを3以上の状態で表現する値を記憶する第1のメモリセルと、1つのスピンに相互作用を及ぼす他のスピンからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、他のスピンの状態を表現する値と前記相互作用係数を定数または変数として持つ関数に基づいて、1つのスピンの次状態を決定する論理回路と、を有する単位ユニットを複数備える半導体装置」が開示されている。
【0003】
また、特許文献2には、任意の結合を持つイジングモデルに対して、マルコフ連鎖モンテカルロ法の要求する理論的背景を満たしつつ、全スピンを同時に確率的更新して最適解探索を実現する方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2016-51314号公報
【文献】国際公開第2019/216277号公報
【非特許文献】
【0005】
【文献】Okuyama, T., Sonobe, T., Kawarabayashi, K. I., &Yamaoka, M. (2019). Binary optimization by momentum annealing. Physical ReviewE, 100(1), 012111.
【文献】Botev, Z. I. (2017). The normal law under linearrestrictions: simulation and estimation via minimax tilting. Journal of theRoyal Statistical Society: Series B (Statistical Methodology), 79(1), 125-148.
【文献】Neal, R. M. (1998). Suppressing random walks in Markovchain Monte Carlo using ordered overrelaxation. In Learning in graphical models(pp. 205-228). Springer, Dordrecht.
【発明の概要】
【発明が解決しようとする課題】
【0006】
物理現象や社会現象の多くは相互作用モデルで表現可能である。相互作用モデルは、モデルを構成する複数のノードと、ノード間の相互作用、さらに必要であればノード毎に作用する係数で定義される。物理学や社会科学の分野においては、イジングモデルを始めとする種々のモデルが提案されているが、いずれも相互作用モデルの一形態として解釈することができる。
【0007】
この相互作用モデルに関係づけられた指標を最小化又は最大化するノード状態を求めることが社会課題の解決において重要である。例えば、ソーシャルネットワークのクリークを検知する問題や、金融分野のポートフォリオ最適化問題が挙げられる。これらは、オペレーションズ・リサーチの分野では、無制約二値二次計画問題や混合二値二次計画問題に大別される。
【0008】
本発明は上述の背景に鑑みてなされたもので、相互作用モデルの基底状態探索を含む最適化問題の最適解探索を高速化する技術の提供を目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決するため、本発明の一態様では、行列積を用いて最適化問題の最適解探索を行う情報処理システムであって、記憶部と協働して処理を実行する処理部を有し、前記処理部は、前記最適化問題を、第1の状態変数ベクトルと所定行列と第2の状態変数ベクトルとの積を含んだ目的関数で表される二次計画問題に変換する変換処理と、前記所定行列と前記第1の状態変数ベクトルとを乗算して第1ベクトルを計算し、該第1ベクトルに基づくパラメータを含んだ確率分布に基づいて前記第2の状態変数ベクトルの確率的更新を行い、前記所定行列と前記第2の状態変数ベクトルとを乗算して第2ベクトルを計算し、該第2ベクトルに基づくパラメータを含んだ確率分布に基づいて前記第1の状態変数ベクトルの確率的更新を行う処理を繰り返すことで、前記第1の状態変数ベクトル及び前記第2の状態変数ベクトルの確率的更新を行う状態更新処理と、前記第1の状態変数ベクトルと前記第2ベクトルとの内積によって前記積を計算することで、前記目的関数の関数値を算出する関数値算出処理とを実行することを特徴とする。
【発明の効果】
【0010】
本発明によれば、相互作用モデルの基底状態探索を含む最適化問題の最適解探索を高速化できる。
上記した以外の課題、構成及び効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【0011】
図1】最適化問題の変数配列及び目的関数値の関係を例示する概念図である。
図2】最適化問題の目的関数の各変数間の関係を例示する図である。
図3】最適化問題の目的関数の各変数間の関係を例示する図である。
図4】複数のレプリカにおける最適解探索処理を例示する図である。
図5】実施形態に係る情報処理装置を実現するコンピュータのハードウェアを例示する図である。
図6】実施形態に係る演算装置を構成する演算回路を例示する機能ブロック図である。
図7】実施形態に係る情報処理装置の構成を例示する機能ブロック図である。
図8】実施形態に係る情報処理装置が実行する最適解探索処理を例示するフローチャートである。
図9】相互作用演算処理の詳細を例示するフローチャートである。
図10】リサンプリングによるレプリカ数の推移のシミュレーション結果を例示す図である。
図11】実施形態による計算速度を比較例と比較したシミュレーション結果を例示する図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施形態を説明する。実施形態は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でもよい。
【0013】
同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0014】
実施形態において、プログラムを実行して行う処理について説明する場合がある。ここで、計算機は、プロセッサ(例えばCPU、GPU)によりプログラムを実行し、記憶資源(例えばメモリ)やインターフェースデバイス(例えば通信ポート)等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。ここで、専用回路とは、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)等である。
【0015】
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0016】
(実施形態の理論的背景)
相互作用モデルに関連付けられた目的関数を最適化する最適化問題の変数をs,…,sのN個とし、各変数sの定義域Dを2値{-1,+1}又は連続値[-1,+1]のいずれかであるとする。各変数sの定義域Dがどちらであるかは問題毎に決定される。そして、最適化問題の目的関数Hは式1で表される。すなわち、目的関数Hが変数sの2次式で表される。
【0017】
【数1】
式1において、s=[s,…,s]のN次元ベクトル、JはN×N対称行列、hはN次元ベクトルである。前述の通り、変数毎に定義域が異なるので、最適化問題は式2の通りに表される。
【0018】
【数2】
ここで、添字の集合Λ、Λを式3の通り定義する。
【0019】
【数3】
集合Smixed={s|s∈D}を定義する。これらの表記を用いると、式2は式4のように表現できる。
【0020】
【数4】
以降、すべてのi∈Λに対して行列Jのi行i列目の要素は0とする。なぜならば、この変換は式2の最適解を変えないためである。
【0021】
もしすべてのiに対してD={-1,+1}ならば、この最適化問題はイジングモデルの基底状態探索問題と呼ばれる組合せ最適化問題である。本実施形態では、イジングモデルの基底状態探索を含む最適化問題において、マルコフ連鎖モンテカルロ法(以降、MCMC(Markov Chain Monte Carlo methods)と称する)を活用したアルゴリズムで最適解もしくは近似解を探索する。
【0022】
図1は、最適化問題の変数配列及び目的関数値の関係を例示する概念図であり、変数配列に対する目的関数値のランドスケープを表す。グラフの横軸は変数配列s、縦軸は目的関数H(s)の値である。MCMCは現在の状態sから、状態sの近傍のある状態s’への確率的な遷移を繰り返す。状態sから状態s’に遷移する確率を、遷移確率P(s,s’)と称する。遷移確率Pの例としてメトロポリス法(Metropolis method)や熱浴法(heat-bath algorithm)が挙げられる。
【0023】
遷移確率は温度と呼ばれるパラメータを有し、これは状態間の遷移のし易さを表す。温度を大きな値から徐々に減少させつつMCMCを実行するとき、目的関数値が最も低い状態(最低エネルギーの状態、図1のX)に漸近的に収束する。これを利用して最小化問題の最適解又は近似解を求める手法が、シミュレーティッド・アニーリング(以下、SA(Simulated Annealing)と称する)や非特許文献1で提案されたモメンタム・アニーリング(以下、MA(Momentum Annealing)と称する)である。
【0024】
式4に示す最小化問題を解くにあたり、代わりに式5の最小化問題を解くことを考える。ただし集合Srelaxed={s|si∈[-1,+1]}である。
【0025】
【数5】
【0026】
式5の最適解をs=[s ,…,s ]と表す。証明は割愛するが、式6で求まるs=[s ,…,s ]は式4の最適解の一つとなる。本実施形態の目標は式2の最適解探索であるが、式5の最適解sを求解後に式6の変換を得ても、所望の解sを得られるということである。ただし、関数sgnは引数が0以上ならば+1、それ以外ならば-1を返す関数である。
【0027】
【数6】
【0028】
ここで、N次元ベクトルv=[v1,…,v]を導入して、式7に示す関数H’を定義する。
【0029】
【数7】
【0030】
ただし、関数V(v)は式8に記す定義の通りである。
【0031】
【数8】
【0032】
行列W=diag(w,…,w)は任意の対角行列で、viは[-1,+1]を動く実数である。式5に示す最小化問題の代わりにH’(s、v)の最小化問題である式9を導入する。
【0033】
【数9】
【0034】
2つのN次元ベクトルx=s+v、y=s-vを定義する。本来解きたい最適化問題の目的関数はHのみだが、ここにVという関数を導入することで、MCMCで並列更新可能な関数を新たに得られるようにしている。すると、関数H’は式10と書き直せる。
【0035】
【数10】
【0036】
つまり、式5の最小化問題は式11の最小化問題と言い換えられる。
【0037】
【数11】
【0038】
式11の最適解をx、yと表すと、s=(x+y)/2なる等式が成り立つ。これらの議論はWが零行列でも成り立つ。
【0039】
以上より、式2で表す最適化問題の最適解は、式11に示す制約付き二次計画問題の解から求められる。この解を求めるために、MCMCを活用する。
【0040】
図2は、最適化問題の目的関数の各変数間の関係を例示する図であり、式11における関数Gの各変数どうしの関係を示したグラフィカルモデルを表す。図2では、N=6の場合を例示しているが、一般的なNについても同様である。関数Gの各変数どうしの関係は、完全2部グラフで表すことができる。関数G内で変数xに乗ぜられる変数は、y,…,yとxのみである。MCMCは変数値を確率的に更新するとき、その変数に係わる変数の値を用いる。つまり、変数xの値を更新するときy,…,y及びxを求め、それ以外の変数(ここではx,…,x)を参照しない。これは他の変数、例えばxの値の更新でも同様である。ゆえに、変数配列yの値が一定ならば、配列xのそれぞれの値を独立に同時に確率的更新してもMCMCの理論的要請は破らない。
【0041】
同様に変数yに乗ぜられる変数も、x,…,xとyのみである。ゆえに、変数配列xの値が一定の下で、配列yのそれぞれの値を独立に同時に確率的更新できる。
【0042】
以上より、「x,…,xの同時更新」と「y,…,yの同時更新」を繰り返す手続きで構成されたMCMCを実行することで、並列化による高速化という利点を享受しながら関数Gを最小化する配列x、yを探索できる。
【0043】
本実施形態の議論では、行列Jに制約を設けていないことに注意されたい。たとえば行列Jの全要素が非零である場合にも、上記の議論が成り立つため、並列更新が可能である。
【0044】
図3は、最適化問題の目的関数の各変数間の関係を例示する図であり、全結合グラフの例である。図3では、N=6の場合を例示しているが、一般的なNについても同様である。一方で、原問題である式2の最小化問題に対して直接MCMCを適用する場合、変数配列sの係わり方が図3に示すように全結合グラフで表現されるため、一度に一変数しか確率更新できず、逐次更新に限定される。
【0045】
ここからは、各変数に対する確率的更新の手続きを述べる。更新対象の変数をxとする。変数y,…,yの値が一定下では、温度Tのボルツマン分布における変数xの存在確率p(x)は式12を満たす。
【0046】
【数12】
【0047】
ただし、変数Aiは式13で求める値である。
【0048】
【数13】
【0049】
変数xとyは|x|+|y|≦2であるため、xを動かせる範囲は-(2-|y|)以上(2-|y|)以下である。よって、変数xは平均Ai/wi、分散T/wiの正規分布で-(2-|y|)以上(2-|y|)以下を定義域とする切断正規分布を基に、xの次状態をサンプリングすればよい。この方法ではxの現在の状態には依らずに次状態を決めるということである。yについても同様である。本明細書では、xとyの変数を区別しない場合sと表記することがある。
【0050】
標準正規分布に従う乱数はBox-Muller法で生成可能である。ここでは定義域が限定されるため、非特許文献2で示されたアルゴリズムを用いればよい。
【0051】
最適解探索は、温度0における平衡状態からのサンプリングと見なせる。そのため、良質な解探索の実現には、平衡状態への短時間での収束が好ましい。平衡状態への収束性を高めるため、MCMCでは様々な技術が提案されており、これらの活用も可能である。たとえば、非特許文献3は過剰緩和法を提案している。これは次状態の候補として、温度Tのボルツマン分布から1つだけではなく、K個の状態をサンプリングする。そして、サンプリングしたK個の状態に加えて、現在の状態の計(K+1)個の状態を並び替えてx ≦…≦x r=x≦x と表す。つまり、現在の状態は(K+1)個の値のうち、小さい方から(r+1)番目ということである。そしてx K+1-rを次状態に採用する。この方法では、次状態がxの現在の状態に依存する。
【0052】
さて、上述のように、最適解探索は、相互作用モデルの状態を表す変数x、yの確率的遷移を繰り返す確率的探索プロセスによって行われる。しかし、確率的遷移の結果、局所解に陥り、多くの試行回数を経ても最適解もしくは近似解が求まらないケースがある。そこで、本実施形態では、同一モデルの異なる状態にそれぞれ対応する複数のレプリカを作成し、レプリカ毎に確率的探索プロセスを並列かつ独立に実行する。そして、目的関数値に基づいて状態の評価を行い、評価が高いレプリカを優先的に選択して複製するリサンプリングを行うことで、局所解に陥ることなく大局的な状態更新を行って、最適解探索の高速化を図る。
【0053】
図4は、複数のレプリカにおける最適解探索処理を例示する図である。図4では、各ノードにそれぞれ1つのレプリカが配置されるとする。
【0054】
例えば温度T=T(時間ステップ0)でそれぞれの初期状態がセットされた複数のノード、例えば3個のノード#1、#2、#3に配置されるレプリカ1-1、1-2、1-3を用いて、独立かつ並行して最適解探索が行われる。温度T=T(時間ステップt)になると、それまで独立かつ並行して最適解探索が行われたレプリカ1-1、1-2、1-3の目的関数値(式11の関数G)がそれぞれ算出される。R個のレプリカのうちのj番目のレプリカ1-j(j=1,・・・,R)の目的関数を関数Gとする。
【0055】
続いて、レプリカ1-j(j=1,・・・,R)の重みαを、式14のように算出する。
【0056】
【数14】
【0057】
ただし、Δβは、リサンプリングを行う際の時間ステップtにおける温度Tの逆温度β(=1/T)の差分(β-βt-1)である。このレプリカ1-jの重みαから、リサンプリング後の各レプリカ1-jの出現頻度を表す出現確率qを式15のように算出する。
【0058】
【数15】
【0059】
ただし、式15の右辺の分母は、リサンプリング前の全てのレプリカ1-jの重みαの和を表す。すなわち、式15は、重みαを正規化する。
【0060】
そして、リサンプリング後のレプリカとして、各レプリカ1-jの選択数Nが式16のように決定される。選択数Nとは、次の時間ステップの最適解探索で用いるレプリカ1-jの個数である。Nの小数点以下は適宜端数処理される。Rはレプリカの総数を表し、リサンプリングの前後で一定とするが、リサンプリング後に増加又は減少するとしてもよい。
【0061】
【数16】
【0062】
そして、選択数Nに応じてリサンプリング後のレプリカのコピー先が決定され、必要に応じて各レプリカ1-jの情報がコピーされる。
【0063】
図4の例示では、R=3である。レプリカ1-1はR×q=0.6、レプリカ1-2はR×q=2.1、レプリカ1-3はR×q=0.03であるので、四捨五入によってレプリカ1-1が1個、レプリカ1-2が2個、レプリカ1-3が0個とそれぞれ選択される。すなわち、リサンプリング後のレプリカは、1個のレプリカ1-1及び2個のレプリカ1-2である。レプリカ1-1及び1個目のレプリカ1-2は、リサンプリング前から引き続いて用いられる。そして、2個目のレプリカ1-2は、ノード#2には配置できないため、レプリカ1-3が選択されないノード#3にレプリカ1-2の情報が転送される。リサンプリング後、1個のレプリカ1-1及び2個のレプリカ1-2のそれぞれについて確率的探索プロセスが並列かつ独立に実行される。
【0064】
最適解探索においてレプリカが並列に実行され、所定温度まで低下する等の実行終了条件が充足されると、複数のレプリカのうちの関数Gの値が最小であるレプリカの状態を表す変数に基づいて最適解もしくは近似解が出力される。
【0065】
以上を踏まえて、図5図7を参照して、本実施形態に係る情報処理装置10の構成を説明する。
【0066】
(情報処理装置10のハードウェア構成)
図5は、実施形態に係る情報処理装置10を実現するコンピュータのハードウェアを例示する図である。情報処理装置10は、ハードウェアとして、プロセッサ11、主記憶装置12、補助記憶装置13、入力装置14、出力装置15、通信装置16、1又は複数の演算装置17、及びこれらの装置を通信可能に接続するシステムバス18を有する。情報処理装置10は、例えば、その一部又は全部がクラウドシステム(Cloud System)により提供されるクラウドサーバ(Cloud Server)のような仮想的な情報処理資源を用いて実現されるものであってもよい。また情報処理装置10は、例えば、互いに協調して動作する、通信可能に接続された複数の情報処理装置によって実現されるものであってもよい。
【0067】
プロセッサ11は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)を用いて構成されている。主記憶装置12は、プログラムやデータを記憶する装置である。例えば、ROM(Read Only Memory)、SRAM(Static Random Access Memory)、NVRAM(Non Volatile RAM)、マスクROM(Mask Read Only Memory)、PROM(Programmable ROM)等)、RAM(Random Access Memory)、DRAM(Dynamic Random Access Memory)等である。補助記憶装置13は、HDD(Hard Disk Drive)、フラッシュメモリ(Flash Memory)、SSD(Solid State Drive)、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)等である。補助記憶装置13に格納されているプログラムやデータは、随時、主記憶装置12に読み込まれる。
【0068】
入力装置14は、ユーザから情報の入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、カードリーダ、タッチパネル等である。出力装置15は、ユーザに情報を提供するユーザインタフェースであり、例えば、各種情報を可視化する表示装置(LCD(Liquid Crystal Display)、グラフィックカード等)や音声出力装置(スピーカ)、印字装置等である。通信装置16は、他の装置と通信する通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール、シリアル通信モジュール等である。
【0069】
演算装置17は、組合せ最適化問題の最適解探索に関する処理を実行する装置である。演算装置17は、例えば、GPU(Graphics Processing Unit)のように、情報処理装置10に装着する拡張カードの形態を取るものであってもよい。演算装置17は、例えば、CMOS(Complementary Metal Oxide Semiconductor)回路、FPGA)、ASIC等のハードウェアによって構成される。
【0070】
演算装置17は、制御装置、記憶装置、システムバス18に接続するためのインタフェース等を含み、システムバス18を介してプロセッサ11との間でコマンドや情報の送受を行う。演算装置17は、例えば、通信線を介して他の演算装置17と通信可能に接続され、他の演算装置17と協調して動作するものであってもよい。演算装置17により実現される機能を、例えば、プロセッサ(CPU、GPU等)にプログラムを実行させることにより実現してもよい。
【0071】
情報処理装置10において、プログラムが補助記憶装置13から読み出されて、プロセッサ11及び主記憶装置12の協働により実行されることにより、情報処理装置10の機能が実現される。あるいは、情報処理装置10の機能を実現するためのプログラムは、通信装置16を介した通信により外部のコンピュータから取得されてもよい。あるいは、情報処理装置10の機能を実現するためのプログラムは、可搬型の記録媒体(光学ディスク、磁気ディスク、光磁気ディスク、半導体記憶媒体等)に記録され、媒体読取装置により読み出されてもよい。
【0072】
また、情報処理装置10は、複数の装置が協働して処理を実行する情報処理システムであってもよい。情報処理システムを実現するプログラムは、各プログラムによって各装置に各機能を実現させることで、情報処理装置10と同様の機能を実現する。
【0073】
(演算回路500の構成)
図6は、実施形態に係る演算装置17を構成する演算回路500を例示する機能ブロック図であり、演算装置17の動作原理を示す。各演算装置17は、1又は複数の演算回路500を含んで構成される。各演算回路500は、1つのレプリカに対応する。本実施形態では、演算回路500は、例えば後述の差分計算ブロック514、サンプリングブロック515、次状態決定ブロック516等が、GPUやベクトル型計算機などに搭載された多数の演算器等を用いるソフトウェアで実装されるとする。しかし、これに限らず、ハードウェアで実装されてもよい。演算回路500は、変数配列x,…,x又は変数配列y,…,yを温度Tにおけるボルツマン分布(式12)からサンプリングする機能を実現する。
【0074】
演算回路500は、変数メモリ511、非線形係数メモリ512、線形係数メモリ513、差分計算ブロック514、サンプリングブロック515、及び次状態決定ブロック516を含む。
【0075】
各演算回路500の変数メモリ511には、前述した変数x,…,x及びy1,…,yを示す情報が格納される(図2参照)。
【0076】
非線形係数メモリ512には、行列Jを表す情報が格納される。行列Jは一般に対称行列であり、この対称性を用いて非線形係数メモリ512の使用量を削減することができる。線形係数メモリ513には、ベクトルhを表す情報が格納される。
【0077】
演算装置17には、制御信号EN、重み信号SW、及び温度信号TEが入力される。
【0078】
制御信号ENは、H(high)とL(low)の値を周期的に繰り返す信号で、変数配列xとyいずれを更新しているかを表す。たとえば、ENがHのときは変数配列xを更新、Lのときはyを更新と定める。この制御信号ENにより、変数x,…,xを同時に更新し、また変数y,…,yを同時に更新する。図5では簡略化のため制御信号ENはサンプリングブロック515のみに入力しているが、変数メモリ511等の本信号を必要とする他の箇所に対しても同様に入力される。
【0079】
重み信号SWは、対角行列Wの対角成分を表すN要素のベクトルを表す信号である。
【0080】
差分計算ブロック514には、非線形係数メモリ512に格納されている行列Jの値、線形係数メモリ513に格納されているベクトルh、重み信号SW、及び変数メモリ511に格納されている変数s(x又はy)が入力される。差分計算ブロック514は、制御信号ENがHのとき(J+diag(w,・・・,w))y+h、ENがLのとき(J+diag(w,・・・,w))x+hを出力する。この出力値は前述のAに相当する。
【0081】
サンプリングブロック515は、差分計算ブロック514の出力と重み信号SW、温度パラメータの値を保持する温度信号TE、制御信号EN、及び他の変数の値を受けとる。そしてi番目の要素として、制御信号ENがHのとき-(2-|y|)以上(2-|y|)以下、ENがLのとき-(2-|x|)以上(2-|x|)以下を定義域とする、式12で表される切断正規分布からランダムにサンプリングして出力する。
【0082】
次状態決定ブロック516は、サンプリングブロック515から出力される1又は複数の値を基に、変数の次状態を決定する。もし、MCMCの更新則として単なる熱浴法に定めたならば、次状態決定ブロック516はサンプリングブロック515の出力値を1つだけ受け取り、それをそのまま変数メモリ511に書き込めばよい。また、MCMCの更新則として公知の過剰緩和法を用いるならば、次状態決定ブロック516はサンプリングブロック515から複数の値、そして変数メモリ511から更新対象の変数の現在値を受け取り、過剰緩和法に従って1つ選択して、変数メモリ511に書き込む。周知のように、過剰緩和法では、直前の状態との相関が負となるように次の状態を決める。
【0083】
(情報処理装置10の機能構成)
図7は、実施形態に係る情報処理装置10の構成を例示する機能ブロック図であり、情報処理装置10が備える主な機能(ソフトウェア構成)を示す。情報処理装置10は、処理部101、記憶部102、及び、1又は複数の演算装置17を有する。
【0084】
処理部101は、モデル変換部101a、モデル係数設定部101b、重み設定部101c、変数値初期化部101d、温度設定部101e、相互作用演算実行部101f、及び変数値読出部101gを有する。これらの機能は、プロセッサ11が主記憶装置12と協働して補助記憶装置13に格納されているプログラムを読み出して実行することにより、もしくは、演算装置17が備えるハードウェアにより実現される。なお、情報処理装置10は、上記の機能に加えて、例えば、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(Data-Base Management System)等の他の機能を備えていてもよい。
【0085】
記憶部102は、主記憶装置12又は補助記憶装置13により実現され、問題データ102a、二次計画形式問題データ102b、定義域データ102c、及び演算装置制御プログラム102dを記憶する。問題データ102aは、例えば、最適化問題等を公知の所定の記述形式で記述したデータである。問題データ102aは、例えば、ユーザがユーザインタフェース(入力装置、出力装置、通信装置等)を介して設定される。
【0086】
二次計画形式問題データ102bは、モデル変換部101aが、問題データ102aを式4が示す二次計画問題のフォーマットに合致する形式のデータに変換することにより生成されるデータである。この変換にあたり、与えられた各変数の定義域は、定義域データ102cに書き込まれる。定義域データ102cは、例えば各変数が2値を取るか実数値を取るかを示している。演算装置制御プログラム102dは、相互作用演算実行部101fが演算装置17を制御する際に実行する、もしくは相互作用演算実行部101fが個々の演算装置17にロードして演算装置17に実行させるプログラムである。
【0087】
モデル変換部101aは、問題データ102aを二次計画問題のフォーマットである二次計画形式問題データ102bに変換する。このために、式1から式11を導出する機能を、ソフトウェアあるいはハードウェアとしてモデル変換部101aに実装しておけばよい。モデル変換部101aの機能は必ずしも情報処理装置10に実装されていなくてもよく、情報処理装置10が、他の情報処理装置等で生成された二次計画形式問題データ102bを入力装置14や通信装置16を介して取り込むようにしてもよい。
【0088】
モデル係数設定部101b、重み設定部101c、変数値初期化部101d、及び温度設定部101eは、演算装置17にR個の演算回路500を生成する。そして、R個の演算回路500に対して以下の処理を実行することで、R個のレプリカ1-j(j=1,2,・・・,R)を作成する。R個の演算回路500は、1又は複数の演算装置17に配置される。
【0089】
モデル係数設定部101bは、二次計画形式問題データ102bに基づく、式4の行列Jを非線形係数メモリ512に、ベクトルhを線形係数メモリ513に設定する。
【0090】
変数値初期化部101dは、演算回路500の変数メモリ511に格納されている各変数の値を初期化する。変数値初期化部101dは、例えば、各変数の値を-1以上+1以下から一様に、ランダムサンプリングして決めればよい。この際に、変数に関する制約である|x|+|y|≦2を満たすよう注意しなければならない。また、このときの各変数の値は連続値で扱われていることに留意されたい。
【0091】
温度設定部101eは、相互作用演算実行部101fが最適解探索を行う際に用いる温度Tを設定する。
【0092】
相互作用演算実行部101fは、温度設定部101eにより設定された各温度Tについて、式11で表す関数Gを最小化する変数配列x及びyを探索する演算(以下、相互作用演算処理と称する。)をレプリカ1-j毎の各演算回路500に実行させる。相互作用演算処理に際し、相互作用演算実行部101fは、例えば、温度Tを高いほうから低い方に向けて変化させる。
【0093】
具体的には、各レプリカ1-jにおける変数配列の確率的な更新は、式12、式13のように、変数xの更新の際に変数yが用いられ、変数yの更新の際に変数xが用いられる。具体的には、式12、式13から分かるように、変数xの更新の際には、行列Jと変数yの乗算結果が用いられる。同様に、変数yの更新の際には、行列Jと変数xの乗算結果が用いられる。
【0094】
また、相互作用演算実行部101fは、リサンプリングを所定周期で実行する。すなわち、相互作用演算実行部101fは、時間ステップtの温度Tにおいて、各演算回路500(ノード)に作成されたレプリカ1-j毎のエネルギー(目的関数値(関数Gの値))を計算する。
【0095】
ここで、関数Gの行列Jと変数yの乗算(式11の右辺第1項)は、計算負荷が大きい。しかし、この行列Jと変数yの乗算は、変数xの前回の更新ステップの際に行われており、乗算結果Jyがワークエリアに格納されている。そこで、関数Gの値の算出の際に、行列Jと変数yの乗算を行う代わりに、ワークメモリに格納されている乗算結果Jyを用いる。乗算結果Jyはベクトルであるので、関数Gの右辺第1項の計算は、ベクトルxとの内積計算に置き換わる。このように、変数x、yの更新過程の計算結果を目的関数値の算出に用いることで、目的関数値の計算量を抑制し、最適化探索の計算速度の高速化を図ることができる。
【0096】
そして、相互作用演算実行部101fは、時間ステップtにおけるレプリカ1-j毎のエネルギーをもとに、式14、式15、式16から、リサンプリング後の各レプリカ1-jの選択数Nを決定する。
【0097】
そして、相互作用演算実行部101fは、各レプリカ1-jの選択数Nのうち、リサンプリング後の増加分の各レプリカ1-jのコピー先を決定する。各レプリカ1-jのコピー先は、コピー元のレプリカ1-jと同一の演算装置17(自ノード)の上限内で自ノードが優先的に決定される。自ノードの上限を超過する場合には、レプリカのコピー先は、それぞれの上限内で自ノードとは異なる他の演算装置17(他ノード)がランダムに決定される。上限とは、各ノードのリソース上限、又は、リサンプリング前に各ノードに配置されていたレプリカの数、である。そして、コピー先へコピー元のレプリカの情報が転送される。
【0098】
このように、自ノード内を優先的にコピー先とし、レプリカの情報のコピーの際に通信が発生する他ノードへのコピーを極力回避することで、情報転送の待ち時間の発生を抑制し、計算速度の低下を防止できる。
【0099】
変数値読出部101gは、相互作用演算実行部101fによる最適解探索が終了すると、関数Gの値が最小のレプリカに対応する演算回路500の変数メモリ511に格納されている変数配列x及びyを読み出す。ここで読み出される値は、式11の解である。上述の議論に従って、N次元ベクトルs*=(x+y)/2を計算する。そして定義域データ102cを読み出し、式6で得られるベクトルs+を最終的な解として出力装置15や通信装置16に出力する。つまり、定義域データ102cにてi番目の定義域が{-1,+1}と判明すればsgn(s*i)、i番目の定義域が[-1,+1]ならばs自体を出力するということである。このようにして、定義された値域に応じた解が求められる。
【0100】
(最適解探索処理のフロー)
図8は、実施形態に係る情報処理装置10が実行する最適解探索処理を例示するフローチャートである。最適解探索処理は、例えば、入力装置14を介してユーザからの指示等を受け付けることにより開始される。
【0101】
S11では、モデル変換部101aは、問題データ102aを二次計画形式問題データ102bに変換する。二次計画形式問題データ102bでは、例えば式1で表現される目的関数Hにおける行列J、ベクトルhが任意の形式で表現される。記憶部102が既に二次計画形式問題データ102bを記憶している場合には、S11が省略される。S11の処理と、S12以降の処理とは、夫々を異なる装置で実行するようにしてもよい。またS11の処理と、S12以降の処理とを異なるタイミングで実行するようにしてもよい(例えば、S11の処理を事前に行っておくことが考えられる)。
【0102】
S12~S15の処理は、演算装置17のR個の演算回路500にて作成されるR個のレプリカについて実行される。
【0103】
S12では、モデル係数設定部101bは、非線形係数メモリ512及び線形係数メモリ513に行列Jとベクトルhの値を設定する。メモリの値は、ユーザインタフェース(例えば、入力装置14、出力装置15、通信装置16等により実現される)を介してユーザが設定又は編集することができる。
【0104】
S13では、重み設定部101cは、重み信号SWの値を決定する。前述の式8の説明通り、最適解を探索する上で重み信号SWは任意の値を取ることが許される。そのため、信号値は常に0としてもよい。この場合は計算の負荷を軽減することができる。また、特許文献2の式3~式5に示すように行列Jの固有値から決定してもよい。あるいは、行列Jの行和から決定してもよい。重み信号SWの値算出の計算は、演算装置17内又はプロセッサ11で実行してもよい。あるいはユーザが自分で設定してもよい(S13)。
【0105】
S14では、変数値初期化部101dは、変数メモリ511に格納されている各変数の値を初期化する。変数メモリ511に格納する値は連続値である。先に述べたように初期値はランダムでよい。以上で、式11を表現するパラメータが設定されたことになる。
【0106】
S15では、温度設定部101eは、最適解探索にて使用する温度パラメータの系列Tγ(γ=1,2,3,…)を初期設定する。なお、上記の添字γは設定される温度Tの種類を表す。温度Tの設定方法については、例えば特許文献1の方法を採用可能である。
【0107】
S16では、相互作用演算実行部101fは、相互作用演算処理を実行する。相互作用演算処理の詳細は、図9を参照して後述する。
【0108】
S17では、相互作用演算実行部101fは、停止条件が成立したか否か(例えば、温度Tが予め設定された最低温度に達したか否か)を判定する。相互作用演算実行部101fは、停止条件が成立したと判定した場合(S17:Yes)、S18に処理を移す一方、停止条件が成立していないと判定した場合(S17:No)、S16に処理を戻す。
【0109】
S18では、変数値読出部101gは、関数Gの値が最小のレプリカ1-jの演算回路500から変数メモリ511に格納されている変数の値を読み出す。また、変数値読出部101gは、定義域データ102cに格納されている二次計画形式問題データ102bの各変数の定義域を読み出す。そして、変数値読出部101gは、式6に基づいた変換を通じたベクトルを算出して、式2もしくは式4の解として出力する。以上で最適解探索処理は終了する。
【0110】
(相互作用演算処理の詳細フロー)
図9は、図8のS16の相互作用演算処理の詳細を例示するフローチャートである。S161では、相互作用演算実行部101fは、各演算回路500の演算により、各レプリカ1-jの変数配列の確率的な同時更新を実行する。
【0111】
S162では、相互作用演算実行部101fは、レプリカ1-j毎の関数G(式11)の値を算出する。上述したように、レプリカ1-j毎の関数Gの目標関数値の算出の際に、変数x、yの更新過程の計算結果を用いる。なお、関数Gの値の算出は、各レプリカ1-jの演算回路500が行ってもよい。
【0112】
S163では、相互作用演算実行部101fは、各レプリカ1-jの選択数N及び増加分のレプリカのコピー先を決定する。
【0113】
S164では、相互作用演算実行部101fは、S163で決定したコピー先のノード(自ノード又は他ノード)へコピーするレプリカの情報を送信する。
【0114】
(レプリカ数の推移のシミュレーション結果)
図10は、リサンプリングによるレプリカ数の推移のシミュレーション結果を例示す図である。図10では、縦軸は時刻を表し、横軸はレプリカ数を表す。図10では、最も高い温度の時刻0でそれぞれ1個であったレプリカ1-1、1-2、1-3、1-4、1-5、1-6、1-7、1-8、1-9、1-10がリサンプリングの繰り返しを経て増減する様子を表している。図10では、時刻0におけるオリジナルのレプリカが同一であるレプリカは、全て同一の系統としている。そのため、時刻1以降で同一の塗りつぶし又はハッチングのパターンが施されているレプリカは、同じ変数を持っているわけではないことに注意されたい。例えば最も低い温度の時刻50のレプリカ1-6及び1-9のように、一部の目的関数値が優良な系統のレプリカが多数を占めることで、目的関数値がより迅速に最低状態に収束する可能性が高まり、最適化問題をより高速処理できるようになる。
【0115】
(実施形態を含む開示技術の効果)
上述の実施形態を含む開示技術では、最適化問題を、第1の状態変数ベクトルと所定行列と第2の状態変数ベクトルとの積を含んだ目的関数で表される二次計画問題に変換し、目的関数の関数値を算出する際、第1の状態変数ベクトルと第2ベクトルとの内積によって目的関を計算する。ここで、第2ベクトルは、所定行列と第1の状態変数ベクトルとを乗算して第1ベクトルを計算し、第1ベクトルに基づくパラメータを含んだ確率分布に基づいて第2の状態変数ベクトルの確率的更新を行い、所定行列と第2の状態変数ベクトルとを乗算して第2ベクトルを計算し、第2ベクトルに基づくパラメータを含んだ確率分布に基づいて第1の状態変数ベクトルの確率的更新を行う処理を繰り返すことで第1の状態変数ベクトル及び第2の状態変数ベクトルの確率的更新を行った際の第2ベクトルが記憶部に記憶されたものである。よって、最適解探索の反復計算で現れた計算過程の結果を再利用することで、低コストで目的関数値を計算でき、最適解探索の処理を高速化できる。
【0116】
また、開示技術では、状態更新及び関数値算出を、第1の状態変数ベクトル及び第2の状態変数ベクトルに対応する複数のレプリカ毎に独立かつ並行に実行するので、個々の局所解にとらわれずに、大局的に状態更新を行うことができる。
【0117】
また、開示技術では、レプリカ毎の状態更新及び関数値算出を、複数の演算装置によって実行するので、負荷を分散しながら並行処理を行って処理の高速化を図ることができる。
【0118】
また、開示技術では、関数値算出処理によってレプリカ毎の関数値を算出し、レプリカ毎の関数値及び逆温度の差分に基づいてレプリカ毎の重みを算出し、重みに基づいて、複数のレプリカから選択するレプリカの選択数を決定するリサンプリングを行う。よって、最適解探索の反復計算で現れた計算過程の結果を再利用することで、リサンプリングを繰り返す毎に関数値を算出する負荷が大きい計算を、O(log2n)のオーダの低コストで目的関数値を計算でき、最適解探索の処理を高速化できる。
【0119】
また、開示技術では、リサンプリングにおけるレプリカの選択数は、リサンプリング前のレプリカの合計数と同一であることから、限られたリソースを目的関数値が高いレプリカの系列に多く配分することで、効率的に最適解探索を高速化できる。
【0120】
また、開示技術では、リサンプリングにおけるレプリカの選択数は、リサンプリング前の複数のレプリカの合計数よりも多いことから、潤沢なリソースを用いて多くの系のレプリカによって最適解探索を行うことで、最適解探索をさらに高速化できる。
【0121】
また、開示技術では、リサンプリングにおけるレプリカの選択数は、リサンプリング前の複数のレプリカの合計数よりも少ないことから、限られたリソースを目的関数値が高いレプリカの系列に配分することで、効率的に最適解探索を高速化できる。
【0122】
また、開示技術では、リサンプリングにおけるレプリカの選択数に応じて、選択するレプリカが配置される演算装置にこのレプリカのコピーを配置可能である場合にはこの演算装置をこのレプリカのコピーを優先的に配置するコピー先として決定する。一方、配置不可能である場合には他の演算装置をコピー先として決定する。よって、リサンプリングの際のレプリカの情報の転送(コピー)の際に、ノード間通信の発生を抑制するので、通信時間を抑制し、最適解探索を高速化できる。
【実施例
【0123】
上述の実施形態の実施例として、実施例1:1GPUで実装(演算装置17(GPU)を1つ実装)、及び、実施例2:4GPUで実装(演算装置17(GPU)を4つ実装)、の場合の計算速度のシミュレーション結果を以下に示す。
【0124】
図11は、実施形態による計算速度を比較例と比較したシミュレーション結果を例示する図である。図11では、横軸は1回あたりのアニーリングの計算時間を表し、縦軸は目的関数値を表す。何れも乱数シードを変えて、合計100回ずつの試行とし、各時間における目的関数値の平均値、第1四分位、及び第3四分をプロットした。破線が平均値を示し、破線に重なるグレー線の下端の外郭線が1四分位を示し、上端の外郭線が第3四分位を示す。
【0125】
表1に示すように、比較例1では、50ノードでのSA(Simulated Annealing)を2回行うことで合計100回の試行とした。比較例2では、PMC(Parallel Markov Chains)なしのMA(Momentum Annealing)を1GPUで100回試行した。比較例3では、PMCなしのMAを4GPUで100回試行した。実施例1では、PMCありのMAを1GPUで100回試行した。実施例2では、PMCありのMAを4GPUで100回試行した。
【0126】
【表1】
【0127】
図11から分かるように、実施例1及び2は、比較例1~3の何れと比較しても最低エネルギー状態(目的関数値=-4.40×10)付近により速く到達した。また、実施例1は、同じく1GPU実装の比較例2と比較して、最低エネルギー状態付近により速く到達した。また、実施例2は、同じく4GPU実装の比較例3と比較して、最低エネルギー状態付近により速く到達した。また、実施例2は、実施例1と比較して、最低エネルギー状態付近により速く到達した。
【0128】
以上のシミュレーション結果から、同じMAでも1GPU実装よりは4GPU実装の方が計算速度の面で有利であり、さらに本実施形態のPMCありMAでは、GPUの実装数が多いほど計算速度面で有利であることが分かった。
【0129】
(その他の実施形態)
演算回路500は、既に述べた最適化問題を解く計算を実行する機能を備える限り、ソフトウェアで構成してもよいし、ハードウェアで構成してもよい。具体的には、アニーリング方式において電子回路(デジタル回路など)で実装するハードウェアだけでなく、超伝導回路などで実装する方式でもよい。また、アニーリング方式以外にてイジングモデルを実現するハードウェアでもよい。例えばレーザーネットワーク方式(光パラメトリック発振)、量子ニューラルネットワークなどが知られている。また、一部の考え方が異なるものの、イジングモデルで行う計算をアダマールゲート、回転ゲート、制御NOTゲートといったゲートで置き換えた量子ゲート方式も、本実施形態の構成として採用することができる。
【0130】
演算回路500の一つの実装例として、CMOS(Complementary Metal-Oxide Semiconductor)集積回路や、FPGA上の論理回路として実装することができる。例えば、特許文献1に開示されているように、SRAM(Static Random Access Memory)の技術を適用したユニットを多数配置し、各ユニットに変数を格納するメモリと変数を更新するための回路を配置してもよい。
【0131】
本発明は上述の実施形態に限定されるものではなく、様々な変形例を含む。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、矛盾しない限りにおいて、ある実施形態の構成の一部を他の実施形態の構成で置き換え、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、構成の追加、削除、置換、統合、又は分散をすることが可能である。また、実施形態で示した構成及び処理は、処理効率又は実装効率に基づいて適宜分散、統合、又は入れ替えることが可能である。
【符号の説明】
【0132】
10:情報処理装置、11:プロセッサ、12:主記憶装置、13:補助記憶装置、17:演算装置、511:変数メモリ、512:非線形係数メモリ、513:線形係数メモリ、514:差分計算ブロック、515:サンプリングブロック、516:次状態決定ブロック、101:処理部、101a:モデル変換部、101b:モデル係数設定部、101c:重み設定部、101d:変数値初期化部、101e:温度設定部、101f:相互作用演算実行部、101g:変数値読出部、102:記憶部、102a:問題データ、102b:二次計画形式問題データ、102c:定義域データ、102d:演算装置制御プログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11