(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-02
(45)【発行日】2023-05-15
(54)【発明の名称】サンプリング装置及びサンプリング装置の制御方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20230508BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2019031685
(22)【出願日】2019-02-25
【審査請求日】2021-11-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】土手 暁
(72)【発明者】
【氏名】田村 泰孝
【審査官】金田 孝之
(56)【参考文献】
【文献】特開2018-063626(JP,A)
【文献】特開平06-149866(JP,A)
【文献】特開2018-206127(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持するとともに、所定試行回数毎に前記複数の状態変数の値を出力する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、更新インデックス値に基づいて選択された重み値に基づき、エネルギーの変化値を各状態遷移に対して計算するエネルギー変化計算部と、
複数の前記エネルギーの変化値に基づいて前記各状態遷移のうちの少なくとも1つが許容されるようにオフセット値を決定し、複数の前記エネルギーの変化値のそれぞれに前記オフセット値を付加した複数の評価値を出力するとともに、前記所定試行回数毎に前記オフセット値を出力するオフセット制御部と、
温度を示す温度値と乱数値とに基づいて決まる閾値と、前記複数の評価値のそれぞれとを比較した結果に基づき、前記各状態遷移について状態遷移を許容するか否かを示す複数のフラグ値を出力する比較部と、
前記複数のフラグ値のうち、状態遷移を許容することを示すフラグ値の数を計数した計数値を、前記所定試行回数毎に出力するフラグ計数部と、
前記複数のフラグ値、または複数の前記エネルギーの変化値に基づいて、前記各状態遷移のうちの1つに対応するインデックス値を前記更新インデックス値として出力する選択部と、
前記オフセット制御部が出力した前記オフセット値と、前記フラグ計数部が出力した前記計数値に基づき、マルコフ連鎖モンテカルロ法にしたがった状態遷移における1つの状態に滞在する試行回数の期待値を計算する試行回数計算部と、
を有するサンプリング装置。
【請求項2】
前記オフセット制御部は、複数の前記エネルギーの変化値のうちの最小値が0以上である場合、前記最小値を前記オフセット値として決定し、複数の前記エネルギーの変化値のそれぞれから前記最小値を差し引くことで、前記複数の評価値を算出する、請求項
1に記載のサンプリング装置。
【請求項3】
前記選択部は、前記複数のフラグ値のそれぞれに、それぞれ独立な複数の乱数値の何れかを加算した加算結果の大小関係に基づき、前記複数のフラグ値の何れかを選択する、請求項1
または2に記載のサンプリング装置。
【請求項4】
前記複数のフラグ値に基づき、複数の前記エネルギーの変化値のうち、許容されない状態遷移であるとされている複数の状態遷移に対する複数の非許容エネルギー変化値を出力するエネルギー変化置き換え部と、
前記複数の非許容エネルギー変化値に基づき前記複数の状態遷移のうちの少なくとも1つが許容されるように前記オフセット値とは別のオフセット値を決定し、前記複数の非許容エネルギー変化値のそれぞれに前記別のオフセット値を付加した、前記複数の評価値とは別の複数の評価値を出力するとともに、前記所定試行回数毎に前記別のオフセット値を出力する他のオフセット制御部と、
前記閾値と、前記別の複数の評価値のそれぞれとを比較した結果に基づき、前記複数の状態遷移のそれぞれについて状態遷移を許容するか否かを示す、前記複数のフラグ値とは別の複数のフラグ値を出力する他の比較部と、
前記別の複数のフラグ値のうち、状態遷移を許容することを示すフラグ値の数を計数した、前記計数値とは別の計数値を、前記所定試行回数毎に出力する他のフラグ計数部と、
前記別の計数値、前記オフセット値及び前記別のオフセット値に基づいて、前記計数値を補正する計数値補正部と、
をさらに有する請求項1に記載のサンプリング装置。
【請求項5】
前記試行回数計算部は、補正された前記計数値と、前記オフセット値と、前記別のオフセット値と、に基づいて、
前記期待値を計算す
る請求項
4に記載のサンプリング装置。
【請求項6】
前記選択部は、複数の前記エネルギーの変化値のうち、0より小さい変化値を0に更新させた複数の更新エネルギー変化値を生成し、前記複数の更新エネルギー変化値のそれぞれに、前記温度値と互いに独立な複数の乱数値とに基づいてそれぞれ算出される複数の第2の閾値の何れかを加算した複数の第2の評価値のうちで、最小となる第2の評価値に対応する前記インデックス値を前記更新インデックス値として出力する、請求項1乃至
5の何れか一項に記載のサンプリング装置。
【請求項7】
サンプリング装置の制御方法において、
前記サンプリング装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持するとともに、所定試行回数毎に前記複数の状態変数の値を出力し、
前記サンプリング装置が有するエネルギー変化計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、更新インデックス値に基づいて選択された重み値に基づき、エネルギーの変化値を各状態遷移に対して計算し、
前記サンプリング装置が有するオフセット制御部が、複数の前記エネルギーの変化値に基づいて前記各状態遷移のうちの少なくとも1つが許容されるようにオフセット値を決定し、複数の前記エネルギーの変化値のそれぞれに前記オフセット値を付加した複数の評価値を出力するとともに、前記所定試行回数毎に前記オフセット値を出力し、
前記サンプリング装置が有する比較部が、温度を示す温度値と乱数値とに基づいて決まる閾値と、前記複数の評価値のそれぞれとを比較した結果に基づき、前記各状態遷移について状態遷移を許容するか否かを示す複数のフラグ値を出力し、
前記サンプリング装置が有するフラグ計数部が、前記複数のフラグ値のうち、状態遷移を許容することを示すフラグ値の数を計数した計数値を、前記所定試行回数毎に出力し、
前記サンプリング装置が有する選択部が、前記複数のフラグ値、または複数の前記エネルギーの変化値に基づいて、前記各状態遷移のうちの1つに対応するインデックス値を前記更新インデックス値として出力する、
前記サンプリング装置が有する試行回数計算部が、前記オフセット制御部が出力した前記オフセット値と、前記フラグ計数部が出力した前記計数値に基づき、マルコフ連鎖モンテカルロ法にしたがった状態遷移における1つの状態に滞在する試行回数の期待値を計算する、
サンプリング装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サンプリング装置及びサンプリング装置の制御方法に関する。
【背景技術】
【0002】
組合せ最適化問題を解くための手法として、組合せ最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換し、マルコフ連鎖モンテカルロ法を用いて、イジングモデルの状態をエネルギーが低い状態に遷移させていく手法がある。以下、マルコフ連鎖モンテカルロ法を、MCMC(Markov-Chain Monte Carlo)法と略す。イジングモデルの状態は、複数の状態変数の値の組合せにより表現でき、状態変数の数がN個の場合、x=(x1,x2,…,xN)などと表せる。各状態変数の値として、0または1を用いることができる。
【0003】
イジングモデルのエネルギーを表すイジング型のエネルギー関数E(x)は、たとえば、以下の式(1)で定義される。
【0004】
【0005】
右辺の1項目は、イジングモデルの全状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xiは、識別情報(以下インデックス値という)がiの状態変数、xjは、インデックス値=jの状態変数であり、Wijは、インデックス値=i,jの状態変数間の相互作用の大きさを示す重み値である。
【0006】
右辺の2項目は、各インデックス値についてのバイアス係数と状態変数との積の総和を求めたものである。biは、インデックス値=iについてのバイアス係数を示している。
また、状態変数xiが変化して1-xiとなると、状態変数xiの増加分は、Δxi=(1-xi)-xi=1-2xiと表せる。スピン反転(状態変数の値の変化)に伴うエネルギー変化ΔEiは、以下の式(2)で表される。
【0007】
【0008】
式(2)において、状態変数xiが1から0に変化するとき、Δxiは-1となり、状態変数xiが0から1に変化するとき、Δxiは1となる。なお、hiはローカルフィールド(局所場)と呼ばれ、Δxiに応じてローカルフィールドhiに符号(+1または-1)を乗じたものがエネルギー変化ΔEiとなる。
【0009】
ある状態遷移に伴うエネルギー変化ΔEに対するその状態遷移の許容確率として、以下の式(3)で表されるメトロポリス法またはギブス法で規定される許容確率A(ΔE)を用いることができる。
【0010】
【0011】
式(3)においてβは、逆温度(温度を表す温度値の逆数)である。エネルギーが増加する状態遷移についても確率的に許容される。
通常のMCMC法では、ランダムまたはインデックス値の順(シーケンシャル)に、状態変数が選択され、その状態変数の値が変化する状態遷移に伴うエネルギー変化ΔEに基づいて、上記の許容確率A(ΔE)でその状態遷移を許容する。そしてその状態遷移を許容する場合には状態変数の値が更新される。このような処理が所定の試行回数、繰り返される。また、最低エネルギーとなる状態(最適解)を探索するために、温度を徐々に下げていくシミュレーテッド・アニーリング法が用いられる場合もある。
【0012】
一方、組合せ最適化問題を高速に解くためのハードウェアとして、デジタル回路を用いた最適化装置がある(たとえば、特許文献1参照)。最適化装置は、以下に示すように複数の状態遷移を同時に遷移候補として、1つの状態遷移を選択する並列探索を行う。
【0013】
最適化装置は、各状態遷移に伴うエネルギー変化と温度値に基づいて、上記の許容確率A(ΔE)で各状態遷移を許容する。そして、最適化装置は複数の状態遷移の中から、許容された状態遷移を優先的に1つ選択し状態を更新する。最適化装置は、以上のような処理を、所定の試行回数、繰り返し行う。また、従来の最適化装置では、状態が局所解に拘束されるなどによって状態遷移が生じない場合、エネルギー変化にオフセット値を付加していた。
【先行技術文献】
【特許文献】
【0014】
【発明の概要】
【発明が解決しようとする課題】
【0015】
ところで、平衡状態では各状態の占有確率を示す確率分布はボルツマン分布となる。そのため、MCMC法を用いて温度一定とした状態遷移を繰り返す過程により得られた状態または状態に基づいた値をサンプルとして出力することで、ボルツマン分布にしたがうサンプルを発生するサンプラーが実現できる。発生したサンプルは、たとえば、機械学習などでの期待値の計算に用いられる。
【0016】
しかし、従来のデジタル回路を用いた最適化装置は、前述のような並列探索処理及びオフセット値の付加による計算処理の高速化を行っているため、確率分布がボルツマン分布からずれる可能性がある。従来のデジタル回路を用いた最適化装置をサンプラー(以下サンプリング装置という)として用いる場合、確率分布のボルツマン分布からのずれによって、サンプリング精度が通常のMCMC法を用いた場合よりも悪化してしまう可能性があった。
【0017】
1つの側面では、本発明は、計算処理の高速性を損なうことなく高精度のサンプリングが可能なサンプリング装置及びサンプリング装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0018】
1つの実施態様では、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持するとともに、所定試行回数毎に前記複数の状態変数の値を出力する状態保持部と、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、更新インデックス値に基づいて選択された重み値に基づき、エネルギーの変化値を各状態遷移に対して計算するエネルギー変化計算部と、複数の前記エネルギーの変化値に基づいて前記各状態遷移のうちの少なくとも1つが許容されるようにオフセット値を決定し、複数の前記エネルギーの変化値のそれぞれに前記オフセット値を付加した複数の評価値を出力するとともに、前記所定試行回数毎に前記オフセット値を出力するオフセット制御部と、温度を示す温度値と乱数値とに基づいて決まる閾値と、前記複数の評価値のそれぞれとを比較した結果に基づき、前記各状態遷移について状態遷移を許容するか否かを示す複数のフラグ値を出力する比較部と、前記複数のフラグ値のうち、状態遷移を許容することを示すフラグ値の数を計数した計数値を、前記所定試行回数毎に出力するフラグ計数部と、前記複数のフラグ値、または複数の前記エネルギーの変化値に基づいて、前記各状態遷移のうちの1つに対応するインデックス値を前記更新インデックス値として出力する選択部と、を有するサンプリング装置が提供される。
【0019】
また、1つの実施態様では、サンプリング装置の制御方法が提供される。
【発明の効果】
【0020】
1つの側面では、本発明は、計算処理の高速性を損なうことなく高精度のサンプリングが可能となる。
【図面の簡単な説明】
【0021】
【
図1】第1の実施の形態のサンプリング装置の一例を示す図である。
【
図2】各状態に留まる試行回数を1回とした場合の選択確率の分布例を示す図である。
【
図3】状態保持部及びエネルギー変化計算部の一例を示す図である。
【
図4】オフセット制御部及び比較部の一例を示す図である。
【
図9】サンプリングタイミングの例を示す図である。
【
図10】サンプリング動作の一例の流れを示すフローチャートである。
【
図11】最適化処理動作の一例の流れを示すフローチャートである。
【
図12】第2の実施の形態のサンプリング装置の一例を示す図である。
【
図13】2種類のフラグ値についての計数値N
f1,N
f2を発生させる動作の一例の流れを示すフローチャートである。
【
図14】第3の実施の形態のサンプリング装置の一例を示す図である。
【
図16】温度とエネルギーとの関係についてのシミュレーション結果の例を示す図である。
【
図17】試行回数と最低エネルギー状態が得られる確率との関係についてのシミュレーション結果の例を示す図である。
【
図18】レプリカ交換法を利用したサンプリング装置の例を示す図である。
【
図19】レプリカ交換法を利用したサンプリング装置の動作例を示すフローチャートである。
【
図20】サンプリング装置の他の変形例を示す図である。
【
図21】期待値計算処理を行うサンプリング装置の動作例を示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
なお、イジングモデルを用いたシミュレーテッド・アニーリングにおいては、状態遷移に伴い変化する状態変数は1つだけである。そこで、以下では各状態遷移をそれぞれ識別するインデックス値は、1つの状態変数のインデックス値と等しいものとして説明を行う。しかし、状態遷移のインデックス値と状態遷移に伴い変化する状態遷移のインデックス値が一致する形態に限定されるものではない。
【0023】
従来の最適化装置において確率分布がボルツマン分布からずれる原因は、並列探索処理及びオフセット値の付加による計算処理の高速化を行っているため、1つの状態に滞在する試行回数が、通常のMCMC法を用いた場合よりも少なくなるためである。従来の最適化装置において、理想的なオフセット値が適用された場合、1つの状態に滞在する試行回数は、1回となる。
【0024】
ボルツマン分布にしたがったサンプルを得るために、上記のようなオフセット値を用い、サンプリングを行うたび、通常のMCMC法であればその状態に留まったであろう試行回数の値またはその期待値により、サンプルに重み付けを行えばよい。つまり、ある状態が1回観測された(サンプリングされた)場合、その状態が通常のMCMC法を用いた場合の試行回数だけサンプリングされたとするような重み付けを行えばよい。
【0025】
通常のMCMC法において、ある状態からインデックス値=iの状態変数の値が変化した別の状態に遷移する確率は、Γi=A(ΔEi)/Nである。A(ΔEi)は、インデックス値=iの状態変数の値が変化する状態遷移の許容確率である。Nは、状態変数の総数である。試行毎に別の状態に遷移する確率は、以下の式(4)で表せる。
【0026】
【0027】
式(4)で表される確率の逆数が、通常のMCMC法において、1つの状態に滞在する試行回数の期待値となる。
なお、何回かの試行を行って最終的に状態変数xiの値の変化が生じる確率Piは、以下の式(5)で表せる。
【0028】
【0029】
以下に示す第1の実施の形態のサンプリング装置は、所定試行回数毎に、通常のMCMC法において1つの状態に滞在する試行回数の期待値を、その状態とともに出力する装置である。
【0030】
(第1の実施の形態)
図1は、第1の実施の形態のサンプリング装置の一例を示す図である。
サンプリング装置10は、状態保持部11、エネルギー変化計算部12、オフセット制御部13、比較部14、フラグ計数部15、選択部16、制御部17、試行回数計算部18を有する。
【0031】
状態保持部11は、たとえば、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持するとともに、所定試行回数毎に複数の状態変数の値を出力する。評価関数は、たとえば、式(1)に示したようなエネルギー関数E(x)である。
【0032】
以下では、複数の状態変数の数(状態変数の総数)をN個とし、N個の状態変数を状態変数xi(i=1~N)または状態変数x1~xNと表記する。また、状態変数x1~xNの各値の組合せを状態xという。なお、以下の説明では、状態保持部11は、式(2)に示したローカルフィールドhi(i=1~N)についても保持するものとして説明するが、ローカルフィールドhiは、エネルギー変化計算部12が保持していてもよい。
【0033】
状態保持部11は、たとえば、レジスタやSRAM(Static Random Access Memory)などである。
エネルギー変化計算部12は、状態変数x1~xNの値の何れかが変化することに応じて状態遷移が起こる場合、更新インデックス値に基づいて選択された重み値に基づき、エネルギーの変化値(以下エネルギー変化ΔEiという)を各状態遷移に対して計算する。
【0034】
エネルギー変化ΔEiは、前述の式(2)のように表せ、エネルギー変化計算部12は、Δxiに応じてローカルフィールドhiに符号(+1または-1)を乗じることでエネルギー変化ΔEiを計算できる。また、状態変数xjが0から1に変化したときのローカルフィールドhiの変化分Δhiは、+Wij、状態変数xjが1から0に変化したときの変化分Δhiは、-Wijと表せる。したがって、ローカルフィールドhiは行列演算により毎回計算しなおす必要はなく、状態遷移にともなって変化のあったビットによる変化分だけWijを加減算すればよい。エネルギー変化計算部12は、計算(または更新)したローカルフィールドhiを状態保持部11に保持させる。
【0035】
このようなエネルギー変化計算部12は、たとえば、重み値Wijなどを記憶する記憶部(レジスタやSRAMなど)、セレクタ、乗算器、加算器などを用いて実現できる。なお、以下の説明ではエネルギー変化計算部12は、N個のエネルギー変化ΔEi(i=1~N)(以下エネルギー変化ΔE1~ΔENと表記する場合もある)とともに、インデックス値=i(1~N)についても出力するものとする。
【0036】
オフセット制御部13は、エネルギー変化ΔE1~ΔENに基づいて各状態遷移のうちの少なくとも1つが許容されるようにオフセット値Eoffを決定し、エネルギー変化ΔE1~ΔENのそれぞれにオフセット値Eoffを付加した複数の評価値を出力する。また、オフセット制御部13は、所定試行回数毎にオフセット値Eoffを出力する。オフセット制御部13の例やオフセット値Eoffの決定方法の例については後述する。
【0037】
比較部14は、温度値Tと乱数値とに基づいて決まる閾値と、複数の評価値のそれぞれとを比較した結果に基づき、各状態遷移(の候補)について状態遷移を許容するか否かを示す複数のフラグ値F1,F2,…,FNを出力する。比較部14は、このような処理によって、式(3)に示した許容確率A(ΔE)で状態遷移を許容させることができる。比較部14の例や、許容確率A(ΔE)で状態遷移を許容させることができる理由については後述する。なお、以下の説明では、サンプリング動作は一定の温度で行われる(温度値Tが固定値となる)ものとするが、温度は変更されるようにしてもよい。
【0038】
フラグ計数部15は、フラグ値F1~FNのうち、状態遷移を許容することを示すフラグ値の数を計数し、所定試行回数毎に計数したフラグ値の数(計数値Nf)を出力する。フラグ計数部15の例については後述する。
【0039】
選択部16はフラグ値F1~FNの何れかを選択するとともに、選択した何れかのフラグ値に対応するインデックス値を更新インデックス値として出力する。選択部16の例についても後述する。
【0040】
制御部17は、サンプリング装置10の各部を制御する。制御部17は、たとえば、試行回数が所定試行回数に達したか否かを判定し、所定試行回数に達したときに、そのときの状態を状態保持部11に出力させ、オフセット値Eoffをオフセット制御部13に出力させる。さらに、制御部17は、フラグ計数部15にそのときの計数値Nfを計数させる。また、制御部17は、比較部14に温度値Tを供給する。
【0041】
制御部17は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路にて実現できる。なお、制御部17は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の処理を行う。
【0042】
試行回数計算部18は、オフセット制御部13が出力したオフセット値Eoffと、フラグ計数部15が出力した計数値Nfに基づき、通常のMCMC法において、1つの状態に滞在する試行回数Ntrialの期待値<Ntrial>(近似値)を計算する。試行回数計算部18は、たとえば、ASICやFPGAなどの特定用途の電子回路、CPUやDSPなどのプロセッサにて実現できる。なお、試行回数計算部18は、サンプリング装置10の外部に設けられていてもよいし、制御部17が、オフセット値Eoffと、計数値Nfに基づいて、期待値<Ntrial>を計算してもよい。
【0043】
オフセット値E
offと計数値N
fを、期待値<N
trial>を求めるための値として用いることができる理由は以下の通りである。
図1には、通常のMCMC法における遷移確率Γ
iの分布の例が示されている。通常のMCMC法では、遷移確率Γ
iを全状態変数について積算した値(試行毎に別の状態に遷移する確率(式(4))は、1に満たない。前述のように、式(4)で表される確率の逆数が、通常のMCMC法において、1つの状態に滞在する試行回数N
trialの期待値<N
trial>となる。期待値<N
trial>は、現在の状態に留まっている時間(滞在時間)の期待値に相当する。
【0044】
一方、サンプリング装置10において、各状態に留まる試行回数を1回とした場合、各状態変数が反転する対象として選ばれる選択確率の分布は、たとえば、以下のようになる。
【0045】
図2は、各状態に留まる試行回数を1回とした場合の選択確率の分布例を示す図である。
p
1~p
Nは、状態変数x
i(i=1~N)の選択確率である。各状態に留まる試行回数を1回とした場合、各試行において状態変数x
i(i=1~N)の何れかの変化が生じるため、p
1~p
Nの積算結果は1となる。選択確率p
iは、以下の式(6)で表せる。
【0046】
【0047】
式(6)の右辺は、式(5)と同じになる。
サンプリング装置10は、各状態遷移のうちの少なくとも1つが許容されるようなオフセット値Eoffを用いることで、上記のように各状態に留まる試行回数が1回となるようにする。オフセット値Eoffを適用したときの許容確率をA(ΔEi-Eoff)とすると、A(ΔEi-Eoff)は、前述の式(3)により(メトロポリス法を用いた場合)、以下の式(7)のように表せる。
【0048】
【0049】
逆温度βとオフセット値Eoffが正の場合、許容確率A(ΔEi-Eoff)は、本来の許容確率A(ΔEi)に対して、1以上の係数exp(β・Eoff)を乗じた確率となる。このため、許容確率A(ΔEi-Eoff)が用いられる場合、本来の許容確率A(ΔEi)を用いた場合に対して、各状態遷移の許容確率の相互の比率は変わらない。
【0050】
期待値<Ntrial>は、式(7)を用いて、以下の式(8)のように表せる。
【0051】
【0052】
すなわち、状態変数x1~xNについてのA(ΔEi-Eoff)を積算した値<Nf>は、状態遷移を許容することを示すフラグ値の数である計数値Nfにより近似できる。
式(8)において、逆温度βは一定値(温度値Tが固定値であるため)であり、状態変数の総数=Nも固定値である。そのため、サンプリングタイミングにおけるオフセット値Eoffと計数値Nfが得られれば、そのサンプリングタイミングにおける期待値<Ntrial>を近似的に求めることができる。
【0053】
サンプリング装置10は、オフセット値Eoffを用いて各状態に留まる試行回数が1回となるようにして、所定試行回数毎、状態と、オフセット値Eoffと、計数値Nfとを出力(サンプリング)する。これにより、上記のようにオフセット値Eoffと、計数値Nfとから得られる期待値<Ntrial>による重み付けにより、得られた状態が通常のMCMC法ではどのくらいの試行回数、その状態に留まるのかがわかり、通常のMCMC法の確率過程を再現できる。
【0054】
図1には、通常のMCMC法を用いた場合と、サンプリング装置10を用いた場合のエネルギーEと試行回数との関係の一例を示すグラフが示されている。
図1に示すように、たとえば、あるエネルギーEaをもつ状態xの滞在時間は、サンプリング装置10を用いた場合は1試行回数分であるのに対し、通常のMCMC法を用いた場合、期待値<N
trial>分である。期待値<N
trial>がわかれば、上記のように通常のMCMC法の確率過程を再現できる。
【0055】
つまり、通常のMCMC法にしたがったサンプリングを再現できるため、従来の最適化装置をサンプリング装置として用いた場合に比べて高精度なサンプリングが可能になり、ボルツマン分布にしたがったサンプルが得られる。
【0056】
機械学習の理論は、サンプルがボルツマン分布になっていることを根拠にしているものがほとんどであり、上記のようなサンプリング装置10を用いることで、機械学習に適したサンプルを得ることができる。
【0057】
また、各試行で状態遷移が生じることと、1回のサンプリングで実効的に複数回サンプリングするのと同じ精度が得られることにより、従来の最適化装置をサンプリング装置として用いた場合に比べて計算処理の高速性が損なわれることもない。
【0058】
以下、サンプリング装置10の各部の例を説明する。
(状態保持部11及びエネルギー変化計算部12の例)
図3は、状態保持部及びエネルギー変化計算部の一例を示す図である。
【0059】
状態保持部11は、状態変数x
1~x
Nの値とローカルフィールドh
1~h
Nとを保持するレジスタ11aを有する。レジスタ11aは、クロック信号clkに同期して、エネルギー変化計算部12が更新した、状態変数x
1~x
Nの何れかの値とローカルフィールドh
1~h
Nとを取り込む。クロック信号clkは、図示しないクロック信号生成回路から供給される。状態保持部11は、たとえば、
図1に示した制御部17の制御のもと、所定試行回数毎に複数の状態変数の値を、サンプリング装置10の外部に出力する。
【0060】
エネルギー変化計算部12は、ΔE計算回路12a1,12a2,…,12aN、更新回路12bを有する。
ΔE計算回路12a1~12aNのそれぞれは、状態変数x1~xNの値の何れかとローカルフィールドh1~hNの何れかを状態保持部11から読み出し、エネルギー変化ΔE1~ENの何れかを計算する。たとえば、ΔE計算回路12a1は、状態変数x1の値とローカルフィールドh1とを状態保持部11から読み出し、状態変数x1の値が変化することによるエネルギー変化ΔE1を計算する。ΔE計算回路12aNは、状態変数xNの値とローカルフィールドhNとを状態保持部11から読み出し、状態変数xNの値が変化することによるエネルギー変化ΔENを計算する。
【0061】
エネルギー変化ΔEi(i=1~N)は、式(2)のように表せるため、ΔE計算回路12a1~12aNのそれぞれは、たとえば、状態変数x1~xNの値に応じてローカルフィールドh1~hNに符号(+1または-1)を乗じる乗算器を用いて実現できる。
【0062】
なお、ΔE計算回路12a1~12aNのそれぞれは、インデックス値=i(1~N)の何れかを出力する。たとえば、ΔE計算回路12a1は、インデックス値として1を出力し、ΔE計算回路12aNは、インデックス値としてNを出力する。ΔE計算回路12a1~12aNは、インデックス値を保持する保持部(たとえば、レジスタ)を有する。
【0063】
更新回路12bは、選択部16より更新インデックス値を受けると、更新インデックス値に対応した状態変数の値を変化させるとともに、その変化に基づいて、ローカルフィールドh1~hNを更新する。更新後の各値は、状態保持部11に書き込まれる。
【0064】
たとえば、更新回路12bは、更新インデックス値がjの場合、状態変数xjを1-xjに変える。そして、更新回路12bは、ローカルフィールドhi(i=1~N)を、hi+Wij・Δxjに更新する。
【0065】
なお、更新回路12bは、上記のような更新処理を行うために、現在の状態変数xi(i=1~N)の値とローカルフィールドhiを、状態保持部11から取得する。重み値Wijは、図示しない記憶部に記憶されており、更新回路12bは、その記憶部から重み値Wijを取得する。
【0066】
このような更新回路12bは、重み値W
ijなどを記憶する記憶部(レジスタやSRAMなど)、セレクタ、乗算器、加算器などを用いて実現できる。
(オフセット制御部13及び比較部14の例)
図4は、オフセット制御部及び比較部の一例を示す図である。なお、
図4では、前述のエネルギー変化ΔE
1~ΔE
Nがまとめて{ΔE
i}と表記され、前述のフラグ値F
1~F
Nがまとめて{F
i}と表記されている。
【0067】
オフセット制御部13は、最小値検出回路13a、加算回路13b、選択信号生成回路13c、セレクタ13dを有する。
最小値検出回路13aは、エネルギー変化ΔE1~ΔENのうちの最小値ΔEminを検出する。
【0068】
加算回路13bは、エネルギー変化ΔE1~ΔENから、最小値ΔEminをオフセット値として差し引く(エネルギー変化ΔE1~ΔENに-ΔEminを加算する、ということもできる)演算回路である。加算回路13bの代りに減算回路を用いることもできる。
【0069】
選択信号生成回路13cは、選択信号signを生成する。選択信号生成回路13cは、最小値ΔEminが0より小さい場合、セレクタ13dにエネルギー変化ΔE1~ΔENを選択させる選択信号sign(以下では、0とする)を生成する。選択信号生成回路13cは、最小値ΔEminが0以上の場合、セレクタ13dに加算回路13bが算出した値を選択させる選択信号sign(以下では、1とする)を生成する。
【0070】
セレクタ13dは、選択信号signが0の場合、エネルギー変化ΔE1~ΔEN({ΔEi})を選択し、選択信号signが1の場合、加算回路13bが算出した値、すなわち{ΔEi}-ΔEminを選択して、評価値として出力する。
【0071】
図4に示すようなオフセット制御部13を用いた場合、オフセット値E
offは、E
off=max[0,min(ΔE
i)]と表せる。つまり、エネルギー変化ΔE
1~ΔE
Nのうちの最小値ΔE
minが0以上の場合、E
off=ΔE
min、それ以外の場合、E
off=0である。
【0072】
このようなオフセット値E
offを用いることで、状態変数x
1~x
Nのうち、少なくとも1つは状態遷移が許容される。その理由を以下に示す。
図5は、オフセット値の適用例を示す図である。
図5において、横軸は状態遷移の候補となる状態変数x
iを表し、縦軸はエネルギー変化ΔEを表す。
【0073】
波形20aは、状態変数x
1~x
Nのそれぞれが変化することによるエネルギー変化{ΔE
i}の例を示している。
図5の例では、エネルギー変化{ΔE
i}のうち、状態変数x
minの値が変化することによるエネルギー変化ΔEが最小値ΔE
minであり、0より大きい値である。波形20bは、波形20aで示されるエネルギー変化{ΔE
i}から最小値ΔE
minを引いた場合のエネルギー変化ΔEを示す。
【0074】
波形20bにおけるエネルギー変化ΔEの最小値は0となるため、状態変数xminの値が変化する状態遷移の許容確率A(ΔE)が1となる。つまり、状態変数x1~xNのうち、少なくとも状態変数xminは状態遷移が許容される。
【0075】
このように、エネルギー変化ΔE1~ΔENのうちの最小値ΔEminが0より大きい場合でも、Eoff=ΔEminをエネルギー変化{ΔEi}から差し引くことで、状態変数x1~xNのうち、少なくとも1つの状態遷移が許容される。
【0076】
図4の説明に戻る。
比較部14は、乱数発生回路14b1、選択法則適用部14b2、乗算回路14b3、符号反転回路14b4、比較回路14b5を有する。
【0077】
乱数発生回路14b1は、0より大きく、1以下の一様乱数である乱数値rを発生する。乱数発生回路14b1は、たとえば、メルセンヌツイスタ、LFSR(Linear Feedback Shift Register)などを用いて実現できる。
【0078】
選択法則適用部14b2は、選択法則(前述のメトロポリス法またはギブス法)に基づいた値を出力する。
前述の式(3)の許容確率A(ΔE)で、エネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(=1)を出力する回路は、許容確率A(ΔE)と、乱数値rとの比較結果に基づいた値を出力する比較器によって実現できる。
【0079】
ただ、次のような変形を行っても同じ機能が実現できる。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。たとえば、許容確率A(ΔE)を、f(-β・ΔE)と表記する。f(-β・ΔE)に作用させる単調増加関数としてf(-β・ΔE)の逆関数f-1(-β・ΔE)、乱数値rに作用させる単調増加関数としてf-1(-β・ΔE)の-β・ΔEをrとしたf-1(r)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-β・ΔEがf-1(r)より大きいとき1を出力する回路でよいことがわかる。さらにβ=1/Tで、温度値Tが正であることから、その回路は、-ΔEがT・f-1(r)より大きいとき1を出力する回路でよい。
【0080】
選択法則適用部14b2は、入力される乱数値rを上記のf-1(r)の値に変換する変換テーブルを用いて、f-1(r)の値を出力する。メトロポリス法が適用される場合、f-1(r)は、log(r)である。変換テーブルは、たとえば、RAM(Random Access Memory)、フラッシュメモリなどのメモリに記憶されている。
【0081】
乗算回路14b3は、制御部17から供給される温度値Tと、f-1(r)との積(T・f-1(r))を閾値として出力する。T・f-1(r)は、熱励起エネルギーに相当する。
【0082】
符号反転回路14b4は、評価値である{ΔEi}または{Ei}-ΔEminの符号を反転し、-{ΔEi}または-{ΔEi}+ΔEminを出力する。
比較回路14b5は、-{ΔEi}または-{ΔEi}+ΔEminと、T・f-1(r)とを比較する。そして、比較回路14b5は、-{ΔEi}または-{ΔEi}+ΔEminがT・f-1(r)より大きい場合、フラグ値{Fi}として1を出力し、-{ΔEi}または-{ΔEi}+ΔEminがT・f-1(r)以下の場合、フラグ値{Fi}として0を出力する。
【0083】
(フラグ計数部15の例)
図1に示したフラグ計数部15の例として、以下に、2種のフラグ計数部15a,15bを示す。
【0084】
図6は、フラグ計数部の一例を示す図である。
フラグ計数部15aは、ツリー状に複数段、配置された複数の加算回路(加算回路15a1,15a2,15a3,15a4,15a5など)を有する。
【0085】
初段の各加算回路は、2つのフラグ値を加算した加算結果を出力する。たとえば、加算回路15a1は、フラグ値F1,F2を加算した加算結果を出力し、加算回路15a2は、フラグ値F3,F4を加算した加算結果を出力する。2段目以降の加算回路は、前段の2つの加算回路の出力値を加算した加算結果を出力する。たとえば、2段目の加算回路15a4は、初段の加算回路15a1,15a2の出力値を加算した加算結果を出力する。そして、最後段の加算回路15a5が出力する加算結果が、計数値Nfとなる。
【0086】
初段の各加算回路は、2つの1ビットのフラグ値を加算して、2ビットの加算結果を出力し、2段目の各加算回路は、2つの加算回路のそれぞれの2ビットの出力値を加算して、3ビットの加算結果を出力する。N=1024の場合、最後段(10段目)の加算回路15a5は、前段の2つの加算回路のそれぞれの10ビットの出力値を加算して、11ビットの計数値Nfを出力する。
【0087】
図7は、フラグ計数部の他の例を示す図である。
フラグ計数部15bは、マイクロコントローラ15b1とプログラムメモリ15b2とを有する。
【0088】
マイクロコントローラ15b1は、プログラムメモリ15b2に記憶されたプログラムを読み出して実行することで、フラグ値F1~FNのうち値が1である数を計数し、その計数結果である計数値Nfを出力する。
【0089】
サンプリング装置10によるサンプリングは、通常1000クロックサイクル以上の間隔(サンプリング間隔)で行われるため、比較的処理速度が遅いマイクロコントローラ15b1及び、比較的小規模のプログラムメモリ15b2を用いることができる。
【0090】
(選択部16の例)
図8は、選択部の一例を示す図である。
選択部16は、乱数発生回路16a、加算回路16b、選択回路部16cを有する。
【0091】
乱数発生回路16aは、たとえば、0<ri<1の一様乱数である乱数値riを、インデックス値=i(1~N)のそれぞれについて異なるシードを用いて発生する。乱数発生回路16aは、たとえば、メルセンヌツイスタ、LFSRなどを用いて実現できる。
【0092】
加算回路16bは、フラグ値F1~FNのそれぞれに対して、複数の乱数値ri(i=1~N)の何れかを加算した加算結果を、フラグ値F1~FNに対応するインデックス値とともに出力する。
【0093】
選択回路部16cは、ツリー状に複数段、配置された複数の選択回路(選択回路16c1,16c2,16c3,16c4,16c5など)を有する。
初段の各選択回路は、2つのフラグ値についての加算結果のうち、大きい方の加算結果とそれに対応したインデックス値を選択して出力する。たとえば、選択回路16c1は、F1+r1がF2+r2より大きい場合、F1+r1と、インデックス値=1を出力し、F1+r1がF2+r2より小さい場合、F2+r2と、インデックス値=2を出力する。
【0094】
2段目以降の選択回路は、前段の2つの選択回路が選択した加算結果のうち、大きい方の加算結果とそれに対応したインデックス値を選択して出力する。たとえば、2段目の選択回路16c4は、初段の選択回路16c1,16c2が選択した加算結果のうち、大きい方の加算結果とそれに対応したインデックス値を選択して出力する。最後段の選択回路16c5は、前段の2つの選択回路が選択した加算結果のうち、大きい方の加算結果に対応したインデックス値=jを更新インデックス値として出力する。
【0095】
このように、選択部16は、加算結果の大小関係に基づいて、フラグ値F1~FNの何れかを選択することで、フラグ値F1~FNのうち、値が1のものを、ランダムに等確率で選択することができる。
【0096】
(動作例)
以下、サンプリング装置10の動作例を説明する。
なお、以下の例ではサンプリング動作は、温度値Tが一定の値で行われるものとする。
【0097】
図9は、サンプリングタイミングの例を示す図である。
図9において、期間Tuは、1回の試行(状態更新処理)にかかる期間を示す。サンプリング装置10は、所定の試行回数(バーンイン期間)の試行が行われたのちに、サンプリングを開始する。バーンイン期間は、状態が平衡状態に達するまでの期間であり、バーンイン期間に対応する試行回数が予め設定される。
【0098】
サンプリング期間では、サンプリング装置10は、所定の試行回数(サンプリング間隔Ts)毎に、サンプリング(たとえば、状態x、オフセット値Eoff、計数値Nfなどの出力)を行う。サンプリング間隔Tsに対応する試行回数は予め設定される。
【0099】
図10は、サンプリング動作の一例の流れを示すフローチャートである。
まず、初期化やパラメータ設定が行われる(ステップS1)。ステップS1の処理において、制御部17は、たとえば、重み値、バイアス係数、状態変数x
i(i=1~N)の初期値に基づいて、ローカルフィールドh
i(i=1~N)の初期値の計算を行う。重み値、バイアス係数、状態変数x
i(i=1~N)の初期値は、計算対象の組合せ最適化問題を変換したイジングモデルの情報として、たとえば、図示しない記憶部に予め記憶されている。状態変数x
iの初期値やローカルフィールドh
iの初期値は、状態保持部11に保持される。
【0100】
また、バーンイン期間に対応する試行回数NB、サンプリング間隔Tsに対応する試行回数NSI、全サンプルが得られる試行回数NSNについても、たとえば、図示しない記憶部に予め記憶されている。そして、ステップS1の処理において、制御部17にそれらのパラメータが設定される。
【0101】
その後、エネルギー変化計算部12は、状態変数xiの値とローカルフィールドhiを、状態保持部11から読み出す(ステップS2)。
そして、エネルギー変化計算部12は、前述のように、エネルギー変化ΔEi(i=1~N)を計算する(ステップS3)。
【0102】
オフセット制御部13は、エネルギー変化計算部12から供給されるエネルギー変化ΔEiに対して、前述のようなオフセット値Eoffを付加する(ステップS4)。
そして、前述の比較部14と選択部16の処理により、状態遷移を許容する状態変数を識別する更新インデックス値が出力される(ステップS5)。
【0103】
エネルギー変化計算部12は、更新インデックス値により識別される状態変数xiの値を更新する。また、エネルギー変化計算部12は、その更新に基づいて、ローカルフィールドhiを、前述の処理により更新する(ステップS6)。
【0104】
更新後の状態変数xiとローカルフィールドhiの各値は、状態保持部11に書き込まれる(ステップS7)。
制御部17は、ステップS2~S7の処理(試行)の回数が試行回数NBに達したか否かを判定する(ステップS8)。ステップS2~S7の処理の回数が試行回数NBに達していない場合、ステップS2からの処理が繰り返される。
【0105】
ステップS2~S7の処理の回数が試行回数NBに達した場合、制御部17は、ステップS2~S7の処理の回数が試行回数NSIに達したか否かを判定する(ステップS9)。ステップS2~S7の処理の回数が試行回数NSIに達していない場合、ステップS2からの処理が繰り返される。
【0106】
ステップS2~S7の処理の回数が試行回数NSIに達した場合、制御部17は、フラグ計数部15に、計数値Nfを計数させる(ステップS10)。そして、制御部17は、フラグ計数部15に計数値Nf、状態保持部11に状態x、オフセット制御部13にオフセット値Eoffをそれぞれ出力させる(ステップS11)。出力されたオフセット値Eoffと、計数値Nfに基づいて、試行回数計算部18は、式(8)に示される期待値<Ntrial>を計算する。
【0107】
制御部17は、ステップS2~S7の処理の回数が試行回数NSNに達したか否かを判定する(ステップS12)。ステップS2~S7の処理の回数が試行回数NSNに達していない場合、ステップS2からの処理が繰り返される。ステップS2~S7の処理の回数が試行回数NSNに達した場合、制御部17は、サンプリング動作を終了させる。
【0108】
ところで、サンプリング装置10は、最適化装置としても使用できる。最適化装置として使用する場合の動作例を以下に示す。
図11は、最適化処理動作の一例の流れを示すフローチャートである。
【0109】
まず、初期化やパラメータ設定が行われる(ステップS20)。ステップS20の処理において、制御部17は、サンプリング動作時と同様に、ローカルフィールドhi(i=1~N)の初期値の計算などを行う。
【0110】
また、ステップS20の処理において、たとえば、図示しない記憶部に予め記憶された温度変更スケジュールにしたがって、制御部17は、温度値Tの初期値を比較部14に設定する。また、たとえば、図示しない記憶部には予め、温度値Tの更新を行う試行回数N1、上限の試行回数N2が記憶されており、ステップS20の処理において、制御部17にそれらのパラメータが設定される。
【0111】
その後のステップS21~S26の処理は、
図10に示したサンプリング動作時におけるステップS2~S7の処理とほぼ同様である。ただし、たとえば、制御部17は、式(1)で表せるエネルギーEの初期値を計算するとともに、更新インデックス値に対応するエネルギー変化(たとえば、更新インデックス値=jの場合、エネルギー変化ΔE
j)を用いて、エネルギーEを更新する。そして、制御部17は、これまでの最低エネルギーとそのときの状態を図示しない記憶部に保持させる。
【0112】
ステップS26の後、制御部17は、ステップS21~S26の処理(試行)の回数が試行回数N1に達したか否かを判定する(ステップS27)。ステップS21~S26の処理の回数が試行回数N1に達していない場合、ステップS21からの処理が繰り返される。
【0113】
ステップS21~S26の処理の回数が試行回数N1に達した場合、制御部17は、シミュレーテッド・アニーリングを実現するために、温度値Tを、温度変更スケジュールにしたがって小さくするように更新する(ステップS28)。
【0114】
その後、制御部17は、ステップS21~S26の処理の回数が試行回数N2に達したか否かを判定する(ステップS29)。ステップS21~S26の処理の回数が試行回数N2に達していない場合、ステップS21からの処理が繰り返される。ステップS21~S26の処理の回数が試行回数N2に達した場合、制御部17は、その時点で記憶部に保持させている最低エネルギーのときの状態を、組合せ最適化問題の解として出力し(ステップS30)、最適化処理動作を終了させる。
【0115】
サンプリング装置10を最適化装置として用いた場合、前述のようなオフセット値Eoffを用いることで各試行において状態遷移が生じ、探索が高速化する。
(第2の実施の形態)
以下、第2の実施の形態のサンプリング装置を説明する。
【0116】
前述のように値が1であるフラグ値の数を数えることは、許容確率A(ΔEi)(i=1~N)を積算したものを、仮数部1ビット、指数部をexp(-β・Eoff)で表すことに相当する。以下に示す第2の実施の形態のサンプリング装置では、2種類のフラグ値から計数値Nfを求めることで、より精度のよい期待値<Ntrial>を計算するものである。
【0117】
図12は、第2の実施の形態のサンプリング装置の一例を示す図である。
図12において、
図1に示した要素と同じ要素については同じ符号が付されている。なお、
図12では、
図1に示した制御部17については図示が省略されている。また、以下では、
図1においてオフセット制御部13が出力するオフセット値E
offをオフセット値E
off1といい、
図1においてフラグ計数部15が出力する計数値N
fを計数値N
f1という。
【0118】
第2の実施の形態のサンプリング装置30は、ΔE置き換え部31、オフセット制御部32、比較部33、フラグ計数部34、選択部35、計数値補正部36、試行回数計算部37を有する。
【0119】
ΔE置き換え部31は、フラグ値F1~FNに基づき、エネルギー変化ΔE1~ΔENのうち、許容されない状態遷移であるとされている複数の状態遷移に対する複数の非許容エネルギー変化値(以下エネルギー変化ΔEna1~ΔEnaMという)を出力する。ΔE置き換え部31は、たとえば、エネルギー変化ΔE1~ΔENと、フラグ値F1~FNを入力し、値が0のフラグ値のインデックス値に対応するインデックス値をもつエネルギー変化をエネルギー変化ΔE1~ΔENから選択する回路によって実現できる。
【0120】
オフセット制御部32は、エネルギー変化ΔEna1~ΔEnaMに基づき、フラグ値F1~FNでは許容されない状態遷移とされている複数の状態遷移のうちの少なくとも1つが許容されるようにオフセット値Eoff1とは別のオフセット値Eoff2を決定する。そして、オフセット制御部32は、エネルギー変化ΔEna1~ΔEnaMのそれぞれにオフセット値Eoff2を付加した、オフセット制御部13が出力する複数の評価値とは別の複数の評価値を出力する。また、オフセット制御部32は、所定試行回数毎にオフセット値Eoff2を出力する。オフセット制御部32は、オフセット制御部13と同様の回路にて実現できる。
【0121】
比較部33は、温度値Tと乱数値とに基づいて決まる閾値と、比較部33が出力する複数の評価値のそれぞれとを比較した結果に基づき複数の状態遷移のそれぞれについて状態遷移を許容するか否かを示す、フラグ値F1~FNとは別の複数のフラグ値を出力する。以下、比較部33が出力する複数のフラグ値をフラグ値Fna1~FnaMという。比較部33は、比較部14と同様の回路にて実現できる。
【0122】
フラグ計数部34は、比較部33が出力するフラグ値Fna1~FnaMのうち、状態遷移を許容することを示すフラグ値(値が1)の数を計数した、計数値Nf1とは別の計数値Nf2を、所定試行回数毎に出力する。フラグ計数部34は、フラグ計数部15と同様の回路にて実現できる。
【0123】
選択部35は、計数値Nf1,Nf2、オフセット値Eoff1,Eoff2に基づき、Nf1:Nf2exp[-β(Eoff1-Eoff2)]の比率で、フラグ値F1~FNのうち値が1のグループと、フラグ値Fna1~FnaMのうち値が1のグループの何れか一方を選択する。そして、選択部35は、選択したグループから等確率に1つのフラグ値を選択し、選択したフラグ値に対応したインデックス値を更新インデックス値として出力する。選択部35は、たとえば、論理回路、ASICやFPGAなどの特定用途の電子回路、CPUやDSPなどのプロセッサ、マイクロコントローラなどで実現できる。
【0124】
計数値補正部36は、計数値Nf2とオフセット値Eoff1,Eoff2に基づいて、計数値Nf1を補正し、計数値Nfとして出力する。計数値補正部36は、たとえば、Nf=Nf1+Nf2exp[β(Eoff1-Eoff2)]を計算して出力する。計数値補正部36は、たとえば、ASICやFPGAなどの特定用途の電子回路、CPUやDSPなどのプロセッサにて実現できる。
【0125】
試行回数計算部37は、オフセット値Eoff1,Eoff2と、計数値Nfに基づいて、たとえば、前述の式(8)を用いて期待値<Ntrial>を計算する。ただし、式(8)のEoffとして、(Eoff1-Eoff2)が用いられる。試行回数計算部37は、たとえば、ASICやFPGAなどの特定用途の電子回路、CPUやDSPなどのプロセッサにて実現できる。
【0126】
その他の構成及び動作については、第1の実施の形態のサンプリング装置10と同じである。
上記のような第2の実施の形態のサンプリング装置30によれば、たとえば、フラグ値F1~FNのうち、1つだけが1であるような(1つの状態遷移だけが許容されるような)極端な場合でも、他の状態遷移についてもある割合で許容されるようになる。これにより、サンプリング装置30を用いた場合の各状態遷移(状態変数)間の遷移確率の比を、通常のMCMC法で得られるような各状態遷移間の遷移確率の比に近づけることができる。そして、上記のように補正された計数値Nfを用いて計算される期待値<Ntrial>は、通常のMCMC法で得られる1つの状態に滞在する試行数により近いものになり、通常のMCMC法により近い確率過程が得られる。
【0127】
なお、上記の第2の実施の形態のサンプリング装置30の動作は、1つのオフセット制御部13、1つの比較部14、1つのフラグ計数部15を用いても実行できる。その場合、以下のような動作によって、2種類のフラグ値(フラグ値F1~FNとフラグ値Fna1~FnaM)についての計数値Nf1,Nf2が得られる。
【0128】
図13は、2種類のフラグ値についての計数値N
f1,N
f2を発生させる動作の一例の流れを示すフローチャートである。
以下に示す処理は、たとえば、
図1に示した制御部17(
図12では図示が省略されている)によって制御される。
【0129】
まず、制御部17は、n
MAX=2、n=1とする(ステップS40)。そして、制御部17は、オフセット制御部13に、オフセット値E
offn(n=1の場合はオフセット値E
off1)を発生させる(ステップS41)。オフセット制御部13は、エネルギー変化ΔE
i(i=1~N)のそれぞれからオフセット値E
offnを差し引いた評価値を計算する(ステップS42)。
図4のようなオフセット制御部13が用いられる場合、ΔE
iの最小値ΔE
minが0より小さい場合、オフセット値E
offnは0であり、最小値ΔE
minが0以上の場合、オフセット値E
offnは最小値ΔE
minである。
【0130】
比較部14は、温度値Tと乱数値とに基づいて決まる閾値と、複数の評価値のそれぞれとを比較した結果に基づき、フラグ値(n=1の場合、フラグ値F1~FN)を発生する(ステップS43)。
【0131】
そして、フラグ計数部15は、フラグ値が1である数を計数し(ステップS44)、計数値Nfn(n=1の場合は計数値Nf1)を出力する(ステップS45)。
制御部17は、n≧nMAXであるか否かを判定し(ステップS46)、n≧nMAXの場合、計数値Nf1,Nf2を発生させる処理を終了する。n<nMAXの場合、制御部17は、n=n+1とする(ステップS47)。また、制御部17は、前述のΔE置き換え部31の機能により、エネルギー変化ΔEiを、エネルギー変化ΔEna1~ΔEnaMに置き換え(ステップS48)、ステップS41からの処理を繰り返す。
【0132】
なお、上記ステップS44,S45の処理以外は、各試行において行われる。
(第3の実施の形態)
図14は、第3の実施の形態のサンプリング装置の一例を示す図である。
図14において、
図1に示した要素と同じ要素については図示が省略されている。
【0133】
第3の実施の形態のサンプリング装置40では、
図1に示した選択部16の代りに、選択部41が設けられている。
選択部41は、エネルギー変化ΔE
1~ΔE
Nのうち、0より小さいものを0に更新させた複数の更新エネルギー変化値を生成する。そして、選択部41は、複数の更新エネルギー変化値のそれぞれに、複数の閾値の何れかを加算した複数の評価値のうちで、最小となる評価値に対応するインデックス値を更新インデックス値として出力する。複数の閾値は、温度値Tと互いに独立な複数の乱数値とに基づいてそれぞれ算出される。
【0134】
選択部41は、更新エネルギー変化値算出回路41a、閾値生成部41b、加算回路41c1,41c2,…,41cN、最小値選択回路41dを有する。
更新エネルギー変化値算出回路41aは、エネルギー変化ΔE1~ΔENのうち、0以上のものをそのまま出力し、0より小さいものを0に更新することで、N個の更新エネルギー変化値を生成する。更新エネルギー変化値算出回路41aの処理は、max[0,ΔEi]を計算することに相当する。
【0135】
閾値生成部41bは、N個の閾値を生成する。閾値生成部41bの例については後述する。
加算回路41c1~41cNは、更新エネルギー変化値算出回路41aが出力したN個の更新エネルギー変化値のそれぞれに、複数の閾値の何れかを加算したN個の評価値を出力する。
【0136】
最小値選択回路41dは、加算回路41c1~41cNが出力するN個の評価値のうちで、最小となる評価値に対応するインデックス値を更新インデックス値として出力する。なお、インデックス値は、たとえば、エネルギー変化計算部12から供給される。最小値選択回路41dは、たとえば、ツリー状に複数段、配置された複数の選択回路を有し、各選択回路は2つの評価値のうち、小さい方を選択して出力する。最後段の選択回路から出力される評価値に対応したインデックス値が更新インデックス値となる。
【0137】
図15は、閾値生成部の一例を示す図である。
閾値生成部41bは、メルセンヌツイスタ50a1,50a2,…,50an、変換部50b1,50b2,…,50bn、レジスタ50c11~50cnm、乗算部50dを有する。
【0138】
メルセンヌツイスタ50a1~50anは、それぞれ0<ri<1の一様乱数である乱数値riを、インデックス値=i(1~N)のそれぞれについて異なるシードを用いて発生する。乱数値riは、たとえば、16ビットの値で表される。なお、乱数値riは、1クロックサイクル毎に更新される。
【0139】
変換部50b1~50bnは、変換テーブルを用いて、乱数値riをlog(-logri)に変換する。log(-logri)は、たとえば、27ビットの値で表される。変換テーブルは、たとえば、RAM、フラッシュメモリなどのメモリに記憶されている。
【0140】
レジスタ50c11~50cnmは、図示しないクロック信号に同期して、変換部50b1~50bnが出力した値を遅延して出力する。たとえば、直列に接続されたレジスタ50c11,50c12,…,50c1mにより、変換部50b1が出力した値から、m個の異なる乱数値が生成される。また、直列に接続されたレジスタ50c21,50c22,…,50c2mにより、変換部50b2が出力した値から、m個の異なる乱数値が生成される。また、直列に接続されたレジスタ50cn1,50cn2,…,50cnmにより、変換部50bnが出力した値から、m個の異なる乱数値が生成される。
【0141】
乗算部50dは、変換部50b1~50bnが出力した値と、レジスタ50c11~50cnmのそれぞれが出力した値に、温度値Tを乗じた値を閾値として出力する。乗算部50dは、N個の乗算回路を有する。
【0142】
たとえば、N=1024の場合、メルセンヌツイスタ50a1~50anと変換部50b1~50bnは、それぞれ32個(n=32)、レジスタ50c11~50cnmの数(n×m)は、32×31である。これにより、1024個の閾値が生成される。
【0143】
選択部16の代りに上記の選択部41を用いることで、試行毎に適切な許容確率で状態遷移が発生する。その理由を以下に説明する。
前述した0<ri<1の一様乱数である乱数値riの累積分布関数F(r)=Prob(ri≦r)の値は、r≦0の場合に0、0<r<1の場合にr、r≧1の場合に1となる。ここで、乱数値riから発生させる正の乱数値yiを、yi=-log(ri)/Ai(Ai>0)とする。乱数値yiがy(>0)より大きくなる確率Prob(yi≧y)は、Prob(yi≧y)=Prob(ri≦exp(-Aiy))=F(exp(-Aiy))=exp(-Aiy)と表せる。したがって乱数値riの確率密度関数p(yi)は、以下の式(9)のように表せる。
【0144】
【0145】
あるインデックス値=iに対する乱数値yiが他の全ての乱数値yj(j≠i)より小さい確率は、以下の式(10)のように表せる。
【0146】
【0147】
式(10)の右辺は、式(5)の右辺と同じ形である。
ここで、Aiをエネルギー変化ΔEiに対する許容確率とし、Ai=min[1,exp(-βΔEi)]とすれば、式(10)が1となるときのAiが求めたい許容確率となる。なお、log(Ai)/β=-max[0,ΔEi]となる。
【0148】
あるインデックス値=iに対する乱数値yiが他の全ての乱数値yj(j≠i)より小さいことはlog(yi)/βがlog(yj)/β(j≠i)より小さいことと同じである。ここで、log(yi)/β=log(-log(ri))/β+max[0,ΔEi]、β=1/Tであるから、max[0,ΔEi]にT・log(-log(ri))を加算した値の中で最小のものを選べば、試行毎に適切な許容確率で状態遷移が発生する。
【0149】
その他の構成及び動作については、第1の実施の形態のサンプリング装置10と同じである。
図16は、温度とエネルギーとの関係についてのシミュレーション結果の例を示す図である。
【0150】
また、
図17は、試行回数と最低エネルギー状態が得られる確率との関係についてのシミュレーション結果の例を示す図である。
図16、
図17で扱われている問題は、16都市の巡回セールスマン問題である。
【0151】
図16では、横軸は温度値T、縦軸は式(1)に示したエネルギーEを表している。特性60aは、通常のMCMC法を用いた場合の温度とエネルギーとの関係を示し、特性60bは、第3の実施の形態のサンプリング装置40を用いた場合の温度とエネルギーとの関係を示している。また、特性60cは、デジタル回路を用いた従来の最適化装置を用いた場合の温度とエネルギーとの関係を示している。
【0152】
図16に示すように、第3の実施の形態のサンプリング装置40は、通常のMCMC法を用いた場合とほぼ同様の特性が得られている。
図17では、横軸は試行回数、縦軸は最低エネルギー状態が得られる確率を表している。特性61aは、通常のMCMC法を用いた場合の試行回数と上記確率との関係を示し、特性61bは、第3の実施の形態のサンプリング装置40を用いた場合の試行回数と上記確率との関係を示している。また、特性61cは、デジタル回路を用いた従来の最適化装置を用いた場合の試行回数と上記確率との関係を示している。
【0153】
図17に示すように、第3の実施の形態のサンプリング装置40は、従来の最適化装置や通常のMCMC法を用いた場合よりも、高速に(早い試行回数で)最低エネルギー状態が得られることがわかる。
【0154】
以上のように、第3の実施の形態のサンプリング装置40は、理想的に1回の試行で状態遷移が行われ、理論的にも通常のMCMC法と同等のサンプル分布が得られるため、高速で高精度のサンプリングが可能となる。
【0155】
(変形例)
以下に示すサンプリング装置は、レプリカ交換法を利用したものである。
レプリカ交換法は複数の温度を用いたMCMC法を同時に行い、ある試行回数毎に、それぞれ状態のエネルギーを比較し、適切な確率で2つの温度に対する状態(または温度)を交換するという操作を行う方法である。以下の例では、温度を交換するものとして説明するが、状態を交換しても同じことである。
【0156】
図18は、レプリカ交換法を利用したサンプリング装置の例を示す図である。
図18に示すサンプリング装置70は、サンプリング処理部71とレプリカ交換コントローラ72とを有する。
【0157】
サンプリング処理部71は、
図1に示したサンプリング装置10の各部を有しており、パイプライン処理によって、異なる温度値T(
図18の例では逆温度β
1,β
2,…,β
M)が設定されたレプリカ71a1,71a2,…,71aMのそれぞれについて、前述の試行を行う。
【0158】
状態xやエネルギーEは、レプリカ71a1~71aMのそれぞれについて保持され、試行が行われるたびに更新される。
レプリカ交換コントローラ72は、所定試行回数毎にレプリカ71a1~71aMのエネルギーEを比較して、その比較結果に基づいてレプリカ71a1~71aMのうちの2つにおいて設定されている逆温度(または温度)を、所定の交換確率pijで交換する。交換確率pijは、pij=f((βi-βj)(Ei-Ej))と表せる。βiはi番目のレプリカに設定された逆温度、βjはj番目のレプリカに設定された逆温度、Eiはi番目のレプリカにおけるエネルギー、Ejはj番目のレプリカにおけるエネルギーである。また、関数fは式(3)のβの代りにβi-βjが用いられ、式(3)のΔEの代りにEi-Ejが用いられる。
【0159】
レプリカ交換コントローラ72は、たとえば、ASICやFPGAなどの特定用途の電子回路、または、CPUやDSPなどのプロセッサなどである。
なお、上記のレプリカ交換コントローラ72の処理を、
図1に示した制御部17が行ってもよい。
【0160】
サンプリング動作は、所定の試行回数毎に行われ、たとえば、温度値Tが最低のレプリカについての状態xと計数値N
fとオフセット値E
offが出力される。
図19は、レプリカ交換法を利用したサンプリング装置の動作例を示すフローチャートである。なお、
図10に示した第1の実施の形態のサンプリング装置10の動作と同じ処理については、図示及び説明を省略する。
【0161】
レプリカ交換法を利用する場合、初期化(ステップS50)の際に、レプリカ交換コントローラ72に、最高逆温度βmax、最低逆温度βmin、交換間隔を示す試行回数Ni_tot、総サンプリング回数Ns_totが設定される。レプリカ交換コントローラ72は、これらのパラメータを、たとえば、図示しない記憶部から読み出してもよい。また、初期化の際に、レプリカ交換コントローラ72は、最高逆温度βmax、最低逆温度βminに基づいて、レプリカ71a1~71aMに逆温度β1~βMの初期値を設定する。
【0162】
次に、たとえば、レプリカ交換コントローラ72は、図示しないカウンタにサンプリング回数Nsとして0を設定し(ステップS51)、別の図示しないカウンタに試行回数Ni=0を設定する(ステップS52)。その後、試行が行われ各レプリカの状態xとエネルギーEが更新される(ステップS53)。レプリカ交換コントローラ72は、試行回数Niを1増加させ(ステップS54)、Ni≧Ni_totであるか否かを判定する(ステップS55)。Ni≧Ni_totではない場合には、ステップS53からの処理が繰り返される。
【0163】
N
i≧N
i_totである場合、レプリカ交換コントローラ72は、前述の交換確率を用いてレプリカ間の温度(逆温度β)を交換するとともに、サンプリング回数N
Sを1増加させる(ステップS56)。そして、レプリカ交換コントローラ72は、温度値Tが最低(逆温度βが最高)のレプリカについての計数値N
fと状態xとオフセット値E
offを出力させる(ステップS57)。また、出力された計数値N
fとオフセット値E
offとに基づいて、
図1に示した試行回数計算部18は、期待値<N
trial>を計算する。
【0164】
その後、レプリカ交換コントローラ72は、Ns≧Ns_totであるか否かを判定する(ステップS58)。Ns≧Ns_totではない場合には、ステップS52からの処理が繰り返される。
【0165】
Ns≧Ns_totである場合、レプリカ交換コントローラ72は、サンプリング動作を終了させる。
このようなレプリカ交換法を利用したサンプリング装置70は、局所解からの脱出が早く、温度値Tの最適化が容易であるという利点がある。
【0166】
次に、サンプリング装置の他の変形例を示す。
図20は、サンプリング装置の他の変形例を示す図である。
図20に示すサンプリング装置80は、サンプリング処理部81と期待値計算部82を有する。
【0167】
サンプリング処理部81は、
図1に示したサンプリング装置10の各部を有しており、所定の試行回数毎に期待値<N
trial>と状態xを出力する。
期待値計算部82は、期待値<N
trial>と状態xに基づいて、サンプル平均により求めたい量f
n=f(x(i))の期待値を計算し、出力する。関数f(x(i))は、たとえば、x
i、x
i×x
jなどである。期待値は、以下の式(11)で表せる。
【0168】
【0169】
式(11)において、nはサンプリング回数を示し、Mは総サンプリング回数を示す。また、τ
nは、n回目のサンプリングにおける期待値<N
trial>を示す。
なお、上記の期待値計算部82の処理を、
図1に示した制御部17が行ってもよい。
【0170】
図21は、期待値計算処理を行うサンプリング装置の動作例を示すフローチャートである。なお、
図10に示した第1の実施の形態のサンプリング装置10の動作と同じ処理については、図示及び説明を省略する。
【0171】
期待値計算処理が行われる場合、初期化(ステップS60)の際に、期待値計算部82は、式(11)のfnτnの積算値を示す変数Sと、τnの積算値を示す変数TAを0にする。また、期待値計算部82に総サンプリング回数Mが設定される。さらに、サンプリング回数nを計数する図示しないカウンタの値が0にリセットされる。
【0172】
その後、サンプリングタイミングにおいて、期待値計算部82は、サンプリング処理部81が出力した状態xと期待値<Ntrial>とを読み込み(ステップS61)、fn=f(x(i))を計算する(ステップS62)。その後、期待値計算部82は、現在の変数Sにfnτnを加算することで変数Sを更新し(ステップS63)、現在の変数TAにτnを加算することで変数TAを更新する(ステップS64)。そして、期待値計算部82は、図示しないカウンタにサンプリング回数nを1増加させ(ステップS65)、n>Mであるか否かを判定する(ステップS66)。n>Mではない場合、期待値計算部82は、ステップS61からの処理を繰り返す。
【0173】
n>Mの場合、期待値計算部82は、S/TAを計算し、式(11)で示される期待値として出力し(ステップS67)、期待値計算処理を終える。
上記のような期待値計算処理を行う期待値計算部82は、たとえば、積和演算回路や記憶部(レジスタなど)などを用いて実現できる。また、期待値計算部82は、たとえば、ASICやFPGAなどの特定用途の電子回路、CPUやDSPなどのプロセッサなどであってもよい。
【0174】
期待値計算処理は比較的演算量が大きいため、期待値計算処理をサンプリング装置80の外部で行う場合、サンプリング装置80と外部装置間での状態変数xなどの入出力によるボトルネックが生じる可能性がある。しかし、上記のようにサンプリング装置80内で期待値計算処理を行うことで、このボトルネックを解消できる利点がある。
【0175】
なお、上記各変形例は、第1乃至第3の実施の形態のサンプリング装置10,30,40のそれぞれと組合せることができる。
以上、実施の形態に基づき、本発明のサンプリング装置及びサンプリング装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0176】
10 サンプリング装置
11 状態保持部
12 エネルギー変化計算部
13 オフセット制御部
14 比較部
15 フラグ計数部
16 選択部
17 制御部
18 試行回数計算部