JP2023149726A - データ処理装置、プログラム及びデータ処理方法 - Google Patents

データ処理装置、プログラム及びデータ処理方法 Download PDF

Info

Publication number
JP2023149726A
JP2023149726A JP2022058462A JP2022058462A JP2023149726A JP 2023149726 A JP2023149726 A JP 2023149726A JP 2022058462 A JP2022058462 A JP 2022058462A JP 2022058462 A JP2022058462 A JP 2022058462A JP 2023149726 A JP2023149726 A JP 2023149726A
Authority
JP
Japan
Prior art keywords
value
variable
variables
auxiliary
state
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
Application number
JP2022058462A
Other languages
English (en)
Inventor
芳 印
Kaoru In
泰孝 田村
Yasutaka Tamura
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022058462A priority Critical patent/JP2023149726A/ja
Priority to EP22216933.6A priority patent/EP4254271A1/en
Priority to US18/149,687 priority patent/US20230315943A1/en
Priority to CN202310044393.5A priority patent/CN116894488A/zh
Publication of JP2023149726A publication Critical patent/JP2023149726A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】制約条件をもつ離散最適化問題に対する計算時間のオーバーヘッドを削減する。【解決手段】複数の制約条件のそれぞれの違反の有無を表す複数の補助変数を用い、処理部12は、複数の状態変数のうち第1状態変数の値の変化を許容すると判定した場合、記憶部11に記憶されている、第1状態変数と複数の補助変数のそれぞれとの間の第2重み値に基づいて複数の補助変数のそれぞれの値が変化する場合の総エネルギーの変化量に比例する値である第2局所場を更新し、第2局所場に基づいて、複数の補助変数のうち第1補助変数の値の変化を許容するか否かを判定し、第1補助変数の値の変化を許容すると判定した場合、第1補助変数の値を更新し、第1補助変数に関する第2重み値に基づいて複数の状態変数のそれぞれの値が変化する場合の総エネルギーの変化量を表す第1局所場を更新する。【選択図】図1

Description

