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

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

▶ 富士通株式会社の特許一覧

特開2024-49202データ処理装置、プログラム及びデータ処理方法
<>
  • 特開-データ処理装置、プログラム及びデータ処理方法 図1
  • 特開-データ処理装置、プログラム及びデータ処理方法 図2
  • 特開-データ処理装置、プログラム及びデータ処理方法 図3
  • 特開-データ処理装置、プログラム及びデータ処理方法 図4
  • 特開-データ処理装置、プログラム及びデータ処理方法 図5
  • 特開-データ処理装置、プログラム及びデータ処理方法 図6
  • 特開-データ処理装置、プログラム及びデータ処理方法 図7
  • 特開-データ処理装置、プログラム及びデータ処理方法 図8
  • 特開-データ処理装置、プログラム及びデータ処理方法 図9
  • 特開-データ処理装置、プログラム及びデータ処理方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024049202
(43)【公開日】2024-04-09
(54)【発明の名称】データ処理装置、プログラム及びデータ処理方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20240402BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022155524
(22)【出願日】2022-09-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】チェン シゲン
(72)【発明者】
【氏名】ローゼンタール ジェフリー セス
(72)【発明者】
【氏名】シェイクホレスラミ アリ
(72)【発明者】
【氏名】田村 泰孝
(72)【発明者】
【氏名】土手 暁
(57)【要約】
【課題】解探索を効率的に行う。
【解決手段】第2記憶部12は、複数の重み係数のうち、評価関数に含まれる複数の状態変数を分割した複数の状態変数群から選択された状態変数群に関する、重み係数群の値を記憶する。探索部13は、第2記憶部12から読み出した重み係数群の値を用いて、状態変数群の各状態変数の値を変化させたときの評価関数の値の変化量を計算する処理と、変化量と温度値に基づいて、状態変数群の何れかの状態変数の値を変化させる処理を含む更新処理を繰り返すことで、組合せ最適化問題の解を探索する。処理部14は、MCMC法を用いて解の探索を行う場合に、状態変数群の値が維持される試行回数である多重度を、上記変化量と温度値に基づいて計算し、多重度の積算値が所定の閾値を超えた場合、他の状態変数群に関する重み係数群の値を用いた上記更新処理を、探索部13に実行させる。
【選択図】図1
【特許請求の範囲】
【請求項1】
組合せ最適化問題を変換した評価関数に含まれる複数の重み係数の値を記憶する第1記憶部と、
前記複数の重み係数のうち、前記評価関数に含まれる複数の状態変数を分割した複数の状態変数群から選択された状態変数群に関する、重み係数群の値を記憶する第2記憶部と、
前記第2記憶部から読み出した前記重み係数群の値を用いて、前記状態変数群の各状態変数の値を変化させたときの前記評価関数の値の変化量を計算する処理と、前記変化量と温度値に基づいて、前記状態変数群の何れかの状態変数の値を変化させる処理とを含む更新処理を繰り返すことで、前記組合せ最適化問題の解を探索する探索部と、
マルコフ連鎖モンテカルロ法を用いて前記解の探索を行う場合に、前記状態変数群の値が維持される試行回数である多重度を、前記変化量と前記温度値に基づいて計算し、前記多重度の積算値が所定の閾値を超えた場合、前記複数の状態変数群から選択した他の状態変数群に関する前記重み係数群の値を用いた前記更新処理を、前記探索部に実行させる処理部と、
を有するデータ処理装置。
【請求項2】
前記探索部は、前記更新処理ごとの前記複数の状態変数の値を出力し、前記処理部は、前記複数の状態変数の値ごとの前記多重度を出力する、請求項1に記載のデータ処理装置。
【請求項3】
前記処理部は、
前記変化量と前記温度値に基づいて、前記状態変数群の各状態変数について、値の変化を受け入れる確率を計算し、
前記確率の総和を、前記状態変数群に含まれる状態変数の数で割ることで脱出確率を計算し、
前記脱出確率と乱数値に基づいて前記多重度を計算する、
請求項1に記載のデータ処理装置。
【請求項4】
前記処理部は、シフト演算により前記確率を計算する請求項3に記載のデータ処理装置。
【請求項5】
前記第2記憶部は、第1記憶領域及び第2記憶領域を有し、
前記第1記憶領域に記憶されている前記重み係数群の値を用いて、前記探索部が前記更新処理を行っている間に、前記他の状態変数群に関する前記重み係数群の値が前記第1記憶部から読み出されて、前記第2記憶領域に書き込まれる、
請求項1に記載のデータ処理装置。
【請求項6】
組合せ最適化問題を変換した評価関数に含まれる複数の重み係数の値を第1記憶部に記憶し、
前記複数の重み係数のうち、前記評価関数に含まれる複数の状態変数を分割した複数の状態変数群から選択された状態変数群に関する、重み係数群の値を第2記憶部に記憶し、
前記第2記憶部から読み出した前記重み係数群の値を用いて、前記状態変数群の各状態変数の値を変化させたときの前記評価関数の値の変化量を計算する処理と、前記変化量と温度値に基づいて、前記状態変数群の何れかの状態変数の値を変化させる処理とを含む更新処理を繰り返すことで、前記組合せ最適化問題の解を探索し、
マルコフ連鎖モンテカルロ法を用いて前記解の探索を行う場合に、前記状態変数群の値が維持される試行回数である多重度を、前記変化量と前記温度値に基づいて計算し、
前記多重度の積算値が所定の閾値を超えた場合、前記複数の状態変数群から選択した他の状態変数群に関する前記重み係数群の値を用いた前記更新処理を実行する、
処理をコンピュータに実行させるプログラム。
【請求項7】
第1記憶部が、組合せ最適化問題を変換した評価関数に含まれる複数の重み係数の値を記憶し、
第2記憶部が、前記複数の重み係数のうち、前記評価関数に含まれる複数の状態変数を分割した複数の状態変数群から選択された状態変数群に関する、重み係数群の値を記憶し、
探索部が、前記第2記憶部から読み出した前記重み係数群の値を用いて、前記状態変数群の各状態変数の値を変化させたときの前記評価関数の値の変化量を計算する処理と、前記変化量と温度値に基づいて、前記状態変数群の何れかの状態変数の値を変化させる処理とを含む更新処理を繰り返すことで、前記組合せ最適化問題の解を探索し、
処理部が、マルコフ連鎖モンテカルロ法を用いて前記解の探索を行う場合に、前記状態変数群の値が維持される試行回数である多重度を、前記変化量と前記温度値に基づいて計算し、前記多重度の積算値が所定の閾値を超えた場合、前記複数の状態変数群から選択した他の状態変数群に関する前記重み係数群の値を用いた前記更新処理を、前記探索部に実行させる、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
【背景技術】
【0002】
組合せ最適化問題の解を探索する際に、組合せ最適化問題を、磁性体のスピンの振る舞いを表すイジングモデルに変換する手法がある。そして、マルコフ連鎖モンテカルロ法により、イジング型の評価関数の値(イジングモデルのエネルギーに相当する)が極小になるイジングモデルの状態の探索が行われる。評価関数の極小値のうちの最小値になる状態が最適解となる。なお、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。
【0003】
以下、マルコフ連鎖モンテカルロ法を、MCMC(Markov-Chain Monte Carlo)法と略す。また、MCMC法による処理をMCMC処理と呼ぶ場合もある。MCMC処理では、たとえば、メトロポリス法またはギブス法で規定される状態遷移の受け入れ確率で、その状態遷移が受け入れられる。MCMC法の一種として、疑似焼き鈍し法やレプリカ交換法がある。
【0004】
なお、MCMC処理の各試行において状態遷移が棄却され続けると状態が遷移しなくなる。これを防止するため、試行ごとに異なる状態に遷移するサンプル列を発生させる手法が提案されている(たとえば、特許文献1、非特許文献1参照)。このような手法は、リジェクションフリー試行とも呼ばれる。
【0005】
ところで、問題規模(状態変数の数(イジングモデルのスピン数に相当))が大きくなると、問題を定義する係数(各状態変数間の重み係数)の数が増大する。これにより、組合せ最適化問題を計算するデータ処理装置において、高速であるが比較的容量の小さいメモリ(たとえば、オンチップメモリ)に全ての重み係数を保持できなくなる場合がある。この場合、比較的容量の大きいメモリに重み係数が保持されることになるが、アクセスに時間がかかり、処理速度が大幅に制限される可能性がある。
【0006】
そこで従来、重み係数がメモリに記憶可能なサイズになるように、組合せ最適化問題を複数の部分問題に分割し、部分問題ごとにリジェクションフリー試行による解探索を行う手法が提案されている(たとえば、非特許文献2参照)。部分問題の計算は、全状態変数を複数の状態変数群に分割し、各状態変数の範囲内で近傍状態(たとえば、ハミング距離が1ビットの状態)への状態遷移を発生させることで、解探索を行うものである。このため、部分問題の計算は、部分近傍探索とも呼ばれる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2020-135727号公報
【非特許文献】
【0008】
【非特許文献1】J.S. Rosenthal, “Jump Markov Chains and Rejection-Free Metropolis Algorithms”, Computational Statistics 36.4, pp.2789-2811, 2021
【非特許文献2】Sigeng Chen et al, “Optimization via Rejection-Free Partial Neighbor Search”, arXiv:2205.02083, Apr. 15, 2022
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、リジェクションフリー試行により部分近傍探索を行う場合、部分近傍(分割した各状態変数群)ごとに解の探索範囲に偏りが生じる可能性がある。この場合、効率的に解探索が行えなくなる可能性があった。
【0010】
1つの側面では、本発明は、解探索を効率的に行えるデータ処理装置、プログラム及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
1つの実施態様では、組合せ最適化問題を変換した評価関数に含まれる複数の重み係数の値を記憶する第1記憶部と、前記複数の重み係数のうち、前記評価関数に含まれる複数の状態変数を分割した複数の状態変数群から選択された状態変数群に関する、重み係数群の値を記憶する第2記憶部と、前記第2記憶部から読み出した前記重み係数群の値を用いて、前記状態変数群の各状態変数の値を変化させたときの前記評価関数の値の変化量を計算する処理と、前記変化量と温度値に基づいて、前記状態変数群の何れかの状態変数の値を変化させる処理とを含む更新処理を繰り返すことで、前記組合せ最適化問題の解を探索する探索部と、マルコフ連鎖モンテカルロ法を用いて前記解の探索を行う場合に、前記状態変数群の値が維持される試行回数である多重度を、前記変化量と前記温度値に基づいて計算し、前記多重度の積算値が所定の閾値を超えた場合、前記複数の状態変数群から選択した他の状態変数群に関する前記重み係数群の値を用いた前記更新処理を、前記探索部に実行させる処理部と、を有するデータ処理装置が提供される。
【0012】
また、1つの実施態様ではプログラムが提供される。
また、1つの実施態様ではデータ処理方法が提供される。
【発明の効果】
【0013】
1つの側面では、本発明は、解探索が効率的に行うことが可能となる。
【図面の簡単な説明】
【0014】
図1】本実施の形態のデータ処理装置の一例を示す図である。
図2】データ処理方法の概略の流れを示すフローチャートである。
図3】部分近傍の解探索とサンプリングの処理手順の一例を示すフローチャートである。
図4】リジェクションフリー試行により値を変化させる状態変数を選択する回路例を示す図である。
図5】エネルギーの更新を説明する図である。
図6】処理部の一例を示す図である。
図7】脱出確率計算回路の一例を示す図である。
図8】部分近傍の切替方法の一例を示す図である。
図9】連続変数を用いる場合の部分近傍の解探索の処理手順の一例を示すフローチャートである。
図10】データ処理装置のハードウェア例を示す図である。
【発明を実施するための形態】
【0015】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
図1は、本実施の形態のデータ処理装置の一例を示す図である。
データ処理装置10は、組合せ最適化問題に対する解を、疑似焼き鈍し法、レプリカ交換法などを利用したリジェクションフリー試行により探索し、探索した解を出力する。
【0016】
組合せ最適化問題は、たとえば、イジング型の評価関数に変換される。評価関数は、目的関数やエネルギー関数などと呼ばれることもある。評価関数は、複数の状態変数と複数の重み係数を含む。イジング型の評価関数では、状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと表記されてもよい。組合せ最適化問題の解は、複数の状態変数の値により表される。評価関数の値を最小化する解が、組合せ最適化問題の最適解に対応する。以下、評価関数の値を、エネルギーという。
【0017】
イジング型の評価関数は、式(1)で表せる。
【0018】
【数1】
【0019】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。式(1)は、QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化された評価関数である。なお、エネルギーを最大化する問題の場合には、評価関数の符号を逆にすればよい。
【0020】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xは、i番目の状態変数である。xは、j番目の状態変数である。以下では、状態変数の数は、n個であるものとする。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。状態変数の数がn個の場合、Wijの数はn×n個である。
【0021】
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。bは、i番目の状態変数に対するバイアスを示している。
状態変数xの値が変化して1-xとなると、状態変数xの変化量は、Δx=(1-x)-x=1-2xと表せる。したがって、評価関数E(x)に対して、状態変数xの変化に伴うエネルギーの変化量(ΔE)は、以下の式(2)で表せる。
【0022】
【数2】
【0023】
は局所場(LF:Local Field)と呼ばれる。xの値が変化したときのhの変化量は、Δh (j)=WijΔxと表される。
解の探索において、エネルギーの変化量がΔEとなる状態遷移、すなわち、状態変数xの値の変化を受け入れるか否かを決定するためにメトロポリス法やギブス法が用いられる。具体的には、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移が確率的に受け入れられる。たとえば、ΔEを生じさせる状態変数の値の変化を受け入れる受入確率Aは、式(3)で表せる。
【0024】
【数3】
【0025】
βは温度を表すパラメータであるT(T>0)の逆数(β=1/T)であり、逆温度と呼ばれる。以下、βやTを温度値と呼ぶこともある。min演算子は、引数のうちの最小値を取ることを示す。式(3)の右辺上側はメトロポリス法に相当する。式(3)の右辺下側はギブス法に相当する。
【0026】
しかし、全ての近傍を探索するには、ΔE~ΔEの計算のためにn×n個のWijを用いることになる。問題規模が増大すると、高速であるが比較的容量の小さいメモリ(たとえば、オンチップメモリ)に全てのWijを保持できなくなる場合がある。この場合、比較的容量の大きいメモリ(たとえば、DRAM(Dynamic Random Access Memory))にWijを記憶することになる。しかし、たとえば、DRAMのアクセス時間はオンチップRAM(Random Access Memory)に比べて2桁程度大きいため、処理速度が大幅に制限される。
【0027】
そこで、本実施の形態のデータ処理装置10は、n個の状態変数を分割した、複数の状態変数群を用いて近傍探索を行う。以下、複数の状態変数群のそれぞれを部分近傍と呼ぶ。
【0028】
データ処理装置10は、第1記憶部11、第2記憶部12、探索部13、処理部14を有する。
第1記憶部11は、組合せ最適化問題を変換した評価関数に含まれる複数の重み係数の値を記憶する。図1の例では、第1記憶部11は、複数の部分近傍のそれぞれに関する重み係数群ごとに分けて、複数の重み係数を記憶している。
【0029】
第1記憶部11は、たとえば、後述の第2記憶部12よりも低速だが、第2記憶部12よりも容量が大きい記憶装置である。このような記憶装置として、たとえば、DRAMなどの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置などがある。
【0030】
複数の部分近傍の生成は、各部分近傍に関する重み係数群が、第2記憶部12に記憶できるように行われる。複数の部分近傍の生成は、第1記憶部11または別の記憶装置に記憶されている問題情報(n個の状態変数のインデックスやn×n個のWijを含む)に基づいて、データ処理装置10の処理部14が行ってもよい。また、複数の部分近傍の生成は、データ処理装置10の外部の装置が行ってもよい。
【0031】
複数の部分近傍は、たとえば、以下の制約を満たすように生成される。(1)各部分近傍はx~xの値で表される状態空間のうちの一部(サブセット)の状態空間を表すものである。(2)各部分近傍は全体近傍の一部である。(3)状態Yが状態Xの部分近傍ならば、XはYの部分近傍でもある。(4)部分近傍内での遷移確率は全体近傍での遷移確率に比例し、部分近傍外への遷移確率は0である。遷移確率は、提案確率と式(2)の受入確率Aとの積で表される。提案確率は、状態が、状態Xから状態Yに遷移する場合Q(X,Y)と表される。本実施の形態の例では、部分近傍の要素数がm個で、部分近傍内での状態遷移が一様にランダムに行われるものとする。この場合、Q(X,Y)=1/mと表すことができる。
【0032】
なお、(3)の制約は、状態Yが状態Xから複数回の部分近傍への状態遷移を経由して得られる場合にも、状態Xが状態Yの部分近傍である、という制約であってもよい。
上記の制約を満たすように、たとえば、単純にx~xをインデックス順に分割することで、複数の部分近傍を生成することができる。また、各部分近傍に含まれる状態変数の数がおおよそ等しくなるように、ランダムにインデックスを選択してx~xを分割することで、複数の部分近傍を生成することもできる。ここで各部分近傍に重複するインデックスがあってもよい。また各部分近傍で全インデックスをカバーしていることが望ましい。なお、複数の部分近傍のそれぞれについて解探索が行われた後、またはそれが複数回繰り返された後に、再度ランダムにインデックスを選択して、複数の部分近傍を生成し、解探索が行われるようにしてもよい。
【0033】
ただし、複数の部分近傍を生成する方法は、上記のような方法に限られない。たとえば2つのインデックスi,jの全組合せ(1,1),(1,2),…(1,n),(2,3),(2,4),…(2,n),…(n-1,n)を全近傍とし、それを複数の部分近傍に分けるようにしてもよい。
【0034】
図1には、n個の状態変数が、I個の部分近傍(N~N)に分割された例が示されている。N~Nは、1ビット反転の近傍を例にとると、反転する状態変数のインデックスの集合で定義できる。たとえば、N~Nは、N={j (1),j (1),…,j (1)}、N={j (2),j (2),…,j (2)},…,N={j (I),j (I),…,j (I)}などと定義できる。j (i)は、Nに含まれるm個の状態変数のインデックスのうち、i番目のインデックスを表す。
【0035】
なお、図1に示されているように、異なる部分近傍が同じインデックスを含んでいてもよい。つまり、異なる部分近傍の間で、含まれるインデックスの範囲が重なっていてもよい。
【0036】
上記のようにN~Nが生成された場合、第1記憶部11には、各部分近傍に関する重み変数(Wij)群が記憶される。たとえば、NのWij群は、n個の状態変数のうち、Nに含まれる状態変数のそれぞれと、他の状態変数との間の重み係数を含む。NのWij群は、n個の状態変数のうち、Nに含まれる状態変数のそれぞれと、他の状態変数との間の重み係数を含む。NのWij群は、n個の状態変数のうち、Nに含まれる状態変数のそれぞれと、他の状態変数との間の重み係数を含む。
【0037】
なお、第1記憶部11は、データ処理装置10に、組合せ最適化問題に対する解を探索させるプログラムなど各種のプログラムや、各種のデータを記憶していてもよい。
第2記憶部12は、評価関数に含まれる複数の重み係数のうち、複数の部分近傍から選択された部分近傍に関する重み係数群を記憶する。第2記憶部12は、たとえば、前述の第1記憶部11よりも高速だが、第1記憶部11よりも容量が小さい記憶装置である。このような記憶装置として、たとえば、SRAM(Static Random Access Memory)などの電子回路である揮発性の記憶装置などがある。第2記憶部12は、レジスタなどの電子回路を含んでいてもよい。
【0038】
探索部13は、部分近傍(前述の部分問題に対応する)ごとに解探索を行う。探索部13は、第2記憶部12に記憶されている重み係数群を読み出す。そして、探索部13は、読み出した重み係数群を用いて、選択された部分近傍の各状態変数の値を変化させたときの評価関数の値の変化量(ΔE)を計算する。ΔEは、たとえば、式(2)により計算できる。式(2)に含まれる各状態変数の値、局所場、エネルギーなどは、探索部13内の図示しない記憶部(たとえば、レジスタなどの記憶回路)に記憶される。探索部13は、選択された部分近傍の各状態変数についてのΔEを、並列に計算できる。探索部13は、各状態変数についてのΔEと温度値に基づいて、部分近傍の何れかの状態変数の値を変化させる。
【0039】
探索部13は、リジェクションフリー試行により解探索を行う。リジェクションフリー試行では、式(3)に示した受入確率Aに基づく以下の式(4)で表せる確率に基づいて、部分近傍に含まれる何れか1つの状態変数が選択され、その値が変化する。
【0040】
【数4】
【0041】
式(4)において、mは選択された状態変数群に含まれる状態変数の数である。
式(4)の確率による選択は、以下の式(5)で表せるインデックス=jの状態変数を選択することに相当する。
【0042】
【数5】
【0043】
argminは、引数が最小となるiを示す。
探索部13は、状態変数の値を変化させた場合、レジスタなどに記憶されている局所場やエネルギーを更新する。探索部13は、このようなΔEを計算する処理と、状態変数の値を変化させる処理とを含む更新処理(局所場やエネルギーの更新を含む)を、処理部14が選択する各部分近傍について繰り返すことで、組合せ最適化問題の解の探索を行う。
【0044】
以上のような探索部13は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を用いて実現できる。また、探索部13は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのハードウェアであるプロセッサがプログラムを実行することによるソフトウェア処理にて実現することもできる。
【0045】
処理部14は、リジェクションフリー試行ではなく通常のMCMC法を用いて解探索を行う場合に状態が維持される試行回数である多重度を、選択された状態変数群の各状態変数についてのΔEと温度値に基づいて計算する。
【0046】
通常のMCMC法を用いて解探索を行う場合に得られる状態の時系列は、たとえば、{X}={a,b,b,b,a,a,c,c,c,c,d,d,…}のように表せる。以下、このような通常のMCMC法を用いて解探索を行う場合に得られる状態の時系列をオリジナルチェーンと呼ぶ。
【0047】
通常のMCMC法では状態遷移が棄却される場合があるため、連続する複数回の試行において同じ状態が維持されることがある。上記のようなオリジナルチェーン{X}では、状態aの後、状態bが試行回数=3回分維持され、状態aが試行回数=2回分維持され、状態cが試行回数=4回分維持され、状態dが試行回数=2回分維持されている。このような{X}の多重度の時系列は、{M}={1,3,2,4,2,…}と表せる。
【0048】
一方、リジェクションフリー試行では同じ状態が繰り返されない。そのため、通常のMCMC法において、上記のような状態の時系列{X}が得られる場合、リジェクションフリー試行における状態の時系列は、{J}={a,b,a,c,d,…}となる。
【0049】
以上のことから、多重度は、リジェクションフリー試行による解探索で得られる1サンプル当たりの、オリジナルチェーンのサンプル数ともいえる。
処理部14は、多重度(M)を、以下の式(6)に基づいて計算する。
【0050】
【数6】
【0051】
式(6)において、床関数のパラメータであるrとPのうち、rは0から1の間の一様乱数の値である。Pは1回の試行で状態が変化する確率を表し脱出確率と呼ばれる。多重度Mは、Pの幾何分布にしたがう確率変数であり、それにしたがう乱数を式(6)で発生することができる。Pは以下の式(7)で表せる。
【0052】
【数7】
【0053】
式(7)において、Aは、前述の式(3)で表される。
処理部14は、多重度の積算値が所定の閾値を超えた場合に、複数の部分近傍から選択した他の部分近傍に関する重み係数群を用いた更新処理を、探索部13に実行させる。たとえば、処理部14は、多重度の積算値が所定の閾値を超えた場合、複数の部分近傍から未選択の部分近傍を選択し、その部分近傍に関する重み係数群の値を第1記憶部11から読み出して、第2記憶部12に記憶する(書き込む)。たとえば、処理部14は、元の重み係数群の値を、新たに選択した部分近傍に関する重み係数群の値で上書きする。
【0054】
なお、処理部14は、探索部13においてある部分近傍に関する重み係数群の値を用いた更新処理が行われている間に、他の部分近傍を予め選択し、その部分近傍に関する重み係数群の値を第2記憶部12に記憶してもよい(後述の図8参照)。
【0055】
このように、処理部14はデータ処理装置10の各部を制御するコントローラの機能を有している。
処理部14は、たとえば、ASICやFPGAなどの電子回路を用いて実現できる。また、処理部14は、CPU、GPU、DSPなどのハードウェアであるプロセッサがプログラムを実行することによるソフトウェア処理にて実現することもできる。
【0056】
図1には、上記のようなデータ処理装置10による解探索例が示されている。
まず、探索部13は、Nの範囲内で、リジェクションフリー試行による解探索を行う。図1の例では、状態Xから開始して、状態X,X,…,Xの順で状態遷移が生じている。
【0057】
リジェクションフリー試行による解探索では、1試行あたりこのような状態遷移が生じるが、前述のように通常のMCMC法による解探索では、棄却が生じるため同じ状態が繰り返される場合がある。図1の例では、状態Xが3試行回数分繰り返され、状態Xが6試行回数分繰り返され、状態Xが3試行回数分繰り返されている。つまり、状態Xの多重度(M (1))は3、状態Xの多重度(M (1))は6、状態Xの多重度(M (1))は3である。
【0058】
処理部14は、前述の式(6)に基づいて上記の多重度を計算するとともに、その積算値が所定の閾値を超えるか否かを判定する。図1の例では、状態Xにおける多重度が3に達した場合に、積算値が閾値(L)を超えている。このため、処理部14は、他の部分近傍(図1の例ではN)を選択して、その部分近傍に関する重み係数群の値(NのWij群の値)を第1記憶部11から読み出して、第2記憶部12に記憶する。
【0059】
の範囲内でのリジェクションフリー試行による解探索では、状態Xから開始される。処理部14は、再び多重度の計算と、積算値が閾値を超えるか否かの判定を繰り返す。図1の例では、Nの範囲内でのxの多重度がM (2)と表されている。
【0060】
以上のように、各部分近傍における解探索において、多重度の積算値が閾値を超えた場合に、次の部分近傍の解探索に移ることで、部分近傍ごとに解の探索範囲に偏りが生じることが抑制される。これにより、組合せ最適化問題の解探索を効率的に行うことができる。
【0061】
なお、データ処理装置10は、サンプリング装置として機能することもできる。
通常のMCMC法では、平衡状態における各状態の占有確率を示す確率分布は、目標分布(たとえば、ボルツマン分布)となる。そのため、状態遷移を繰り返す過程で得られた状態または状態に基づいた値をサンプルとして出力することで、目標分布にしたがうサンプルが得られる。発生したサンプルは、たとえば、機械学習などでの期待値の計算に用いられる。
【0062】
データ処理装置10において、探索部13は更新処理ごとの(リジェクションフリー試行による試行ごとの)、複数の状態変数の値を、たとえば、サンプルとして出力する。また、処理部14は、複数の状態変数の値ごと(状態ごと)の多重度Mを出力する。上記の多重度Mによりサンプルに重み付けを行うことで目標分布を得ることができる。データ処理装置10をサンプリング装置として、機能させた場合にも、上記のように探索範囲の偏りを抑制できることから、正確なサンプリングが可能になる。
【0063】
次に、データ処理装置10によるデータ処理方法の一例の処理の流れを、フローチャートを用いて説明する。
図2は、データ処理方法の概略の流れを示すフローチャートである。
【0064】
まず、組合せ最適化問題の問題情報に基づいて、前述の方法により部分近傍が生成される(ステップS10)。複数の部分近傍の生成は、処理部14が行ってもよいし、データ処理装置10の外部の装置が行ってもよい。ステップS10の処理では、さらに、評価関数に含まれる複数の重み係数の値が第1記憶部11に記憶される。
【0065】
次に、処理部14は、解探索の対象とする部分近傍を選択し(ステップS11)、選択した部分近傍に関する重み係数群の値を第2記憶部12に記憶する(ステップS12)。
探索部13は、第2記憶部12に記載されている重み係数群の値を用いて部分近傍の範囲内での解探索を行う(ステップS13)。また、ステップS13の処理では、処理部14は、多重度Mの計算を行う。
【0066】
処理部14は、多重度Mの積算値が所定の閾値(前述の例ではL)を超えたか否かを判定する(ステップS14)。処理部14は、積算値が閾値を超えていないと判定した場合、ステップS13の処理を繰り返す。
【0067】
処理部14は、積算値が閾値を超えたと判定した場合、未選択の部分近傍があるか否かを判定する(ステップS15)。処理部14は、未選択の部分近傍があると判定した場合、ステップS16の処理を行い、未選択の部分近傍がないと判定した場合、ステップS18の処理を行う。
【0068】
ステップS16の処理では、処理部14は、未選択の他の部分近傍を選択する。そして、処理部14は、選択した他の部分近傍に関する重み係数群の値を第2記憶部12に記憶する(ステップS17)。その後、ステップS13からの処理が繰り返される。
【0069】
ステップS18の処理では、処理部14は、解探索の終了条件が満たされているか否かを判定する。解探索の終了条件として、たとえば、試行回数が所定の回数に達したか否か、疑似焼き鈍し法が行われる場合、温度値が最終温度値に達したか否か、などの条件を用いることができる。処理部14は、終了条件が満たされていないと判定した場合、ステップS11からの処理を繰り返す。
【0070】
たとえば、図1に示したような部分近傍Nが選択され、解探索が繰り返される。なお、終了条件が満たされていないと判定された場合、ステップS10からの処理が繰り返されるようにしてもよい。その場合、たとえば、処理部14は、前回の方法とは異なる方法で複数の部分近傍を生成してもよい。
【0071】
処理部14は、終了条件が満たされたと判定した場合、計算結果を出力し(ステップS19)、処理を終了する。計算結果は、たとえば、更新処理で得られたエネルギーのうち、最低のエネルギーが得られたときの状態(x~xの値)である。
【0072】
次に、部分近傍の解探索とサンプリングについての、より具体的な処理の手順を説明する。
図3は、部分近傍の解探索とサンプリングの処理手順の一例を示すフローチャートである。
【0073】
なお、疑似焼き鈍し法が行われる場合、以下の処理は、たとえば、温度値であるTを、開始値から終了値まで、所定の温度変更スケジュールにしたがって、徐々に小さくしながら行われる。たとえば、一定の試行回数ごとに、Tに1より小さい値を乗じることで、Tを小さくしていくことができる。逆温度βを温度値として用いる場合は、徐々に大きくしながら以下の処理が行われる。
【0074】
レプリカ交換法が行われる場合、探索部13は、それぞれ異なる温度値が設定された複数のレプリカ回路を用いる。各レプリカ回路ではそれぞれ同じ部分近傍を用いて解探索が行われる。そして、各レプリカ回路において、以下の処理が行われる。処理部14は、試行が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部14は、複数のレプリカ回路のうち2つをランダムに選択して、選択された2つのレプリカ回路の間で、レプリカ回路間のエネルギー差や温度値の差に基づいた所定の交換確率で、温度値または状態を交換する。
【0075】
図3に示されているように、まず、処理部14は、初期化処理を行う(ステップS20)。初期化処理では、エネルギーや局所場の初期値の設定や、前述の閾値(L)、部分近傍の総数(以下の例ではKとする)、解探索の終了条件(以下の例では、試行回数の上限値Itrである)などの設定が行われる。さらに、疑似焼き鈍し法が行われる場合、たとえば、T(またはβ)の開始値や終了値、所定の温度変更周期ごとにT(またはβ)に乗じる値などの設定が行われる。レプリカ交換法が行われる場合、各レプリカ回路への温度値の設定などが行われる。
【0076】
そして処理部14は、部分近傍のインデックスであるkに1を代入する(ステップS21)。この処理は、k=1の部分近傍を選択することに相当する。
次に、処理部14は、変数Lに前述の閾値であるLを代入する(ステップS22)。その後、探索部13によるk=1の部分近傍におけるΔEの計算と、処理部14による多重度Mの計算が行われる(ステップS23)。このステップS23の処理では、探索部13は、前述のリジェクションフリー試行により値を変化させる状態変数を選択してよいが、値の変化(状態の更新)は、まだ行わない。
【0077】
処理部14は、M≦Lであるか否かを判定する(ステップS24)。ステップS24の処理は、図2に示した、多重度Mの積算値が閾値を超えているか否かを判定するステップS14の処理に対応している。処理部14は、M≦Lであると判定した場合、ステップS25の処理を行い、M≦Lではないと判定した場合、ステップS27の処理を行う。
【0078】
ステップS25の処理では、処理部14は、LにL-Mを代入する。その後、処理部14は、探索部13に、ステップS23の処理で計算されたΔEと温度値に基づいて、状態を更新させる(ステップS26)。状態の更新は、前述のリジェクションフリー試行により選択された、部分近傍の何れかの状態変数の値を変化させることで行われる。状態の更新に伴って、局所場やエネルギーも更新される。また、探索部13は、更新されたエネルギーがこれまでで最低である場合には、その値とそのエネルギーを示す状態を保持してもよい。
【0079】
なお、ステップS26の処理では、処理部14は、更新前の状態と、その状態の多重度として、計算した多重度Mとを出力(または図示しない記憶部に記憶)する。
ステップS26の処理後、ステップS23からの処理が繰り返される。
【0080】
ステップS27の処理では、処理部14は、サンプル(ここでは現在の状態と、その状態の多重度としてLを含む)を出力(または図示しない記憶部に記憶)する。ステップS27の処理では、状態の更新は行われない。
【0081】
ステップS27の処理後、処理部14は、k≧Kであるか否かを判定する(ステップS28)。処理部14は、k≧Kではないと判定した場合、ステップS29の処理を行い、k≧Kであると判定した場合、ステップS30の処理を行う。
【0082】
ステップS29の処理では、処理部14は、解探索の対象を次の部分近傍に切り替えるために、kにk+1を代入する。その後、ステップS22からの処理が繰り返される。
ステップS30の処理では、処理部14は、itr<Itrであるか否かを判定する。itrは、試行回数を表す変数であり、初期値は1である。処理部14は、itr<Itrであると判定した場合、ステップS31の処理を行い、itr<Itrではないと判定した場合、ステップS32の処理を行う。
【0083】
ステップS31の処理では、処理部14は、itrにitr+1を代入する。その後、ステップS21からの処理が繰り返される。ステップS32の処理は、図2に示したステップS19の処理と同様である。
【0084】
なお、図2図3に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
以上のような処理により、部分近傍ごとにリジェクションフリー試行により解探索を行う場合でも、部分近傍間で解の探索範囲に偏りが生じることを抑制できる。また、正確なサンプリングが可能となる。
【0085】
(リジェクションフリー試行により値を変化させる状態変数を選択する回路例)
図4は、リジェクションフリー試行により値を変化させる状態変数を選択する回路例を示す図である。
【0086】
探索部13は、リジェクションフリー試行により値を変化させる状態変数を選択するために、k計算回路13a1,13a2,…,13amと選択回路部13bを有する。
計算回路13a1~13amは、前述の式(5)に示したmax(0,ΔE)+Tln(-ln(r))を、kとして計算する。そして、k計算回路13a1~13amは、kとそのインデックス(i)とを出力する。たとえば、k計算回路13a1は、kとi=1を出力する。k計算回路13a2は、kとi=2を出力する。k計算回路13amは、kとi=mを出力する。
【0087】
選択回路部13bは、ツリー状に複数段、配置された複数の選択回路(選択回路13b1,13b2,13b3,13b4,13b5など)を有する。
複数の選択回路のそれぞれは、2つのkのうち、小さい方とそのインデックスを出力する。2つのkの値が等しい場合には、たとえば、インデックスが小さい方と、そのインデックスが出力される。最後段の選択回路13b5が出力するインデックス(j)が、式(5)のjであり、値を変化させる状態変数のインデックスである。
【0088】
(エネルギーの更新について)
図5は、エネルギーの更新を説明する図である。
探索部13は、図5に示すようなエネルギー更新回路13cを含む。エネルギー更新回路13cは、xの値が変化した場合、その変化量Δxと、xの局所場であるhに基づいて、エネルギーを更新する。具体的には、元のエネルギーEから、Δxを減じることで、エネルギーEを更新する。
【0089】
(処理部14の構成例)
次に、多重度Mを計算する処理部14の構成例を説明する。
図6は、処理部の一例を示す図である。
【0090】
処理部14は、脱出確率計算回路20、多重度計算回路21、一様乱数発生回路22、部分近傍切替判定回路23を有する。
脱出確率計算回路20は、探索部13が出力するΔE,ΔE,…,ΔEを受ける。そして、前述の式(7)で表される脱出確率Pを計算する。
【0091】
多重度計算回路21は、脱出確率計算回路20が計算したPと一様乱数rに基づいて、前述の式(6)で表される多重度Mを計算する。
一様乱数発生回路22は、0から1の間の一様乱数rを発生する。一様乱数発生回路22は、たとえば、メルセンヌツイスタ、LFSR(Linear Feedback Shift Register)などを用いて実現できる。
【0092】
部分近傍切替判定回路23は、多重度Mの積算値が閾値(図1の例ではL)を超えた場合、探索部13に解探索させる部分近傍を切り替える。
上記のようにPは、前述の式(7)で表されるが、式(7)は以下の式(8)のように展開できる。
【0093】
【数8】
【0094】
式(8)において、εは以下の式(9)で表せる。
【0095】
【数9】
【0096】
式(8)で表せるPは、以下のような脱出確率計算回路により計算できる。
図7は、脱出確率計算回路の一例を示す図である。
脱出確率計算回路20は、ε計算回路20a1,20a2,…,20am、A計算回路20b1,20b2,…,20bm、加算回路20c、レジスタ20d、乗算回路20eを有する。
【0097】
ε計算回路20a1~20amのそれぞれは、ΔEとβ(逆温度)に基づいて、式(9)で表されるεを計算する。たとえば、ε計算回路20a1はεを計算し、ε計算回路20a2はεを計算し、ε計算回路20amはεを計算する。
【0098】
計算回路20b1~20bmのそれぞれは、ΔEのエネルギー変化をもたらす状態変数の値の変化を受け入れる受入確率A(=exp(-ε))を計算する。たとえば、A計算回路20b1はexp(-ε)を計算し、A計算回路20b2はexp(-ε)を計算し、A計算回路20bmはexp(-ε)を計算する。
【0099】
加算回路20cは、exp(-ε)~exp(-ε)を加算する。
レジスタ20dは、クロック信号に同期して、加算回路20cが出力する加算結果を保持し、出力する。レジスタ20dは、リセット信号が入力された場合に、保持している内容を0に初期化する。
【0100】
乗算回路20eは、レジスタ20dが出力する値に1/mを乗じ、その結果得られる脱出確率Pを出力する。
なお、脱出確率の計算を、たとえば、2を底とする演算に変換することで、計算を高速に行えるようになる。このような演算を行うため、εを、以下の式(10)のように表せばよい。
【0101】
【数10】
【0102】
式(10)で表されるεは、式(9)で表されるεに、1/ln2=1.433を乗じた値である。式(10)で表されるεを用いた場合、脱出確率Pは、以下の式(11)で表せる。
【0103】
【数11】
【0104】
このような演算により脱出確率Pを計算することとすると、ε計算回路20a1~20amのそれぞれは、ΔEとβ(逆温度)に基づいて、式(10)で表されるεを計算する。そして、A計算回路20b1~20bmのそれぞれは、2の-ε乗を計算する。2の-ε乗は、シフトレジスタなどを用いたシフト演算により計算できる。このため、exp(-ε)を計算する場合よりも高速演算が可能となる。
【0105】
なお、εとして小数点2桁程度の小数表現を用いると、量子化誤差は十分小さくなる。
処理部14は、近似的に多重度Mを求めてもよい。たとえば、値が変化した場合に、-log(r)>βΔEを満たす状態変数の個数から多重度Mを近似的に求めてもよい(たとえば、特許文献1参照)。
【0106】
(部分近傍の切替方法)
図8は、部分近傍の切替方法の一例を示す図である。
図8の例では、第2記憶部12は、第1記憶領域12a、第2記憶領域12b、スイッチ12c,12dを有している。
【0107】
第1記憶領域12aは、たとえば、奇数のインデックスの部分近傍に関するWij群が記憶される記憶領域である。第2記憶領域12bは、たとえば、偶数のインデックスの部分近傍に関するWij群が記憶される記憶領域である。つまり、図8の例では、第2記憶部12は一度に2つの部分近傍に関するWij群を記憶できる。
【0108】
スイッチ12cは、処理部14から供給されるスイッチ制御信号に基づいて、第1記憶部11から読み出したWij群を、第1記憶領域12aに記憶するか第2記憶領域12bに記憶するかを切り替える。
【0109】
スイッチ12dは、処理部14から供給されるスイッチ制御信号に基づいて、第1記憶領域12aに記憶されているWij群と、第2記憶領域12bに記憶されているWij群の何れを探索部13に供給するかを切り替える。
【0110】
処理部14は、第1記憶領域12aに記憶されているWij群を使用した更新処理を探索部13にさせている場合、スイッチ12dにより第1記憶領域12aと探索部13とを接続させる。第1記憶領域12aに記憶されているWij群を使用した更新処理が行われている間、処理部14は、スイッチ12cにより第1記憶部11と第2記憶領域12bとを接続させる。そして、処理部14は、次に解探索される部分近傍に関するWij群を第1記憶部11から読み出し、第2記憶領域12bに書き込む。
【0111】
第1記憶領域12aに記憶されているWij群を使用した解探索が終了した場合、処理部14は、スイッチ12dを切り替え、第2記憶領域12bに記憶されているWij群を使用した更新処理を、探索部13に行わせる。
【0112】
このような構成によって、解探索を行う部分近傍を切り替えるときの、Wij群の読みこみ時間を隠蔽でき、より効率のよい解探索を行うことができる。
(連続変数の適用)
以上の説明では、状態変数は、0または1の値を取るバイナリ変数であるものとしたが、状態変数が連続変数であってもよい。
【0113】
バイナリ変数を用いた場合の状態遷移は、バイナリ変数の値を反転(Δx=1-2xを元のxに加算)することで発生する。これに対して、連続変数を用いた場合の状態遷移は、元のxに連続値の確率変数Δxを加算(あるいは減算)することで発生する。加算するか減算するかは、確率50%でランダムに選択される。
【0114】
探索部13は、部分近傍の解探索において、部分近傍に含まれる実数の各状態変数に対して、ある確率分布(たとえば、平均値=0の正規分布)にしたがう確率変数Δxを発生する。
【0115】
部分近傍の生成方法については、バイナリ変数を用いた場合と同様である。ただし、解探索時において、解探索を行う部分近傍を切り替えるたびに、探索部13は、部分近傍に対する確率変数Δxを発生しなおす。
【0116】
連続変数を用いた場合の評価関数は、以下の式(12)で表せる。
【0117】
【数12】
【0118】
式(12)においてλは、0より大きい値をもつ係数である。
状態変数xの値が変化してx+δΔxとなった場合のエネルギーEの変化量は、以下の式(13)で表せる。
【0119】
【数13】
【0120】
ここで、δはxごとに発生させる、確率50%で+1あるいは-1となる乱数である。Δxの値は、ある部分近傍についての解探索を行っている間は、一定で変化しない。式(13)において、局所場(h)は以下の式(14)で表せる。
【0121】
【数14】
【0122】
式(14)において、Cijは以下の式(15)で表せる。
【0123】
【数15】
【0124】
なお、式(15)において、集合Eは非ゼロの重み係数wijをもつ係数インデックスの集合である。
式(12)と式(14)は、エネルギーの初期値と局所場の初期値の計算に用いられ、状態変数の値が変化した場合、エネルギーと局所場は、バイナリ変数を用いた場合と同様に差分計算により更新される。また、状態変数xの変化が選択されて、x→x+δΔxと変化したとき、Δxの値はそのまま維持され、δの値がランダムに発生しなおされる。
【0125】
の値が、x+δΔxに変化した場合、エネルギーEは、元のエネルギーEからδΔxを減じることで更新される。局所場hは、元のhにCijδΔxを加算することで更新される。このとき変化したxに関しては乱数δが発生しなおされるため、hの値はδの値の変化による差分更新が行われる。この更新は、元のhからλε/2を減ずることで更新される。εはδΔxの変化量であり、以下の式(16)で表せる。
【0126】
【数16】
【0127】
式(16)において、δ (old)は、xの値を変化させる直前におけるδの値であり、δは発生しなおされた新しい値である。
なお、連続変数が用いられる場合、解探索を行う部分近傍が、切り替えられたときの局所場は、元のhからλε/2を減ずることで更新される。εは使用される部分近傍に対する確率変数δΔxの変化量であり、以下の式(17)で表せる。
【0128】
【数17】
【0129】
式(17)において、(δΔx(old)は部分近傍を切り替える直前の状態におけるxについての、δΔxの値である。
図9は、連続変数を用いる場合の部分近傍の解探索の処理手順の一例を示すフローチャートである。
【0130】
連続変数を用いた場合の処理手順は、バイナリ変数を用いた場合の処理手順(図3)とほぼ同様である。ステップS40,S41の処理は、図3に示したステップS20,S21の処理と同様である。
【0131】
ステップS41の処理後、連続変数を用いた場合、前述のように、探索部13は、部分近傍に含まれる各状態変数に対して、確率変数Δxを発生する(ステップS42)。以降のステップS44~S53の処理は、図3に示したステップS22~S32の処理と同様である。
【0132】
ただし、解探索の対象を次の部分近傍に切り替えるために、kにk+1を代入処理(ステップS50)の処理後は、ステップS42からの処理が繰り返される。また、ステップS47の状態更新の際、上記のようにxの値が、x+δΔxに変化した場合、エネルギーEは、元のエネルギーEからδΔxを減じることで更新される。局所場hは、元のhにCijδΔxを加算することで更新される。
【0133】
以上のように、本実施の形態の手法は、状態変数として連続変数を用いた場合にも適用可能である。
(データ処理装置のハードウェア例)
図10は、データ処理装置のハードウェア例を示す図である。
【0134】
データ処理装置30は、たとえば、コンピュータであり、プロセッサ31、RAM32、HDD33、GPU34、入力インタフェース35、媒体リーダ36及び通信インタフェース37、アクセラレータカード38を有する。上記ユニットは、バスに接続されている。
【0135】
プロセッサ31は、たとえば、図1の処理部14として機能する。プロセッサ31は、プログラムの命令を実行する演算回路やキャッシュメモリなどの記憶回路を含む、GPUやCPUなどのプロセッサである。プロセッサ31は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM32にロードし、プログラムを実行する。なお、プロセッサ31は、複数のプロセッサコアを備えてもよい。また、データ処理装置30は複数のプロセッサを備えてもよい。なお、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0136】
RAM32は、プロセッサ31が実行するプログラムやプロセッサ31が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置30は、RAM32以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0137】
HDD33は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、組合せ最適化問題の解を探索する処理をデータ処理装置30に実行させるプログラムが含まれる。なお、データ処理装置30は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0138】
GPU34は、プロセッサ31からの命令にしたがって、データ処理装置30に接続されたディスプレイ34aに画像(たとえば、組合せ最適化問題の計算結果に関する画像)を出力する。ディスプレイ34aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0139】
入力インタフェース35は、データ処理装置30に接続された入力デバイス35aから入力信号を取得し、プロセッサ31に出力する。入力デバイス35aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置30に、複数の種類の入力デバイスが接続されていてもよい。
【0140】
媒体リーダ36は、記録媒体36aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体36aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0141】
媒体リーダ36は、たとえば、記録媒体36aから読み取ったプログラムやデータを、RAM32やHDD33などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、プロセッサ31によって実行される。なお、記録媒体36aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体36aやHDD33を、コンピュータ読み取り可能な記録媒体ということがある。
【0142】
通信インタフェース37は、ネットワーク37aに接続され、ネットワーク37aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース37は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0143】
アクセラレータカード38は、組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード38は、FPGA38a及びDRAM38bを有する。
【0144】
FPGA38aは、たとえば、図1に示した第2記憶部12と探索部13の機能を実現する。
DRAM38bは、たとえば、図1に示した第1記憶部11の機能を実現する。
【0145】
なお、FPGA38aが図1に示した処理部14の機能を実現してもよい。また、アクセラレータカード38は、複数あってもよい。
図1に示したデータ処理装置10を実現するハードウェア構成は、図10に示したような構成に限られない。たとえば、複数コアを有するGPUなどのプロセッサとプロセッサ内のメモリにより、第2記憶部12、探索部13、処理部14の機能が実現されるようにしてもよい。
【0146】
本実施の形態のデータ処理装置10,30が行う処理内容(たとえば、図2図3図9など)は、データ処理装置10,30にプログラムを実行させることでソフトウェアにて実現することもできる。
【0147】
プログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)及びHDDが含まれる。光ディスクには、CD(Compact Disc)、CD-R(Recordable)/RW(Rewritable)、DVD(Digital Versatile Disc)及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体にプログラムをコピーして実行してもよい。
【0148】
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0149】
10 データ処理装置
11 第1記憶部
12 第2記憶部
13 探索部
14 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10