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

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

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

特許7256378最適化システムおよび最適化システムの制御方法
<>
  • 特許-最適化システムおよび最適化システムの制御方法 図1
  • 特許-最適化システムおよび最適化システムの制御方法 図2
  • 特許-最適化システムおよび最適化システムの制御方法 図3
  • 特許-最適化システムおよび最適化システムの制御方法 図4
  • 特許-最適化システムおよび最適化システムの制御方法 図5
  • 特許-最適化システムおよび最適化システムの制御方法 図6
  • 特許-最適化システムおよび最適化システムの制御方法 図7
  • 特許-最適化システムおよび最適化システムの制御方法 図8
  • 特許-最適化システムおよび最適化システムの制御方法 図9
  • 特許-最適化システムおよび最適化システムの制御方法 図10
  • 特許-最適化システムおよび最適化システムの制御方法 図11
  • 特許-最適化システムおよび最適化システムの制御方法 図12
  • 特許-最適化システムおよび最適化システムの制御方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-04
(45)【発行日】2023-04-12
(54)【発明の名称】最適化システムおよび最適化システムの制御方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20230405BHJP
   G06N 3/06 20060101ALI20230405BHJP
【FI】
G06N99/00 180
G06N3/06
【請求項の数】 8
(21)【出願番号】P 2019074572
(22)【出願日】2019-04-10
(65)【公開番号】P2020173579
(43)【公開日】2020-10-22
【審査請求日】2022-01-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】米岡 昇
【審査官】関口 明紀
(56)【参考文献】
【文献】特開2016-051350(JP,A)
【文献】米国特許出願公開第2016/0063391(US,A1)
【文献】特開2018-063626(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06N 3/06
(57)【特許請求の範囲】
【請求項1】
基底状態の探索を実行して複数個の局所解を出力する最適化装置と、
自ニューロン以外の複数の他のニューロンとの接続の有無を示す重み値を含むエネルギー関数により示されるエネルギーの、前記探索における状態遷移に応じた増分値であるエネルギー増分の取り得る最大値に基づいて初期温度を計算する初期温度計算部と、前記最適化装置が出力する前記複数個の局所解を対応するエネルギーの昇順に並べた結果について、各局所解に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値に基づいて補正温度を算出する温度補正部とを備える情報処理装置と、
を有する最適化システム。
【請求項2】
前記初期温度計算部は、バイアス値と前記重み値とから得られた前記エネルギー増分の取り得る最大値に基づいて前記初期温度を計算する、請求項1記載の最適化システム。
【請求項3】
前記温度補正部は、エネルギーの大きい方の局所解からエネルギーの小さい方の局所解へ、各局所解に対応する各状態変数の間を1ビット変化させた前記複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値に基づいて補正温度を算出する、請求項1または2記載の最適化システム。
【請求項4】
前記温度補正部は、1ビット変化させる状態変数を選択する際に、変化させる候補の状態変数のうち、当該状態変数の変化に応じたエネルギー値の上昇値が最小になる状態変数を選択する、請求項3記載の最適化システム。
【請求項5】
前記初期温度計算部は、前記最大値に基づいて、前記エネルギー増分が前記最大値となる状態変数の変化が第1の確率で許容されるように前記初期温度を計算し、
前記温度補正部は、前記最大の上昇値に基づいて、エネルギー値の上昇値が前記最大の上昇値となる状態変数の変化が第2の確率で許容されるように前記補正温度を算出する、
請求項1乃至4の何れか1項に記載の最適化システム。
【請求項6】
前記温度補正部は、前記最適化装置により前回の補正温度を用いて出力された前記複数個の局所解に基づいて今回の補正温度を算出する、請求項1乃至5の何れか1項に記載の最適化システム。
【請求項7】
前記初期温度および前記補正温度は、前記最適化装置に設定される温度範囲のうちの最高温度であり、
前記初期温度計算部は、前記最適化装置におけるエネルギーの分解能に基づいて前記温度範囲のうちの最低温度を計算する、
請求項1乃至6の何れか1項に記載の最適化システム。
【請求項8】
情報処理装置の初期温度計算部が、自ニューロン以外の複数の他のニューロンとの接続の有無を示す重み値を含むエネルギー関数により示されるエネルギーの、基底状態の探索における状態遷移に応じた増分値であるエネルギー増分の取り得る最大値に基づいて初期温度を計算し、
最適化装置が、基底状態の探索を実行して複数個の局所解を出力し、
前記情報処理装置の温度補正部が、前記最適化装置が出力する前記複数個の局所解を対応するエネルギーの昇順に並べた結果について、各局所解に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値に基づいて補正温度を算出する、
最適化システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は最適化システムおよび最適化システムの制御方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数(コスト関数や目的関数とも呼ばれる)を用いた最適化装置(イジングマシンやボルツマンマシンとも呼ばれる)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【0003】
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビットのそれぞれが、他のビットと自身のビットとの相互作用の大きさに対応する重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、例えば疑似焼き鈍し法(シミュレーテッド・アニーリング)などの確率的探索法により、上記のようなエネルギー関数の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、最適解として求める。
【0004】
疑似焼き鈍し法では、パラメータとして温度が用いられる(例えば、特許文献1~3参照)。また、デジタル回路を用いて疑似焼き鈍し法を行うことでエネルギーが最小となる各ビットの値の組合せを計算する最適化装置が提案されている(例えば、特許文献4参照)。提案の最適化装置は、一度に1ビットだけ変化するとしてエネルギー変化を計算し、エネルギー変化と温度に対応するノイズ値との比較に応じてビットの変化を許容するか否かを決定する。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平5-120252号公報
【文献】国際公開第2014/192153号
【文献】特開2016-51350号公報
【文献】特開2018-63626号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
最適化装置で演算対象となる問題では、問題毎に取り得るエネルギーの範囲が異なるために適切な温度範囲を決定することが容易でない。例えば、温度が高過ぎて状態遷移が頻繁に起こり過ぎたり、温度が低過ぎて状態遷移が全く起こらなかったりすることがある。このように、最適化装置に設定する温度が適切でないと最適解への収束が困難になる。
【0007】
1つの側面では、本発明は、求解対象の問題毎に適切な温度範囲を自動的に設定可能にする最適化システムおよび最適化システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
1つの態様では、最適化システムが提供される。この最適化システムは、最適化装置と情報処理装置とを有する。最適化装置は、基底状態の探索を実行して複数個の局所解を出力する。情報処理装置は、初期温度計算部と温度補正部とを備える。初期温度計算部は、自ニューロン以外の複数の他のニューロンとの接続の有無を示す重み値を含むエネルギー関数により示されるエネルギーの、探索における状態遷移に応じた増分値であるエネルギー増分の取り得る最大値に基づいて初期温度を計算する。温度補正部は、最適化装置が出力する複数個の局所解を対応するエネルギーの昇順に並べた結果について、各局所解に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値に基づいて補正温度を算出する。
【0009】
また、1つの態様では、最適化システムの制御方法が提供される。
【発明の効果】
【0010】
1つの側面では、求解対象の問題毎に適切な温度範囲を自動的に設定することが可能となる。
【図面の簡単な説明】
【0011】
図1】第1の実施の形態の最適化システムの例を示す図である。
図2】第2の実施の形態の最適化システムの例を示す図である。
図3】最適化装置に対する温度設定例を示す図である。
図4】状態遷移の例を示す図である。
図5】情報処理装置の機能例を示す図である。
図6】重み行列の例を示す図である。
図7】局所解の例を示す図である。
図8】ビットの変化とエネルギーの変化との関係の例を示す図である。
図9】最適化システムの動作例を示す図である。
図10】情報処理装置による制御例を示すフローチャートである。
図11】Tmax補正例を示すフローチャートである。
図12】Tmax[k]算出例を示すフローチャートである。
図13】複数の局所解からTmaxを算出する具体例を示す図である。
【発明を実施するための形態】
【0012】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0013】
図1は、第1の実施の形態の最適化システムの例を示す図である。
最適化システム1は、最適化装置10および情報処理装置20を有する。
最適化装置10は、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数の状態変数のそれぞれの値の組合せ(状態)のうち、エネルギー関数が最小値となるときの各状態変数の値(基底状態)を探索する。状態変数の値は「ビット」とも呼ばれる。
【0014】
イジング型のエネルギー関数E(x)は、例えば以下の式(1)で定義される。
【0015】
【数1】
【0016】
右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。xは、i番目の状態変数である。xは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み(例えば、結合の強さ)を示す重み値である。なお、Wij=Wji、Wii=0である。すなわち、重み行列W={Wij}は対角成分が0の対称行列である。
【0017】
右辺第2項は、全状態変数のそれぞれのバイアス値と状態変数の値との積の総和である。bは、i番目の状態変数に対するバイアス値を示す。
例えば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。
【0018】
状態変数xの値が変化して1-xとなると、状態変数xの増加分は、Δx=(1-x)-x=1-2xと表せる。したがって、エネルギー関数E(x)に対して、スピン反転(値の変化)に伴うエネルギー変化ΔEは、式(2)で表される。
【0019】
【数2】
【0020】
はローカルフィールド(局所場)と呼ばれ、式(3)で表される。
【0021】
【数3】
【0022】
最適化装置10では、各状態変数の値は「ニューロン」と呼ばれる演算処理回路の単位によって保持される。例えば、最適化装置10はN(Nは2以上の整数)個のニューロンを有し、N個のニューロンによりN個の状態変数の値を保持する。例えば、ニューロン間の接続関係は、各ニューロンをノード、ニューロン間の接続関係をエッジとしたグラフ11により表される。例えば、あるニューロンを示すノード11aは、接続関係を有する他のニューロンを示すノードとエッジで結ばれる。あるニューロンは、他の全てのニューロンと接続関係をもつこともあるし(全結合)、他の一部のニューロンと接続関係をもつこともある。行列Wは、グラフ11に対応するニューロン間の接続関係(エッジの重みを含む)を表す。Wijは、自ニューロン(i番目のニューロン)と自ニューロン以外の複数の他のニューロン(i番目以外のj番目のニューロン)との接続の有無を示す重み値であると言える。
【0023】
最適化装置10は、基底状態の探索を実行して複数個の局所解を出力する。
ここで、最適化装置10は、エネルギーEを最小化する基底状態の探索に、例えば最急降下法を用いることが考えられる。しかし、最急降下法では、一旦、局所解に陥ると脱出できなくなる。そこで、最適化装置10では、状態変数の値の変化を許容するか否かの決定において、メトロポリス法やギブス法が用いられる。すなわち、最適化装置10は、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移を確率的に許容する。例えば、メトロポリス法では、エネルギー変化ΔEの状態変数の値の変化を受け入れる確率(遷移受入確率)Aは、式(4)で表される。
【0024】
【数4】
【0025】
式(4)におけるA=exp(-ΔE/T)に対して、両辺の自然対数を取って変形すると式(5)を得る。
【0026】
【数5】
【0027】
したがって、最適化装置10は、一様乱数u(0<u≦1)に対して、エネルギー変化ΔEが式(6)を満たす場合に、該当の状態変数の値の変化を許容する。
【0028】
【数6】
【0029】
情報処理装置20は、最適化装置10の動作を制御するための各種のパラメータを最適化装置10に設定する。例えば、シミュレーテッド・アニーリング(SA:Simulated Annealing)やその応用となるレプリカ交換法では、異なる温度や異なる初期状態などでの各試行において、複数の状態変数の何れかの値を更新する更新処理が多数回繰り返される。例えば、情報処理装置20により最適化装置10に設定されるパラメータには、最適化装置10の起動1回当たりの更新処理のイタレーション数m、更新処理の総イタレーション数M(M>m)、温度、重み行列Wおよびバイアス値b={b}などがある。温度は、最高温度Tmaxおよび最低温度Tminにより指定される。また、情報処理装置20は、最高温度Tmaxから最低温度Tminまでの温度の下げ方を示す温度スケジュールを最適化装置10に設定する。
【0030】
情報処理装置20は、記憶部21と初期温度計算部22と温度補正部23とを有する。
記憶部21は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。初期温度計算部22および温度補正部23は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などにより実現される。
【0031】
記憶部21は、最適化装置10に入力する重み行列Wおよびバイアス値bを記憶する(図1ではバイアス値の図示を省略している)。重み行列Wおよびバイアス値bは、問題に応じて定められる。
【0032】
初期温度計算部22は、重み値から得られたエネルギー増分の最大値に基づいて初期温度T1における最高温度Tmaxを計算する。また、初期温度計算部22は、エネルギーの分解能(すなわち、最適化装置10において計算可能なエネルギー増分の最小値)に基づいて初期温度T1における最低温度Tminを計算する。
【0033】
まず、初期温度計算部22による最低温度Tminの計算方法を説明する。
初期温度計算部22は、最低温度Tminを式(5)に基づいて決定する。例えば、初期温度計算部22は、エネルギーの分解能が1の場合(すなわち、Eが整数値の場合)、ΔE=1の時の遷移受入確率A=a1になる温度として、最低温度Tminを計算する。遷移受入確率A=a1は、初期温度計算部22に予め与えられる(a1を任意に設定可能にすることもできる)。一例では、a1=0.001であり、この場合、Tmin=0.145程度である。ただし、最低温度Tminは記憶部21に予め格納されてもよい。その場合、初期温度計算部22は、最低温度Tminとして記憶部21に予め格納された値を用いることができる。
【0034】
次に、初期温度計算部22による最高温度Tmaxの計算方法を説明する。
初期温度計算部22は、最高温度Tmaxをエネルギー変化ΔEが取り得る最大値max(ΔE)に基づいて計算する。例えば、初期温度計算部22は、最大値max(ΔE)を取り得る場合の遷移受入確率A=a2になるように最高温度Tmaxを調整する。遷移受入確率A=a2は、初期温度計算部22に予め与えられる(a2を任意に設定可能にすることもできる)。
【0035】
具体的には、まず、初期温度計算部22は、次のように、エネルギー増分の最大値max(ΔE)を計算する。式(2)、(3)によれば、max(ΔE)は、式(7)で表される。
【0036】
【数7】
【0037】
ここで、max(h)は、ローカルフィールドhの最大値を示す。ローカルフィールドhに関して、重み値Wijは、バイアス値bよりも支配的である場合が多い(例えば、|Wij|は|b|に比べて大きいことが多い)。重み値Wijがバイアス値bよりも支配的である場合、max(h)は、式(8)で表される。
【0038】
【数8】
【0039】
ここで、式(8)の右辺は、重み行列Wの行方向の重み値の絶対値和の平均を示す(Wは対称行列なので列方向の重み値の絶対値和の平均と考えてもよい)。当該平均は、式(2)、(3)から、取り得るhの最大値のビット平均(状態変数単位の平均)とみなすことができる。
【0040】
式(5)、(7)、(8)から、式(9)を得る。初期温度計算部22は、初期温度における最高温度Tmaxを、式(9)により求める。例えば、A=a2=0.25といった値とすることが考えられる。
【0041】
【数9】
【0042】
なお、初期温度計算部22は、重み値Wijに加え、バイアス値bを考慮して、初期温度における最高温度Tmaxを求めてもよい。その場合、max(ΔE)は、式(7)、(8)に代えて、式(10)で表される。
【0043】
【数10】
【0044】
式(5)、(10)から、式(11)を得る。初期温度計算部22は、最高温度Tmaxを、式(11)により求めてもよい。
【0045】
【数11】
【0046】
このように、初期温度計算部22は、バイアス値と重み値とから得られたエネルギー増分の最大値に基づいて初期温度(Tmax)を計算してもよい。
初期温度計算部22は、上記のようにして求めた最高温度Tmaxおよび最低温度Tminを、初期温度T1として最適化装置10に入力する。
【0047】
情報処理装置20は、最適化装置10を起動し、最適化装置10に入力したパラメータに基づく基底状態の探索を実行させる。情報処理装置20は、最適化装置10による、今回のm回の更新処理の結果として、最適化装置10が出力する複数個の局所解を取得する。今回のm回の更新処理の結果として得られた複数個の局所解は最適化装置10により保持される(次回起動時に保持された局所解が利用される)。なお、最適化装置10が1回の起動当たり1個の局所解のみを出力する場合、情報処理装置20は、最適化装置10を複数回起動して複数個の局所解を取得してもよい。
【0048】
温度補正部23は、最適化装置10が出力する複数個の局所解に基づいて、次回の最適化装置10の起動前に、最適化装置10に入力する温度を補正する。温度補正部23により補正される温度は、最高温度Tmaxである。温度補正部23は、最低温度Tminを終始固定とする(エネルギーの分解能は変わらないため)。
【0049】
温度補正部23は、複数個の局所解を対応するエネルギーの昇順に並べた結果について、各局所解に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値に基づいて補正温度を算出する。より具体的には、温度補正部23は、エネルギーの大きい方の局所解からエネルギーの小さい方の局所解へ、各局所解に対応する各状態変数の間を1ビットずつ変化させる過程で得られる、複数の状態変数の各々に対応する各エネルギー値の上昇値を求める。そして、温度補正部23は、当該各エネルギー値の上昇値のうちの最大の上昇値に基づいて補正温度を算出する。
【0050】
例えば、温度補正部23は、最適化装置10から局所解X1,X2,…を取得する。各局所解に対応するエネルギーE(X)は、式(1)により計算される。温度補正部23は、各局所解とともに各局所解に対応するエネルギーを最適化装置10から取得してもよい。局所解X(状態X)は、N個の状態変数の値(あるいはN個のビット)によって表される。例えば、局所解X1,X2,…に対して、E(X1)は、E(X2)の次に大きいとする。すなわち、局所解X1,X2を対応するエネルギーの昇順に並べると局所解X2,X1となる。
【0051】
また、一例として、局所解X1と局所解X2との間で異なるビットの数は5であるとする。局所解X1のうち、局所解X2と異なるビットを抜き出したビット集合をX1’と表す。局所解X2のうち、局所解X1と異なるビットを抜き出したビット集合をX2’と表す。X1’=「00110」である。X2’=「11001」である。ビット集合X1’,X2’における同じ桁のビット同士は、局所解X1,X2でも同じ桁のビット同士である。
【0052】
系列30は、局所解X1,X2に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値Dmaxを例示する。例えば、温度補正部23は、局所解X1のうち、局所解X2と異なるビットを1ビットずつ変化させて、局所解X1から局所解X2への遷移をシミュレートする。温度補正部23は、式(2)、(3)に基づいて、1ビット変化させたときのエネルギー変化ΔEを、各ビット変化に対して計算する。
【0053】
系列30の例では、局所解X1,X2の間で異なるビットの数は5なので、温度補正部23は、5回のビット変化を行い、その過程で5個のΔEを得る。このとき、温度補正部23は、次に変化させるビットを、貪欲法(greedy algorithm)によって選択してもよいし、ランダムに選択してもよい。貪欲法では、温度補正部23は、候補となるビットのうちΔEが最小になるビットを選択する。
【0054】
例えば、温度補正部23は、X1’=「00110」から1ビットずつ順番に変化させることで、「01110」、「01100」、「11100」、「11101」、X2’=「11001」の各ビット集合を得る。なお、これらの各ビット集合の表記では、局所解X1,X2で共通するビットの表記が省略されている。温度補正部23は、各ビット変化に対して、ΔEを計算する。例示したビット変化のうち、「11100」から「11101」に変化したときのΔEが系列30における最大の上昇値Dmaxであるとする。温度補正部23は、系列30について、max(ΔE)=Dmaxとして、式(5)を変形した式(12)により、最高温度Tmaxを算出する。
【0055】
【数12】
【0056】
なお、エネルギーの上昇値Dmaxの遷移を許容する遷移受入確率A=a3は、温度補正部23に対して予め定められる(a3を任意に設定可能にすることもできる)。一例では、a3=0.36785である(この場合、TmaxはDmaxとほぼ同じ値となる)。なお、Tmaxが0以下となる場合(すなわち、Dmax≦0の場合)は、温度補正部23は、最高温度Tmaxとして前回のTmaxの値を使用する。
【0057】
局所解がX1,X2の2個であれば、温度補正部23は、局所解X1,X2に対して求めた最高温度Tmaxを補正後の最高温度Tmaxとして決定してよい。一方、局所解の数が3個以上の場合、温度補正部23は、同様にして、第1の局所解と、第1の局所解の次にエネルギーの大きな第2の局所解に対し、第2の局所解から第1の局所解への遷移をシミュレートして、当該遷移の過程における最大のΔE(最大のエネルギー上昇値)を得る。そして、温度補正部23は、第2の局所解から第1の局所解への遷移に対して、最高温度Tmaxの候補値を計算する。温度補正部23は、こうして2つの局所解の組毎に求めた最高温度Tmaxの候補値のうちの最大値を、補正後の最高温度Tmaxとして決定する。なお、温度補正部23は、2つの局所解の組毎に求めた最高温度Tmaxの候補値の平均値を、補正後の最高温度Tmaxとして決定してもよい。
【0058】
温度補正部23は、上記のようにして求めた最高温度Tmaxと、最低温度Tminとを補正温度T2として最適化装置10に入力する。なお、Tminが変更されないので、温度補正部23は、補正温度T2としてTmaxのみを最適化装置10に入力してもよい。
【0059】
情報処理装置20は、最適化装置10を起動し、最適化装置10に入力したパラメータに基づく基底状態の探索を実行させる。情報処理装置20は、最適化装置10による、次回のm回(あるいはm’(≠m)回)のイタレーションの結果として、最適化装置10が出力する複数個の局所解を取得して、上記の方法により温度補正を再度行ってもよい。情報処理装置20は、温度補正を所定回数だけ行った後は、それ以降は温度補正を行わずに、最適化装置10による基底状態の探索を継続させてもよい。こうして、最適化装置10による総イタレーション数M回の更新処理が完了すると、情報処理装置20は、最小エネルギーとなった状態を最適化装置10から取得し、最適化問題の解として出力する。
【0060】
最適化システム1によれば、初期温度計算部22により、自ニューロン以外の複数の他のニューロンとの接続の有無を示す重み値から得られたエネルギー増分の最大値に基づいて初期温度が計算される。最適化装置10により、基底状態の探索を実行して複数個の局所解が出力される。温度補正部23により、最適化装置10が出力する複数個の局所解を対応するエネルギーの昇順に並べた結果について、各局所解に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値に基づいて補正温度が算出される。
【0061】
これにより、求解対象の問題毎に適切な温度範囲を自動的に設定することが可能となる。ここで、最適化装置10で演算対象となる問題では、問題毎に取り得るエネルギーの範囲が異なるために適切な温度範囲を決定することが容易でない。例えば、温度が高過ぎて状態遷移が頻繁に起こり過ぎたり、温度が低すぎて状態遷移が全く起こらなかったりすることがある。このように、最適化装置10に設定する温度範囲が適切でないと最適解への収束が難しくなる。また、問題毎に取り得るエネルギーの範囲は、実際に問題を解いてみないと分からない。
【0062】
これに対し、最適化システム1では、情報処理装置20により、問題毎に適切な温度範囲が自動的に設定される。このため、新規の問題を解くためのユーザによるパラメータのチューニング作業を不要にできる。適切な温度によって、「状態遷移が頻繁に起こり過ぎる」、あるいは、「状態遷移が全く起こらない」という状況を防ぎ、最適解への収束を容易にすることができる。情報処理装置20により、局所解からの脱出を適切に促進するような温度パラメータを設定することで、最適化装置10による演算の実行時間を短縮できる。
【0063】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の最適化システムの例を示す図である。
【0064】
最適化システム2は、最適化装置40および情報処理装置50を有する。
最適化装置40は、SAの手法を用いて、最適化問題に対する解の探索を行う。全体制御部41、入力部42、メモリ43a,43b,43c,43d,43e,43f,43g、データフロー制御部44を有する。また、最適化装置40は、FIFO(First In / First Out)メモリ(以下、単にFIFOと言う)45a,45b,45c、演算部46、更新対象選択部47、乱数生成部48、出力部49を有する。最適化装置40は、例えば、1チップの半導体集積回路により実現できる。
【0065】
また、最適化装置40は、情報処理装置50に接続される。情報処理装置50は、CPU51、メモリ52およびバス53を有する。CPU51およびメモリ52は、バス53に接続される。また、最適化装置40は、バス53に接続される。
【0066】
CPU51は、メモリ52に記憶されているデータを読み出し、バス53を介して最適化装置40に当該データを供給する処理や、最適化装置40が出力するデータを、バス53を介してメモリ52に格納する処理などを行う。CPU51は、メモリ52に記憶されたプログラムを実行する。
【0067】
メモリ52は、計算対象の最適化問題によって決まる定数である、バイアスおよび複数の重み係数を記憶する。また、メモリ52は、状態、エネルギー、最小のエネルギー、状態遷移の促進に用いられるオフセットの初期値などのデータを記憶する。例えば、オフセットは、式(6)の判定において、式(6)の右辺(-ΔE)に加算されることがある。メモリ52は、SDRAM(Synchronous Dynamic Random Access Memory)などの揮発性の記憶装置、または、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)やHDDなどの不揮発性の記憶装置である。
【0068】
最適化装置40では、全体制御部41、データフロー制御部44、演算部46および更新対象選択部47により、複数の状態に対する基底状態の探索の演算(複数の試行)が並行して実行される。例えば、データフロー制御部44、演算部46および更新対象選択部47それぞれは、複数の回路部と回路部間に設けられたレジスタとを有し、複数の回路部およびレジスタを用いて、複数の状態(すなわち、各試行)に対する演算をパイプライン処理する。データフロー制御部44、演算部46および更新対象選択部47の構成例については特許第6465223号公報を参考にできる。
【0069】
最適化装置40では、データフロー制御部44、演算部46および更新対象選択部47により、N個のニューロン、および、N個のニューロンのうち更新対象のビット(状態変数)を保持するニューロンを選択する構成がデジタル回路によって実現される。最適化装置40は、N個のニューロンのセットを複数実現し、パイプライン処理によって、当該複数のセットに対する複数の試行を並列に実行する。
【0070】
最適化装置40において、全体制御部41は、最適化装置40の起動や終了を制御する。また、全体制御部41は、データフロー制御部44に対して、最適化装置40の1回の起動当たりのイタレーション数mを指定する。
【0071】
入力部42は、メモリ52から読み出されたデータを受け、データフロー制御部44に供給する。
メモリ43a~43gは、コンテキスト情報を記憶する。7つのメモリ43a~43gのそれぞれは、例えば1種類のコンテキスト情報を記憶する。メモリ43aは各試行における現在の状態を記憶し、メモリ43bは各試行における現在のエネルギーを記憶する。メモリ43cは各試行における現在の最小エネルギーを記憶する。メモリ43dは各試行における現在の最小エネルギーの状態を記憶する。メモリ43eは各試行における現在の温度を記憶する。メモリ43fは各試行における現在のオフセットを記憶する。メモリ43gは、各試行における現在のバイアス(ローカルフィールド)を記憶する。
【0072】
メモリ43a~43gは、例えば、RAMなどの揮発性の記憶装置、または、フラッシュメモリなどの不揮発性の記憶装置である。
なお、メモリ43a~43gの代わりに、1つのメモリが用いられてもよい。
【0073】
データフロー制御部44は、メモリ43a~43gが保持するコンテキスト情報について、スピン情報と更新対象のエネルギーの変化値とに基づいて、各試行におけるビットの更新制御を繰り返す。
【0074】
FIFO45aは、データフロー制御部44が出力するデータを所定のクロックサイクル分保持した後、出力する。FIFO45bは、演算部46が出力するデータを所定のクロックサイクル分保持した後、出力する。FIFO45cは、更新対象選択部47が出力するデータを所定のクロックサイクル分保持した後、出力する。上記所定のクロックサイクルは、FIFO45a,45b,45cのエントリ数(depthと呼ばれる場合もある)に依存する。
【0075】
なお、FIFO45a~45cは、それぞれ異なるエントリ数を有していてもよい。また、FIFO45a~45cのうち、1つ、2つまたは全ては無くてもよい。
演算部46は、乱数生成部48にて生成された一様乱数u(0<u≦1)、重み係数、スピン情報、更新制御によって更新された現在の状態および温度Tに基づいて、例えばメトロポリス法の場合、式(6)により、複数のエネルギーの変化値の候補を計算する。式(6)を満たすΔEが、エネルギーの変化値の候補となる。なお、スピン情報は、更新対象のビットの情報である。
【0076】
更新対象選択部47は、乱数生成部48が生成した乱数に基づいて、演算部46が計算した複数のエネルギーの変化値の候補から、更新対象のエネルギーの変化値を1つ選択する。
【0077】
乱数生成部48は、演算部46と更新対象選択部47に供給する乱数を生成する。乱数生成部48は、異なるシードに基づいて複数の乱数を生成してもよい。乱数生成部48は、例えば、LFSR(Linear Feedback Shift Register)などにより実現できる。
【0078】
出力部49は、データフロー制御部44が生成したデータを最適化装置40の外部(例えば、メモリ52)に出力する。
最適化装置40は、例えば、レプリカ交換法により、ある最適化問題に対するn個の状態を並列に処理する。レプリカ交換法では、温度の異なる複数のレプリカを用意し、各レプリカで温度固定として、SAと同じ動作により状態を更新する。そして、一定回数、状態を更新したらレプリカ間のエネルギー差と温度差とに応じてレプリカ間の状態を入れ替えることで、局所解からの脱出を容易にする。最適化装置40は、n個のレプリカを並列に処理することで、最適化装置40の1回の起動当たり、n個の局所解を出力する。
【0079】
図3は、最適化装置に対する温度設定例を示す図である。
CPU51は、最適化装置40に設定する温度範囲として、最高温度Tmaxおよび最低温度Tminを決定する。また、CPU51は、最高温度Tmaxから最低温度Tminまでの温度の下げ方(温度スケジュール)を、最適化装置40に設定する。
【0080】
図3(A)は、SAにおける温度設定例のグラフ61を示す。グラフ61の横軸はビット状態更新回数を示す。グラフ61の縦軸は温度を示す。SAでは、例えば、ビット状態更新回数rに対して、Tr+1=T×decay(r=1,2,…)とする。ここで、decayは、0<decay<1の実数であり、例えば、Tmax,Tminおよびビット状態更新回数rから計算される。
【0081】
図3(B)は、レプリカ交換法における温度設定例のグラフ62を示す。グラフ62の横軸はビット状態更新回数を示す。グラフ62の縦軸は温度を示す。グラフ62は、一例として、レプリカ数8の場合である。レプリカ交換法では、TmaxとTminとの間の温度を個別指定する、あるいは、温度間の間隔(等差や等比など)を指定する。このように、レプリカ交換法では、あるレプリカに対して温度を一定として、一定回数、状態を更新したらレプリカ間のエネルギー差と温度差とに応じて、レプリカ間の状態を入れ替える。ただし、状態に代えて、温度を入れ替えてもよい。
【0082】
図4は、状態遷移の例を示す図である。
最適化装置40で演算対象となる問題では、問題毎に取り得るエネルギーの範囲が異なるために適切な温度範囲を決定することが容易でない。
【0083】
図4(A)は、温度が高過ぎる場合の状態遷移例のグラフ71を示す。グラフ71の横軸は状態Xを示す。グラフ71の縦軸はエネルギーE(X)を示す。温度Tが高過ぎると、温度Tに応じた熱ノイズ(-ln(u)×T)に対して、式(6)により、状態遷移が頻繁に発生する。
【0084】
図4(B)は、温度が低過ぎる場合の状態遷移例のグラフ72を示す。グラフ72の横軸は状態Xを示す。グラフ72の縦軸はエネルギーE(X)を示す。温度Tが低過ぎると、温度Tに応じた熱ノイズに対して、式(6)により、状態遷移がほとんど起こらない。
【0085】
このように、最適化装置40に設定する温度範囲が適切でないと最適解への収束が難しくなる。また、問題毎に取り得るエネルギーの範囲は、実際に問題を解いてみないと分からない。そこで、情報処理装置50は、最適化装置40に設定する温度を求解対象の問題毎に適切に設定可能にする機能を提供する。
【0086】
図5は、情報処理装置の機能例を示す図である。
CPU51は、メモリ52に記憶されたプログラムを実行することで、制御部511、初期温度計算部512、温度補正部513およびセレクタ514の機能を発揮する。制御部511、初期温度計算部512、温度補正部513およびセレクタ514は、ASICやFPGAなどのハードウェアにより実現されてもよい。
【0087】
制御部511は、最適化装置40の起動および終了を制御する。制御部511は、最適化装置40の総イタレーション数Mを分割して、最適化装置40を複数回起動する。最適化装置40の起動1回当たりのイタレーション数はmである。制御部511は、初期温度計算部512や温度補正部513による最適化装置40に対するパラメータの設定を制御する。
【0088】
初期温度計算部512は、ある最適化問題に関して、最適化装置40が最初に起動される前に、メモリ52に記憶された重み行列Wおよびバイアス値bを読み出す。初期温度計算部512は、重み行列Wおよびバイアス値bに基づいて、初期温度Ts={Tmax,Tmin}を計算する。例えば、初期温度計算部512は、エネルギーの分解能が1の場合(エネルギーが整数の場合)、ΔE=1のときの遷移受入確率Aが例えば0.001になるTminとして、式(5)により、Tmin=0.145を求める。
【0089】
また、重み行列Wがバイアス値bよりも支配的である場合、初期温度計算部512は、式(8)、(9)によりTmaxを計算する。あるいは、重み行列Wに加えて、バイアス値bも考慮する場合、初期温度計算部512は、式(10)、(11)によりTmaxを計算する。
【0090】
このように、初期温度計算部512は、重み行列Wおよびバイアス値bから計算される、状態におけるビット変化に伴うエネルギー変化の最大値に基づいて、エネルギー増分が当該最大値となる状態変数(ビット)の変化が第1の確率で許容されるように初期温度Tsにおける最高温度Tmaxを計算する。第1の確率(式(9)、(11)のA)として、状態変数の変化を許容し過ぎず、状態変数の変化を制限し過ぎない適度な値(一例では0.25)が初期温度計算部512に予め与えられる。
【0091】
初期温度計算部512は、重み行列W、バイアス値bおよびイタレーション数mを最適化装置40に入力する。また、初期温度計算部512は、初期温度Ts={Tmax,Tmin}を、セレクタ514に供給する。
【0092】
温度補正部513は、該当の最適化問題に関して、最適化装置40の2回目以降の起動前に、最適化装置40に設定する温度を補正する。温度補正部513は、最低温度Tminについては、初期温度計算部512により計算されたTminをそのまま用いる。
【0093】
一方、最高温度Tmaxについて、温度補正部513は次のように、補正後の最高温度を計算する。温度補正部513は、最適化装置40が出力するn個の局所解を取得する。温度補正部513は、局所解Xに対応するエネルギーEを最適化装置40から取得してもよいし、局所解Xに対応するエネルギーEを式(1)により計算してもよい。温度補正部513は、局所解間の異なるビットに着目し、一方の局所解から他方の局所解へ1ビットずつ近づけていき、1ビット遷移したときの最大エネルギー上昇量(エネルギー値の最大の上昇値)を算出する。温度補正部513は、算出された最大エネルギー上昇量から式(12)を用いて、補正後の最高温度Tmaxを決定する。
【0094】
このように、温度補正部513は、一方の局所解から他方の局所解への1ビット遷移により得られたエネルギー値の最大の上昇値に基づいて、エネルギーの上昇値が当該最大の上昇値となる状態変数(ビット)の変化が第2の確率で許容されるように補正後の温度(補正温度)Tsにおける最高温度Tmaxを算出する。第2の確率(式(12)のA)として、状態変数の変化を許容し過ぎず、状態変数の変化を制限し過ぎない適度な値(一例では、0.36785)が温度補正部513に予め与えられる。第2の確率は、第1の確率と同じでもよいし異なっていてもよい。
【0095】
温度補正部513は、補正後の温度(補正温度)Ts={Tmax,Tmin}を、セレクタ514に供給する。
セレクタ514は、ある最適化問題に対して、最適化装置40が最初に起動される場合には、初期温度計算部512から供給された温度(初期温度)Tsを、最適化装置40に入力する。セレクタ514は、当該最適化問題に対して、最適化装置40が2回目以降に起動される場合には、温度補正部513から供給された温度(補正温度)Tsを、最適化装置40に入力する。これにより、最適化装置40が最初に起動される場合と、2回目以降に起動される場合とで、最適化装置40に設定される温度範囲が変更される。
【0096】
ここで、初期温度計算部512が用いる式(8)の右辺の値(Σij|Wij|)/Nについて補足する。
図6は、重み行列の例を示す図である。
【0097】
重み行列W={Wij}は、対角成分が0の対称行列である。重み行列Wは、状態を表すビットの数がN個のとき、N×N行列となる。正方形81は重み行列Wを表す。i=0,i=1,…,i=N-1は、行番号を示す。
【0098】
(Σij|Wij|)/Nは、行方向の重み値の絶対値和の平均を示す。当該平均は、式(2)、(3)で示されるΔEの計算式により、取り得るhの最大値のビット平均とみなすことができる。なお、重み行列Wは、対称行列なので、(Σij|Wij|)/Nは列方向の重み値の絶対値和の平均と考えても同じである。
【0099】
次に、補正温度の計算において、温度補正部513が取得する局所解の例を説明する。
図7は、局所解の例を示す図である。
温度補正部513は、最適化装置40からn個の局所解を取得する。例えば、温度補正部513は、最適化装置40から取得した局所解のうち、良い解(エネルギーが低い解)を上位n個だけ取得してもよい。
【0100】
温度補正部513は、n個の局所解をエネルギーの昇順に並べ、隣り合う2個の局所解間において、エネルギーの高い方の局所解から、エネルギーの低い方の局所解へ、異なるビットを1ビットずつ選択して、状態を変化させていく。例えば、グラフ91は、状態XとエネルギーE(X)との関係を示す。グラフ91の横軸は状態Xを示す。グラフ91の縦軸はエネルギーE(X)を示す。局所解Xa,Xbは、n個の局所解をエネルギーの昇順に並べたときに隣り合う2個の局所解である。E(Xa)>E(Xb)とする。
【0101】
図8は、ビットの変化とエネルギーの変化との関係の例を示す図である。
グラフ92は、局所解Xa,Xb間において異なるビットの変化とエネルギー変化との関係の例を示す。グラフ92の横軸は状態Xを示す。グラフ92の縦軸はエネルギーE(X)を示す。ここで、局所解Xaと局所解Xbとの間で異なるビットの数は9であるとする。局所解Xaのうち局所解Xbと異なるビットを抜き出したビット集合をXa’と表す。局所解Xbのうち局所解Xaと異なるビットを抜き出したビット集合をXb’と表す。Xa’=「001101110」である。Xb’=「110010001」である。ビット集合Xa’,Xb’における同じ桁のビット同士は、局所解Xa,Xbでも同じ桁のビット同士である。
【0102】
局所解Xa,Xbの間で異なるビットの数は9なので、温度補正部513は、9回のビット変化を行い、その過程で9個のΔEを得る。このとき、温度補正部513は、次に変化させるビットを、貪欲法によって選択してもよいし、ランダムに選択してもよい。貪欲法では、温度補正部513は、1ビット変化させる候補のビット(状態変数)のうちエネルギー値の上昇値ΔEが最小になるビットを選択する。例えば、温度補正部513は、候補のビットの全てでΔEが正となる場合は、エネルギー上昇値の最も低いビットを選択する。基底状態の探索では、エネルギー変化の小さい状態がエネルギー変化の大きい状態よりも遷移先として優先的に選択されるため、変化させるビットをランダムに選択するよりも、貪欲法を用いる方が局所解間の遷移をより適切にシミュレートできる。
【0103】
例えば、温度補正部513は、Xa’=「001101110」から1ビットずつ順番に変化させることで、「011101110」、「011111110」、「010111110」、「110111110」、「110011110」、「110011111」、「110011101」、「110010101」、Xb’=「110010001」の各ビット集合を得る。なお、これらの各ビット集合の表記では、局所解Xa,Xbで共通するビットの表記が省略されている。
【0104】
温度補正部513は、各ビット変化に対して、ΔEを計算する。例示したビット変化のうち、「110011111」から「110011101」に変化したときのΔEが、最大値Dmaxであるとする。温度補正部513は、max(ΔE)=Dmaxとして、式(12)により、局所解Xa,Xbに対する最高温度Tmaxの候補値を算出する。例えば、遷移受入確率A=0.36785でエネルギーの上昇値Dmaxの遷移を許容するとした場合、TmaxはDmaxとほぼ同じ値になる。
【0105】
温度補正部513は、エネルギーの昇順に並べたときに隣り合う他の局所解の組についても同様にして最高温度Tmaxの候補値を計算する。温度補正部513は、エネルギーの昇順に並べたときに隣り合う局所解の組毎に計算した最高温度Tmaxの候補値のうちの最高値を、補正後の最高温度Tmaxとして決定する。なお、Tmaxが0以下となる場合は、温度補正部513は、最高温度Tmaxとして前回のTmaxの値を使用する。
【0106】
図9は、最適化システムの動作例を示す図である。
(S1)CPU51は、初期温度Ts={Tmax,Tmin}を算出する。CPU51は、最適化装置40への初期温度Tsの設定を行う。CPU51は、最適化装置40を起動する。
【0107】
(S2)最適化装置40は、入力されたパラメータを用いて基底状態の探索を行い、複数個の局所解を出力する。なお、最適化装置40は、ステップS2の結果取得された途中状態を保持する(次回起動時に保持した途中状態から基底状態の探索を行う)。最適化装置40は、動作を終了する。
【0108】
(S3)CPU51は、最適化装置40から出力された複数個の局所解(X,E)を取得する。CPU51は、最高温度Tmaxの補正、および、最適化装置40への補正後の温度(補正温度)Tsの設定を行う。前述のように、最低温度Tminについては、ステップS1で算出された値が用いられる。CPU51は、最適化装置40を起動する。
【0109】
(S4)最適化装置40は、入力されたパラメータを用いて基底状態の探索を行い、複数個の局所解を出力する。なお、最適化装置40は、ステップS4の結果取得された途中状態を保持する。最適化装置40は、動作を終了する。
【0110】
(S5)CPU51は、最適化装置40から出力された複数個の局所解(X,E)を取得する。CPU51は、最高温度Tmaxの補正、および、最適化装置40への補正後の温度(補正温度)Tsの設定を行う。前述のように、最低温度Tminについては、ステップS1で算出された値が用いられる。CPU51は、最適化装置40を起動する。
【0111】
(S6)最適化装置40は、入力されたパラメータを用いて基底状態の探索を行い、複数個の局所解を出力する。なお、最適化装置40は、ステップS6の結果取得された途中状態を保持する。最適化装置40は、動作を終了する。
【0112】
(S7)CPU51は、最適化装置40から出力された複数個の局所解(X,E)を取得する。最適化装置40から取得された局所解のうち、CPU51は、最小エネルギーに対応する解を、最適化問題に対する解として出力する。
【0113】
なお、ステップS2,S4,S6それぞれにおけるイタレーション数はmである。ただし、ステップS2,S4,S6におけるイタレーション数は、異なってもよい。また、CPU51は、最適化装置40の起動毎に、温度補正を行ってもよい。あるいは、CPU51は、総イタレーション数Mの前の方の段階では最適化装置40の起動毎に温度補正を行うが、総イタレーション数Mの後の方の段階では温度補正を行わないようにしてもよい。
【0114】
図10は、情報処理装置による制御例を示すフローチャートである。
(S10)制御部511は、イタレーションカウンタitに0を代入する(it=0)。
【0115】
(S11)初期温度計算部512は、今回の最適化問題に対応する重み行列W、バイアス値bおよび1回起動当たりのイタレーション数mを最適化装置40に設定する。
(S12)初期温度計算部512は、重み行列Wおよびバイアス値bに基づいて、式(5)および式(11)(あるいは式(9))により初期温度Ts=(Tmax,Tmin)を計算する。
【0116】
(S13)セレクタ514は、温度Tsを最適化装置40に設定する。具体的には、セレクタ514は、今回の最適化問題に対する最適化装置40の初回の起動の際には、初期温度計算部512から供給される初期温度Tsを、最適化装置40に設定する。また、セレクタ514は、今回の最適化問題に対する最適化装置40の2回目以降の起動の際には、温度補正部513から供給される補正温度Tsを、最適化装置40に設定する。
【0117】
(S14)制御部511は、最適化装置40を起動する。
(S15)制御部511は、最適化装置40による演算の終了を待機する。
(S16)温度補正部513は、n個の局所解(X,E)を最適化装置40から取得する。
【0118】
(S17)温度補正部513は、Tmax補正の処理を実行する。Tmax補正の詳細は後述される。
(S18)制御部511は、イタレーションカウンタitにmを加算する(it=it+m)。
【0119】
(S19)制御部511は、イタレーションカウンタit>Mであるか否かを判定する。it>Mの場合、処理が終了する。処理が終了すると、制御部511は、最適化装置40から最適化問題の解を取得する。it≦Mの場合、ステップS13に処理が進む。ここで、2回目以降にステップS13が実行されるとき、最適化装置40に設定される温度は、補正後の温度(補正温度)Tsとなる。
【0120】
ステップS13~S19で示されるように、温度補正部513は、最適化装置40により前回の補正温度を用いて出力された複数個の局所解に基づいて今回の補正温度を算出することもある。このようにして、温度補正を繰り返し行うことで、より適切な温度を最適化装置40に設定できる。
【0121】
図11は、Tmax補正例を示すフローチャートである。
Tmax補正の処理は、ステップS17に相当する。
(S20)温度補正部513は、最適化装置40からn個の局所解を取得する。
【0122】
(S21)温度補正部513は、n個の局所解を、局所解に対応するエネルギーの昇順にソートする。
(S22)温度補正部513は、kに0を代入する(k=0)。ここで、kは、局所解を識別する識別番号である。k=0,1,2,…であり、kの番号が大きいほど、エネルギーが大きい局所解に相当する。
【0123】
(S23)温度補正部513は、局所解[k]と局所解[k+1]とを選択する。
(S24)温度補正部513は、選択した局所解[k]および局所解[k+1]に対して、Tmax[k]算出を実行する。Tmax[k]算出の詳細は後述される。ここで、最高温度候補Tmax[k]は、最高温度Tmaxのk番目の候補値を示す。
【0124】
(S25)温度補正部513は、kをインクリメントする(k=k+1)。
(S26)温度補正部513は、kがn-1に等しい(k==n-1)か否かを判定する。kがn-1に等しい場合、ステップS27に処理が進む。kがn-1に等しくない場合、ステップS23に処理が進む。
【0125】
(S27)温度補正部513は、最高温度Tmax=max(Tmax[k])(k=0,1,…,n-2)を計算する。ここで、max(Tmax[k])は、Tmax[0],Tmax[1],…,Tmax[n-2]のうちの最大値を表す。そして、Tmax補正が終了する。
【0126】
なお、ステップS27において、Tmax≦0の場合、温度補正部513は、前回のTmaxを用いる(この場合、補正を行わないと考えてもよい)。
図12は、Tmax[k]算出例を示すフローチャートである。
【0127】
Tmax[k]算出の処理は、ステップS24に相当する。
(S30)温度補正部513は、解C=局所解[k+1]とする。
(S31)温度補正部513は、Dmax=0とする。
【0128】
(S32)温度補正部513は、解Cと局所解[k]間の異なるビット集合Sを抽出する。
(S33)温度補正部513は、解Cにおいて集合Sに属するビットのΔEを式(2)、(3)を用いて算出する。温度補正部513は、解Cにおいて集合Sに属するビット毎に、ΔEを計算する。
【0129】
(S34)温度補正部513は、ΔEが最小になるビットsを選択する。例えば、集合Sに属する全てのビットに対してΔEが正となる場合には、温度補正部513は、最もエネルギー上昇の低いビットsを選択する。なお、温度補正部513は、貪欲法によりビットsを選択する他にも、例えば、集合Sからランダムにビットsを選択してもよい。温度補正部513は、D=ΔE[s]とする。ここで、ΔE[s]は、解Cにおけるビットsの反転に対するエネルギー変化を示す。
【0130】
(S35)温度補正部513は、Dの最大値Dmaxを更新する。すなわち、温度補正部513は、Dmax=max(D,Dmax)とする。max(D,Dmax)は、Dと現在のDmaxのうち、大きい方を示す。
【0131】
(S36)温度補正部513は、解Cのビットsを反転させ、集合Sからビットsを除外する。
(S37)温度補正部513は、集合Sが空集合(すなわち、S=={})であるか否かを判定する。集合Sが空集合の場合、ステップS38に処理が進む。集合Sが空集合でない場合、ステップS33に処理が進む。ここで、ステップS36において解Cのビットsが反転されると、ローカルフィールドhが変化するため、ビットsを選択する前にステップS33で再度ΔEの算出が行われる。
【0132】
(S38)温度補正部513は、最高温度候補Tmax[k]=Dmax/-ln(A)を計算する。そして、Tmax[k]算出が終了する。
図13は、複数の局所解からTmaxを算出する具体例を示す図である。
【0133】
図13では5個の局所解[0]~[4]に対して、温度補正部513がTmaxを算出する例を示す。局所解[0]~[4]は、識別番号が大きいほど、局所解に対応するエネルギーも大きい。
【0134】
温度補正部513は、エネルギーの昇順に並べたときに隣り合う局所解の組について、図12で例示したTmax[k]算出を行う。すなわち、局所解[0]~[4]に対して、図11のステップS24が4回実行される。ステップS24aは、局所解[0],[1]に対するTmax[0]算出の処理である。ステップS24bは、局所解[1],[2]に対するTmax[1]算出の処理である。ステップS24cは、局所解[2],[3]に対するTmax[2]算出の処理である。ステップS24dは、局所解[3],[4]に対するTmax[3]算出の処理である。
【0135】
そして、温度補正部513は、最高温度候補Tmax[0]~[3]に対して、図11のステップS27を実行する。すなわち、温度補正部513は、最高温度候補Tmax[0]~[3]のうちの最大値を算出し、算出した最大値を補正後の最高温度Tmaxと決定する。また、温度補正部513は、最高温度候補Tmax[0]~[3]の平均値を算出し、算出した平均値を補正後の最高温度Tmaxと決定してもよい。
【0136】
なお、第2の実施の形態の例では、1回の起動当たり、最適化装置40が複数個の局所解を出力する例を示した。一方、最適化装置40が1回の起動当たり1個の局所解のみを出力する場合、情報処理装置50は、最適化装置40を複数回起動して複数個の局所解を取得し、当該複数個の局所解に基づいて、温度補正を行ってもよい。
【0137】
このように、情報処理装置20は、ニューロン間の重み値に応じた最大エネルギー上昇値から初期温度を求める。また、情報処理装置20は、最適化装置40から取得した、ある局所解から他の局所解へ1ビットずつ近づける過程で得られる最大エネルギー上昇値から補正温度を求める。
【0138】
第2の実施の形態の最適化システム2によれば、求解対象の問題毎に適切な温度範囲を自動的に設定することが可能となる。ここで、最適化装置40で演算対象となる問題では、問題毎に取り得るエネルギーの範囲が異なるために適切な温度範囲を決定することが容易でない。例えば、図4で例示したように、温度が高過ぎて状態遷移が頻繁に起こり過ぎたり、温度が低すぎて状態遷移が全く起こらなかったりすることがある。このように、最適化装置40に設定する温度範囲が適切でないと最適解への収束が難しくなる。また、問題毎に取り得るエネルギーの範囲は、実際に問題を解いてみないと分からない。
【0139】
これに対し、最適化システム2では、情報処理装置50により、問題毎に適切な温度範囲が自動的に設定される。このため、新規の問題を解くためのユーザによるパラメータのチューニング作業を不要にできる。また、適切な温度を最適化装置40に設定することで、「状態遷移が頻繁に起こり過ぎる」、あるいは、「状態遷移が全く起こらない」という状況を防ぎ、最適解への収束を容易にすることができる。更に、情報処理装置50により、局所解からの脱出を適切に促進するような温度パラメータを設定することで、最適化装置40による演算の実行時間を短縮できる。
【0140】
なお、第1の実施の形態の最適化装置10および第2の実施の形態の最適化装置40として、デジタル回路などを用いてSAを実行する装置の他、シミュレーテッド量子アニーリング(SQA:Simulated Quantum Annealing)を実行する装置を用いてもよい。すなわち、情報処理装置20,50を、SQAにおける温度パラメータの決定に用いることもできる。
【符号の説明】
【0141】
1 最適化システム
10 最適化装置
11 グラフ
11a ノード
20 情報処理装置
21 記憶部
22 初期温度計算部
23 温度補正部
30 系列
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13