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

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

Info

Publication number
JP2023149428A
JP2023149428A JP2022057999A JP2022057999A JP2023149428A JP 2023149428 A JP2023149428 A JP 2023149428A JP 2022057999 A JP2022057999 A JP 2022057999A JP 2022057999 A JP2022057999 A JP 2022057999A JP 2023149428 A JP2023149428 A JP 2023149428A
Authority
JP
Japan
Prior art keywords
value
local field
state variables
change
constraint
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
JP2022057999A
Other languages
English (en)
Inventor
康弘 渡部
Yasuhiro Watabe
泰孝 田村
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 JP2022057999A priority Critical patent/JP2023149428A/ja
Priority to EP22217114.2A priority patent/EP4258171A1/en
Priority to US18/150,422 priority patent/US20230315809A1/en
Priority to CN202310033334.8A priority patent/CN116894487A/zh
Publication of JP2023149428A publication Critical patent/JP2023149428A/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】制約条件をもつ離散最適化問題の計算量を削減する。【解決手段】記憶部11は、総エネルギーと、複数の状態変数の値と、複数の状態変数のそれぞれの間の第1重み値と、複数の状態変数の何れかと複数の制約条件のそれぞれとの間の第2重み値と、複数の状態変数のそれぞれの値が変化する場合の総エネルギーの第1変化量を表す第1局所場と、複数の制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場を記憶する。処理部12は、複数の状態変数のうち第1状態変数の値の変化を許容するか否かを第1局所場に基づいて判定する処理と、第1状態変数の値の変化を許容すると判定した場合、第1重み値に基づいて第1局所場を更新し、第1状態変数との間の第2重み値が非零である制約条件に対応する第2局所場を、第2重み値に基づいて更新し、更新前後の第2局所場に基づいて第1局所場をさらに更新する処理とを繰り返す。【選択図】図1

Description

