(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024090697
(43)【公開日】2024-07-04
(54)【発明の名称】データ処理装置、データ処理方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240627BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022206754
(22)【出願日】2022-12-23
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】渡部 康弘
(72)【発明者】
【氏名】印 芳
(72)【発明者】
【氏名】田村 泰孝
(57)【要約】
【課題】演算の効率化を可能にする。
【解決手段】記憶部11は、総エネルギーと、複数の状態変数の値と、複数の状態変数のそれぞれの間の第1重み値と、複数の状態変数の少なくとも一部の状態変数と制約条件との間の第2重み値と、複数の状態変数のそれぞれの値が変化する場合の総エネルギーの第1変化量を表す第1局所場と、制約条件に対する制約違反量の特定に用いられる第2局所場を記憶する。処理部12は、複数の状態変数のうち第1状態変数の値の変化を許容するか否かを第1局所場に基づいて判定する処理と、第1状態変数の値の変化を許容すると判定した場合、第1重み値に基づいて第1局所場を更新し、第1状態変数と制約条件との間の第2重み値に基づいて第2局所場を更新し、更新前の第2局所場を量子化した第1量子化局所場と更新後の第2局所場を量子化した第2量子化局所場とに基づいて、第1局所場をさらに更新する処理と、を繰り返す。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の状態変数を含むイジング型の評価関数を用いて計算される値が極小または極大となる前記複数の状態変数の値の組合せを探索するデータ処理装置において、
制約条件の違反の有無に応じた値をもつ制約項と前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の状態変数それぞれの間の第1重み値と、前記複数の状態変数の少なくとも一部の状態変数と前記制約条件との間の第2重み値と、前記複数の状態変数それぞれの値が変化する場合の前記総エネルギーの第1変化量を表す第1局所場と、前記制約条件に対する制約違反量の特定に用いられる第2局所場と、を記憶する記憶部と、
前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合、前記第1重み値に基づいて前記第1局所場を更新し、前記第1状態変数と前記制約条件との間の前記第2重み値に基づいて前記第2局所場を更新し、更新前の前記第2局所場を量子化した第1量子化局所場と更新後の前記第2局所場を量子化した第2量子化局所場とに基づいて、前記第1局所場をさらに更新する処理と、を繰り返す処理部と、
を有するデータ処理装置。
【請求項2】
前記処理部は、前記第1量子化局所場と前記第2量子化局所場とが同じである場合、前記第1量子化局所場と前記第2量子化局所場とに基づく前記第1局所場の更新を省略する、
請求項1記載のデータ処理装置。
【請求項3】
前記処理部は、前記第1状態変数の値の変化を許容すると判定した場合、前記第1量子化局所場に対応する、更新前の前記第2局所場の近似値を用いて計算される前記制約項の変化量と、前記第2量子化局所場に対応する、更新後の前記第2局所場の近似値を用いて計算される前記制約項の変化量との差分に基づいて、前記第1局所場を更新する、
請求項1記載のデータ処理装置。
【請求項4】
前記処理部は、前記第1局所場を更新する第1演算器と、前記第2局所場を更新する第2演算器とを有し、
前記第2演算器は、前記第1量子化局所場を示す第1コードであって、前記第2局所場の第1ビット数よりも少ない第2ビット数の前記第1コードと、前記第2量子化局所場を示す、前記第2ビット数の第2コードとを前記第1演算器に出力し、
前記第1演算器は、前記第1コードに基づいて、更新前の前記第2局所場の近似値を取得し、前記第2コードに基づいて、更新後の前記第2局所場の近似値を取得し、更新前後の前記第2局所場の近似値に基づいて、前記第1局所場を更新する、
請求項1記載のデータ処理装置。
【請求項5】
前記処理部は、前記第2局所場を更新すると、更新前の前記第2局所場と更新後の前記第2局所場と前記第1量子化局所場と前記第2量子化局所場とに基づいて、前記総エネルギーを補正する、
請求項1記載のデータ処理装置。
【請求項6】
前記処理部は、
前記第1量子化局所場および前記第2量子化局所場に応じた前記制約項の第2変化量と前記第1局所場とを個別に前記記憶部に格納し、
前記複数の状態変数の値に対して前記制約条件が満たされるか否かを示す補助変数の値の変化に応じて、前記第2重み値に基づき前記第1局所場と前記第2変化量とを更新し、
前記第1状態変数の値の変化を許容するか否かを、前記第1局所場と前記第2変化量とに基づいて判定し、
前記第1状態変数の値の変化に応じて、前記第1局所場に基づき前記総エネルギーを更新し、前記補助変数の値の変化に応じて、前記第2局所場に基づき前記総エネルギーを更新する、
請求項1記載のデータ処理装置。
【請求項7】
前記記憶部に保持される前記第2変化量は、前記制約違反量の表現に用いられる第3ビット数よりも少ないビット数で表され、
前記処理部は、前記第2重み値に対応する、前記第2重み値のビット数よりも少ないビット数のコードに基づいて前記第2変化量を更新し、前記第2変化量を用いて前記第1局所場を更新する際に、前記第2変化量を前記第3ビット数で表される値に変換する、
請求項6記載のデータ処理装置。
【請求項8】
複数の状態変数を含むイジング型の評価関数を用いて計算される値が極小または極大となる前記複数の状態変数の値の組合せの探索を実行するデータ処理装置が、
記憶部に記憶されている、制約条件の違反の有無に応じた値をもつ制約項と前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の状態変数それぞれの間の第1重み値と、前記複数の状態変数の少なくとも一部の状態変数と前記制約条件との間の第2重み値と、前記複数の状態変数それぞれの値が変化する場合の前記総エネルギーの第1変化量を表す第1局所場と、前記制約条件に対する制約違反量の特定に用いられる第2局所場と、のうち、
前記第1局所場に基づいて、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを判定する処理と、
前記第1状態変数の値の変化を許容すると判定した場合、前記記憶部に記憶されている前記第1重み値に基づいて前記第1局所場を更新し、前記第1状態変数と前記制約条件との間の、前記記憶部に記憶されている前記第2重み値に基づいて前記第2局所場を更新し、更新前の前記第2局所場を量子化した第1量子化局所場と更新後の前記第2局所場を量子化した第2量子化局所場とに基づいて、前記第1局所場をさらに更新する処理と、
を繰り返すデータ処理方法。
【請求項9】
複数の状態変数を含むイジング型の評価関数を用いて計算される値が極小または極大となる前記複数の状態変数の値の組合せの探索をコンピュータに実行させるプログラムであって、
記憶部に記憶されている、制約条件の違反の有無に応じた値をもつ制約項と前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の状態変数それぞれの間の第1重み値と、前記複数の状態変数の少なくとも一部の状態変数と前記制約条件との間の第2重み値と、前記複数の状態変数それぞれの値が変化する場合の前記総エネルギーの第1変化量を表す第1局所場と、前記制約条件に対する制約違反量の特定に用いられる第2局所場と、のうち、
前記第1局所場に基づいて、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを判定する処理と、
前記第1状態変数の値の変化を許容すると判定した場合、前記記憶部に記憶されている前記第1重み値に基づいて前記第1局所場を更新し、前記第1状態変数と前記制約条件との間の、前記記憶部に記憶されている前記第2重み値に基づいて前記第2局所場を更新し、更新前の前記第2局所場を量子化した第1量子化局所場と更新後の前記第2局所場を量子化した第2量子化局所場とに基づいて、前記第1局所場をさらに更新する処理と、
を繰り返す処理を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ処理装置、データ処理方法およびプログラムに関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数を用いたイジング装置がある。評価関数は、エネルギー関数などとも呼ばれる。また、イジング装置は、ボルツマンマシンとも呼ばれる。
【0003】
イジング装置は、離散最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換する。そして、イジング装置は、疑似焼き鈍し法やレプリカ交換法などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値が極小になるイジングモデルの状態を探索する。イジング型の評価関数の値は、エネルギーに相当する。評価関数の極小値のうちの最小値になる状態が最適解となる。なお、イジング装置は、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。イジングモデルの状態は、複数の状態変数の値の組合せにより表現できる。各状態変数の値として、0または1を用いることができる。
【0004】
イジング型の評価関数は、例えば、以下の式(1)のような2次形式の関数で定義される。
【0005】
【0006】
右辺の1項目は、イジングモデルのN個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値との積を積算したものである。重み値は、2つの状態変数の間の相互作用の強さを表す。xiは、識別番号がiの状態変数、xjは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。biは、識別番号がiについてのバイアス係数を示している。
【0007】
また、xiの値の変化に伴うエネルギーの変化量(ΔEi)は、以下の式(2)で表される。
【0008】
【0009】
式(2)において、xiが1から0に変化するとき、Δxiは-1となり、状態変数xiが0から1に変化するとき、Δxiは1となる。なお、hiは局所場と呼ばれ、Δxiに応じてhiに符号(+1または-1)を乗じたものがΔEiとなる。このため、hiはエネルギーの変化量を表す変数、またはエネルギーの変化量を決める変数ということもできる。
【0010】
そして、例えば、exp(-βΔEi)(βは温度を表すパラメータの逆数)と表せる受け入れ確率でxiの値を更新することで状態遷移を発生させ、局所場も更新する、という処理が繰り返される。
【0011】
ところで、離散最適化問題には、解が満たすべき制約条件をもつものがある。例えば、離散最適化問題の1つであるナップザック問題では、ナップザックに詰め込める荷物の総容量は、ナップザックの容量以下であるという制約条件をもつ。このような制約条件は、不等式制約と呼ばれ、制約条件の違反の有無に応じた値をもつ制約項により表せる。制約条件として、不等式制約の他にも、等式制約や絶対値制約などがある。
【0012】
制約項を含む総エネルギー(H(x))は、以下の式(3)により表すことができる。
【0013】
【0014】
式(3)において、右辺の1項目と2項目の和が、式(1)のE(x)に相当するエネルギーを表し、右辺の3項目が制約項の全体の大きさ(エネルギー)を表す。また、Dは状態変数の識別番号の集合、kは制約項の識別番号、Aは制約項の識別番号の集合を表す。また、λkは識別番号がkの制約項についての所定の正の係数である。
【0015】
制約条件が不等式制約である場合、式(3)のg(hk)は、以下の式(4)で表すことができる。
【0016】
【0017】
式(4)において、max[0,hk]は、0とhkのうち大きい値を出力する関数である。また、Rkは、識別番号がkの制約項の消費量(リソース量とも呼ばれる)、Ukはリソース量の上限を表す。Wkiは、識別番号がkの不等式制約におけるxiの重みを示す係数(重み値)である。
【0018】
式(3)において、xjの値の変化に伴う総エネルギーの変化量(ΔHj)は、以下の式(5)で表される。
【0019】
【0020】
制約条件が不等式制約である場合、xjの値の変化に伴う総エネルギーの変化量(ΔHj)は、式(5)の代わりに、以下の式(6)で表すことができる。
【0021】
【0022】
式(6)において、aijは、識別番号がiの不等式制約におけるxjの重みを示す係数であり、上記Wkiに相当する。Cuiは、識別番号がiの不等式制約における上限値であり、上記Ukに相当する。Mは、制約項の数を表す。
【0023】
xjの値の変化を受け入れる受け入れ確率は、Aj=min[1,exp(-βΔHj)]と表せる。min[1,exp(-βΔHj)]は、1とexp(-βΔHj)のうち小さい値を出力する関数である。
【0024】
式(3)は、式(1)のような2次形式の関数ではなく1次形式の不連続関数である。不等式制約をイジング装置で扱えるようにするために、1次形式の不連続関数を2次形式に変換することが考えられる。しかし、2次形式に変換した不等式制約の制約項を用いて離散最適化問題を計算する場合、処理が煩雑になるなど、イジング装置で求解を行うことが難しい場合がある。
【0025】
そこで、上記のような不等式制約の制約項を1次形式のまま用いて、イジング装置で求解を行う技術が提案されている。
なお、混合整数計画問題の決定変数のうち、連続値又は整数値を取る決定変数を離散化し、混合整数計画問題を組み合わせ最適化問題に変換し、組み合わせ最適化問題の最適解を量子コンピューティング装置に計算させる最適化装置の提案がある。
【0026】
また、任意の制約に対するペナルティ関数を定義し、ペナルティ関数により、制約なしの最適化によって制約充足問題を解く方法の提案もある。さらに、機械学習において、離散化されたディープニューラルネットワークの重みを量子化する方法の提案もある。
【先行技術文献】
【特許文献】
【0027】
【特許文献1】特開2020-204928号公報
【特許文献2】特開2020-113190号公報
【特許文献3】米国特許出願公開第2015/0205759号明細書
【特許文献4】米国特許出願公開第2019/0354842号明細書
【発明の概要】
【発明が解決しようとする課題】
【0028】
不等式制約の制約項を1次形式のまま用いて求解を行う手法では、演算の効率化が十分に図られていないという問題がある。
1つの側面では、本発明は、演算の効率化を可能にすることを目的とする。
【課題を解決するための手段】
【0029】
1つの態様では、複数の状態変数を含むイジング型の評価関数を用いて計算される値が極小または極大となる複数の状態変数の値の組合せを探索するデータ処理装置が提供される。データ処理装置は、記憶部と処理部とを有する。記憶部は、制約条件の違反の有無に応じた値をもつ制約項と評価関数の値との和である総エネルギーと、複数の状態変数の値と、複数の状態変数それぞれの間の第1重み値と、複数の状態変数の少なくとも一部の状態変数と制約条件との間の第2重み値と、複数の状態変数それぞれの値が変化する場合の総エネルギーの第1変化量を表す第1局所場と、制約条件に対する制約違反量の特定に用いられる第2局所場と、を記憶する。処理部は、複数の状態変数のうち第1状態変数の値の変化を許容するか否かを第1局所場に基づいて判定する処理と、第1状態変数の値の変化を許容すると判定した場合、第1重み値に基づいて第1局所場を更新し、第1状態変数と制約条件との間の第2重み値に基づいて第2局所場を更新し、更新前の第2局所場を量子化した第1量子化局所場と更新後の第2局所場を量子化した第2量子化局所場とに基づいて、第1局所場をさらに更新する処理と、を繰り返す。
【0030】
また、1つの態様では、データ処理装置が実行するデータ処理方法が提供される。また、コンピュータによって実行されるプログラムが提供される。
【発明の効果】
【0031】
1つの側面では、演算の効率化を可能にできる。
【図面の簡単な説明】
【0032】
【
図1】第1の実施の形態のデータ処理装置を説明する図である。
【
図3】第2局所場の量子化の第1の例を示す図である。
【
図4】第2局所場の量子化の第2の例を示す図である。
【
図5】第2の実施の形態のデータ処理装置のハードウェア例を示す図である。
【
図7】復元部およびh
i算出部の例を示す図である。
【
図11】全体処理の例を示すフローチャートである。
【
図12】決定変数フリップ選択処理の例を示すフローチャートである。
【
図13】第3の実施の形態のデータ処理装置の機能例を示す図である。
【
図17】全体処理の例を示すフローチャートである。
【
図18】第4の実施の形態のデータ処理装置の機能例を示す図である。
【
図20】比較例1のデータ処理装置の機能を示す図である。
【
図21】比較例1のデータ処理装置における予測誤差発生例を示す図である。
【
図22】比較例2のデータ処理装置の機能例(その1)を示す図である。
【
図23】比較例2のデータ処理装置の機能例(その2)を示す図である。
【発明を実施するための形態】
【0033】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0034】
図1は、第1の実施の形態のデータ処理装置を説明する図である。
第1の実施の形態のデータ処理装置10は、記憶部11、処理部12を有する。
記憶部11は、例えば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置である。記憶部11は、SRAM(Static Random Access Memory)やレジスタなどの電子回路を含んでいてもよい。
【0035】
記憶部11は、H(x)、複数(以下N個)の状態変数(xi)の値、N個のxiのそれぞれの間の第1重み値(前述のWij)、N個のxiの何れかとM個の制約条件のそれぞれとの間の第2重み値(Wki)を記憶する。Nは2以上の整数である。Mは1以上の整数である。Wij=Wjiである。Wii=0である。なお、記憶部11は、M個の制約条件の何れにも影響を与えない状態変数に関する第2重み値(値が0の第2重み値)を記憶しなくてもよい。
【0036】
iは、N個のxiの何れかを表す識別番号であり、kは、M個の制約項(または制約条件)の何れかを表す識別番号である。識別番号はインデックスともいわれる。
さらに、記憶部11は、N個のxiのそれぞれの値が変化する場合のH(x)の変化量(ΔHi)を表す第1局所場(hi)と、Mの制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場(hk)を記憶する。なお、状態変数は、決定変数と呼ぶこともできる。各第2局所場は、各制約項、すなわち、各制約条件に対応しているため、第2重み値は、状態変数と制約条件との間の重み値ということもできる。
【0037】
記憶部11に記憶される総エネルギーH(x)は、H(x)=E(x)+P(x)と表せる。E(x)は、前述の式(3)の右辺の1項目と2項目の和である。
M個の制約条件に対応したM個の制約項の全体のエネルギーP(x)は、以下では、式(7)で表すものとする。
【0038】
【0039】
P(x)は1以上の制約項の全体に相当し、当該1以上の制約項の全体の大きさを示す。このため、P(x)は制約項の評価関数と言われてもよい。
λkは、識別番号=kの制約項に関する比例係数であり、制約項の重みを表す。λkは制約項ごとに異なる値であってもよい。g(hk)は、例えば、式(4)で表されるようなMax関数であってもよい。g(hk)はペナルティ関数といわれてもよい。
【0040】
第2局所場(hk)は、以下の式(8)で表すことができる。
【0041】
【0042】
式(8)において、bkは、識別番号=kの制約条件に関する係数である。識別番号=kの制約条件が不等式制約である場合、式(8)の右辺の1項目が、前述の式(4)のRkに相当し、+bkは式(4)の-Ukに相当する。このため、前述のようにhkは、RkとUkとの差分、すなわち制約違反量の特定に用いられる変数であるということができる。
【0043】
なお、ある状態変数(xi)の値が変化する場合のΔHiは、制約項を用いて、以下の式(9)で表すことができる。
【0044】
【0045】
式(9)におけるg(h
k+W
kiΔx
i)-g(h
k)は、ある状態変数(x
i)の値が変化する場合の、制約項の値の変化量を表している。
図2は、制約項の例を示す図である。
【0046】
グラフ20の縦軸は、g(hk)の大きさを表し、横軸はhkを表している。
グラフ20は、制約項の一例であるg(hk)=max[0,hk]を示す。このような制約項は、ReLU(Rectified Linear Unit)型の関数である。xiの値の変化に伴い、hkがhk+WkiΔxiに変化したとき、制約項の値の変化量は、g(hk+WkiΔxi)-g(hk)と表される。
【0047】
本実施の形態のデータ処理装置10は、第1局所場(hi)として、xiの値の変化に伴うE(x)の変化量だけでなく、P(x)の変化量も反映させたものを用いる。このようなhiは、以下の式(10)で表すことができる。
【0048】
【0049】
式(10)において、Δg(hk,WkiΔxi)は、以下の式(11)で表され、xi、hk、Wkiから計算できる量である。
【0050】
【0051】
式(10)のようなhiを用いることで、ΔHiは、ΔHi=-hiΔxiと表される。
式(10)、(11)によれば、通常、xjの値の変化に対するhkの変化に応じて、hiを次の式(12)により更新すればよい。
【0052】
【0053】
式(12)において、hk
(old)は、更新前のhkを表す。なお、i=jの場合、hiは変化しないため更新は不要である。
しかし、式(12)のように第2局所場をそのまま用いて第1局所場の更新を行う方法では、状態変数の数が多い場合や制約項の数が多い場合などに、第1局所場の更新に伴う演算コストが大きくなる可能性がある。
【0054】
そこで、処理部12は、更新前後の第2局所場(hk)を量子化した量子化局所場に基づいて、制約項の値の変化量を第1局所場(hi)へ反映させる。量子化局所場は、第2局所場の近似値でもよいし、当該近似値に対応付けられるコードであって、元の局所場のビット数より少ない所定ビット数のコードでもよい。量子化局所場として、当該コードが用いられる場合、処理部12は、当該コードに基づいて元の局所場の近似値を復元し、当該近似値に基づいて計算される制約項の値の変化量を第1局所場へ反映させる。ここで、更新前の第2局所場に対応する量子化局所場を第1量子化局所場という。更新後の第2局所場に対応する量子化局所場を第2量子化局所場という。
【0055】
量子化局所場を用いる場合、i≠jでは、hiは次の式(13)により更新される。
【0056】
【0057】
また、第2局所場には量子化による誤差が含まれるため、xjの更新によりhkの更新が発生した場合のhiの更新はi=jの場合に次の式(14)により更新される。
【0058】
【0059】
hk^は、hにハット記号を付した文字の右下に添え字kを付した変数を示すものとする。例えば、hk^(old)は第1量子化局所場に相当する、更新前の局所場hkの近似値を示すものとする。また、例えばhk^は第2量子化局所場に相当する、更新後の局所場hkの近似値を示すものとする。
【0060】
なお、第2局所場の量子化では、処理部12は、例えば各制約条件に対応する重み値の最大値に基づく値で、第2局所場の最大値および最小値をクリップし、その間の値を予め定められたビット数で量子化する。例えば、第2局所場の一定範囲に含まれる各値が、当該範囲に対応する1つの量子化局所場に対応付けられる。第2局所場の量子化のより具体的な方法は後述される。
【0061】
さらに、第2局所場に近似があるため、例えば総エネルギーHは式(15)により補正される。
【0062】
【0063】
ただし、後述されるように、フリップ判定用のΔHの計算のための、量子化局所場に基づくペナルティ項の変化量と、第1局所場とを別個に記憶部11に保持することで、式(15)に基づく総エネルギーHの補正を行わないようにする方法も考えられる。
【0064】
ここで、記憶部11は、さらにバイアス係数(bi)、比例係数(λk)、制約条件に関する係数(bk)を記憶してもよい。また、記憶部11は、処理部12が後述のデータ処理方法を実行する際の計算条件など各種のデータを記憶してもよい。また、処理部12が、ソフトウェアにより後述のデータ処理方法の一部またはすべての処理を実行する場合には、記憶部11には、その処理を実行するためのプログラムが記憶される。
【0065】
図1の処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などのプロセッサにより実現されてもよい。
【0066】
処理部12は、例えば、H(x)が極小になる状態を探索する。H(x)の極小値のうちの最小値になるときの状態が最適解となる。なお、E(x)とP(x)の符号を変えれば、処理部12は、H(x)の値が極大になる状態を探索することもできる(この場合、最大値となるときの状態が最適解となる)。
【0067】
図1には、処理部12による処理の一例の流れが示されている。
なお、ここではH(x)、h
i、h
k、x
kとして、x
1~x
Nの初期値に基づいた値が、記憶部11に記憶されているものとする。
【0068】
処理部12は、N個の状態変数から、値を変化させる候補(以下フリップ候補という)の状態変数を選択する(ステップS1)。処理部12は、例えば、ランダムにまたは所定の順序で、フリップ候補の状態変数を選択する。
【0069】
そして、処理部12は、選択された状態変数の値が変化する場合のΔHを計算する(ステップS2)。例えば、xiが選択された場合、ΔHiは、上記のようにhiに基づいて、ΔHi=-hiΔxiという式により計算できる。
【0070】
次に、処理部12は、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否か(フリップ可か否か)の判定を行う(ステップS3)。以下、この判定処理を、フリップ判定処理という。
【0071】
所定値は、例えば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。例えば、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例であるlog(rand)×Tを、所定値として用いることができる。この場合、処理部12は、-ΔHi≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容する(フリップ可)と判定する。処理部12は、-ΔHi<log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容しない。
【0072】
処理部12は、フリップ可と判定した場合、第1局所場(hi)および第2局所場(hk)の次の更新処理を行う(ステップS4)。
処理部12は、例えば、xjをフリップ可と判定した場合、N個の状態変数のそれぞれについての元のhiに、Δhi=WijΔxjを加えることで、hiの更新を行う。それとともに、処理部12はフリップ可と判定したxjをフリップさせる。なお、i=jの場合、Wii=0であり、hiは変化しないため更新は不要である。また、処理部12は、xjをフリップ可と判定した場合、xjとの間の第2重み値(Wkj)が非零であるhkに対して、Δhk=WkjΔxjを加えることで、hkの更新を行う。
【0073】
例えば、第1局所場(hi)がh1~hNであり、第2局所場(hk)がhN+1~hN+Mの場合、処理部12は、N+Mの並列度の並列計算によりhi,hkの更新を行うことができる。
【0074】
さらに、処理部12は、更新前後の第2局所場(hk)を量子化した第1量子化局所場hk^(old)および第2量子化局所場hk^に基づいて、式(13)、(14)によりhiをさらに更新する(ステップS5)。ステップS5では、処理部12は、例えば式(15)により総エネルギーHの補正も行う。なお、第1量子化局所場hk^(old)は、更新前の第2局所場hk
(old)の量子化後の値である。第2量子化局所場hk^は、更新後の第2局所場hkの量子化後の値である。
【0075】
処理部12は、以上のステップS1~S5の処理を繰り返す。
ここで、ステップS5では、処理部12は、第1量子化局所場hk^(old)に対して、第2量子化局所場hk^に変化がない場合、式(13)、(14)によるhiの更新を省略することができる。ただし、処理部12は、式(15)による総エネルギーHの補正を行う場合、ステップS5では当該補正を常に行う。
【0076】
なお、上記の説明では、N個の状態変数のうちフリップ候補の状態変数を1つずつ選択して、ステップS2~S4の処理が行われる例を示したが、複数(例えばN個全て)の状態変数について並列にステップS2~S3の処理が行われるようにしてもよい。その場合、処理部12は、値の変化が許容された状態変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる状態変数を選択する。
【0077】
処理部12は、疑似焼き鈍し法を行う場合、例えば、状態変数についてのフリップ判定処理が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、処理部12は、フリップ判定処理が所定の回数繰り返された場合(または、所定のTに達した場合)に得られた状態を、離散最適化問題の計算結果として出力する。なお、処理部12は、これまでの最小エネルギーとなった場合の総エネルギーと状態とを記憶部11に保持させておいてもよい。その場合、処理部12は、フリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーに対応する状態を、計算結果として出力してもよい。
【0078】
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なるTの値が設定された複数のレプリカのそれぞれにおいて、上記のステップS1~S4の処理を繰り返す。そして、処理部12は、フリップ判定処理が所定回数繰り返されるごとに、レプリカ交換を行う。例えば、処理部12は、隣り合うTの値をもつレプリカを2つ選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差やTの値の差に基づいた所定の交換確率で、各状態変数の値の値を交換する。なお、2つのレプリカの間で、各状態変数の値の代わりにTの値が交換されてもよい。または、処理部12は、これまでの最小エネルギーとなった場合の総エネルギーと状態とを保持する。そして、処理部12は、各レプリカにおいて上記のフリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を、計算結果として出力する。
【0079】
レプリカ交換法を用いることで、状態がほとんど変化しない低温側(Tの値が小さい側レプリカ)でも状態が変化するようになり良い解を短時間で発見できる可能性が高くなる。なお、レプリカ交換法は、パラレルテンパリング法などとも呼ばれる。
【0080】
次に、第2局所場の量子化の例を説明する。
図3は、第2局所場の量子化の第1の例を示す図である。
グラフ30は、第2局所場h
kを、最大値3δおよび最小値-4δでクリップし、その間を3ビット、すなわち、8通りの値で近似することで、量子化局所場に変換する例を示す。テーブル31は、第2局所場h
kと、量子化局所場h
k^と、量子化局所場h
k^に対応する3ビットのコードx
kとの関係を例示する。
【0081】
例えば、-δ/2≦hk<δ/2の場合、hk^=<hk>δ=0であり、コードxk=000が対応付けられる。また、δ/2≦hk≦3δ/2の場合、hk^=δであり、コードxk=001が対応付けられる。このように、テーブル31によって、コードxkと第2局所場hkと量子化局所場hk^との対応関係が予め定義される。記憶部11はテーブル31を保持してもよい。処理部12は、テーブル31に基づいて、第2局所場hkを量子化することで、量子化局所場hk^やコードxkを生成してもよい。
【0082】
図4は、第2局所場の量子化の第2の例を示す図である。
グラフ40は、第2局所場h
kを、制約条件に対応する重み値の最大値W
max
(k)=δおよび最小値-δでクリップし、その間を1ビット、すなわち、2通りの値で近似することで、量子化局所場に変換する例を示す。テーブル41は、第2局所場h
kと、量子化局所場h
k^と、量子化局所場h
k^に対応する1ビットのコードx
kとの関係を例示する。
【0083】
例えば、hk>0の場合、hk^=δ/2であり、コードxk=1が対応付けられる。また、hk≦0の場合、hk^=-δ/2であり、コードxk=0が対応付けられる。記憶部11はテーブル41を保持してもよい。処理部12は、テーブル41に基づいて、第2局所場hkを量子化することで、量子化局所場hk^やコードxkを生成してもよい。
【0084】
なお、
図3,
図4の説明では、第2局所場の近似値h
k^を量子化局所場の例として説明したが、前述のように近似値h
k^に対応するコード(本例ではx
k)を量子化局所場の一例と考えてもよい。
【0085】
以上のようなデータ処理装置10及びデータ処理方法によれば、演算の効率化を可能にできる。例えば、
図1のステップS5において、h
k^
(old)に対してh
k^に変化がない場合、式(13)、(14)によるh
iの更新を省略することができる。このため、元のh
kの更新のたびにh
iを更新するよりも、h
iの更新に係る演算コストを低減することができる。その結果、データ処理装置10の求解性能を向上できる。例えば、データ処理装置10は、求解の演算を高速に実行可能になる。また、データ処理装置10は、比較的短時間で、より良い解に到達する可能性を高められる。なお、制約条件に対応する局所場は、係数λ
kと乗算されて比較的大きい値として総エネルギーに反映されるため、当該局所場として量子化した値を用いても求解への影響は非常に小さい。
【0086】
また、処理部12は、第1局所場hiの演算を行う第1演算器と、第2局所場hkの演算を行う第2演算器とを別個に有してもよい。その場合、第2演算器から第1演算器へhk^の情報を送信する場合に、第2演算器は、テーブル31またはテーブル41に基づいて、コードxkを送信することができる。第1演算器は、テーブル31またはテーブル41に基づいて、コードxkからhk^を取得し、hiの更新を行える。このようにすると、第2演算器から第1演算器へ出力する情報量が低減される。このため、処理部12の内部の配線の複雑化が抑えられ、処理部12の内部の回路実装のコストが低減される。その結果、より大規模な並列化演算を可能にすることができる。
【0087】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図5は、第2の実施の形態のデータ処理装置のハードウェア例を示す図である。
【0088】
データ処理装置100は、プロセッサ101、DRAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106、通信インタフェース107およびアクセラレータカード108を有する。データ処理装置100が有するこれらのユニットは、データ処理装置100の内部でバスに接続されている。
【0089】
プロセッサ101は、プログラムの命令を実行する演算装置である。プロセッサ101は、例えばCPUである。プロセッサ101は、HDD103に記憶されたプログラムやデータの少なくとも一部をDRAM102にロードし、プログラムを実行する。なお、プロセッサ101は複数のプロセッサコアを含んでもよい。また、データ処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0090】
DRAM102は、プロセッサ101が実行するプログラムやプロセッサ101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0091】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、データ処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0092】
GPU104は、プロセッサ101からの命令に従って、データ処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0093】
入力インタフェース105は、データ処理装置100に接続された入力デバイス52から入力信号を取得し、プロセッサ101に出力する。入力デバイス52としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0094】
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0095】
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、DRAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、プロセッサ101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0096】
通信インタフェース107は、ネットワーク54に接続され、ネットワーク54を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0097】
アクセラレータカード108は、離散最適化問題の解を探索するハードウェアアクセラレータである。離散最適化問題は、イジングモデルの総エネルギーを示す式(3)で表される。式(3)は、制約条件を表す1次形式の制約項を含む。制約条件、すなわち、制約項の数は1以上とすることができる。
【0098】
アクセラレータカード108は、プロセッサ110およびDRAM120を有する。プロセッサ110は、例えばGPU、DSP、ASIC、FPGAなどである。プロセッサ110は、内部メモリ111を有する。内部メモリ111は、例えばSRAMである。DRAM120は、プロセッサ110の処理に用いられるデータを記憶する。
【0099】
プロセッサ110は、第1の実施の形態の処理部12の一例である。内部メモリ111またはDRAM120は、第1の実施の形態の記憶部11の一例である。ただし、データ処理装置100の下記に示す機能は、DRAM102に記憶されたプログラムがプロセッサ101により実行されることで実現されてもよい。その場合、プロセッサ101は処理部12の一例であり、プロセッサ101が備えるキャッシュメモリまたはDRAM102は記憶部11の一例である。
【0100】
図6は、データ処理装置の機能例を示す図である。
データ処理装置100は、決定変数処理部130、補助変数処理部140、エネルギー保持部150およびエネルギー補正処理部160を有する。決定変数処理部130、補助変数処理部140、エネルギー保持部150およびエネルギー補正処理部160は、FPGAやASICなどの電子回路により実現される。補助変数処理部140、エネルギー保持部150およびエネルギー補正処理部160は、DRAM120に記憶されたプログラムをGPUが実行することで実現されてもよい。あるいは、補助変数処理部140、エネルギー保持部150およびエネルギー補正処理部160は、DRAM102に記憶されたプログラムをCPU101が実行することで実現されてもよい。
【0101】
決定変数処理部130は、N個の決定変数(xi)の値を保持し、決定変数に対する処理を行う。決定変数は、第1の実施の形態の状態変数に相当する。決定変数処理部130は、W保持部131,131a,…、決定変数モジュール132,132a,…および選択部133を有する。
【0102】
W保持部131,131a,…は、それぞれ決定変数モジュール132,132a,…で使用される、決定変数間および決定変数と制約条件との間の重み値を保持する。
決定変数モジュール132,132a,…は、それぞれN個の決定変数を分割した1つのグループに属する決定変数に対する局所場およびΔEの計算を行う。ΔEは、決定変数のフリップ判定に用いられる、総エネルギーの変化量を示す。
【0103】
決定変数モジュール132は、SRAM I/F(InterFace)171、hi算出部172,172a,…、h記憶部173、ΔE算出部174,174a,…および復元部175を有する。決定変数モジュール132aを含む他の決定変数モジュールも、決定変数モジュール132と同様の機能を有する。
【0104】
SRAM I/F171は、W保持部131から、フリップした決定変数に対応する重み値を読み出し、hi算出部172,172a,…に供給する。また、SRAM I/F171は、内部メモリ111に保持される、制約項ごとの重みを示す係数λの読み出しも行い、hi算出部172,172a,…に供給する。
【0105】
hi算出部172,172a,…は、何れかの決定変数のフリップに応じて、式(13)、(14)に基づき、決定変数の局所場(hi)を算出する。1つのhi算出部が1つの決定変数に対応する。式(13)、(14)で示されるように、決定変数の局所場の計算には、制約項に対応する局所場を量子化した量子化局所場に基づく近似値が用いられる。hi算出部172,172a,…は、算出したhiをh記憶部173に保存する。また、hi算出部172,172a,…は、算出したhiを、それぞれΔE算出部174,174a,…に供給する。
【0106】
h記憶部173は、複数のレプリカそれぞれに対するhiを記憶する。
ΔE算出部174,174a,…は、それぞれhi算出部172,172a,…で算出されたhiに基づいてΔEを算出し、選択部133に供給する。xiに対して、ΔEi=ΔHi=-hiΔxiである。
【0107】
復元部175は、エネルギー補正処理部160から供給される、量子化局所場を示す所定ビット数のコードを基に、当該量子化前の局所場の近似値を復元し、hi算出部172,172a,…に供給する。
【0108】
選択部133は、決定変数モジュール132,132a,…それぞれから供給されるΔEに基づいてフリップ判定を行い、フリップさせる決定変数x
jを選択する。フリップ判定には、第1の実施の形態で例示した方法と同様の方法が用いられる。選択部133は、フリップさせる決定変数のインデックス(Flip Bit)を決定変数モジュール132,132a,…の各h
i算出部に供給する。また、選択部133は、決定変数処理部130に保持される各決定変数のうちフリップさせる決定変数x
jの値を反転させる。なお、
図6では、決定変数処理部130において各決定変数の値を保持する決定変数保持部の図示を省略している。決定変数保持部は、例えば、内部メモリ111により実現される。
【0109】
さらに、選択部133は、フリップさせる決定変数に対応するΔE
jをエネルギー保持部150に出力し、エネルギー保持部150に保持される総エネルギーを更新する。
補助変数処理部140は、制約項に対応するM個の補助変数(x
k)の値を保持し、補助変数に対する処理を行う。ここで、x
kは、例えば制約条件が満たされているか否かを検出するために用いられる。制約項には、例えば
図2のReLU型の関数が用いられる。例えば、h
k>0の場合、g(h
k)>0となり制約条件違反が生じているため、h
k>0の場合にはx
k=1、h
k≦0の場合にはx
k=0となる。ただし、本実施の形態では、データ処理装置100は、補助変数x
kの値を保持しなくてもよい。
【0110】
補助変数処理部140は、W保持部141,141a,…、補助変数モジュール142,142a,…および選択部143を有する。
W保持部141,141a,…は、それぞれ補助変数モジュール142,142a,…で使用される、決定変数と制約条件との間の重み値を保持する。
【0111】
補助変数モジュール142,142a,…は、それぞれM個の補助変数を分割した1つのグループに属する補助変数に対する局所場の計算を行う。
補助変数モジュール142は、SRAM I/F181、hk算出部182,182a,…、h記憶部183を有する。補助変数モジュール142aを含む他の補助変数モジュールも、補助変数モジュール142と同様の機能を有する。
【0112】
SRAM I/F181は、W保持部141から、フリップした決定変数xjに対応する重み値を読み出し、hk算出部182,182a,…に供給する。
hk算出部182,182a,…は、決定変数xjのフリップに応じて、補助変数の局所場(hk)およびhkを量子化した量子化局所場を示すコードhk_codeを算出する。1つのhk算出部が1つの補助変数に対応する。hk算出部182,182a,…は、算出したhkをh記憶部183に保存する。また、hk算出部182,182a,…は、算出したhkおよびhk^を、選択部143に供給する。このとき、hk算出部182,182a,…は、更新前の局所場hk
(old)とその量子化局所場を示すコードhk_old_codeも、選択部143に供給する。
【0113】
h記憶部183は、複数のレプリカそれぞれに対するhkを記憶する。
選択部143は、計算対象とする制約条件のインデックスkを順次選択し、インデックスkに対応する局所場および量子化局所場を示すコードをエネルギー補正処理部160に供給する。
【0114】
エネルギー保持部150は、イジングモデルの現在の状態に対応する総エネルギーを保持する。
エネルギー補正処理部160は、エネルギー保持部150に保持される総エネルギーに対して、補助変数の局所場の変化に応じた補正を行う。当該補正では、式(15)により、決定変数側の局所場に反映される量子化局所場の影響が補正される。
【0115】
また、エネルギー補正処理部160は、hkの量子化局所場に対応する所定ビット数のコードhk_codeと、hk
(old)の量子化局所場に対応する所定ビット数のコードhk_old_codeとを決定変数処理部130に出力する。所定ビット数には、例えば、前述のように、3ビットや1ビットなど、通常の局所場のビット数に対して、非常に小さいビット数が予め定められる。
【0116】
さらに、エネルギー補正処理部160は、hk_old_codeに対してhk_codeが変化したインデックスkを示す情報hk^_update_bitを、決定変数処理部130に出力する。hk^_update_bitは、決定変数処理部130によりインデックスkの制約項に対してhiの更新を行うか否かの判定に用いられる。
【0117】
なお、W保持部131,141およびh記憶部173,183には、例えば内部メモリ111の記憶領域が用いられる。
図7は、復元部およびh
i算出部の例を示す図である。
【0118】
復元部175は、乗算器c11,c12を有する。
乗算器c11は、SRAM I/F171から供給される量子化精度を示す定数δと、エネルギー補正処理部160から供給されるコードhk_codeとを乗算することで、hk^を復元し、hi算出部172,172a,…に供給する。
【0119】
乗算器c12は、定数δと、エネルギー補正処理部160から供給されるコードhk_old_codeとを乗算することで、hk^(old)を復元し、hi算出部172,172a,…に供給する。
【0120】
なお、本実施の形態では、上記のようにδとコードとを乗算することで量子化前の局所場の近似値hk^やhk^(old)を復元する例を示すが、他の演算方法により復元されてもよい。
【0121】
hi算出部172は、乗算器c21,c31、加算器c22,c23,c33、Max演算器c24,c25,c26,c27、減算器c28,c29,c30、セレクタ(SEL)c32およびレジスタc34を有する。
【0122】
乗算器c21は、フリップ対象の決定変数xjに対応するΔxjと、当該決定変数とhi算出部172に対応する決定変数xiの間の重み値Wijとを乗算して、乗算結果を出力する。また、乗算器c21は、hi算出部172に対応する決定変数xiの値の変化量Δxiと、xiとインデックスkの制約項の間の重み値Wkiとを乗算して、乗算結果を出力する。ΔxjとWijとの乗算結果が、セレクタc32により加算器c33に供給されることで、元のhiに、Δhi=WijΔxjが加えられる。また、ΔxiとWkiとの乗算結果を基に計算されるδhi=-λk(Δg(hk^,WkiΔxi)-Δg(hk^(old),WkiΔxi))がセレクタc32により加算器c33に供給されることで、当該hiにδhiが加えられる。ただし、フリップ対象の決定変数のインデックスjに対して、i=jの場合、式(14)で示されるように、δhi=-λk(Δg(hk^,WkiΔxi)+Δg(hk^(old),WkiΔxi))である。なお、図では、数式中での減算についても加算器により示すなど、符号の反転を略記することがある。
【0123】
加算器c22は、乗算器c11から供給されるhk^と、乗算器c21から供給されるWkiΔxiとを加算して出力する。
加算器c23は、乗算器c12から供給されるhk^(old)と、乗算器c21から供給されるWkiΔxiとを加算して出力する。
【0124】
Max演算器c24は、乗算器c11から供給されるhk^と0とを比較し、大きい方を出力する。
Max演算器c25は、加算器c22から供給されるhk^+WkiΔxiと0とを比較し、大きい方を出力する。
【0125】
Max演算器c26は、乗算器c12から供給されるhk^(old)と0とを比較し、大きい方を出力する。
Max演算器c27は、加算器c23から供給されるhk^(old)+WkiΔxiと0とを比較し、大きい方を出力する。
【0126】
減算器c28は、Max演算器c24の出力値とMax演算器c25の出力値との差を計算し、出力する。
減算器c29は、Max演算器c26の出力値とMax演算器c27の出力値との差を計算し、出力する。
【0127】
減算器c30は、減算器c28の出力値と減算器c29の出力値とを計算し、出力する。
乗算器c31は、SRAM I/F171から供給される係数λkと減算器c30の出力値とを乗算してセレクタc32に供給する。乗算器c31の出力値は、δhiに相当する。
【0128】
セレクタc32は、加算器c33へ出力する値を、WijΔxjと、δhiとで切り替える。
加算器c33は、セレクタc32から供給される値を、レジスタc34に保持されるhiに加算し、レジスタc34のhiを更新する。
【0129】
レジスタc34は、hiを保持するとともに、hiをΔE算出部174に供給する。複数のレプリカに対する演算を行う場合、レプリカごとのhiがh記憶部173に保持され、演算対象のレプリカのhiが、h記憶部173からレジスタc34に読み出される。
【0130】
なお、h
i算出部172aを含む他のh
i算出部も、h
i算出部172と同様の回路構成により実現される。
図8は、h
k算出部の例を示す図である。
【0131】
補助変数モジュール142は、乗算器c41、非ゼロ検出部c42、加算器c43、レジスタc44、レジスタc45、量子化部c46,c47および変化検出部c48を有する。
【0132】
乗算器c41は、フリップ対象の決定変数xjの変化Δxjとhk算出部182に対応するWkjとを乗算し、乗算結果を出力する。非ゼロ検出部c42は、乗算器c41の乗算結果が非ゼロであるか否かを検出し、非ゼロであるか否かの検出結果を示すフラグを出力する。
【0133】
加算器c43は、レジスタc44に保持されるhkに乗算器c41の出力値WkjΔxjを加算する。
レジスタc44は、hkを保持するとともに、hkを選択部143およびレジスタc45に供給する。複数のレプリカに対する演算を行う場合、レプリカごとのhkがh記憶部183に保持され、演算対象のレプリカのhkが、h記憶部183からレジスタc44に読み出される。
【0134】
レジスタc45は、加算器c43によるWkjΔxjの加算前のhkであるhk
(old)(=h_old)を保持し、出力する。
量子化部c46は、量子化精度を定める定数δに基づいて、レジスタc44に保持されるhkを量子化することでhk^に対応するコードhk_codeを生成し、変化検出部c48に供給する。
【0135】
量子化部c47は、定数δに基づいて、レジスタc45に保持されるhk
(old)を量子化することでhk^(old)に対応するコードhk_old_codeを生成し、変化検出部c48に供給する。
【0136】
変化検出部c48は、コードhk_code,hk_old_codeに基づいて、量子化局所場の変化を検出し、変化が検出されたインデックスkを示す情報であるhk^_update_bitを選択部143に供給する。それとともに、変化検出部c48は、コードhk_code,hk_old_codeを、選択部143に供給する。
【0137】
なお、hk算出部182aを含む他のh
k算出部も、h
k算出部182と同様の回路構成により実現される。
図9は、エネルギー補正処理部の例を示す図である。
【0138】
エネルギー補正処理部160は、補助変数モジュール142,142a,…それぞれのhk算出部のうち、選択部143により選択された処理対象のインデックスkに対応するhk算出部の出力を受け付け、インデックスkごとの総エネルギーの補正処理を行う。
【0139】
エネルギー補正処理部160は、パラメータ保持部c51、レジスタc52、乗算器c53,c54,c62、Max演算器c55,c56,c57,c58および減算器c59,c60,c61を有する。
【0140】
パラメータ保持部c51は、定数δやλ
kを保持する。
レジスタc52は、選択部143より供給されるコードhk_old_code,hk_codeおよび局所場h
k,h
k
(old)(=hk_old)を保持し、出力する。
図9において、h_old_codeは、kごとのhk_old_codeの集合を示し、h_codeは、kごとのh_codeの集合を示す。また、h_oldはkごとのh
k
(old)の集合を示し、hはkごとのh
kの集合を示す。
【0141】
乗算器c53は、δとhk_old_codeとを乗算することで、hk^(old)を復元し、出力する。
乗算器c54は、δとh_codeとを乗算することで、hk^を復元し出力する。
【0142】
Max演算器c55は、乗算器c54の出力値hk^と0とを比較し、大きい方を出力する。
Max演算器c56は、乗算器c53の出力値hk^(old)と0とを比較し、大きい方を出力する。
【0143】
Max演算器c57は、hk
(old)と0とを比較し、大きい方を出力する。
Max演算器c58は、hkと0とを比較し、大きい方を出力する。
減算器c59は、Max演算器c55の出力値とMax演算器c56の出力値との差を計算し、出力する。
【0144】
減算器c60は、Max演算器c57の出力値とMax演算器c58の出力値との差を計算し、出力する。
減算器c61は、減算器c59の出力値と減算器c60の出力値との差を計算し、出力する。
【0145】
乗算器c62は、減算器c61とλkとを乗算し、乗算結果をエネルギー保持部150に供給することで、エネルギー保持部150に保持される総エネルギーを補正する。
こうして、エネルギー補正処理部160は、式(15)に基づく総エネルギーの補正処理を行う。なお、エネルギー補正処理部160は、選択部143から供給されるコードhk_old_code,hk_codeおよびhk^_update_bitを、決定変数処理部130に供給する。
【0146】
図10は、タイミングチャートの例を示す図である。
タイミングチャート60は、8つのレプリカを用いてパイプライン処理が行われる場合のデータ処理装置100の動作例を示す。0~7は、レプリカ番号である。
図10では、レプリカ番号=0のレプリカについての処理の詳細が示されており、他のレプリカについては簡略的に示されている。
【0147】
レプリカ番号=0のレプリカにおいて、フリップ判定処理が行われ(t1)、その結果に応じてx
iの更新が行われるとともに、h
i、h
kの更新のための重み値の読み出しが行われる(t2)。そして、h
i、h
kの更新が行われる(t3)。3つのh
k(
図10では、0ka、0kb、0kcと表される)の更新が行われた場合、それらについて、順に、読み出し、h
k^、h
k^
(old)の生成、h
k^の更新検出が行われる(t4~t5)。このとき、式(15)に基づく総エネルギーHの補正も行われる。
【0148】
そして、更新検出が終わったhk^から順に、対応するWkiの読み出しが行われ(t5)、δhiに基づくhiの更新が行われる(t6)。ここで、前述のように、フリップ対象のインデックスjに対して、i≠jの場合、δhi=-λk(Δg(hk^,WkiΔxi)-Δg(hk^(old),WkiΔxi))、i=jの場合、δhi=-λk(Δg(hk^,WkiΔxi)+Δg(hk^(old),WkiΔxi))である。
【0149】
その後、更新されたhiが読み出され(t7)、ΔHの計算、フリップ判定処理、H(x)の計算が行われる(t8)。
次に、データ処理装置100の処理手順を説明する。
【0150】
図11は、全体処理の例を示すフローチャートである。
以下では、一例として、疑似焼き鈍し法による探索が行われる例が示される。
(S10)決定変数処理部130および補助変数処理部140は、初期化を行う。初期化では、N個の決定変数の初期値、問題情報、計算条件(例えば、擬似焼き鈍し法で用いられる温度パラメータの情報など)が設定される。N個の決定変数の初期値は、決定変数処理部130の所定の決定変数保持部に保持される。問題情報に含まれる重み値は、対応する決定変数および補助変数のグループごとに分割されてW保持部131,131a,…およびW保持部141,141a,…に保持される。
【0151】
また、初期化では、N個の決定変数の初期値、問題情報に基づいて、hkの初期値やhiの初期値が計算され、N個のhiの初期値がh記憶部173に保持され、M個のhkの初期値がh記憶部183に保持される。さらに、N個の決定変数の初期値、問題情報に基づいてH(x)の初期値が計算され、エネルギー保持部150に保持される。
【0152】
(S11)決定変数処理部130は、決定変数フリップ選択処理を行う。決定変数フリップ選択処理の詳細は後述される。
(S12)制約条件のインデックスk=0から、kを1ずつインクリメントし、k<Mである間、ステップS13~S17が繰り返し実行される。この繰り返しの処理を補助変数ループという。
【0153】
(S13)補助変数処理部140の非ゼロ検出部c42は、補助変数の局所場更新があるか否かを判定する。補助変数の局所場更新がある場合、ステップS14に処理が進む。補助変数の局所場更新がない場合、ステップS18に処理が進む。
【0154】
(S14)エネルギー補正処理部160は、式(15)に基づく総エネルギーHの補正を行う。
(S15)補助変数処理部140の量子化部c46,c47は、それぞれ補助変数xkの量子化局所場を示すコードhk_code,hk_old_codeを算出する。
【0155】
(S16)補助変数処理部140の変化検出部c48は、コードhk_code,hk_old_codeに基づいて、量子化局所場に変化があるか否かを判定する。hk_code,hk_old_codeが異なる、すなわち、量子化局所場に変化がある場合、ステップS17に処理が進む。hk_code,hk_old_codeが同じである、すなわち、量子化局所場に変化がない場合、ステップS18処理が進む。変化がない場合、補助変数処理部140から決定変数処理部130に供給されるhk^_update_bitに基づいて、決定変数処理部130におけるステップS17の処理が省略される。
【0156】
(S17)決定変数処理部130のhi算出部172,172a,…は、補助変数処理部140から供給されるhk_codeおよびhk_old_codeに基づき、元の局所場の近似値hk^、hk^(old)を復元し、決定変数xiの局所場hiを更新する。これにより、式(13)、(14)における、補助変数からのペナルティ寄与分が、hiに反映される。
【0157】
(S18)補助変数ループが終了すると、ステップS19に処理が進む。
(S19)決定変数処理部130は、探索終了であるか否かを判定する。例えば、擬似焼き鈍し法の温度パラメータとして用いられる温度値Tが最終温度値に達した場合に、探索終了と判定される。探索終了でない場合、温度値Tを更新して、ステップS11に処理が進む。探索終了の場合、全体処理が終了する。探索終了の場合、決定変数処理部130は、計算結果を出力する。計算結果は、例えば、これまでの最小エネルギーとなった場合の総エネルギーと状態である。
【0158】
なお、ステップS14とステップS15の実行順序は逆でもよい。
また、ステップS13で示されるように、データ処理装置100は、補助変数の局所場更新がある場合にのみ、ステップS14以降の補助変数ループの処理を実行すればよく、補助変数の局所更新がない場合は当該処理を省略できる。すなわち、データ処理装置100では、非ゼロ検出部c42によっても、演算の効率化が図られている。
【0159】
図12は、決定変数フリップ選択処理の例を示すフローチャートである。
決定変数フリップ選択処理は、ステップS11に相当する。
(S20)決定変数処理部130のΔE算出部174,174a,…は、局所場h
iに基づいて決定変数x
iのΔE
iを算出する。ΔE
i=ΔH
i=-h
iΔx
iである。
【0160】
(S21)選択部133は、決定変数のビット受入判定を行う。ビット受入判定では、フリップ候補の決定変数に対応するΔEと所定値との比較結果に基づいて、当該フリップ候補の決定変数がフリップ可か否かが判定される。所定値は、乱数値と温度パラメータの値(温度値T)とに基づいて得られるノイズ値(たとえば、log(rand)×T)である。
【0161】
(S22)選択部133は、ステップS21でフリップ可と判定された決定変数からフリップビット選択を行う。例えば、選択部133は、フリップ可と判定された決定変数をランダムに1つ選択する。
【0162】
(S23)選択部133は、ビットフリップ可であるか否かを判定する。ビットフリップ可の場合、ステップS24に処理が進む。ビットフリップ不可の場合、決定変数フリップ選択処理が終了する。例えば、ステップS22で何れかの決定変数を選択した場合、ビットフリップ可であり、何れの決定変数も選択しなかった場合、ビットフリップ不可である。
【0163】
(S24)選択部133は、決定変数処理部130に保持される決定変数の更新を行う。これにより、ステップS22で選択された決定変数の値が更新される。
(S25)選択部133は、エネルギー保持部150に保持される総エネルギーHを、フリップした決定変数に対応するΔE=ΔHにより更新する。
【0164】
(S26)決定変数処理部130および補助変数処理部140は、それぞれ局所場hiおよびhkの更新を行う。すなわち、決定変数処理部130のhi算出部172,172a,…は、hiにΔhi=WijΔxjを加えることで、hiの更新を行う。また、補助変数処理部140のhk算出部182,182a,…は、hkにΔhk=WkjΔxjを加えることで、hkの更新を行う。そして、決定変数フリップ選択処理が終了する。
【0165】
第2の実施の形態のデータ処理装置100によれば、
図11のステップS16において、量子化局所場に変化がない場合、ステップS17における式(13)、(14)によるh
iの更新を省略することができる。このため、h
iの更新に係る演算コストを低減することができる。その結果、データ処理装置100の求解性能を向上できる。例えば、データ処理装置100は、求解の演算を高速に実行可能になる。また、データ処理装置100は、比較的短時間で、より良い解に到達する可能性を高められる。
【0166】
また、決定変数処理部130と補助変数処理部140とが別個の演算器、すなわち、別個の電子回路で実現される場合に、補助変数処理部140は、量子化局所場を示す比較的小さいビット数のコードを決定変数処理部130に送信すればよい。これにより、補助変数処理部140から決定変数処理部130へ出力する情報量が低減される。このため、FPGAなどにより実現されるプロセッサ110の内部の配線の複雑化が抑えられ、回路実装のコストが低減される。その結果、より大規模な並列化演算を可能にすることができる。
【0167】
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0168】
図13は、第3の実施の形態のデータ処理装置の機能例を示す図である。
第3の実施の形態のデータ処理装置100aは、フリップ判定処理に用いるエネルギー変化を計算するために決定変数の局所場に適用する制約項の変化量と決定変数の局所場とを別個に保持することで、式(15)に基づくエネルギー補正を行わない例を示す。
【0169】
第3の実施の形態のデータ処理装置100aは、
図5で示される第2の実施の形態のデータ処理装置100と同様のハードウェアにより実現される。データ処理装置100aは、データ処理装置100と同様の機能を有する。ただし、データ処理装置100aは、決定変数処理部130に代えて決定変数処理部130aを有し、エネルギー補正処理部160に代えて制約項計算部160aを有する点がデータ処理装置100と異なる。
【0170】
また、補助変数処理部140は、制約項に対応する、バイナリ変数である補助変数xkを保持する。ただし、図では、補助変数処理部140において補助変数xkを保持する補助変数保持部の図示が省略されている。補助変数保持部は例えば内部メモリ111により実現される。
【0171】
決定変数処理部130aは、W保持部131,131a,…、決定変数モジュール134,134a,…および選択部135を有する。W保持部131,131a,…は、第2の実施の形態と同じである。
【0172】
決定変数モジュール134は、SRAM I/F171、h記憶部173、復元部175、hi算出部176,176a,…およびΔE算出部177,177a,…を有する。SRAM I/F171、h記憶部173および復元部175は、第2の実施の形態と同じである。ただし、前述のように、h記憶部173には決定変数の局所場と制約項の変化量とが別個に保持される。決定変数モジュール134aを含む他の決定変数モジュールも決定変数モジュール134と同様の機能を有する。
【0173】
hi算出部176は、決定変数の局所場に適用する制約項の変化量と決定変数の局所場とを別個に計算し保持する。ここで、第3の実施の形態の局所場hiは、式(16)で表される。
【0174】
【0175】
決定変数または補助変数であるxpが1-xpに変化した場合、hiは、式(17)により更新される。インデックスpは、決定変数または補助変数のインデックスである。
【0176】
【0177】
ただし、p∈Dの場合、λp=1である。また、Δxkの情報は、例えば補助変数処理部140から各hi算出部へ供給される。
なお、p∈Dに対して、総エネルギーの更新には式(18)が用いられる。
【0178】
【0179】
また、p∈Aに対して、総エネルギーの更新には式(19)が用いられる。
【0180】
【0181】
また、決定変数のフリップ判定処理に用いるエネルギー差分の計算において決定変数の局所場に適用する制約項の変化量piは、hk^が変化した場合、式(20)により更新される。
【0182】
【0183】
さらに、補助変数xkの値が変化した場合、piは式(21)により更新される。
【0184】
【0185】
式(21)の右辺第2項は、決定変数の局所場に加算される、補助変数の反転に応じた制約項の変化量がpiに対して重複して計上されないように減算するものである。
hi算出部176は、pi+hiおよびhiを、ΔE算出部177に供給する。なお、hi算出部176aを含む他のhi算出部もhi算出部176と同様の機能を有する。
【0186】
ΔE算出部177は、hi算出部176から供給されるpi+hiを用いて、式(22)によりフリップ判定処理に用いるΔEiを算出する。
【0187】
【0188】
ΔE算出部177は、フリップ判定処理に用いるΔEiと、hiに基づくエネルギー変化量ΔHi=-hiΔxiを選択部135に供給する。
ΔE算出部177aを含む他のΔE算出部もΔE算出部177と同様の機能を有する。
【0189】
選択部135は、決定変数モジュール134,134a,…それぞれから供給されるΔEに基づいてフリップ判定を行い、フリップさせる決定変数x
jを選択する。フリップ判定には、第1の実施の形態で例示した方法と同様の方法が用いられる。選択部135は、フリップさせる決定変数のインデックス(Flip Bit)を決定変数モジュール134,134a,…の各h
i算出部に供給する。また、選択部135は、決定変数処理部130aに保持される各決定変数のうちフリップさせる決定変数x
jの値を反転させる。なお、
図13では、決定変数処理部130aにおいて各決定変数の値を保持する決定変数保持部の図示を省略している。決定変数保持部は、例えば、内部メモリ111により実現される。
【0190】
さらに、選択部135は、フリップさせる決定変数に対応するΔHjをエネルギー保持部150に出力し、エネルギー保持部150に保持される総エネルギーを更新する。
制約項計算部160aは、xkのフリップに応じて、エネルギー変化量λkhkΔxkをエネルギー保持部150に出力し、エネルギー保持部150に保持される総エネルギーを更新する。また、制約項計算部160aは、エネルギー補正処理部160と同様に、hk_code、hk_old_codeおよびhk^_update_bitを、決定変数処理部130aの各決定変数モジュールに供給する。
【0191】
図14は、h
i算出部の例を示す図である。
h
i算出部176は、乗算器c21,c72、加算器c22,c23,c73,c75,c77、Max演算器c24,c25,c26,c27、減算器c28,c29,c30、セレクタ(SEL)c71およびレジスタc74,c76を有する。
【0192】
このうち、乗算器c21、加算器c22,c23、Max演算器c24,c25,c26,c27、および、減算器c28,c29,c30は、第2の実施の形態と同じである。ただし、乗算器c21の計算結果は、加算器c23、セレクタc71および加算器c75に供給される。また、減算器c30の計算結果は、セレクタc71に供給される。なお、図では、数式中での減算についても加算器により示すなど、符号の反転を略記することがある。
【0193】
セレクタc71は、乗算器c72へ出力する値を、xkが反転する場合のWkiΔxkと、hk^が変化する場合のδhiとで切り替える。
乗算器c72は、セレクタc71の出力値とλkとを乗算し、乗算結果を加算器c73に供給する。
【0194】
加算器c73は、乗算器c72の出力値を、レジスタc74に保持されるpiに加算し、レジスタc74のpiを更新する。
レジスタc74は、piを保持するとともに、piを加算器c77に供給する。複数のレプリカに対する演算を行う場合、レプリカごとのpiがh記憶部173に保持され、演算対象のレプリカのpiが、h記憶部173からレジスタc74に読み出される。
【0195】
加算器c75は、乗算器c21から供給されるWijΔxjを、レジスタc76に保持されるhiに加算し、レジスタc76のhiを更新する。ここで、レジスタc76のhiには、λkWikΔxkも加えられるが、当該計算を行う回路構成の図示は省略されている。
【0196】
レジスタc76は、hiを保持するとともに、hiをΔE算出部177および加算器c77に供給する。複数のレプリカに対する演算を行う場合、レプリカごとのhiがh記憶部173に保持され、演算対象のレプリカのhiが、h記憶部173からレジスタc76に読み出される。
【0197】
加算器c77は、レジスタc74のpiと、レジスタc76のhiとを加算して、ΔE算出部177に供給する。
なお、hi算出部176aを含む他のhi算出部も、hi算出部176と同様の回路構成により実現される。
【0198】
図15は、制約項計算部の例を示す図である。
制約項計算部160aは、パラメータ保持部c81、レジスタc82および乗算器c83を有する。
【0199】
パラメータ保持部c81は、制約項ごとの重みを示す定数λkを保持する。
レジスタc82は、選択部143より供給されるコードhk_old_code,hk_codeおよび局所場hkを保持し、出力する。
【0200】
乗算器c83は、λkとhkとを乗算してエネルギー保持部150に供給し、Δxkに応じた総エネルギーの更新を行う。
こうして、制約項計算部160aは、式(19)に基づく総エネルギーの更新を行う。なお、制約項計算部160aは、選択部143から供給されるコードhk_old_code,hk_codeおよびhk^_update_bitを、決定変数処理部130aに供給する。
【0201】
図16は、タイミングチャートの例を示す図である。
タイミングチャート61は、8つのレプリカを用いてパイプライン処理が行われる場合のデータ処理装置100aの動作例を示す。0~7は、レプリカ番号である。
図16では、レプリカ番号=0のレプリカについての処理の詳細が示されており、他のレプリカについては簡略的に示されている。
【0202】
レプリカ番号=0のレプリカにおいて、フリップ判定処理が行われ(t1)、その結果に応じてx
i、x
kの更新が行われるとともに、h
i、h
kの更新のための重み値の読み出しが行われる(t2)。そして、h
i、h
kの更新が行われる(t3)。3つのh
k(
図16では、0ka、0kb、0kcと表される)の更新が行われた場合、それらについて、順に、読み出し、h
k^、h
k^
(old)の生成、h
k^の更新検出が行われる(t4~t5)。このとき、補助変数の局所場の変化検出において、補助変数の反転に相当する変化があった場合は、制約項計算部160aによる総エネルギーHの更新が行われる。例えば、図中の0kbの太い枠線は、3つの補助変数のうちの2番目の補助変数の反転に相当する局所場の変化があったことを示す。
【0203】
そして、更新検出が終わったhk^から順に、対応するWkiの読み出しが行われ(t5)、δhiに基づくpiの更新が行われる(t6)。このとき、補助変数の反転に相当する局所場の変化があった場合は、決定変数の局所場hiが式(17)により更新される。その後、更新されたpiおよびhiが読み出され(t7)、pi、hiによるΔEの計算、hiによるΔHの計算、ΔEによるフリップ判定処理、H(x)の計算が行われる(t8)。
【0204】
次に、データ処理装置100の処理手順を説明する。
図17は、全体処理の例を示すフローチャートである。
以下では、一例として、疑似焼き鈍し法による探索が行われる例が示される。
【0205】
(S30)決定変数処理部130aおよび補助変数処理部140は、初期化を行う。初期化では、N個の決定変数の初期値、問題情報、計算条件(例えば、擬似焼き鈍し法で用いられる温度パラメータの情報など)が設定される。N個の決定変数の初期値は、決定変数処理部130aの所定の決定変数保持部に保持される。問題情報に含まれる重み値は、対応する決定変数および補助変数のグループごとに分割されてW保持部131,131a,…およびW保持部141,141a,…に保持される。
【0206】
また、初期化では、N個の決定変数の初期値、問題情報に基づいて、M個の補助変数の初期値、hkの初期値やhiの初期値が計算され、N個のhiの初期値がh記憶部173に保持され、M個のhkの初期値がh記憶部183に保持される。M個の補助変数の初期値は、補助変数処理部140の所定の補助変数保持部に保持される。さらに、N個の決定変数の初期値、問題情報に基づいてH(x)の初期値が計算され、エネルギー保持部150に保持される。
【0207】
(S31)決定変数処理部130は、決定変数フリップ選択処理を行う。決定変数フリップ選択処理の手順は、
図12の手順と同様である。ただし、ステップS21の判定では、式(22)のΔEが用いられる。また、ステップS25のHの更新では式(18)が用いられる。
【0208】
(S32)制約条件のインデックスk=0から、kを1ずつインクリメントし、k<Mである間、ステップS33~S40が繰り返し実行される。
(S33)補助変数処理部140の非ゼロ検出部c42は、補助変数の局所場更新があるか否かを判定する。補助変数の局所場更新がある場合、ステップS34に処理が進む。補助変数の局所場更新がない場合、ステップS41に処理が進む。
【0209】
(S34)選択部143は、補助変数xkが反転条件を満たすか否かを判定する。反転条件を満たす場合、ステップS35に処理が進む。反転条件を満たさない場合、ステップS38に処理が進む。
【0210】
(S35)選択部143は、補助変数処理部140の補助変数保持部に保持される補助変数xkの値を反転させる。
(S36)制約項計算部160aは、エネルギー保持部150に保持される総エネルギーHを式(19)により更新する。
【0211】
(S37)決定変数処理部130aのhi算出部176,176a,…は、式(17)に基づき、xkの値の反転に応じて、決定変数の局所場hiを更新する。
(S38)補助変数処理部140の量子化部c46,c47は、それぞれ補助変数xkの量子化局所場を示すコードhk_code,hk_old_codeを算出する。
【0212】
(S39)補助変数処理部140の変化検出部c48は、コードhk_code,hk_old_codeに基づいて、量子化局所場に変化があるか否かを判定する。変化がある場合、ステップS40に処理が進む。変化がない場合、ステップS41に処理が進む。変化がない場合、補助変数処理部140から決定変数処理部130aに供給されるhk^_update_bitに基づいて、決定変数処理部130aにおけるステップS40の処理が省略される。
【0213】
(S40)決定変数処理部130のhi算出部176,176a,…は、補助変数処理部140から供給されるhk_codeおよびhk_old_codeを基に元の局所場の近似値hk^、hk^(old)を復元し、決定変数xiに対する補助変数xkからのペナルティpiを更新する。これにより、式(20)における、補助変数からのペナルティ寄与分が、piに反映される。また、xkが反転した場合、hi算出部176,176a,…は、式(21)によるpiの更新も行う。
【0214】
(S41)補助変数ループが終了すると、ステップS42に処理が進む。
(S42)決定変数処理部130aは、探索終了であるか否かを判定する。例えば、擬似焼き鈍し法の温度値Tが最終温度値に達した場合に、探索終了と判定される。探索終了でない場合、温度値Tを更新して、ステップS31に処理が進む。探索終了の場合、全体処理が終了する。探索終了の場合、決定変数処理部130aは、計算結果を出力する。計算結果は、例えば、これまでの最小エネルギーとなった場合の総エネルギーと状態である。
【0215】
第3の実施の形態のデータ処理装置100aによれば、
図17のステップS39において、量子化局所場に変化がない場合、ステップS40における式(20)、(21)によるh
iの更新を省略することができる。このため、h
iの更新に係る演算コストを低減することができる。その結果、データ処理装置100aの求解性能を向上できる。例えば、データ処理装置100aは、求解の演算を高速に実行可能になる。また、データ処理装置100aは、比較的短時間で、より良い解に到達する可能性を高められる。
【0216】
また、決定変数処理部130aと補助変数処理部140とが別個の演算器に対応する別個の電子回路で実現される場合に、補助変数処理部140は、量子化局所場を示す比較的小さいビット数のコードを決定変数処理部130aに送信すればよい。これにより、補助変数処理部140から決定変数処理部130aへ出力する情報量が低減される。このため、FPGAなどにより実現されるプロセッサ110の内部の配線の複雑化が抑えられ、回路実装のコストが低減される。その結果、より大規模な並列化演算を可能にすることができる。
【0217】
さらに、データ処理装置100aは、補助変数側の局所場の変化に応じた総エネルギーHの更新を、当該補助変数が反転したときだけ行えばよいため、総エネルギーの計算に係る演算コストを低減することができる。
【0218】
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0219】
図18は、第4の実施の形態のデータ処理装置の機能例を示す図である。
第4の実施の形態のデータ処理装置100bは、フリップ判定処理に用いるエネルギー変化を計算するために決定変数の局所場に適用する制約項の変化量p
iとして保持するデータ量を削減する機能を提供する。
【0220】
第4の実施の形態のデータ処理装置100bは、
図5で示される第2の実施の形態のデータ処理装置100と同様のハードウェアにより実現される。データ処理装置100bは、第3の実施の形態のデータ処理装置100aと同様の機能を有する。ただし、データ処理装置100bは、決定変数処理部130aに代えて決定変数処理部130bを有する点がデータ処理装置100aと異なる。
【0221】
決定変数処理部130bは、W保持部131,131a,…、決定変数モジュール136,136a,…および選択部135を有する。W保持部131,131a,…は、第2の実施の形態と同じである。選択部135は、第3の実施の形態と同じである。
【0222】
決定変数モジュール136は、SRAM I/F171、h記憶部173、hi算出部178,178a,…およびΔE算出部177,177a,…を有する。SRAM I/F171、h記憶部173およびΔE算出部177,177a,…は、第3の実施の形態と同じである。決定変数モジュール136aを含む他の決定変数モジュールも決定変数モジュール136と同様の機能を有する。
【0223】
hi算出部178は、決定変数の局所場に適用する制約項の変化量と決定変数の局所場とを別個に計算し保持する。hi算出部178の処理は、第3の実施の形態のhi算出部176の処理と似ているが、重み値Wkiを量子化した量子化重み値を用いて、piに関する計算を行う点がhi算出部176と異なる。
【0224】
第4の実施の形態のpi^(pにハット記号を付して添え字iを付したもの)は、hk^が変化した場合、式(23)により更新される。
【0225】
【0226】
ここで、Wki^(Wにハット記号を付して添え字kiを付したもの)は、量子化重み値を示す。
また、xkが変化した場合、pi^は式(24)により更新される。
【0227】
【0228】
ここで、hk^の精度δに対して、例えばWki^の精度は、元のWkiに対して、δ/m=δ/8程度とする。上記式(23)、(24)のpi^は、δ/mの精度で計算される。Wki^に対応する、量子化重み値を示す、Wkiのビット数より小さい所定ビット数のコードは、Wkiとは別個に、W保持部131,131a,…に予め保持される。
【0229】
hi算出部178は、piをhiと加算する際に、元の精度に戻す。例えば、hi算出部178は、(δ/m)pi^をpiとする。
hi算出部178は、pi+hiおよびhiをΔE算出部177に出力する。
【0230】
なお、h
i算出部178aを含む他のh
i算出部もh
i算出部178と同様の機能を有する。
図19は、h
i算出部の例を示す図である。
【0231】
hi算出部178は、乗算器c21,c21a,c72a,c78、加算器c22a,c23a,c73a,c75,c79、Max演算器c24a,c25a,c26a,c27a、減算器c28a,c29a,c30a、セレクタ(SEL)c71aおよびレジスタc74a,c76を有する。
【0232】
このうち、乗算器c21、加算器c75およびレジスタc76は、第3の実施の形態と同じである。ただし、乗算器c21の計算結果は、加算器c75に供給される。なお、図では、数式中での減算についても加算器により示すなど、符号の反転を略記することがある。
【0233】
乗算器c21aは、hi算出部178に対応する決定変数xiの値の変化量Δxiと、xiとインデックスkの制約項の間の量子化重み値Wki^を示すコードとを乗算して、乗算結果を出力する。量子化重み値Wki^を示すコードは、SRAM I/F171によりW保持部131から読み出されて、乗算器c21aに供給される。
【0234】
加算器c22aは、乗算器c21aの出力値と補助変数処理部140から供給されるhk_old_codeとを加算して出力する。
加算器c23aは、乗算器c21aの出力値と補助変数処理部140から供給されるhk_codeとを加算して出力する。
【0235】
Max演算器c24aは、補助変数処理部140から供給されるhk_old_codeと0とを比較し、大きい方を出力する。
Max演算器c25aは、加算器c22aの出力値と0とを比較し、大きい方を出力する。
【0236】
Max演算器c26aは、補助変数処理部140から供給されるhk_codeと0とを比較し、大きい方を出力する。
Max演算器c27aは、加算器c23aの出力値と0とを比較し、大きい方を出力する。
【0237】
減算器c28aは、Max演算器c24aの出力値とMax演算器c25aの出力値との差を計算し、出力する。
減算器c29aは、Max演算器c26aの出力値とMax演算器c27aの出力値との差を計算し、出力する。
【0238】
減算器c30aは、減算器c28aの出力値と減算器c29aの出力値とを計算し、出力する。
セレクタc71aは、乗算器c72aへ出力する値を、減算器c30aの出力値とするか、乗算器c21aの出力値とするかを切り替える。
【0239】
乗算器c72aは、セレクタc71aの出力値とλkとを乗算し、乗算結果を加算器c73aに供給する。
加算器c73aは、乗算器c72aの出力値を、レジスタc74aに保持されるpi^に加算し、レジスタc74aのpi^を更新する。
【0240】
レジスタc74aは、pi^を保持するとともに、pi^を乗算器c78に供給する。複数のレプリカに対する演算を行う場合、レプリカごとのpi^がh記憶部173に保持され、演算対象のレプリカのpi^が、h記憶部173からレジスタc74aに読み出される。
【0241】
加算器c75は、乗算器c21から供給されるWijΔxjを、レジスタc76に保持されるhiに加算し、レジスタc76のhiを更新する。ここで、レジスタc76のhiには、λkWikΔxkも加えられるが、当該計算を行う回路構成の図示は省略されている。
【0242】
乗算器c78は、pi^にδ/mを乗算することで、piを取得し、加算器c79に供給する。
加算器c79は、piとレジスタc76のhiとを加算して、ΔE算出部177に供給する。
【0243】
なお、hi算出部178aを含む他のhi算出部も、hi算出部178と同様の回路構成により実現される。
第4の実施の形態のデータ処理装置100bによれば、pi^の演算を、局所場および重み値の元のビット数よりも小さいビット数のコードにより行える。このため、第3の実施の形態と比べて、制約項の変化量(p^)を計算するための回路や、p^を記憶するためのメモリ容量を削減することができる。
【0244】
なお、第2~第4の実施の形態では、データ処理装置100,100a,100bにより擬似焼き鈍し法を実行する例を示したが、データ処理装置100,100a,100bは、複数のレプリカに対してレプリカ交換法を実行してもよい。
【0245】
次に比較例を説明する。
(比較例)
図20は、比較例1のデータ処理装置の機能を示す図である。
【0246】
比較例1のデータ処理装置70は、決定変数保持部71、補助変数保持部72、乗算器73,74,75、hi更新回路76、hk更新回路77、更新決定変数決定部78、更新補助変数決定部79を有する。
【0247】
決定変数保持部71は、N個の決定変数(xi)を保持する。また、決定変数保持部71は、フリップ候補のxjの変化量(Δxj)を出力する。
補助変数保持部72は、M個の補助変数(xk)を保持する。xkは、識別番号=kの制約条件が満たされている場合に0、満たされていない場合に1となる変数である。また、補助変数保持部72は、フリップ候補のxkの変化量(Δxk)を出力する。
【0248】
このような補助変数を用いた場合、H(x)は、たとえば、以下の式(25)で表すことができる。
【0249】
【0250】
また、比較例1のデータ処理装置70では、hiは、以下の式(26)で表すことができる。
【0251】
【0252】
また、hkは、以下の式(27)で表すことができる。
【0253】
【0254】
なお、式(27)は、-Uk=bkとすれば、式(8)と同じである。
乗算器73は、フリップ候補のxjの値が変化した場合の、式(26)に示したようなhiの変化量である、ΔxjとWijとの積を出力する。
【0255】
乗算器74は、フリップ候補のxjの値が変化した場合の、式(27)に示したようなhkの変化量である、ΔxjとWkjとの積を出力する。
乗算器75は、フリップ候補のxkの値が変化した場合の、式(26)に示したようなhiの変化量である、ΔxkとWkiとの積を出力する。
【0256】
hi更新回路76は、フリップ候補のxjの値が変化した場合、元のhiに、WijΔxjを加えることで、hiを更新する。また、hi更新回路76は、フリップ候補のxkの値が変化した場合、元のhiに、-λkWkiΔxkを加えることで、hiを更新する。
【0257】
hk更新回路77は、フリップ候補のxjの値が変化した場合、元のhkに、WkjΔxjを加えることで、hkを更新する。
更新決定変数決定部78は、フリップ候補のxjについての第1局所場であるhjに基づいて、ΔH=-hjΔxjを計算する。そして、更新決定変数決定部78は、ΔHと、所定値との比較結果に基づいて、xjの値を変化させるか否かを決定し、xjの値を変化させると決定した場合、決定変数保持部71に保持されているxjの値を変化させる。
【0258】
更新補助変数決定部79は、フリップ候補のxkについての第2局所場であるhkに基づいて、ΔH=+λkhkΔxkを計算する。そして、更新補助変数決定部79は、ΔHと、所定値との比較結果に基づいて、xkの値を変化させるか否かを決定し、xkの値を変化させると決定した場合、補助変数保持部72に保持されているxkの値を変化させる。
【0259】
このようなデータ処理装置70では、ある制約条件の違反の有無を表す補助変数(xk)の値の変化が許容された場合に、N個のWkiに基づいて、hiが更新される。これにより、M個全ての制約項に関するWkiを読み出さなくてもよくなり、加算処理(元のhiにΔhi=-λkWkiΔxkを加える処理)が行われる回数が抑制され、更新処理にかかる計算量を削減できる。
【0260】
しかし、比較例1のデータ処理装置70では、フリップ候補の状態変数の値を変化させるか否かの判定を行う時点では、その変化に伴う制約項の変化量が考慮されていない。このため、補助変数の値の変化に伴い、ΔH=+λkhkΔxkによりH(x)が更新されるまで、以下のような予測誤差が生じる可能性がある。
【0261】
図21は、比較例1のデータ処理装置における予測誤差発生例を示す図である。
縦軸は、制約項の大きさを表し、横軸はh
kを表している。
図21には、不等式制約の制約項が、λ
kmax[0,h
k]で表されている。
【0262】
予測誤差発生ケース1では、不等式制約の充足状態から違反状態に変化する場合に生じる予測誤差が示されている。予測誤差発生ケース2では、不等式制約の違反状態から充足状態に変化する場合に生じる予測誤差が示されている。
【0263】
何れのケースについても、
図21に示すような予測誤差が生じる可能性がある。
このため、難易度が高い不等式制約問題に対する求解性能を向上させることが難しくなる可能性がある。
【0264】
これに対して、第1~第4の実施の形態のデータ処理装置10,100,100a,100bは、上記の式(13)、(14)のようにhiとして、xiの値の変化に伴うE(x)の変化量だけでなく、量子化局所場に基づくP(x)の変化量の近似値も反映させた値が用いられる。このため、より正確なΔHiに基づいて、フリップ判定が行える。これにより、求解性能を向上できる。
【0265】
図22は、比較例2のデータ処理装置の機能例(その1)を示す図である。
比較例2のデータ処理装置80は、第2の実施の形態のデータ処理装置100に対して、補助変数の局所場の量子化を行わずに、すなわち、式(13)、式(14)ではなく、式(12)により決定変数の局所場の更新を行う。ただし、前述のように、フリップした決定変数のインデックスjに対し、i=jの場合、h
iの更新は行わなくてよい。
【0266】
データ処理装置80は、入力部81、制御部82、探索部83、出力部84を有する。
入力部81、制御部82、探索部83、出力部84は、例えば、データ処理装置80が備えるプロセッサが実行するプログラムモジュールや、プロセッサ内の記憶領域(レジスタやキャッシュメモリ)を用いて実装できる。なお、探索部83は、さらに、データ処理装置80が備えるRAMまたはHDDに確保した記憶領域を用いて実装されるようにしてもよい。
【0267】
入力部81は、例えば、N個の決定変数の初期値、問題情報、計算条件の入力を受け付ける。問題情報は、例えば、式(8)のWkiやbkのほか、式(10)のWij、bi、λkを含む。計算条件は、例えば、レプリカ交換法を実行する場合のレプリカ数、レプリカ交換周期、各レプリカに設定する温度パラメータの値、疑似焼き鈍し法を行う場合の温度パラメータ変更スケジュール、計算の終了条件などを含む。
【0268】
これらの情報は、ユーザによる入力デバイスの操作により入力されてもよいし、記録媒体またはネットワークを介してデータ処理装置80に入力されてもよい。
制御部82は、データ処理装置80の各部を制御して、後述の処理を実行させる。
【0269】
探索部83は、制御部82の制御のもと、フリップ判定処理や、更新処理を繰り返すことで、評価関数の値(総エネルギー)が極小になる状態を探索する。
出力部84は、探索部83による探索結果(計算結果)を出力する。
【0270】
出力部84は、例えば、計算結果を、ディスプレイに出力して表示させてもよいし、ネットワークを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
【0271】
探索部83は、重み値保持部83a、決定変数保持部83b、補助変数保持部83c、局所場更新部83d、hk更新検出部83e、hk寄与分算出部83fを有する。さらに探索部83は、hi保持部83g、hk保持部83h、ΔH計算部83i、ΔH保持部83j、FF(フリップフロップ)83k、フリップ判定処理部83l、H保持部83mを有する。
【0272】
重み値保持部83aは、N×N個のWijを保持するとともに、M×N個のWkiとN×M個のWikを保持する。なお、Wki=Wikであるため、重み値保持部83aは、N×M個のWikを保持しなくてよい。また、重み値保持部83aは、値が0であるWkiについては保持しなくてもよい。
【0273】
決定変数保持部83bは、N個の決定変数(xi)の値を保持する。また、決定変数保持部83bは、N個の決定変数のうち、フリップ候補の決定変数が指定された場合、その決定変数の値の変化量を出力する。例えば、xjが指定された場合、Δxj=1-2xjが出力される。
【0274】
補助変数保持部83cは、M個の補助変数(x
k)の値を保持する。x
kは、例えば制約条件が満たされているかを検出するために用いられる。
図22では、x
kを更新する構成についての図示が省略されている。例えば、
図2のReLU型の関数の制約項に対し、h
k>0の場合、g(h
k)>0となり制約条件違反が生じているため、h
k>0の場合にはx
k=1、h
k≦0の場合には、x
k=0とするような構成が設けられる。ただし、比較例2のデータ処理装置80は、x
kを用いなくてもよい。その場合、補助変数保持部83cは不要である。
【0275】
局所場更新部83dは、フリップ候補の決定変数の値の変化が許容された場合(フリップ可とされた場合)、重み値保持部83aからその決定変数と他の決定変数との間の重み値を読み出し、その重み値を用いて局所場の更新を行う。例えば、xjがフリップ可とされた場合、局所場更新部83dは、WijΔxjを各hiに加算することでhiを更新する。
【0276】
また、局所場更新部83dは、フリップ候補の決定変数がフリップ可とされた場合、その決定変数とM個の局所場(hk)との間の重み値のうち、値が非零の重み値を読み出し、その重み値を用いてhkを更新する。例えば、xjがフリップ可とされた場合、局所場更新部83dは、WkjΔxjをhkに加算することでhkを更新する。
【0277】
hk更新検出部83eは、hkの更新を検出する。
hk寄与分算出部83fは、更新が検出されたhkの値の変化によるhiの変化分を計算するために、重み値保持部83aから非零のWkiを読み出す。さらに、hk寄与分算出部83fは、hkをhk保持部83hから取得し、hk
(old)をFF53kから取得する。そして、hk寄与分算出部83fは、δhi’=-λk(Δg(hk,WkiΔxi)-Δg(hk
(old),WkiΔxi))を計算し、元のhiにδhi’を加えることでhiを更新する。なお、フリップした決定変数のインデックスjに対し、i=jの場合、δhi’=0である。また、δhi’の計算では、量子化した値hk^、hk^(old)は用いられず、hk、hk
(old)がそのまま用いられる。
【0278】
hi保持部83gは、N個のhiを保持する。
hk保持部83hは、M個のhkを保持する。
ΔH計算部83iは、フリップ候補の決定変数に対応する局所場に基づいて、ΔHを計算する。例えば、フリップ候補がxjである場合、ΔH計算部83iは、ΔHj=-hjΔxjを計算する。
【0279】
ΔH保持部83jは、ΔH計算部83iが計算したΔHjを保持する。
FF83kは、hkを保持し、hkを出力するタイミングを遅延させることで、hk
(old)をhk寄与分算出部83fに供給する。
【0280】
フリップ判定処理部83lは、ΔHと、所定値との比較結果に基づいて、フリップ候補の決定変数がフリップ可であるか否かのフリップ判定処理を行う。所定値は、例えば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。フリップ判定処理部83lは、例えば、-ΔH≧log(rand)×Tの場合、フリップ候補の決定変数の値の変化を許容すると判定する。
【0281】
また、フリップ判定処理部83lは、フリップ可と判定された決定変数の識別番号を決定変数保持部83bに送り、その決定変数の値を更新させる。
さらに、フリップ判定処理部83lは、フリップ可とされた決定変数の値の変化によって生じるΔHに基づいて、H保持部83mに保持されているH(x)を更新する。
【0282】
H保持部83mは、H(x)を保持する。なお、H保持部83mは、これまでの最小エネルギーとなった場合のH(x)と状態とを保持してもよい。
なお、第2~第4の実施の形態のデータ処理装置100a,100b,100cにも入力部81、制御部82、探索部83および出力部84に相当する機能を備えることができる。
【0283】
比較例2のデータ処理装置80の機能は、例えば次のような回路構成で実現することができる。
図23は、比較例2のデータ処理装置の機能例(その2)を示す図である。
【0284】
データ処理装置80は、決定変数処理部810、補助変数処理部820、エネルギー保持部830およびh保持部840を有する。エネルギー保持部830は、第2の実施の形態のデータ処理装置100のエネルギー保持部150に相当する。
【0285】
決定変数処理部810は、W保持部811,811a,…、決定変数モジュール812,812a,…および選択部813を有する。
W保持部811,811a,…および選択部813は、第2の実施の形態のデータ処理装置100のW保持部131,131a,…および選択部133にそれぞれ相当する。
【0286】
決定変数モジュール812,812a,…は、各決定変数に対する局所場hiの計算やΔEiの計算を行う。1つの決定変数モジュールは、所定数の決定変数のグループに対応付けられる。ここで、決定変数モジュール812,812a,…における局所場hiの計算では、補助変数の局所場を量子化せずに元の値のまま使用する点が、第2~第4の実施の形態と異なる。
【0287】
決定変数モジュール812は、SRAM I/F851、hi算出部852,852a,…、h記憶部853およびΔE算出部854,854a,…を有する。決定変数モジュール812aを含む、決定変数処理部810の他の決定変数モジュールも、決定変数モジュール812と同様の構成である。
【0288】
SRAM I/F851およびh記憶部853は、第2の実施の形態のデータ処理装置100のSRAM I/F171およびh記憶部173にそれぞれ相当する。
hi算出部852,852a,…は、対応する決定変数xiの局所場hiを計算する。hi算出部852,852a,…は、補助変数の局所場hkの変化に対して、式(12)により局所場hiを更新する。このとき、前述のように、i=jの場合、局所場hiの更新は行われない。式(12)の計算に用いられるhkおよびhk
(old)は、補助変数処理部820側から各hi算出部に供給される。
【0289】
ΔE算出部854は、Δhi算出部852から供給されるhiに基づいて、ΔEi=ΔHi=-hiΔxiを計算し、選択部813に出力する。
補助変数処理部820は、W保持部821,821a,…、補助変数モジュール822,822a,…および選択部823を有する。
【0290】
W保持部821,821a,…および選択部823は、第2の実施の形態のデータ処理装置100のW保持部141,141a,…および選択部143にそれぞれ相当する。
補助変数モジュール822,822a,…は、各制約項に対する局所場hkの計算を行う。1つの補助変数モジュールは、所定数の制約項のグループに対応付けられる。ここで、補助変数モジュール822,822a,…では、補助変数の局所場の量子化を行わずに、選択部823に出力する点が、第2~第4の実施の形態と異なる。
【0291】
補助変数モジュール822は、SRAM I/F861、hk算出部862,862a,…およびh記憶部863を有する。
SRAM I/F861およびh記憶部863は、第2の実施の形態のデータ処理装置100のSRAM I/F181およびh記憶部183にそれぞれ相当する。
【0292】
hk算出部862,862a,…は、対応する制約項の局所場hkを計算する。hk算出部862,862a,…は、計算した局所場hkを量子化せずに選択部823に出力する。
【0293】
選択部823は、hk算出部862,862a,…それぞれから出力されるhkを、h保持部840に順次格納する。
h保持部840は、局所場hkおよび更新前の局所場hk
(old)を保持し、局所場hkの更新が発生したインデックスkを示すhk_update_bitとhkとhk
(old)とを決定変数モジュール812,812a,…の各hi算出部に供給する。
【0294】
比較例2のデータ処理装置80では、制約条件に対応する局所場hkの更新のたびに決定変数の局所場hiを更新するため、hiの更新のための演算量が大きい。一方、第1~第4の実施の形態のデータ処理装置10,100,100a,100bは、制約条件に対応する量子化局所場hk^が変化したときに、決定変数の局所場hiを更新すればよい。このため、制約条件に対応する元の局所場hkの更新のたびにhiを更新するよりも、hiの更新に係る演算コストを低減することができる。
【0295】
また、比較例2のデータ処理装置80では、補助変数処理部820から決定変数処理部810へ、局所場hk,hk
(old)が、量子化されずに元の値のまま送信される。ここで、局所場のビット数は、比較的大きい。例えば、局所場のビット数は64bitsであり、hkおよびhk
(old)では64bits×2=128bitsとなる。また、決定変数ごとのhi算出部に相当する演算器の数も多い。例えば、決定変数の数が8K個の場合、当該演算器の数も8K個である。ここで、Kはキロを示す。また、演算データパスのデータであるため、複数のレプリカを処理する場合は、複数のレプリカのパイプライン動作に合わせた分配を要する。
【0296】
このように、比較例2のデータ処理装置80では、チップ全体に対して、バス幅が広く、かつ、高速性が要求されるデータパスを配る形になり、配線が難しい。
これに対して、第1~第4の実施の形態のデータ処理装置10,100,100a,100bは、決定変数の局所場の更新に用いる補助変数の局所場として、当該補助変数の局所場を量子化した値を用いることで、補助変数の局所場のデータ移動サイズを削減できる。このため、回路実装のコストが低減され、大規模並列化が可能になる。
【0297】
以上説明したように、第2の実施の形態のデータ処理装置100は、次の処理を行う。
データ処理装置100は、複数の状態変数を含むイジング型の評価関数を用いて計算される値が極小または極大となる複数の状態変数の値の組合せを探索する。内部メモリ111は、制約条件の違反の有無に応じた値をもつ制約項と評価関数の値との和である総エネルギーと、複数の状態変数の値と、複数の状態変数それぞれの間の第1重み値と、複数の状態変数の少なくとも一部の状態変数と制約条件との間の第2重み値と、複数の状態変数それぞれの値が変化する場合の総エネルギーの第1変化量を表す第1局所場と、制約条件に対する制約違反量の特定に用いられる第2局所場と、を記憶する。プロセッサ110は、複数の状態変数のうち第1状態変数の値の変化を許容するか否かを第1局所場に基づいて判定する処理と、第1状態変数の値の変化を許容すると判定した場合、第1重み値に基づいて第1局所場を更新し、第1状態変数と制約条件との間の第2重み値に基づいて第2局所場を更新し、更新前の第2局所場を量子化した第1量子化局所場と更新後の第2局所場を量子化した第2量子化局所場とに基づいて、第1局所場をさらに更新する処理と、を繰り返す。
【0298】
これにより、データ処理装置100は、演算の効率化を可能にできる。なお、状態変数は、第2~第4の実施の形態の決定変数に相当する。
例えば、プロセッサ110は、第1量子化局所場と第2量子化局所場とが同じである場合、第1量子化局所場と第2量子化局所場とに基づく第1局所場の更新を省略する。
【0299】
これにより、データ処理装置100は、第1局所場の更新の演算コストを削減できる。
また、プロセッサは、第1状態変数の値の変化を許容すると判定した場合、第1量子化局所場に対応する、更新前の第2局所場の近似値を用いて計算される制約項の変化量と、第2量子化局所場に対応する、更新後の第2局所場の近似値を用いて計算される制約項の変化量との差分に基づいて、第1局所場を更新する。
【0300】
これにより、データ処理装置100は、第1局所場を適切に更新できる。このような第1局所場の更新は、例えば、フリップ対象の状態変数のインデックスjに対し、式(13)(i≠jの場合)や式(14)(i=jの場合)に基づいて行われる。
【0301】
また、プロセッサ110は、第1局所場を更新する第1演算器と、第2局所場を更新する第2演算器とを有してもよい。第2演算器は、第1量子化局所場を示す第1コードであって、第2局所場の第1ビット数よりも少ない第2ビット数の第1コードと、第2量子化局所場を示す、第2ビット数の第2コードとを第1演算器に出力する。第1演算器は、第1コードに基づいて、更新前の第2局所場の近似値を取得し、第2コードに基づいて、更新後の第2局所場の近似値を取得し、更新前後の第2局所場の近似値に基づいて、第1局所場を更新する。
【0302】
これにより、第1演算器と第2演算器との間で移動させるデータ量が削減される。また、プロセッサ110における回路実装のコストが低減される。前述の決定変数処理部130は、プロセッサ110に含まれる第1演算回路または第1プロセッサコアなどに相当し、第1演算器の一例である。補助変数処理部140は、プロセッサ110に含まれる第2演算回路または第2プロセッサコアなどに相当し、第2演算器の一例である。hk_old_codeは、第1コードの一例である。hk_codeは、第2コードの一例である。第1演算器および第2演算器は、それぞれ第1演算回路および第2演算回路と言われてもよい。
【0303】
また、プロセッサ110は、第2局所場を更新すると、更新前の第2局所場と更新後の第2局所場と第1量子化局所場と第2量子化局所場とに基づいて、総エネルギーを補正する。
【0304】
これにより、データ処理装置100は、探索における各状態の総エネルギーを適切に計算できる。当該総エネルギーの補正は、式(15)に基づいて行われる。
また、第3の実施の形態で例示したように、プロセッサ110は、第1量子化局所場および第2量子化局所場に応じた制約項の第2変化量と第1局所場とを個別に記憶部に格納してもよい。この場合、プロセッサ110は、複数の状態変数の値に対して制約条件が満たされるか否かを示す補助変数の値の変化に応じて、第2重み値に基づき第1局所場と第2変化量とを更新する。また、プロセッサ110は、第1状態変数の値の変化を許容するか否かを、第1局所場と第2変化量とに基づいて判定する。さらに、プロセッサ110は、第1状態変数の値の変化に応じて、第1局所場に基づき総エネルギーを更新し、補助変数の値の変化に応じて、第2局所場に基づき総エネルギーを更新する。
【0305】
これにより、プロセッサ110は、第2局所場の更新のたびに、更新前後の第2局所場と第1量子化局所場と第2量子化局所場とを基に総エネルギーを補正しなくてもよくなる。ここで、式(20)、(21)のpiは、第2変化量の一例である。補助変数の値の変化に応じた、第2重み値に基づく第1局所場の更新は、式(17)に基づいて行われる。補助変数の値の変化に応じた、第2重み値に基づく第2変化量の更新は、式(21)に基づいて行われる。第2変化量に対しては、第1量子化局所場に対する第2量子化局所場の変化に応じて、式(20)による更新も行われる。第1状態変数の値の変化に応じた総エネルギーの更新は、式(18)に基づいて行われる。補助変数の値の変化に応じた総エネルギーの更新は、式(19)に基づいて行われる。
【0306】
さらに、第4の実施の形態で例示したように、記憶部に保持される第2変化量は、制約違反量の表現に用いられる第3ビット数よりも少ないビット数で表されてもよい。その場合、プロセッサ110は、第2重み値に対応する、第2重み値のビット数よりも少ないビット数のコードに基づいて第2変化量を更新し、第2変化量を用いて第1局所場を更新する際に、第2変化量を第3ビット数で表される値に変換する。
【0307】
これにより、第2変化量を保持するための記憶部、すなわち、内部メモリ111の記憶容量を低減でき、省メモリ化を図れる。また、第2変化量を計算する回路の実装コストの低減を図れる。ここで、式(24)、(25)のpi^は、piのビット数である第3ビット数よりも少ないビット数で表される第2変化量の一例である。
【0308】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現されてもよい。また、第2~第4の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
【0309】
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0310】
10 データ処理装置
11 記憶部
12 処理部