本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある。
イジング装置は、離散最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換する。そして、イジング装置は、疑似焼き鈍し法やレプリカ交換法(パラレルテンパリング法などとも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値(エネルギーに相当する)が極小になるイジングモデルの状態を探索する。評価関数の極小値のうちの最小値になる状態が最適解となる。なお、イジング装置は、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。イジングモデルの状態は、複数の状態変数の値の組合せにより表現できる。各状態変数の値として、0または1を用いることができる。
イジング型の評価関数は、たとえば、以下の式(1)のような2次形式の関数で定義される。
Figure 2023149726000002
右辺の1項目は、イジングモデルのN個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xは、識別番号がiの状態変数、xは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。bは、識別番号=iについてのバイアス係数を示している。
また、xの値の変化に伴うエネルギーの変化量(ΔE)は、以下の式(2)で表される。
Figure 2023149726000003
式(2)において、xが1から0に変化するとき、Δxは-1となり、状態変数xが0から1に変化するとき、Δxは1となる。なお、hは局所場と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEとなる。このため、hはエネルギーの変化量を表す変数、またはエネルギーの変化量を決める変数ということもできる。
そして、たとえば、exp(-βΔE)(βは温度を表すパラメータの逆数)と表せる受け入れ確率でxの値を更新することで状態遷移を発生させ、局所場も更新する、という処理が繰り返される。
ところで、離散最適化問題には、解が満たすべき制約条件をもつものがある(たとえば、特許文献1、2参照)。たとえば、離散最適化問題の1つであるナップザック問題では、ナップザックに詰め込める荷物の総容量は、ナップザックの容量以下であるという制約条件をもつ。このような制約条件は、不等式制約と呼ばれ、制約条件の違反の有無に応じた値をもつ制約項により表せる。制約条件として、不等式制約の他にも、等式制約や絶対値制約などがある。
制約項を含む総エネルギー(H(x))は、以下の式(3)により表すことができる。
Figure 2023149726000004
式(3)において、右辺の1項目と2項目の和が、式(1)のE(x)に相当するエネルギーを表し、右辺の3項目が制約項の全体の大きさ(エネルギー)を表す。また、Dは状態変数の識別番号の集合、kは制約項の識別番号、Aは制約項の識別番号の集合を表す。また、λは識別番号がkの制約項についての所定の正の係数である。
制約条件が不等式制約である場合、式(3)のg(h)は、以下の式(4)で表すことができる。
Figure 2023149726000005
式(4)において、max[0,h]は、0とhのうち大きい値を出力する関数である。また、Rは、識別番号がkの制約項の消費量(リソース量とも呼ばれる)、Uはリソース量の上限を表す。Wkiは、識別番号がkの不等式制約におけるxの重みを示す係数(重み値)である。
式(3)において、xの値の変化に伴うエネルギーの変化量(ΔH)は、以下の式(5)で表される。
Figure 2023149726000006
制約条件が不等式制約である場合、xの値の変化に伴うエネルギーの変化量(ΔH)は、式(5)の代わりに、以下の式(6)で表すことができる。
Figure 2023149726000007
式(6)において、aijは、識別番号がiの不等式制約におけるxの重みを示す係数であり、上記Wkiに相当する。Cuiは、識別番号がiの不等式制約における上限値であり、上記Uに相当する。Mは、制約項の数を表す。
の値の変化を受け入れる受け入れ確率は、A=min[1,exp(-βΔH)]と表せる。min[1,exp(-βΔH)]は、1とexp(-βΔH)のうち小さい値を出力する関数である。
式(3)は、式(1)のような2次形式の関数ではなく1次形式の不連続関数である。従来、不等式制約をイジング装置で扱えるようにするために、1次形式の不連続関数を2次形式に変換する技術が提案されている。しかし、2次形式に変換した不等式制約の制約項を用いて離散最適化問題を計算する場合、処理が煩雑になるなど、イジング装置で求解を行うことが難しい場合があった。
そこで、従来、上記のような不等式制約の制約項を1次形式のまま用いて、イジング装置で求解を行う技術が提案されている(たとえば、特許文献2参照)。
特開2020-201598号公報 特開2020-204928号公報
不等式制約の制約項を1次形式のまま用いて求解を行う従来の技術では、状態変数の値の変化に伴うΔHの計算を行う際に、各制約項に関する係数(上記の式(6)の例ではaij)を全て用いた計算が行われていた。
各制約項に関する係数は、1000個以上となる場合もある。従来の技術では、ΔHを計算する際に、全係数をメモリから読み出して加算処理を行うため、計算時間のオーバーヘッドが大きくなってしまう場合がある。
1つの側面では、本発明は、制約条件をもつ離散最適化問題に対する計算時間のオーバーヘッドを削減可能なデータ処理装置、プログラム及びデータ処理方法を提供することを目的とする。
1つの実施態様では、複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せを探索するデータ処理装置において、複数の制約条件のそれぞれの違反の有無に応じた値をもつ複数の制約項の値と、前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の状態変数のそれぞれの間の第1重み値と、前記複数の状態変数の何れかと前記複数の補助変数のそれぞれとの間の第2重み値と、前記複数の状態変数のそれぞれの値が変化する場合の前記総エネルギーの変化量を表す第1局所場と、前記複数の補助変数のそれぞれの値が変化する場合の前記総エネルギーの変化量に比例する値である第2局所場と、を記憶する記憶部と、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合、前記第1状態変数の値を更新し、前記第1状態変数に関する前記第1重み値に基づいて前記第1局所場を更新し、前記第1状態変数に関する前記第2重み値に基づいて前記第2局所場を更新する処理と、を含む第1処理と、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを前記第2局所場に基づいて判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合、前記第1補助変数の値を更新し、前記第1補助変数に関する前記第2重み値に基づいて前記第1局所場を更新する処理と、を含む第2処理を行う処理部と、を有するデータ処理装置が提供される。
また、1つの実施態様では、プログラムが提供される。
また、1つの実施態様では、データ処理方法が提供される。
1つの側面では、本発明は、制約条件をもつ離散最適化問題に対する計算時間のオーバーヘッドを削減できる。
第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。 状態変数と補助変数との間の相互作用の例を示す図である。 誤差の補正例を示す図である。 比較例のデータ処理装置を示す図である。 第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。 データ処理装置の機能例を示すブロック図である。 局所場の更新処理の例を示す図である。 データ処理方法の1つ目の例の流れを示すフローチャートである。 データ処理方法の2つ目の例の流れを示すフローチャートである。 データ処理装置の他の例を示す図である。 4値の補助変数を用いた例を示す図である。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
第1の実施の形態のデータ処理装置10は、記憶部11、処理部12を有する。
記憶部11は、たとえば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置である。記憶部11は、レジスタなどの電子回路を含んでいてもよい。
記憶部11は、H(x)、複数(以下N個)の状態変数(x)の値、複数(以下M個)の補助変数(x)の値、N個のxのそれぞれの間の第1重み値(前述のWij)、N個のxの何れかとM個のxのそれぞれとの間の第2重み値(Wki)を記憶する。
iは、N個のxの何れかを表す識別番号であり、kは、M個のxの何れか、またはM個の制約項(またはM個の制約条件)の何れかを表す識別番号である。
M個のxは、M個の制約条件のそれぞれの違反の有無を表す。以下の説明では、xは、識別番号=kの制約条件を違反している場合に1、制約条件を充足している場合に0の値をもつとして説明するが、これに限定されるわけではない。xとして-1または+1の値をもつスピン変数を用いることもできる。また、補助変数は、制約条件違反の場合に、0以外の複数の値をもつものであってもよい(図11参照)。
さらに、記憶部11は、N個のxのそれぞれの値が変化する場合のH(x)の変化量を表す第1局所場(h)と、M個のxのそれぞれの値が変化する場合のH(x)の変化量に比例する値である第2局所場(h)を記憶する。なお、状態変数は、決定変数と呼ぶこともできる。
M個の不等式制約に対応したM個の制約項の全体のエネルギーP(x)は、以下の式(7)で表すことができる。
Figure 2023149726000008
λは、識別番号=kの制約項に関する比例係数であり、制約項の重みを表す。λは制約項ごとに異なる値であってもよい。Uは不等式制約においてリソース量(R(x))が満たすべき上限を表す。R(x)は、以下の式(8)で表すことができる。
Figure 2023149726000009
式(3)、式(4)により表されるH(x)は、補助変数(x)を用いることで、以下の式(9)で表すことができる。
Figure 2023149726000010
は、M個の不等式制約の数に対応してM個用いられる。以下の例では、xは、次の式(10)で表されるものとする。
Figure 2023149726000011
図1には、状態変数(決定変数)と補助変数とのそれぞれをニューロンとみなした場合の、ニューラルネットワークの例が示されている。ニューラルネットワークは、状態変数によるボルツマンマシンのニューラルネットワークに、制約条件違反を検出する補助変数によるニューロンが追加された構成となっている。
図1の例では、補助変数xを表すニューロンが、状態変数x,x,xを表すニューロンと接続されている。すなわち、xとx,x,xのそれぞれとの間の第2重み値が0以外の値をもつ。補助変数xを表すニューロンは、状態変数x,xなどを表すニューロンと接続されている。各不等式制約に対して、全ての状態変数が影響を与えているわけではないことが多いため、第2重み値は、各不等式制約に対して影響を与える状態変数について記憶されていればよい。
図2は、状態変数と補助変数との間の相互作用の例を示す図である。
N個の状態変数の間では相互作用の強さは、N×N個のWijで表せる。たとえば、xとxの間の相互作用の強さはW1i、xとxの間の相互作用の強さはWiN、xとxの間の相互作用の強さはW1Nである。一方、状態変数と補助変数の間の相互作用では、状態変数の値の変化が補助変数に与える影響と、補助変数の変化が状態変数に与える影響とで異なる。たとえば、図2のように、状態変数のxの値の変化が補助変数xに与える影響は、重み値Wkiで表せ、補助変数のxの値の変化が状態変数xに与える影響は、-λkiと表せる。
図1に示した記憶部11に記憶されるN個の第1局所場(h)は、以下の式(11)で表すことができる。
Figure 2023149726000012
記憶部11に記憶されるM個の第2局所場(h)は、以下の式(12)で表すことができる。
Figure 2023149726000013
記憶部11は、さらにバイアス係数(b)、比例係数(λ)、上限(U)を記憶してもよい。また、記憶部11は、処理部12が後述のデータ処理方法を実行する際の計算条件など各種のデータを記憶してもよい。また、処理部12が、ソフトウェアにより後述のデータ処理方法の一部またはすべての処理を実行する場合には、記憶部11には、その処理を実行するためのプログラムが記憶される。
図1の処理部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による処理の一例の流れが示されている。
なお、ここではH(x)、h、h、xとして、x~xの初期値に基づいた値が、記憶部11に記憶されているものとする。
ステップS1~S5が状態変数に関する処理であり、ステップS6~S10が補助変数に関する処理である。
処理部12は、N個の状態変数から、値を変化させる候補(以下フリップ候補という)の状態変数を選択する(ステップS1)。処理部12は、たとえば、ランダムにまたは所定の順序で、フリップ候補の状態変数を選択する。
そして、処理部12は、選択された状態変数の値が変化する場合のΔHを計算する(ステップS2)。たとえば、xが選択された場合、ΔHは、式(11)に示したhに基づいて、ΔH=-hΔxという式により計算できる。
次に、処理部12は、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否か(フリップ可か否か)の判定を行う(ステップS3)。以下、この判定処理を、フリップ判定処理という。
所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。たとえば、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例であるlog(rand)×Tを、所定値として用いることができる。この場合、処理部12は、-ΔH≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容する(フリップ可)と判定する。
処理部12は、フリップ可と判定した場合、h、h、H(x)、x(フリップ可と判定された状態変数)の更新を行う(ステップS4)。なお、処理部12は、フリップ可と判定しない場合、h、h、H(x)、xの更新を行わない。
処理部12は、元のH(x)にΔHを加算することでH(x)の更新を行う。また、処理部12は、たとえば、xをフリップ可と判定した場合、N個の状態変数のそれぞれについての元のhに、Δh=WijΔxを加えることで、hの更新を行う。さらに、処理部12は、xをフリップ可と判定した場合、M個の状態変数のそれぞれについての元のhに、Δh=WkjΔxを加えることで、hの更新を行う。xの値を変更した場合に、識別番号=kの制約条件の違反が生じる場合、この更新によってhは正の値になり、後述のステップS8の処理により、xの0から1への変化が許容される。
その後、処理部12は、以上のような処理がA回行われたか否かを判定する(ステップS5)。Aは1以上の整数である。処理部12は、以上のような処理が、A回行われていないと判定した場合、ステップS1からの処理を繰り返す。
処理部12は、以上のような処理が、A回行われたと判定した場合、M個の補助変数から、フリップ候補の補助変数を選択する(ステップS6)。処理部12は、たとえば、ランダムにまたは所定の順序で、フリップ候補の補助変数を選択する。
そして、処理部12は、選択された補助変数の値が変化する場合のΔHを計算する(ステップS7)。たとえば、xが選択された場合、ΔHは、式(12)に示したhを用いて、ΔH=+λΔxという式により計算できる。
次に、処理部12は、ΔHと所定値との比較結果に基づいて、フリップ候補の補助変数の値の変化を許容するか否か(フリップ可か否か)の判定(フリップ判定処理)を行う(ステップS8)。
所定値は、ステップS3の処理で用いた値と同じであってもよいし、固定値(たとえば、0)であってもよい。所定値として、log(rand)×Tを用いた場合、処理部12は、ΔH>log(rand)×Tの場合、フリップ候補の補助変数をフリップ可と判定する。ステップS4の処理による状態変数の値の変化により、制約違反が生じている場合、式(12)のhは正の値となり、xの0から1への変化の場合の変化量Δx=1であるため、ΔHは正の値である。また、log(rand)×Tは負の値である。このため、ΔH>log(rand)×Tという判定式を用いることで、xの0から1への変化が許容される。
処理部12は、フリップ候補のxをフリップ可と判定した場合、h、H(x)、x(フリップ可と判定された補助変数)の更新を行う(ステップS9)。なお、処理部12は、フリップ可と判定しない場合、h、H(x)、xの更新を行わない。
処理部12は、元のH(x)にΔHを加算することでH(x)の更新を行う。また、処理部12は、たとえば、xがフリップ可と判定された場合、N個の状態変数のそれぞれについての元のhに、Δh=-λkiΔxを加えることで、hの更新を行う。
その後、処理部12は、以上のような処理が、B回行われたか否かを判定する(ステップS10)。Bは1以上の整数である。処理部12は、以上のような処理が、B回行われていないと判定した場合、ステップS6からの処理を繰り返す。
処理部12は、以上のような処理が、B回行われたと判定した場合、再びステップS1からの処理を繰り返す。
上記のステップS2の処理では、補助変数の値を変えずにΔHを計算するため、補助変数の値の変化の有無によって誤差が生じる場合があるが、ステップS7の処理によって得られるΔH=+λΔxにより、その誤差を補正できる。
図3は、誤差の補正例を示す図である。縦軸は、識別番号がkの制約項の大きさを表し、横軸は前述の式(8)で表されるR(x)(リソース量)を表す。
(x)がUを超えるまで不等式制約が満たされるため、制約項の大きさも0である。一方、R(x)がUを超えると、λmax[0,R(x)-U]という式にしたがって、制約項は増加する。ただ、上記のようにステップS2の処理では、補助変数の値を変えずにΔHを計算するため、その時点では、ΔHに誤差が生じる場合がある。
たとえば、図3のA点では、R(x)がUを超えている(制約条件違反が生じている)にもかかわらず、x=0であることから制約項の大きさは0であり、λΔxの誤差が生じている。そこで、処理部12は、xの値の変化(0から1への変化)を許容し、ステップS7の処理により得られるΔH=+λΔxを用いて、制約項を適切な大きさ(B点の大きさ)に補正する。
また、たとえば、図3のC点では、R(x)がU以下である(制約条件違反が解消されている)にもかかわらず、x=1であることから制約項の大きさは0ではなく、λΔxの誤差が生じている。そこで、処理部12は、xの値の変化(1から0への変化)を許容し、ステップS7の処理により得られるΔH=+λΔxを用いて、制約項を適切な大きさ(D点の大きさ)に補正する。
なお、図1に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
また、上記の説明では、N個の状態変数のうちフリップ候補の状態変数を1つずつ選択して、ステップS2~S3の処理が行われる例を示したが、複数(たとえばN個全て)の状態変数について並列にステップS2~S3の処理が行われるようにしてもよい。その場合、処理部12は、値の変更が許容された状態変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる状態変数を選択する。
同様に、上記の説明では、M個の状態変数のうちフリップ候補の補助変数を1つずつ選択して、ステップS7~S8の処理が行われる例を示したが、複数(たとえばM個全て)の状態変数について並列にステップS7~S8の処理が行われるようにしてもよい。その場合、処理部12は、値の変更が許容された補助変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる補助変数を選択する。
処理部12は、疑似焼き鈍し法を行う場合、たとえば、状態変数についてのフリップ判定処理が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、処理部12は、フリップ判定処理が所定の回数繰り返された場合に得られた状態を、離散最適化問題の計算結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、これまでの最小エネルギーとなった場合の総エネルギーと状態とを記憶部11に保持させておいてもよい。その場合、処理部12は、フリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーに対応する状態を、計算結果として出力してもよい。
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なるTの値が設定された複数のレプリカのそれぞれにおいて、上記のステップS1~S10の処理を繰り返す。そして、処理部12は、フリップ判定処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、隣り合うTの値をもつレプリカを2つ選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差やTの値の差に基づいた所定の交換確率で、各状態変数の値及び各補助変数の値を交換する。なお、2つのレプリカの間で、各状態変数の値及び各補助変数の値の代わりにTの値が交換されてもよい。または、処理部12は、これまでの最小エネルギーとなった場合の総エネルギーと状態とを保持する。そして、処理部12は、各レプリカにおいて上記のフリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を、計算結果として出力する。
レプリカ交換法を用いることで、状態がほとんど変化しない低温側(Tの値が小さい側レプリカ)でも状態が変化するようになり良い解を短時間で発見できる可能性が高くなる。
以上のようなデータ処理装置10及びデータ処理方法によれば、ある制約条件の違反の有無を表す補助変数(x)の値の変更が許容された場合に、N個のWkiに基づいて、hが更新される。これにより、M個全ての制約項に関するWkiを読み出さなくてもよくなり、加算処理(元のhにΔh=-λkiΔxを加える処理)が行われる回数が抑制され、更新処理にかかる計算時間のオーバーヘッドを削減できる。
図4は、比較例のデータ処理装置を示す図である。
比較例のデータ処理装置20は、従来のように、状態変数の値の変化に伴うΔHの計算を行う際に、各制約項に関する係数(前述の式(5)の例ではWkj、式(6)の例ではaij)を全て用いた計算を行う。
比較例のデータ処理装置20は、状態保持部21、ΔE計算部22、ΔP加算部23、遷移可否判定部24、選択部25、更新部26、ΔP計算部27を有する。
状態保持部21は、状態x(x~x)を保持するとともに、xを出力する。また、状態保持部21は、Δxを出力する。
ΔE計算部22は、x~xのそれぞれが変化する場合の、ΔE(式(5)の右辺の1項目)を計算する。
ΔP加算部23は、ΔEにΔP(式(5)の右辺の2項目)を加算する。これにより、式(5)のΔHが計算される。
遷移可否判定部24は、ΔHと前述の所定値との比較結果に基づいて、x~xのそれぞれについて、フリップ判定処理を行う。
選択部25は、フリップ可と判定された状態変数が複数ある場合に、何れか1つの状態変数を選択する。
更新部26は、フリップ可と判定された状態変数の識別番号を状態保持部21に送り、その状態変数の値を変更させる。また、更新部26は、hの更新や、Hの更新を行う。
ΔP計算部27は、x~xのそれぞれが変化する場合のΔPを計算する。ΔPの計算は、たとえば、以下のように行われる。
ΔP計算部27は、hを計算する(ステップS20)。図4の例では、hは、式(4)においてiの代わりにjを用いて計算される。
次に、ΔP計算部27は、k=1、P=0とし(ステップS21)、式(5)の右辺の2項目に基づいて、P+λ(g(h+WkjΔx)-g(h))を計算した結果を、新たにPとする(ステップS22)。
そして、ΔP計算部27は、k=Mであるか否かを判定する(ステップS23)。ΔP計算部27は、k=Mではないと判定した場合、kをk+1とし(ステップS24)、ステップS22からの処理を繰り返す。
ΔP計算部27は、k=Mであると判定した場合、PをΔPとして出力する。
上記のような処理では、x~xのそれぞれについて、ΔPを計算するために、ステップS22の処理がM回繰り返される。つまり、M回のWkjの読み出しと加算処理が行われる。このため、N個のΔPの計算に、N×Mに比例する時間がかかり、計算時間のオーバーヘッドが大きい。また、読み出しのためのデータ転送量が大きい。1つのΔPの計算にあたって、M個のWkjがシリアルに読み出されるためである。
これに対して、第1の実施の形態のデータ処理装置10では、M個の補助変数のうち、値の変化が許容された補助変数について、Δh=-λkiΔxによりhを更新するため、N個のWkiを1回読み出せばよい。これにより、計算時間のオーバーヘッドを削減できるともに、Wkiの読み出しのためのデータ転送量も小さくすることができる。
(第2の実施の形態)
図5は、第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
データ処理装置30は、たとえば、コンピュータであり、CPU31、RAM32、HDD33、GPU34、入力インタフェース35、媒体リーダ36及び通信インタフェース37を有する。上記ユニットは、バスに接続されている。
CPU31は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU31は、HDD33に記憶されたプログラムやデータの少なくとも一部をRAM32にロードし、プログラムを実行する。なお、CPU31は複数のプロセッサコアを備えてもよく、データ処理装置30は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM32は、CPU31が実行するプログラムやCPU31が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置30は、RAM32以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD33は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、離散最適化問題の解を探索する処理をデータ処理装置30に実行させるプログラムが含まれる。なお、データ処理装置30は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
GPU34は、CPU31からの命令にしたがって、データ処理装置30に接続されたディスプレイ34aに画像を出力する。ディスプレイ34aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力インタフェース35は、データ処理装置30に接続された入力デバイス35aから入力信号を取得し、CPU31に出力する。入力デバイス35aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置30に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ36は、記録媒体36aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体36aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ36は、たとえば、記録媒体36aから読み取ったプログラムやデータを、RAM32やHDD33などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU31によって実行される。なお、記録媒体36aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体36aやHDD33を、コンピュータ読み取り可能な記録媒体ということがある。
通信インタフェース37は、ネットワーク37aに接続され、ネットワーク37aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース37は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
次に、データ処理装置30の機能及び処理手順を説明する。
図6は、データ処理装置の機能例を示すブロック図である。
データ処理装置30は、入力部41、制御部42、探索部43、出力部44を有する。
入力部41、制御部42、探索部43、出力部44は、たとえば、CPU31が実行するプログラムモジュールや、CPU31内の記憶領域(レジスタやキャッシュメモリ)を用いて実装できる。なお、探索部43は、さらに、RAM32またはHDD33に確保した記憶領域を用いて実装されるようにしてもよい。
入力部41は、たとえば、N個の状態変数の初期値、M個の補助変数の初期値、問題情報、計算条件の入力を受け付ける。問題情報は、たとえば、式(1)のWijやbのほか、式(9)のWki、U、λを含む。計算条件は、たとえば、レプリカ交換法を実行する場合のレプリカ数、レプリカ交換周期、各レプリカに設定する温度パラメータの値、疑似焼き鈍し法を行う場合の温度パラメータ変更スケジュール、計算の終了条件などを含む。
これらの情報は、ユーザによる入力デバイス35aの操作により入力されてもよいし、記録媒体36aまたはネットワーク37aを介して入力されてもよい。
制御部42は、データ処理装置30の各部を制御して、後述の処理を実行させる。
探索部43は、制御部42の制御のもと、フリップ判定処理や、更新処理を繰り返すことで、評価関数の値(エネルギー)が極小になる状態を探索する。
出力部44は、探索部43による探索結果(計算結果)を出力する。
出力部44は、たとえば、計算結果を、ディスプレイ34aに出力して表示させてもよいし、ネットワーク37aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
探索部43は、変数設定部43a、状態変数保持部43b、補助変数保持部43c、重み値保持部43d、h計算部43e、h計算部43f、ΔH計算部43g,43h、遷移可否判定部43i,43j、選択部43k、更新部43lを有する。
変数設定部43aには、たとえば、フリップ候補の状態変数を選択する順序、フリップ候補の補助変数を選択する順序、状態変数のフリップ判定処理と、補助変数のフリップ判定処理の処理回数(後述の図8のA回とB回に相当する)が設定される。
状態変数保持部43bは、N個の状態変数(x)を保持する。また、状態変数保持部43bは、フリップ候補のxの変化量(Δx)を出力する。
補助変数保持部43cは、M個の補助変数を保持する。
重み値保持部43dは、N個の状態変数の間の重み値(Wij)と、N個の状態変数のそれぞれと、M個の補助変数の間の重み値(Wki)を保持する。WijはN行N列の行列で表すことができ、Wkiは、M行N列の行列で表すことができる。
なお、N個の状態変数のうちM個の補助変数の何れにも影響を与えない状態変数と、M個の補助変数の間の重み値は、保持しなくてよい。以下、N個の状態変数のうち、このような状態変数の割合をスパース率ηという。
計算部43eは、N個のhを保持するとともに、状態変数や補助変数の値の変化に応じてhを更新する。
計算部43fは、M個のhを保持するとともに、状態変数の値の変化に応じてhを更新する。
ΔH計算部43gは、フリップ候補のxについてのhに基づいて、ΔH=-hΔxを計算する。
ΔH計算部43hは、フリップ候補のxについてのhに基づいて、ΔH=+λΔxを計算する。
遷移可否判定部43iは、ΔH計算部43gが出力するΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否かのフリップ判定処理を行う。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。遷移可否判定部43iは、たとえば、-ΔH≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容すると判定する。
遷移可否判定部43jは、ΔH計算部43hが出力するΔHと、所定値との比較結果に基づいて、フリップ候補の補助変数の値の変化を許容するか否かのフリップ判定処理を行う。所定値は、遷移可否判定部43iが用いる値と同じであってもよいし、固定値(たとえば、0)であってもよい。遷移可否判定部43jは、たとえば、ΔH>log(rand)×Tの場合、フリップ候補の補助変数の値の変化を許容すると判定する。
選択部43kは、状態変数についてのフリップ判定処理を行う場合には、遷移可否判定部43iの判定結果を選択し、補助変数についてのフリップ判定処理を行う場合には、遷移可否判定部43jの判定結果を選択して出力する。
更新部43lは、フリップ可と判定された状態変数の識別番号を状態変数保持部43bに送り、その状態変数の値を変更させる。また、更新部43lは、フリップ可と判定された補助変数の識別番号を補助変数保持部43cに送り、その補助変数の値を変更させる。
さらに、更新部43lは、フリップ候補の状態変数がフリップ可と判定された場合、h計算部43eとh計算部43fにN個のhとM個のhを更新させる。更新部43lは、フリップ候補の補助変数がフリップ可と判定された場合、h計算部43eにN個のhを更新させる。また、更新部43lは、Hを保持し、フリップ可とされた状態変数または補助変数の値の変化によって生じるΔHに基づいて、Hを更新してもよい。
図7は、局所場の更新処理の例を示す図である。
なお、図7の例では、フリップ候補の状態変数がxであり、フリップ候補の補助変数がxであるものとして説明する。この場合、制御部42から供給されるクロック信号clkに同期して状態変数保持部43bからΔxが出力され、制御部42から供給されるクロック信号clkに同期して補助変数保持部43cからΔxが出力される。
また、xがフリップ可と判定された場合、重み値保持部43dから、xとN個の状態変数のそれぞれとの間の重み値であるN個のWijと、xとM個の補助変数のそれぞれとの間の重み値であるM個のWkjが読み出される。また、xがフリップ可と判定された場合、重み値保持部43dから、xとN個の状態変数のそれぞれとの間の重み値であるN個のWkiが読み出される。
計算部43eは、乗算器43e1,43e2、h更新保持部43e3を有する。
計算部43fは、乗算器43f1、h更新保持部43f2を有する。
乗算器43e1は、ΔxとN個のWijとの積を出力する。
乗算器43e2は、ΔxとN個のWkiとの積を出力する。
乗算器43f1は、ΔxとM個のWkjとの積を出力する。
更新保持部43e3は、N個のhを保持している。そして、h更新保持部43e3は、xがフリップ可と判定された場合、N個のhのそれぞれに、Δh=WijΔxを加えることで、hを更新する。また、h更新保持部43e3は、xがフリップ可と判定された場合、N個のhのそれぞれに、Δh=-λkiΔxを加えることで、hを更新する。
更新保持部43f2は、M個のhを保持している。そして、h更新保持部43f2は、xがフリップ可と判定された場合、M個のhのそれぞれに、Δh=WkjΔxを加えることで、hを更新する。
以下、データ処理装置30の処理手順(データ処理方法)を2例、説明する。
図8は、データ処理方法の1つ目の例の流れを示すフローチャートである。
ステップS30:入力部41は、N個の状態変数の初期値、M個の補助変数の初期値、問題情報、計算条件の入力を受け付ける。N個の状態変数の初期値は、状態変数保持部43bに保持され、M個の補助変数の初期値は、補助変数保持部43cに保持される。また、問題情報に含まれる重み値は、重み値保持部43dに保持される。計算条件は制御部42に供給される。
ステップS31:制御部42は、初期化処理を行う。初期化処理では、たとえば、以下の処理が行われる。
制御部42は、N個の状態変数の初期値、M個の補助変数の初期値、問題情報に基づいて、式(11)に示したhの初期値、式(12)に示したhの初期値を計算する。計算されたN個の状態変数の初期値は、図7に示したh更新保持部43e3に保持され、計算されたM個の補助変数の初期値は、図7に示したh更新保持部43f2に保持される。
また、制御部42は、N個の状態変数の初期値、M個の補助変数の初期値、問題情報に基づいて、たとえば、式(3)に示したH(x)の初期値を計算する。計算されたH(x)の初期値は、たとえば、更新部43l内に保持される。
さらに、初期化処理では、変数設定部43aに、フリップ候補の状態変数を選択する順序、フリップ候補の補助変数を選択する順序、状態変数についてのフリップ判定処理の処理回数Aと、補助変数についてのフリップ判定処理の処理回数Bが設定される。
ステップS32:制御部42は、r1=0とする。
ステップS33:変数設定部43aに設定された処理順序(ランダムでもよい)により、フリップ候補の状態変数(x)が選択される。フリップ候補の状態変数が選択されると、状態変数保持部43bから、その状態変数の値を変化させたときの変化量(Δx)が出力される。
ステップS34:探索部43のΔH計算部43gは、ΔH=-hΔxという式によりΔHを計算する。
ステップS35:探索部43の遷移可否判定部43iは、ΔHと、前述の所定値との比較結果に基づいて、xについてフリップ判定を行う。xの変化を許容すると判定した場合(「フリップ可」の場合)、ステップS36の処理が行われ、xの変化を許容しないと判定した場合(「フリップ否」の場合)、ステップS37の処理が行われる。
ステップS36:探索部43は、前述の処理により、h、h、H(x)、xの更新を行う。
ステップS37:制御部42は、処理が所定の終了条件を満たすか否かを判定する。たとえば、制御部42は、探索部43がフリップ判定処理を行った回数が、最大フリップ判定回数に達した場合、または、H(x)が所定の大きさ以下になった場合、終了条件が満たされたと判定する。処理が所定の終了条件を満たすと判定された場合、ステップS48の処理が行われ、処理が所定の終了条件を満たさないと判定された場合、ステップS38の処理が行われる。
ステップS38:制御部42は、r1=Aであるか否かを判定する。r1=Aであると判定された場合、ステップS40の処理が行われ、r1=Aではないと判定された場合、ステップS39の処理が行われる。
ステップS39:制御部42は、r1=r1+1とする。その後、ステップS33からの処理が繰り返される。
ステップS40:制御部42は、r2=0とする。
ステップS41:変数設定部43aに設定された処理順序(ランダムでもよい)により、フリップ候補の補助変数(x)が選択される。フリップ候補の補助変数が選択されると、補助変数保持部43cから、その補助変数の値を変化させたときの変化量(Δx)が出力される。
ステップS42:探索部43のΔH計算部43hは、ΔH=+λΔxという式によりΔHを計算する。
ステップS43:探索部43の遷移可否判定部43jは、ΔHと、たとえば、前述の所定値との比較結果に基づいて、xについてフリップ判定を行う。xの変化を許容すると判定した場合(「フリップ可」の場合)、ステップS44の処理が行われ、xの変化を許容しないと判定した場合(「フリップ否」の場合)、ステップS45の処理が行われる。
ステップS44:探索部43は、前述の処理により、h、H(x)、xの更新を行う。
ステップS45:制御部42は、処理が前述の所定の終了条件を満たすか否かを判定する。処理が所定の終了条件を満たすと判定された場合、ステップS48の処理が行われ、処理が所定の終了条件を満たさないと判定された場合、ステップS46の処理が行われる。
ステップS46:制御部42は、r2=Bであるか否かを判定する。r2=Bであると判定された場合、ステップS32からの処理が繰り返され、r2=Bではないと判定された場合、ステップS47の処理が行われる。
ステップS47:制御部42は、r2=r2+1とする。その後、ステップS41からの処理が繰り返される。
ステップS48:出力部44は、計算結果を出力する。これにより、処理が終了する。出力部44は、たとえば、計算結果を、ディスプレイ34aに出力して表示させてもよいし、ネットワーク37aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
なお、疑似焼き鈍し法が行われる場合、たとえば、制御部42は、状態変数についてのフリップ判定処理が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、制御部42の制御のもと、出力部44は、フリップ判定処理が所定の回数繰り返された場合に得られた状態を、離散最適化問題の計算結果として出力する。なお、更新部43lは、これまでの最小エネルギーとなった場合の総エネルギーと状態とを保持してもよい。その場合、制御部42は、フリップ判定処理が所定の回数繰り返された後に保持されている最小エネルギーに対応する状態を、計算結果として出力部44に出力させてもよい。
レプリカ交換法が行われる場合、それぞれ異なるTの値が設定された複数のレプリカのそれぞれにおいて、上記のステップS32~S47の処理が繰り返される。そして、制御部42は、フリップ判定処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、制御部42は、隣り合うTの値をもつレプリカを2つ選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差やTの値の差に基づいた所定の交換確率で、Tの値または、各状態変数の値及び各補助変数の値を交換する。たとえば、更新部43lは、これまでの最小エネルギーとなった場合の総エネルギーと状態とを保持する。そして、制御部42は、各レプリカにおいて上記のフリップ判定処理が所定の回数繰り返された後に保持されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を、計算結果として出力部44に出力させる。
上記のようなデータ処理方法によれば、制約条件に影響を与える状態変数の数が比較的少ない場合には、処理回数Aを大きくし処理回数Bを小さくするなど、計算対象の離散最適化問題に応じて、効率よくH(x)を補正するための調整を行える。
図9は、データ処理方法の2つ目の例の流れを示すフローチャートである。
ステップS50,S51の処理は、図8に示したステップS30,S31の処理とほぼ同様であるが、ステップS51の初期化処理では、状態変数についてのフリップ判定処理の処理回数Aと、補助変数についてのフリップ判定処理の処理回数Bの設定は行われない。
ステップS52:制御部42は、i=1とする。iは状態変数の識別番号に相当する。
ステップS53:フリップ候補の状態変数(x)が選択される。フリップ候補の状態変数が選択されると、状態変数保持部43bから、その状態変数の値を変化させたときの変化量(Δx)が出力される。
ステップS54:探索部43のΔH計算部43gは、ΔH=-hΔxという式によりΔHを計算する。
ステップS55:探索部43の遷移可否判定部43iは、ΔHと、前述の所定値との比較結果に基づいて、xについてフリップ判定を行う。xの変化を許容すると判定した場合(「フリップ可」の場合)、ステップS56の処理が行われ、xの変化を許容しないと判定した場合(「フリップ否」の場合)、ステップS57の処理が行われる。
ステップS56:探索部43は、前述の処理により、h、h、H(x)、xの更新を行う。
ステップS57:制御部42は、i=Nであるか否かを判定する。i=Nであると判定された場合、ステップS52からの処理が繰り返され、i=Nではないと判定された場合、ステップS58の処理が行われる。
ステップS58:制御部42は、i=i+1とする。その後、ステップS53からの処理が繰り返される。
ステップS59:制御部42は、k=1とする。
ステップS60:フリップ候補の補助変数(x)が選択される。フリップ候補の補助変数が選択されると、補助変数保持部43cから、その補助変数の値を変化させたときの変化量(Δx)が出力される。
ステップS61:探索部43のΔH計算部43hは、ΔH=+λΔxという式によりΔHを計算する。
ステップS62:探索部43の遷移可否判定部43jは、ΔHと、たとえば、前述の所定値との比較結果に基づいて、xについてフリップ判定を行う。xの変化を許容すると判定した場合(「フリップ可」の場合)、ステップS63の処理が行われ、xの変化を許容しないと判定した場合(「フリップ否」の場合)、ステップS64の処理が行われる。
ステップS63:探索部43は、前述の処理により、h、H(x)、xの更新を行う。
ステップS64:制御部42は、k=Mであるか否かを判定する。k=Mであると判定された場合、ステップS66の処理が行われ、k=Mではないと判定された場合、ステップS65の処理が行われる。
ステップS65:制御部42は、k=k+1とする。その後、ステップS60からの処理が繰り返される。
ステップS66:制御部42は、処理が所定の終了条件を満たすか否かを判定する。たとえば、制御部42は、探索部43がフリップ判定処理を行った回数が、最大フリップ判定回数に達した場合、または、H(x)が所定の大きさ以下になった場合、終了条件が満たされたと判定する。処理が所定の終了条件を満たすと判定された場合、ステップS67の処理が行われ、処理が所定の終了条件を満たさないと判定された場合、ステップS57からの処理が繰り返される。
ステップS67:出力部44は、計算結果を出力する。これにより、処理が終了する。出力部44は、たとえば、計算結果を、ディスプレイ34aに出力して表示させてもよいし、ネットワーク37aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
上記のようなデータ処理方法によれば、状態変数の値の変化を許容すると判定されるたびに、M個の補助変数についてのフリップ判定が行われるため、制約条件に影響を与える状態変数の数が比較的多い場合は、効率よくH(x)の補正が行える。
なお、データ処理方法の1つ目の例と同様に、上記2つ目の例においても、疑似焼き鈍し法やレプリカ交換法を適用できる。
また、2つ目の例では、フリップ候補の状態変数と補助変数が識別番号順に選択されるものとしたが、ランダムに選択されるようにしてもよい。
なお、図8、図9に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
以上のような第2の実施の形態のデータ処理装置30及びデータ処理方法によれば、第1の実施の形態のデータ処理装置10及びデータ処理方法と同様の効果が得られる。すなわち、計算時間のオーバーヘッドを削減できる。また、データ転送量も小さくできる。
たとえば、前述の図4に示した比較例のデータ処理装置20では、x~xのそれぞれについて、ΔPを計算するために、図4に示したステップS22の処理がM回繰り返される。つまり、M回のWkjの読み出しと加算処理が行われる。このため、N個のΔPの計算に、N×Mに比例する時間がかかり、計算時間のオーバーヘッドが大きい。また、読み出しのためのデータ転送量が大きい。1つのΔPの計算にあたって、M個のWkjがシリアルに読み出されるためである。
これに対して、第2の実施の形態のデータ処理装置30は、M個の補助変数のうち、値の変化が許容された補助変数について、Δh=-λkiΔxによりhを更新するため、N個のWkiを1回読み出せばよい。これにより、計算時間のオーバーヘッドを削減できるともに、Wkiの読み出しのためのデータ転送量も小さくすることができる。
の更新は、xが変化した場合に、Δh=WijΔxを加える処理と、xが変化した場合に、Δh=-λkiΔxを加える処理によって行われる。たとえば、フリップ判定処理がN個の状態変数について1回行われる場合のhの更新に係るオーバーヘッドは、最大でもWijΔxをN回加える処理と、-λkiΔxをMp(pはxが変化する割合)回加える処理によるものとなる。この場合、オーバーヘッドは、N+Mpに比例するものとなり、オーバーヘッドがN×Mに比例する比較例のデータ処理装置20と比べて小さい。なお、前述のスパース率ηが1より小さい場合、オーバーヘッドは、N+ηMpに比例するものとなり、さらにオーバーヘッドを削減できる。
なお、前述のように、上記の処理内容は、データ処理装置30にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体36a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD33)にプログラムをコピーして実行してもよい。
図10は、データ処理装置の他の例を示す図である。図10において、図5に示した要素と同じ要素については同一符号が付されている。
データ処理装置50は、バスに接続されたアクセラレータカード51を有する。
アクセラレータカード51は、離散最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード51は、FPGA51a及びDRAM51bを有する。
データ処理装置50では、FPGA51aが、たとえば、図6に示した制御部42や探索部43の処理を行う。
また、DRAM51bは、たとえば、図6に示した重み値保持部43dとして機能する。
なお、アクセラレータカード51は、複数あってもよい。
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
上記では、制約条件として、主に不等式制約を用いた場合について説明したが、等式制約など他の制約条件を用いることもできる。
たとえば、等式制約が用いられる場合、総エネルギー(H(x))は、式(9)の代わりに、以下の式(13)が用いられる。
Figure 2023149726000014
ここで、補助変数(x)として、-1または1の値をもつスピン変数を用いることができる。その場合、Δx=-2xと表せる。等式制約が満たされない場合(R(x)≠Uの場合)、xは-1となり、等式制約が満たされる場合(R(x)=Uの場合)、xは+1となる。
このような補助変数を用いた場合、ΔHは、上記の場合と同様にΔH=+λΔxと表せる。
なお、スピン変数を用いずにバイナリ変数を用いた場合、ΔH=+λΔxの代わりにΔH=+2λΔxとすればよい。
また、補助変数は3値以上の値を有していてもよい。
図11は、4値の補助変数を用いた例を示す図である。縦軸は、識別番号がkの制約項の大きさを表し、横軸はhを表す。
は、0、1、2、3の4つの値をもつ。x=0により、制約条件が充足されている状態が示され、x=1、2、3により、3つの制約条件違反状態が示されている。図11の例では、(h,g)から(h,g)までの制約違反状態と、(h,g)から(h,g)までの制約違反状態と、(h,g)以上の制約違反状態が示されている。
また、前述のλとして、x=1の場合はλ、x=2の場合はλ、x=3の場合はλが用いられる。これにより、x=1、2、3の何れであるかによって、hの増加にしたがって、異なる傾きで増加する制約項を用いることができる。
上記のような補助変数を用いる場合、(h,g)から(h,g)に変化する場合のΔHi→jは、ΔHi→j=[λ(h-h)+g]-[λ(h-h)+g]=(λ-λ)h+[(g-λ)-(g-λ)]と表すことができる。
10 データ処理装置
11 記憶部
12 処理部

