(57)【特許請求の範囲】
【請求項１】
ｎ（ｎは３以上の自然数）個のニューロンのうち、出力値の更新を許容する第１のニューロンをランダムに選択するための選択信号を複数回出力するランダム信号生成回路と、
前記ｎ個のニューロンのうち、前記選択信号に基づき選択される前記第１のニューロンを含む２乃至ｄ（ｄは３以上ｎ以下の自然数）個のニューロンによる２体結合乃至ｄ体結合の強さを示す複数の重み値と、前記ｎ個のニューロンのｎビットの出力値に基づき、前記２体結合乃至前記ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のエネルギー値または前記ｄ−１個のエネルギー値の変化分を算出するｄ−１個の演算回路と、
前記ｄ−１個のエネルギー値を加算した第１の加算値、または前記ｄ−１個のエネルギー値の前記変化分を加算した第２の加算値を求め、前記第１の加算値または前記第２の加算値を出力する加算回路と、
前記第１の加算値とノイズ値との加算結果に基づく第１の値と閾値との第１の比較結果、または、前記２体結合乃至前記ｄ体結合のそれぞれによって発生する前記エネルギーの和を示し前記第２の加算値に基づき更新される第２の値と、前記ノイズ値との加算結果に基づく第３の値と前記閾値との第２の比較結果に基づき、前記第１のニューロンの第１の出力値を決定し出力する比較回路と、
前記選択信号と前記第１の出力値とに基づいて前記ｎビットの出力値のうち、１ビットを更新した更新出力値を出力する更新回路と、
前記更新出力値を保持し、前記演算回路が用いる前記ｎビットの出力値として出力する保持回路と、
を有するイジング装置と、
前記ノイズ値のノイズ幅を制御する制御装置と、
を有することを特徴とする情報処理装置。
【請求項２】
前記ｄ−１個の演算回路のそれぞれは記憶部を有し、
前記制御装置は、
前記複数の重み値のうち、前記複数の重み値の対称性に基づき、前記記憶部に記憶する前記複数の重み値の数を決定する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御装置は、前記記憶部に記憶する前記複数の重み値の数を、ｎd-3×（ｎ2−ｎ）／２とする、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
ｎ（ｎは３以上の自然数）個のニューロンのうち、出力値の更新を許容する第１のニューロンをランダムに選択するための選択信号を複数回出力するランダム信号生成回路と、
前記ｎ個のニューロンのうち、前記選択信号に基づき選択される前記第１のニューロンを含む２乃至ｄ（ｄは３以上ｎ以下の自然数）個のニューロンによる２体結合乃至ｄ体結合の強さを示す複数の重み値と、前記ｎ個のニューロンのｎビットの出力値に基づき、前記２体結合乃至前記ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のエネルギー値または前記ｄ−１個のエネルギー値の変化分を算出するｄ−１個の演算回路と、
前記ｄ−１個のエネルギー値を加算した第１の加算値、または前記ｄ−１個のエネルギー値の前記変化分を加算した第２の加算値を求め、前記第１の加算値または前記第２の加算値を出力する加算回路と、
前記第１の加算値とノイズ値との加算結果に基づく第１の値と閾値との第１の比較結果、または、前記２体結合乃至前記ｄ体結合のそれぞれによって発生する前記エネルギーの和を示し前記第２の加算値に基づき更新される第２の値と、前記ノイズ値との加算結果に基づく第３の値と前記閾値との第２の比較結果に基づき、前記第１のニューロンの第１の出力値を決定し出力する比較回路と、
前記選択信号と前記第１の出力値とに基づいて前記ｎビットの出力値のうち、１ビットを更新した更新出力値を出力する更新回路と、
前記更新出力値を保持し、前記演算回路が用いる前記ｎビットの出力値として出力する保持回路と、
を有することを特徴とするイジング装置。
【請求項５】
ｎ（ｎは３以上の自然数）個のニューロンのうち、出力値の更新を許容する第１のニューロンをランダムに選択するための選択信号を複数回出力するランダム信号生成回路と、
前記ｎ個のニューロンのうち、前記選択信号に基づき選択される前記第１のニューロンを含む２乃至ｄ（ｄは３以上ｎ以下の自然数）個のニューロンによる２体結合乃至ｄ体結合の強さを示す複数の重み値と、前記ｎ個のニューロンのｎビットの出力値に基づき、前記２体結合乃至前記ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のエネルギー値または前記ｄ−１個のエネルギー値の変化分を算出するｄ−１個の演算回路と、
前記ｄ−１個のエネルギー値を加算した第１の加算値、または前記ｄ−１個のエネルギー値の前記変化分を加算した第２の加算値を求め、前記第１の加算値または前記第２の加算値を出力する加算回路と、
前記第１の加算値とノイズ値との加算結果に基づく第１の値と閾値との第１の比較結果、または、前記２体結合乃至前記ｄ体結合のそれぞれによって発生する前記エネルギーの和を示し前記第２の加算値に基づき更新される第２の値と、前記ノイズ値との加算結果に基づく第３の値と前記閾値との第２の比較結果に基づき、前記第１のニューロンの第１の出力値を決定し出力する比較回路と、
前記選択信号と前記第１の出力値とに基づいて前記ｎビットの出力値のうち、１ビットを更新した更新出力値を出力する更新回路と、
前記更新出力値を保持し、前記演算回路が用いる前記ｎビットの出力値として出力する保持回路と、
を有するイジング装置に対して、
制御装置が、前記複数の重み値を設定し、
前記制御装置が、前記ノイズ値のノイズ幅を制御する、
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、イジング装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いたイジング装置（ボルツマンマシンと呼ばれる場合もある）がある。イジング装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
イジング装置は、ニューラルネットワークを用いてモデル化することもできる。その場合、イジング装置に含まれる複数のユニット（ビット）のそれぞれが、他のビットの状態と、他のビットと自身との結合の強さを示す重み値（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。イジング装置は、たとえば、シミュレーテッド・アニーリングにより、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の最小値が得られる各ビットの状態の組み合わせを、解として求める。
【０００４】
従来、イジング装置をハードウェアで実現することによって、計算時間を短縮することが提案されている。
ところで、従来のイジング装置は、２つのビットの結合の強さを示す重み値を含むエネルギー関数（以下２次のエネルギー関数という）を用いるものである。イジング装置を、より多様な最適化問題に適用可能とするため、３つ以上のビットによる相互結合の強さを示す重み値を含むエネルギー関数（以下高次のエネルギー関数という）を用いることが考えられる。
【０００５】
高次のエネルギー関数を用いた最適化問題の解決手法として、高次のエネルギー関数を用いた最適化問題を、複数の２次のエネルギー関数を用いた最適化問題に変換して解く手法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２００５１２号公報
【非特許文献】
【０００７】
【非特許文献１】C. R. Schneider and H. C. Card, "Analog CMOS Deterministic Boltzmann Circuits", Journal of Solid-State Circuits, pp.907-914, 1993
【非特許文献２】R. Babbush, B. O'Gorman, and A. Aspuru-Guzik, "Resource Efficient Gadgets for Compiling Adiabatic Quantum Optimization Problems", July 31, 2013, [online], ［平成28年5月26日検索］、インターネット<http://arxiv.org/pdf/1307.8041.pdf>
【非特許文献３】V. S. Denchev, S. Boixo, S. V. Isakov, N. Ding, R. Babbush, V. Smelyanskiy, J. Martinis, and H. Neven, "What is the Computational Value of Finite Range Tunneling?", January 26, 2016, [online], ［平成28年5月26日検索］、インターネット<http://arxiv.org/pdf/1512.02206.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来、高次のエネルギー関数を用いた最適化問題を、２次のエネルギー関数を用いた最適化問題に変換する際に“ancillary bit”という補助的なビットを導入していた。この補助的なビットが増えることで、シミュレーテッド・アニーリングで最適解に収束する速度の悪化や、使用できるビット数の減少を招くおそれがある。
【０００９】
１つの側面では、本発明は、補助的なビットを使用せず、高次のエネルギー関数を用いた最適化問題をマッピングできる情報処理装置、イジング装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、ｎ（ｎは３以上の自然数）個のニューロンのうち、出力値の更新を許容する第１のニューロンをランダムに選択するための選択信号を複数回出力するランダム信号生成回路と、前記ｎ個のニューロンのうち、前記選択信号に基づき選択される前記第１のニューロンを含む２乃至ｄ（ｄは３以上ｎ以下の自然数）個のニューロンによる２体結合乃至ｄ体結合の強さを示す複数の重み値と、前記ｎ個のニューロンのｎビットの出力値に基づき、前記２体結合乃至前記ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のエネルギー値または前記ｄ−１個のエネルギー値の変化分を算出するｄ−１個の演算回路と、前記ｄ−１個のエネルギー値を加算した第１の加算値、または前記ｄ−１個のエネルギー値の前記変化分を加算した第２の加算値を求め、前記第１の加算値または前記第２の加算値を出力する加算回路と、前記第１の加算値とノイズ値との加算結果に基づく第１の値と閾値との第１の比較結果、または、前記２体結合乃至前記ｄ体結合のそれぞれによって発生する前記エネルギーの和を示し前記第２の加算値に基づき更新される第２の値と、前記ノイズ値との加算結果に基づく第３の値と前記閾値との第２の比較結果に基づき、前記第１のニューロンの第１の出力値を決定し出力する比較回路と、前記選択信号と前記第１の出力値とに基づいて前記ｎビットの出力値のうち、１ビットを更新した更新出力値を出力する更新回路と、前記更新出力値を保持し、前記演算回路が用いる前記ｎビットの出力値として出力する保持回路と、を有するイジング装置と、前記ノイズ値のノイズ幅を制御する制御装置と、を有する情報処理装置が提供される。
【００１１】
また、１つの態様では、ｎ（ｎは３以上の自然数）個のニューロンのうち、出力値の更新を許容する第１のニューロンをランダムに選択するための選択信号を複数回出力するランダム信号生成回路と、前記ｎ個のニューロンのうち、前記選択信号に基づき選択される前記第１のニューロンを含む２乃至ｄ（ｄは３以上ｎ以下の自然数）個のニューロンによる２体結合乃至ｄ体結合の強さを示す複数の重み値と、前記ｎ個のニューロンのｎビットの出力値に基づき、前記２体結合乃至前記ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のエネルギー値または前記ｄ−１個のエネルギー値の変化分を算出するｄ−１個の演算回路と、前記ｄ−１個のエネルギー値を加算した第１の加算値、または前記ｄ−１個のエネルギー値の前記変化分を加算した第２の加算値を求め、前記第１の加算値または前記第２の加算値を出力する加算回路と、前記第１の加算値とノイズ値との加算結果に基づく第１の値と閾値との第１の比較結果、または、前記２体結合乃至前記ｄ体結合のそれぞれによって発生する前記エネルギーの和を示し前記第２の加算値に基づき更新される第２の値と、前記ノイズ値との加算結果に基づく第３の値と前記閾値との第２の比較結果に基づき、前記第１のニューロンの第１の出力値を決定し出力する比較回路と、前記選択信号と前記第１の出力値とに基づいて前記ｎビットの出力値のうち、１ビットを更新した更新出力値を出力する更新回路と、前記更新出力値を保持し、前記演算回路が用いる前記ｎビットの出力値として出力する保持回路と、を有するイジング装置が提供される。
【００１２】
また、１つの態様では、ｎ（ｎは３以上の自然数）個のニューロンのうち、出力値の更新を許容する第１のニューロンをランダムに選択するための選択信号を複数回出力するランダム信号生成回路と、前記ｎ個のニューロンのうち、前記選択信号に基づき選択される前記第１のニューロンを含む２乃至ｄ（ｄは３以上ｎ以下の自然数）個のニューロンによる２体結合乃至ｄ体結合の強さを示す複数の重み値と、前記ｎ個のニューロンのｎビットの出力値に基づき、前記２体結合乃至前記ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のエネルギー値または前記ｄ−１個のエネルギー値の変化分を算出するｄ−１個の演算回路と、前記ｄ−１個のエネルギー値を加算した第１の加算値、または前記ｄ−１個のエネルギー値の前記変化分を加算した第２の加算値を求め、前記第１の加算値または前記第２の加算値を出力する加算回路と、前記第１の加算値とノイズ値との加算結果に基づく第１の値と閾値との第１の比較結果、または、前記２体結合乃至前記ｄ体結合のそれぞれによって発生する前記エネルギーの和を示し前記第２の加算値に基づき更新される第２の値と、前記ノイズ値との加算結果に基づく第３の値と前記閾値との第２の比較結果に基づき、前記第１のニューロンの第１の出力値を決定し出力する比較回路と、前記選択信号と前記第１の出力値とに基づいて前記ｎビットの出力値のうち、１ビットを更新した更新出力値を出力する更新回路と、前記更新出力値を保持し、前記演算回路が用いる前記ｎビットの出力値として出力する保持回路と、を有するイジング装置に対して、制御装置が、前記複数の重み値を設定し、前記制御装置が、前記ノイズ値のノイズ幅を制御する、情報処理装置の制御方法が提供される。
【発明の効果】
【００１３】
開示の情報処理装置、イジング装置及び情報処理装置の制御方法によれば、補助的なビットを使用せず、高次のエネルギー関数を用いた最適化問題をマッピングできる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理装置の一例を示す図である。
【図２】ｄ体結合のローカルフィールド値を算出する演算回路の一例を示す図である。
【図３】更新回路と保持回路の一例を示す図である。
【図４】３次のエネルギー関数を用いた最適化問題がマッピングされるイジング装置の一例を示す図である。
【図５】２体結合によって発生するローカルフィールド値を算出する演算回路の一例を示す図である。
【図６】３体結合によって発生するローカルフィールド値を算出する演算回路の一例を示す図である。
【図７】情報処理装置の動作の一例の流れを示すフローチャートである。
【図８】シミュレーテッド・アニーリングの一例の流れを示すフローチャートである。
【図９】シミュレーテッド・アニーリングの様子を示す図である。
【図１０】２体結合の重み値の例を示す図である。
【図１１】３体結合の重み値の例を示す図である。
【図１２】ニューロン数がｎ個のときの３体結合の重み値の例を示す図である。
【図１３】ニューロン数がｎ個のときの４体結合の重み値の例を示す図である。
【図１４】重み値リストの作成処理の一例の流れを示すフローチャートである。
【図１５】重み値リストの例を示す図である。
【図１６】第２の実施の形態の情報処理装置の一例を示す図である。
【図１７】回路部の一例を示す図である。
【図１８】２体結合によって発生するローカルフィールド値の変化分を算出する演算回路の一例を示す図である。
【図１９】３体結合によって発生するローカルフィールド値の変化分を算出する演算回路の一例を示す図である。
【図２０】２出力値選択回路の一例を示す図である。
【図２１】第２の実施の形態の情報処理装置におけるシミュレーテッド・アニーリングの一例の流れを示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の情報処理装置の一例を示す図である。
【００１６】
情報処理装置１は、イジング装置２と制御装置３とメモリ４を有しており、制御装置３によって、高次（ｄ≧３）のエネルギー関数を用いた最適化問題がイジング装置２にマッピングされる。また、本実施の形態のイジング装置２は、ｎ（ｎは３以上の自然数）個のニューロンを有するニューラルネットワークとして機能する。
【００１７】
イジング装置２は、ランダム信号生成回路１０、演算回路１１ａ１，１１ａ２，…，１１ａ（ｄ−１）、加算回路１２、比較回路１３、更新回路１４、保持回路１５、バイアス値保持回路１６、ノイズ発生回路１７を有する。イジング装置２は、たとえば、１つの半導体集積回路（チップ）で実現される。
【００１８】
ランダム信号生成回路１０は、ｎ個のニューロンのうち、出力値の更新を許容するニューロンをランダムに選択するための選択信号を複数回出力する。たとえば、ｎ個のニューロンには、それぞれ異なる識別番号（以下ニューロンＩＤという）が割り当てられている。図１には、ランダム信号生成回路１０が、ニューロンＩＤとしてｉ（１≦ｉ≦ｎ）を指定する選択信号を出力している様子が示されている。なお、ランダム信号生成回路１０として、たとえば、ＬＦＳＲ（Linear Feedback Shift Registers）などを用いることができる。
【００１９】
ｄ−１（ｄは３以上ｎ以下の自然数）個の演算回路１１ａ１〜１１ａ（ｄ−１）は、ランダム信号生成回路１０から出力される選択信号と、保持回路１５から出力されるｎ個のニューロンのｎビットの出力値ｘ1，ｘ2，…，ｘnを受ける。そして、演算回路１１ａ１〜１１ａ（ｄ−１）は、選択信号で選択されたニューロンを含む２〜ｄ個のニューロンによる２体結合〜ｄ体結合の強さを示す複数の重み値と、出力値ｘ1〜ｘnに基づき、ｄ−１個のエネルギー値ｈi2，ｈi3，…，ｈidを算出する。なお、以下ではエネルギー値を、ローカルフィールド値という。ローカルフィールド値ｈi2〜ｈidは、２体結合〜ｄ体結合のそれぞれによって発生するエネルギーを示す。
【００２０】
２体結合〜ｄ体結合の強さを示す重み値（以下単に２体結合〜ｄ体結合の重み値という）は、たとえば、制御装置３により、計算対象の問題に応じて設定され、演算回路１１ａ１〜１１ａ（ｄ−１）内の記憶部（たとえば、レジスタ）に記憶される。図１には、ｎ＝ｌ個のニューロンの２体結合、３体結合及び４体結合の重み値の例が示されている。たとえば、ニューロンＩＤ＝ｉ，ｋのニューロン２０，２１による２体結合の重み値は、Ｗikと表記されている。また、ニューロンＩＤ＝ｋ，ｊのニューロン２１，２２による２体結合の重み値は、Ｗjkと表記されている。また、ニューロンＩＤ＝ｉ，ｊのニューロン２０，２２による２体結合の重み値は、Ｗijと表記されている。さらに、ニューロンＩＤ＝ｉ，ｊ，ｋのニューロン２０〜２２による３体結合の重み値は、Ｗijkと表記されている。また、ニューロンＩＤ＝ｉ，ｊ，ｋ，ｌのニューロン２０〜２３による４体結合の重み値は、Ｗijklと表記されている。
【００２１】
加算回路１２は、ローカルフィールド値ｈi2〜ｈidを加算して加算結果を出力する。
比較回路１３は、加算回路１２での加算結果とノイズ値とバイアス値との加算結果と閾値（たとえば、０）との比較結果に基づき、選択信号で選択されたニューロンの出力値を決定し出力する。比較回路１３は、たとえば、加算回路１２での加算結果とノイズ値とバイアス値とを加算する加算回路を含んでいる。なお、以下では、加算回路１２での加算結果とバイアス値とを加算した値（エネルギー値）を、ローカルフィールド値ｈiという。
【００２２】
たとえば、ローカルフィールド値ｈiとノイズ値との加算結果が負のときには、比較回路１３は１を出力し、ローカルフィールド値ｈiとノイズ値との加算結果が正のときには、比較回路１３は０を出力する。なお、バイアス値は０であってもよい。
【００２３】
更新回路１４は、選択信号と、比較回路１３から出力される出力値とに基づいて、ｎ個のニューロンのｎビットの出力値のうち、１ビットを更新した更新出力値を出力する。たとえば、比較回路１３から出力されるニューロンＩＤ＝ｉのニューロンの出力値が、前の値と異なるときには、ｎビットの出力値のうち、ｉ番目のビットを更新したｎビットの更新出力値が出力される。なお、比較回路１３から出力されるニューロンＩＤ＝ｉのニューロンの出力値が、前の値と同じときには、更新回路１４は、更新出力値を出力しなくてもよい。
【００２４】
保持回路１５は、クロック信号ｃｌｋに同期して更新回路１４から出力される更新出力値を保持し、演算回路１１ａ１〜１１ａ（ｄ−１）が用いるｎ個のニューロンのｎビットの出力値として出力する。保持回路１５は、たとえば、複数のフリップフロップを用いて実現される。クロック信号ｃｌｋは、たとえば、制御装置３から供給される。なお、クロック信号ｃｌｋは、イジング装置２内またはイジング装置２外に設けられる図示しないクロック信号生成回路から供給されるようにしてもよい。
【００２５】
バイアス値保持回路１６は、たとえば、レジスタまたはフラッシュメモリなどであり、ｎ個のニューロンのそれぞれのバイアス値を保持している。そしてバイアス値保持回路１６は、ランダム信号生成回路１０から出力される選択信号で指定されるニューロンのバイアス値を、たとえば、比較回路１３に供給する。バイアス値は、たとえば、制御装置３により、計算対象の問題に応じて予め設定される。
【００２６】
ノイズ発生回路１７は、制御装置３の制御のもと、シミュレーテッド・アニーリングを行うためにノイズ値を出力する。ノイズ発生回路１７も、ランダム信号生成回路１０と同様に、たとえば、ＬＦＳＲを用いて実現可能である。また、ノイズ発生回路１７は、たとえば、増幅回路を有している。制御装置３が増幅回路の増幅率を変化させることで、ノイズ値の振幅が制御可能である。
【００２７】
制御装置３は、ランダム信号生成回路１０の制御や、ノイズ幅を制御するためにノイズ発生回路１７を制御する。たとえば、制御装置３は、シミュレーテッド・アニーリングを実現するために、ノイズ発生回路１７に含まれる増幅回路を制御して、ノイズ値のノイズ幅（ノイズの振幅）を徐々に小さくさせる。また、制御装置３は、計算対象の最適化問題に応じて、予め複数の重み値や複数のバイアス値を設定する。そして、制御装置３は、バス（図示せず）を介して演算回路１１ａ１〜１１ａ（ｄ−１）内のレジスタに複数の重み値を書き込み、複数のバイアス値をバイアス値保持回路１６に書き込むことでマッピングを行う。
【００２８】
制御装置３は、たとえば、プロセッサで実現できる。プロセッサは、たとえば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサは、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。また、制御装置３は、ＰＣ（パーソナルコンピュータ）やサーバコンピュータなどであってもよい。
【００２９】
メモリ４は、たとえば、制御装置３がプロセッサの場合、プロセッサが実行するＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及びデータを記憶する不揮発性の記憶装置である。メモリ４は、後述する重み値リストを生成するプログラムを記憶してもよい。なお、不揮発性の記憶装置としては、たとえば、フラッシュメモリやＳＳＤ（Solid State Drive）、ＨＤＤ（Hard Disk Drive）などが用いられる。
【００３０】
以上のような情報処理装置１は、イジング型のエネルギー関数の演算をハードウェアで実現するものである。なお、高次のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００３１】
【数１】
0006623947.tif 000002
【００３２】
式（１）において、右辺の１項目は、全ニューロンから選択可能な２つのニューロンの全組み合わせについて、漏れと重複なく、２つのニューロンの出力値と２体結合の重み値との積を積算したものである。右辺の２項目は、全ニューロンのそれぞれのバイアス値と出力値との積を積算したものである。ｂiは、ニューロンＩＤ＝ｉのニューロンのバイアス値を示している。右辺の３項目は、全ニューロンから選択可能な３つのニューロンの全組み合わせについて、漏れと重複なく、３つのニューロンの出力値と３体結合の重み値との積を積算したものである。右辺の４項目は、全ニューロンから選択可能な４つのニューロンの全組み合わせについて、漏れと重複なく、４つのニューロンの出力値と４体結合の重み値との積を積算したものである。
【００３３】
このようなイジング型のエネルギー関数において、あるニューロンの出力値を１から０または０から１に変化させたときのエネルギー値の変化は、そのニューロンと他のニューロンとの結合の重み値と、各ニューロンの出力値から決めることができる。
【００３４】
たとえば、ニューロンＩＤ＝ｉのニューロンの出力値が変化したときのエネルギーの変化は以下の式（２）で表せる。
【００３５】
【数２】
0006623947.tif 000003
【００３６】
式（２）において、ｘiが１のとき、２ｘi−１は１となり、ｘiが０のとき、２ｘi−１は−１となる。また、式（２）において、ニューロンＩＤ＝ｉのニューロンが関わる結合によって発生するエネルギーを示すローカルフィールド値ｈiは、以下の式（３）のように表すことができる。
【００３７】
【数３】
0006623947.tif 000004
【００３８】
式（３）において、右辺の２項目はニューロンＩＤ＝ｉのニューロンを含む２体結合によって発生するエネルギーを表す。また、右辺の３項目はニューロンＩＤ＝ｉのニューロンを含む３体結合によって発生するエネルギーを表す。Ｗijkは、ｎ個のニューロンのうち、ニューロンＩＤ＝ｉ，ｊ，ｋのニューロンによる３体結合の重み値である。また、右辺の４項目はニューロンＩＤ＝ｉのニューロンを含む４体結合によって発生するエネルギーを表す。Ｗijklは、ｎ個のニューロンのうち、ニューロンＩＤ＝ｉ，ｊ，ｋ，ｌのニューロンによる４体結合の重み値である。
【００３９】
式（２）、式（３）から、ローカルフィールド値ｈiが負で、且つ、２ｘi−１が正のとき、または、ローカルフィールド値ｈiが正で、且つ、２ｘi−１が負のとき、ΔＥiが負となり、エネルギーが減少する。
【００４０】
図１に示した演算回路１１ａ１〜１１ａ（ｄ−１）のそれぞれは、このような２体結合乃至ｄ体結合のそれぞれによって発生するエネルギーを示すローカルフィールド値ｈi2〜ｈidを算出する。
【００４１】
たとえば、演算回路１１ａ１は、式（３）の右辺の２項目であるローカルフィールド値ｈi2を算出し、演算回路１１ａ２は、式（３）の３項目であるローカルフィールド値ｈi3を算出する。
【００４２】
（演算回路の一例）
図２は、ｄ体結合のローカルフィールド値を算出する演算回路の一例を示す図である。
演算回路１１ａ（ｄ−１）は、レジスタ３０ａ１，３０ａ２，…，３０ａｎ、選択回路３１、乗算部３２、加算部３３を有している。
【００４３】
レジスタ３０ａ１〜３０ａｎには、ｄ個のニューロンによるｄ体結合の複数の重み値が記憶されている。たとえば、レジスタ３０ａ１には、ニューロンＩＤ＝１のニューロンを含むｄ個のニューロンによるｄ体結合の複数の重み値が記憶されている。レジスタ３０ａ２には、ニューロンＩＤ＝２のニューロンを含むｄ個のニューロンによるｄ体結合の複数の重み値が記憶されている。また、レジスタ３０ａｎには、ニューロンＩＤ＝ｎのニューロンを含むｄ個のニューロンによるｄ体結合の複数の重み値が記憶されている。
【００４４】
選択回路３１は、ランダム信号生成回路１０が出力する選択信号に基づき、レジスタ３０ａ１〜３０ａｎの何れか１つに記憶されている複数の重み値を出力する。たとえば、選択回路３１は、ニューロンＩＤ＝１のニューロンを指定する選択信号を受けると、レジスタ３０ａ１に記憶されている複数の重み値を出力する。
【００４５】
乗算部３２と加算部３３は、出力値ｘ1〜ｘnと、選択回路３１が出力した複数の重み値とに基づき、式（３）に示したようなローカルフィールド値ｈiのうち、ｄ体結合により発生するエネルギー（ローカルフィールド値ｈid）を算出する。乗算部３２はｍ個の乗算回路３２ａ１〜３２ａｍを有し、加算部３３は、ｐ個の加算回路３３ａ１〜３３ａｐを有している。乗算回路３２ａ１〜３２ａｍと加算回路３３ａ１〜３３ａｐの数については後述する。
【００４６】
（更新回路と保持回路の一例）
図３は、更新回路と保持回路の一例を示す図である。
更新回路１４は、マルチプレクサ１４ａ、選択回路１４ｂ１，１４ｂ２，…，１４ｂｎを有している。また、保持回路１５は、フリップフロップ１５ａ１，１５ａ２，…，１５ａｎを有している。
【００４７】
マルチプレクサ１４ａは、ランダム信号生成回路１０から出力される選択信号に基づき、選択回路１４ｂ１〜１４ｂｎの選択信号を生成する。マルチプレクサ１４ａは、たとえば、ｎ個のニューロンのうち１つのニューロンを選択する選択信号を受けると、選択回路１４ｂ１〜１４ｂｎのうち、そのニューロンに対応したものに、選択信号として１を供給し、その他に０を供給する。たとえば、マルチプレクサ１４ａは、ニューロンＩＤ＝１のニューロンを指定する選択信号を受けると、選択回路１４ｂ１に選択信号として１を供給し、選択回路１４ｂ２〜１４ｂｎに選択信号として０を供給する。
【００４８】
選択回路１４ｂ１〜１４ｂｎは、ｎ個のニューロンのそれぞれに対応してｎ個設けられている。選択回路１４ｂ１〜１４ｂｎは、それぞれ２つの入力端子を有している。一方の入力端子には、フリップフロップ１５ａ１〜１５ａｎの何れか１つの出力端子が接続されており、他方の入力端子には、比較回路１３の出力端子が接続されている。選択回路１４ｂ１〜１４ｂｎは、マルチプレクサ１４ａから供給される選択信号が１のときは、比較回路１３から出力されるニューロンの出力値を選択して出力する。選択回路１４ｂ１〜１４ｂｎは、マルチプレクサ１４ａから供給される選択信号が０のときは、フリップフロップ１５ａ１〜１５ａｎから出力される値を選択して出力する。
【００４９】
保持回路１５のフリップフロップ１５ａ１〜１５ａｎは、クロック信号ｃｌｋに同期して選択回路１４ｂ１〜１４ｂｎから出力される値（ｎビットの更新出力値）を取り込み、出力する。
【００５０】
ランダム信号生成回路１０が、たとえば、ニューロンＩＤ＝１のニューロンを指定する選択信号を出力しているとき、選択回路１４ｂ１は、比較回路１３から出力されるそのニューロンの出力値を選択して出力する。選択回路１４ｂ２〜１４ｂｎは、フリップフロップ１５ａ２〜１５ａｎから出力される値を選択して出力する。これにより、保持回路１５は、ニューロンＩＤ＝１のニューロンに対応したビットの値だけ更新されたｎビットの出力値を出力する。
【００５１】
（３次のエネルギー関数を用いた最適化問題がマッピングされるイジング装置の例）
図４は、３次のエネルギー関数を用いた最適化問題がマッピングされるイジング装置の一例を示す図である。図４において、図１に示した要素と同じ要素については同一符号が付されている。
【００５２】
３次のエネルギー関数を用いた最適化問題がマッピングされるイジング装置２ａでは、演算回路１１ａ１，１１ａ２の数は、２つとなる。演算回路１１ａ１は、ニューロンＩＤ＝ｉのニューロンを含む２つのニューロンによる２体結合によって発生するエネルギーであるローカルフィールド値ｈi2を算出する。演算回路１１ａ２は、ニューロンＩＤ＝ｉのニューロンを含む３つのニューロンによる３体結合によって発生するエネルギーであるローカルフィールド値ｈi3を算出する。
【００５３】
加算回路１２ａは、２つのローカルフィールド値ｈi2，ｈi3の加算結果を出力する。
図５は、２体結合によって発生するローカルフィールド値を算出する演算回路の一例を示す図である。
【００５４】
演算回路１１ａ１は、レジスタ４０ａ１，４０ａ２，…，４０ａｎ、選択回路４１、乗算部４２、加算部４３を有している。
レジスタ４０ａ１〜４０ａｎには、２個のニューロンによる２体結合の複数の重み値が記憶されている。たとえば、レジスタ４０ａ１には、ニューロンＩＤ＝１のニューロンを含む２つのニューロンによる２体結合の重み値Ｗ12，Ｗ13，…，Ｗ1nが記憶されている。レジスタ４０ａ２には、ニューロンＩＤ＝２のニューロンを含む２つのニューロンによる２体結合の複数の重み値Ｗ21，Ｗ23，…，Ｗ2nが記憶されている。また、レジスタ４０ａｎには、ニューロンＩＤ＝ｎのニューロンを含む２つのニューロンによる２体結合の重み値Ｗn1，Ｗn2，…，Ｗn(n-1)が記憶されている。
【００５５】
選択回路４１は、ランダム信号生成回路１０が出力する選択信号に基づき、レジスタ４０ａ１〜４０ａｎの何れか１つに記憶されている複数の重み値を出力する。
乗算部４２はｎ個の乗算回路４２ａ１〜４２ａｎを有し、加算部４３は、ｑ個の加算回路４３ａ１〜４３ａｑを有している。乗算部４２と加算部４３は、出力値ｘ1〜ｘnと、選択回路４１が出力した複数の重み値とに基づき、式（３）に示したようなローカルフィールド値ｈiのうち、２体結合により発生するエネルギー（ローカルフィールド値ｈi2）を算出する。
【００５６】
図６は、３体結合によって発生するローカルフィールド値を算出する演算回路の一例を示す図である。
演算回路１１ａ２は、レジスタ５０ａ１，５０ａ２，…，５０ａｎ、選択回路５１、乗算部５２、加算部５３を有している。
【００５７】
レジスタ５０ａ１〜５０ａｎには、３個のニューロンによる３体結合の複数の重み値が記憶されている。たとえば、レジスタ５０ａ１には、ニューロンＩＤ＝１のニューロンを含む３つのニューロンによる３体結合の重み値Ｗ121，Ｗ131，Ｗ132，…，Ｗ1n(n-1)が記憶されている。レジスタ５０ａ２には、ニューロンＩＤ＝２のニューロンを含む３つのニューロンによる３体結合の複数の重み値Ｗ221，Ｗ231，Ｗ232，…，Ｗ2n(n-1)が記憶されている。また、レジスタ５０ａｎには、ニューロンＩＤ＝ｎのニューロンを含む３つのニューロンによる３体結合の重み値Ｗn21，Ｗn31，Ｗn32，…，Ｗnn(n-1)が記憶されている。
【００５８】
選択回路５１は、ランダム信号生成回路１０が出力する選択信号に基づき、レジスタ５０ａ１〜５０ａｎの何れか１つに記憶されている複数の重み値を出力する。
乗算部５２はｒ個の乗算回路５２ａ１〜５２ａｒを有し、加算部５３は、ｓ個の加算回路５３ａ１〜５３ａｓを有している。乗算部５２と加算部５３は、出力値ｘ1〜ｘnと、選択回路５１が出力した複数の重み値とに基づき、式（３）に示したようなローカルフィールド値ｈiのうち、３体結合により発生するエネルギー（ローカルフィールド値ｈi3）を算出する。
【００５９】
（第１の実施の形態の情報処理装置の動作例）
以下、制御装置３によって制御される図１の情報処理装置１の動作の一例を、フローチャートを用いて説明する。
【００６０】
図７は、情報処理装置の動作の一例の流れを示すフローチャートである。
まず、制御装置３は、たとえば、メモリ４に記憶されている２体結合〜ｄ体結合の重み値を抽出する（ステップＳ１）。なお、計算対象の問題に応じた重み値は、予め用意されているものとする。
【００６１】
次に、制御装置３は、抽出した重み値を、演算回路１１ａ１〜１１ａ（ｄ−１）のレジスタ（たとえば、演算回路１１ａ（ｄ−１）ではレジスタ３０ａ１〜３０ａｎ）に、書き込む（ステップＳ２）。つまり、ステップＳ２の処理では、最適化問題のマッピングが行われる。なお、ステップＳ２の処理で、制御装置３が、各ニューロンのバイアス値をバイアス値保持回路１６に書き込んでもよい。
【００６２】
その後、制御装置３の制御によりシミュレーテッド・アニーリングが実行され（ステップＳ３）、その結果であるｎ個のニューロンの出力値ｘ1〜ｘnを最適化問題の解として、制御装置３が取得する（ステップＳ４）ことで、処理が終了する。
【００６３】
図８は、シミュレーテッド・アニーリングの一例の流れを示すフローチャートである。
まず、制御装置３の制御のもと、ランダム信号生成回路１０は、出力値の更新を許容するニューロン（ニューロンＩＤ＝ｉのニューロン）をランダムに選択するための選択信号を出力する（ステップＳ１０）。
【００６４】
その後、演算回路１１ａ１〜１１ａ（ｄ−１）により、２体結合〜ｄ体結合により発生するエネルギーであるローカルフィールド値ｈi2〜ｈidの算出が行われる（ステップＳ１１）。そして、加算回路１２により、ローカルフィールド値ｈi2〜ｈidが加算される（ステップＳ１２）。
【００６５】
ローカルフィールド値ｈi（加算回路１２での加算結果とバイアス値との加算値）とノイズ値との加算結果が、閾値（たとえば、０）より小さいとき（ステップＳ１３：ＹＥＳ）、比較回路１３は、出力値（ｎｅｗ＿ｘi）として１を出力する（ステップＳ１４）。
【００６６】
ローカルフィールド値ｈiとノイズ値との加算結果が、閾値以上のとき（ステップＳ１３：ＮＯ）、比較回路１３は、出力値（ｎｅｗ＿ｘi）として０を出力する（ステップＳ１５）。
【００６７】
ステップＳ１４，Ｓ１５の処理後、ｎｅｗ＿ｘiが、ニューロンＩＤ＝ｉのニューロンの元の出力値ｘiと異なるとき（ステップＳ１６：ＮＯ）、更新回路１４は、ｎビットの出力値のうち、ｉ番目のビットを更新した更新出力値を出力する（ステップＳ１７）。その後、ステップＳ１０からの処理が繰り返される。
【００６８】
ｎｅｗ＿ｘiが、出力値ｘiと同じとき（ステップＳ１６：ＹＥＳ）、制御装置３は、出力値ｘ1〜ｘn（ニューロン状態）が、一定期間変化していないか否かを判定する（ステップＳ１８）。出力値ｘ1〜ｘnが、一定期間変化していないとき（ステップＳ１８：ＹＥＳ）、制御装置３は、シミュレーテッド・アニーリングを終了する。
【００６９】
出力値ｘ1〜ｘnが、一定期間内で変化しているとき（ステップＳ１８：ＮＯ）、ステップＳ１０からの処理が繰り返される。
更新を許容するニューロンの選択が行われるたびに、ノイズ発生回路１７が、制御装置３の制御のもと、ノイズ幅を徐々に小さくしていくことで、シミュレーテッド・アニーリングが行われる。
【００７０】
ノイズ発生回路１７は、たとえば、比較回路１３の出力値が１となる確率が、シグモイド関数に従うようなノイズ値を発生する。たとえば、ノイズ発生回路１７は、ニューロンＩＤ＝ｉのニューロンの出力値ｘiが１となる確率Ｐi（ｈi）が、以下の式（４）の関係になるようなノイズ値を生成する。
【００７１】
【数４】
0006623947.tif 000005
【００７２】
式（４）において、Ｔは、実効温度である。
なお、式（４）に示すような確率Ｐi（ｈi）を得るために生成されるノイズ値ｎｓの確率密度関数ｐ（ｎｓ）は、以下の式（５）のようになる。
【００７３】
【数５】
0006623947.tif 000006
【００７４】
図９は、シミュレーテッド・アニーリングの様子を示す図である。
縦軸はエネルギーＥであり、横軸は全ニューロンの出力値の組み合わせｑKを示している。組み合わせｑKは、“０００…０”から“１１１…１”まである。図９では、ノイズ幅がＷ１、Ｗ２、Ｗ３と小さくなっていくときの、解の収束の様子が示されている。ノイズ幅を小さくしていくことは、式（５）の実効温度Ｔを小さくしていくことに相当する。
【００７５】
ノイズ幅がＷ１のとき、解が、局所解（エネルギーが局所的な極小値となる解）ｑk1，ｑk2，ｑk4，ｑk5となっても、エネルギーが高くなる方向に変化でき、局所解から脱出できる。ノイズ幅が、Ｗ２、Ｗ３と徐々に小さくなるにつれて、解の変化は制限されていき、最終的に、最適解（エネルギーが最小値となる解）ｑk3に収束する。
【００７６】
以上のような第１の実施の形態の情報処理装置１及びイジング装置２では、２〜ｄ個のニューロンによる２体結合〜ｄ体結合のそれぞれにより発生するエネルギー（ローカルフィールド値ｈi2〜ｈid）が演算回路１１ａ１〜１１ａ（ｄ−１）によって算出される。そして、ローカルフィールド値ｈi2〜ｈidの加算結果に基づく値と閾値との比較結果に基づき各ニューロンの出力値が決定される。
【００７７】
これにより、補助的なビットなどを設けずとも、高次のエネルギー関数の最適化問題を、イジング装置２にマッピングできる。このため、補助的なビットを設けることで生じる可能性のあった、シミュレーテッド・アニーリングでの最適解への収束速度の悪化や、使用できるビット数の減少を招くことを抑制できる。
【００７８】
また、高次のエネルギー関数を用いた最適化問題を、複数の２次のエネルギー関数を用いた最適化問題に変換するなどの処理が不要であるため、最適化問題を容易にイジング装置２にマッピングできる。
【００７９】
なお、高次のエネルギー関数を用いた最適化問題には、ＮＰ（Non-deterministic Polynomial）完全問題などがある。
（重み値の抽出及び重み値の書き込み処理の例）
以下、図７に示したステップＳ１，Ｓ２の処理の一例を説明する。
【００８０】
図１０は、２体結合の重み値の例を示す図である。
図１０では、ニューロン数が４のときの２体結合の複数の重み値を含む重み値群６０ａが示されている。たとえば、Ｗ21は、ニューロンＩＤ＝２のニューロンと、ニューロンＩＤ＝１のニューロンによる２体結合の重み値である。
【００８１】
ボルツマンマシンにおいては、Ｗii＝０、Ｗij＝Ｗji（ｉ，ｊは１以上ｎ以下の自然数）という条件がある。このため、Ｗ21＝Ｗ12、Ｗ31＝Ｗ13、Ｗ41＝Ｗ14、Ｗ42＝Ｗ24、Ｗ43＝Ｗ34であり、図１０中の重み値群６０ｂ内の重み値であるＷ11，Ｗ22，Ｗ33，Ｗ44は０である。
【００８２】
したがって、重み値Ｗ11，Ｗ22，Ｗ33，Ｗ44は、用いなくてよい。一方、Ｗ21とＷ12のような対象関係にある重み値は、図５に示したように、２体結合で発生するローカルフィールド値ｈi2を算出する際には両方用いられる。
【００８３】
図１１は、３体結合の重み値の例を示す図である。
図１１では、ニューロン数が４であり、ニューロンＩＤ＝２のニューロンを含む３つのニューロンによる３体結合の重み値を含む重み値群６１ａが示されている。たとえば、Ｗ231は、ニューロンＩＤ＝２のニューロンと、ニューロンＩＤ＝３のニューロンと、ニューロンＩＤ＝１のニューロンによる３体結合の重み値である。
【００８４】
ボルツマンマシンの上記２条件を３体結合の重み値にも拡張すると、Ｗijk＝０（ｉ＝ｊ、ｉ＝ｋ、ｊ＝ｋまたはｉ＝ｊ＝ｋの場合）、Ｗijk＝Ｗikj＝Ｗjik＝Ｗjki＝Ｗkij＝Ｗkji（ｉ，ｊ，ｋは１以上ｎ以下の自然数）となる。
【００８５】
このため、Ｗ221＝Ｗ212、Ｗ231＝Ｗ213、Ｗ241＝Ｗ214、Ｗ242＝Ｗ224、Ｗ243＝Ｗ234であり、図１１中の重み値群６１ｂ，６１ｃ，６１ｄ内の重み値は０である。
上記の点を鑑みて、本実施の形態のイジング装置２，２ａが、ニューロンＩＤ＝２のニューロンを含む３体結合で発生するローカルフィールド値ｈ23を算出する際に用いる重み値の数は、図１１の三角形領域６１ｅ内の重み値の数（図１１の例では６個）とする。
【００８６】
図１２は、ニューロン数がｎ個のときの３体結合の重み値の例を示す図である。
図１２では、３体結合の重み値Ｗijk（ｉ，ｊ，ｋは１以上ｎ以下の自然数）を含む重み値群６５ａ１，６５ａ２，…，６５ａｎが示されている。
【００８７】
重み値群６５ａ１は、ｉ＝１の重み値Ｗ1jkを含み、重み値群６５ａ２は、ｉ＝２の重み値Ｗ2jkを含み、重み値群６５ａｎは、ｉ＝ｎの重み値Ｗnjkを含む。
重み値群６５ａ１〜６５ａｎのそれぞれにおいて、本実施の形態のイジング装置２，２ａがローカルフィールド値ｈi3を算出する際に用いる重み値は、三角形領域６５ｂ１，６５ｂ２，…，６５ｂｎに含まれるものに制限される。すなわち、図１２に示すようなマトリクス状に配置されている重み値のうち、対角線部分の複数の重み値（たとえば、重み値群６５ａ１のＷ111，Ｗ122，…，Ｗ1nn）及びその下に位置する複数の重み値については用いられない。
【００８８】
三角形領域６５ｂ１〜６５ｂｎに含まれる重み値の数Ｎｗは、式（６）で表せる。
【００８９】
【数６】
0006623947.tif 000007
【００９０】
Ｎｗは、重み値群６５ａ１〜６５ａｎのそれぞれに含まれる重み値の個数（ｎ×ｎ）から上記対角線部分の重み値の個数（ｎ）を引いた値を、１／２した値である。つまり、ローカルフィールド値ｈi3を算出する際に用いる重み値の数は、ｉごとにＮｗ個となる。
【００９１】
図１３は、ニューロン数がｎ個のときの４体結合の重み値の例を示す図である。
図１３では、４体結合の重み値Ｗijkl（ｉ，ｊ，ｋ，ｌは１以上ｎ以下の自然数）を含む重み値群６６ａ１，６６ａ２，…，６６ａｎ，６７ａ１，…，６７ａｎが示されている。
【００９２】
重み値群６６ａ１は、ｉ＝１，ｊ＝１の重み値Ｗ11klを含み、重み値群６６ａ２は、ｉ＝１，ｊ＝２の重み値Ｗ12klを含み、重み値群６６ａｎは、ｉ＝１，ｊ＝ｎの重み値Ｗ1nklを含む。重み値群６７ａ１〜６７ａｎは、ｉ＝２、ｊ＝１〜ｎの重み値Ｗ21kl〜Ｗ2nklを含む。
【００９３】
重み値群６６ａ１〜６６ａｎ，６７ａ１〜６７ａｎのそれぞれにおいて、イジング装置２がローカルフィールド値ｈi4を算出する際に用いる重み値は、三角形領域６６ｂ１，６６ｂ２，…，６６ｂｎ，６７ｂ１，…，６７ｂｎに含まれるものに制限される。三角形領域６６ｂ１〜６６ｂｎ，６７ｂ１〜６７ｂｎに含まれる重み値の数Ｎｗは、上記の式（６）で表せる。
【００９４】
つまり、４体結合で発生するローカルフィールド値ｈi4を算出する際に用いる重み値の数は、ｉごとにｎ×Ｎｗ個となる。
上記の観点から、ｄ≧３の場合、ｉごとのｄ体結合の重み値の数は、以下の式（７）で表せる。
【００９５】
【数７】
0006623947.tif 000008
【００９６】
制御装置３は、上記の内容に基づいて、たとえば、以下のような処理の流れで、演算回路１１ａ１〜１１ａ（ｄ−１）内のレジスタに書き込む重み値のリストを作成する。
図１４は、重み値リストの作成処理の一例の流れを示すフローチャートである。
【００９７】
なお、以下ではメモリ４に、たとえば、図１０〜図１３に示したような複数の重み値が予め記憶されているものとする。
まず、制御装置３は、変数ｃｕｒｒ＿ｄを２とする（ステップＳ２０）。そして、制御装置３は、変数ｃｕｒｒ＿ｄが２であるか否かを判定する（ステップＳ２１）。
【００９８】
変数ｃｕｒｒ＿ｄが２であるときには（ステップＳ２１：ＹＥＳ）、制御装置３は、重み値リストのサイズＳを、ニューロン数と同じｎと決定する（ステップＳ２２）。なお、値が０となる重み値Ｗiiを用いない場合には、サイズＳ＝ｎ−１であってもよい。
【００９９】
ステップＳ２２の処理後、制御装置３は、２体結合用のサイズＳの重み値リストを生成する（ステップＳ２３）。サイズＳの重み値リストは、ｎ個生成される。生成された重み値リストは、たとえば、メモリ４に記憶される。
【０１００】
そして、制御装置３は、ｎ個の重み値リストのうち、ｉ番目の重み値リストに、ニューロンＩＤ＝ｉのニューロンを含む２つのニューロンによる２体結合の重み値を、メモリ４に記憶されている２体結合の重み値群から抽出してコピーする（ステップＳ２４）。制御装置３は、このような処理をｉごとに行う。
【０１０１】
たとえば、ｎ＝４の場合、制御装置３は、図１０に示したような重み値群６０ａから、ニューロンＩＤ＝１のニューロンを含む２つのニューロンによる２体結合の重み値Ｗ12，Ｗ13，Ｗ14を、１番目の重み値リストにコピーする。また、制御装置３は、重み値群６０ａから、ニューロンＩＤ＝２のニューロンを含む２つのニューロンによる２体結合の重み値Ｗ21，Ｗ23，Ｗ24を、２番目の重み値リストにコピーする。また、制御装置３は、重み値群６０ａから、ニューロンＩＤ＝３のニューロンを含む２つのニューロンによる２体結合の重み値Ｗ31，Ｗ32，Ｗ34を、３番目の重み値リストにコピーする。さらに、制御装置３は、重み値群６０ａから、ニューロンＩＤ＝４のニューロンを含む２つのニューロンによる２体結合の重み値Ｗ41，Ｗ42，Ｗ43を、４番目の重み値リストにコピーする。
【０１０２】
一方、変数ｃｕｒｒ＿ｄが２ではないときには（ステップＳ２１：ＮＯ）、制御装置３は、式（７）に基づき、重み値リストのサイズＳを算出する（ステップＳ２５）。
ステップＳ２５の処理後、制御装置３は、ｃｕｒｒ＿ｄ体結合用のサイズＳの重み値リストを生成する（ステップＳ２６）。ｃｕｒｒ＿ｄ体結合用のサイズＳの重み値リストも、ｎ個生成される。生成された重み値リストは、たとえば、メモリ４に記憶される。
【０１０３】
そして、制御装置３は、ｉ番目の重み値リストに、ニューロンＩＤ＝ｉのニューロンを含むｃｕｒｒ＿ｄ個のニューロンによるｃｕｒｒ＿ｄ体結合の重み値を、ｃｕｒｒ＿ｄ体結合の重み値群から抽出してコピーする（ステップＳ２７）。このとき、制御装置３は、コピーする重み値を、ｃｕｒｒ＿ｄ体結合の重み値群のうち、たとえば、図１３に示したような三角形領域６６ｂ１〜６６ｂｎに含まれる複数の重み値に限定する。制御装置３は、このような処理をｉごとに行う。
【０１０４】
図１５は、重み値リストの例を示す図である。
図１５には、ｃｕｒｒ＿ｄ＝４のときに生成されるｉ＝１番目の重み値リスト７０の例が示されている。重み値リスト７０にコピーされた重み値Ｗ1121〜Ｗ1nn(n-1)のうち、重み値Ｗ1121〜Ｗ11n(n-1)は、図１３に示した三角形領域６６ｂ１に含まれるものでありＮｗ個ある。その他の重み値は、図１３に示した三角形領域６６ｂ２〜６６ｂｎに含まれるものである。したがって、重み値リスト７０に含まれる重み値の個数は、ｎ×Ｎｗ個である。
【０１０５】
図１４のステップＳ２４，Ｓ２７の処理後、制御装置３は、変数ｃｕｒｒ＿ｄをインクリメントし（ステップＳ２８）、ｃｕｒｒ＿ｄ≦ｄであるか否かを判定する（ステップＳ２９）。
【０１０６】
ｃｕｒｒ＿ｄ≦ｄであるときには（ステップＳ２９：ＹＥＳ）、制御装置３は、ステップＳ２１からの処理を繰り返す。ｃｕｒｒ＿ｄ≦ｄではないときには（ステップＳ２９：ＮＯ）、制御装置３は、重み値リストの作成処理を終了する。
【０１０７】
なお、上記の説明では、制御装置３が重み値リストを生成するものとしたが、これに限定されない。重み値リストは、情報処理装置１とは別の装置からネットワーク経由で情報処理装置１に送信され、メモリ４に記憶されてもよい。別の装置は、ユーザによって操作されるクライアントコンピュータなどのクライアント装置でもよいし、サーバコンピュータなどのサーバ装置でもよい。
【０１０８】
制御装置３は、上記のような重み値リストに含まれる重み値を、たとえば、図１に示した演算回路１１ａ１〜１１ａ（ｄ−１）内のレジスタに書き込む。
たとえば、図２に示した演算回路１１ａ（ｄ−１）のレジスタ３０ａ１〜３０ａｎには、ｃｕｒｒ＿ｄ＝ｄ（ｄ≧３）のときに生成されたｉ＝１番目からｉ＝ｎ番目の重み値リストの重み値が書き込まれる。たとえば、レジスタ３０ａ１には、ｉ＝１番目の重み値リストの重み値が書き込まれ、レジスタ３０ａｎには、ｉ＝ｎ番目の重み値リストの重み値が書き込まれる。そのため、レジスタ３０ａ１〜３０ａｎのそれぞれに書き込まれる重み値の数は、前述の式（７）で表される数となる。
【０１０９】
上記のように複数の重み値の対称性などに基づいて、レジスタ３０ａ１〜３０ａｎのそれぞれに書き込まれる重み値の数が、式（７）で示される数に制限されるため、レジスタ３０ａ１〜３０ａｎのサイズが増加することを抑制できる。また、用いられる重み値の数が制限されるため、その重み値を用いてローカルフィールド値を算出する乗算部３２の乗算回路３２ａ１〜３２ａｍの数ｍ、加算部３３の加算回路３３ａ１〜３３ａｐの数ｐについても増加を抑制できる。
【０１１０】
乗算回路３２ａ１〜３２ａｍの数ｍについては、以下の式（８）のようになる。
【０１１１】
【数８】
0006623947.tif 000009
【０１１２】
また、加算回路３３ａ１〜３３ａｐの数ｐについては、以下の式（９）のようになる。
【０１１３】
【数９】
0006623947.tif 000010
【０１１４】
（第２の実施の形態）
図１６は、第２の実施の形態の情報処理装置の一例を示す図である。図１６において、図１に示した要素と同じ要素については同一符号が付されている。
【０１１５】
第２の実施の形態の情報処理装置８０におけるイジング装置８１は、回路部８１ａ１，８１ａ２，８１ａ３，８１ａ４、更新制御回路８１ｂを有している。
回路部８１ａ１〜８１ａ４のそれぞれは、１つのニューロンに相当する。回路部８１ａ１〜８１ａ４としては、たとえば、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づいて処理を行う回路を用いることができる。なお、図１６の例では、回路部８１ａ１〜８１ａ４の数は、ニューロン数ｎが４であるものとして４つとしているが、扱うニューロン数ｎに応じて増減できる。
【０１１６】
回路部８１ａ１〜８１ａ４のそれぞれは、２〜ｄ体結合の重み値と、４個のニューロンの４ビットの出力値ｘ1，ｘ2，ｘ3，ｘ4に基づき、前述したローカルフィールド値ｈi（１≦ｉ≦４）を算出する。そして、回路部８１ａ１〜８１ａ４のそれぞれは、ローカルフィールド値ｈiにノイズ値を加算した値と閾値（たとえば、０）との比較結果に基づき、出力値ｘ1〜ｘ4として０または１を出力する。
【０１１７】
回路部８１ａ１〜８１ａ４は、ローカルフィールド値ｈiを算出する際にＤｅＧｌｏｒｉａアルゴリズムに基づいて以下のような処理を行う。
全ニューロンのうち、一度に状態が更新されるニューロンの数を１つとすると、そのニューロンの接続先では、元のローカルフィールド値ｈiに対して、その更新による変化分を加算または減算すればよい。
【０１１８】
まず、回路部８１ａ１〜８１ａ４は、２〜ｄ体結合の重み値と、出力値ｘ1〜ｘ4と、信号ｕｄｎに基づき、２〜ｄ体結合のそれぞれによって発生するエネルギーを示すｄ−１個のローカルフィールド値の変化分を算出する。信号ｕｄｎは、出力値が更新されたニューロンのニューロンＩＤを示す。さらに、回路部８１ａ１〜８１ａ４は、ｄ−１個のローカルフィールド値の変化分を加算した加算値を求める。そして、回路部８１ａ１〜８１ａ４は、その加算値を何れかのニューロンの更新後の出力値である信号ｕｄｓに基づき正負を反転させた値を、更新前のその値の積算値に加算して積算値を更新する。この更新された積算値が、ローカルフィールド値ｈiに相当する。また、回路部８１ａ１〜８１ａ４は、比較結果（出力値）を保持する機能と、保持された前回の出力値と、今回の出力値とが異なる場合に、１となる信号ｕｄ１〜ｕｄ４を出力する機能を有する。
【０１１９】
更新制御回路８１ｂは、制御装置３の制御のもと動作する。更新制御回路８１ｂは、回路部８１ａ１〜８１ａ４から、出力値ｘ1〜ｘ4と、信号ｕｄ１〜ｕｄ４を受け、出力値が更新されたニューロンのニューロンＩＤを示す信号ｕｄｎと、更新後の出力値である信号ｕｄｓと、出力値ｘ1〜ｘ4とを出力する。
【０１２０】
図１７は、回路部の一例を示す図である。
図１７では、ｄ＝３としたときの回路部８１ａ１の一例の回路図が示されている。回路部８１ａ２〜８１ａ４についても同様の回路図となる。
【０１２１】
回路部８１ａ１は、演算回路８２，８３、加算回路８４、選択回路８５、乗算回路８６、加算回路８７、レジスタ８８、加算回路８９、比較回路９０、ＸＯＲ回路９１、レジスタ９２を有している。
【０１２２】
演算回路８２は、ニューロンＩＤ＝１のニューロンを含む２つのニューロンによる２体結合によって発生するローカルフィールド値の変化分Δｈ12を算出する。
たとえば、ニューロンＩＤ＝３のニューロンの出力値が更新されたときのΔｈ12は、以下の式（１０）のように表せる。
【０１２３】
【数１０】
0006623947.tif 000011
【０１２４】
式（１０）のように、２体結合によって発生するローカルフィールド値の変化分Δｈ12を求める際には、出力値ｘ1〜ｘ4が不要である。
演算回路８３は、ニューロンＩＤ＝１のニューロンを含む３つのニューロンによる３体結合によって発生するローカルフィールド値の変化分Δｈ13を算出する。
【０１２５】
たとえば、ニューロンＩＤ＝３のニューロンの出力値が更新されたときのΔｈ13は、以下の式（１１）のように表せる。
【０１２６】
【数１１】
0006623947.tif 000012
【０１２７】
式（１１）のように、３体結合によって発生するローカルフィールド値の変化分Δｈ13を求める際には、出力値ｘ1〜ｘ4のうち何れか２つが用いられる。
演算回路８２，８３は、たとえば、以下のような回路で実現できる。
【０１２８】
図１８は、２体結合によって発生するローカルフィールド値の変化分を算出する演算回路の一例を示す図である。
演算回路８２は、レジスタ８２ａ、選択回路８２ｂを有している。
【０１２９】
レジスタ８２ａには、ニューロンＩＤ＝１のニューロンを含む２つのニューロンによる２体結合の重み値Ｗ12，Ｗ13，Ｗ14が記憶されている。重み値Ｗ12〜Ｗ14は、前述した制御装置３の処理によってレジスタ８２ａに書き込まれる。
【０１３０】
選択回路８２ｂは、信号ｕｄｎに基づいて、重み値Ｗ12〜Ｗ14の１つを選択して、ローカルフィールド値の変化分Δｈ12として出力する。選択回路８２ｂは、たとえば、ニューロンＩＤ＝３のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、Δｈ12は式（１０）のように表せるため、選択回路８２ｂは、重み値Ｗ13を選択して出力する。また、選択回路８２ｂは、ニューロンＩＤ＝２のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、重み値Ｗ12を選択して出力し、ニューロンＩＤ＝４のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、重み値Ｗ14を選択して出力する。
【０１３１】
図１９は、３体結合によって発生するローカルフィールド値の変化分を算出する演算回路の一例を示す図である。
演算回路８３は、レジスタ８３ａ、選択回路８３ｂ，８３ｃ、２出力値選択回路８３ｄ、乗算回路８３ｅ，８３ｆ、加算回路８３ｇを有している。
【０１３２】
ｄ＝３、ｎ＝４であるときの、ニューロンＩＤ＝１のニューロンを含む３つのニューロンによる３体結合の重み値の数は、式（７）から、３つである。
レジスタ８３ａには、ニューロンＩＤ＝１のニューロンを含む３つのニューロンによる３体結合の重み値Ｗ123，Ｗ124，Ｗ134が記憶されている。重み値Ｗ123〜Ｗ134は、前述した制御装置３の処理によってレジスタ８３ａに書き込まれる。
【０１３３】
選択回路８３ｂは、信号ｕｄｎに基づいて、重み値Ｗ123〜Ｗ134の１つを選択して出力する。選択回路８３ｃは、信号ｕｄｎに基づいて、重み値Ｗ123〜Ｗ134の１つを選択して出力する。
【０１３４】
選択回路８３ｂ，８３ｃが、たとえば、ニューロンＩＤ＝３のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、Δｈ13は式（１１）のように表せる。そのため、選択回路８３ｂは重み値Ｗ123を選択して出力し、選択回路８３ｃは重み値Ｗ134を選択して出力する。また、選択回路８３ｂ，８３ｃは、ニューロンＩＤ＝２のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、選択回路８３ｂは重み値Ｗ123を選択して出力し、選択回路８３ｃは重み値Ｗ124を選択して出力する。また、選択回路８３ｂ，８３ｃは、ニューロンＩＤ＝４のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、選択回路８３ｂは重み値Ｗ124を選択して出力し、選択回路８３ｃは重み値Ｗ134を選択して出力する。
【０１３５】
２出力値選択回路８３ｄは、信号ｕｄｎに基づいて、出力値ｘ1〜ｘ4のうち２つを選択して出力する。
２出力値選択回路８３ｄが、たとえば、ニューロンＩＤ＝３のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、Δｈ13は式（１１）のように表せるため、２出力値選択回路８３ｄは、出力値ｘ2，ｘ4を選択して出力する。また、２出力値選択回路８３ｄが、たとえば、ニューロンＩＤ＝２のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、２出力値選択回路８３ｄは、出力値ｘ3，ｘ4を選択して出力する。また、２出力値選択回路８３ｄが、たとえば、ニューロンＩＤ＝４のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、２出力値選択回路８３ｄは、出力値ｘ2，ｘ3を選択して出力する。
【０１３６】
このような２出力値選択回路８３ｄは、たとえば、以下のような回路で実現できる。
図２０は、２出力値選択回路の一例を示す図である。
２出力値選択回路８３ｄは、レジスタ１００，１０１，１０２、選択回路１０３、レジスタ１０４を有している。
【０１３７】
レジスタ１００は、出力値ｘ2，ｘ3を保持し、２ビットの信号として出力する。レジスタ１０１は、出力値ｘ2，ｘ4を保持し、２ビットの信号として出力する。レジスタ１０２は、出力値ｘ3，ｘ4を保持し、２ビットの信号として出力する。
【０１３８】
選択回路１０３は、信号ｕｄｎに基づき、レジスタ１００〜１０２の何れかから出力される信号を選択し、出力する。
たとえば、選択回路１０３は、ニューロンＩＤ＝４のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、レジスタ１００から出力される２ビットの信号を選択して出力する。また、選択回路１０３は、ニューロンＩＤ＝３のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、レジスタ１０１から出力される２ビットの信号を選択して出力する。また、選択回路１０３は、ニューロンＩＤ＝２のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、レジスタ１０２から出力される２ビットの信号を選択して出力する。
【０１３９】
レジスタ１０４は、選択回路１０３から出力される２ビットの信号を保持し、各ビットの信号を並列に出力する。
なお、ニューロンＩＤ＝１のニューロンに相当する回路部８１ａ１内に含まれる演算回路８３では、出力値ｘ1は用いられないため、図２０では出力値ｘ1については図示が省略されている。
【０１４０】
図１９に示した乗算回路８３ｅは、選択回路８３ｂから出力される重み値と、２出力値選択回路８３ｄから出力される出力値ｘ2〜ｘ4の何れか１つとの積を出力する。たとえば、選択回路８３ｂと、２出力値選択回路８３ｄが、ニューロンＩＤ＝３のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、Δｈ13は式（１１）のように表せるため、乗算回路８３ｅは、重み値Ｗ123と出力値ｘ2との積を出力する。
【０１４１】
乗算回路８３ｆは、選択回路８３ｃから出力される重み値と、２出力値選択回路８３ｄから出力される出力値ｘ2〜ｘ4の何れか１つとの積を出力する。たとえば、選択回路８３ｃと、２出力値選択回路８３ｄが、ニューロンＩＤ＝３のニューロンの出力値が更新された旨を示す信号ｕｄｎを受けると、Δｈ13は式（１１）のように表せるため、乗算回路８３ｅは、重み値Ｗ134と出力値ｘ4との積を出力する。
【０１４２】
加算回路８３ｇは、乗算回路８３ｅ，８３ｆの出力値を加算し、Δｈ13として出力する。
以下、図１７の説明に戻る。
【０１４３】
演算回路８２，８３で算出された、Δｈ12とΔｈ13は、加算回路８４で足し合わされ、ローカルフィールド値ｈ1の変化分Δｈiとして出力される。
選択回路８５は、出力値が更新されたニューロンの更新後の出力値である信号ｕｄｓに基づき、１または−１を選択して出力する。更新後の出力値が０のときには、選択回路８５は、−１を選択して出力し、更新後の出力値が１のときには、選択回路８５は、１を選択して出力する。
【０１４４】
乗算回路８６は、加算回路８４から出力される変化分Δｈ1と、選択回路８５から出力される値との積を出力する。
加算回路８７は、乗算回路８６から出力される値と、レジスタ８８に記憶されている値（ローカルフィールド値ｈ1）とを加算して出力する。
【０１４５】
レジスタ８８は、図示しないクロック信号に同期して、加算回路８７から出力される値を取り込み、ローカルフィールド値ｈ1を更新する。レジスタ８８は、たとえば、フリップフロップである。なお、レジスタ８８の初期値はバイアス値ｂ1である。
【０１４６】
加算回路８９は、レジスタ８８から出力される値に、ノイズ発生回路１７から出力されるノイズ値を加算して出力する。
比較回路９０は、たとえば、加算回路８９から出力される値が、閾値以上のときには０を出力し、閾値より小さいときには１を出力する。
【０１４７】
なお、比較回路９０は、ランダム信号生成回路１０から出力される選択信号によって、有効または無効になる。イジング装置８１でアニール動作が行われる際、出力値の更新を許容するニューロンを１つにするために、このような比較回路９０が用いられる。たとえば、ランダム信号生成回路１０から出力される信号によって、回路部８１ａ１〜８１ａ４に含まれる複数の比較回路（回路部８１ａ１では比較回路９０）のうち、ランダムに１つが選択されて有効となり、他は無効になる。
【０１４８】
ＸＯＲ回路９１は、比較回路９０から出力される値と、レジスタ９２に記憶されている値とが、一致しているときは信号ｕｄ１として０を出力し、異なるときは信号ｕｄ１として１を出力する排他的論理和回路（Ｅｘｃｌｕｓｉｖｅ−ＯＲ回路）である。
【０１４９】
レジスタ９２は、信号ｕｄ１が１となると、比較回路９０から出力される値を取り込む。これにより、回路部８１ａ１の出力値ｘ1が更新される。
以上のような比較回路９０、ＸＯＲ回路９１、レジスタ９２によって、第１の実施の形態のイジング装置２の比較回路１３、更新回路１４と、保持回路１５と同様の機能が実現されている。
【０１５０】
（第２の実施の形態の情報処理装置の動作例）
以下、制御装置３によって制御される図１６の情報処理装置８０の動作の一例を、フローチャートを用いて説明する。
【０１５１】
第２の実施の形態の情報処理装置８０も、第１の実施の形態の情報処理装置１と同様に、図７に示したような各処理を行う。ただ、図７のステップＳ３のシミュレーテッド・アニーリングが、情報処理装置１で行われる図８に示したような処理とは異なっている。以下、第２の実施の形態の情報処理装置８０で行われるシミュレーテッド・アニーリングの例を説明する。
【０１５２】
図２１は、第２の実施の形態の情報処理装置におけるシミュレーテッド・アニーリングの一例の流れを示すフローチャートである。なお、以下ではｎ＝４、ｄ＝３、すなわち、ニューロン数が４で、且つ、２体結合と３体結合を扱うものとして説明を行う。
【０１５３】
まず、制御装置３の制御のもと、ランダム信号生成回路１０は、出力値の更新を許容するニューロン（ニューロンＩＤ＝ｉのニューロン）をランダムに選択するための選択信号を出力する（ステップＳ３０）。たとえば、選択信号が、ニューロンＩＤ＝１のニューロンを選択することを示すときには、回路部８１ａ１の選択回路９０が有効になり、回路部８１ａ１の出力値ｘ1の更新が許容される。このとき、回路部８１ａ２〜８１ａ４の出力値ｘ2〜ｘ4は更新されない。
【０１５４】
回路部８１ａ１〜８１ａ４は、２体結合によるローカルフィールド値ｈiの変化分Δｈi2と、３体結合によるローカルフィールド値ｈiの変化分Δｈi3とを算出する（ステップＳ３１）。たとえば、回路部８１ａ１では、演算回路８２がΔｈ12を算出し、演算回路８３がΔｈ13を算出する。
【０１５５】
次に、回路部８１ａ１〜８１ａ４は、Δｈi2とΔｈi3とを加算することで、Δｈiを算出する（ステップＳ３２）。たとえば、回路部８１ａ１では、加算回路８４がΔｈ12とΔｈ13とを加算して、Δｈ1を算出する。
【０１５６】
その後、回路部８１ａ１〜８１ａ４は、元のローカルフィールド値ｈiにΔｈiを加えることで、ローカルフィールド値ｈiを更新する（ステップＳ３３）。たとえば、回路部８１ａ１では、加算回路８７が、レジスタ８８に記憶されているローカルフィールド値ｈ1にΔｈ1を加算することで、ローカルフィールド値ｈ1を更新する。
【０１５７】
そして、回路部８１ａ１〜８１ａ４のうち、ニューロンＩＤ＝ｉのニューロンに対応するものは、ローカルフィールド値ｈiとノイズ値との加算結果が閾値より小さいとき（ステップＳ３４：ＹＥＳ）、ｎｅｗ＿ｘi＝１とする（ステップＳ３５）。
【０１５８】
ローカルフィールド値ｈiとノイズ値との加算結果が閾値以上のとき（ステップＳ３４：ＮＯ）、回路部８１ａ１〜８１ａ４のうち、出力値の更新が許容されたニューロンに対応するものは、ｎｅｗ＿ｘi＝０とする（ステップＳ３６）。
【０１５９】
たとえば、選択信号が、ニューロンＩＤ＝１のニューロンを選択することを示すときには、回路部８１ａ１の選択回路９０は、ローカルフィールド値ｈ1とノイズ値との加算結果が、閾値より小さいとき、ｎｅｗ＿ｘ1として１を出力する。また、選択回路９０は、ローカルフィールド値ｈ1とノイズ値との加算結果が閾値以上のとき、ｎｅｗ＿ｘ1として０を出力する。
【０１６０】
ステップＳ３５，Ｓ３６の処理後、ｎｅｗ＿ｘiがニューロンＩＤ＝ｉのニューロンの元の出力値ｘiと異なるとき（ステップＳ３７：ＮＯ）、回路部８１ａ１〜８１ａ４のうちｉ番目の回路部の出力値ｘiを更新した更新出力値が出力される（ステップＳ３８）。
【０１６１】
たとえば、選択信号が、ニューロンＩＤ＝１のニューロンを選択することを示すときには、回路部８１ａ１のＸＯＲ回路９１は、ｎｅｗ＿ｘ1がレジスタ９２に記憶されている元の出力値ｘ1と異なるときには、信号ｕｄ１を１とする。これにより、ｎｅｗ＿ｘ1がレジスタ９２に記憶され、新たな出力値ｘ1として出力される。
【０１６２】
その後、ステップＳ３０からの処理が繰り返される。
ｎｅｗ＿ｘiが、元の出力値ｘiと同じとき（ステップＳ３７：ＹＥＳ）、たとえば、制御装置３は、更新制御回路８１ｂを介して出力値ｘ1〜ｘ4を受け、出力値ｘ1〜ｘ4（ニューロン状態）、一定期間変化していないか否かを判定する（ステップＳ３９）。出力値ｘ1〜ｘ4が、一定期間変化していないとき（ステップＳ３９：ＹＥＳ）、制御装置３は、シミュレーテッド・アニーリングを終了する。
【０１６３】
出力値ｘ1〜ｘ4が、一定期間内で変化しているとき（ステップＳ３９：ＮＯ）、ステップＳ３０からの処理が繰り返される。
更新を許容するニューロンの選択が行われるたびに、ノイズ発生回路１７は、制御装置３の制御のもと、ノイズ幅を徐々に小さくしていくことで、シミュレーテッド・アニーリングが行われる。
【０１６４】
なお、上記では、ｎ＝４、ｄ＝３とした場合について説明したが、これらの値に限定されるものではない。たとえば、ｄ（≧４）体結合によって発生するローカルフィールド値の変化分Δｈ1dを求める際には、演算回路８２，８３に加えて、Δｈidを算出する演算回路が追加される。ニューロン数がｎ個とすると、Δｈidを算出する演算回路では、ｎ個のニューロンの出力値ｘ1〜ｘnのうちｄ−１個が用いられる。
【０１６５】
以上のような第２の実施の形態の情報処理装置８０及びイジング装置８１では、２〜ｄ個のニューロンによる２体結合〜ｄ体結合のそれぞれにより発生するローカルフィールド値の変化分が算出される。そして、その変化分の加算結果に基づく値で、ローカルフィールド値ｈiが更新され、更新されたローカルフィールド値ｈiとノイズ値との加算値と閾値との比較結果に基づき各ニューロンの出力値が決定される。
【０１６６】
これにより、補助的なビットなどを設けずとも、高次のエネルギー関数の最適化問題を、イジング装置８１にマッピングできる。このため、補助的なビットを設けることで生じる可能性のあった、シミュレーテッド・アニーリングでの最適解への収束速度の悪化や、使用できるビット数の減少を招くことを抑制できる。
【０１６７】
また、高次のエネルギー関数を用いた最適化問題を、複数の２次のエネルギー関数を用いた最適化問題に変換するなどの処理が不要であるため、最適化問題を容易にイジング装置８１にマッピングできる。
【０１６８】
さらに、第２の実施の形態のイジング装置８１では、ローカルフィールド値ｈiの変化分Δｈiを算出して、Δｈiでｈiを更新するため、第１の実施の形態のイジング装置２よりも、加算回路や乗算回路の数を少なくすることができる。
【０１６９】
以上、実施の形態に基づき、本発明の情報処理装置、イジング装置及び情報処理装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１７０】
１  情報処理装置
２  イジング装置
３  制御装置
４  メモリ
１０  ランダム信号生成回路
１１ａ１〜１１ａ（ｄ−１）  演算回路
１２  加算回路
１３  比較回路
１４  更新回路
１５  保持回路
１６  バイアス値保持回路
１７  ノイズ発生回路
２０〜２３  ニューロン
ｃｌｋ  クロック信号
ｈi2〜ｈid  ローカルフィールド値
ｉ  ニューロンＩＤ
ｘ1〜ｘn  出力値
Ｗij，Ｗik，Ｗjk，Ｗijk，Ｗjjkl  重み値
【図１】
0006623947.tif 000013
【図２】
0006623947.tif 000014
【図３】
0006623947.tif 000015
【図４】
0006623947.tif 000016
【図５】
0006623947.tif 000017
【図６】
0006623947.tif 000018
【図７】
0006623947.tif 000019
【図８】
0006623947.tif 000020
【図９】
0006623947.tif 000021
【図１０】
0006623947.tif 000022
【図１１】
0006623947.tif 000023
【図１２】
0006623947.tif 000024
【図１３】
0006623947.tif 000025
【図１４】
0006623947.tif 000026
【図１５】
0006623947.tif 000027
【図１６】
0006623947.tif 000028
【図１７】
0006623947.tif 000029
【図１８】
0006623947.tif 000030
【図１９】
0006623947.tif 000031
【図２０】
0006623947.tif 000032
【図２１】
0006623947.tif 000033