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

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

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

特許7239826サンプリング装置およびサンプリング方法
<>
  • 特許-サンプリング装置およびサンプリング方法 図1
  • 特許-サンプリング装置およびサンプリング方法 図2
  • 特許-サンプリング装置およびサンプリング方法 図3
  • 特許-サンプリング装置およびサンプリング方法 図4
  • 特許-サンプリング装置およびサンプリング方法 図5
  • 特許-サンプリング装置およびサンプリング方法 図6
  • 特許-サンプリング装置およびサンプリング方法 図7
  • 特許-サンプリング装置およびサンプリング方法 図8
  • 特許-サンプリング装置およびサンプリング方法 図9
  • 特許-サンプリング装置およびサンプリング方法 図10
  • 特許-サンプリング装置およびサンプリング方法 図11
  • 特許-サンプリング装置およびサンプリング方法 図12
  • 特許-サンプリング装置およびサンプリング方法 図13
  • 特許-サンプリング装置およびサンプリング方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-07
(45)【発行日】2023-03-15
(54)【発明の名称】サンプリング装置およびサンプリング方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20230308BHJP
【FI】
G06N99/00 180
【請求項の数】 10
(21)【出願番号】P 2019112548
(22)【出願日】2019-06-18
(65)【公開番号】P2020204929
(43)【公開日】2020-12-24
【審査請求日】2022-03-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】田村 泰孝
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特許第6465223(JP,B1)
【文献】特許第6465231(JP,B1)
【文献】特開2007-270659(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
エネルギー値を表す評価関数に含まれる複数の状態変数のうち、変化候補の状態変数と他の状態変数との組毎の結合係数、前記複数の状態変数の値、および、前記複数の状態変数に対応する複数の局所場の値を記憶する記憶部と、
変化候補の前記状態変数の前記局所場の値に基づいて前記エネルギー値の変化値を計算し、設定された温度値と乱数値と前記変化値とによる前記状態変数の値を変化させるか否かの判定に応じて、前記状態変数の値を変化させるとともに前記結合係数に基づき前記他の状態変数の前記局所場の値を更新する状態更新部と、
前記複数の状態変数の値に対する前記エネルギー値と前記温度値とに応じたスコア値を更新するスコア更新部と、
をそれぞれが備える複数の更新回路と、
前記複数の更新回路に対応する複数の前記スコア値に基づいて、前記複数の更新回路の数よりも少ない所定数の更新回路のそれぞれにより保持される前記複数の状態変数の値の組を選択し、選択された前記複数の状態変数の値の組を出力する選択回路と、
を有するサンプリング装置。
【請求項2】
前記選択回路は、第1の温度値における前記複数のスコア値に基づいて選択された前記複数の状態変数の値の組により、前記複数の更新回路のそれぞれが備える前記記憶部に記憶された前記複数の状態変数の値を更新し、
前記複数の更新回路のそれぞれが備える前記状態更新部は、前記第1の温度値よりも低い第2の温度値において、前記選択回路による更新後の前記複数の状態変数の値を起点にして、前記状態変数の値を変化させる、
請求項1記載のサンプリング装置。
【請求項3】
前記選択回路は、前記複数のスコア値の和に対する前記スコア値の割合で、前記スコア値に対応する更新回路により保持される前記複数の状態変数の値を選択する、請求項2記載のサンプリング装置。
【請求項4】
前記選択回路は、前記温度値が目標値に達すると、前記複数のスコア値に基づいて、前記複数の状態変数の値の組を選択する、
請求項1記載のサンプリング装置。
【請求項5】
前記複数の状態変数のうちの2つの状態変数の全ての組に対する前記結合係数を記憶するメモリから、変化候補の前記状態変数と前記他の状態変数との間の前記結合係数を、変化候補の前記状態変数が選択される順序で読み出し、前記複数の更新回路のそれぞれが備える前記記憶部に、読み出した前記結合係数を格納するメモリ制御回路、
を更に有する請求項1乃至4の何れか1項に記載のサンプリング装置。
【請求項6】
前記所定数の更新回路に対応する所定数の前記スコア値に基づいて、所定の状態関数の平均値を計算する平均値計算回路、
を更に有する請求項1乃至5の何れか1項に記載のサンプリング装置。
【請求項7】
前記複数の更新回路に前記温度値を設定し、前記温度値を漸減させる制御回路、
を更に有する請求項1乃至6の何れか1項に記載のサンプリング装置。
【請求項8】
前記温度値が目標値に達すると、前記複数の更新回路のそれぞれにより得られた前記複数の状態変数の値のうち、最低のエネルギー値に対応する前記複数の状態変数の値を出力する制御回路、
を更に有する請求項1乃至7の何れか1項に記載のサンプリング装置。
【請求項9】
前記記憶部は、前記複数の状態変数のうちの第1の部分の状態変数と変化候補の前記状態変数との組に対する前記結合係数を記憶する第1の記憶部と、前記複数の状態変数のうちの第2の部分の状態変数と変化候補の前記状態変数との組に対する前記結合係数を記憶する第2の記憶部と、を含み、
前記状態更新部は、前記第1の部分の状態変数の値および前記第1の部分の状態変数に対応する前記局所場の値を更新する第1の状態更新部と、前記第2の部分の状態変数の値および前記第2の部分の状態変数に対応する前記局所場の値を更新する第2の状態更新部と、を含み、
前記第1の記憶部と前記第1の状態更新部とを有する第1のチップと、
前記第2の記憶部と前記第2の状態更新部とを有する第2のチップと、
を更に有する請求項1乃至8の何れか1項に記載のサンプリング装置。
【請求項10】
複数の更新回路のそれぞれが有する状態更新部が、エネルギー値を表す評価関数に含まれる複数の状態変数のうち、変化候補の状態変数の局所場の値に基づいて前記エネルギー値の変化値を計算し、設定された温度値と乱数値と前記変化値とによる前記状態変数の値を変化させるか否かの判定に応じて、前記状態変数の値を変化させるとともに、記憶部に記憶された、変化候補の前記状態変数と他の状態変数との組毎の結合係数に基づき前記他の状態変数の前記局所場の値を更新し、
前記複数の更新回路のそれぞれが有するスコア更新部が、前記複数の状態変数の値に対する前記エネルギー値と前記温度値とに応じたスコア値を更新し、
選択回路が、前記複数の更新回路に対応する複数の前記スコア値に基づいて、前記複数の更新回路の数よりも少ない所定数の更新回路のそれぞれにより保持される前記複数の状態変数の値の組を選択し、選択された前記複数の状態変数の値の組を出力する、
サンプリング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はサンプリング装置およびサンプリング方法に関する。
【背景技術】
【0002】
組合せ最適化問題を解くための手法として、組合せ最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換し、マルコフ連鎖モンテカルロ法を用いて、イジングモデルの状態をエネルギーの低い状態に遷移させていく手法がある。例えば、マルコフ連鎖モンテカルロ法の一種として、シミュレーテッド・アニーリング法が知られている。シミュレーテッド・アニーリング法では、温度をパラメータとして用い、温度を徐々に下げながら状態を遷移させることで最低エネルギーの状態(最適解)を探索する。
【0003】
例えば、シミュレーテッド・アニーリング法を、デジタル回路を用いて実行する情報処理装置の提案がある(例えば、特許文献1参照)。提案の情報処理装置は、次のように複数の状態遷移を同時に遷移候補として、1つの状態遷移を選択する並列探索を行う。
【0004】
情報処理装置は、複数の状態変数に対応する複数のニューロンを有し、ニューロン間の結合係数に応じた状態遷移毎のエネルギー変化と温度値とに基づき、所定の受入確率で各状態遷移を許容する。情報処理装置は、許容された状態遷移の中から1つを選択し、状態を更新する。状態遷移の受入確率には、例えば、メトロポリス法やギブス法で規定される確率が用いられる。
【0005】
また、イジングモデルの基底状態探索を実行する1又は複数の半導体チップが搭載された情報処理システムの提案もある(例えば、特許文献2参照)。
更に、相互作用モデルの1つのノードの状態を示す値と他のノードからの相互作用係数と当該1つのノードのバイアス係数とに基づいて、当該1つのノードの次状態を示す値を決定する演算回路を有する半導体装置の提案もある(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2018-41351号公報
【文献】特開2016-51350号公報
【文献】特開2016-51326号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
メトロポリス法やギブス法で状態遷移の受入確率を決めると、平衡状態では、各状態の占有確率はボルツマン分布に従う。そこで、マルコフ連鎖モンテカルロ法を用いて、ある温度で状態遷移の複数試行により得られた状態または状態に基づいた値をサンプルとして出力することで、ボルツマン分布に従うサンプルを発生するサンプラーを実現できる。発生したサンプルは、例えば、機械学習などでの期待値の計算に用いられる。
【0008】
ここで、上記の情報処理装置のように、複数の状態変数に対する並列探索により次の状態遷移を決定することでサンプリングを実行することが考えられる。この方法では、次に反転させる状態変数は予測不能(実質的にランダム)である。反転させる状態変数に応じて局所場を更新するタイミングで、結合係数の値を保持したメモリに対してランダムなアクセスが生ずる。そこで、高速動作のために、ランダムアクセス可能な記憶部をサンプラーに内蔵し、全ての結合係数を当該記憶部に予め格納することが考えられる。
【0009】
一方、状態変数の数の増加とともに結合係数の数は増加する。このため、例えば、1または複数チップの半導体集積回路でサンプラーを実現する場合、結合係数を格納する記憶部の容量により、扱える状態変数の数が制限されてしまうという問題がある。
【0010】
1つの側面では、本発明は、扱える状態変数の数の制限を改善できるサンプリング装置およびサンプリング方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
1つの態様では、サンプリング装置が提供される。このサンプリング装置は、複数の更新回路と選択回路とを有する。複数の更新回路のそれぞれは、記憶部と状態更新部とスコア更新部とを有する。記憶部は、エネルギー値を表す評価関数に含まれる複数の状態変数のうち、変化候補の状態変数と他の状態変数との組毎の結合係数、複数の状態変数の値、および、複数の状態変数に対応する複数の局所場の値を記憶する。状態更新部は、変化候補の状態変数の局所場の値に基づいてエネルギー値の変化値を計算し、設定された温度値と乱数値と変化値とによる状態変数の値を変化させるか否かの判定に応じて、状態変数の値を変化させるとともに結合係数に基づき他の状態変数の局所場の値を更新する。スコア更新部は、複数の状態変数の値に対するエネルギー値と温度値とに応じたスコア値を更新する。選択回路は、複数の更新回路に対応する複数のスコア値に基づいて、複数の更新回路の数よりも少ない所定数の更新回路のそれぞれにより保持される複数の状態変数の値の組を選択し、選択した複数の状態変数の値の組を出力する。
【0012】
また、1つの態様では、サンプリング方法が提供される。
【発明の効果】
【0013】
1つの側面では、扱える状態変数の数の制限を改善できる。
【図面の簡単な説明】
【0014】
図1】第1の実施の形態のサンプリング装置を示す図である。
図2】第2の実施の形態のサンプリング装置の回路構成例を示す図である。
図3】レプリカ更新回路の回路構成例を示す図である。
図4】判定部の回路構成例を示す図である。
図5】リサンプリング回路の回路構成例を示す図である。
図6】選択回路の回路構成例を示す図である。
図7】サンプリング装置の処理例を示すフローチャートである。
図8】リサンプリングの例を示すフローチャートである。
図9】第3の実施の形態のサンプリング装置の回路構成例を示す図である。
図10】スコア順選択回路の回路構成例を示す図である。
図11】選択回路の回路構成例を示す図である。
図12】サンプリング装置の処理例を示すフローチャートである。
図13】状態変数の分割例を示す図である。
図14】第4の実施の形態のサンプリング装置の回路構成例を示す図である。
【発明を実施するための形態】
【0015】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0016】
図1は、第1の実施の形態のサンプリング装置を示す図である。
サンプリング装置10は、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法を用いて、メトロポリス法やギブス法の基準でイジングモデルの状態を遷移させることで、ボルツマン分布に従う状態のサンプリングを行う。サンプリング装置10は組合せ最適化問題に対する求解を行うこともできる。サンプリング装置10は、例えばFPGA(Field Programmable Gate Array)などの半導体集積回路(半導体チップ)を用いて実現される。
【0017】
ここで、イジング型のエネルギー関数E(x)は、例えば式(1)で定義される。
【0018】
【数1】
【0019】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と結合係数との積を積算したものである。xは、i番目の状態変数である。xは、j番目の状態変数である。状態変数は0または1の値を取る。状態変数は、バイナリ変数やビットなどと呼ばれることもある。結合係数Wijは、i番目の状態変数とj番目の状態変数との間の重み(例えば、結合の強さ)を示す。なお、行列W={Wij}について、Wij=Wji、Wii=0である。添え字i,jは、状態変数の識別情報であり、インデックスと呼ばれる。状態変数の全ての組合せに対する結合係数は、サンプリング装置10に接続された外部メモリ50に記憶されている。外部メモリ50は、例えばDRAM(Dynamic Random Access Memory)により実現される。
【0020】
式(1)の右辺第2項は、全状態変数のそれぞれのバイアス値と状態変数の値との積の総和である。bは、i番目の状態変数に対するバイアス値を示す。
例えば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。
【0021】
状態変数xの値が変化して1-xとなると、状態変数xの増加分は、δx=(1-x)-x=1-2xと表せる。したがって、エネルギー関数E(x)に対して、状態変数xのスピン反転(値の変化)に伴うエネルギー変化ΔEは、式(2)で表される。
【0022】
【数2】
【0023】
は局所場(ローカルフィールド)と呼ばれ、式(3)で表される。
【0024】
【数3】
【0025】
状態変数xが変化(ビット反転)したときの局所場hの変化分δh (j)は、式(4)で表される。
【0026】
【数4】
【0027】
サンプリング装置10は、状態変数xに対する局所場hを保持し、他の状態変数xの値が変化したときに変化分δh (j)を、hに加算することで、ビット反転後の状態に対応するhを得る。サンプリング装置10は、式(2)に基づいて、局所場hにより状態変数xを変化候補としたときのエネルギー変化値ΔEを求めることができる。
【0028】
サンプリング装置10は、前述のように、エネルギー変化がΔEとなる状態遷移(状態変数xの値の変化)を許容するか否かを決定するためにメトロポリス法やギブス法を用いる。これにより、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移が確率的に許容される。例えば、エネルギー変化ΔEの状態変数の値の変化を受け入れる確率(受入確率)Aは式(5)で表される。
【0029】
【数5】
【0030】
ここで、βは温度値Tの逆数(逆温度値)であり、β=1/Tである。min演算子は、引数のうちの最小値を取ることを示す。例えば、メトロポリス法を用いる場合、サンプリング装置10は、一様乱数u(0<u≦1)に対して、エネルギー変化ΔEが式(6)を満たす場合に、該当の状態変数の値の変化を許容する。
【0031】
【数6】
【0032】
サンプリング装置10は、変化が許容された状態変数の値を変化させるとともに状態変数間の結合係数により他の状態変数の局所場を更新することで、状態を遷移させる。
サンプリング装置10は、複数の状態変数に対応するレプリカを複数有し、上記の確率的探索プロセスを並列に動作させる。サンプリング装置10では、複数のレプリカの情報を統合する手法として、Jarzynski-Nealの原理の応用であるAnnealed Importance Sampling(AISと略記する)、あるいは、Population Annealing(PAと略記する)の手法が用いられる。
【0033】
Jarzynski-Nealの原理については文献1を参考にすることができる。AISについては文献2を参考にすることができる。PAについては文献3を参考にすることができる。
文献1:Jarzynski, C., “Equilibrium Free Energies from Nonequilibrium Processes,” Acta Phys. Pol. B, vol.29(6), 1998., p.1609-1622.
文献2:Neal, R. M., “Annealed Importance Sampling,” Statistics and Computing volume 11 Issue2, 2001., p.125-139.
文献3:K. Hukushimaand Y. Iba, “Population annealing and its application to a spin glass,” AIP Conference Proceedings vol.690, 2003., p.200-206.
ここで、1つのレプリカに属する状態変数の数をN(Nは2以上の整数)個とする。この場合、外部メモリ50に保持される結合係数の総数は、N個である。また、サンプリング装置10が有するレプリカの数をK(Kは2以上の整数)個とする。更に、レプリカの状態を、状態ベクトル{x }(kは1以上K以下の整数)で表す。なお、状態ベクトルの下付きの添え字pは0以上の整数であり、時間ステップを示す。状態ベクトルの上付きの添え字kは、レプリカを示す。添え字p,kの表記は省略されることがある。状態ベクトル{x }は、式(7)で表される(添え字tは転置を示す)。
【0034】
【数7】
【0035】
サンプリング装置10は、レプリカの重みを示すスコアSを各レプリカに与える。サンプリング装置10は、スコアS =1としてMCMC法を使用してレプリカの状態をランダムな初期状態x から、x ,x ,…と更新していく。スコアS は式(8)で表される。
【0036】
【数8】
【0037】
ここで、逆温度βの初期値β=0,スコアS の初期値S =1である。
サンプリング装置10は、状態x を逆温度βで所定回数(例えば全状態変数のそれぞれに対する1回の試行で計N回)だけMCMC法により更新すると、p=p+1とし、逆温度を式(9)により更新して、スコアS を求める。逆温度は係数α(>1)により等比的に増加する。この手順の繰り返しにより各レプリカのスコアS が更新される。
【0038】
【数9】
【0039】
サンプリング装置10は、スコアS に基づいてサンプリングを行う。
サンプリング装置10は、更新回路11a1,11a2,…,11aK、選択回路12、制御回路13およびメモリ制御回路14を有する。
【0040】
更新回路11a1~11aKは、それぞれがイジングモデルのレプリカに対応し、各レプリカにおける確率的探索プロセスを実行する。図1では、更新回路11a1の構成が例示されている。更新回路11a2~11aKも更新回路11a1と同様の構成である。更新回路11a1は、記憶部111、状態更新部112およびスコア更新部113を有する。例えば、更新回路11a1はk=1のレプリカに相当する(p,kの添え字を省略する)。また、変化候補の状態変数のインデックス(あるいは変化候補のインデックス)をjとする。
【0041】
記憶部111は、エネルギー値を表す評価関数に含まれる複数の状態変数(x~x)のうち、変化候補の状態変数xと他の状態変数{x}との組毎の結合係数{Wij}(Wjj=0が含まれてもよい)を記憶する。また、記憶部111は、複数の状態変数の値、および、複数の状態変数に対応する複数の局所場(h~h)の値を記憶する。記憶部111は、例えばSRAM(Static Random Access Memory)により実現される。今回の変化候補のインデックスjは、更新回路11a1~11aKで共通の1つのインデックスである。変化候補のインデックスjは所定の順序(例えば、インデックス順)で、状態更新部112などにより選択される。
【0042】
状態更新部112は、変化候補の状態変数xの局所場hの値に基づいてエネルギー値の変化値ΔEを、式(2)により計算する。状態更新部112は、設定された温度値Tと乱数値uと変化値ΔEとによる状態変数xの値を変化させるか否かの判定に応じて、状態変数の値を変化させるとともに結合係数{Wij}に基づき他の状態変数{x}の局所場{h}の値を更新する。ここで、当該判定は、式(6)に基づく判定である。また、例えば、状態更新部112は、状態変数xの値を変化させる場合、現在のエネルギー値に変化値ΔEを積算することで、現在の状態に対するエネルギー値を計算する。状態更新部112は、ある温度値Tにおいて、変化候補の状態変数xを順次変更して、状態変数、局所場およびエネルギー値の更新を所定回数(あるいは所定期間)繰り返す。状態更新部112は、制御回路13により温度値Tが減少されると、減少後の温度で状態変数、局所場およびエネルギーの更新を更に繰り返す。
【0043】
スコア更新部113は、複数の状態変数(x~x)の値に対するエネルギー値E(x)と温度値T(あるいは逆温度値β=1/T)とに応じたスコア値Sを更新する。スコア値Sは、式(8)により求められる。
【0044】
選択回路12は、複数の更新回路(更新回路11a1~11aK)から複数のスコア値(スコア値S~S)を取得する。選択回路12は、更新回路11a1~11aKに対応するスコア値S~Sに基づいて、複数の更新回路の数Kよりも少ない所定数L(Lは1以上K未満の整数)の更新回路のそれぞれにより保持される複数の状態変数の組を選択する。複数の状態変数の値の組は、複数の状態ベクトル(L個の状態ベクトル)に相当する。選択回路12により選択された状態ベクトルを{x}と表す。選択回路12は、選択した複数の状態変数の値の組を出力する。
【0045】
制御回路13は、更新回路11a1~11aK、選択回路12およびメモリ制御回路14の動作を制御する。例えば、制御回路13は、更新回路11a1~11aKに対して、状態、局所場、温度値(あるいは逆温度値)およびスコア値の初期値やバイアス値などを設定する。また、例えば、制御回路13は、更新回路11a1~11aKおよび選択回路12にクロックを供給する。なお、式(9)に基づく温度値の更新は、制御回路13により行われてもよいし、各更新回路の状態更新部により行われてもよい。例えば、制御回路13は、更新回路11a1~11aKに温度値を設定する。制御回路13は、設定する温度値を漸減させる(「逆温度値を漸増させる」とも言える)。
【0046】
制御回路13は、変化候補の状態変数xに対応する結合係数{Wij}の外部メモリ50からのメモリ制御回路14による読み出し、および、結合係数{Wij}の更新回路11a1~11aKのそれぞれの記憶部に対する書き込みを制御する。例えば、外部メモリ50には変化候補として選択されるインデックスの順序で、結合係数Wが予め格納される。制御回路13は、変化候補のインデックスjのインクリメントに応じて、外部メモリ50からの結合係数{Wij}の読み出し、および、更新回路11a1~11aKの記憶部への{Wij}の書き込みの命令をメモリ制御回路14に出力する。
【0047】
メモリ制御回路14は、制御回路13からの命令に応じて、外部メモリ50から、変化候補の状態変数と他の状態変数との間の結合係数{Wij}(=W1j,W2j,…,WNj)を順番に(変化候補のインデックスjが選択される順序で)読み出す。メモリ制御回路14は、更新回路11a1~11aKのそれぞれが備える記憶部に、読み出した結合係数{Wij}(=W1j,W2j,…,WNj)を格納する。
【0048】
ここで、AISを用いる場合、例えば、選択回路12は、温度値(あるいは逆温度値)が目標値に到達した段階で、L個の状態ベクトル{x}の選択を行い、サンプリングされた状態として、当該状態ベクトル{x}を出力する。選択回路12による状態ベクトルの選択方法としては、スコア値Sの上位L個を選択する方法が考えられる。例えば、選択回路12(あるいは制御回路13)は、選択回路12により出力される状態ベクトル{x}を、外部メモリ50またはその他のメモリに書き込んでもよい。
【0049】
また、選択回路12により選択されたL個の状態ベクトル{x}に対して観察したい状態関数の平均値をスコア値Sに基づいて計算して出力することも考えられる。この場合、サンプリング装置10は、所定数の更新回路に対応する所定数のスコア値に基づいて、所定の状態関数の平均値を計算する平均値計算回路を更に備えてもよい。例えば、レプリカkに対する状態関数をA とすると、平均値<A>は、式(10)により表される。
【0050】
【数10】
【0051】
また、PAを用いる場合、例えば、選択回路12は、時間ステップpに応じたタイミング(例えば、p=0(mod M)(Mは1以上の整数)のタイミング)で、スコア値S を計算後、スコア値S に基づくリサンプリングと呼ばれるステップを実行する。ここで、「p=0(mod M)」は、pをMで割った剰余が0であることを示す。リサンプリングのステップでは、選択回路12は、式(11)で表される確率で、レプリカkの状態を選択し、次の時間ステップでの探索に引き継ぐ。
【0052】
【数11】
【0053】
この場合、選択回路12は、Kの約数であるm(2≦m<K)に対し、式(11)の確率でK/m回の選択を行うことで、更新回路11a1~11aKにより保持される状態のうち、引き継ぎ対象の状態を、重複を許して選択する。選択回路12は、更新回路11a1~11aKのそれぞれの記憶部に、選択した状態を格納することで、各レプリカの状態を引き継ぎ対象の状態に更新する。当該記憶部に保持されるエネルギー値や局所場の値も、各更新回路または選択回路12により、それぞれ引き継ぎ対象の状態に対応する値に更新される。例えば、選択回路12は、引き継ぎ元の更新回路の記憶部から、状態ベクトルとともにエネルギー値や各局所場の値を読み出して、引き継ぎ先の更新回路の記憶部に格納する。選択回路12は、リサンプリングが完了すると、全てのレプリカのスコア値S を1にリセットする。そして、更新回路11a1~11aKによる探索が再開される。
【0054】
PAの場合、例えば選択回路12は、温度値(あるいは逆温度値)が目標値に到達した段階で、式(11)で表される確率で、L個(L=mでもよい)の状態ベクトル{x}の選択を行い、サンプリングされた状態として、当該状態ベクトル{x}を出力する。また、AISを用いる場合と同様に、サンプリング装置10は、選択回路12により選択されたL個の状態ベクトル{x}に対して観察したい状態関数の平均値を、スコア値Sに基づいて式(10)により計算して出力する平均値計算回路を備えてもよい。
【0055】
更に、例えば、制御回路13は、温度値(あるいは逆温度値)が目標値に到達した段階で、更新回路11a1~11aKのそれぞれにより得られた複数の状態変数の値のうち、最低のエネルギー値に対応する複数の状態変数の値を出力してもよい。一例として、制御回路13は、温度値が目標値に到達した段階で選択回路12により選択された状態のうち、最低のエネルギーに対応する複数の状態変数の値を、組合せ最適化問題に対する解として出力してもよい。
【0056】
サンプリング装置10では、更新回路11a1~11aKのそれぞれが備える記憶部において、全結合係数のうち、少なくとも今回の変化候補のインデックスjに対応する結合係数{Wij}を保持すればよい。例えば、当該記憶部において、全結合係数のうち、今回の変化候補のインデックスjに対応する結合係数{Wij}のみを保持するようにしてもよい。
【0057】
すると、更新回路11a1~11aKのそれぞれの記憶部において結合係数の保持に所要される容量を、最小で、N個(ただし、インデックスjの分を除けばN-1個)の結合係数のサイズに抑えられる。よって、更新回路11a1~11aKのそれぞれの記憶部の限られた容量の中で、N個の結合係数を保持するよりも、結合係数のビット数を変えずに(問題表現の精度を落とさずに)、多くの状態変数を扱えるようになる。このように、サンプリング装置10によれば、扱える状態変数の数(問題規模)の制限を改善できる。また、更新回路11a1~11aKを用いた並列試行により、サンプリングの高速化を図れる。
【0058】
以下では、上記で説明したAISおよびPAを用いる場合のサンプリング装置の構成例を更に具体的に説明する。まず、PAを用いる場合を例示する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
【0059】
図2は、第2の実施の形態のサンプリング装置の回路構成例を示す図である。
サンプリング装置20は、レプリカ更新回路21a1,21a2,…,21aK、リサンプリング回路22、平均値計算ブロック23、制御回路24、メモリI/F(InterFace)マクロ25およびFIFO(First In, First Out)26を有する。サンプリング装置20は、外部メモリ51に接続されている。サンプリング装置20は、例えばFPGAなどの半導体集積回路を用いて実現される。
【0060】
外部メモリ51は、例えばDRAMである。外部メモリ51は、イジングモデルに含まれる2つの状態変数の全ての組に対する結合係数を記憶する。例えば、外部メモリ51には、変化候補のインデックスjの発生順に対応する順序で、全ての結合係数Wが予め格納される。状態変数の数がN個のとき、外部メモリ51に格納される状態変数の数はN個である。
【0061】
レプリカ更新回路21a1~21aKは、レプリカの状態(状態ベクトル)、および、状態に応じたエネルギー値を、レプリカ更新回路21a1~21aKのそれぞれが備える内部メモリに保持する。レプリカ更新回路21a1~21aKによりK個のレプリカが実現される。また、レプリカ更新回路21a1~21aKは、状態ベクトルに属する状態変数に対応する局所場を、内部メモリに保持する。更に、レプリカ更新回路21a1~21aKは、変化候補のインデックスjに対する結合係数{Wij}を、内部メモリに保持する。レプリカ更新回路21a1~21aKは、複数のレプリカの状態を並列に更新する。1回に発生する変化候補のインデックスjは、1つであり、レプリカ更新回路21a1~21aKで共通である。
【0062】
レプリカ更新回路21a1~21aKは、第1の実施の形態の更新回路11a1~11aKの一例である。レプリカ更新回路21a1~21aKのそれぞれは、レプリカに関する演算を行う演算回路と呼ばれてもよい。
【0063】
リサンプリング回路22は、レプリカ更新回路21a1~21aKにより更新される複数のスコア値S (単にスコアと言うことがある)に基づいて、リサンプリングを実行する。リサンプリング回路22は、レプリカ更新回路21a1~21aKのうち、リサンプリングにより選択されたレプリカ更新回路に保持される状態ベクトルをレプリカ更新回路21a1~21aKに出力する。
【0064】
平均値計算ブロック23は、リサンプリング回路22により選択されたレプリカ更新回路のスコアS を用いて、式(11)などにより状態関数の平均値を計算する回路である。
【0065】
制御回路24は、レプリカ更新回路21a1~21aK、リサンプリング回路22および平均値計算ブロック23にクロック信号(clk)を供給し、レプリカ更新回路21a1~21aK、リサンプリング回路22および平均値計算ブロック23の動作を制御する。制御回路24は、メモリI/Fマクロ25により外部メモリ51から結合係数{Wij}を読み出すタイミングを制御する。制御回路24は、メモリI/Fマクロ25に対して、外部メモリ51からの結合係数{Wij}の読み出しのリクエストを出力する。制御回路24は、第1の実施の形態の制御回路13の一例である。
【0066】
メモリI/Fマクロ25は、制御回路24から受け付けるリクエストに応じて、外部メモリ51にメモリ制御信号を発行する。メモリ制御信号は、結合係数{Wij}の読み出しのコマンドを含む。メモリI/Fマクロ25は、メモリ制御信号に応じて外部メモリ51から結合係数{Wij}のデータを受け付ける。
【0067】
メモリI/Fマクロ25は、外部メモリ51からのデータ同期や並べ替え等を行うFIFO機能も有する。メモリI/Fマクロ25は、受け付けた結合係数{Wij}のデータを、FIFO26に出力する。また、メモリI/Fマクロ25は、レプリカ更新回路21a1~21aKへのデータ送信の同期を得るためのFIFO制御信号をFIFO26に出力する。
【0068】
FIFO26は、メモリI/Fマクロ25から結合係数{Wij}のデータを受け付ける。FIFO26は、メモリI/Fマクロ25からのFIFO制御信号に基づいて、レプリカ更新回路21a1~21aKの内部メモリ(図示を省略している)に、結合係数{Wij}のデータを出力する。
【0069】
メモリI/Fマクロ25およびFIFO26のセットは、第1の実施の形態のメモリ制御回路14の一例である。
次に、レプリカ更新回路21a1の回路構成を例示する。レプリカ更新回路21a2~21aKもレプリカ更新回路21a1と同様の回路構成である。
【0070】
図3は、レプリカ更新回路の回路構成例を示す図である。
レプリカ更新回路21a1は、インデックス生成部211、更新部212、エネルギー変化計算部213、判定部214およびスコア計算部215を有する。インデックス生成部211、更新部212、エネルギー変化計算部213および判定部214のセットは、第1の実施の形態の状態更新部112(あるいは状態更新回路)の一例である。すなわち、インデックス生成部211、更新部212、エネルギー変化計算部213および判定部214を有する回路ブロックを状態更新部あるいは状態更新回路と称してもよい。スコア計算部215は、第1の実施の形態のスコア更新部113(あるいはスコア更新回路)の一例である。
【0071】
インデックス生成部211は、制御回路24から供給されるクロック信号に同期して、変化候補のインデックスjを生成し、更新部212に供給する。例えば、インデックス生成部211は、今回の変化候補のインデックスjに対して、次回の変化候補のインデックスをj+1とする。状態変数の総数はNであるため、インデックスはj=1~Nの順に、1つずつ生成される。j=Nに到達すると、j=1から再び生成される。このように、インデックス生成部211は、変化候補の状態変数のインデックスjを順番に発生させる。インデックス生成部211により、次の変化候補の状態変数が選択されているとも言える。このように、レプリカ更新回路21a1では、変化候補の状態変数のインデックスの発生順を制御可能である。
【0072】
更新部212は、外部メモリ51から読み出された結合係数{Wij}=W1j,W2j,…,WNjを保持する。更新部212は、制御回路24から供給されるクロック信号に同期して、変化候補の状態変数xの値、および、状態変数xに対応する局所場hの値を、エネルギー変化計算部213に出力する。
【0073】
エネルギー変化計算部213は、状態変数xの値、および、局所場hの値に基づいて、イジングモデルにおけるエネルギー値の変化値ΔEkjを計算する。エネルギー値に対する下付きの添え字kは、レプリカを示す。ΔEkjは、式(2)に基づいて計算され、ΔEkj=-δx=(2x-1)hである。エネルギー変化計算部213は、計算した変化値ΔEkjを判定部214に出力する。
【0074】
判定部214は、変化値ΔEkjと逆温度値βと乱数値uとに基づいて、状態変数xの値の変化を受け入れるか否かを判定する。当該判定は、式(6)に基づく判定である。判定部214は、変化候補のインデックスjと、状態変数xの変化分δxとを更新部212に出力する。ここで、状態変数xの値の変化を受け入れる場合、δx=1-2xであり、δx=-1、または、δx=+1である。状態変数xの値の変化を受け入れない場合、δx=0である。
【0075】
更新部212は、判定部214により出力された変化分δxに基づいて、レプリカの状態を更新する。更新部212は、インデックスi≠jについて、式(4)に基づき、局所場hをh=h+δxijに更新する。δx=0の場合(xを反転させない場合)には、更新前後でhは同じ値となる。
【0076】
また、更新部212は、インデックスi=jについて、状態変数xをx=x+δxに更新する。δx=0の場合(xを反転させない場合)には、更新前後でxは同じ値となる。更に、更新部212は、δx≠0の場合、エネルギー値E=E(x )を、E=E+ΔEkj=E+(2x-1)hに更新する。δx=0の場合、エネルギー値Eは変化しない。
【0077】
スコア計算部215は、制御回路24から供給されるクロック信号に同期して(例えば、更新部212におけるj=1~Nの一巡の処理に対して1回の頻度)、更新部212からエネルギー値Eを取得し、スコアSを更新する。S=S(-(β-βp-1)E)は式(8)により与えられる。式(8)によれば、エネルギー値Eが低い程、スコアSは大きい値になる傾向となる。なお、スコア計算部215は、スコア計算部215の内部メモリ(図示を省略している)にSp-1 を保持しておく。また、スコア計算部215は、αに基づいてβからβp-1を計算するか、βp-1を内部メモリに保持しておく。
【0078】
図4は、判定部の回路構成例を示す図である。
判定部214は、オフセット値生成部214a、乱数生成部214b、ノイズ値生成部214c、符号反転回路214d、加算器214e,214f、比較器214gおよびセレクタ214hを有する。
【0079】
オフセット値生成部214aは、比較器214gにより出力されるフラグFに基づいて、オフセット値Eoff(Eoff≧0)を生成し、加算器214eに供給する。具体的には、オフセット値生成部214aは、比較器214gから出力されるフラグFが遷移可(F=1)を示す場合、オフセット値Eoffを0にリセットする。オフセット値生成部214aは、比較器214gから出力されるフラグFが遷移不可(F=0)を示す場合、オフセット値Eoffに増分値ΔEoffを加算する。フラグFが連続して0を示す場合、オフセット値生成部214aは、ΔEoffを積算することで、EoffをΔEoffずつ増加させる。
【0080】
乱数生成部214bは、0<u≦1の一様乱数uを生成し、ノイズ値生成部214cに出力する。
ノイズ値生成部214cは、一様乱数uと、制御回路24により供給された逆温度値βとに対して式(6)の左辺の値を生成するための変換テーブルを保持する。ノイズ値生成部214cは、当該変換テーブルにより、式(6)に基づくノイズ値(熱ノイズ)である-ln(u)/βの値を生成する。ノイズ値生成部214cは、生成した-ln(u)/βの値を加算器214fに出力する。
【0081】
符号反転回路214dは、エネルギー変化計算部213から供給されるエネルギー値の変化値ΔEkjの符号を反転させ、加算器214eに供給する。
加算器214eは、符号反転回路214dから供給される-ΔEkjにオフセット値Eoffを加算し、加算器214fに供給する。
【0082】
加算器214fは、加算器214eから供給される-ΔEkj+Eoffに、熱ノイズ-ln(u)/βを加算し、比較器214gに供給する。
比較器214gは、加算器214eにより出力された評価値-ΔEkj+Eoff-ln(u)/βを閾値(具体的には0)と比較することで、式(6)に基づく判定を行う。比較器214gは、評価値が0以上の場合、遷移可を示すフラグ(F=1)を、セレクタ214hおよびオフセット値生成部214aに出力する。図4では、比較器214gとオフセット値生成部214aとの関連線の図示を省略している。比較器214gは、評価値が0未満の場合、遷移不可を示すフラグ(F=0)を、セレクタ214hおよびオフセット値生成部214aに出力する。
【0083】
セレクタ214hは、比較器214gから出力されるフラグがF=1の場合、δx=1-2xを、更新部212に出力する。また、セレクタ214hは、比較器214gから出力されるフラグがF=0の場合、δx=0を、更新部212に出力する。
【0084】
ここで、比較器214gから出力されるフラグFが遷移不可を示す場合、現在の状態が局所解に陥っていると考えられる。オフセット値生成部214aによる、-ΔEkjへのEoffの加算やEoffの漸増により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【0085】
図5は、リサンプリング回路の回路構成例を示す図である。
リサンプリング回路22は、選択回路221およびメモリ222を有する。
選択回路221は、p=0(mod M)のタイミングで、レプリカ更新回路21a1~21aKのそれぞれのスコア計算部により計算されたスコアSを取得し、式(11)で示される確率Pに基づいて、リサンプリングを行う。選択回路221は、第1の実施の形態の選択回路12の一例である。
【0086】
選択回路221は、式(11)で示される確率Pで状態を次のステップに引き継ぐ計算を、計算式に従ってそのまま実行することが考えられる。ただし、この場合、指数関数と重み算出と重み正規化の計算を伴う。この計算は計算量が多いことがある。
【0087】
そこで、選択回路221は、例えば、Reservoir samplingと呼ばれる手法を用いて、リサンプリングを高速化してもよい。この方法では、スコアS の式に現れるエネルギーの値に、[0-1]に一様分布する確率変数r(i=1,…,K)から発生される変数log(-log(r))(logは自然対数を示す)をオフセットとして加算し、加算後の値が小さい方からm個を選択する。ここで、前述のように、mはレプリカ数Kの約数(ただし、2≦m<K)である。この選択をK/m回行うことで、次のステップに引き継ぐレプリカを決定する。一例では、K=1024のとき、m=32とする。
【0088】
Reservoir samplingについては文献4を参考にすることができる。
文献4:Pavlos S. Efraimidis, Paul G. Spirakis, “Weighted random sampling with a reservoir,” Information Processing Letters 97, issue 5, 2006., p.181-185.
1回の選択数mは、例えば、制御回路24またはサンプリング装置20の外部から選択回路221に対して指定される。選択回路221は、選択したm個のレプリカにより保持される状態ベクトル{x}を取得し、メモリ222に格納する。選択回路221は、K/m回の選択が完了すると、メモリ222に蓄積されたK個の状態ベクトル{x}をレプリカ更新回路21a1~21aKに書き戻す。K/m回の各回の選択において、選択される状態ベクトルが重複することもある。
【0089】
これにより、レプリカ更新回路21a1~21aKの内部メモリ(例えば、更新部212のメモリ212a)に保持される状態ベクトルが、スコアSに基づいて選択された状態ベクトル{x}に更新される。ここで、メモリ212aは、例えばSRAMであり、第1の実施の形態の記憶部111の一例である。
【0090】
なお、選択回路221は、更新後の状態ベクトルに対応するエネルギー値や各状態変数に対応する局所場の値を引き継ぎ元のレプリカ更新回路から取得して、引き継ぎ先のレプリカ更新回路の内部メモリに格納することで、エネルギー値や局所場の値も更新する。ただし、更新後の状態ベクトルに対応するエネルギー値および局所場の値とする更新は、例えば、各レプリカ更新回路の更新部(例えば、更新部212)により行われてもよい。
【0091】
こうしてリサンプリングが完了すると、レプリカ更新回路21a1~21aKのそれぞれのスコア計算部215が保持するスコアSは、1にリセットされる。
メモリ222は、例えばSRAMであり、選択回路221により選択された状態ベクトルを蓄積するための記憶部である。
【0092】
図6は、選択回路の回路構成例を示す図である。
選択回路221は、乱数生成部221a、オフセット生成部221b、加算器221cおよび選択部221dを有する。
【0093】
乱数生成部221aは、K個の乱数r(i=1,…,K)を発生させる。乱数生成部221aは、K個の乱数rをオフセット生成部221bに出力する。
オフセット生成部221bは、乱数rに対してlog(-log(r))を発生させるための変換テーブルを有し、当該テーブルに基づいて、K個の乱数rに対するK個の変数log(-log(r))を、加算器221cに出力する。
【0094】
加算器221cは、レプリカ更新回路21a1~21aKのそれぞれから供給されるスコアSに、オフセット生成部221bから供給される変数log(-log(r))を加算し、選択部221dに出力する。加算器221cにより、K個のスコアSとK個の変数log(-log(r))とが1対1に対応付けられて、両者の合計値が計算される(全部でK個の合計値が得られる)。
【0095】
選択部221dは、加算器221cから出力されたK個の合計値のうち、下位のm個に対応するレプリカ更新回路を選択し、当該m個のレプリカ更新回路のそれぞれにより保持される状態ベクトルをメモリ222に蓄積する。選択部221dは、重複を許した、K/m回の選択を行うことで、全部でK個の状態をメモリ222に蓄積する。選択回路221は、メモリ222に蓄積されたK個の状態を、それぞれ、レプリカ更新回路21a1~21aKに出力し、レプリカ更新回路21a1~21aKにより保持される状態を更新する。
【0096】
リサンプリングでは、比較的エネルギーの低い状態が次の探索に引き継がれる可能性が高い。リサンプリングを繰り返し行うことで、各温度において適切なサンプルを生成できる。
【0097】
次に、サンプリング装置20の処理手順を説明する。
図7は、サンプリング装置の処理例を示すフローチャートである。
(S10)制御回路24は、イジングモデルに応じた初期化を実行する。例えば、制御回路24は、レプリカ更新回路21a1~21aKのそれぞれに、初期状態、局所場の初期値、初期温度値(または初期逆温度値)、温度値(または逆温度値)の変化のための係数α、バイアス値、および、初期エネルギー値を設定する。制御回路24は、温度更新回数をカウントするカウンタpを1に設定する。制御回路24は、リサンプリングによる状態の選択個数mを外部から受け付け、選択回路221に設定する。また、制御回路24は、リサンプリングを行うまでの温度更新回数Mの外部からの設定を受け付ける。
【0098】
ここで、以下のステップS11~S19について、レプリカ更新回路21a1(k=1)に着目して説明するが、レプリカ更新回路21a2~21aKも同様の処理を並列に実行する。
【0099】
(S11)スコア計算部215は、スコアS を更新する。スコアS は、式(8)に基づいて更新される。なお、ステップS10の初期化後、ステップS11を最初に実行する際、スコア計算部215は、例えば、β=0,S =1として、スコアS を計算する。
【0100】
(S12)制御回路24は、p=0(mod M)であるか否かを判定する。p=0(mod M)の場合、ステップS13に処理が進む。p≠0(mod M)の場合、ステップS14に処理が進む。
【0101】
(S13)選択回路221は、リサンプリングを実行する。リサンプリングの手順の詳細は後述される。
(S14)インデックス生成部211は、インデックスjをj=0に設定する。
【0102】
(S15)インデックス生成部211は、インデックスjをインクリメントする(j=j+1)。更新部212は、外部メモリ51から読み出された結合係数{Wij}=W1j~WNjを受け付け、メモリ212aに格納する。更新部212は、状態変数xの値、および、局所場hの値を、エネルギー変化計算部213に出力する。
【0103】
(S16)エネルギー変化計算部213は、状態変数xの値および局所場hの値に基づいてエネルギー値の変化値ΔEを計算する。ΔEは、式(2)に基づいて計算される。エネルギー変化計算部213は、計算したΔEを判定部214に出力する。
【0104】
(S17)判定部214は、状態変数xの更新(ビット反転)を受け入れるか否かを判定する。受け入れる場合、ステップS18に処理が進む。受け入れない場合、ステップS19に処理が進む。
【0105】
(S18)更新部212は、インデックスi(i≠j)について、メモリ212aに保持される結合係数Wijに基づいて、メモリ212aに保持される局所場hを更新する。更新部212は、メモリ212aに格納された状態のうち、状態変数xの値を変化(ビット反転)させる。更に、更新部212は、メモリ212aに格納されたエネルギー値Eを更新する。
【0106】
(S19)インデックス生成部211は、j=Nであるか否かを判定する。j=Nの場合、ステップS20に処理が進む。j≠Nの場合、ステップS15に処理が進む。
(S20)制御回路24は、レプリカ更新回路21a1~21aKに供給される温度値(または逆温度値)を更新する(温度更新)。温度更新は、式(9)に基づいて実行される。制御回路24は、pをインクリメントする(p=p+1)。
【0107】
(S21)制御回路24は、温度値が目標温度に達したか否かを判定する。温度値が目標温度に達した場合、ステップS22に処理が進む。温度値が目標温度に達していない場合、ステップS11に処理が進む。なお、制御回路24は、逆温度値が目標逆温度に達したか否かを判定し、逆温度値が目標逆温度に達した場合にステップS22に進み、逆温度値が目標逆温度に達していない場合にステップS11に進むように制御してもよい。
【0108】
(S22)制御回路24は、レプリカ更新回路21a1~21aKに保持される状態のうち、最低エネルギーの状態を取得し、取得した最低エネルギーの状態を出力する。そして、処理が終了する。
【0109】
なお、ステップS22において、制御回路24は、リサンプリング回路22により選択された状態(例えば、m個の状態)や、選択された状態に対応するスコアを用いて平均値計算ブロック23により計算された所定の状態関数の平均値を出力してもよい。
【0110】
また、ステップS15における前もって決められた順にインデックスを選択する方法に代えて、moveのインデックスの選択(例えば、2つの状態変数のペアに対してインデックスを付けて選択)することも考えられる。この場合、更新部212は、前もって決められた順番で、moveのインデックスを選択することで、次の変化候補の状態変数を決定する。
【0111】
次に、リサンプリングの手順を説明する。
図8は、リサンプリングの例を示すフローチャートである。
リサンプリングの処理は、ステップS13に相当する。
【0112】
(S30)選択回路221は、カウンタCをC=1に設定する。
(S31)選択回路221は、レプリカ更新回路21a1~21aKのそれぞれからスコアSを取得する。選択回路221は、レプリカ更新回路21a1~21aKにより保持されるK個の状態のうちから、スコアSに基づいて状態をm個選択する。
【0113】
(S32)選択回路221は、選択した状態を、メモリ222に蓄積する。
(S33)選択回路221は、カウンタCをインクリメントする(C=C+1)。
(S34)選択回路221は、C=K/mであるか否かを判定する。C=K/mの場合、ステップS35に処理が進む。C≠K/mの場合、ステップS31に処理が進む。
【0114】
(S35)選択回路221は、メモリ222に蓄積したK個の状態をレプリカ更新回路21a1~21aKに書き出す。各レプリカ更新回路により保持されるエネルギー値や局所場の値も、更新後の状態に対応する値にそれぞれ更新される(各レプリカ更新回路により更新されてもよいし、選択回路221により更新されてもよい)。
【0115】
(S36)選択回路221は、レプリカ更新回路21a1~21aKのそれぞれのスコア計算部が保持するスコアSを1にリセットする。そして、リサンプリングの処理が終了する。
【0116】
このように、選択回路221は、第1の温度値における複数のスコア値に基づいて選択された複数の状態変数の値の組(状態ベクトルの組)により、レプリカ更新回路21a1~21aKのそれぞれが備えるメモリ(記憶部)に記憶された複数の状態変数の値を更新する。レプリカ更新回路21a1~21aKのそれぞれが備える更新部は、第1の温度値よりも低い第2の温度値において、選択回路221による更新後の複数の状態変数の値を起点にして、状態変数の値を変化させる。例えば、選択回路221は、式(11)に基づき、複数のスコア値の和に対するスコア値の割合(確率P)で、当該スコア値に対応するレプリカ更新回路により保持される複数の状態変数の値を選択する。こうして、次の温度ステップに引き継ぐ状態を各レプリカのスコアに応じて選択することで、目的の分布(ボルツマン分布)に従う比較的低いエネルギーを取る状態を、サンプルとして適切に発生させることができる。
【0117】
サンプリング装置20では、レプリカ更新回路21a1~21aKのそれぞれが備えるメモリにおいて、全結合係数のうち、少なくとも今回の変化候補のインデックスjに対応する結合係数{Wij}を保持すればよい。例えば、当該メモリにおいて、全結合係数のうち、今回の変化候補のインデックスjに対応する結合係数{Wij}のみを保持するようにしてもよい。
【0118】
すると、レプリカ更新回路21a1~21aKのそれぞれのメモリにおいて結合係数の保持に所要される容量を、最小で、N個(ただし、インデックスjの分を除けばN-1個)の結合係数のサイズに抑えられる。よって、レプリカ更新回路21a1~21aKのそれぞれの内蔵メモリの限られた容量の中で、N個の結合係数を保持する場合よりも、多くの状態変数を扱えるようになる。このように、サンプリング装置20によれば、扱える状態変数の数(問題規模)の制限を改善できる。
【0119】
[第3の実施の形態]
次に第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0120】
第3の実施の形態では、AISを用いるサンプリング装置の例を説明する。
図9は、第3の実施の形態のサンプリング装置の回路構成例を示す図である。
サンプリング装置20aは、レプリカ更新回路21a1,21a2,…,21aK、平均値計算ブロック23、制御回路24、メモリI/Fマクロ25、FIFO26およびスコア順選択回路27を有する。サンプリング装置20aは、リサンプリング回路22に代えて、スコア順選択回路27を有する点が、サンプリング装置20と異なる。サンプリング装置20aは、例えば、FPGAなどの半導体集積回路を用いて実現される。
【0121】
レプリカ更新回路21a1,21a2,…,21aK、平均値計算ブロック23、制御回路24、メモリI/Fマクロ25およびFIFO26の機能は、第2の実施の形態の同名の構成と同様であるため説明を省略する。ただし、制御回路24は、リサンプリング回路22の代わりに、スコア順選択回路27の動作を制御する。また、平均値計算ブロック23は、スコア順選択回路27により選択された状態に対応するスコアを用いて、状態関数の平均値の計算を行う。
【0122】
スコア順選択回路27は、温度値(または逆温度値)が目標値に到達するとレプリカ更新回路21a1~21aKのそれぞれにより更新されたスコアSを取得する。スコア順選択回路27は、スコアSに基づいて、レプリカ更新回路21a1~21aKにより保持される状態のうち、m個の状態を選択し、選択したm個の状態を出力する。
【0123】
図10は、スコア順選択回路の回路構成例を示す図である。
スコア順選択回路27は、選択回路271およびメモリ272を有する。
選択回路271は、レプリカ更新回路21a1~21aKのそれぞれのスコア計算部により計算されたスコアSを取得する。選択回路271は、スコアSの上位m個のレプリカに対応するm個の状態{x}を選択し、メモリ272に格納する。選択回路271は、選択したm個の状態{x}を出力する。選択回路271は、第1の実施の形態の選択回路12の一例である。
【0124】
メモリ272は、選択回路271により選択された状態xを保持する記憶部である。
図11は、選択回路の回路構成例を示す図である。
選択回路271は、選択部271aを有する。
【0125】
選択部271aは、K個のスコアSのうち、上位m個のスコアに対応するレプリカ更新回路を選択し、当該m個のレプリカ更新回路のそれぞれにより保持される状態ベクトルを出力する。出力先は、メモリ272でもよいし、平均値計算ブロック23の内部メモリでもよいし、外部メモリ51でもよい。
【0126】
次に、サンプリング装置20aの処理手順を説明する。
図12は、サンプリング装置の処理例を示すフローチャートである。
(S40)制御回路24は、イジングモデルに応じた初期化を実行する。例えば、制御回路24は、レプリカ更新回路21a1~21aKのそれぞれに、初期状態、局所場の初期値、初期温度値(または初期逆温度値)、温度値(または逆温度値)の変化のための係数α、バイアス値、および、初期エネルギー値を設定する。制御回路24は、温度更新回数をカウントするカウンタpを1に設定する。制御回路24は、目標温度到達時の状態の選択個数mを外部から受け付け、選択回路271に設定する。
【0127】
ここで、以下のステップS41~S47について、レプリカ更新回路21a1(k=1)に着目して説明するが、レプリカ更新回路21a2~21aKも同様の処理を並列に実行する。
【0128】
(S41)スコア計算部215は、スコアS を更新する。スコアS は、式(8)に基づいて更新される。なお、ステップS40の初期化後、ステップS41を最初に実行する際、スコア計算部215は、例えば、β=0,S =1として、スコアS を計算する。
【0129】
(S42)インデックス生成部211は、インデックスjをj=0に設定する。
(S43)インデックス生成部211は、インデックスjをインクリメントする(j=j+1)。更新部212は、外部メモリ51から読み出された結合係数{Wij}=W1j~WNjを受け付け、メモリ212aに格納する。更新部212は、状態変数xの値、および、局所場hの値を、エネルギー変化計算部213に出力する。
【0130】
(S44)エネルギー変化計算部213は、状態変数xの値および局所場hの値に基づいてエネルギー値の変化値ΔEを計算する。ΔEは、式(2)に基づいて計算される。エネルギー変化計算部213は、計算したΔEを判定部214に出力する。
【0131】
(S45)判定部214は、状態変数xの更新(ビット反転)を受け入れるか否かを判定する。受け入れる場合、ステップS46に処理が進む。受け入れない場合、ステップS47に処理が進む。
【0132】
(S46)更新部212は、インデックスi(i≠j)について、メモリ212aに保持される結合係数Wijに基づいて、メモリ212aに保持される局所場hを更新する。更新部212は、メモリ212aに格納された状態のうち、状態変数xの値を変化(ビット反転)させる。更に、更新部212は、メモリ212aに格納されたエネルギー値Eを更新する。
【0133】
(S47)インデックス生成部211は、j=Nであるか否かを判定する。j=Nの場合、ステップS48に処理が進む。j≠Nの場合、ステップS43に処理が進む。
(S48)制御回路24は、レプリカ更新回路21a1~21aKに供給される温度値(または逆温度値)を更新する(温度更新)。制御回路24は、pをインクリメントする(p=p+1)。
【0134】
(S49)制御回路24は、温度値が目標温度に達したか否かを判定する。温度値が目標温度に達した場合、ステップS50に処理が進む。温度値が目標温度に達していない場合、ステップS41に処理が進む。なお、制御回路24は、逆温度値が目標逆温度に達したか否かを判定し、逆温度値が目標逆温度に達した場合にステップS50に進み、逆温度値が目標逆温度に達していない場合にステップS41に進むように制御してもよい。
【0135】
(S50)スコア順選択回路27の選択回路271は、レプリカ更新回路21a1~21aKにより更新されたK個のスコアSを取得する。選択回路271は、K個のスコアSのうち、上位m個のスコアに対応するレプリカ更新回路を選択し、当該m個のレプリカ更新回路のそれぞれにより保持されるm個の状態ベクトルを出力する。また、例えば、選択回路271は、上位m個のスコアSを出力する。平均値計算ブロック23は選択回路271により出力されたm個のスコアに基づいて、式(10)により状態関数Aの平均値の計算を行い、m個の状態ベクトルとともに出力する。
【0136】
このように、選択回路271は、温度値が目標値に達すると、複数のスコア値に基づいて、所定数のレプリカ更新回路に保持される複数の状態変数の値の組を選択する、サンプリング装置20aでは、サンプリング装置20に比べて、サンプルのばらつきは大きくなるが、回路構成が簡単になり、また、リサンプリングによるオーバーヘッドが無いという利点がある。
【0137】
なお、ステップS50において、制御回路24は、レプリカ更新回路21a1~21aKのそれぞれにより得られた状態ベクトルのうち、最低のエネルギー値に対応する状態ベクトルを出力してもよい。例えば、制御回路24は、スコア順選択回路27により出力されたm個の状態ベクトルのうち、最低エネルギー値に対応する状態ベクトルを出力してもよい。これにより、サンプリング装置20aを組合せ最適化問題の求解に用いることもできる。
【0138】
サンプリング装置20aでは、レプリカ更新回路21a1~21aKのそれぞれが備えるメモリにおいて、全結合係数のうち、少なくとも今回の変化候補のインデックスjに対応する結合係数{Wij}を保持すればよい。例えば、当該メモリにおいて、全結合係数のうち、今回の変化候補のインデックスjに対応する結合係数{Wij}のみを保持するようにしてもよい。
【0139】
すると、レプリカ更新回路21a1~21aKのそれぞれのメモリにおいて結合係数の保持に所要される容量を、最小で、N個(ただし、インデックスjの分を除けばN-1個)の結合係数のサイズに抑えられる。よって、レプリカ更新回路21a1~21aKのそれぞれの内蔵メモリの限られた容量の中で、N個の結合係数を保持する場合よりも、多くの状態変数を扱えるようになる。このように、サンプリング装置20aによれば、扱える状態変数の数(問題規模)の制限を改善できる。
【0140】
[第4の実施の形態]
次に第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0141】
状態変数xが変化(ビット反転)したとき、その変化分δx=1-2xを用いて、更新後の局所場hは、h=h+δxijのように計算される。このため、分割した局所場を複数チップに分割して保持し、各チップに対して、制御回路により、δxの値(0,+1あるいは-1の何れか)をブロードキャストすることで、ローカルに局所場を更新でき、多チップ化を図れる。
【0142】
図13は、状態変数の分割例を示す図である。
N個の状態変数(および当該状態変数に対応する局所場)を複数のグループ(例えば、グループ61,62)に分割し、複数のグループのそれぞれを別チップに搭載する。局所場の更新のための加算演算は、これらの各チップで並列に行うことが可能である。
【0143】
例えば、第1の記憶部と第1の状態更新部とを第1のチップに搭載し、第2の記憶部と第2の状態更新部とを第2のチップに搭載する。図13の例の場合、例えば、グループ61が第1のチップに対応する。グループ62が第2のチップに対応する。
【0144】
第1の記憶部は、グループ61に対応する第1の部分の状態変数と変化候補の状態変数との組に対する結合係数を記憶する。第1の状態更新部は、第1の部分の状態変数の値および第1の部分の状態変数に対応する局所場の値を更新する。
【0145】
第2の記憶部は、グループ62に対応する第2の部分の状態変数と変化候補の状態変数との組に対する結合係数を記憶する。第2の状態更新部は、第2の部分の状態変数の値および第2の部分の状態変数に対応する局所場の値を更新する。
【0146】
グループの数(すなわち、チップの数)は、2個以上とすることができる。
図14は、第4の実施の形態のサンプリング装置の回路構成例を示す図である。
図14では、N個の状態変数をR個(Rは2以上の整数)のグループに分割した例が示されている。1つのグループに属する状態変数の数はN/R=m個である。この場合、1個または複数個の外部メモリを用いる。図14では、R個の外部メモリ51a1~51aRが例示されている。外部メモリ51a1~51aRは、例えば、DRAMである。外部メモリ51a1~51aRのそれぞれについても、R個のグループに分割された結合係数が、分けて格納される。
【0147】
サンプリング装置30は、チップ30a1,30a2,…,30aRおよび制御回路31を有する。チップ30a1~30aRは、外部メモリ51a1~51aRにそれぞれ接続される。以下の説明では、チップ30a1に着目して説明するが、チップ30a2~30aRも同様の構成である。
【0148】
チップ30a1は、レプリカ更新回路31a1~31aK、メモリI/Fマクロ311、FIFO312および分配回路313を有する。
レプリカ更新回路31a1~31aKのそれぞれは、m個の状態変数x ~x およびm個の局所場h ~h の更新を担当する。レプリカ更新回路31a1~31aKのそれぞれは、変化候補の状態変数のインデックスjに対する結合係数Wij=W1j~WNjのうち、W1j~Wmjのみを、レプリカ更新回路31a1~31aKのそれぞれの内部メモリ(図示を省略している)に保持すればよい。この場合、例えば、外部メモリ51a1は、mN個の結合係数W1i~Wmi(i=1~N)を保持する。
【0149】
変化させる状態変数x がチップ30a1以外のチップにより担当される場合、他のチップのk番目のレプリカ更新回路により計算されたδx が、制御回路31を介して、チップ30a1のk番目のレプリカ更新回路に供給される。k番目のレプリカは、チップ30a1~30aRに搭載されたR個のレプリカ更新回路(k番目のレプリカ更新回路)によって実現される。
【0150】
メモリI/Fマクロ311は、制御回路31からのコマンドに応じて、外部メモリ51a1に記憶された結合係数W1i~Wmi(i=1~N)のうち、今回の変化候補のインデックスjに対応する結合係数W1j~Wmjを読み出し、FIFO312に出力する。メモリI/Fマクロ311は、外部メモリ51a1から出力されるデータの同期や並べ替えなどの処理も行う。
【0151】
FIFO312は、メモリI/Fマクロ311から供給される結合係数W1j~Wmjを、データ送信の同期を取って、分配回路313に出力する。
分配回路313は、FIFO312から供給される結合係数W1j~Wmjをレプリカ更新回路31a1~31aKの内部メモリに格納する。
【0152】
制御回路31は、第2,第3の実施の形態で例示した制御回路24の機能を有する。また、制御回路31は、あるチップで判定されたレプリカkのインデックスjに対するδx を取得し、他のチップのレプリカkのレプリカ更新回路に送信する。更に、制御回路31は、各チップにおけるレプリカkのレプリカ更新回路により保持される状態変数の値をマージして、レプリカkの状態ベクトルを作成する。
【0153】
また、図14では図示を省略しているが、サンプリング装置30は、各レプリカのスコアを計算するスコア計算回路や各レプリカのエネルギーを計算するエネルギー計算回路を有し、リサンプリング回路22あるいはスコア順選択回路27に相当する回路を有する。各レプリカのスコアは、制御回路31によりマージされた各レプリカの状態ベクトルに対して計算される。
【0154】
また、制御回路31は、リサンプリングに伴う状態ベクトルをレプリカ更新回路へ書き出す処理を制御する。すなわち、制御回路31は、リサンプリングにより選択された状態ベクトルをレプリカkに反映させる場合、当該状態ベクトルに属するN個の状態変数をR個のグループに分割して各チップのk番目のレプリカ更新回路に書き出す。このとき、制御回路31は、各状態変数の局所場やレプリカのエネルギー値も更新する。
【0155】
このように、サンプリング装置30におけるK個のレプリカを複数のチップ(例えば、チップ30a1~30aR)により実現することで、1つのレプリカ更新回路の内部メモリ(記憶部)において結合係数の保持に所要される容量を更に低減できる。このため、より多くの状態変数を扱えるようになり、状態変数の数の制限を改善できる。
【0156】
ところで、既存の情報処理装置(例えば、特開2018-41351号公報)では状態変数(ビット)が反転したときのエネルギー増分に基づき並列試行により反転する状態変数を決定する。このため、高速性が得られるが、反転するビットは予測不能な形(実質的にランダム)で発生するため、反転ビットに応じて局所場を更新するためには局所場の値を保持したメモリに対してランダムなアクセスが生ずる。情報処理装置を高速に動作させるためには、ランダムアクセス可能なメモリをチップ上に搭載し、全ての結合係数を当該メモリに蓄積する必要が生ずる。したがって、このメモリ容量により扱える変数の数(問題規模に相当)が制限されるという問題が発生する。
【0157】
これに対し、高速性の源である並列性を保ちながら、オンチップメモリ容量による問題規模の制約を改善するため、並列試行に変わる効率のよい並列化手法が求められる。
そこで、サンプリング装置10,20,20a,30では、当該並列化手法として、確率的探索プロセス(レプリカ)を並列に動作させ、複数のレプリカの情報を統合する方法を採る。複数のレプリカの情報を統合する方法には、Jarzynski-Nealの原理の応用であるAIPあるいはPAが用いられる。
【0158】
サンプリング装置10,20,20a,30では、例示したように、インデックス順の試行が行われる。結合係数の読み出しがチップ外のメモリ(外部メモリ)へのシリアルアクセスで行われる。結合係数の1行分がシリアルアクセスで読み出されて、チップ上の複数レプリカで共通に使用されて試行が行われる。レプリカの温度値が段階的に下げられて、レプリカのエネルギーと温度値とにより決まるスコアに応じて、出力対象状態が選択される。例えば、サンプリング装置10,20,30では、次の温度値に引き継がれるレプリカの状態が決定され得る。
【0159】
サンプリング装置10,20,20a,30によれば、試行の並列性を保って高速化を図りながら、オンチップメモリ容量による問題規模の制約を改善することができる。
【符号の説明】
【0160】
10 サンプリング装置
11a1,11a2,…,11aK 更新回路
12 選択回路
13 制御回路
14 メモリ制御回路
111 記憶部
112 状態更新部
113 スコア更新部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14