Claims (7)

  1. 複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せを探索するデータ処理装置において、
    複数の制約条件のそれぞれの違反の有無に応じた値をもつ複数の制約項の値と、前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の状態変数のそれぞれの間の第1重み値と、前記複数の状態変数の何れかと前記複数の補助変数のそれぞれとの間の第2重み値と、前記複数の状態変数のそれぞれの値が変化する場合の前記総エネルギーの変化量を表す第1局所場と、前記複数の補助変数のそれぞれの値が変化する場合の前記総エネルギーの変化量に比例する値である第2局所場と、を記憶する記憶部と、
    前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合、前記第1状態変数の値を更新し、前記第1状態変数に関する前記第1重み値に基づいて前記第1局所場を更新し、前記第1状態変数に関する前記第2重み値に基づいて前記第2局所場を更新する処理と、を含む第1処理と、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを前記第2局所場に基づいて判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合、前記第1補助変数の値を更新し、前記第1補助変数に関する前記第2重み値に基づいて前記第1局所場を更新する処理と、を含む第2処理を行う処理部と、
    を有するデータ処理装置。
  2. 前記処理部は、前記第1状態変数の値の変化により、前記複数の制約条件のうち第1制約条件の違反が生じる場合、前記第1制約条件に対応する前記第1補助変数の値を、違反があることを表す値に変化させることを許容し、前記総エネルギーを補正する、請求項1に記載のデータ処理装置。
  3. 前記処理部は、前記第1状態変数の値の変化により、前記複数の制約条件のうち第1制約条件の違反が解消される場合、前記第1制約条件に対応する前記第1補助変数の値を、違反がないことを表す値に変化させることを許容し、前記総エネルギーを補正する、請求項1に記載のデータ処理装置。
  4. 前記処理部は、前記第1処理を第1回数行った後に前記第2処理を第2回数行う処理を繰り返す、請求項1乃至3の何れか一項に記載のデータ処理装置。
  5. 前記処理部は、前記第1処理において、前記第1状態変数の値の変化を許容すると判定するたびに、前記第2処理を、前記複数の補助変数の数に対応する回数行う、請求項1乃至3の何れか一項に記載のデータ処理装置。
  6. 複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せの探索をコンピュータに実行させるプログラムにおいて、
    記憶部に記憶されている、複数の制約条件のそれぞれの違反の有無に応じた値をもつ複数の制約項の値と、前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の状態変数のそれぞれの間の第1重み値と、前記複数の状態変数の何れかと前記複数の補助変数のそれぞれとの間の第2重み値と、前記複数の状態変数のそれぞれの値が変化する場合の前記総エネルギーの変化量を表す第1局所場と、前記複数の補助変数のそれぞれの値が変化する場合の前記総エネルギーの変化量に比例する値である第2局所場のうち、
    前記第1局所場に基づいて、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合、前記第1状態変数の値を更新し、前記記憶部に記憶されている前記第1状態変数に関する前記第1重み値に基づいて前記第1局所場を更新し、前記記憶部に記憶されている前記第1状態変数に関する前記第2重み値に基づいて前記第2局所場を更新する処理と、を含む第1処理を行い、
    前記記憶部に記憶されている前記第2局所場に基づいて、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合、前記第1補助変数の値を更新し、前記第1補助変数に関する前記第2重み値に基づいて前記第1局所場を更新する処理と、を含む第2処理を行う、
    処理をコンピュータに実行させるプログラム。
  7. 複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値の組合せの探索を実行するコンピュータが、
    記憶部に記憶されている、複数の制約条件のそれぞれの違反の有無に応じた値をもつ複数の制約項の値と、前記評価関数の値との和である総エネルギーと、前記複数の状態変数の値と、前記複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の状態変数のそれぞれの間の第1重み値と、前記複数の状態変数の何れかと前記複数の補助変数のそれぞれとの間の第2重み値と、前記複数の状態変数のそれぞれの値が変化する場合の前記総エネルギーの変化量を表す第1局所場と、前記複数の補助変数のそれぞれの値が変化する場合の前記総エネルギーの変化量に比例する値である第2局所場のうち、
    前記第1局所場に基づいて、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合、前記第1状態変数の値を更新し、前記記憶部に記憶されている前記第1状態変数に関する前記第1重み値に基づいて前記第1局所場を更新し、前記記憶部に記憶されている前記第1状態変数に関する前記第2重み値に基づいて前記第2局所場を更新する処理と、を含む第1処理を行い、
    前記記憶部に記憶されている前記第2局所場に基づいて、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合、前記第1補助変数の値を更新し、前記第1補助変数に関する前記第2重み値に基づいて前記第1局所場を更新する処理と、を含む第2処理を行う、
    データ処理方法。
