JP2023000462A - データ処理装置、プログラム及びデータ処理方法 - Google Patents
データ処理装置、プログラム及びデータ処理方法 Download PDFInfo
- Publication number
- JP2023000462A JP2023000462A JP2021101298A JP2021101298A JP2023000462A JP 2023000462 A JP2023000462 A JP 2023000462A JP 2021101298 A JP2021101298 A JP 2021101298A JP 2021101298 A JP2021101298 A JP 2021101298A JP 2023000462 A JP2023000462 A JP 2023000462A
- Authority
- JP
- Japan
- Prior art keywords
- value
- change
- constraint
- state
- state variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims description 17
- 238000012545 processing Methods 0.000 claims abstract description 114
- 230000008859 change Effects 0.000 claims abstract description 71
- 238000011156 evaluation Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 60
- 230000008569 process Effects 0.000 claims description 38
- 238000004364 calculation method Methods 0.000 abstract description 40
- 238000005457 optimization Methods 0.000 abstract description 14
- 230000006870 function Effects 0.000 description 35
- 239000011159 matrix material Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 230000015654 memory Effects 0.000 description 5
- 230000005366 Ising model Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000000137 annealing Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012887 quadratic function Methods 0.000 description 2
- 238000000342 Monte Carlo simulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005496 tempering Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
【課題】制約条件をもつ離散最適化問題の計算量を削減する。【解決手段】記憶部11は、x1~xNのそれぞれの値が変化する場合の評価関数の値の変化量を表す複数の局所場(hiXX)と、x1~xNのそれぞれが、制約条件を表す複数の制約項(yj)のそれぞれに与える影響の強さを示す複数の係数(Cjk)と、複数のCjkのそれぞれとx1~xNのそれぞれとの積の総和と制約条件に関する係数(dj)との和で表される複数の局所場(hjYX)を記憶し、処理部12は、記憶部11から複数のCjkのうちxiに関するCjiを読み出し、Cjiに基づいてxiの値が変化する場合の複数のhjYXの更新値を計算し、更新値とxiに関するhiXXに基づいて、xiの値が変化する場合の評価関数と複数の制約項の全体の大きさとの和の変化量(ΔH)を計算し、ΔHと所定値との比較結果に基づいてxiの値の変化を許容するか否かを判定する。【選択図】図1
Description
本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある。
イジング装置は、離散最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換する。そして、イジング装置は、疑似焼き鈍し法やレプリカ交換法(パラレルテンパリング法などとも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値(エネルギーに相当する)が極小になるイジングモデルの状態を探索する。評価関数の極小値のうちの最小値になる状態が最適解となる。なお、イジング装置は、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。イジングモデルの状態は、複数の状態変数の値の組合せにより表現できる。各状態変数の値として、0または1を用いることができる。
イジング型の評価関数は、たとえば、以下の式(1)のような2次形式の関数で定義される。
右辺の1項目は、イジングモデルのN個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xiは、識別番号がiの状態変数、xjは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。biは、識別番号=iについてのバイアス係数を示している。
また、xiの値の変化に伴うエネルギーの変化量(ΔEi)は、以下の式(2)で表される。
式(2)において、xiが1から0に変化するとき、Δxiは-1となり、状態変数xiが0から1に変化するとき、Δxiは1となる。なお、hiは局所場と呼ばれ、Δxiに応じてhiに符号(+1または-1)を乗じたものがΔEiとなる。このため、hiはエネルギーの変化量を表す変数、またはエネルギーの変化量を決める変数ということもできる。
そして、たとえば、ΔEiが、乱数と温度パラメータの値に基づいて得られるノイズ値より小さい場合には、xiの値を更新することで状態遷移を発生させ、局所場も更新する、という処理が繰り返される。
ところで、離散最適化問題には、解が満たすべき制約条件をもつものがある。たとえば、離散最適化問題の1つであるナップザック問題では、ナップザックに詰め込める荷物の総容量は、ナップザックの容量以下であるという制約条件をもつ。このような制約条件は、不等式制約と呼ばれ、制約条件が満たされないときは0以外の値をもつ制約項により表せる。
不等式制約の制約項の全体の大きさ(エネルギー)は、たとえば、以下の式(3)で表すことができる。
式(3)において、Mは不等式制約の制約項の数を表し、cjiは各制約項に関する状態変数ごとの係数である。また、ujは、不等式制約において、あるリソースの上限を表す。max[a,b]は、引数a,bのうち大きい値を出力する関数である。Vは、j=1~Mの何れかについて、cjixiの総和がujを上回る場合(制約条件を満たさない場合)、0以外の値をもつ。
制約項を含む全体のエネルギー関数は、H=E+Vと表すことができる。
式(3)は、式(1)のような2次形式の関数ではなく1次形式の不連続関数である。そこで、従来、不等式制約をイジング装置で扱えるようにするために、1次形式の不連続関数を2次形式に変換する技術が提案されている(たとえば、非特許文献1、特許文献1参照)。
式(3)は、式(1)のような2次形式の関数ではなく1次形式の不連続関数である。そこで、従来、不等式制約をイジング装置で扱えるようにするために、1次形式の不連続関数を2次形式に変換する技術が提案されている(たとえば、非特許文献1、特許文献1参照)。
しかし、2次形式に変換した不等式制約の制約項を用いて離散最適化問題を計算する場合、処理が煩雑になるなど、イジング装置で求解を行うことが難しい場合があった。
そこで、従来、上記のような不等式制約の制約項を1次形式のまま用いて、イジング装置で求解を行う技術が提案されている(たとえば、特許文献2参照)。
そこで、従来、上記のような不等式制約の制約項を1次形式のまま用いて、イジング装置で求解を行う技術が提案されている(たとえば、特許文献2参照)。
V.S.Denchev, N.Ding, S.V.N.Vishwanathan, and H.Neven, "Robust classication with adiabatic quantum optimization," in Proc. ICML’12, pp.1003-1010, 2012
不等式制約の制約項を1次形式のまま用いて求解を行う従来の技術では、状態変数の値の変化に伴う全体のエネルギー関数の変化量の計算を行う際に、各制約項に関する係数(上記の式(3)の例ではcij)を全て用いて制約項の全体の大きさの計算が行われる。各制約に関する係数は、1000個以上となる場合もあり、上記の従来技術では計算量が大きくなってしまう場合がある。
1つの側面では、本発明は、制約条件をもつ離散最適化問題の計算量を削減可能なデータ処理装置、プログラム及びデータ処理方法を提供することを目的とする。
1つの実施態様では、複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せを探索するデータ処理装置において、前記複数の状態変数のそれぞれの値が変化する場合の前記評価関数の値の複数の第1変化量を表す複数の第1局所場と、前記複数の状態変数のそれぞれが、制約条件を表す複数の制約項のそれぞれに与える影響の強さを示す複数の第1係数と、前記複数の第1係数のそれぞれと前記複数の状態変数のそれぞれとの積の総和と前記制約条件に関する第2係数との和で表される複数の第2局所場と、を記憶する記憶部と、前記記憶部から、前記複数の第1係数のうち、前記複数の状態変数の何れかである第1状態変数に関する第1係数を読み出し、前記第1係数に基づいて前記第1状態変数の値が変化する場合の前記複数の第2局所場の更新値を計算し、前記更新値と、前記複数の第1局所場のうち前記第1状態変数に関する第1局所場に基づいて、前記第1状態変数の値が変化する場合の、前記評価関数と前記複数の制約項の全体の大きさとの和の第2変化量を計算し、前記第2変化量と所定値との比較結果に基づいて、前記第1状態変数の値の変化を許容するか否かを判定する処理部と、を有するデータ処理装置が提供される。
また、1つの実施態様では、プログラムが提供される。
また、1つの実施態様では、データ処理方法が提供される。
また、1つの実施態様では、データ処理方法が提供される。
1つの側面では、本発明は、制約条件をもつ離散最適化問題の計算量を削減できる。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
第1の実施の形態のデータ処理装置10は、記憶部11、処理部12を有する。
記憶部11は、たとえば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置である。記憶部11は、レジスタなどの電子回路を含んでいてもよい。
記憶部11は、たとえば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置である。記憶部11は、レジスタなどの電子回路を含んでいてもよい。
記憶部11は、離散最適化問題の問題情報と、離散最適化問題を表すイジング型の評価関数(前述の式(1)参照)に含まれる複数(以下N個)の状態変数の値と、後述の各局所場の値を記憶する。
問題情報には、式(1)に示した重み値(Wij)とバイアス係数(bi)のほか、後述の係数(Cjk、dj)などが含まれる。
図1には、記憶部11に記憶される局所場として、hi XX、hi XY、hj YXが示されている。また、図1には、制約項の数(M)に対応したM個の補助変数(y1,…,yj,…,yM)が表されている。y1~yMは、x1~xNの値から計算可能なそれぞれ1ビットあるいは実数の値をとる変数であり、制約項を表す。
図1には、記憶部11に記憶される局所場として、hi XX、hi XY、hj YXが示されている。また、図1には、制約項の数(M)に対応したM個の補助変数(y1,…,yj,…,yM)が表されている。y1~yMは、x1~xNの値から計算可能なそれぞれ1ビットあるいは実数の値をとる変数であり、制約項を表す。
hi
XXは、識別番号=i(i=1~N)の状態変数の値が変化する場合の式(1)の評価関数の値の変化量を表す局所場であり、式(2)のhiに相当する。すなわち、hi
XXは、以下の式(4)で表せる。
hj
YXは、以下の式(5)で表せる。
式(5)においてCjkは、識別番号=kの状態変数がj番目の制約項に与える影響の強さを示す係数である。Cjkは、各制約項についてN個あり、M行N列の行列Cで表される。djは、j番目の制約項についての制約条件に関する係数である。
制約条件が、前述の不等式制約である場合、Cjkは式(3)のcjiであり、djは式(3)のujに-1を乗じた値である。
また、hi XYは、以下の式(6)で表せる。
また、hi XYは、以下の式(6)で表せる。
式(6)においてyjはj番目の制約項を表す補助変数であり、yj=f(hj
YX)と表せる。たとえば、yjが不等式制約に関する補助変数である場合、yj=f(hj
YX)=max[0,hj
YX]と表せる。
Fijは、j番目の制約項がxiの状態変数に与える影響の強さを示し、制約条件が満たされない場合に、xiに対して作用させる復元力の大きさを示す係数であり、N行M列の行列Fで表される。Fijは、たとえば、Fij=-Cjiと表せる。すなわち、行列Fは、行列Cを転置して符号を逆転したものとすることができる。
M個の制約項の全体の大きさ(エネルギー)であるVは、yjを用いて、以下の式(7)で表せる。
式(7)において、λjは各制約項に対する重みであり、制約項ごとに異なる値をとる場合もある。
なお、記憶部11は、処理部12が後述のデータ処理方法を実行する際の計算条件(たとえば、レプリカ交換法を実行する場合のレプリカ数、各レプリカに設定する温度パラメータの値、レプリカ交換周期、計算の終了条件)など各種のデータを記憶してもよい。また、処理部12が、ソフトウェアにより後述のデータ処理方法の一部またはすべての処理を実行する場合には、記憶部11には、その処理を実行するためのプログラムが記憶される。
なお、記憶部11は、処理部12が後述のデータ処理方法を実行する際の計算条件(たとえば、レプリカ交換法を実行する場合のレプリカ数、各レプリカに設定する温度パラメータの値、レプリカ交換周期、計算の終了条件)など各種のデータを記憶してもよい。また、処理部12が、ソフトウェアにより後述のデータ処理方法の一部またはすべての処理を実行する場合には、記憶部11には、その処理を実行するためのプログラムが記憶される。
処理部12は、たとえば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのハードウェアであるプロセッサにより実現できる。また、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路により実現されるようにしてもよい。
処理部12は、たとえば、式(1)に示した評価関数の値(エネルギー)が極小になる状態を探索する。評価関数の極小値のうちの最小値になるときの状態が最適解となる。なお、式(1)に示した評価関数と式(7)に示した制約項の符号を変えれば、処理部12は、評価関数の値が極大になる状態を探索することもできる(この場合、最大値となるときの状態が最適解となる)。
図1には、処理部12の一部の処理の一例の流れが示されている。
なお、ここではhi XX、hi XY、hj YX、yj、E、Vとして、x1~xNの初期値に基づいた値が、記憶部11に記憶されているものとする。
なお、ここではhi XX、hi XY、hj YX、yj、E、Vとして、x1~xNの初期値に基づいた値が、記憶部11に記憶されているものとする。
処理部12は、x1~xNのうち、値を変化させる候補(以下フリップ候補という)の状態変数を選択する(ステップS1)。処理部12は、たとえば、ランダムにまたは所定の順序で、フリップ候補の状態変数を選択する。
処理部12は、選択された状態変数の値が変化する場合の、評価関数の値の変化量(ΔE)を計算する(ステップS2)。選択された状態変数がxiの場合、ΔEは-Δxiとhi
XXとの積により計算できる。
処理部12は、選択された状態変数の値が変化することに伴うVの変化量(ΔV)を計算するために、Cjkのうち、選択された状態変数に関する係数を用いて、その状態変数の値の変化に伴うM個のhj
YXの更新値を計算する(ステップS3)。ステップS3の処理は、選択された状態変数の値の変化の影響を制約項に反映させることに相当する。選択された状態変数がxiの場合、処理部12は、元のhj
YXにCjiΔxiを加えることでhj
YXの更新値を計算できる。このため、処理部12は、M×Nの行列Cのうち、i列の係数を読み出せばよい。
処理部12は、M個のhj
YXの更新値に基づいてΔVを計算する(ステップS4)。処理部12は、hj
YXの更新値に基づいてyjを計算し、式(7)からフリップ候補の状態変数の値の変化後のVを計算し、元のVとの差分によりΔVを計算することができる。また、処理部12は、hj
YXの更新値に基づいて計算したyjを用いて式(6)により、hi
XYを計算し、-Δxiとhi
XYとの積によりΔVを計算することもできる。
処理部12は、ΔEとΔVとの和により、ΔHを計算する(ステップS5)。
そして、処理部12は、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否か(フリップ可か否か)を判定する(ステップS6)。以下、この判定処理を、フリップ判定処理という。
そして、処理部12は、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否か(フリップ可か否か)を判定する(ステップS6)。以下、この判定処理を、フリップ判定処理という。
所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。処理部12は、たとえば、ΔHが、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例である、log(rand)×Tよりも小さい場合、フリップ候補の状態変数の値の変化を許容すると判定する。
処理部12は、フリップ可と判定した場合、ステップS7の処理を行い、フリップ可ではないと判定した場合、ステップS1からの処理を繰り返す。
ステップS7の処理では、処理部12は、選択された状態変数の値を変更することで、記憶部11に記憶されている状態を更新するとともに、その変更に伴ってhi XX、hi XY、hj YXについても更新する。
ステップS7の処理では、処理部12は、選択された状態変数の値を変更することで、記憶部11に記憶されている状態を更新するとともに、その変更に伴ってhi XX、hi XY、hj YXについても更新する。
たとえば、xaの値が変化することに伴うhi
XXの更新は、hi
XX=hi
XX+WiaΔxaという式により行うことができる。すなわち、処理部12は、N×Nの重み値の行列のうち、a列の重み値を読み出せばよい。
hj
YXの更新は、ステップS3の処理で計算した更新値を確定させることにより行われる。
また、hi XYの更新は、ステップS3の処理で計算したhj YXの更新値に基づいて更新後のyjを計算し、更新前のyjとの差分(Δyj)を用いて、hi XY=hi XY+FijΔyjという式により行うことができる。前述のようにFij=-Cjiであるから、ステップS3の処理で読み出された行列Cのi列の係数を用いて、Fijが計算可能である。
また、hi XYの更新は、ステップS3の処理で計算したhj YXの更新値に基づいて更新後のyjを計算し、更新前のyjとの差分(Δyj)を用いて、hi XY=hi XY+FijΔyjという式により行うことができる。前述のようにFij=-Cjiであるから、ステップS3の処理で読み出された行列Cのi列の係数を用いて、Fijが計算可能である。
処理部12は、ステップS1~S7の処理を所定の終了条件が満たされるまで繰り返す。
なお、上記の処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
なお、上記の処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
また、上記の説明では、N個の状態変数のうちフリップ候補の状態変数を1つずつ選択して、ステップS2~S6の処理が行われる例を示したが、複数(たとえばN個全て)の状態変数について並列にステップS2~S6の処理が行われるようにしてもよい。その場合、処理部12は、値の変更が許容された状態変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる状態変数を選択する。
処理部12は、疑似焼き鈍し法を行う場合、たとえば、フリップ判定処理が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、処理部12は、フリップ判定処理が所定の回数繰り返された場合に得られた状態を、離散最適化問題の計算結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、状態変数の値の変化が発生するたびに、式(1)で表される評価関数の値(エネルギー)を更新し、これまでの最小エネルギーとなった場合のエネルギーと状態とを記憶部11に保持させておいてもよい。その場合、処理部12は、フリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーに対応する状態を、計算結果として出力してもよい。
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、上記のステップS1~S3の処理を行う。そして、処理部12は、フリップ判定処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、複数のレプリカのうち2つをランダムに選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値または状態を交換する。処理部12は、たとえば、各レプリカにおいて状態変数の値の変化が発生するたびに、式(1)で表される評価関数の値(エネルギー)を更新し、これまでの最小エネルギーとなった場合のエネルギーと状態とを保持する。そして、処理部12は、各レプリカにおいて上記のフリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を、計算結果として出力する。
以上のようなデータ処理装置10及びデータ処理方法によれば、状態変数の値の変化の可否を判定する際に用いるΔHが、hi
XXとhj
YX(またはhj
YXから式(6)により計算されるhi
XY)とに基づいて計算される。そして、ΔHと所定値との比較結果に基づいて、その状態変数の値の変化を許容するか否かが判定される。前述のように、ΔHを計算するためのhj
YXの更新値の計算では、行列Cのある列の係数を読み出せばよい。
このため、ある状態変数についてのフリップ判定を、行列Cの全ての要素を用いて行う場合よりも、計算量を削減できる。また、記憶部11から一度に読み出すデータ量を削減できる。
なお、補助変数であるyjや局所場であるhi
XX、hi
XY、hj
YXは、状態変数などの値から得られるものであるため、独立した変数ではなく、探索空間を大きくさせるようなものではない。
ところで、第1の実施の形態のデータ処理方法において適用可能な制約条件は、不等式制約に限られず、等式制約や絶対値制約を適用することもできる。
等式制約は、不等式制約のように、あるリソースの上限を設定するのではなく、リソースと同等の値を設定する制約である。
等式制約は、不等式制約のように、あるリソースの上限を設定するのではなく、リソースと同等の値を設定する制約である。
等式制約の制約項は、たとえば、以下の式(8)で表すことができる。
式(8)においてVは、j=1~Mの何れかについて、cjixiの総和がリソースを表すujとは異なる値をとる場合(制約条件を満たさない場合)に、0以外の値をもつ。
絶対値制約は、あるリソースとの差分の絶対値が大きくなるほど制約項であるVの値が大きくなる制約である。絶対値制約の制約項は、たとえば、以下の式(9)で表すことができる。
絶対値制約は、あるリソースとの差分の絶対値が大きくなるほど制約項であるVの値が大きくなる制約である。絶対値制約の制約項は、たとえば、以下の式(9)で表すことができる。
式(9)においてabsは引数の絶対値を出力する関数である。すなわち、Vは、j=1~Mのそれぞれについての、cjixiの総和とリソースであるujの差分の絶対値の和となる。なお、絶対値制約の制約項は、式(3)に示した不等式制約の制約項を2つ組み合わせて表現することもできる。
上記のような等式制約または絶対値制約を適用する場合も、式(5)のCjkを式(8)、式(9)のcjiとし、式(5)のdjを式(3)のujに-1を乗じた値とすればよい。また、式(6)のyjとして、yjが等式制約に関する補助変数である場合、yj=f(hj
YX)=(hj
YX)2と表せ、式(6)のyjとして、yjが絶対値制約に関する補助変数である場合、yj=f(hj
YX)=abs(hj
YX)と表せる。
したがって、f(hj
YX)の関数を変える以外、これらの制約条件を用いる場合についても、不等式制約を用いる場合と、同様の処理を適用できる。
(第2の実施の形態)
図2は、第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
(第2の実施の形態)
図2は、第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
データ処理装置20は、たとえば、コンピュータであり、CPU21、RAM22、HDD23、GPU(Graphics Processing Unit)24、入力インタフェース25、媒体リーダ26及び通信インタフェース27を有する。上記ユニットは、バスに接続されている。
CPU21は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU21は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM22にロードし、プログラムを実行する。なお、CPU21は複数のプロセッサコアを備えてもよく、データ処理装置20は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM22は、CPU21が実行するプログラムやCPU21が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置20は、RAM22以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD23は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、離散最適化問題の解を探索する処理をデータ処理装置20に実行させるプログラムが含まれる。なお、データ処理装置20は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
GPU24は、CPU21からの命令にしたがって、データ処理装置20に接続されたディスプレイ24aに画像を出力する。ディスプレイ24aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力インタフェース25は、データ処理装置20に接続された入力デバイス25aから入力信号を取得し、CPU21に出力する。入力デバイス25aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置20に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ26は、記録媒体26aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体26aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ26は、たとえば、記録媒体26aから読み取ったプログラムやデータを、RAM22やHDD23などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU21によって実行される。なお、記録媒体26aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体26aやHDD23を、コンピュータ読み取り可能な記録媒体ということがある。
通信インタフェース27は、ネットワーク27aに接続され、ネットワーク27aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース27は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
次に、データ処理装置20の機能及び処理手順を説明する。
図3は、データ処理装置の機能例を示すブロック図である。
データ処理装置20は、入力部30、制御部31、記憶部32、探索部33、出力部34を有する。
図3は、データ処理装置の機能例を示すブロック図である。
データ処理装置20は、入力部30、制御部31、記憶部32、探索部33、出力部34を有する。
入力部30、制御部31、探索部33、出力部34は、たとえば、CPU21が実行するプログラムモジュールや、CPU21内の記憶領域(レジスタやキャッシュメモリ)を用いて実装できる。記憶部32は、たとえば、RAM22またはHDD23に確保した記憶領域を用いて実装できる。
入力部30は、たとえば、状態変数(x1~xN)の初期値、問題情報、計算条件の入力を受け付ける。問題情報は、たとえば、式(1)に示した重み値(Wij)とバイアス係数(bi)のほか、式(5)に示した係数(Cjk、dj)、式(6)に示した係数(Fij)、式(7)に示した各制約に対する重み(λj)を含む。計算条件は、たとえば、レプリカ交換法を実行する場合のレプリカ数、レプリカ交換周期、各レプリカに設定する温度パラメータの値、疑似焼き鈍し法を行う場合の温度パラメータ変更スケジュール、計算の終了条件などを含む。
これらの情報は、ユーザによる入力デバイス25aの操作により入力されてもよいし、記録媒体26aまたはネットワーク27aを介して入力されてもよい。
制御部31は、データ処理装置20の各部を制御して、後述の処理を実行させる。
制御部31は、データ処理装置20の各部を制御して、後述の処理を実行させる。
記憶部32は、x1~xNの初期値、Wij、bi、Cjk、dj、Fij、λjを記憶する。また、記憶部32は、その他の問題情報や計算条件など各種の情報を記憶してもよい。
探索部33は、初期値計算部33a、h&y更新保持部33b、フリップ候補変数選択部33c、Δx計算部33d、E更新保持部33e、V更新保持部33fを有する。さらに、探索部33は、ΔH計算部33g、フリップ判定部33h、状態保持部33i、遷移先状態計算部33j、状態更新部33kを有する。
初期値計算部33aは、記憶部32に記憶されたx1~xNの初期値、bi、Cjk、djを読み出して、これらの値に基づいて、式(4)、式(5)により、hi
XX、hj
YXの初期値を計算する。また、初期値計算部33aは、hj
YXの初期値から、yj=f(hj
YX)の式により、yjの初期値を計算する。
yjが不等式制約に関する補助変数である場合、前述のようにyj=f(hj
YX)=max[0,hj
YX]と表せる。yjが等式制約に関する補助変数である場合、前述のようにyj=f(hj
YX)=(hj
YX)2と表せる。yjが絶対値制約に関する補助変数である場合、前述のようにyj=f(hj
YX)=abs(hj
YX)と表せる。
さらに初期値計算部33aは、記憶部32に記憶されたFijを読み出して、計算したyjの初期値とFijに基づいて、式(6)により、hi
XYの初期値を計算する。
h&y更新保持部33bは、hi XX、hj YX、hi XY、yjの更新を行うとともに、これらの値を保持する。
h&y更新保持部33bは、hi XX、hj YX、hi XY、yjの更新を行うとともに、これらの値を保持する。
xaの値が変化することに伴うhi
XXの更新値は、hi
XX=hi
XX+WiaΔxaという式で表せる。xaの値が変化することに伴うhj
YXの更新値は、hj
YX=hj
YX+CjaΔxaという式で表せる。xaの値が変化することに伴うhi
XYの更新値は、hi
XY=hi
XY+FijΔyjという式で表せる。Δyjは、hj
YXの更新値を用いてΔyj=f(hj
YX)-yjという式により計算される。
フリップ候補変数選択部33cは、フリップ候補の状態変数を選択する。フリップ候補変数選択部33cは、たとえば、ランダムにまたは所定の順序で、フリップ候補の状態変数を選択する。フリップ候補変数選択部33cは、選択したフリップ候補の状態変数の識別番号(1~N)を出力する。
Δx計算部33dは、選択されたフリップ候補の状態変数の値の変化量を計算する。たとえば、フリップ候補の状態変数がxaである場合、xaが1から0に変化するとき、Δxaは-1となり、状態変数xaが0から1に変化するとき、Δxaは1となる。
E更新保持部33eは、式(1)に示した評価関数の値であるEを更新するとともに、Eを保持する。xaの値の変化に伴うEの変化量であるΔEは、ΔE=-Δxaha
XXと表せる。したがって、xaの値が変化する場合、Eは、E=E-Δxaha
XXと更新される。
V更新保持部33fは、式(7)に示したM個の制約項の全体の大きさであるVを更新するとともに、Vを保持する。xaの値の変化に伴うVの変化量であるΔVを計算するために、V更新保持部33fは、hj
YX=hj
YX+CjaΔxaの式により、xaの変化に伴うM個のhj
YXの更新値を計算する。そして、V更新保持部33fは、M個のhj
YXの更新値に基づいてM個のyjを計算し、式(7)からフリップ候補の状態変数の値の変化後のVを計算し、元のVとの差分によりΔVを計算することができる。また、V更新保持部33fは、hj
YXの更新値に基づいて計算したyjを用いて式(6)により、ha
XYを計算し、-Δxaとha
XYとの積によりΔVを計算することもできる。
ΔH計算部33gは、E更新保持部33eとV更新保持部33fによるEの更新とVの更新の際に得られる、ΔEとΔVを加算してΔHを計算する。
フリップ判定部33hは、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否かのフリップ判定処理を行う。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。フリップ判定部33hは、たとえば、ΔHが、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例である、log(rand)×Tよりも小さい場合、フリップ候補の状態変数の値の変化を許容すると判定する。
フリップ判定部33hは、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否かのフリップ判定処理を行う。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。フリップ判定部33hは、たとえば、ΔHが、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例である、log(rand)×Tよりも小さい場合、フリップ候補の状態変数の値の変化を許容すると判定する。
状態保持部33iは、N個の状態変数(x1~xN)の値を保持する。
遷移先状態計算部33jは、x1~xNのうちフリップ候補変数選択部33cが出力した識別番号の状態変数の値を変えた遷移先状態を計算する。
遷移先状態計算部33jは、x1~xNのうちフリップ候補変数選択部33cが出力した識別番号の状態変数の値を変えた遷移先状態を計算する。
状態更新部33kは、フリップ判定部33hが状態変数の値の変化を許容すると判定した場合、遷移先状態計算部33jが計算した遷移先状態を用いて、状態保持部33iに保持されている状態を更新する。
探索部33は、制御部31の制御のもと、上記のようなフリップ判定処理や、各パラメータの更新処理を繰り返すことで、評価関数の値(エネルギー)が極小になる状態を探索する。
出力部34は、探索部33による探索結果(計算結果)を出力する。たとえば、レプリカ交換法が行われる場合、出力部34は、各レプリカにおいて上記のフリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を、計算結果として出力する。
出力部34は、たとえば、計算結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
以下、データ処理装置20の処理手順(データ処理方法)を説明する。なお、以下では、レプリカ交換法を用いて探索が行われる例を説明する。
図4は、データ処理方法の一例の流れを示すフローチャートである。
図4は、データ処理方法の一例の流れを示すフローチャートである。
ステップS10:入力部30は、x1~xNの初期値、前述の問題情報や計算条件の入力を受け付ける。たとえば、入力されたx1~xNの初期値や問題情報は、記憶部32に記憶され、計算条件は制御部31に供給される。
ステップS11:各レプリカについて、初期化処理が行われる。初期化処理の手順の例については後述する。
制御部31は、各レプリカについて以下のステップS12~S16の処理を探索部33に行わせる。
制御部31は、各レプリカについて以下のステップS12~S16の処理を探索部33に行わせる。
ステップS12:探索部33のフリップ候補変数選択部33cは、値を変化させる(更新する)候補の状態変数を選択する。
ステップS13:探索部33は、ΔHの計算を行う。ステップS13のΔHの計算手順の例については後述する。
ステップS13:探索部33は、ΔHの計算を行う。ステップS13のΔHの計算手順の例については後述する。
ステップS14:フリップ判定部33hは、ΔHと所定値との比較結果に基づいて、フリップ判定を行う。フリップ判定部33hによって、状態変数の値の変化を許容すると判定した場合(「フリップ可」の場合)、ステップS15の処理が行われ、状態変数の値の変化を許容しないと判定した場合(「フリップ否」の場合)、ステップS16の処理が行われる。
ステップS15:更新処理が行われる。ステップS15の処理では、状態更新部33kによる状態の更新や、h&y更新保持部33bによるhi
XX、hj
YX、hi
XY、yjの更新、E更新保持部33e、V更新保持部33fによるEとVの更新が行われる。
ステップS16:制御部31は、処理が所定の終了条件を満たすか否かを判定する。たとえば、制御部31は、探索部33がフリップ判定処理を行った回数が、最大フリップ判定回数に達した場合、終了条件が満たされたと判定する。処理が所定の終了条件を満たすと判定された場合、ステップS19の処理が行われ、処理が所定の終了条件を満たさないと判定された場合、ステップS17の処理が行われる。
ステップS17:制御部31は、フリップ判定回数がレプリカ交換周期であるか否かを判定する。たとえば制御部31は、フリップ判定回数を、レプリカ交換周期を示す値で割ったときの余りが0である場合、フリップ判定回数がレプリカ交換周期であると判定する。
制御部31は、フリップ判定回数がレプリカ交換周期であると判定した場合、ステップS18の処理を行い、フリップ判定回数がレプリカ交換周期ではないと判定した場合、探索部33にステップS12からの処理を繰り返させる。
ステップS18:制御部31は、レプリカ交換処理を行う。たとえば、制御部31は、複数のレプリカのうち2つをランダムに選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差や温度パラメータの値の差に基づいた所定の交換確率で、状態または設定されている温度パラメータの値を交換する。ステップS18の処理後、制御部31は、探索部33にステップS12からの処理を繰り返させる。
ステップS19:出力部34は、計算結果を出力する。出力部34は、たとえば、各レプリカについて記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を計算結果として出力する。出力部34は、たとえば、計算結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
次に、上記のステップS11の初期化処理の手順の例を説明する。
図5は、初期化処理の手順の一例の流れを示すフローチャートである。
なお、EとVは、0に初期化されているものとする。
図5は、初期化処理の手順の一例の流れを示すフローチャートである。
なお、EとVは、0に初期化されているものとする。
初期値計算部33aは、まず、i=1~N、j=1~Mの全てのhi
XX、hi
XY、hj
YXに対して、hi
XX=bi、hi
XY=0、hj
YX=djとする(ステップS20)。そして、初期値計算部33aは、j=1~Mの全てのyjを、yj=f(hj
YX)の式により計算する(ステップS21)。ステップS21の処理後、初期値計算部33aは、hi
XY=hi
XY+Fijyjの式により、i=1~Nの全てのhi
XYを、j=1~Mの全てのFijyjを用いて更新する(ステップS22)。
その後、初期値計算部33aは、状態変数の識別番号を表す変数であるkを、k=1とし(ステップS23)、E=E-xk
0hk
XXの式により、Eを更新する(ステップS24)。さらに、初期値計算部33aは、hi
XX=hi
XX+Wikxk
0の式により、i=1~Nの全てのhi
XXを更新する(ステップS25)。なお、xk
0は、識別番号=kの状態変数の初期値を表す。
ステップS25の処理後、初期値計算部33aは、k=Nであるか否かを判定し(ステップS26)、k=Nではないと判定した場合、k=k+1とし(ステップS27)、ステップS24からの処理を繰り返す。
初期値計算部33aは、k=Nであると判定した場合、hj
YX=hj
YX+Cjkxk
0の式により、j=1~Mの全てのhj
YXを、k=1~Nの全てのCjkxk
0を用いて更新する(ステップS28)。
その後、初期値計算部33aは、制約の識別番号を表す変数であるjを、j=1とする(ステップS29)。そして、初期値計算部33aは、Δyjを、Δyj=f(hj
YX)-yjの式により計算するとともに、V=V+(λj/2)(f(hj
YX))2の式により、Vを更新する(ステップS30)。
その後、初期値計算部33aは、hi
XY=hi
XY+FijΔyjの式により、i=1~Nの全てのhi
XYを更新する(ステップS31)。
ステップS31の処理後、初期値計算部33aは、j=Mであるか否かを判定し(ステップS32)、j=Mではないと判定した場合、j=j+1とし(ステップS33)、ステップS30からの処理を繰り返す。
ステップS31の処理後、初期値計算部33aは、j=Mであるか否かを判定し(ステップS32)、j=Mではないと判定した場合、j=j+1とし(ステップS33)、ステップS30からの処理を繰り返す。
初期値計算部33aは、j=Mであると判定した場合、初期化処理を終了する。
次に、図4のステップS13のΔHの計算手順の例を説明する。
図6は、ΔHの計算手順の一例の流れを示すフローチャートである。図6には、フリップ候補の状態変数として、xaが選択された場合の例が示されている。
次に、図4のステップS13のΔHの計算手順の例を説明する。
図6は、ΔHの計算手順の一例の流れを示すフローチャートである。図6には、フリップ候補の状態変数として、xaが選択された場合の例が示されている。
Δx計算部33dは、Δxa=1-2xaの式により、xaの値の変化量であるΔxaを計算し、E更新保持部33eは、E=E-Δxaha
XXの式により、Eの更新値を計算する(ステップS40)。
そして、V更新保持部33fは、V=0に初期化する(ステップS41)。h&y更新保持部33bとV更新保持部33fは、制約の識別番号を表す変数であるjを、j=1とする(ステップS42)。そして、h&y更新保持部33bは、hj
YX=hj
YX+CjaΔxaの式により、xaの値の変化に伴うhj
YXの更新値を計算するとともに、xaの値の変化に伴うΔyjを、Δyj=f(hj
YX)-yjの式により計算する。なお、yjは、更新前のhj
YXを用いて、yj=f(hj
YX)と表せる。そして、V更新保持部33fは、hj
YXの更新値を用いて、V=V+(λj/2)(f(hj
YX))2の式により、xaの値の変化に伴うVの更新値を計算する(ステップS43)。
その後、h&y更新保持部33bは、hi
XY=hi
XY+FijΔyjの式により、xaの値の変化に伴うi=1~Nの全てのhi
XYの更新値を計算する(ステップS44)。
ステップS44の処理後、h&y更新保持部33bとV更新保持部33fは、j=Mであるか否かを判定し(ステップS45)、j=Mではないと判定した場合、j=j+1とし(ステップS46)、ステップS43からの処理を繰り返す。
j=Mであると判定された場合、ΔH計算部33gは、xaの値の変化に伴う更新後のE+Vと更新前のE+Vとの差を計算することで、ΔHを計算し(ステップS47)、ΔHの計算を終了する。
なお、xaの値の変化に伴うΔEは、ΔE=-Δxaha
XXと表せ、xaの値の変化に伴うVの変化量であるΔVは、ΔV=-Δxaha
XYと表せるためΔH計算部33gは、ΔHを、ΔH=-Δxa(ha
XX+ha
XY)という式により計算することもできる。
なお、図4~図6に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
以上のようなデータ処理装置20及びデータ処理方法によれば、第1の実施の形態のデータ処理装置10及びデータ処理方法と同様の効果が得られる。すなわち、ΔHを計算するためのhj YXの更新値の計算では、ステップS43の処理で行列Cのある列のM個の係数を読み出せばよいため、ある状態変数についてのフリップ判定を、行列Cの全ての要素を用いて行う場合よりも、計算量を削減できる。また、記憶部32から一度に読み出すデータ量を削減できる。
以上のようなデータ処理装置20及びデータ処理方法によれば、第1の実施の形態のデータ処理装置10及びデータ処理方法と同様の効果が得られる。すなわち、ΔHを計算するためのhj YXの更新値の計算では、ステップS43の処理で行列Cのある列のM個の係数を読み出せばよいため、ある状態変数についてのフリップ判定を、行列Cの全ての要素を用いて行う場合よりも、計算量を削減できる。また、記憶部32から一度に読み出すデータ量を削減できる。
なお、ステップS44の処理では、xaの値の変化により値が変化する補助変数(yj)の数をp個とすると、hi
XYを更新するために行列Fから読み出される係数の数は、Np個とすればよい。したがって、xaの値の変化に伴う局所場の更新のために、行列Cや行列Fから読み出される係数の個数は、M+Npとなる。
なお、前述のように、上記の処理内容は、データ処理装置20にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
(第3の実施の形態)
図7は、第3の実施の形態のデータ処理装置の一例を示す図である。図7において、図2に示した要素と同じ要素については同一符号が付されている。
図7は、第3の実施の形態のデータ処理装置の一例を示す図である。図7において、図2に示した要素と同じ要素については同一符号が付されている。
第3の実施の形態のデータ処理装置40は、バスに接続されたアクセラレータカード41を有する。
アクセラレータカード41は、離散最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード41は、FPGA41a及びDRAM41bを有する。
アクセラレータカード41は、離散最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード41は、FPGA41a及びDRAM41bを有する。
第3の実施の形態のデータ処理装置40では、FPGA41aが、たとえば、図3に示した制御部31や探索部33の処理を行う。
また、DRAM41bが図3に示した記憶部32として機能する。
また、DRAM41bが図3に示した記憶部32として機能する。
なお、アクセラレータカード41は、複数あってもよい。その場合、たとえば、各レプリカについての処理(たとえば、図4のステップS12~S16の処理)を並列に行うことができる。
図8は、FPGAの一例の構成を示す図である。
FPGA41aはコントローラ50、状態更新保持回路51、乗算器52,53、hXX更新保持回路54、hYX更新保持回路55、y計算保持回路56、E更新保持回路57、V更新保持回路58、乗算器59、hXY更新保持回路60、加算回路61を有する。
FPGA41aはコントローラ50、状態更新保持回路51、乗算器52,53、hXX更新保持回路54、hYX更新保持回路55、y計算保持回路56、E更新保持回路57、V更新保持回路58、乗算器59、hXY更新保持回路60、加算回路61を有する。
コントローラ50は、FPGA41aの各部を制御する。たとえば、コントローラ50は、図8のように状態更新保持回路51やy計算保持回路56の動作タイミングを決めるためのクロック信号(clkx、clky)を生成して出力する。
また、コントローラ50は、フリップ候補の状態変数を選択する機能や、加算回路61が出力する2種類の局所場の加算結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否かを判定する機能を有する。たとえば、コントローラ50は、フリップ候補の状態変数としてxaを選択する場合、識別番号=aを出力する。コントローラ50は、加算回路61が出力する加算結果であるha
XX+ha
XYと、状態更新保持回路51が出力するΔxaとに基づいて、ΔH=-Δxa(ha
XX+ha
XY)を計算する。そして、コントローラ50は、ΔHと、乱数と温度パラメータの値とに基づいて得られるノイズ値との比較結果に基づいて、xaの値の変化を許容するか否かを判定する。
状態更新保持回路51は、たとえば、レジスタまたはSRAM(Static Random Access Memory)などを有し、N個のxi(i=1~N)の値を保持する。なお、N個のxiの初期値であるxi
0は、DRAM41bから読み出され、状態更新保持回路51に保持される。
また、状態更新保持回路51は、コントローラ50から指定されたフリップ候補の状態変数の値が変化した場合の変化量を出力する。たとえば、状態変数の識別番号としてaが指定された場合、状態更新保持回路51は、xaの変化量であるΔxaを出力する。
さらに、状態更新保持回路51は、コントローラ50からフリップ候補の状態変数の値の変化を許容する旨の信号を受けた場合、その状態変数の値を0から1または1から0に変化させることで、状態の更新を行う。
乗算器52は、DRAM41bに記憶されているN×N個のWijによる行列Wのうち、フリップ候補の状態変数に関する行または列の重み値と状態変数の変化量との積を出力する。たとえば、フリップ候補の状態変数がxaである場合、行列Wのうちa列のN個の重み値(Wia)がDRAM41bから読み出され、ΔxaとWiaとの積が出力される。
乗算器53は、DRAM41bに記憶されているM×N個のCjkによる行列Cのうち、フリップ候補の状態変数に関する列の係数と状態変数の変化量との積を出力する。たとえば、フリップ候補の状態変数がxaである場合、行列Cのうちa列のM個の係数(Cja)がDRAM41bから読み出され、ΔxaとCjaとの積が出力される。
hXX更新保持回路54は、たとえば、レジスタまたはSRAMなどを有し、N個のhi
XXを保持するとともに、乗算器52が出力するN個の積のそれぞれを、N個のhi
XXのうち対応するhi
XXに加算することで、N個のhi
XXの更新値を計算する。なお、N個のhi
XXの初期値であるbiは、DRAM41bから読み出され、hXX更新保持回路54に保持される。
hYX更新保持回路55は、たとえば、レジスタまたはSRAMなどを有し、M個のhj
YXを保持するとともに、乗算器53が出力するM個の積のそれぞれを、M個のhj
YXのうち対応するhj
YXに加算することで、M個のhj
YXの更新値を計算する。なお、M個のhj
YXの初期値であるdjは、DRAM41bから読み出され、hYX更新保持回路55に保持される。
y計算保持回路56は、M個の補助変数であるyjを計算するとともに、前回計算したyjとの差分(Δyj)を計算する。yjが不等式制約に関する補助変数である場合、前述のようにyj=f(hj
YX)=max[0,hj
YX]と表せる。yjが等式制約に関する補助変数である場合、前述のようにyj=f(hj
YX)=(hj
YX)2と表せる。yjが絶対値制約に関する補助変数である場合、前述のようにyj=f(hj
YX)=abs(hj
YX)と表せる。
y計算保持回路56は、上記複数の制約条件の何れかに対応したf(hj
YX)を計算する回路であってもよいが、上記複数の制約条件のそれぞれに対応したf(hj
YX)を計算する回路であってもよい。たとえば、y計算保持回路56は、上記の3種類のf(hj
YX)を計算する3種類の回路を有していて、コントローラ50の制御のもと、使用する回路を切り替えてもよい。
なお、y計算保持回路56は、たとえば、レジスタまたはSRAMなどを有し、計算したM個のyjを保持する。
E更新保持回路57は、たとえば、レジスタまたはSRAMなどを有し、式(1)に示した評価関数の値であるEを保持するとともに、Eの更新値を計算する。たとえば、xaの値の変化が許容された場合、E=E-Δxaha XXの式により、Eの更新値が得られる。なお、Eの初期値として、E更新保持回路57には0が設定される。
E更新保持回路57は、たとえば、レジスタまたはSRAMなどを有し、式(1)に示した評価関数の値であるEを保持するとともに、Eの更新値を計算する。たとえば、xaの値の変化が許容された場合、E=E-Δxaha XXの式により、Eの更新値が得られる。なお、Eの初期値として、E更新保持回路57には0が設定される。
V更新保持回路58は、たとえば、レジスタまたはSRAMなどを有し、式(7)に示したM個の制約項の全体の大きさであるVを保持するとともに、Vの更新値を計算する。なお、Vの初期値として、V更新保持回路58には0が設定される。
乗算器59は、ΔyjとDRAM41bから読み出されたFijとの積を出力する。
hXY更新保持回路60は、たとえば、レジスタまたはSRAMなどを有し、N個のhi XYを保持するとともに、乗算器59が出力するFijΔyjを、各jについて、N個のhi XYのうち対応するhi XYに加算することで、N個のhi XYの更新値を計算する。なお、N個のhi XYの初期値として、hXY更新保持回路60には0が設定される。
hXY更新保持回路60は、たとえば、レジスタまたはSRAMなどを有し、N個のhi XYを保持するとともに、乗算器59が出力するFijΔyjを、各jについて、N個のhi XYのうち対応するhi XYに加算することで、N個のhi XYの更新値を計算する。なお、N個のhi XYの初期値として、hXY更新保持回路60には0が設定される。
加算回路61は、コントローラ50がΔHを計算するために用いられる、hXX更新保持回路54に保持されている局所場とhXY更新保持回路60に保持されている局所場との加算結果を出力する。xaの値が変化する場合、加算回路61は、図8のように、ha
XX+ha
XYを出力する。
なお、コントローラ50は、E更新保持回路57が出力する更新前後のEからΔEを計算し、V更新保持回路58が出力する更新前後のVからΔVを計算し、ΔH=ΔE+ΔVを計算してもよい。また、コントローラ50は、E更新保持回路57が出力する更新前のEとV更新保持回路58が出力する更新前のVからH=E+Vを計算し、更新後のEとVとの和との差分により、ΔHを計算してもよい。これらの場合、乗算器59、hXY更新保持回路60、加算回路61はなくてもよい。
上記のような第3の実施の形態のデータ処理装置40においても、第2の実施の形態のデータ処理装置20と同様の効果が得られる。
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
たとえば、状態変数として、-1または1の値をもつスピン変数(si)を用いることもできる。その場合、上記の状態変数(xi)を、xi=(si+1)/2とすればよい。
10 データ処理装置
11 記憶部
12 処理部
11 記憶部
12 処理部
Claims (7)
- 複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せを探索するデータ処理装置において、
前記複数の状態変数のそれぞれの値が変化する場合の前記評価関数の値の複数の第1変化量を表す複数の第1局所場と、前記複数の状態変数のそれぞれが、制約条件を表す複数の制約項のそれぞれに与える影響の強さを示す複数の第1係数と、前記複数の第1係数のそれぞれと前記複数の状態変数のそれぞれとの積の総和と前記制約条件に関する第2係数との和で表される複数の第2局所場と、を記憶する記憶部と、
前記記憶部から、前記複数の第1係数のうち、前記複数の状態変数の何れかである第1状態変数に関する第1係数を読み出し、前記第1係数に基づいて前記第1状態変数の値が変化する場合の前記複数の第2局所場の更新値を計算し、前記更新値と、前記複数の第1局所場のうち前記第1状態変数に関する第1局所場に基づいて、前記第1状態変数の値が変化する場合の、前記評価関数と前記複数の制約項の全体の大きさとの和の第2変化量を計算し、前記第2変化量と所定値との比較結果に基づいて、前記第1状態変数の値の変化を許容するか否かを判定する処理部と、
を有するデータ処理装置。 - 前記処理部は、前記第1状態変数の値の変化を許容すると判定した場合、前記第1状態変数の値を変化させるとともに、前記複数の第1局所場及び前記複数の第2局所場を更新する更新処理を行う、請求項1に記載のデータ処理装置。
- 前記処理部は、前記複数の状態変数のそれぞれについて、前記第1係数を読み出し、前記更新値を計算し、前記第2変化量を計算し、前記第1状態変数の値の変化を許容するか否かを判定する処理と、前記更新処理を行うことで、前記評価関数の値が前記極小または前記極大となる前記複数の状態変数の値の組合せを探索する請求項2に記載のデータ処理装置。
- 前記処理部は、
前記第1状態変数が変化する場合の前記複数の第2局所場の前記更新値を用いて計算される前記複数の制約項のそれぞれと、前記複数の制約項のそれぞれが前記第1状態変数に与える影響の強さを示す複数の第3係数のそれぞれとの積の総和である第3局所場を計算し、
前記第1局所場と前記第3局所場との和と、前記第1状態変数の変化量との積により、前記第2変化量を計算する、
請求項1乃至3の何れか一項に記載のデータ処理装置。 - 前記制約条件は、不等式制約、等式制約または絶対値制約である、請求項1乃至4の何れか一項に記載のデータ処理装置。
- 複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せの探索をコンピュータに実行させるプログラムであって、
前記複数の状態変数のそれぞれの値が変化する場合の前記評価関数の値の複数の第1変化量を表す複数の第1局所場と、前記複数の状態変数のそれぞれが、制約条件を表す複数の制約項のそれぞれに与える影響の強さを示す複数の第1係数と、前記複数の第1係数のそれぞれと前記複数の状態変数のそれぞれとの積の総和と前記制約条件に関する第2係数との和で表される複数の第2局所場と、を記憶する記憶部から、前記複数の第1係数のうち、前記複数の状態変数の何れかである第1状態変数に関する第1係数を読み出し、
前記第1係数に基づいて前記第1状態変数の値が変化する場合の前記複数の第2局所場の更新値を計算し、
前記更新値と、前記複数の第1局所場のうち前記第1状態変数に関する第1局所場に基づいて、前記第1状態変数の値が変化する場合の、前記評価関数と前記複数の制約項の全体の大きさとの和の第2変化量を計算し、
前記第2変化量と所定値との比較結果に基づいて、前記第1状態変数の値の変化を許容するか否かを判定する、
処理をコンピュータに実行させるプログラム。 - 複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せの探索を実行するコンピュータが、
前記複数の状態変数のそれぞれの値が変化する場合の前記評価関数の値の複数の第1変化量を表す複数の第1局所場と、前記複数の状態変数のそれぞれが、制約条件を表す複数の制約項のそれぞれに与える影響の強さを示す複数の第1係数と、前記複数の第1係数のそれぞれと前記複数の状態変数のそれぞれとの積の総和と前記制約条件に関する第2係数との和で表される複数の第2局所場と、を記憶する記憶部から、前記複数の第1係数のうち、前記複数の状態変数の何れかである第1状態変数に関する第1係数を読み出し、
前記第1係数に基づいて前記第1状態変数の値が変化する場合の前記複数の第2局所場の更新値を計算し、
前記更新値と、前記複数の第1局所場のうち前記第1状態変数に関する第1局所場に基づいて、前記第1状態変数の値が変化する場合の、前記評価関数と前記複数の制約項の全体の大きさとの和の第2変化量を計算し、
前記第2変化量と所定値との比較結果に基づいて、前記第1状態変数の値の変化を許容するか否かを判定する、
データ処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021101298A JP2023000462A (ja) | 2021-06-18 | 2021-06-18 | データ処理装置、プログラム及びデータ処理方法 |
US17/679,154 US20220405048A1 (en) | 2021-06-18 | 2022-02-24 | Data processing apparatus, computer-readable recording medium storing program, and method of processing data |
EP22159139.9A EP4105843A1 (en) | 2021-06-18 | 2022-02-28 | Data processing apparatus, computer-readable recording medium storing program, and method of procesing data |
CN202210253085.9A CN115495695A (zh) | 2021-06-18 | 2022-03-15 | 数据处理设备、计算机可读记录介质和处理数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021101298A JP2023000462A (ja) | 2021-06-18 | 2021-06-18 | データ処理装置、プログラム及びデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023000462A true JP2023000462A (ja) | 2023-01-04 |
Family
ID=80595097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021101298A Pending JP2023000462A (ja) | 2021-06-18 | 2021-06-18 | データ処理装置、プログラム及びデータ処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220405048A1 (ja) |
EP (1) | EP4105843A1 (ja) |
JP (1) | JP2023000462A (ja) |
CN (1) | CN115495695A (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6935356B2 (ja) | 2018-03-30 | 2021-09-15 | 株式会社日立製作所 | 半導体装置、情報処理システム、および情報処理方法 |
WO2020196866A1 (ja) * | 2019-03-28 | 2020-10-01 | 株式会社 東芝 | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム |
JP7323777B2 (ja) | 2019-06-18 | 2023-08-09 | 富士通株式会社 | 最適化装置および最適化方法 |
-
2021
- 2021-06-18 JP JP2021101298A patent/JP2023000462A/ja active Pending
-
2022
- 2022-02-24 US US17/679,154 patent/US20220405048A1/en active Pending
- 2022-02-28 EP EP22159139.9A patent/EP4105843A1/en active Pending
- 2022-03-15 CN CN202210253085.9A patent/CN115495695A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115495695A (zh) | 2022-12-20 |
US20220405048A1 (en) | 2022-12-22 |
EP4105843A1 (en) | 2022-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11475099B2 (en) | Optimization apparatus and method for controlling thereof | |
US11182157B2 (en) | Information processing device, arithmetic device, and information processing method | |
JP7007585B2 (ja) | 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム | |
JP7417074B2 (ja) | 最適化装置、最適化方法及び最適化装置の制御プログラム | |
JP7219402B2 (ja) | 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム | |
JP7479251B2 (ja) | 計算機システムおよび情報処理方法 | |
JP2023000462A (ja) | データ処理装置、プログラム及びデータ処理方法 | |
Tong et al. | Data-driven synchronization-avoiding algorithms in the explicit distributed structural analysis of soft tissue | |
EP4258171A1 (en) | Data processing apparatus, program, and data processing method | |
JP2023061477A (ja) | プログラム、データ処理方法及びデータ処理装置 | |
JP2023001644A (ja) | データ処理装置、プログラム及びデータ処理方法 | |
JP2023024085A (ja) | プログラム、データ処理方法及びデータ処理装置 | |
US20230315943A1 (en) | Data processing apparatus, storage medium, and data processing method | |
EP4068167A1 (en) | Optimization program, optimization method, and optimization apparatus | |
JP2022165250A (ja) | プログラム、データ処理方法及びデータ処理装置 | |
JP2023001055A (ja) | プログラム、データ処理装置及びデータ処理方法 | |
JP2022184426A (ja) | データ処理装置、データ処理方法及びプログラム | |
EP4105837A1 (en) | Computer program, data processing apparatus, and data processing method | |
US20240176847A1 (en) | Data processing device, storage medium, and data processing method | |
JP2022161128A (ja) | プログラム、データ処理方法及びデータ処理装置 | |
WO2023021613A1 (ja) | 量子回路設計装置、量子回路設計プログラムおよび量子回路設計方法 | |
JP2023028347A (ja) | プログラム、データ処理方法及びデータ処理装置 | |
JP2024049202A (ja) | データ処理装置、プログラム及びデータ処理方法 | |
CN113283609A (zh) | 信息处理方法、信息处理设备和信息处理程序 | |
JP2021193488A (ja) | 時系列解析プログラム、時系列解析方法及び情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240307 |