本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある。
イジング装置は、離散最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換する。そして、イジング装置は、疑似焼き鈍し法やレプリカ交換法(パラレルテンパリング法などとも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値(エネルギーに相当する)が極小になるイジングモデルの状態を探索する。評価関数の極小値のうちの最小値になる状態が最適解となる。なお、イジング装置は、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。イジングモデルの状態は、複数の状態変数の値の組合せにより表現できる。各状態変数の値として、0または1を用いることができる。
イジング型の評価関数は、たとえば、以下の式(1)のような2次形式の関数で定義される。
Figure 2023149428000002
右辺の1項目は、イジングモデルのN個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xは、識別番号がiの状態変数、xは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。bは、識別番号がiについてのバイアス係数を示している。
また、xの値の変化に伴うエネルギーの変化量(ΔE)は、以下の式(2)で表される。
Figure 2023149428000003
式(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 2023149428000004
式(3)において、右辺の1項目と2項目の和が、式(1)のE(x)に相当するエネルギーを表し、右辺の3項目が制約項の全体の大きさ(エネルギー)を表す。また、Dは状態変数の識別番号の集合、kは制約項の識別番号、Aは制約項の識別番号の集合を表す。また、λは識別番号がkの制約項についての所定の正の係数である。
制約条件が不等式制約である場合、式(3)のg(h)は、以下の式(4)で表すことができる。
Figure 2023149428000005
式(4)において、max[0,h]は、0とhのうち大きい値を出力する関数である。また、Rは、識別番号がkの制約項の消費量(リソース量とも呼ばれる)、Uはリソース量の上限を表す。Wkiは、識別番号がkの不等式制約におけるxの重みを示す係数(重み値)である。
式(3)において、xの値の変化に伴うエネルギーの変化量(ΔH)は、以下の式(5)で表される。
Figure 2023149428000006
制約条件が不等式制約である場合、xの値の変化に伴うエネルギーの変化量(ΔH)は、式(5)の代わりに、以下の式(6)で表すことができる。
Figure 2023149428000007
式(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変化量を表す第1局所場と、前記複数の制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場と、を記憶する記憶部と、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合、前記第1重み値に基づいて前記第1局所場を更新し、前記第1状態変数との間の前記第2重み値が非零である制約条件に対応する前記第2局所場を、前記第2重み値に基づいて更新し、更新前後の前記第2局所場に基づいて前記第1局所場をさらに更新する処理と、を繰り返す処理部と、を有するデータ処理装置が提供される。
また、1つの実施態様では、プログラムが提供される。
また、1つの実施態様では、データ処理方法が提供される。
1つの側面では、本発明は、制約条件をもつ離散最適化問題の計算量を削減できる。
第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。 状態変数の値の変化によるペナルティ関数の値の変化量の例を示す図である。 の値が変化した場合の局所場の更新例を示す図である。 局所場更新の一例の手順を示す図である。 比較例1のデータ処理装置を示す図である。 比較例2のデータ処理装置を示す図である。 比較例2においてxの値が変化した場合の局所場の更新例と、第1の実施の形態においてhの値が変化した場合の局所場の更新例を示す図である。 比較例2のデータ処理装置における予測誤差発生例を示す図である。 使用可能なペナルティ関数の例を示す図である。 制約項の例を示す図である。 第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。 データ処理装置の機能例を示すブロック図である。 第2の実施の形態のデータ処理装置の動作例を示す図である。 寄与分算出部の回路例を示す図である。 Δgの1つ目の計算例を示す図である。 Δgの2つ目の計算例を示す図である。 複数のペナルティ関数を組み合わせたΔgを発生させるΔg発生回路の例を示す図である。 データ処理方法の一例の流れを示すフローチャートである。 局所場の更新処理の一例の流れを示すフローチャートである。 データ処理装置の他の例を示す図である。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
第1の実施の形態のデータ処理装置10は、記憶部11、処理部12を有する。
記憶部11は、たとえば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置である。記憶部11は、SRAM(Static Random Access Memory)レジスタなどの電子回路を含んでいてもよい。
記憶部11は、H(x)、複数(以下N個)の状態変数(x)の値、N個のxのそれぞれの間の第1重み値(前述のWij)、N個のxの何れかとM個の制約条件のそれぞれとの間の第2重み値(Wki)を記憶する。なお、記憶部11は、M個の制約条件の何れにも影響を与えない状態変数に関する第2重み値(値が0の第2重み値)を記憶しなくてもよい。
iは、N個のxの何れかを表す識別番号であり、kは、M個の制約項(または制約条件)の何れかを表す識別番号である。
さらに、記憶部11は、N個のxのそれぞれの値が変化する場合のH(x)の変化量(ΔH)を表す第1局所場(h)と、Mの制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場(h)を記憶する。なお、状態変数は、決定変数と呼ぶこともできる。各第2局所場は、各制約項に対応しているため、第2重み値は、状態変数と第2局所場との間の重み値ということもできる。
図1には、複数の状態変数(図1の例では、x、x、x)のそれぞれの間の相互作用と、複数の状態変数のそれぞれと複数の第2局所場(図1の例では、h、h、h)との間の相互作用が矢印にて示されている。これらの相互作用の大きさが第1重み値または第2重み値に相当する。
記憶部11に記憶されるH(x)は、H(x)=E(x)+P(x)と表せる。E(x)は、前述の式(3)の右辺の1項目と2項目の和である。
M個の制約条件に対応したM個の制約項の全体のエネルギーP(x)は、以下では、式(7)で表すものとする。
Figure 2023149428000008
γは、識別番号=kの制約項に関する比例係数であり、制約項の重みを表す。γは制約項ごとに異なる値であってもよい。g(h)は、たとえば、式(4)で表されるようなMax関数であってもよいし、他の関数(たとえば、ステップ関数など)であってもよい。以下、g(h)をペナルティ関数と呼ぶ。
第2局所場(h)は、以下の式(8)で表すことができる。
Figure 2023149428000009
式(8)において、bは、識別番号=kの制約条件に関する係数である。識別番号=kの制約条件が不等式制約である場合、式(8)の右辺の1項目が、前述の式(4)のRに相当し、+bは式(4)の-Uに相当する。このため、前述のようにhは、RとUとの差分、すなわち制約違反量の特定に用いられる変数であるということができる。
なお、ある状態変数(x)の値が変化する場合のΔHは、ペナルティ関数を用いて、以下の式(9)で表すことができる。
Figure 2023149428000010
式(9)におけるg(h+WkiΔx)-g(h)は、ある状態変数(x)の値が変化する場合の、ペナルティ関数の値の変化量(制約項の変化量ということもできる)を表している。
図2は、状態変数の値の変化によるペナルティ関数の値の変化量の例を示す図である。縦軸は、g(h)の大きさを表し、横軸はhを表している。
図2ではペナルティ関数の一例としてg(h)=max[0,h]が用いられている。xの値の変化に伴い、hがh+WkiΔxに変化したとき、ペナルティ関数の値の変化量は、g(h+WkiΔx)-g(h)と表される。
本実施の形態のデータ処理装置10は、第1局所場(h)として、xの値の変化に伴うE(x)の変化量だけでなく、P(x)の変化量も反映させたものを用いる。このようなhは、以下の式(10)で表すことができる。
Figure 2023149428000011
式(10)において、Δg(h,WkiΔx)は、以下の式(11)で表され、x、h、Wkiから計算できる量である。
Figure 2023149428000012
式(10)のようなhを用いることで、ΔHは、ΔH=-hΔxと表される。
記憶部11は、さらにバイアス係数(b)、比例係数(γ)、制約条件に関する係数(b)を記憶してもよい。また、記憶部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は、たとえば、E(x)が極小になる状態を探索する。E(x)の極小値のうちの最小値になるときの状態が最適解となる。なお、E(x)とP(x)の符号を変えれば、処理部12は、E(x)の値が極大になる状態を探索することもできる(この場合、最大値となるときの状態が最適解となる)。
図1には、処理部12による処理の一例の流れが示されている。
なお、ここではH(x)、h、h、xとして、x~xの初期値に基づいた値が、記憶部11に記憶されているものとする。
処理部12は、N個の状態変数から、値を変化させる候補(以下フリップ候補という)の状態変数を選択する(ステップS1)。処理部12は、たとえば、ランダムにまたは所定の順序で、フリップ候補の状態変数を選択する。
そして、処理部12は、選択された状態変数の値が変化する場合のΔHを計算する(ステップS2)。たとえば、xが選択された場合、ΔHは、上記のようにhに基づいて、ΔH=-hΔxという式により計算できる。
次に、処理部12は、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否か(フリップ可か否か)の判定を行う(ステップS3)。以下、この判定処理を、フリップ判定処理という。
所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。たとえば、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例であるlog(rand)×Tを、所定値として用いることができる。この場合、処理部12は、-ΔH≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容する(フリップ可)と判定する。
処理部12は、フリップ可と判定した場合、更新処理を行う(ステップS4)。
処理部12は、たとえば、xをフリップ可と判定した場合、N個の状態変数のそれぞれについての元のhに、Δh=WijΔxを加えることで、hの更新を行う。なお、i=jの場合、Wii=0であり、hは変化しないため更新は不要である。また、処理部12は、xをフリップ可と判定した場合、xとの間の第2重み値(Wkj)が非零であるhに対して、Δh=WkjΔxを加えることで、hの更新を行う。
図3は、xの値が変化した場合の局所場の更新例を示す図である。図3の例では、第1局所場(h)がh~hにより示されており、第2局所場(h)がhN+1~hN+Mにより示されている。このような計算は、N+Mの並列度の並列計算により行うことができる。
さらに、処理部12は、更新前後のhに基づいてhを、以下の式(12)にしたがって、さらに更新する。
Figure 2023149428000013
式(12)において、h (old)は、更新前のhを表す。なお、i=jの場合、hは変化しないため更新は不要である。
図4は、局所場更新の一例の手順を示す図である。
、x、xは、状態変数であり、h、h、hは、第2局所場である。
状態変数であるx、x、xのうち、xの値が変化した場合、xとの間の第1重み値が非零である状態変数に対応する第1局所場、xとの間の第2重み値が非零である第2局所場が更新される。たとえば、xとの間の第1重み値(W1i)が非零であるxに対応するhが、Δh=W1iΔxを加えられることで更新され、xとの間の第1重み値(WiN)が非零であるxに対応するhが、Δh=WiNΔxを加えられることで更新される。また、xとの間の第2重み値(Wpi)が非零であるhが、Δh=WpiΔxを加えられることで更新され、xとの間の第2重み値(Wri)が非零であるhが、Δh=WriΔxを加えられることで更新される。
次に、値が変化した第2局所場との間の第2重み値が非零である状態変数に対応する第1局所場が、式(12)に基づいて更新される。たとえば、hとの間の第2重み値(Wri、WrN)が非零であるx、xに対応するh、hが、式(12)に基づいて更新される。さらに、hとの間の第2重み値(Wp1、Wpi、WpN)が非零であるx、x、xに対応するh、h、hが、式(12)に基づいて更新される。
ステップS4の処理では、処理部12は、さらに、元のH(x)にΔHを加算することでH(x)の更新を行うとともに、フリップ可と判定した状態変数(たとえば、x)の値を変化(フリップ)させる。
処理部12は、以上のステップS1~S4の処理を繰り返す。
なお、上記の説明では、N個の状態変数のうちフリップ候補の状態変数を1つずつ選択して、ステップS2~S4の処理が行われる例を示したが、複数(たとえばN個全て)の状態変数について並列にステップS2~S3の処理が行われるようにしてもよい。その場合、処理部12は、値の変化が許容された状態変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる状態変数を選択する。
処理部12は、疑似焼き鈍し法を行う場合、たとえば、状態変数についてのフリップ判定処理が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、処理部12は、フリップ判定処理が所定の回数繰り返された場合(または、所定のTに達した場合)に得られた状態を、離散最適化問題の計算結果として出力する。なお、処理部12は、これまでの最小エネルギーとなった場合の総エネルギーと状態とを記憶部11に保持させておいてもよい。その場合、処理部12は、フリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーに対応する状態を、計算結果として出力してもよい。
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なるTの値が設定された複数のレプリカのそれぞれにおいて、上記のステップS1~S4の処理を繰り返す。そして、処理部12は、フリップ判定処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、隣り合うTの値をもつレプリカを2つ選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差やTの値の差に基づいた所定の交換確率で、各状態変数の値及び各補助変数の値を交換する。なお、2つのレプリカの間で、各状態変数の値及び各補助変数の値の代わりにTの値が交換されてもよい。または、処理部12は、これまでの最小エネルギーとなった場合の総エネルギーと状態とを保持する。そして、処理部12は、各レプリカにおいて上記のフリップ判定処理が所定の回数繰り返された後に記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する状態を、計算結果として出力する。
レプリカ交換法を用いることで、状態がほとんど変化しない低温側(Tの値が小さい側レプリカ)でも状態が変化するようになり良い解を短時間で発見できる可能性が高くなる。
以上のようなデータ処理装置10及びデータ処理方法によれば、図3に示したように、N+Mの並列度でh、hを更新できるとともに、値の変化が許容された状態変数との間の第2重み値が0であるhに対しては、更新は行われない。つまり、その状態変数の変化が影響を与える制約条件に対する制約違反量の特定に用いられるhに限って更新される。また、更新が行われないhについては、値が変化しないため、そのhを用いた式(12)によるhのさらなる更新も行われない(前述の図4参照)。
これにより、更新処理にかかる計算量を削減できる。
また、第1局所場(h)として、xの値の変化に伴うE(x)の変化量だけでなく、P(x)の変化量(図2のg(h+WkiΔx)-g(h)に相当)も反映させた値が用いられるため、より正確なΔHに基づいて、フリップ判定が行える。このため、求解性能を向上できる。
(比較例)
以下、2つの比較例のデータ処理装置について説明する。
図5は、比較例1のデータ処理装置を示す図である。
比較例1のデータ処理装置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を計算する(ステップS10)。図5の例では、hは、式(4)においてiの代わりにjを用いて計算される。
次に、ΔP計算部27は、k=1、P=0とし(ステップS11)、式(5)の右辺の2項目に基づいて、P+λ(g(h+WkjΔx)-g(h))を計算した結果を、新たにPとする(ステップS12)。
そして、ΔP計算部27は、k=Mであるか否かを判定する(ステップS13)。ΔP計算部27は、k=Mではないと判定した場合、kをk+1とし(ステップS14)、ステップS12からの処理を繰り返す。
ΔP計算部27は、k=Mであると判定した場合、PをΔPとして出力する(ステップS15)。
上記のような処理では、x~xのそれぞれについて、ΔPを計算するために、ステップS12の処理がM回繰り返される。つまり、M回のWkjの読み出しと加算処理が行われる。このため、N個のΔPの計算に、N×Mに比例する計算量が必要となり、計算量が大きい。また、読み出しのためのデータ転送量が大きい。1つのΔPの計算にあたって、M個のWkjがシリアルに読み出されるためである。
計算量を削減するために、以下のようなデータ処理装置を用いることも考えられる。
図6は、比較例2のデータ処理装置を示す図である。
比較例2のデータ処理装置30は、状態変数保持部31、補助変数保持部32、乗算器33,34,35、h更新回路36、h更新回路37、更新状態変数決定部38、更新補助変数決定部39を有する。
状態変数保持部31は、N個の状態変数(x)を保持する。また、状態変数保持部31は、フリップ候補のxの変化量(Δx)を出力する。
補助変数保持部32は、M個の補助変数(x)を保持する。xは、識別番号=kの制約条件が満たされている場合に0、満たされていない場合に1となる変数である。また、補助変数保持部32は、フリップ候補のxの変化量(Δx)を出力する。
このような補助変数を用いた場合、H(x)は、たとえば、以下の式(13)で表すことができる。
Figure 2023149428000014
また、比較例2のデータ処理装置30では、hは、以下の式(14)で表すことができる。
Figure 2023149428000015
また、hは、以下の式(15)で表すことができる。
Figure 2023149428000016
なお、式(15)は、-U=bとすれば、式(8)と同じである。
乗算器33は、フリップ候補のxの値が変化した場合の、式(14)に示したようなhの変化量である、ΔxとWijとの積を出力する。
乗算器34は、フリップ候補のxの値が変化した場合の、式(15)に示したようなhの変化量である、ΔxとWkjとの積を出力する。
乗算器35は、フリップ候補のxの値が変化した場合の、式(14)に示したようなhの変化量である、ΔxとWkiとの積を出力する。
更新回路36は、フリップ候補のxの値が変化した場合、元のhに、WijΔxを加えることで、hを更新する。また、h更新回路36は、フリップ候補のxの値が変化した場合、元のhに、-λkiΔxを加えることで、hを更新する。
更新回路37は、フリップ候補のxの値が変化した場合、元のhに、WkjΔxを加えることで、hを更新する。
更新状態変数決定部38は、フリップ候補のxについての第1局所場であるhに基づいて、ΔH=-hΔxを計算する。そして、更新状態変数決定部38は、ΔHと、所定値との比較結果に基づいて、xの値を変化させるか否かを決定し、xの値を変化させると決定した場合、状態変数保持部31に保持されているxの値を変化させる。
更新補助変数決定部39は、フリップ候補のxについての第2局所場であるhに基づいて、ΔH=+λΔxを計算する。そして、更新補助変数決定部39は、ΔHと、所定値との比較結果に基づいて、xの値を変化させるか否かを決定し、xの値を変化させると決定した場合、補助変数保持部32に保持されているxの値を変化させる。
このようなデータ処理装置30では、ある制約条件の違反の有無を表す補助変数(x)の値の変化が許容された場合に、N個のWkiに基づいて、hが更新される。これにより、M個全ての制約項に関するWkiを読み出さなくてもよくなり、加算処理(元のhにΔh=-λkiΔxを加える処理)が行われる回数が抑制され、更新処理にかかる計算量を削減できる。
図7は、比較例2においてxの値が変化した場合の局所場の更新例と、第1の実施の形態においてhの値が変化した場合の局所場の更新例を示す図である。
比較例2のデータ処理装置30では、xの値が変化した場合、N個のh(h~h)に、-λΔxki(Wk1~WkN)を加えることで更新が行われる。これに対して、第1の実施の形態のデータ処理装置10では、hの値が変化した場合、N個のh(h~h)に、δh(δh~δh)を加えることで更新が行われる。δhは、式(12)の-γ[Δg(h,WkiΔx)-Δg(h (old),WkiΔx)]である。
比較例2のデータ処理装置30では、フリップ候補の状態変数の値を変化させるか否かの判定を行う時点では、その変化に伴う制約項の変化量が考慮されていない。このため、補助変数の値の変化に伴い、ΔH=+λΔxによりH(x)が更新されるまで、以下のような予測誤差が生じる可能性がある。
図8は、比較例2のデータ処理装置における予測誤差発生例を示す図である。縦軸は、制約項の大きさを表し、横軸はhを表している。図8には、不等式制約の制約項が、λmax[0,h]で表されている。
予測誤差発生ケース1では、不等式制約の充足状態から違反状態に変化する場合に生じる予測誤差が示されている。予測誤差発生ケース2では、不等式制約の違反状態から充足状態に変化する場合に生じる予測誤差が示されている。
いずれのケースについても、図8に示すような予測誤差が生じる可能性がある。
このため、難易度が高い不等式制約問題に対する求解性能を向上させることが難しくなる可能性がある。また、比較例2のデータ処理装置30では、使用可能なペナルティ関数が、ReLU(Rectified Linear Unit)型の関数に限られる。
これに対して、第1の実施の形態のデータ処理装置10は、上記の式(10)のようにhとして、xの値の変化に伴うE(x)の変化量だけでなく、P(x)の変化量(図2のg(h+WkiΔx)-g(h)に相当)も反映させた値が用いられる。このため、より正確なΔHに基づいて、フリップ判定が行える。これにより、求解性能を向上できる。
また、第1の実施の形態のデータ処理装置10で扱えるペナルティ関数は、ReLU型の関数に限定されない。
図9は、使用可能なペナルティ関数の例を示す図である。
例1では、ペナルティ関数g(h)として、ReLU型の関数であるmax[0,h]が示されている。
例2では、ペナルティ関数g(h)として、ステップ関数u(h)が示されている。
また、上記の2つのペナルティ関数をそれぞれ組み合わせた制約項を用いることもできる。
図10は、制約項の例を示す図である。
図10では、ステップ関数u(h)を比例係数μで重み付けした関数と、max[0,h]を比例係数λで重み付けした関数の和である、γg(h)=μu(h)+λmax[0,h]が、制約項の例として表されている。
なお、使用可能なペナルティ関数は上記の例に限定されない。ただ、hの更新の際に、式(12)の計算が行われるため、ペナルティ関数は計算が比較的容易な関数であることが望ましい。
(第2の実施の形態)
図11は、第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
データ処理装置40は、たとえば、コンピュータであり、CPU41、RAM42、HDD43、GPU44、入力インタフェース45、媒体リーダ46及び通信インタフェース47を有する。上記ユニットは、バスに接続されている。
CPU41は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU41は、HDD43に記憶されたプログラムやデータの少なくとも一部をRAM42にロードし、プログラムを実行する。なお、CPU41は複数のプロセッサコアを備えてもよく、データ処理装置40は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM42は、CPU41が実行するプログラムやCPU41が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置40は、RAM42以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD43は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、離散最適化問題の解を探索する処理をデータ処理装置40に実行させるプログラムが含まれる。なお、データ処理装置40は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
GPU44は、CPU41からの命令にしたがって、データ処理装置40に接続されたディスプレイ44aに画像を出力する。ディスプレイ44aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力インタフェース45は、データ処理装置40に接続された入力デバイス45aから入力信号を取得し、CPU41に出力する。入力デバイス45aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置30に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ46は、記録媒体46aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体46aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ46は、たとえば、記録媒体46aから読み取ったプログラムやデータを、RAM42やHDD43などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU41によって実行される。なお、記録媒体46aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体46aやHDD43を、コンピュータ読み取り可能な記録媒体ということがある。
通信インタフェース47は、ネットワーク47aに接続され、ネットワーク47aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース47は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
次に、データ処理装置40の機能及び処理手順を説明する。
図12は、データ処理装置の機能例を示すブロック図である。
データ処理装置40は、入力部51、制御部52、探索部53、出力部54を有する。
入力部51、制御部52、探索部53、出力部54は、たとえば、CPU41が実行するプログラムモジュールや、CPU41内の記憶領域(レジスタやキャッシュメモリ)を用いて実装できる。なお、探索部53は、さらに、RAM42またはHDD43に確保した記憶領域を用いて実装されるようにしてもよい。
入力部51は、たとえば、N個の状態変数の初期値、問題情報、計算条件の入力を受け付ける。問題情報は、たとえば、式(8)のWkiやbのほか、式(10)のWij、b、γを含む。計算条件は、たとえば、レプリカ交換法を実行する場合のレプリカ数、レプリカ交換周期、各レプリカに設定する温度パラメータの値、疑似焼き鈍し法を行う場合の温度パラメータ変更スケジュール、計算の終了条件などを含む。
これらの情報は、ユーザによる入力デバイス45aの操作により入力されてもよいし、記録媒体46aまたはネットワーク47aを介して入力されてもよい。
制御部52は、データ処理装置40の各部を制御して、後述の処理を実行させる。
探索部53は、制御部52の制御のもと、フリップ判定処理や、更新処理を繰り返すことで、評価関数の値(エネルギー)が極小になる状態を探索する。
出力部54は、探索部53による探索結果(計算結果)を出力する。
出力部54は、たとえば、計算結果を、ディスプレイ44aに出力して表示させてもよいし、ネットワーク47aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
探索部53は、重み値保持部53a、状態変数保持部53b、補助変数保持部53c、局所場更新部53d、h更新検出部53e、h寄与分算出部53fを有する。さらに探索部53は、h保持部53g、h保持部53h、ΔH計算部53i、ΔH保持部53j、FF(フリップフロップ)53k、フリップ判定処理部53l、H保持部53mを有する。
重み値保持部53aは、N×N個のWijを保持するとともに、M×N個のWkiとN×M個のWikを保持する。なお、Wki=Wikであるため、重み値保持部53aは、N×M個のWikを保持しなくてよい。また、重み値保持部53aは、値が0であるWkiについては保持しなくてもよい。
状態変数保持部53bは、N個の状態変数(x)の値を保持する。また、状態変数保持部53bは、N個の状態変数のうち、フリップ候補の状態変数が指定された場合、その状態変数の値の変化量を出力する。たとえば、xが指定された場合、Δx=1-2xが出力される。
補助変数保持部53cは、M個の補助変数(x)の値を保持する。xは、前述の比較例2のデータ処理装置30で用いられるものと同じであり、たとえば、制約条件が満たされているかを検出するために用いられる。図12では、xを更新する構成についての図示が省略されている。図9に示したようにh>0の場合、g(h)>0となり制約条件違反が生じているため、たとえば、h>0の場合にはx=1、h≦0の場合には、x=0とするような構成が設けられる。ただ、本実施の形態のデータ処理装置40は、xを用いなくてもよい。その場合、補助変数保持部53cは不要である。
局所場更新部53dは、フリップ候補の状態変数の値の変化が許容された場合(フリップ可とされた場合)、重み値保持部53aからその状態変数と他の状態変数との間の重み値を読み出し、その重み値を用いて局所場の更新を行う。たとえば、xがフリップ可とされた場合、局所場更新部53dは、WijΔxを各hに加算することでhを更新する。
また、局所場更新部53dは、フリップ候補の状態変数がフリップ可とされた場合、その状態変数とM個の局所場(h)との間の重み値のうち、値が非零の重み値を読み出し、その重み値を用いてhを更新する。たとえば、xがフリップ可とされた場合、局所場更新部53dは、WkjΔxをhに加算することでhを更新する。
更新検出部53eは、hの更新を検出する。
寄与分算出部53fは、更新が検出されたhの値の変化によるhの変化分(図7のδh)を計算するために、重み値保持部53aから非零のWkiを読み出す。さらに、h寄与分算出部53fは、hをh保持部53hから取得し、h (old)をFF53kから取得する。そして、h寄与分算出部53fは、δhを計算し、元のhにδhを加えることでhを更新する。
保持部53gは、N個のhを保持する。
保持部53hは、M個のhを保持する。
ΔH計算部53iは、フリップ候補の状態変数に対応する局所場に基づいて、ΔHを計算する。たとえば、フリップ候補がxである場合、ΔH計算部53iは、ΔH=-hΔxを計算する。
ΔH保持部53jは、ΔH計算部53iが計算したΔHを保持する。
FF53kは、hを保持し、hを出力するタイミングを遅延させることで、h (old)をh寄与分算出部53fに供給する。
フリップ判定処理部53lは、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数がフリップ可であるか否かのフリップ判定処理を行う。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。フリップ判定処理部53lは、たとえば、-ΔH≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容すると判定する。
また、フリップ判定処理部53lは、フリップ可と判定された状態変数の識別番号を状態変数保持部53bに送り、その状態変数の値を更新させる。
さらに、フリップ判定処理部53lは、フリップ可とされた状態変数の値の変化によって生じるΔHに基づいて、H保持部53mに保持されているH(x)を更新する。
H保持部53mは、H(x)を保持する。なお、H保持部53mは、これまでの最小エネルギーとなった場合のH(x)と状態とを保持してもよい。
次に、第2の実施の形態のデータ処理装置40の動作例を説明する。
図13は、第2の実施の形態のデータ処理装置の動作例を示す図である。図13には、8つのレプリカを用いてパイプライン処理が行われる例が示されている。0~7は、レプリカ番号である。図13では、レプリカ番号=0のレプリカについての処理の詳細が示されており、他のレプリカについては簡略的に示されている。
レプリカ番号=0のレプリカにおいて、フリップ判定処理が行われ(t1)、その結果に応じてx、xの更新が行われるとともに、h、hの更新のための重み値の読み出しが行われる(t2)。そして、局所場更新部53dにより、h、hの更新が行われる(t3)。3つのh(図13では、0ka、0kb、0kcと表される)の更新が行われた場合、それらについて、順に、読み出し、FF53kによるh (old)の出力、h更新検出部53eによるhの更新検出が行われる(t4~t5)。
そして、更新検出が終わったhから順に、対応するWkiの読み出しが行われ(t5)、h寄与分算出部53fによる、前述のδhに基づくhの更新が行われる(t6)。その後、更新されたhが読み出され(t7)、ΔHの計算、フリップ判定処理、H(x)の計算が行われる(t8)。
ところで、図12に示した探索部53は、後述のようにFPGAなどの電子回路を用いて実現することもできる(図20参照)。たとえば、探索部53のh寄与分算出部53fは、以下のような回路で実現できる。
図14は、h寄与分算出部の回路例を示す図である。
寄与分算出部53fは、Δg発生回路53f1,53f2、加算器53f3、乗算器53f4を有する。
Δg発生回路53f1は、式(11)に基づいて、式(12)に示したΔg(h,WkiΔx)を発生させ(計算し)、出力する。
Δg発生回路53f2は、式(11)に基づいて、式(12)に示したΔg(h (old),WkiΔx)を発生させ(計算し)、出力する。
加算器53f3は、Δg(h,WkiΔx)-Δg(h (old),WkiΔx)を計算し、出力する。
乗算器53f4は、加算器53f3の出力である、Δg(h,WkiΔx)-Δg(h (old),WkiΔx)に-γを乗じた値であるδhを出力する。
図15は、Δgの1つ目の計算例を示す図である。
図15では、g(h)がステップ関数(u(h))である場合のΔgの計算例が示されている。
変化前の値がx=0である場合、Δg(h,WkiΔx)は、h≦-Wkiの場合は0、-Wki<h<0の場合は1、h≧0の場合は0である。
変化前の値がx=1である場合、Δg(h,WkiΔx)は、h≦0の場合は0、0<h<Wkiの場合は1、h≧Wkiの場合は0である。
図16は、Δgの2つ目の計算例を示す図である。
図16では、g(h)がMax関数(max[0,h])である場合のΔgの計算例が示されている。
変化前の値がx=0である場合、Δg(h,WkiΔx)は、h≦-Wkiの場合は0、-Wki<h<0の場合はh+Wki、h≧0の場合はWkiである。
変化前の値がx=1である場合、Δg(h,WkiΔx)は、h≦0の場合は0、0<h<Wkiの場合はh、h≧Wkiの場合はWkiである。
なお、図15と図16に示されているようなΔgを組み合わせることも可能である。
図17は、複数のペナルティ関数を組み合わせたΔgを発生させるΔg発生回路の例を示す図である。
Δg発生回路53f1は、乗算器60、加算器61、Δg1発生回路62、Δg2発生回路63、乗算器64,65、加算器66を有する。
乗算器60は、WkiとΔxとの積であるWkiΔxを出力する。
加算器61は、hと-WkiΔxとの和を出力する。
Δg1発生回路62は、たとえば、図15に示した、ステップ関数に基づくΔg(h,WkiΔx)を発生させる。
Δg2発生回路63は、たとえば、図16に示した、Max関数に基づくΔg(h,WkiΔx)を発生させる。
乗算器64は、Δg1発生回路62によって発生されたΔg(h,WkiΔx)に-μを乗じた値を出力する。
乗算器65は、Δg2発生回路62によって発生されたΔg(h,WkiΔx)に-λを乗じた値を出力する。
加算器66は、乗算器64,65の出力を足し合わせた値を出力する。
以下、第2の実施の形態のデータ処理装置40の処理手順(データ処理方法)を、フローチャートを用いて説明する。
図18は、データ処理方法の一例の流れを示すフローチャートである。
なお、以下では、疑似焼き鈍し法による探索が行われる例が示される。
ステップS20:入力部51は、N個の状態変数の初期値、問題情報、計算条件(たとえば、後述のパラメータd、Tstopなど)の入力を受け付ける。N個の状態変数の初期値は、状態変数保持部53bに保持される。また、問題情報に含まれる重み値は、重み値保持部53aに保持される。計算条件は制御部52に供給される。
ステップS21:制御部52は、初期化処理を行う。初期化処理では、たとえば、以下の処理が行われる。
制御部52は、N個の状態変数の初期値、問題情報に基づいて、式(8)に示したhの初期値、式(10)に示したhの初期値を計算する。計算されたN個のhの初期値は、h保持部53gに保持され、計算されたM個のhの初期値は、h保持部53hに保持される。
また、制御部52は、N個の状態変数の初期値、問題情報に基づいて、H(x)の初期値を計算する。計算されたH(x)の初期値は、たとえば、H保持部53mに保持される。
ステップS22:探索部53により、フリップ判定処理が行われる。ステップS22の処理では、たとえば、フリップ候補の状態変数が選択され、その状態変数に対応するhに基づいて、ΔHが計算される。そして、ΔHと所定値との比較結果に基づいて、フリップ候補の状態変数がフリップ可か否かが判定される。所定値は、乱数と温度パラメータ(T)の値とに基づいて得られるノイズ値(たとえば、log(rand)×T)である。
ステップS23:探索部53により、更新処理が行われる。ステップS23の処理では、フリップ可と判定された状態変数の値が更新される。さらに状態変数の値の更新に伴い、h、h、H(x)が更新される。局所場(hとh)の更新処理の手順の例については後述する。
ステップS24:制御部52は、T変更タイミングであるか否かを判定する。たとえば、状態変数の更新が所定回数行われるごとに、T変更タイミングであると判定される。制御部52は、T変更タイミングであると判定した場合、ステップS25の処理を行い、T変更タイミングではないと判定した場合、ステップS22からの処理が繰り返される。
ステップS25:制御部52は、d×Tを行うことでTを更新する。dは計算条件に含まれるパラメータの1つであり、1より小さい値(たとえば、0.99など)をもつ。
ステップS26:制御部52は、T<Tstopであるか否かを判定する。Tstopは計算の終了条件を表すパラメータである。制御部52がT<Tstopであると判定した場合、ステップS27の処理が行われ、制御部52がT<Tstopではないと判定した場合、ステップS22からの処理が繰り返される。
ステップS27:出力部54は、計算結果を出力する。これにより処理が終了する。計算結果は、たとえば、これまでの最小エネルギーとなった場合の総エネルギーと状態である。
図19は、局所場の更新処理の一例の流れを示すフローチャートである。
ステップS30:フリップ候補の状態変数がフリップ可と判定された場合、局所場更新部53dは、N個の状態変数に対応したN個の局所場(h~h)を更新する。局所場更新部53dは、フリップ候補のxの値の変化が許容された場合(フリップ可とされた場合)、重み値保持部53aからN個のWijを読み出し、WijΔxをN個のhのそれぞれに加算することでN個のhを更新する。
ステップS31:制御部52は、ループ変数sに1を設定する。
ステップS32:制御部52は、制約項の識別番号であるkとしてk (j)を設定する。k (j)は、Wkj≠0となる識別番号kの昇順リスト{k (j),k (j),…,km(j) (j)}に含まれる、s番目のkを表す。なお、jは、フリップ可と許容された状態変数の識別番号である。このようなリストは、たとえば、N個の状態変数のそれぞれについて予め作成され、図示しない記憶部に記憶されている。
ステップS33:局所場更新部53dは、hの更新を行う。たとえば、xがフリップ可とされた場合、局所場更新部53dは、WkjΔxをhに加算することでhを更新する。
ステップS34:h寄与分算出部53fは、hの更新を行う。h寄与分算出部53fは、hとの間の重み値が非零である状態変数に対応するhiを、式(12)に基づいて更新する。
ステップS35:制御部52は、s<m(j)であるか否かを判定する。制御部52は、s<m(j)であると判定した場合、ステップS36の処理を行い、s<m(j)ではないと判定した場合、更新処理を終了する。
ステップS36:制御部52は、sをs+1とする。その後ステップS32からの処理が繰り返される。
なお、図18、図19に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
以上のような第2の実施の形態のデータ処理装置40及びデータ処理方法によれば、N+Mの並列度でh、hを更新できるとともに、値の変化が許容された状態変数との間の重み値が0であるhに対しては、更新は行われない(図19参照)。また、このようなhについては、値が変化しないため、そのhを用いた式(12)によるhのさらなる更新が行われない。また、値が変化したhとの間の重み値が0である状態変数に対応するhのさらなる更新も行われない。このため、計算量を削減できる。また、データ転送量も小さくできる。
また、第2の実施の形態のデータ処理装置40及びデータ処理方法によれば、ΔHの計算に用いられるhが、状態変数の値の変化に伴うE(x)の変化量だけでなく、P(x)の変化量も反映させた値となる。つまり、より正確なΔHが計算可能である。このため、フリップ候補の状態変数の値を変化させるか否かの判定を行う時点でも、その変化に伴う制約項の変化量に基づいた、フリップ判定が行える。これにより、求解性能を向上できる。
また、使用可能なペナルティ関数もReLU型に限られず、たとえば、図17に示したような構成を用いることで、複数のペナルティ関数を組合せたようなペナルティ関数を用いることもできる。これにより、守るべき不等式制約(ハード制約)と、E(x)との比較で違反が許されるソフト制約を使い分けることも可能となる。
なお、前述のように、上記の処理内容は、データ処理装置40にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体46a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD43)にプログラムをコピーして実行してもよい。
図20は、データ処理装置の他の例を示す図である。図20において、図11に示した要素と同じ要素については同一符号が付されている。
データ処理装置70は、バスに接続されたアクセラレータカード71を有する。
アクセラレータカード71は、離散最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード71は、FPGA71a及びDRAM71bを有する。
データ処理装置70では、FPGA71aが、たとえば、図12に示した制御部52や探索部53の処理を行う。
また、DRAM71bは、たとえば、図12に示した重み値保持部53aとして機能する。
なお、アクセラレータカード71は、複数あってもよい。
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
10 データ処理装置
11 記憶部
12 処理部

Claims (6)

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

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2022057999A JP2023149428A (ja) 2022-03-31 2022-03-31 データ処理装置、プログラム及びデータ処理方法
EP22217114.2A EP4258171A1 (en) 2022-03-31 2022-12-29 Data processing apparatus, program, and data processing method
US18/150,422 US20230315809A1 (en) 2022-03-31 2023-01-05 Data processing apparatus, program, and data processing method
CN202310033334.8A CN116894487A (zh) 2022-03-31 2023-01-10 数据处理设备、存储介质以及数据处理方法

Applications Claiming Priority (1)

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

Publications (1)

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

Family

ID=84689123

Family Applications (1)

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

Country Status (4)

Country Link
US (1) US20230315809A1 (ja)
EP (1) EP4258171A1 (ja)
JP (1) JP2023149428A (ja)
CN (1) CN116894487A (ja)

Family Cites Families (2)

* 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 富士通株式会社 最適化装置および最適化方法

Also Published As

Publication number Publication date
US20230315809A1 (en) 2023-10-05
EP4258171A1 (en) 2023-10-11
CN116894487A (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
JP7206476B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
US11475099B2 (en) Optimization apparatus and method for controlling thereof
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP2020004387A (ja) 最適化問題計算プログラム及び最適化問題計算システム
US20190391807A1 (en) Computer-readable recording medium storing optimization problem computing program and optimization problem computing system
Tsay et al. Runway: machine learning model experiment management tool
JP2021033657A (ja) 組合せ最適化装置、組合せ最適化方法および組合せ最適化プログラム
Kosanoglu et al. A deep reinforcement learning assisted simulated annealing algorithm for a maintenance planning problem
Huynh et al. An efficient method for mining sequential patterns with indices
JP2023149428A (ja) データ処理装置、プログラム及びデータ処理方法
CN111985631B (zh) 信息处理设备、信息处理方法及计算机可读记录介质
JP2022094510A (ja) 最適化プログラム、最適化方法及び情報処理装置
JP2023149726A (ja) データ処理装置、プログラム及びデータ処理方法
Artigues et al. Robust optimization for the resource-constrained project scheduling problem with duration uncertainty
JP2023000462A (ja) データ処理装置、プログラム及びデータ処理方法
JP7400840B2 (ja) 最適化関数生成装置、最適化関数生成方法、プログラム
JP2023001644A (ja) データ処理装置、プログラム及びデータ処理方法
JP2021131723A (ja) 情報処理方法、情報処理装置及びプログラム
Patel Scalable big data modelling
JP2023024085A (ja) プログラム、データ処理方法及びデータ処理装置
JP2024049202A (ja) データ処理装置、プログラム及びデータ処理方法
JP2022165250A (ja) プログラム、データ処理方法及びデータ処理装置
JP2023028347A (ja) プログラム、データ処理方法及びデータ処理装置
JP2023122981A (ja) プログラム、データ処理装置及びデータ処理方法
JP2022184426A (ja) データ処理装置、データ処理方法及びプログラム