JP2022058462A 2022-03-31 2022-03-31 データ処理装置、プログラム及びデータ処理方法 Pending JP2023149726A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2022058462A JP2023149726A (ja) 2022-03-31 2022-03-31 データ処理装置、プログラム及びデータ処理方法
EP22216933.6A EP4254271A1 (en) 2022-03-31 2022-12-28 Data processing apparatus, program, and data processing method
US18/149,687 US20230315943A1 (en) 2022-03-31 2023-01-04 Data processing apparatus, storage medium, and data processing method
CN202310044393.5A CN116894488A (zh) 2022-03-31 2023-01-12 数据处理设备、存储介质以及数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022058462A JP2023149726A (ja) 2022-03-31 2022-03-31 データ処理装置、プログラム及びデータ処理方法

Publications (1)

Publication Number Publication Date
JP2023149726A true JP2023149726A (ja) 2023-10-13

Family

ID=84688445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022058462A Pending JP2023149726A (ja) 2022-03-31 2022-03-31 データ処理装置、プログラム及びデータ処理方法

Country Status (4)

Country Link
US (1) US20230315943A1 (ja)
EP (1) EP4254271A1 (ja)
JP (1) JP2023149726A (ja)
CN (1) CN116894488A (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7297540B2 (ja) 2019-06-06 2023-06-26 株式会社東芝 情報処理装置、puboソルバ、情報処理方法およびプログラム
JP7323777B2 (ja) * 2019-06-18 2023-08-09 富士通株式会社 最適化装置および最適化方法
JP2022032552A (ja) * 2020-08-12 2022-02-25 富士通株式会社 評価関数生成プログラム、評価関数生成方法及び情報処理装置

Also Published As

Publication number Publication date
US20230315943A1 (en) 2023-10-05
EP4254271A1 (en) 2023-10-04
CN116894488A (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
JP7206476B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
US11475099B2 (en) Optimization apparatus and method for controlling thereof
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
US11468287B2 (en) Information processing system, information processing apparatus, and information processing method
JP7181454B2 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
JP2021168096A (ja) サンプリング装置、サンプリング方法及びサンプリングプログラム
JP2023149726A (ja) データ処理装置、プログラム及びデータ処理方法
JP2021005282A (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP2020173579A (ja) 最適化システムおよび最適化システムの制御方法
JP2023061477A (ja) プログラム、データ処理方法及びデータ処理装置
JP7242595B2 (ja) 学習装置、推論装置、学習方法及び推論方法
JP2022094510A (ja) 最適化プログラム、最適化方法及び情報処理装置
JP2021184148A (ja) 最適化装置、最適化方法、および最適化プログラム
EP4258171A1 (en) Data processing apparatus, program, and data processing method
US20240111833A1 (en) Data processing apparatus and data processing method
US20220405347A1 (en) Data processing apparatus, computer-readable recording medium storing program of processing data, and method of processing data
US20240193447A1 (en) Data processing device, storage medium, and data processing method
JP2023028347A (ja) プログラム、データ処理方法及びデータ処理装置
US20220092380A1 (en) Optimization device, optimization method, and computer-readable recording medium storing optimization program
JP2023000462A (ja) データ処理装置、プログラム及びデータ処理方法
EP3869419A1 (en) Information processing method, information processing apparatus, and information processing program
JP2023024085A (ja) プログラム、データ処理方法及びデータ処理装置
JP2022184426A (ja) データ処理装置、データ処理方法及びプログラム
JP2024077351A (ja) データ処理装置、プログラム及びデータ処理方法
JP2022158585A (ja) 最適化プログラム、最適化方法及び最適化装置