(57)【要約】【課題】計算速度を向上する。【解決手段】エネルギー値算出回路２０ａ１〜２０ａｎのそれぞれは、第１のニューロンと結合する複数の第２のニューロンの状態値のそれぞれに、結合の強さを示す重み値を掛けた値の総和に基づいてエネルギー値を算出し、エネルギー値を、複数の第２のニューロンのうち状態が更新された更新ニューロンの識別情報と、更新された更新ニューロンの状態値とに基づいて更新する。状態遷移判定回路２０ｂ１〜２０ｂｉのそれぞれは、第２のエネルギー値と、ノイズ値とに基づき、第１のニューロンの状態値の変化が可能か否かを判定した判定結果を示す判定信号を出力する。更新ニューロン選択回路１２は、状態遷移判定回路２０ｂ１〜２０ｂｉのそれぞれが出力する判定信号に基づき、状態値の変化が可能な第１のニューロンを選択し、選択した第１のニューロンの識別情報を更新ニューロンの識別情報として出力する。【選択図】図１
2018041351.tif 000002
【特許請求の範囲】
【請求項１】
複数のニューロンのうち第１のニューロンと結合する複数の第２のニューロンの状態を示す複数の第１の状態値のそれぞれに、前記第１のニューロンと前記複数の第２のニューロンとの結合の強さをそれぞれ示す複数の重み値のうち、対応する第１のニューロンと第２のニューロンとの間の結合の強さを示す重み値を掛けた値の総和に基づいて算出される第１のエネルギー値を、前記複数の第２のニューロンのうち状態が更新された更新ニューロンの第１の識別情報と、更新された前記更新ニューロンの状態を示す第２の状態値とに基づいて更新した第２のエネルギー値を算出する算出回路と、
前記第２のエネルギー値、または、前記第１のニューロンの状態の変化時におけるニューラルネットワークのエネルギー関数の変化分と、第１のノイズ値とに基づき、前記第１のニューロンの状態を示す第３の状態値の変化が可能か否かを判定した判定結果を示す判定信号を出力する状態遷移判定回路と、
をそれぞれが有し、互いに異なる第１のニューロンについての判定信号をそれぞれ出力する複数のイジング装置と、
前記複数のイジング装置のそれぞれが出力する判定信号に基づき、前記複数のニューロンのうち前記第３の状態値の変化が可能と判定された第１のニューロンを選択し、選択した前記第１のニューロンの第２の識別情報を前記第１の識別情報として出力する更新ニューロン選択回路と、
を有する情報処理装置。
【請求項２】
前記状態遷移判定回路は、前記第２のエネルギー値と前記第１のノイズ値との加算結果と、閾値との比較結果の変化に基づき、前記第３の状態値の変化が可能か否かを判定する、請求項１に記載の情報処理装置。
【請求項３】
前記状態遷移判定回路は、前記ニューラルネットワークのエネルギー関数の変化分と前記第１のノイズ値との加算結果と、閾値との比較結果の変化に基づき、前記第３の状態値の変化が可能か否かを判定する、請求項１に記載の情報処理装置。
【請求項４】
前記更新ニューロン選択回路は、前記第３の状態値の変化が可能と判定された第１のニューロンが複数ある場合、第２のノイズ値に基づいて、複数の第１のニューロンの何れか１つを選択し、選択した何れか１つの前記第１のニューロンの第２の識別情報を、前記第１の識別情報として出力する、請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
前記更新ニューロン選択回路は、複数段にわたってツリー状に接続された複数の選択回路を有し、
前記複数の選択回路のうち、１段目の複数の第１の選択回路のそれぞれは、前記複数のイジング装置のそれぞれが出力する前記判定信号を、２以上の数ずつ入力して、入力された２以上の判定信号のうち、前記第２のノイズ値に基づいて選択した判定信号に対応する前記第２の識別情報を生成し、
前記複数の選択回路のうち、２段目以降の複数の第２の選択回路は、前記複数の第１の選択回路または前段の複数の第３の選択回路が選択した判定信号と、前記第２の識別情報とを、２以上の数ずつ入力し、入力された２以上の判定信号と２以上の第２の識別信号とのうち、前記第２のノイズ値に基づいて何れかの判定信号と何れかの第２の識別情報とを選択し、
前記複数の第２の選択回路のうち、最後段の第３の選択回路が選択した第２の識別情報が、前記第１の識別情報である、請求項４に記載の情報処理装置。
【請求項６】
前記状態遷移判定回路は、前記ニューラルネットワークのエネルギー関数の変化分に基づき、前記第１のニューロンの状態の更新を許容する確率値を算出し、前記第１のノイズ値と前記確率値とに基づき前記判定信号を出力する、請求項１に記載の情報処理装置。
【請求項７】
複数のニューロンのうち第１のニューロンと結合する複数の第２のニューロンの状態を示す複数の第１の状態値のそれぞれに、前記第１のニューロンと前記複数の第２のニューロンとの結合の強さをそれぞれ示す複数の重み値のうち、対応する第１のニューロンと第２のニューロンとの間の結合の強さを示す重み値を掛けた値の総和に基づいて算出される第１のエネルギー値を、前記複数の第２のニューロンのうち状態が更新された更新ニューロンの第１の識別情報と、更新された前記更新ニューロンの状態を示す第２の状態値とに基づいて更新した第２のエネルギー値を算出する算出回路と、
前記第２のエネルギー値、または、前記第１のニューロンの状態の変化時におけるニューラルネットワークのエネルギー関数の変化分と、ノイズ値とに基づき、前記第１のニューロンの状態を示す第３の状態値の変化が可能か否かを判定した判定結果を示す判定信号を出力する状態遷移判定回路と、
を有するイジング装置。
【請求項８】
複数のニューロンのうち第１のニューロンと結合する複数の第２のニューロンの状態を示す複数の第１の状態値のそれぞれに、前記第１のニューロンと前記複数の第２のニューロンとの結合の強さをそれぞれ示す複数の重み値のうち、対応する第１のニューロンと第２のニューロンとの間の結合の強さを示す重み値を掛けた値の総和に基づいて算出される第１のエネルギー値を、前記複数の第２のニューロンのうち状態が更新された更新ニューロンの第１の識別情報と、更新された前記更新ニューロンの状態を示す第２の状態値とに基づいて更新した第２のエネルギー値を算出する算出回路と、前記第２のエネルギー値、または、前記第１のニューロンの状態の変化時におけるニューラルネットワークのエネルギー関数の変化分と、ノイズ値とに基づき、前記第１のニューロンの状態を示す第３の状態値の変化が可能か否かを判定した判定結果を示す判定信号を出力する状態遷移判定回路と、をそれぞれが有し、互いに異なる第１のニューロンについての判定信号をそれぞれ出力する複数のイジング装置に対して、
更新ニューロン選択回路が、前記複数のイジング装置のそれぞれが出力する判定信号に基づき、前記複数のニューロンのうち前記第３の状態値の変化が可能と判定された第１のニューロンを選択し、選択した前記第１のニューロンの第２の識別情報を前記第１の識別情報として供給する、
情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、イジング装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いたイジング装置（ボルツマンマシンと呼ばれる場合もある）を用いる方法がある。イジング装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
イジング装置は、ニューラルネットワークを用いてモデル化することもできる。その場合、イジング装置に含まれる複数のユニット（ビット）のそれぞれが、他のビットの状態と、他のビットと自身との結合の強さを示す重み値（結合係数とも呼ばれる）とに応じて０または１を状態値として出力するニューロンとして機能する。イジング装置は、たとえば、シミュレーテッド・アニーリングにより、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の最小値が得られる各ニューロンの状態値の組み合わせを、解として求める。
【０００４】
従来、イジング装置をハードウェアで実現することによって、計算時間を短縮することが提案されている。
また、ハードウェアで実現された複数のイジング装置のそれぞれを１つのニューロンとして機能させ、並列処理させる手法がある。ただ、計算の収束性を考慮して、複数のニューロンのうち、１つだけが更新を許容される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平３−１００８５７号公報
【特許文献２】国際公開第２０１４／１９２１５３号
【非特許文献】
【０００６】
【非特許文献１】NICHOLAS METROPOLIS, ARIANNA W. ROSENBLUTH, MARSHALL N. ROSENBLUTH, AUGUSTA H. TELLER, AND EDWARD TELLER, “Equation of State Calculations by Fast Computing Machines,” THE JOURNAL OF CHEMICAL PHYSICS VOLUME 21, NUMBER 6 JUNE, 1953
【発明の概要】
【発明が解決しようとする課題】
【０００７】
複数のイジング装置のそれぞれを１つのニューロンとして機能させ、並列処理させる場合、更新を許容するニューロンをランダムに１つ選択することが考えられる。しかし、選択されたニューロンの状態が遷移するとは限らず、状態が遷移しないニューロンが多く選択される場合も考えられ、並列処理を行っても計算速度をあまり向上できないという問題があった。
【０００８】
１つの側面では、本発明は、計算速度を向上できる情報処理装置、イジング装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの実施態様では、複数のニューロンのうち第１のニューロンと結合する複数の第２のニューロンの状態を示す複数の第１の状態値のそれぞれに、前記第１のニューロンと前記複数の第２のニューロンとの結合の強さをそれぞれ示す複数の重み値のうち、対応する第１のニューロンと第２のニューロンとの間の結合の強さを示す重み値を掛けた値の総和に基づいて算出される第１のエネルギー値を、前記複数の第２のニューロンのうち状態が更新された更新ニューロンの第１の識別情報と、更新された前記更新ニューロンの状態を示す第２の状態値とに基づいて更新した第２のエネルギー値を算出する算出回路と、前記第２のエネルギー値、または、前記第１のニューロンの状態の変化時におけるニューラルネットワークのエネルギー関数の変化分と、第１のノイズ値とに基づき、前記第１のニューロンの状態を示す第３の状態値の変化が可能か否かを判定した判定結果を示す判定信号を出力する状態遷移判定回路と、をそれぞれが有し、互いに異なる第１のニューロンについての判定信号をそれぞれ出力する複数のイジング装置と、前記複数のイジング装置のそれぞれが出力する判定信号に基づき、前記複数のニューロンのうち前記第３の状態値の変化が可能と判定された第１のニューロンを選択し、選択した前記第１のニューロンの第２の識別情報を前記第１の識別情報として出力する更新ニューロン選択回路と、を有する情報処理装置が提供される。
【００１０】
また、１つの実施態様では、イジング装置が提供される。また、１つの実施態様では、情報処理装置の制御方法が提供される。
【発明の効果】
【００１１】
１つの側面では、計算速度を向上できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の情報処理装置の一例を示す図である。
【図２】情報処理装置の動作の一例を示すフローチャートである。
【図３】シミュレーテッド・アニーリングの様子を示す図である。
【図４】第２の実施の形態の情報処理装置の一例を示す図である。
【図５】更新ニューロン選択回路の一例を示す図である。
【図６】選択回路部の一例を示す図である。
【図７】選択回路の一例を示す図である。
【図８】生成されるｉｎｄｅｘの一例を示す図である。
【図９】選択回路部の他の例を示す図である。
【図１０】第２の実施の形態の情報処理装置の一例を示す図である。
【図１１】第３の実施の形態における更新ニューロン選択回路の一例を示す図である。
【図１２】ニューロン状態更新回路の一例を示す図である。
【図１３】ノイズ発生回路の一例を示す図である。
【図１４】第４の実施の形態の情報処理装置の一例を示す図である。
【図１５】状態遷移判定回路の一例を示す図である。
【図１６】更新検出／インデックス選択回路の一例を示す図である。
【図１７】選択回路の一例を示す図である。
【図１８】ＦＰＧＡの一例を示す図である。
【図１９】巡回セールスマン問題の計算の収束に要するサイクル数とイジング装置の並列数との関係を示すシミュレーション結果の一例である。
【発明を実施するための形態】
【００１３】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の情報処理装置の一例を示す図である。
【００１４】
情報処理装置１０は、複数のイジング装置１１ａ１，…，１１ａｉ，…，１１ａｎ、更新ニューロン選択回路１２、ノイズ発生回路１３を有している。
イジング装置１１ａ１〜１１ａｎは、それぞれが互いに異なるニューロンとして機能し、それぞれが互いに異なるニューロンについての状態を示す状態値（０または１）と、状態値の変化が可能か否か（状態遷移の可否）を示す判定信号とを出力する。イジング装置１１ａ１〜１１ａｎのそれぞれは、１つの半導体集積回路（チップ）で実現されてもよいし、情報処理装置１０自体を１チップで実現することもできる。
【００１５】
イジング装置１１ａ１〜１１ａｎは、ニューラルネットワークのイジング型のエネルギー関数の演算を、たとえば、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づく小規模なハードウェアで行うものである。なお、イジング型のエネルギー関数Ｅ（ｘ）（以下全エネルギーと呼ぶ場合もある）は、たとえば、以下の式（１）で定義される。
【００１６】
【数１】
2018041351.tif 000003
【００１７】
右辺の１項目は、全ニューロンから選択可能な２つのニューロンの全組み合わせについて、漏れと重複なく、２つのニューロンの状態値と重み値との積を積算したものである。状態値ｘiは、識別情報（以下ｉｎｄｅｘと表記する）がｉのニューロンの状態値を示している。Ｗijは、ｉｎｄｅｘ＝ｉのニューロンとｉｎｄｅｘ＝ｊのニューロンとの結合の強さを示す重み値である。なお、Ｗij＝Ｗji、Ｗii＝０である。
【００１８】
右辺の２項目は、全ニューロンのそれぞれのバイアス値と状態値との積を積算したものである。ｂiは、ｉｎｄｅｘ＝ｉのニューロンのバイアス値を示している。
上記のようなエネルギー関数Ｅ（ｘ）をハードウェアで表現するため、図１に示したイジング装置１１ａ１〜１１ａｎのそれぞれは、局所場（以下ローカルフィールド値という）を演算する。たとえば、ｉｎｄｅｘ＝ｉのニューロンのローカルフィールド値ｈiは以下の式（２）で表される。
【００１９】
【数２】
2018041351.tif 000004
【００２０】
右辺の１項目は、ｉｎｄｅｘ＝ｉのニューロンに対して結合する全ニューロンの複数の状態値のそれぞれに、その結合の強さを示す重み値を掛けた値の総和（積算値）である。
全ニューロンのうち、一度に状態値が更新されるニューロンの数を１つとすると、状態値が更新されるニューロンの結合先では、元のローカルフィールド値に対して、その更新による変化分を加算または減算すればよい。
【００２１】
たとえば、ｉｎｄｅｘ＝ｉのニューロンと結合するｉｎｄｅｘ＝ｊのニューロンの状態値ｘj（０または１）が、１−ｘjに変化したとき、ｉｎｄｅｘ＝ｉのニューロンのローカルフィールド値の変化分Δｈiは、以下の式（３）で表される。
【００２２】
【数３】
2018041351.tif 000005
【００２３】
式（３）において、１−２ｘjは、状態値ｘjが、０から１に変化したときには、＋１となり、状態値ｘjが、１から０に変化したときには、−１となる。
また、ｉｎｄｅｘ＝ｉのニューロンの状態値ｘiの変化時のエネルギー関数（全エネルギー）の変化分ΔＥiは以下の式（４）で表される。
【００２４】
【数４】
2018041351.tif 000006
【００２５】
式（４）において、δｘiは、状態値ｘiが、０から１に変化したときには、＋１となり、状態値ｘiが、１から０に変化したときには、−１となる変数である。そのため、ローカルフィールド値ｈiが、０より小さければ、状態値ｘiを０から１へ更新することで、全エネルギーが減少し、ローカルフィールド値ｈiが、０より大きければ、状態値ｘiを１から０へ更新することで、全エネルギーが減少する。
【００２６】
情報処理装置１０は、エネルギー値が最小となる状態値ｘ1〜ｘnの組み合わせを、解として出力するものであるが、エネルギー値が最小ではない局所解にトラップされることを防止するために、ノイズ値を用いる。すなわち、情報処理装置１０は、ローカルフィールド値ｈ1〜ｈnにノイズ値を加算した値が０か１かに応じて、状態値ｘ1〜ｘnを更新する。
【００２７】
このような情報処理装置１０は、たとえば、以下に示すようなハードウェアで実現できる。
図１に示すようにイジング装置１１ａ１は、エネルギー値算出回路２０ａ１、状態遷移判定回路２０ｂ１を有している。
【００２８】
エネルギー値算出回路２０ａ１は、ｉｎｄｅｘ＝１のニューロンと結合する複数のニューロンの状態値のそれぞれに、その結合の強さを示す重み値を掛けた値の総和に基づき第１のエネルギー値を算出する。また、エネルギー値算出回路２０ａ１は、複数のニューロンのうち状態が更新されたニューロン（以下更新ニューロンという）のｉｎｄｅｘと、更新ニューロンの更新後の状態を示す状態値とに基づき第１のエネルギー値を更新して第２のエネルギー値を算出する。第１のエネルギー値及び第２のエネルギー値は、前述のローカルフィールド値に相当する。
【００２９】
エネルギー値算出回路２０ａ１は、レジスタ２１ａ１、選択回路２２ａ１，２３ａ１、乗算回路２４ａ１、加算回路２５ａ１、レジスタ２６ａ１を有している。
レジスタ２１ａ１は、ｎ個の重み値Ｗ11，Ｗ12，…，Ｗ1nを格納する。
【００３０】
重み値Ｗ11，Ｗ12，…，Ｗ1nは、ｉｎｄｅｘ＝１のニューロンと、他のニューロン（ｉｎｄｅｘ＝２〜ｎのニューロン）との結合の強さを示す。たとえば、ｉｎｄｅｘ＝１のニューロンとｉｎｄｅｘ＝２のニューロンとの結合がなければ、重み値Ｗ12は０、結合があれば重み値Ｗ12は１、などとなる。
【００３１】
なお、上記のような重み値は、情報処理装置１０内の図示しない制御装置または、情報処理装置１０の外部の装置により、計算対象の問題に応じて予め計算され、レジスタ２１ａ１に格納される。なお、上記のような重み値は、ＲＡＭ（Random Access Memory）などのメモリに格納されてもよい。
【００３２】
選択回路２２ａ１は、更新ニューロン選択回路１２が出力するｉｎｄｅｘに基づき、レジスタ２１ａ１に格納されている重み値Ｗ11〜Ｗ1nのうち１つを選択して出力する。
たとえば、ｉｎｄｅｘ＝ｎが選択回路２２ａ１に入力されたとき、選択回路２２ａ１は、重み値Ｗ1nを選択する。
【００３３】
選択回路２３ａ１は、式（３）の１−２ｘjの演算を実現するものであり、更新ニューロン選択回路１２が選択したニューロン（状態の更新が許容されたニューロン）の更新後の状態値に基づき、１または−１を選択して出力する。更新後の状態値が０のときには、選択回路２３ａ１は、−１を選択して出力し、更新後の値が１のときには、選択回路２３ａ１は、１を選択して出力する。
【００３４】
乗算回路２４ａ１は、選択回路２２ａ１が出力する重み値と、選択回路２３ａ１が出力する値との積を出力する。
加算回路２５ａ１は、乗算回路２４ａ１が出力する値と、レジスタ２６ａ１に格納されている値とを加算して出力する。
【００３５】
レジスタ２６ａ１は、図示しないクロック信号に同期して、加算回路２５ａ１が出力する値を取り込む。レジスタ２６ａ１は、たとえば、フリップフロップである。なお、レジスタ２６ａ１に格納される値の初期値は後述するバイアス値である。
【００３６】
なお、レジスタ２６ａ１に取り込まれた値が、前述したローカルフィールド値であり、図１では、ｈ1と表記されている。
状態遷移判定回路２０ｂ１は、ローカルフィールド値ｈ1とノイズ発生回路１３から供給されるノイズ値とに基づき、自ニューロンの状態値ｘ1を算出するとともに、自ニューロンの状態値ｘ1の変化が可能か否かを判定し、判定結果を示す判定信号を出力する。
【００３７】
状態遷移判定回路２０ｂ１は、加算回路２１ｂ１、比較回路２２ｂ１、ＸＯＲ（Exclusive-OR：排他的論理和）回路２３ｂ１、レジスタ２４ｂ１，２５ｂ１を有している。
加算回路２１ｂ１は、レジスタ２６ａ１が出力するローカルフィールド値ｈ1に、ノイズ発生回路１３が出力するノイズ値を加算して出力する。
【００３８】
比較回路２２ｂ１は、加算回路２１ｂ１が出力する値が、閾値（たとえば、０）以上のときには０を出力し、閾値より小さいときには１を出力する。
ＸＯＲ回路２３ｂ１は、比較回路２２ｂ１が出力する値と、レジスタ２４ｂ１に格納されている値とに基づき判定信号を出力する。たとえば、ＸＯＲ回路２３ｂ１は、比較回路２２ｂ１が出力する値と、レジスタ２４ｂ１に格納されている値が一致しているときは判定信号として状態値が変化しない旨を示す０を出力し、異なるときは判定信号として状態値の変化が可能である旨を示す１を出力する。
【００３９】
レジスタ２４ｂ１は、更新ニューロン選択回路１２が出力するパルス信号の論理レベルが、たとえば、Ｈ（High）レベルになると、比較回路２２ｂ１が出力する値を取り込む。これにより、イジング装置１１ａ１が出力するｉｎｄｅｘ＝１のニューロンの状態値ｘ1が更新される。
【００４０】
レジスタ２５ｂ１は、イジング装置１１ａ１が出力するｉｎｄｅｘ＝１を保持している。なお、ｉｎｄｅｘは更新ニューロン選択回路１２が生成するようにしてもよい。
イジング装置１１ａ１〜１１ａｎのうち、イジング装置１１ａ１以外についてもイジング装置１１ａ１と同様の回路構成となっている。
【００４１】
すなわち、イジング装置１１ａｉも、エネルギー値算出回路２０ａｉ、状態遷移判定回路２０ｂｉを有している。エネルギー値算出回路２０ａｉは、エネルギー値算出回路２０ａ１と同様に、レジスタ２１ａｉ、選択回路２２ａｉ，２３ａｉ、乗算回路２４ａｉ、加算回路２５ａｉ、レジスタ２６ａｉを有しており、ローカルフィールド値ｈiを算出する。状態遷移判定回路２０ｂｉは、状態遷移判定回路２０ｂ１と同様に、加算回路２１ｂｉ、比較回路２２ｂｉ、ＸＯＲ回路２３ｂｉ、レジスタ２４ｂｉ，２５ｂｉを有している。そして、状態遷移判定回路２０ｂｉは、ｉｎｄｅｘ＝ｉのニューロンの状態値ｘiを算出するとともに、状態値ｘiの変化の可否を示す判定信号を出力する。
【００４２】
また、イジング装置１１ａｎも、エネルギー値算出回路２０ａｎ、状態遷移判定回路２０ｂｎを有している。エネルギー値算出回路２０ａｎは、エネルギー値算出回路２０ａ１と同様に、レジスタ２１ａｎ、選択回路２２ａｎ，２３ａｎ、乗算回路２４ａｎ、加算回路２５ａｎ、レジスタ２６ａｎを有しており、ローカルフィールド値ｈnを算出する。状態遷移判定回路２０ｂｎは、状態遷移判定回路２０ｂ１と同様に、加算回路２１ｂｎ、比較回路２２ｂｎ、ＸＯＲ回路２３ｂｎ、レジスタ２４ｂｎ，２５ｂｎを有している。そして、状態遷移判定回路２０ｂｎは、ｉｎｄｅｘ＝ｎのニューロンの状態値ｘnを算出するとともに、状態値ｘnの変化の可否を示す判定信号を出力する。
【００４３】
更新ニューロン選択回路１２は、レジスタ２４ｂ１〜２４ｂｎが出力する状態値ｘ1〜ｘnと、レジスタ２５ｂ１〜２５ｂｎに格納されているｉｎｄｅｘ＝１〜ｎを受ける。そして、更新ニューロン選択回路１２は、イジング装置１１ａ１〜１１ａｎのそれぞれの状態遷移判定回路２０ｂ１〜２０ｂｎが出力する判定信号に基づき、状態値が変化できると判定されたニューロンがある場合には、そのニューロンを１つ選択する。さらに更新ニューロン選択回路１２は、選択したニューロンのｉｎｄｅｘと更新後の状態値を、エネルギー値算出回路２０ａ１〜２０ａｎに供給するｉｎｄｅｘと、状態値として出力する。
【００４４】
たとえば、更新ニューロン選択回路１２は、イジング装置１１ａ１，１１ａｎから、状態値ｘ1，ｘnの変化が可能である旨を示す判定信号を受け、それ以外のイジング装置からは、状態値が変化しない旨を示す判定信号を受けたとする。このとき、更新ニューロン選択回路１２は、状態値ｘ1，ｘnの変化が可能なｉｎｄｅｘ＝１，ｎのニューロンのうち、１つを、たとえば、乱数値に基づきランダムに選択して、そのｉｎｄｅｘと状態値とを出力する。
【００４５】
図１では、ｉｎｄｅｘ＝ｎと、状態値ｘnが更新ニューロン選択回路１２から出力された例が示されている。このとき、更新ニューロン選択回路１２は、イジング装置１１ａｎのレジスタ２４ｂｎに供給するパルス信号の論理レベルをＨレベルにして、状態値ｘnを取り込ませる。これによって、状態値ｘ1〜ｘnのうち、状態値ｘnが更新されることになる。
【００４６】
ノイズ発生回路１３は、シミュレーテッド・アニーリングを行うために、ノイズ値を生成する。ノイズ発生回路１３として、たとえば、ＬＦＳＲ（Linear Feedback Shift Registers）などを用いることができる。ノイズ値の例については後述する。
【００４７】
（第１の実施の形態の情報処理装置の動作例）
以下、第１の実施の形態の情報処理装置１０の動作の一例を、フローチャートを用いて説明する。
【００４８】
図２は、情報処理装置の動作の一例を示すフローチャートである。
まず、たとえば、図示しない制御装置によって、レジスタ２１ａ１〜２１ａｎに、計算対象の問題に応じた重み値が設定され（ステップＳ１）、イジング装置１１ａ１〜１１ａｎの初期化が行われる（ステップＳ２）。ステップＳ２の処理では、たとえば、レジスタ２６ａ１〜２６ａｎへのバイアス値の設定や、レジスタ２４ｂ１〜２４ｂｎの値のリセット（初期値設定）が行われる。
【００４９】
その後、制御装置の制御によりシミュレーテッド・アニーリングが実行される（ステップＳ３）。
シミュレーテッド・アニーリングの際、ノイズ発生回路１３は、制御装置の制御のもと、ノイズ幅を徐々に小さくする。
【００５０】
ノイズ発生回路１３は、たとえば、比較回路２２ｂ１〜２２ｂｎの出力値（状態値ｘ1〜ｘn）が１となる確率が、シグモイド関数に従うようにノイズ値を発生する。たとえば、ノイズ発生回路１３は、ｉｎｄｅｘ＝ｉのニューロンの状態ｘiが１となる確率値Ｐi（ｈi）が、以下の式（５）の関係になるように、ノイズ値を発生する。
【００５１】
【数５】
2018041351.tif 000007
【００５２】
式（５）において、Ｔは、実効温度である。
式（５）に示すような確率値Ｐi（ｈi）を得るために、加算するノイズ値ｎｓの確率密度関数ｐ（ｎｓ）は、以下の式（６）のようになる。
【００５３】
【数６】
2018041351.tif 000008
【００５４】
図３は、シミュレーテッド・アニーリングの様子を示す図である。
縦軸はエネルギーＥであり、横軸は全ニューロンの出力値の組み合わせｑkを示している。組み合わせｑkは、“０００…０”から“１１１…１”まである。図９では、ノイズ幅がＷ１、Ｗ２、Ｗ３と小さくなっていくときの、解の収束の様子が示されている。ノイズ幅を小さくしていくことは、式（６）の実効温度Ｔを小さくしていくことに相当する。
【００５５】
ノイズ幅がＷ１のとき、解が、局所解（エネルギーが局所的な極小値となる解）ｑk1，ｑk2，ｑk4，ｑk5となっても、エネルギーが高くなる方向に変化でき、局所解から脱出できる。ノイズ幅が、Ｗ２、Ｗ３と徐々に小さくなるにつれて、解の変化は制限されていき、最終的に、最適解（エネルギーが最小値となる解）ｑk3に収束する。
【００５６】
シミュレーテッド・アニーリングの際に、イジング装置１１ａ１〜１１ａｎの状態遷移判定回路２０ｂ１〜２０ｂｎは、状態値が変化可能なニューロンがあるか否かを判定する（ステップＳ４）。状態値が変化可能なニューロンがない場合には、ステップＳ６の処理が行われる。
【００５７】
状態値が変化可能なニューロンがある場合、更新ニューロン選択回路１２は、状態値が変化可能なニューロンを１つ選択し、その状態値の更新を許容する（ステップＳ５）。ステップＳ５の処理では、たとえば、状態値が変化可能なニューロンが複数ある場合、更新ニューロン選択回路１２は、その１つをランダムに選択する。そして、更新ニューロン選択回路１２は、選択したニューロンの状態値を出力するイジング装置のレジスタ（レジスタ２４ｂ１〜２４ｂｎの何れか）が取り込めるように、そのレジスタに供給するパルス信号の論理レベルをＨレベルとする。そして、更新ニューロン選択回路１２は、選択したニューロンのｉｎｄｅｘとレジスタが取り込んだ更新後（変化後）の状態値を出力する。ステップＳ５の処理の後、再びステップＳ３の処理が行われる。
【００５８】
状態値が変化可能なニューロンがない場合、制御装置は、ｎ個のニューロンの状態が収束したか否かを判定する（ステップＳ６）。制御装置は、たとえば、ｎ個のニューロンの状態値が一定期間変化しないときには、収束したと判定し、全ニューロンの状態値（状態値の組み合わせ）を解として出力させて（ステップＳ７）、処理を終了する。たとえば、ｎ個のニューロンの状態値が一定期間内に変化したときには、ステップＳ３からの処理が繰り返される。
【００５９】
情報処理装置１０は、全ニューロンの状態を、情報処理装置１０の外部に出力してもよいし、情報処理装置１０内の図示しないメモリに記憶してもよい。
以上のような情報処理装置１０によれば、更新ニューロン選択回路１２が、状態値の更新を許容するニューロンを選択する際、ノイズ値と各ニューロンのローカルフィールド値とに基づき状態値が変化できるニューロンを検出し、その１つを選択する。これにより、状態遷移が生じる確率が増し、計算速度が向上する。また、状態値が変化できるニューロンが複数ある場合には、その１つが選択され状態値の更新が許容されるため、収束性が悪化することを抑制できる。
【００６０】
また、あるニューロンの状態値が更新されたとき、ｎ個のニューロンのどの状態値が変化可能かを、イジング装置１１ａ１〜１１ａｎによって、並列同時に調べることができる。つまり、現在の状態から遷移する可能性のある複数の近傍状態について、並列同時に調べることができる。このため、イジング装置１１ａ１〜１１ａｎの数（並列数）に応じた高速処理が可能となる。
【００６１】
（第２の実施の形態）
図４は、第２の実施の形態の情報処理装置の一例を示す図である。図４において、図１に示した第１の実施の形態の情報処理装置１０と同一の要素については同一符号が付されている。
【００６２】
第２の実施の形態の情報処理装置１０ａのイジング装置１１ｂ１，…，１１ｂｉ，…，１１ｂｎにおいて、状態遷移判定回路２０ｃ１，…，２０ｃｉ，…，２０ｃｎは、第１の実施の形態における状態遷移判定回路２０ｂ１〜２０ｂｎと異なっている。状態遷移判定回路２０ｃ１〜２０ｃｎは、第１の実施の形態における状態遷移判定回路２０ｂ１〜２０ｂｎに含まれていたレジスタ２５ｂ１〜２５ｂｎがない。
【００６３】
その代わり、第２の実施の形態の情報処理装置１０ａでは、更新ニューロン選択回路１２ａが、ｉｎｄｅｘを生成する。以下、ｎ＝１０２４であるときの更新ニューロン選択回路１２ａの回路例を説明する。
【００６４】
図５は、更新ニューロン選択回路の一例を示す図である。
更新ニューロン選択回路１２ａは、ノイズ発生回路３０、選択回路部３１ａ１，３１ａ２，…，３１ａ３２，３２、パルス信号生成回路３３、選択回路３４を有している。
【００６５】
ノイズ発生回路３０は、ノイズ値として、５ビットの乱数値ｒｄ１，ｒｄ２を生成し出力する。なお、乱数値ｒｄ１，ｒｄ２のシード（初期値）は異なる。ノイズ発生回路３０として、たとえば、ＬＦＳＲなどを用いることができる。
【００６６】
選択回路部３１ａ１〜３１ａ３２のそれぞれには、イジング装置１１ｂ１〜１１ｂｎ（ｎ＝１０２４）が出力する１０２４の判定信号が３２ずつ入力される。そして、選択回路部３１ａ１〜３１ａ３２は、５ビットの乱数値ｒｄ１に基づき、３２の判定信号のうち１つを選択して出力する。さらに、選択回路部３１ａ１〜３１ａ３２は、選択した判定信号が３２個のイジング装置のうち、何れから出力されたかを示す５ビットのｉｎｄｅｘを生成して出力する。
【００６７】
選択回路部３２には、選択回路部３１ａ１〜３１ａ３２のそれぞれが出力する判定信号と５ビットのｉｎｄｅｘとが入力される。そして、選択回路部３２は、判定信号とｉｎｄｅｘと５ビットの乱数値ｒｄ２に基づき、３２の判定信号のうちの１つの判定信号を選択して出力するとともに、１０ビットのｉｎｄｅｘを生成して出力する。
【００６８】
パルス信号生成回路３３は、１０ビットのｉｎｄｅｘに基づき、イジング装置１１ｂ１〜１１ｂｎの状態遷移判定回路２０ｃ１〜２０ｃｎに含まれるレジスタ２４ｂ１〜２４ｂｎの１つに供給するパルス信号の論理レベルをＨレベルにする。
【００６９】
選択回路３４は、パルス信号生成回路３３が出力するパルス信号に基づき、レジスタ２４ｂ１〜２４ｂｎのうちＨレベルのパルス信号が供給されたレジスタが出力する状態値を選択して出力する。
【００７０】
図６は、選択回路部の一例を示す図である。
図６では、選択回路部３１ａ１の例が示されている。選択回路部３１ａ２〜３１ａ３２も選択回路部３１ａ１と同様の回路で実現できる。
【００７１】
選択回路部３１ａ１は、選択回路４０ａ，４０ｂ，４０ｃ，４０ｄ，４０ｅを有している。さらに、選択回路部３１ａ１は、選択回路４１ａ１，４１ａ２，４１ａ３，４１ａ４，４１ａ５，４１ａ６，…，４１ａ１６，４１ｂ１，４１ｂ２，４１ｂ３，…，４１ｂ８，４１ｃ１，４１ｃ２，…，４１ｃ４，４１ｄ１，４１ｄ２，４１ｅを有している。選択回路４１ａ１〜４１ａ１６，４１ｂ１〜４１ｂ８，４１ｃ１〜４１ｃ４，４１ｄ１，４１ｄ２，４１ｅは、５段にわたってツリー状に接続されている。
【００７２】
選択回路４０ａは、５ビットの乱数値ｒｄ１の１ビット目の値に基づいて、０または１を１段目の選択回路４１ａ１〜４１ａ１６に供給する。
選択回路４０ｂは、５ビットの乱数値ｒｄ１の２ビット目の値に基づいて、０または１を２段目の選択回路４１ｂ１〜４１ｂ８に供給する。
【００７３】
選択回路４０ｃは、５ビットの乱数値ｒｄ１の３ビット目の値に基づいて、０または１を３段目の選択回路４１ｃ１〜４１ｃ４に供給する。
選択回路４０ｄは、５ビットの乱数値ｒｄ１の４ビット目の値に基づいて、０または１を４段目の選択回路４１ｄ１，４１ｄ２に供給する。
【００７４】
選択回路４０ｅは、５ビットの乱数値ｒｄ１の５ビット目の値に基づいて、０または１を５段目の選択回路４１ｅに供給する。
１段目の選択回路４１ａ１〜４１ａ１６のそれぞれは、イジング装置１１ｂ１〜１１ｂｎが出力する１０２４の判定信号のうち３２の判定信号を２つずつ入力する。そして、選択回路４１ａ１〜４１ａ１６のそれぞれは、その判定信号の値と、選択回路４０ａが出力する０または１の値に基づいて、２つの判定信号の何れかを選択して出力するとともに、何れの判定信号を選択したかを示す１ビットのｉｎｄｅｘを生成して出力する。
【００７５】
２段目の選択回路４１ｂ１〜４１ｂ８のそれぞれは、選択回路４１ａ１〜４１ａ１６が出力する１６の判定信号とｉｎｄｅｘを２つずつ入力する。そして、選択回路４１ｂ１〜４１ｂ８のそれぞれは、その判定信号の値と、選択回路４０ｂが出力する０または１の値に基づいて、２つの判定信号の何れかを選択して出力するとともに、何れの判定信号を選択したかを示す２ビットのｉｎｄｅｘを生成して出力する。
【００７６】
３段目の選択回路４１ｃ１〜４１ｃ４のそれぞれは、選択回路４１ｂ１〜４１ｂ８が出力する８つの判定信号とｉｎｄｅｘを２つずつ入力する。そして、選択回路４１ｃ１〜４１ｃ４のそれぞれは、その判定信号の値と、選択回路４０ｃが出力する０または１の値に基づいて、２つの判定信号の何れかを選択して出力するとともに、何れの判定信号を選択したかを示す３ビットのｉｎｄｅｘを生成して出力する。
【００７７】
４段目の選択回路４１ｄ１，４１ｄ２のそれぞれは、選択回路４１ｃ１〜４１ｃ４が出力する４つの判定信号とｉｎｄｅｘを２つずつ入力する。そして、選択回路４１ｄ１，４１ｄ２のそれぞれは、その判定信号の値と、選択回路４０ｄが出力する０または１の値に基づいて、２つの判定信号の何れかを選択して出力するとともに、何れの判定信号を選択したかを示す４ビットのｉｎｄｅｘを生成して出力する。
【００７８】
５段目の選択回路４１ｅは、選択回路４１ｄ１，４１ｄ２が出力する２つの判定信号とｉｎｄｅｘを入力する。そして、選択回路４１ｅは、その判定信号の値と、選択回路４０ｅが出力する０または１の値に基づいて、２つの判定信号の何れかを選択して出力するとともに、何れの判定信号を選択したかを示す５ビットのｉｎｄｅｘを生成して出力する。
【００７９】
図５に示した選択回路部３２も、選択回路部３１ａ１とほぼ同様の回路構成で実現できる。ただ、１段目の選択回路４１ａ１〜４１ａ１６のそれぞれに、選択回路部３１ａ１〜３１ａ３２が出力する３２の判定信号が２つずつ入力されるとともに、選択回路部３１ａ１〜３１ａ３２が出力する３２のｉｎｄｅｘ（５ビット）が２つずつ入力される。そして、各段で判定信号が選択されるとともに、ｉｎｄｅｘのビットが追加され、１０ビットのｉｎｄｅｘと最終的に選択された判定信号が出力される。なお、図５に示した更新ニューロン選択回路１２ａの例では、選択回路部３２の判定信号は用いられないので、選択回路部３２は、この判定信号を出力しなくてもよい。
【００８０】
図７は、選択回路の一例を示す図である。
図７では、図６の選択回路４１ｂ１の例が示されている。選択回路４１ｂ２〜４１ｂ８，４１ｃ１〜４１ｃ４，４１ｄ１，４１ｄ２，４１ｅも同様の回路構成で実現できる。
【００８１】
選択回路４１ｂ１は、ＸＯＲ回路５０、ＯＲ回路５１、選択回路５２，５３を有している。
ＸＯＲ回路５０は、前段の選択回路４１ａ１，４１ａ２が出力する判定信号を入力する。図７では、選択回路４１ａ１が出力する判定信号をｆｇ１、選択回路４１ａ２が出力する判定信号をｆｇ２と表記している。ＸＯＲ回路５０は、ｆｇ１，ｆｇ２の値が一致していれば０、異なっていれば１を出力する。
【００８２】
ＯＲ回路５１は、ｆｇ１，ｆｇ２を入力し、ｆｇ１，ｆｇ２の何れか一方または両方が１ならば、判定信号（ｆｇ３と表記している）として１を出力し、ｆｇ１，ｆｇ２の両方が０ならば、ｆｇ３として０を出力する。つまり、ｆｇ３は、ｆｇ１，ｆｇ２のうち、１となる方と等しい。
【００８３】
選択回路５２は、ｆｇ１と、選択回路４０ｂが出力する０または１の値を入力する。そして、選択回路５２は、ＯＲ回路５０の出力が１のときは、ｆｇ１の値を選択して出力し、ＯＲ回路の出力が０のときは、選択回路４０ｂが出力する値を選択して出力する。
【００８４】
選択回路５３は、前段の選択回路４１ａ１，４１ａ２が出力するｉｎｄｅｘを入力する。図７では、選択回路４１ａ１が出力するｉｎｄｅｘをｉｄ１、選択回路４１ａ２が出力するｉｎｄｅｘをｉｄ２と表記している。選択回路５３は、選択回路５２の出力が１のときは、ｉｄ１の値を選択して出力し、選択回路５２の出力が０のときは、ｉｄ２の値を選択して出力する。
【００８５】
選択回路５３が出力するｉｄ１またはｉｄ２の値に、選択回路５２の１ビットの出力を追加したもの（上位ビットに追加したもの）が、選択回路４１ｂ１が出力するｉｎｄｅｘ（図７ではｉｄ３と表記している）である。
【００８６】
図６に示した１段目の選択回路４１ａ１〜４１ａ１６も、図７に示した回路構成とほぼ同様の回路構成で実現できるが、選択回路５３はない。
図８は、生成されるｉｎｄｅｘの一例を示す図である。
【００８７】
選択回路４０ｂの出力が１のとき、図７に示した選択回路４１ｂ１において、入力される２つの判定信号（ｆｇ１，ｆｇ２）の値が同じ場合には、ｉｄ３は、ｉｄ１の上位ビットに新たなビット＝１が追加された値となる。また、選択回路４０ｂの出力が１で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が１であるときも、ｉｄ３は、ｉｄ１の上位ビットに新たなビット＝１が追加された値となる。また、選択回路４０ｂの出力が１で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が０であるとき、ｉｄ３は、ｉｄ２の上位ビットに新たなビット＝０が追加された値となる。
【００８８】
選択回路４０ｂの出力が０のとき、ｆｇ１，ｆｇ２の値が同じ場合には、ｉｄ３は、ｉｄ２の上位ビットに新たなビット＝０が追加された値となる。また、選択回路４０ｂの出力が０で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が１であるとき、ｉｄ３は、ｉｄ１の上位ビットに新たなビット＝１が追加された値となる。また、選択回路４０ｂの出力が０で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が０であるとき、ｉｄ３は、ｉｄ２の上位ビットに新たなビット＝０が追加された値となる。
【００８９】
また、ｆｇ１，ｆｇ２の一方もしくは両方が１のとき、ｆｇ３は１となり、ｆｇ１，ｆｇ２の両方が０のとき、ｆｇ３は０となる。
図９は、選択回路部の他の例を示す図である。
【００９０】
図６に示した選択回路部３１ａ１の代わりに、図９に示すような選択回路部３１ｂ１を用いることもできる。
選択回路部３１ｂ１の選択回路４０ｆ，４０ｇ，４０ｈ，４０ｉ，４０ｊは、選択回路部３１ａ１の選択回路４０ａ〜４０ｅと異なっている。
【００９１】
選択回路４０ｆは、１６ビットの乱数値ｒｄ１に基づいて、各ビットが０または１の１６ビットの値を、１段目の選択回路４１ａ１〜４１ａ１６に供給する。たとえば、１６ビットの値のうち、最下位ビットの値が、選択回路４１ａ１に供給され、最上位ビットの値が、選択回路４１ａ１６に供給される。
【００９２】
選択回路４０ｇは、１６ビットの乱数値ｒｄ１のうち８ビットの値に基づいて、各ビットが０または１の８ビットの値を、２段目の選択回路４１ｂ１〜４１ｂ８に供給する。たとえば、８ビットの値のうち、最下位ビットの値が、選択回路４１ｂ１に供給され、最上位ビットの値が、選択回路４１ｂ８に供給される。
【００９３】
選択回路４０ｈは、１６ビットの乱数値ｒｄ１のうち４ビットの値に基づいて、各ビットが０または１の４ビットの値を、３段目の選択回路４１ｃ１〜４１ｃ４に供給する。たとえば、４ビットの値のうち、最下位ビットの値が、選択回路４１ｃ１に供給され、最上位ビットの値が、選択回路４１ｃ４に供給される。
【００９４】
選択回路４０ｉは、１６ビットの乱数値ｒｄ１のうち２ビットの値に基づいて、各ビットが０または１の２ビットの値を、４段目の選択回路４１ｄ１，４１ｄ２に供給する。たとえば、２ビットの値のうち、最下位ビットの値が、選択回路４１ｄ１に供給され、最上位ビットの値が、選択回路４１ｄ２に供給される。
【００９５】
選択回路４０ｊは、１６ビットの乱数値ｒｄ１のうち１ビットの値に基づいて、０または１の１ビットの値を５段目の選択回路４１ｅに供給する。
図６に示した選択回路部３１ａ１では、同じ段の複数の選択回路には、乱数値ｒｄ１に基づく同じ値が供給されていたが、図９に示す選択回路部３１ｂ１のように、同じ段の複数の選択回路に乱数値ｒｄ１に基づく異なる値が供給されてもよい。
【００９６】
選択回路部３１ａ２〜３１ａ３２も選択回路部３１ｂ１と同様の回路で実現できる。図５に示した選択回路部３２も、選択回路部３１ｂ１とほぼ同様の回路構成で実現できる。
第２の実施の形態の情報処理装置１０ａのその他の構成については、第１の実施の形態の情報処理装置１０と同様である。そのため、第２の実施の形態の情報処理装置１０ａにおいても、第１の実施の形態の情報処理装置１０と同様の効果が得られる。
【００９７】
さらに、第２の実施の形態の情報処理装置１０ａでは、更新ニューロン選択回路１２ａがｉｎｄｅｘを生成するため、イジング装置１１ｂ１〜１１ｂｎ内にｉｎｄｅｘを保持するレジスタを設けなくてもよくなる。扱うニューロン数が多くなると（ｎが増すと）、ｉｎｄｅｘのビット数も増える。ｉｎｄｅｘを保持するレジスタを設けた場合、ｉｎｄｅｘのビット数の増加に伴い、レジスタ面積が増大し、チップ面積の増大につながる。情報処理装置１０ａでは、更新ニューロン選択回路１２ａが、イジング装置１１ｂ１〜１１ｂｎが出力する判定信号に基づいてｉｎｄｅｘを生成するため、ｉｎｄｅｘを保持しておくレジスタが不要になり、イジング装置１１ｂ１〜１１ｂｎのチップ面積を縮小できる。
【００９８】
なお、図６や図９に示した各選択回路は、２つの判定信号から１つを選択するものであるが、これに限定されず、３つ以上の判定信号から１つを選択するものであってもよいし、異なる数の判定信号から１つを選択する複数種類の選択回路が混在してもよい。
【００９９】
（第３の実施の形態）
図１０は、第３の実施の形態の情報処理装置の一例を示す図である。図１０において、図１に示した第１の実施の形態の情報処理装置１０と同一の要素については同一符号が付されている。
【０１００】
第３の実施の形態の情報処理装置１０ｂのイジング装置１１ｃ１，…，１１ｃｉ，…，１１ｃｎは、エネルギー値算出回路２０ｄ１，…，２０ｄｉ，…，２０ｄｎ、状態遷移判定回路２０ｅ１，…，２０ｅｉ，…，２０ｅｎを有している。
【０１０１】
以下イジング装置１１ｃｉのエネルギー値算出回路２０ｄｉ、状態遷移判定回路２０ｅｉを例にして説明する。
エネルギー値算出回路２０ｄｉは、前述の式（４）で示したｉｎｄｅｘ＝ｉのニューロンの状態の変化時のニューラルネットワークの全エネルギーの変化分ΔＥiを算出する。
【０１０２】
エネルギー値算出回路２０ｄｉは、図１に示したエネルギー値算出回路２０ａｉの各要素の他、乗算回路２７ｄｉと選択回路２８ｄｉを有している。
乗算回路２７ｄｉは、レジスタ２６ａｉが出力するローカルフィールド値ｈiと選択回路２８ｄｉが出力する値との積を変化分ΔＥiとして出力する。
【０１０３】
選択回路２８ｄｉは、ｉｎｄｅｘ＝ｉのニューロンの状態の変化後の状態値ｘiが０のときは、１を出力し、変化後の状態値ｘiが１のときは−１を出力する。選択回路２８ｄｉの出力は、式（４）のδｘi（＝１−２ｘi）に相当する。変化後の状態値ｘiは、たとえば、ニューロン状態更新回路１４から供給される。
【０１０４】
状態遷移判定回路２０ｅｉは、変化分ΔＥiとノイズ値とに基づき、状態値ｘiが変化できるか否かを示す判定信号を出力する。
状態遷移判定回路２０ｅｉは、加算回路２１ｅｉと比較回路２２ｅｉを有する。
【０１０５】
加算回路２１ｅｉは、乗算回路２７ｄｉが出力する変化分ΔＥiに、ノイズ発生回路１３ａが出力するノイズ値を加算して出力する。
比較回路２２ｅｉは、加算回路２１ｅｉが出力する値が、閾値（たとえば、０）以上のときには判定信号として、ニューロンの状態が変化しない旨を示す０を出力し、閾値より小さいときには判定信号として、ニューロンの状態を変化できる旨を示す１を出力する。
【０１０６】
イジング装置１１ｃ１〜１１ｃｎのうち、イジング装置１１ｃｉ以外についても同様の回路構成となっている。
すなわち、イジング装置１１ｃ１のエネルギー値算出回路２０ｄ１も、エネルギー値算出回路２０ｄｉと同様に乗算回路２７ｄ１と選択回路２８ｄ１を有しており、ｉｎｄｅｘ＝１のニューロンの状態の変化時の全エネルギーの変化分ΔＥ1を算出する。またイジング装置１１ｃ１の状態遷移判定回路２０ｅ１も、状態遷移判定回路２０ｅｉと同様に、加算回路２１ｅ１と比較回路２２ｅ１を有しており、ｉｎｄｅｘ＝１のニューロンの状態値ｘ1が変化できるか否かを示す判定信号を出力する。
【０１０７】
また、イジング装置１１ｃｎのエネルギー値算出回路２０ｄｎも、エネルギー値算出回路２０ｄｉと同様に乗算回路２７ｄｎと選択回路２８ｄｎを有しており、ｉｎｄｅｘ＝ｎのニューロンの状態の変化時の全エネルギーの変化分ΔＥnを算出する。またイジング装置１１ｃｎの状態遷移判定回路２０ｅｎも、状態遷移判定回路２０ｅｉと同様に、加算回路２１ｅｎと比較回路２２ｅｎを有しており、ｉｎｄｅｘ＝ｎのニューロンの状態値ｘnが変化できるか否かを示す判定信号を出力する。
【０１０８】
更新ニューロン選択回路１２ｂは、イジング装置１１ｃ１〜１１ｃｎのそれぞれの状態遷移判定回路２０ｅ１〜２０ｅｎが出力する判定信号に基づき、状態値の更新を許容するニューロンのｉｎｄｅｘを生成して出力する。
【０１０９】
図１１は、第３の実施の形態における更新ニューロン選択回路の一例を示す図である。図１１において、図５に示した更新ニューロン選択回路１２ａと同一の要素については同一符号が付されている。
【０１１０】
図１１に示す更新ニューロン選択回路１２ｂは、図５に示した更新ニューロン選択回路１２ａにおけるパルス信号生成回路３３と選択回路３４を有さない点以外、更新ニューロン選択回路１２ａと同じであり、１０ビットのｉｎｄｅｘを出力する。なお、選択回路部３２は判定信号を出力しているが、本実施の形態でもこの判定信号は用いられないため、選択回路部３２は、判定信号を出力しなくてもよい。
【０１１１】
図１０の情報処理装置１０ｂにおいて、ニューロン状態更新回路１４は、更新ニューロン選択回路１２ｂが出力するｉｎｄｅｘを受け、そのｉｎｄｅｘで指定されるニューロンの更新後の状態値を出力する。
【０１１２】
図１２は、ニューロン状態更新回路の一例を示す図である。
ニューロン状態更新回路１４は、パルス信号生成回路６０、回路部６１ａ１，６１ａ２，…，６１ａｎ、選択回路６２を有している。
【０１１３】
パルス信号生成回路６０は、更新ニューロン選択回路１２ｂが出力するｉｎｄｅｘを受けて、パルス信号ｐ１，ｐ２，…，ｐｎのうち、そのｉｎｄｅｘに対応したものをＨレベル（“１”）とする。
【０１１４】
回路部６１ａ１〜６１ａｎは、パルス信号生成回路６０が出力するパルス信号ｐ１〜ｐｎに基づき、ｎ個のニューロンの更新前の状態値（ｎｂｉｔ）から、１ビットを更新した状態値を生成して出力する。
【０１１５】
たとえば、回路部６１ａ１は選択回路６１ｂ１、レジスタ６１ｃ１、インバータ回路６１ｄ１を有している。
選択回路６１ｂ１は、パルス信号ｐ１が０のときは、ｉｎｄｅｘ＝１のニューロンの更新前の状態値を選択して出力し、パルス信号ｐ１が１のときはインバータ回路６１ｄ１の出力信号を選択して出力する。
【０１１６】
レジスタ６１ｃ１は、たとえば、フリップフロップであり、図示しないクロック信号に同期して選択回路６１ｂ１が出力する値を取り込み、その値を出力する。レジスタ６１ｃ１に格納される値の初期値は、たとえば、ｉｎｄｅｘ＝１のニューロンの状態値ｘ1の初期値である。
【０１１７】
インバータ回路６１ｄ１は、レジスタ６１ｃ１が出力する値を、論理レベルを反転して出力する。なお、このインバータ回路６１ｄ１の出力を、図１０のイジング装置１１ｃ１の選択回路２８ｄ１の選択信号、すなわち、変化後の状態値ｘ1として用いることができる。
【０１１８】
このような回路部６１ａ１では、パルス信号ｐ１が０のときは、更新前の状態値が選択されて出力され、パルス信号ｐ１が１のときは、更新前の状態値の論理レベルを反転した値が選択されて出力される。
【０１１９】
回路部６１ａ２〜６１ａｎも、回路部６１ａ１と同様の回路構成となっている。
すなわち、回路部６１ａ２も回路部６１ａ１と同様に、選択回路６１ｂ２、レジスタ６１ｃ２、インバータ回路６１ｄ２を有している。そして、このような回路部６１ａ２では、パルス信号ｐ２が０のときは、ｉｎｄｅｘ＝２のニューロンの更新前の状態値が選択されて出力され、パルス信号ｐ２が１のときは、更新前の状態値の論理レベルを反転した値が選択されて出力される。
【０１２０】
また、回路部６１ａｎも回路部６１ａ１と同様に、選択回路６１ｂｎ、レジスタ６１ｃｎ、インバータ回路６１ｄｎを有している。そして、このような回路部６１ａｎでは、パルス信号ｐｎが０のときは、ｉｎｄｅｘ＝ｎのニューロンの更新前の状態値が選択されて出力され、パルス信号ｐｎが１のときは、更新前の状態値の論理レベルを反転した値が選択されて出力される。
【０１２１】
選択回路６２は、更新ニューロン選択回路１２ｂが出力するｉｎｄｅｘを受けて、回路部６１ａ１〜６１ａｎがｎビットの状態値のうち、そのｉｎｄｅｘに対応した１ビットの値を更新後の状態値として出力する。
【０１２２】
（第３の実施の形態の情報処理装置の動作例）
第３の実施の形態の情報処理装置１０ｂも、たとえば、図２に示した処理の流れに従って動作する。すなわち、まず、たとえば、図示しない制御装置によって、レジスタ２１ａ１〜２１ａｎに、計算対象の問題に応じた重み値が設定され（ステップＳ１）、イジング装置１１ｃ１〜１１ｃｎの初期化が行われる（ステップＳ２）。ステップＳ２の処理では、たとえば、レジスタ２６ａ１〜２６ａｎへのバイアス値の設定や、図１２のニューロン状態更新回路１４のレジスタ６１ｃ１〜６１ｃｎへの初期値の設定などが行われる。
【０１２３】
その後、制御装置の制御によりシミュレーテッド・アニーリングが実行される（ステップＳ３）。
シミュレーテッド・アニーリングの際、ノイズ発生回路１３ａは、制御装置の制御のもと、ノイズ幅を徐々に小さくする。
【０１２４】
第３の実施の形態におけるノイズ発生回路１３ａは、比較回路２２ｅ１〜２２ｅｎの出力値が１となる確率が、たとえば、非特許文献１に記載されているようなＭｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓの遷移則に従うようにノイズ値を発生する。Ｍｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓの遷移則は、たとえば、物質の物性計算の際に用いられる。
【０１２５】
Ｍｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓの確率遷移関数は、以下の式（７）で表せる。
【０１２６】
【数７】
2018041351.tif 000009
【０１２７】
式（７）において、βは１／Ｔである。
式（７）より、比較回路２２ｅ１〜２２ｅｎの出力値が１となる確率が、Ｍｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓの遷移則に従って遷移するためのノイズ値ｎｓは、ｎｓ＝Ｆ-1（ｘ）と表せる。Ｆ-1（ｘ）は、式（７）の逆関数であり、ｘは０≦ｘ≦１の一様乱数である。
【０１２８】
上記のようなノイズ値ｎｓを出力するノイズ発生回路１３ａは、たとえば、以下のような回路構成で実現できる。
図１３は、ノイズ発生回路の一例を示す図である。
【０１２９】
ノイズ発生回路１３ａは、一様乱数発生回路１３ａ１、Ｆ-1（ｘ）出力部１３ａ２を有する。
一様乱数発生回路１３ａ１は、０≦ｘ≦１の一様乱数値ｘを発生し出力する。
【０１３０】
Ｆ-1（ｘ）出力部１３ａ２は、一様乱数値ｘを入力し、たとえば、予めメモリなどに格納しておいたｘとＦ-1（ｘ）との関係を示すテーブルのデータに基づき、Ｆ-1（ｘ）をノイズ値ｎｓとして出力する。
【０１３１】
図１３には、ノイズ値ｎｓが、イジング装置１１ｃｉの状態遷移判定回路２０ｅｉの加算回路２１ｅｉに入力される例が示されている。加算回路２１ｅｉは、エネルギー値算出回路２０ｄｉで算出された変化分ΔＥｉからノイズ値ｎｓを引いた値（変化分ΔＥｉにマイナスのノイズ値ｎｓを加えた値）を、比較回路２２ｅｉに供給する。
【０１３２】
第３の実施の形態の情報処理装置１０ｂでは、以上のようなノイズ値ｎｓを用いて図２のステップＳ３のシミュレーテッド・アニーリングが行われる。
シミュレーテッド・アニーリングの際に、状態遷移判定回路２０ｅ１〜２０ｅｎは、状態値が変化できるニューロンがあるか否かを判定する（ステップＳ４）。状態値が変化するニューロンがない場合には、ステップＳ６の処理が行われる。状態値が変化するニューロンがある場合、更新ニューロン選択回路１２ｂは、状態値が変化するニューロンを１つ選択し、その状態値の更新を許容する（ステップＳ５）。ステップＳ５の処理では、たとえば、状態値が変化するニューロンが複数ある場合、更新ニューロン選択回路１２ｂは、図１１に示したような回路で、その１つをランダムに選択し、選択したニューロンのｉｎｄｅｘを出力する。そして、ニューロン状態更新回路１４は、そのｉｎｄｅｘで指定されたニューロンの更新後の状態値を出力する。ステップＳ５の処理の後、再びステップＳ３の処理が行われる。
【０１３３】
状態値が変化するニューロンがない場合、制御装置は、ｎ個のニューロンの状態が収束したか判定する（ステップＳ６）。制御装置は、たとえば、ｎ個のニューロンの状態値が一定期間変化しないときには、収束したと判定し、全ニューロンの状態値（状態値の組み合わせ）を解として出力させて（ステップＳ７）、処理を終了する。たとえば、ｎ個のニューロンの状態値が一定期間内に変化したときには、ステップＳ３からの処理が繰り返される。情報処理装置１０ｂは、全ニューロンの状態を、情報処理装置１０ｂの外部に出力してもよいし、情報処理装置１０ｂ内の図示しないメモリに記憶してもよい。
【０１３４】
以上のような第３の実施の形態の情報処理装置１０ｂでも第１の実施の形態の情報処理装置１０と同様の効果が得られる。すなわち、更新ニューロン選択回路１２ｂが、状態値の更新を許容するニューロンを選択する際、ノイズ値と全エネルギーの変化分とに基づき状態値が変化できるニューロンを検出し、その１つを選択する。これにより、状態遷移が生じる確率が増し、計算速度が向上する。また、状態値が変化できるニューロンが複数ある場合には、その１つが選択され状態値の更新が許容されるため、収束性が悪化することを抑制できる。
【０１３５】
また、あるニューロンの状態値が更新されたとき、ｎ個のニューロンのどの状態値が更新できるかを、イジング装置１１ｃ１〜１１ｃｎによって、並列同時に調べることができる。つまり、現在の状態から遷移する可能性のある複数の近傍状態について、並列同時に調べることができる。このため、イジング装置１１ｃ１〜１１ｃｎの数（並列数）に応じた高速処理が可能となる。
【０１３６】
さらに、第３の実施の形態の情報処理装置１０ｂは、更新ニューロン選択回路１２ｂがｉｎｄｅｘを生成するため、第２の実施の形態の情報処理装置１０ａと同様にイジング装置１１ｃ１〜１１ｃｎ内にｉｎｄｅｘを保持するレジスタを設けなくてもよくなる。そのため、イジング装置１１ｃ１〜１１ｃｎのチップ面積を縮小できる。
【０１３７】
また、情報処理装置１０ｂは、全エネルギーの変化分を算出するため、式（７）に示したような全エネルギーの変化分で表される確率遷移関数を用いるＭｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓの遷移則などの、より一般的な遷移則を適用できる。このため、第３の実施の形態の情報処理装置１０ｂは、適用する遷移則を、シグモイド関数を用いた遷移則に限定することなく、様々な遷移則に柔軟に対応できる。
【０１３８】
なお、上記では、収束性を考慮して一度に状態が更新するニューロンを１つとしたが、更新ニューロン選択回路１２ｂは、複数のニューロンのｉｎｄｅｘを出力してもよい。この場合、現在の状態から遷移する可能性のある調べるべき複数の近傍状態がｎ個ではなく、Ｎ（＞ｎ）個となるため、複数のニューロンの状態が変化したときの変化分ΔＥを算出するイジング装置が追加される。
【０１３９】
（第４の実施の形態）
図１４は、第４の実施の形態の情報処理装置の一例を示す図である。図１４において、第３の実施の形態の情報処理装置１０ｂと同じ要素については同一符号が付されている。
【０１４０】
第４の実施の形態の情報処理装置１０ｃのイジング装置１１ｄ１，…，１１ｄｉ，…，１１ｄｎは、第３の実施の形態のイジング装置１１ｃ１〜１１ｃｎと同様のエネルギー値算出回路２０ｄ１〜２０ｄｎを有している。イジング装置１１ｄ１〜１１ｄｎの状態遷移判定回路２０ｆ１，…，２０ｆｉ，…，２０ｆｎは、第３の実施の形態のイジング装置１１ｃ１〜１１ｃｎの状態遷移判定回路２０ｅ１〜２０ｅｎと異なっている。
【０１４１】
状態遷移判定回路２０ｆ１〜２０ｆｎは、全エネルギーの変化分に基づき、ｉｎｄｅｘ＝１〜ｎのニューロンの状態の更新を許容する確率値を算出し、その確率値に基づき、更新できるか否かを示す判定信号を出力する。全エネルギーを低くする状態の更新ほど、更新を許容する確率値が高くなるように算出される。
【０１４２】
たとえば、状態値ｘiの更新を許容する確率値Ａiは、全エネルギーの変化分ΔＥiと、シグモイド関数を用いて以下の式（８）で表せる。
【０１４３】
【数８】
2018041351.tif 000010
【０１４４】
また、確率値Ａiをｎ個のニューロンのそれぞれの状態の更新を許容する確率値の積算で正規化した確率値Ｐiは、以下の式（９）で表せる。
【０１４５】
【数９】
2018041351.tif 000011
【０１４６】
第４の実施の形態の情報処理装置１０ｃにおいて、状態遷移判定回路２０ｆ１〜２０ｆｎと更新ニューロン選択回路１２ｃは、上記のような式（９）に基づいて、確率値Ｐiがより高くなる更新を引き起こすニューロンのｉｎｄｅｘを生成して出力する。
【０１４７】
図１５は、状態遷移判定回路の一例を示す図である。
状態遷移判定回路２０ｆ１は、確率算出部２１ｆ１、比較回路２３ｆ１、ＸＯＲ回路２４ｆ１を有している。状態遷移判定回路２０ｆ２は、確率算出部２１ｆ２、加算回路２２ｆ２、比較回路２３ｆ２、ＸＯＲ回路２４ｆ２を有している。状態遷移判定回路２０ｆ３は、確率算出部２１ｆ３、加算回路２２ｆ３、比較回路２３ｆ３、ＸＯＲ回路２４ｆ３を有している。状態遷移判定回路２０ｆｎは、確率算出部２１ｆｎ、加算回路２２ｆｎ、比較回路２３ｆｎ、ＸＯＲ回路２４ｆｎ、ノイズ発生回路２５、乗算回路２６を有している。図示を省略しているが、状態遷移判定回路２０ｆ１〜２０ｆｎのうち、状態遷移判定回路２０ｆ１〜２０ｆ３，２０ｆｎ以外も、状態遷移判定回路２０ｆ２，２０ｆ３と同様の要素を有している。
【０１４８】
確率算出部２１ｆｉ（ｉ＝１〜ｎ）は、変化分ΔＥi（ｉ＝１〜ｎ）に基づいて、式（８）で示したような確率値Ａi（ｉ＝１〜ｎ）を算出する。確率算出部２１ｆｉは、たとえば、予めメモリなどに格納しておいたΔＥi（ｉ＝１〜ｎ）と確率値Ａi（ｉ＝１〜ｎ）との関係を示すテーブルのデータに基づき、確率値Ａiを算出（または決定）する。
【０１４９】
加算回路２２ｆｉ（ｉ＝２〜ｎ）は、確率値Ａiと確率値Ａi-1との加算結果を出力する。なお、加算回路２２ｆｉは、ｉの値が１大きくなるごとに出力のビット幅が１増える。たとえば、加算回路２２ｆ２が１６ビット固定小数点演算を行う回路である場合には、加算回路２２ｆ３は１７ビット固定小数点演算を行う回路である。
【０１５０】
比較回路２３ｆｉ（ｉ＝１〜ｎ）は、確率値Ａiが乗算回路２６の出力値よりも大きいときに１を出力し、それ以外のときは０を出力する。
ＸＯＲ回路２４ｉ（１〜ｎ）は、比較回路２３ｆｉと比較回路２３ｆ（ｉ＋１）の出力信号の排他的論理和を判定信号として出力する。ただし、ＸＯＲ回路２４ｆｎは、比較回路２３ｆｎの出力信号と、０との排他的論理和を判定信号として出力する。
【０１５１】
ノイズ発生回路２５は、ノイズ値として０≦ｘ≦１の一様乱数値ｘを生成して出力する。なお、ノイズ発生回路２５は、イジング装置１１ｄｎの外にあってもよい。
乗算回路２６は、加算回路２２ｆｎが出力する確率値Ａi（ｉ＝１〜ｎ）の積算値に、一様乱数値ｘを乗じて出力する。なお、乗算回路２６として、ＩＥＥＥ７５４で規格化された単精度浮動小数点乗算回路を用いることができる。
【０１５２】
このような状態遷移判定回路２０ｆ１〜２０ｆｎでは、加算回路２２ｆｉ（ｉ＝２〜ｎ）のｉが大きくなるほど、加算回路２２ｆｉの出力値が大きくなる。そして、比較回路２３ｆ１〜２３ｆｎのうち、ある比較回路２３ｆｉよりｉが大きい比較回路２３ｆ（ｉ＋１）〜２３ｆｎの出力信号が１となる。このときＸＯＲ回路２４ｆ（ｉ−１）が出力する判定信号が１となり、それ以外の判定信号は０となる。
【０１５３】
たとえば、比較回路２３ｆ１，２３ｆ２の出力信号が０で、比較回路２３ｆ３〜２３ｆｎの出力信号が１であるとき、ＸＯＲ回路２４ｆ１，２４ｆ３〜２４ｆｎが出力する判定信号は０、ＸＯＲ回路２４ｆ２が出力する判定信号は１となる。
【０１５４】
更新ニューロン選択回路１２ｃは、状態遷移判定回路２０ｆ１〜２０ｆｎが出力する判定信号に基づき、更新するニューロンのｉｎｄｅｘを出力する。たとえば、状態遷移判定回路２０ｆ２が出力する判定信号が１のとき、更新ニューロン選択回路１２は、ｉｎｄｅｘ＝２を出力する。
【０１５５】
（第４の実施の形態の情報処理装置の動作例）
第４の実施の形態の情報処理装置１０ｃでも、図２に示したフローチャートに従って、重み値の設定や、初期化が行われる（ステップＳ１，Ｓ２）。ただし、情報処理装置１０ｃでは、ステップＳ３のシミュレーテッド・アニーリングの代わりに、図示しない制御装置の制御により、ノイズ発生回路２５が生成する一様乱数値ｘの更新が行われる。
【０１５６】
そして、ステップＳ４の処理として、状態遷移判定回路２０ｆ１〜２０ｆｎは、エネルギー値算出回路２０ｄ１〜２０ｄｎが出力する変化分ΔＥ1〜ΔＥnに基づき、状態値を更新することでエネルギーがより低くなるニューロンがあるか否かを判定する。たとえば、状態遷移判定回路２０ｆ１〜２０ｆｎが出力する判定信号が全て０であるときには、ステップＳ６の処理が行われる。ステップＳ５の処理として、状態遷移判定回路２０ｆ１〜２０ｆｎが出力する判定信号のうちの１つが１であれば、更新ニューロン選択回路１２は、その判定信号を出力したイジング装置に対応したニューロンのｉｎｄｅｘを出力する。そして、ニューロン状態更新回路１４は、そのｉｎｄｅｘで指定されたニューロンの更新後の状態値を出力する。このようにして情報処理装置１０ｃは、１つのニューロンの状態の更新を許容する。
【０１５７】
ステップＳ５の処理後、ステップＳ３からの処理が繰り返される。１となる判定信号がない場合、制御装置は、ｎ個のニューロンの状態が収束したか判定する（ステップＳ６）。制御装置は、たとえば、ｎ個のニューロンの状態値が一定期間変化しないときには、収束したと判定し、全ニューロンの状態値（状態値の組み合わせ）を解として出力させて（ステップＳ７）、処理を終了する。たとえば、ｎ個のニューロンの状態値が一定期間内に変化したときには、ステップＳ３からの処理が繰り返される。情報処理装置１０ｃは、全ニューロンの状態を、情報処理装置１０ｃの外部に出力してもよいし、情報処理装置１０ｃ内の図示しないメモリに記憶してもよい。
【０１５８】
以上のような第４の実施の形態の情報処理装置１０ｃは、ｉｎｄｅｘ＝１〜ｎのニューロンのそれぞれが変化したときの、全エネルギーの変化分に基づき、ｉｎｄｅｘ＝１〜ｎのニューロンの状態の更新を許容する確率値を算出する。その確率値は、全エネルギーを低くする状態の更新ほど、高くなるように算出される。そして、状態遷移判定回路２０ｆ１〜２０ｆｎと更新ニューロン選択回路１２ｃによって、その確率値が高いニューロンが選択される確率が高くなるため、計算の収束性が向上し、計算を高速化できる。
【０１５９】
なお、状態遷移判定回路２０ｆ１〜２０ｆｎは、イジング装置１１ｄ１〜１１ｄｎの外に設けられていてもよい。
状態遷移判定回路２０ｆ１〜２０ｆｎと更新ニューロン選択回路１２ｃとの代わりに、段階的にｉｎｄｅｘを選択していく回路（以下、更新検出／インデックス選択回路と呼ぶ）を用いることもできる。
【０１６０】
式（８）の確率値Ａi（ｉ＝１〜ｎ）に比例した確率で、段階的にｉｎｄｅｘを選択する手順は、たとえば、以下のようになる。まず、ｎ個のｉｎｄｅｘをメンバとするグループＧ０としたとき、更新検出／インデックス選択回路は、ｎ個のｉｎｄｅｘを半分に分け２つのグループとし、一様乱数値を用いて２つのグループの一方を選択する。選択されたグループをグループＧ１とすると、更新検出／インデックス選択回路は、グループＧ１に含まれるｎ／２個のｉｎｄｅｘをさらに半分に分け２つのグループとし、一様乱数値を用いて２つのグループの一方を選択する。このような処理が繰り返され、最終的に１つのｉｎｄｅｘを含むグループが得られる。たとえば、ｎ＝１０２４のとき、最終的に得られるグループＧ１０に含まれるｉｎｄｅｘ＝ｋが選ばれる確率値Ｐkは、以下の式で表せる。
【０１６１】
【数１０】
2018041351.tif 000012
【０１６２】
なお、上記のような選択処理は、小さいグループから行うことも可能である。以下では、２つのｉｎｄｅｘを含むグループごとに、一方のｉｎｄｅｘを選択していく更新検出／インデックス選択回路の例を説明する。
【０１６３】
図１６は、更新検出／インデックス選択回路の一例を示す図である。
更新検出／インデックス選択回路７０は、ノイズ発生回路７１ａ１，７１ａ２，７１ａ３，…，７１ａｍ、レジスタ７２ａ１，７２ａ２，７２ａ３，７２ａ４，…，７２ａ（ｎ−１），７２ａｎを有している。さらに、更新検出／インデックス選択回路７０は、確率算出部７３ａ１，７３ａ２，７３ａ４，…，７３ａ（ｎ−１），７３ａｎ、選択回路７４ａ１，７４ａ２，…，７４ａｌ，７５，７６，７７を有している。選択回路７４ａ１〜７４ａｌ，７５，７６，７７は、ｍ段にわたってツリー状に接続されている。
【０１６４】
ノイズ発生回路７１ａ１〜７１ａｍは、それぞれ異なるシード（初期値）の０≦ｘ≦１の一様乱数値ｘを、各段の選択回路に供給する。たとえば、ノイズ発生回路７１ａ１は、１段目の選択回路７４ａ１〜７４ａｌに一様乱数値ｘを供給し、ノイズ発生回路７１ａｍは、ｍ段目の選択回路７７に一様乱数値ｘを供給する。
【０１６５】
レジスタ７２ａ１〜７２ａｎには、ニューロンのｉｎｄｅｘ（１〜ｎ）が格納される。確率算出部７３ａ１〜７３ａｎは、全エネルギーの変化分ΔＥ１〜ΔＥｎに基づき、式（８）に示したような確率値Ａi（ｉ＝１〜ｎ）を算出する。
【０１６６】
１段目の選択回路７４ａ１〜７４ａｌは、ｎ／２個ある。１段目の選択回路７４ａ１〜７４ａｌは、それぞれ２つのｉｎｄｅｘと２つの確率値Ａi，Ａi+1を取得し、一様乱数値ｘに基づき、一方のｉｎｄｅｘを選択して出力するとともに、２つの確率値Ａi，Ａi+1を加算した加算値を出力する。
【０１６７】
２段目には、選択回路７５を含むｎ／４個の選択回路がある。ｎ／４個の選択回路は、それぞれ１段目の２つの選択回路が出力する２つのｉｎｄｅｘと、２つの加算値を取得し、一様乱数値ｘに基づき、一方のｉｎｄｅｘを選択して出力するとともに、２つの加算値を加算した新たな加算値を出力する。
【０１６８】
３段目には、選択回路７６を含むｎ／８個の選択回路がある。ｎ／８個の選択回路は、それぞれ２段目の２つの選択回路が出力する２つのｉｎｄｅｘと、２つの加算値を取得し、一様乱数値ｘに基づき、一方のｉｎｄｅｘを選択して出力するとともに、２つの加算値を加算した新たな加算値を出力する。
【０１６９】
ｍ段目には、１つの選択回路７７があり、選択回路７７は、ｍ−１段目の２つの選択回路が出力する２つのｉｎｄｅｘと、２つの加算値を取得し、一様乱数値ｘに基づき、一方のｉｎｄｅｘを選択して出力する。
【０１７０】
図１７は、選択回路の一例を示す図である。
図１７では、図１６の選択回路７５の例が示されている。他の選択回路も同様の回路構成で実現できる。
【０１７１】
選択回路７５は、加算回路８０、乗算回路８１、比較回路８２，８３、ＸＯＲ回路８４，８５、インデックス選択回路８６を有している。
加算回路８０は、選択回路７４ａ１が出力する加算結果ｓｕｍＡａと、選択回路７４ａ２が出力する加算結果ｓｕｍＡｂとを加算することで加算結果ｓｕｍＡｃを出力する。
【０１７２】
乗算回路８１は、一様乱数値ｘと加算結果ｓｕｍＡｃとの乗算結果を出力する。
比較回路８２は、乗算回路８１が出力する乗算結果よりも加算結果ｓｕｍＡｃが大きいときに１を出力し、加算結果ｓｕｍＡｃが乗算結果以下のときは０を出力する。
【０１７３】
比較回路８３は、乗算回路８１が出力する乗算結果よりも加算結果ｓｕｍＡａが大きいときに１を出力し、加算結果ｓｕｍＡａが乗算結果以下のときは０を出力する。
ＸＯＲ回路８４は、比較回路８２の出力信号と、０との排他的論理和を出力する。
【０１７４】
ＸＯＲ回路８５は、比較回路８２と比較回路８３の出力信号の排他的論理和を出力する。
インデックス選択回路８６は、選択回路７４ａ１が出力するｉｎｄｅｘ（図１７ではｉｎｄｅｘａと表記している）と、選択回路７４ａ２が出力するｉｎｄｅｘ（図１７ではｉｎｄｅｘｂと表記している）とを受ける。そして、インデックス選択回路８６は、ＸＯＲ回路８５の出力信号が１のときは、ｉｎｄｅｘａ、ＸＯＲ回路８４の出力信号が１のときは、ｉｎｄｅｘｂを選択して、ｉｎｄｅｘｃとして出力する。
【０１７５】
このような、更新検出／インデックス選択回路７０を用いた場合も、第４の実施の形態の情報処理装置１０ｃと同様の効果が得られる。
なお、図１６に示した各選択回路は、２つのｉｎｄｅｘから１つを選択するものであるが、これに限定されず、３つ以上のｉｎｄｅｘから１つを選択するものであってもよいし、異なる数のｉｎｄｅｘから１つを選択する複数種類の選択回路が混在してもよい。
【０１７６】
以上説明してきた第１乃至第４の実施の形態の情報処理装置１０，１０ａ，１０ｂ，１０ｃは、ＦＰＧA（Field-programmable gate array）で実現することもできる。
図１８は、ＦＰＧＡの一例を示す図である。
【０１７７】
ＦＰＧＡ９０は、処理装置（エンジン）９０ａ、インタフェース回路９０ｂ，９０ｃを有する。
処理装置９０ａ内の設定メモリ（コンフィギュレーションメモリ）９０ａ１に記憶される設定値により、処理装置９０ａの内部構成が定義される。設定メモリ９０ａ１に記憶される設定値はインタフェース回路９０ｂを介して、外部のコンピュータ９１によって書き換え可能である。また、処理装置９０ａは、インタフェース回路９０ａ２を有しており、インタフェース回路９０ｂ，９０ｃと情報の送受信を行える。インタフェース回路９０ｃは、たとえば、ＤＤＲ（Double-Data-Rate）メモリなどのメモリ９２との間で情報の送受信を行う。
【０１７８】
第１乃至第４の実施の形態の情報処理装置１０，１０ａ，１０ｂ，１０ｃは、処理装置９０ａ内に構築することができる。
上記のような、第１乃至第４の実施の形態の情報処理装置１０，１０ａ，１０ｂ，１０ｃを用いることで、たとえば、巡回セールスマン問題のような最適化問題を高速に計算することができる。
【０１７９】
たとえば、第２の実施の形態の情報処理装置１０ａにおいて、巡回セールスマン問題の計算の収束に要するサイクル数（レジスタ２６ａ１〜２６ａｎなどに供給されるクロック信号のサイクル数）は、イジング装置１１ｂ１〜１１ｂｎの数（並列数）に比例して少なくなる効果が得られる。
【０１８０】
図１９は、巡回セールスマン問題の計算の収束に要するサイクル数とイジング装置の並列数との関係を示すシミュレーション結果の一例である。
縦軸が、収束までのサイクル数であり、横軸が並列数である。図１９では、都市数＝３２の巡回セールスマン問題を、第２の実施の形態の情報処理装置１０ａで計算したときの、収束までのサイクル数と、並列数との関係の一例が示されている。
【０１８１】
図１９に示すように並列数にほぼ比例して、収束までのサイクル数が減少していくことが分かる。
以上、実施の形態に基づき、本発明の情報処理装置、イジング装置及び情報処理装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１８２】
１０  情報処理装置
１１ａ１〜１１ａｎ  イジング装置
１２  更新ニューロン選択回路
１３  ノイズ発生回路
２０ａ１〜２０ａｎ  エネルギー値算出回路
２０ｂ１〜２０ｂｎ  状態遷移判定回路
２１ａ１〜２１ａｎ，２６ａ１〜２６ａｎ，２４ｂ１〜２４ｂｎ，２５ｂ１〜２５ｂｎ  レジスタ
２２ａ１〜２２ａｎ，２３ａ１〜２３ａｎ  選択回路
２２ｂ１〜２２ｂｎ  比較回路
２３ｂ１〜２３ｂｎ  ＸＯＲ回路
２４ａ１〜２４ａｎ  乗算回路
２５ａ１〜２５ａｎ，２１ｂ１〜２１ｂｎ  加算回路
【図１】
2018041351.tif 000013
【図２】
2018041351.tif 000014
【図３】
2018041351.tif 000015
【図４】
2018041351.tif 000016
【図５】
2018041351.tif 000017
【図６】
2018041351.tif 000018
【図７】
2018041351.tif 000019
【図８】
2018041351.tif 000020
【図９】
2018041351.tif 000021
【図１０】
2018041351.tif 000022
【図１１】
2018041351.tif 000023
【図１２】
2018041351.tif 000024
【図１３】
2018041351.tif 000025
【図１４】
2018041351.tif 000026
【図１５】
2018041351.tif 000027
【図１６】
2018041351.tif 000028
【図１７】
2018041351.tif 000029
【図１８】
2018041351.tif 000030
【図１９】
2018041351.tif 000031