(57)【要約】【課題】大規模演算を可能とする。【解決手段】共通のバス４に接続されたイジング装置２ａ１〜２ａｍのそれぞれは、複数のニューロン回路１０ａ１〜１０ａｎと、メモリ１１と、ルータ１２とを有する。メモリ１１は、ニューロン回路１０ａ１〜１０ａｎの複数の接続先ニューロン回路のそれぞれを識別するアドレス情報と、複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別するアドレス情報とが対応付けられた接続先情報を、ニューロン回路１０ａ１〜１０ａｎのそれぞれに対応して記憶する。ルータ１２は、ある接続先ニューロン回路の出力信号の変化時に、バス４を介してその接続先ニューロン回路のアドレス情報を受信した場合、そのアドレス情報と、予め指定される第１のイジング装置のアドレス情報と上記接続先情報とに基づき、その出力信号の変化後の値に基づく更新信号をニューロン回路１０ａ１〜１０ａｎの何れかに供給する。【選択図】図１
2018010474.tif 000002
【特許請求の範囲】
【請求項１】
共通のバスに接続された複数のイジング装置と、
前記複数のイジング装置のそれぞれに設けられ、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第１の値を更新する複数のニューロン回路と、
前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のそれぞれを識別する第１のアドレス情報と、前記複数のイジング装置のうち前記複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別する第２のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、
前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のうち、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、前記バスを介して前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報を受信した場合、受信した前記第１のアドレス情報と、予め指定される前記第１のイジング装置を識別する前記第２のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第１の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、
前記第１の出力信号の変化を許容する前記第１の接続先ニューロン回路を含む前記第１のイジング装置を識別する前記第２のアドレス情報を指定する制御装置と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第１のイジング装置に含まれるルータは、前記第１の接続先ニューロン回路の前記第１の出力信号の変化時に、前記第１の出力信号の変化後の値と、前記第１の接続先ニューロン回路を識別する第１のアドレス情報とを、前記バスに供給することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数のイジング装置はさらに、前記制御装置によって指定される同一の前記第２のアドレス情報を記憶する記憶部を有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記複数のイジング装置のうち、第２のイジング装置に設けられるメモリに記憶された前記接続先情報において、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１のアドレス情報は、前記第２のイジング装置の内部で用いられる識別情報と対応付けられることを特徴とする請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
前記複数のイジング装置のうち、第３のイジング装置に設けられる複数のニューロン回路に対する複数の接続先ニューロン回路は、前記第３のイジング装置に設けられる複数のニューロン回路のうちの何れかである複数の第２の接続先ニューロン回路と、前記複数のイジング装置のうち、１または複数の第４のイジング装置に設けられる複数の第３の接続先ニューロン回路とを含み、
前記複数の第２の接続先ニューロン回路の数よりも、前記複数の第３の接続先ニューロン回路の数が少ない、
ことを特徴とする請求項１乃至４の何れか一項に記載の情報処理装置。
【請求項６】
複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第１の値を更新する複数のニューロン回路と、
前記複数の接続先ニューロン回路のそれぞれを識別する第１のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別する第２のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、
前記複数の接続先ニューロン回路のうち、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、前記バスを介して前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報を受信した場合、受信した前記第１のアドレス情報と、予め指定される前記第１のイジング装置を識別する前記第２のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第１の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、
を有することを特徴とするイジング装置。
【請求項７】
複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第１の値を更新する複数のニューロン回路と、
前記複数の接続先ニューロン回路のそれぞれを識別する第１のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別する第２のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、
前記複数の接続先ニューロン回路のうち、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、前記バスを介して前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報を受信した場合、受信した前記第１のアドレス情報と、予め指定される前記第１のイジング装置を識別する前記第２のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第１の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、
をそれぞれが有する前記複数のイジング装置に対して、
制御装置が、前記第１の出力信号の変化を許容する前記第１の接続先ニューロン回路を含む前記第１のイジング装置を識別する前記第２のアドレス情報を指定する、
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、イジング装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いたイジング装置（ボルツマンマシンと呼ばれる場合もある）がある。イジング装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
イジング装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジング装置に含まれる複数のユニット（ビット）のそれぞれが、他のビットの状態と、他のビットと自身のビットとの結合の強さを示す重み値（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。イジング装置は、たとえば、シミュレーテッド・アニーリングにより、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の最小値が得られる各ビットの状態の組み合わせを、解として求める。
【０００４】
また、大規模な演算を行うために、複数のチップや複数のプロセッサを組み合わせてニューラルネットワークを構築する技術が知られている。この技術として、ニューロンに相当する仮想プロセッサ、シナプスの結合に相当する仮想プロセッサなど複数種類の仮想プロセッサを、複数の実プロセッサに割り当ててニューラルネットを構築する手法がある。また、複数のチップをアレイ状に配置し、配置場所によってニューロンの接続可能数が変わるため、アレイ周辺部とアレイ内部とで異なる回路構成のチップを用いることが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２５０１０２号公報
【特許文献２】特開平５−２５０３４６号公報
【特許文献３】特開平２−３０６３６５号公報
【非特許文献】
【０００６】
【非特許文献１】C. R. Schneider and H. C. Card, “Analog CMOS Deterministic Boltzmann Circuits”, Journal of Solid-State Circuits, pp.907-914, 1993
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、複数のチップや複数のプロセッサを接続してニューラルネットワークを構築する従来の技術では、配線の複雑化を招く可能性がある。また、複数種類のプロセッサやチップを用意する手間や工数がかかる。このため、大規模な問題の演算を行うハードウェアを実現することが困難であるという問題があった。
【０００８】
１つの側面では、本発明は、変数が比較的多い大規模な問題の演算を可能とする情報処理装置、イジング装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、共通のバスに接続された複数のイジング装置と、前記複数のイジング装置のそれぞれに設けられ、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第１の値を更新する複数のニューロン回路と、前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のそれぞれを識別する第１のアドレス情報と、前記複数のイジング装置のうち前記複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別する第２のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のうち、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、前記バスを介して前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報を受信した場合、受信した前記第１のアドレス情報と、予め指定される前記第１のイジング装置を識別する前記第２のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第１の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、前記第１の出力信号の変化を許容する前記第１の接続先ニューロン回路を含む前記第１のイジング装置を識別する前記第２のアドレス情報を指定する制御装置と、を有する情報処理装置が提供される。
【００１０】
また、１つの態様では、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第１の値を更新する複数のニューロン回路と、前記複数の接続先ニューロン回路のそれぞれを識別する第１のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別する第２のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、前記複数の接続先ニューロン回路のうち、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、前記バスを介して前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報を受信した場合、受信した前記第１のアドレス情報と、予め指定される前記第１のイジング装置を識別する前記第２のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第１の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、を有するイジング装置が提供される。
【００１１】
また、１つの態様では、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第１の値を更新する複数のニューロン回路と、前記複数の接続先ニューロン回路のそれぞれを識別する第１のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち１つまたは複数を有する第１のイジング装置を識別する第２のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、前記複数の接続先ニューロン回路のうち、前記第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、前記バスを介して前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報を受信した場合、受信した前記第１のアドレス情報と、予め指定される前記第１のイジング装置を識別する前記第２のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第１の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、をそれぞれが有する前記複数のイジング装置に対して、制御装置が、前記第１の出力信号の変化を許容する前記第１の接続先ニューロン回路を含む前記第１のイジング装置を識別する前記第２のアドレス情報を指定する、情報処理装置の制御方法が提供される。
【発明の効果】
【００１２】
１つの側面では、変数が比較的多い大規模な問題の演算が可能となる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の情報処理装置の一例を示す図である。
【図２】本実施の形態の情報処理装置で実現されるニューラルネットワークのイメージ図である。
【図３】第２の実施の形態の情報処理装置の一例を示す図である。
【図４】ルータの一例を示す図である。
【図５】選択回路部及び接続先情報の一例を示す図である。
【図６】選択回路＆ＦＦ回路部の一部を示す図である。
【図７】情報処理装置の動作の一例を示すフローチャートである。
【図８】重み値の書き込み時の動作例を示すタイミングチャートである。
【図９】シミュレーテッド・アニーリングの様子を示す図である。
【図１０】第３の実施の形態の情報処理装置の一例を示す図である。
【図１１】ルータの一例を示す図である。
【図１２】選択回路部及び接続先情報の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の情報処理装置の一例を示す図である。
【００１５】
情報処理装置１は、複数（ｍ個）のイジング装置２ａ１〜２ａｍと、制御装置３を有している。
たとえば、イジング装置２ａ１〜２ａｍのそれぞれは、１つの半導体集積回路（チップ）で実現される。イジング装置２ａ１〜２ａｍは、共通のバス４に接続されている。図１の例では、バス４はデータバス４ａ、アドレスバス４ｂ、コントロールバス４ｃを含む。データバス４ａではデータが伝搬され、アドレスバス４ｂでは後述するニューロン回路を識別するアドレス情報が伝搬される。また、コントロールバス４ｃでは、イジング装置２ａ１〜２ａｍのうち、出力信号の変化が許容されたニューロン回路を含むイジング装置を識別するアドレス情報が伝搬される。
【００１６】
イジング装置２ａ１〜２ａｍのそれぞれは、以下のような要素を有している。図１には、イジング装置２ａｋに含まれる要素の例が示されている。
イジング装置２ａｋは、複数（ｎ個）のニューロン回路１０ａ１，１０ａ２，…，１０ａｉ，…，１０ａｎ、メモリ１１、ルータ１２、ノイズ発生回路１３、ランダム信号生成回路１４を有している。
【００１７】
ニューロン回路１０ａ１〜１０ａｎは、複数の接続先ニューロン回路の出力信号に、接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく値（以下、ローカルフィールド値という）を算出する。
【００１８】
そして、ニューロン回路１０ａ１〜１０ａｎは、ローカルフィールド値にノイズ値を加算した値と閾値（たとえば、０）との比較結果に基づき、０または１を出力する。さらに、ニューロン回路１０ａ１〜１０ａｎは、接続先ニューロン回路の出力信号の変化時に更新信号を受けると、その更新信号に基づいてローカルフィールド値を更新する。
【００１９】
たとえば、ニューロン回路１０ａ１〜１０ａｎは相互接続している。さらに、ニューロン回路１０ａ１〜１０ａｎの少なくとも１つは、イジング装置２ａ１〜２ａｍのうち、イジング装置２ａｋ以外のイジング装置に含まれる１または複数のニューロン回路とも接続している。
【００２０】
ニューロン回路１０ａ１〜１０ａｎのそれぞれには、このような接続先ニューロンとの接続の強さを示す重み値が記憶されている。重み値は、たとえば、ニューロン回路１０ａ１〜１０ａｎのそれぞれに含まれる記憶部（レジスタまたはメモリ）に記憶されている。
【００２１】
たとえば、ニューロン回路１０ａ１は、ニューロン回路１０ａ２〜１０ａｎの出力信号のほか、イジング装置２ａｋ外のイジング装置内の接続先ニューロン回路の出力信号を受け、各接続先ニューロン回路の出力信号の値と、対応する重み値との積の総和を求める。さらにニューロン回路１０ａ１は、この総和に後述するバイアス値を加えることでローカルフィールド値を算出する。さらに、ニューロン回路１０ａ１は、ローカルフィールド値にノイズ値を加えた値が、閾値（たとえば、０）よりも小さいときには、１を出力し、閾値よりも大きいときには、０を出力する。
【００２２】
このようなニューロン回路１０ａ１〜１０ａｎを用いることで、イジング型のエネルギー関数の演算をハードウェアで実現できる。なお、イジング型のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００２３】
【数１】
2018010474.tif 000003
【００２４】
右辺の１項目は、全ニューロン回路から選択可能な２つのニューロン回路の全組み合わせについて、漏れと重複なく、２つのニューロン回路の出力信号の値と重み値との積を積算したものである。なお、Ｗｉｊ＝Ｗｊｉ、Ｗｉｉ＝０である。
【００２５】
右辺の２項目は、全ニューロン回路のそれぞれのバイアス値と出力信号の値との積の総和を求めたものである。ｂｉは、ニューロン回路１０ａｉのバイアス値を示している。
このようなイジング型のエネルギー関数において、あるニューロン回路の出力信号を変化させたときのエネルギー値の変化は、そのニューロン回路と他のニューロン回路との間の重み値と、各ニューロン回路の出力値から決めることができる。
【００２６】
たとえば、ニューロン回路１０ａｉの出力信号が変化したときのエネルギーの変化は以下の式（２）で表せる。
【００２７】
【数２】
2018010474.tif 000004
【００２８】
式（２）において、ニューロン回路１０ａｉの出力信号の値（以下状態という）ｘｉが１のとき、２ｘｉ−１は１となり、状態ｘｉが０のとき、２ｘｉ−１は−１となる。また、式（２）において、ニューロン回路１０ａｉが関わる結合によって発生するエネルギーを示すローカルフィールド値ｈｉは、以下の式（３）のように表すことができる。
【００２９】
【数３】
2018010474.tif 000005
【００３０】
式（３）において、右辺の１項目は、ニューロン回路１０ａｉと、ニューロン回路１０ａｉの全接続先ニューロン回路のそれぞれとの間の接続の強さを示す複数の重み値と、接続先ニューロン回路のそれぞれの状態との積の総和を求めたものである。このような演算は、乗算回路や加算回路などを用いて実現できる。
【００３１】
式（２）、式（３）から、ローカルフィールド値ｈｉが負で、且つ、２ｘｉ−１が正のとき、または、ローカルフィールド値ｈｉが正で、且つ、２ｘｉ−１が負のとき、ΔＥｉが負となり、エネルギーが減少する。
【００３２】
ニューロン回路１０ａｉは、状態の変化がエネルギーを減少させる変化であるときに、更新後の状態を出力する。このような判定は、比較回路を用いて実現できる。更新が許容されるニューロン回路は全ニューロン回路からランダムに選択され、同様の処理が繰り返されることで、全体のエネルギーが減少していく。
【００３３】
しかし、単にエネルギーが減少する全ニューロン回路の状態の組み合わせによる解を求めるだけでは、解が最適解ではなく局所解に拘束されると抜け出すことができなくなる。そこで、熱ノイズに相当するノイズ値（乱数値）をローカルフィールド値に加えることで、ある程度エネルギーが高くなる解の変化も可能となり、解が局所解から脱出することが可能となる。ノイズ幅を徐々に小さくすることで、解が最適解へと収束していく。
【００３４】
なお、ニューロン回路１０ａ１〜１０ａｎとして、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づく回路を用いることもできる。ＤｅＧｌｏｒｉａアルゴリズムや、ニューロン回路１０ａ１〜１０ａｎの回路構成の例については後述する（図３、図１０参照）。
【００３５】
メモリ１１は、接続先情報１１ａ１，１１ａ２，…，１１ａｉ，…，１１ａｎを記憶する。接続先情報１１ａ１〜１１ａｎでは、複数の接続先ニューロン回路のそれぞれを識別するアドレス情報と、その複数の接続先ニューロン回路のうち１つまたは複数を有するイジング装置を識別するアドレス情報とが対応付けられている。接続先情報１１ａ１〜１１ａｎのそれぞれは、ニューロン回路１０ａ１〜１０ａｎのそれぞれに対応して記憶されている。
【００３６】
たとえば、接続先情報１１ａ１では、ニューロン回路１０ａ１に接続される接続先ニューロン回路のアドレス情報と、その接続先ニューロン回路を有するイジング装置のアドレス情報とが対応付けられている。
【００３７】
また、接続先情報１１ａ１〜１１ａｎには、イジング装置２ａｋ内で用いる複数の接続先ニューロン回路のそれぞれの識別情報（以下ニューロンインデックスと呼ぶ）が、複数の接続先ニューロン回路のそれぞれのアドレス情報に対応付けられていてもよい。
【００３８】
以下では、接続先ニューロン回路のアドレス情報を、内部アドレスと呼び、イジング装置のアドレス情報を、チップアドレスと呼ぶ。なお、内部アドレスは、接続先ニューロン回路を含むイジング装置内で、その接続先ニューロン回路を識別するためのアドレス情報である。内部アドレスやチップアドレスは、たとえば、制御装置３によって、予め図示しないレジスタ（またはメモリ１１）に記憶される。
【００３９】
なお、メモリ１１としては、たとえば、フラッシュメモリなどの半導体記憶装置を使用することができる。
ルータ１２は、複数の接続先ニューロン回路のうち、自身以外（イジング装置２ａｋ以外）のイジング装置に含まれる１つの接続先ニューロン回路の状態の変化時に、アドレスバス４ｂを介してその接続先ニューロン回路の内部アドレスを受信する。また、ルータ１２は、データバス４ａを介してその接続先ニューロン回路の状態を受信する。
【００４０】
そして、ルータ１２は、受信した内部アドレスと、その接続先ニューロン回路を含むイジング装置のチップアドレスと接続先情報１１ａ１〜１１ａｎとに基づき、変化後の状態に基づく更新信号をニューロン回路１０ａ１〜１０ａｎの何れかに供給する。たとえば、更新信号は、変化後の状態や、ニューロン回路１０ａ１〜１０ａｎにおいて、重み値を選択するために用いられるニューロンインデックス（ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づく回路を用いる場合）などである。
【００４１】
なお、状態の更新を許容する接続先ニューロン回路を含むイジング装置のチップアドレスは、制御装置３で予め指定され、コントロールバス４ｃを介してルータ１２に供給される。そして、そのチップアドレスは、たとえば、ルータ１２内の記憶部（図１の例ではモードレジスタ１２ａ）に記憶される。
【００４２】
たとえば、ルータ１２は、チップアドレスと内部アドレスを、接続先情報１１ａ１〜１１ａｎに含まれるチップアドレス及び内部アドレスと比較する。ルータ１２は、各アドレスが、たとえば、ニューロン回路１０ａ１に対応した接続先情報１１ａ１に含まれているときには、接続先ニューロン回路の変化後（更新後）の状態を更新信号として、ニューロン回路１０ａ１に供給する。
【００４３】
また、ルータ１２は、ニューロン回路１０ａ１〜１０ａｎの何れかの状態が変化したときには、変化後の状態と、状態が変化したニューロン回路のアドレス（内部アドレス）を出力する。出力された内部アドレスと状態は、アドレスバス４ｂとデータバス４ａにより他のイジング装置に伝搬される。
【００４４】
また、ルータ１２は、ニューロン回路１０ａ１〜１０ａｎのうち、状態が変化したニューロン回路の変化後の状態やニューロンインデックスを、その他のニューロン回路に供給する。
【００４５】
上記のような動作を行うルータ１２は、たとえば、比較回路や選択回路などで実現できる。
ノイズ発生回路１３は、制御装置３の制御のもと、シミュレーテッド・アニーリングを行うためにノイズ値を出力する。また、ノイズ発生回路１３は、たとえば、増幅回路を有している。制御装置３が増幅回路の増幅率を変化させることで、ノイズ値の振幅（ノイズ幅）が制御可能である。なお、ノイズ発生回路１３として、たとえば、ＬＦＳＲ（Linear Feedback Shift Registers）などを用いることができる。
【００４６】
ランダム信号生成回路１４は、ｎ個のニューロン回路１０ａ１〜１０ａｎのうち、状態の更新を許容するニューロン回路を１つランダムに選択するための乱数値を、複数回出力する。一度に１つのニューロン回路の状態の更新を許容することで、計算の収束性が悪化することが抑制される。なお、ランダム信号生成回路１４も、ノイズ発生回路１３と同様に、たとえば、ＬＦＳＲを用いて実現可能である。
【００４７】
制御装置３は、イジング装置２ａ１〜２ａｍのうち、状態の更新を許容するニューロン回路を含むイジング装置のチップアドレスを指定する。制御装置３は、たとえば、イジング装置２ａ１〜２ａｍをランダムに１つ選択し、そのチップアドレスをコントロールバス４ｃに供給する。チップアドレスは、コントロールバス４ｃで伝搬され、イジング装置２ａ１〜２ａｍによって取り込まれる。
【００４８】
また、制御装置３は、シミュレーテッド・アニーリングを実行するため、ノイズ発生回路１３を制御して、ノイズ発生回路１３が出力するノイズ値のノイズ幅を、徐々に小さくしていく。
【００４９】
また、制御装置３は、計算対象の問題に応じた重み値やバイアス値を、イジング装置２ａ１〜２ａｍの各ニューロン回路に設定する。重み値やバイアス値は、たとえば、各ニューロン回路内にあるメモリやレジスタに書き込まれる。
【００５０】
上記のような動作を行う制御装置３は、たとえば、プロセッサで実現できる。プロセッサは、たとえば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサは、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。また、制御装置３は、ＰＣ（パーソナルコンピュータ）であってもよい。
【００５１】
なお、制御装置３がプロセッサの場合、プロセッサが実行するＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及びデータを記憶する不揮発性の記憶装置を設けてもよい。なお、不揮発性の記憶装置としては、たとえば、フラッシュメモリやＳＳＤ（Solid State Drive）、ＨＤＤ（Hard Disk Drive）などが用いられる。
【００５２】
（情報処理装置１の動作例）
以下、制御装置３によって制御される情報処理装置１の動作の一例を説明する。
制御装置３は、イジング装置２ａ１〜２ａｍに含まれる全ニューロン回路に対して、計算対象の問題に応じて、重み値とバイアス値の設定を行う。たとえば、イジング装置２ａ１〜２ａｍのそれぞれの内部では、ｎ個のニューロン回路（たとえば、ニューロン回路１０ａ１〜１０ａｎ）が相互接続可能なように、重み値が設定される。
【００５３】
しかし、イジング装置２ａ１〜２ａｍに含まれる全ニューロン回路が相互接続するように重み値が設定されていなくてもよい。問題のマッピング時（重み値の設定＝プログラミング）時には、全ニューロン回路が相互接続するように重み値を設定しなくても、多くの場合問題なくプログラミングが可能であるためである。
【００５４】
たとえば、イジング装置２ａｋのニューロン回路１０ａ１〜１０ａｎに重み値を書き込む場合、制御装置３は、重み値をデータバス４ａに供給し、イジング装置２ａｋのチップアドレスをアドレスバス４ｂに供給する。また、制御装置３は、たとえば、コントロールバス４ｃで伝搬させるライトイネーブル信号の論理レベルをＨ（High）レベルに立ち上げる。
【００５５】
このときルータ１２は、ライトイネーブル信号を受けると、アドレスバス４ｂを介して伝搬されているチップアドレスと自身のチップアドレスとを比較する。そして、ルータ１２は、両チップアドレスが一致したときに、データバス４ａを介して伝搬されている重み値を取り込み、ニューロン回路１０ａ１〜１０ａｎに書き込む。
【００５６】
バイアス値についても同様にニューロン回路１０ａ１〜１０ａｎに書き込まれる。また、接続先情報１１ａ１〜１１ａｎについても同様の処理で、メモリ１１に書き込まれる。
また、制御装置３は、全ニューロン回路の状態の初期値を設定する。たとえば、制御装置３は、重み値の書き込み処理と同様に、各ニューロン回路に含まれる、ニューロン回路の状態を保持するレジスタの値に初期値を書き込む。
【００５７】
その後、制御装置３は、状態の更新を許容するニューロン回路を含むイジング装置のチップアドレスを指定する。指定されたチップアドレスは、コントロールバス４ｃを介してイジング装置２ａ１〜２ａｍによって取り込まれる。つまり、イジング装置２ａ１〜２ａｍには同一のチップアドレスが設定される。
【００５８】
以下では、イジング装置２ａ１のチップアドレスが指定された場合の、イジング装置２ａｋの動作例を説明する。
イジング装置２ａｋのルータ１２は、イジング装置２ａ１のチップアドレスを受信すると、モードレジスタ１２ａにチップアドレスを記憶する。そして、イジング装置２ａ１内の１つのニューロン回路の状態が更新されたとき、ルータ１２は、イジング装置２ａ１により出力され、アドレスバス４ｂを伝搬するそのニューロン回路の内部アドレスを受信する。
【００５９】
そして、ルータ１２は、モードレジスタ１２ａに記憶されたチップアドレスと、受信した内部アドレスと接続先情報１１ａ１〜１１ａｎに基づき、そのニューロン回路が、ニューロン回路１０ａ１〜１０ａｎの何れかに対する接続先であるか決定する。
【００６０】
たとえば、接続先情報１１ａ１に、状態が更新されたニューロン回路が、ニューロン回路１０ａ１の接続先であることが登録されているとき、ルータ１２は、データバス４ａを伝搬するイジング装置２ａ１のニューロン回路の変化後（更新後）の状態を受信する。そして、その変化後の状態に基づく更新信号をニューロン回路１０ａ１に供給する。
【００６１】
これにより、ニューロン回路１０ａ１は、その更新信号に基づく更新が可能となる。
以上のように、本実施の形態の情報処理装置１によれば、イジング装置２ａ１〜２ａｍのそれぞれが、接続先情報に基づいて、受信した他のイジング装置のニューロン回路の状態の変化を、自身のニューロン回路に反映可能となる。これによって、ニューロン回路間の接続数を増やすことができ、大規模な演算が可能となる。
【００６２】
たとえば、変数の数が１０３から１０６以上となるような最適化問題を１チップの集積回路で演算することは難しいが、上記の情報処理装置１によれば、多数のチップを用いて１つのイジング装置として機能させることもできるため、演算が容易になる。
【００６３】
また、イジング装置２ａ１〜２ａｍは、同じ回路構成で実現可能であり、異なる種類のチップを用意しなくてもよい。また、イジング装置２ａ１〜２ａｍは、共通のバス４で接続することができるため、異なる２つのイジング装置の間で複数のニューロン回路を配線で接続する場合のように、配線が複雑化することもない。また、接続先情報を書き換えるだけで、ニューロン間接続を変更できる。
【００６４】
図２は、本実施の形態の情報処理装置で実現されるニューラルネットワークのイメージ図である。
図２の例では、８つのニューロン（たとえば、ニューロン１６ａ）が互いに接続されている６つのニューロン部（たとえば、ニューロン部１６）が、相互接続されているニューラルネットワークが示されている。
【００６５】
１つのニューロン部は、１つのイジング装置（チップ）に相当し、１つのニューロンは１つのニューロン回路に相当する。
問題のマッピング時（重み値の設定＝プログラミング）時にニューロン部間の接続数が制約となるが、たとえば、ニューロン数をｎ＝１０２４とすると、ニューロン部内での接続数の１／１０程度の接続があれば多くの場合問題なくプログラミングが可能である。
【００６６】
たとえば、ニューロン部間の接続数を１２８個、つまり各ニューロンが他のニューロン部の１２８個のニューロンと接続可能とすると、１つのニューロン部内で用意すべき重み値の数は、１０２４２＋１０２４×１２８となる。ニューロン部の数が、たとえば、４のとき、１０２４×４個のニューロンを相互接続させる場合には、重み値の数は、４．５２×１０６程度になるため、ニューロン部間の接続数を限定することで、用意すべき重み値の数を減らすことができる。つまり、第１の実施の形態のニューロン回路１０ａ１〜１０ａｎのレジスタなどに記憶する重み値の数を減らせることで、回路規模を縮小できる。
【００６７】
（第２の実施の形態）
図３は、第２の実施の形態の情報処理装置の一例を示す図である。図３において、第１の実施の形態の情報処理装置１と同一の要素については同一符号が付されている。
【００６８】
第２の実施の形態の情報処理装置１ａは、複数（ｍ個）のイジング装置２ｂ１〜２ｂｍと、制御装置３を有している。
たとえば、イジング装置２ｂ１〜２ｂｍのそれぞれは、１つの半導体集積回路（チップ）で実現される。イジング装置２ｂ１〜２ｂｍは、共通のバス４に接続されている。バス４はデータバス４ａ、アドレスバス４ｂ、コントロールバス４ｃを含む。
【００６９】
イジング装置２ｂ１〜２ｂｍのそれぞれは、以下のような要素を有している。図３には、イジング装置２ｂｋに含まれる要素の例が示されている。
イジング装置２ｂｋは、複数（ｎ個）のニューロン回路１０ｂ１，…，１０ｂｉ，…，１０ｂｎ、ノイズ発生回路１３、ランダム信号生成回路１４、ルータ３０を有している。
【００７０】
ニューロン回路１０ｂ１〜１０ｂｎは、第１の実施の形態のイジング装置２ａｋにおけるニューロン回路１０ａ１〜１０ａｎに対応する。ルータ３０は、第１の実施の形態のイジング装置２ａｋにおけるルータ１２に対応する。第２の実施の形態のイジング装置２ｂｋでは、第１の実施の形態のメモリ１１に対応する要素は、後述のように、ルータ３０内に含まれているものとしている。
【００７１】
図３では、ニューロン回路１０ｂ１〜１０ｂｎのうち、ニューロン回路１０ｂ１，１０ｂｉ，１０ｂｎの一例が示されている。ニューロン回路１０ｂ１〜１０ｂｎのうちニューロン回路１０ｂ１，１０ｂｉ，１０ｂｎ以外のニューロン回路も同様の回路構成となっている。
【００７２】
ニューロン回路１０ｂ１，１０ｂｉ，１０ｂｎは、レジスタ２０ｂ１，…，２０ｂｉ，…，２０ｂｎ、選択回路２１ｂ１，２１ｂｉ，２１ｂｎを有している。ニューロン回路１０ｂ１，１０ｂｉ，１０ｂｎは、乗算回路２２ｂ１１〜２２ｂ１Ｎ，２２ｂｉ１〜２２ｂｉＮ，２２ｂｎ１〜２２ｂｎＮ、加算部２３ｂ１，２３ｂｉ，２３ｂｎ、レジスタ２４ｂ１，２４ｂｉ，２４ｂｎを有している。さらに、ニューロン回路１０ｂ１，１０ｂｉ，１０ｂｎは、加算回路２５ｂ１，２５ｂｉ，２５ｂｎ、比較回路２６ｂ１，２６ｂｉ，２６ｂｎ、フリップフロップ２７ｂ１，２７ｂｉ，２７ｂｎを有している。
【００７３】
レジスタ２０ｂ１，２０ｂｉ，２０ｂｎはそれぞれＮ個の重み値を記憶している。レジスタ２０ｂ１は、重み値Ｗ１１，Ｗ１２，…，Ｗ１Ｎを記憶し、レジスタ２０ｂｉは、重み値Ｗｉ１，Ｗｉ２，…，ＷｉＮを格納し、レジスタ２０ｂｎは、重み値Ｗｎ１，Ｗｎ２，…，ＷｎＮを記憶する。Ｎ−ｎが、イジング装置２ｂｋ以外の複数のイジング装置の全ニューロン回路のうち、ニューロン回路１０ｂ１，１０ｂｉ，１０ｂｎのそれぞれが接続する数となる。
【００７４】
たとえば、レジスタ２０ｂｉに格納される重み値Ｗｉ１〜ＷｉＮのうち、重み値Ｗｉ１〜Ｗｉｎは、ニューロン回路１０ｂ１〜１０ｂｎのうち、ニューロン回路１０ｂｉと、イジング装置２ｂｋ内のその他のニューロン回路との接続の強さを示す。
【００７５】
一方、重み値Ｗｉ１〜ＷｉＮのうち、重み値Ｗｉｎ＋１〜ＷｉＮは、ニューロン回路１０ｂｉと、イジング装置２ｂｋ以外の１つまたは複数のイジング装置に含まれる、Ｎ−ｎ個のニューロン回路との接続の強さを示す。
【００７６】
たとえば、ｎ＝１０２４でＮ＝１１５２であるとき、ニューロン回路１０ｂｉは、イジング装置２ｂｋ以外の複数のイジング装置の全ニューロン回路のうち、１２８個との接続をもつ。つまり、イジング装置２ｂｋ内でのニューロン回路１０ｂｉに対する接続先ニューロン回路の数よりも、イジング装置２ｂｋ以外でのニューロン回路１０ｂｉに対する接続先ニューロン回路の数が少ない。前述のように、多くの問題の場合、情報処理装置１ａ内の全ニューロン回路を相互接続しなくても、イジング装置２ｂ１〜２ｂｍにマッピング可能であるためである。
【００７７】
ただ、ｎや、Ｎの数は、上記の例に限定されないことは言うまでもない。また、イジング装置２ｂｋ外の全てのニューロン回路が、ニューロン回路１０ｂ１〜１０ｂｎに対する接続先ニューロン回路になるようにＮが設定されていてもよい。
【００７８】
なお、上記のような重み値は、制御装置３により、計算対象の問題に応じて設定され、レジスタ２０ｂ１〜２０ｂｎに書き込まれる。なお、上記のような重み値は、ＲＡＭ（Random Access Memory）などのメモリに記憶されていてもよい。
【００７９】
ニューロン回路１０ｂ１〜１０ｂｎは、それぞれ、上記のような重み値を用いて式（３）に示したようなローカルフィールド値を求め、さらにノイズ値を加え、閾値との比較結果を出力するものである。
【００８０】
ニューロン回路１０ｂ１〜１０ｂｎのうち、状態の更新が許容されるニューロン回路は、ランダム信号生成回路１４が出力する乱数値ｒｎによってランダムに決まる。たとえば、乱数値ｒｎは１＜ｒｎ＜ｎの自然数であり、ニューロン回路１０ｂ１〜１０ｂｎの内部アドレスに相当する。乱数値ｒｎは、ニューロン回路１０ｂ１〜１０ｂｎの選択回路２１ｂ１〜２１ｂｎに選択信号として供給される。そして乱数値ｒｎに応じて、選択回路２１ｂ１〜２１ｂｎのうち１つが重み値を出力することで、状態の更新が許容されるニューロン回路が決まる。
【００８１】
なお、ランダム信号生成回路１４は、たとえば、制御装置３によって制御される。イジング装置２ｂｋがニューロン回路の状態の更新を許容しないイジング装置として設定されているとき（後述のモードレジスタに記憶されるチップアドレスで決まる）、乱数値ｒｎは出力されず、選択回路２１ｂ１〜２１ｂｎは、重み値を出力しない。
【００８２】
以下、乱数値ｒｎにより、ニューロン回路１０ｂｉの状態の更新が許容された場合を例にして説明する。
選択回路２１ｂｉは、レジスタ２０ｂｉに記憶されている重み値Ｗｉ１〜ＷｉＮを出力する。
【００８３】
乗算回路２２ｂｉ１〜２２ｂｉＮのそれぞれは、ルータ３０から更新信号として供給されるＮ個のニューロン回路の状態ｘ１〜ｘＮの１つと、その１つに対応する重み値Ｗｉ１〜ＷｉＮの１つとの積を出力する。
【００８４】
たとえば、乗算回路２２ｂｉ１は、状態ｘ１と、重み値Ｗｉ１との積を出力し、乗算回路２２ｂｉＮは、状態ｘＮと、重み値ＷｉＮとの積を出力する。
なお、状態ｘ１〜ｘＮのうち、状態ｘ１〜ｘｎは、イジング装置２ｂｋ内のニューロン回路１０ｂ１〜１０ｂｎの状態を示す。また、状態ｘ１〜ｘＮのうち、状態ｘｎ＋１〜ｘＮは、イジング装置２ｂ１〜２ｂｍのうち、イジング装置２ｂｋ以外のイジング装置に含まれるＮ−ｎ個のニューロン回路の状態を示す。状態ｘｎ＋１〜ｘＮは、後述するルータ３０の機能によって取得できる。
【００８５】
加算部２３ｂｉは、乗算回路２２ｂｉ１〜２２ｂｉＮが出力する値の総和を出力する。
レジスタ２４ｂｉは、バイアス値ｂｉを記憶する。バイアス値ｂｉは、予め制御装置３によって、レジスタ２４ｂｉに書き込まれる。
【００８６】
加算回路２５ｂｉは、加算部２３ｂｉが出力する値と、ノイズ発生回路１３が出力するノイズ値と、バイアス値ｂｉとの和を出力する。なお、加算部２３ｂｉが出力する値と、バイアス値ｂｉとの和が、前述したローカルフィールド値ｈｉである。
【００８７】
比較回路２６ｂｉは、加算回路２５ｂｉが出力する値と、閾値（たとえば、０）との比較結果を出力する。
フリップフロップ２７ｂｉは、比較回路２６ｂｉでの比較結果を、クロック信号ｃｌｋに同期して取り込み、状態ｘｉとして出力する。なお、クロック信号ｃｌｋは、たとえば、図示しないクロック信号発生回路から供給される。クロック信号ｃｌｋは、イジング装置２ｂ１〜２ｂｍで共通のものである。
【００８８】
（ルータ３０の一例）
図４は、ルータの一例を示す図である。
ルータ３０は、Ｉ／Ｆ（インターフェース）回路３１、モードレジスタ３２、メモリ３３、選択回路部３４、チップアドレスレジスタ３５を有している。
【００８９】
Ｉ／Ｆ回路３１は、データバス４ａ、アドレスバス４ｂ、コントロールバス４ｃに接続されており、イジング装置２ｂｋ内の要素と、データバス４ａ、アドレスバス４ｂ、コントロールバス４ｃとの間で情報の送受信を行う。
【００９０】
モードレジスタ３２は、イジング装置２ｂ１〜２ｂｍのうち、状態の更新が許容されるニューロン回路を含むイジング装置のチップアドレスを記憶する。このチップアドレスは、制御装置３で指定され、コントロールバス４ｃで伝搬される。Ｉ／Ｆ回路３１はそのチップアドレスを取得し、モードレジスタ３２に供給する。
【００９１】
以下、モードレジスタ３２に設定（記憶）されるチップアドレスのイジング装置のモードを、トークモード、それ以外のイジング装置のモードを、リスンモードという。
メモリ３３は、接続先情報３３ａ１，…，３３ａｉ，…，３３ａｎを記憶する。接続先情報３３ａ１〜３３ａｎのそれぞれは、ニューロン回路１０ｂ１〜１０ｂｎのそれぞれに対応して記憶されている。
【００９２】
接続先情報３３ａ１〜３３ａｎでは、ニューロン回路１０ｂ１〜１０ｂｎの接続先ニューロン回路の内部アドレスと、接続先ニューロン回路を有するイジング装置のチップアドレスとが対応付けられている。また、接続先情報３３ａ１〜３３ａｎでは、イジング装置２ｂｋ内で用いる、接続先ニューロン回路の識別情報であるニューロンインデックスが、接続先ニューロン回路の内部アドレスに対応付けられている。
【００９３】
たとえば、接続先情報３３ａ１では、ニューロン回路１０ｂ１に接続される接続先ニューロン回路の内部アドレスと、その接続先ニューロン回路を有するイジング装置のチップアドレスと、ニューロンインデックスとが対応付けられている。
【００９４】
このようなニューロンインデックスを用いることで、他のイジング装置内にある接続先ニューロン回路の状態についても、イジング装置２ｂｋ内のニューロン回路１０ｂ１〜１０ｂｎの状態と同様に扱うことができる。
【００９５】
モードレジスタ３２にチップアドレスが設定されると、接続先情報３３ａ１〜３３ａｎにおいてそのチップアドレスに対応付けられた内部アドレスと、ニューロンインデックスとが、メモリ３３から読み出される。
【００９６】
なお、メモリ３３としては、たとえば、フラッシュメモリなどの半導体記憶装置を使用することができる。
選択回路部３４は、イジング装置２ｂｋのモードがリスンモードのとき以下の動作を行う。選択回路部３４は、Ｉ／Ｆ回路３１がアドレスバス４ｂを介して受信した内部アドレスが、メモリ３３から読み出された内部アドレスと一致した場合には、Ｉ／Ｆ回路３１がデータバス４ａを介して受信した接続先ニューロン回路の状態を取り込む。そして、選択回路部３４は、その状態の変化に基づき、状態ｘｎ＋１〜ｘＮを更新する。
【００９７】
チップアドレスレジスタ３５は、イジング装置２ｂｋのチップアドレスを記憶する。
図５は、選択回路部及び接続先情報の一例を示す図である。
選択回路部３４は、選択回路４０ａ１，…，４０ａｉ，…，４０ａｎ、選択回路＆ＦＦ回路部４１を有している。
【００９８】
選択回路４０ａ１〜４０ａｎは、Ｉ／Ｆ回路３１が受信した内部アドレスとメモリ３３から読み出された内部アドレスとを比較する。そして、選択回路４０ａ１〜４０ａｎは、両者が一致した場合には、Ｉ／Ｆ回路３１がデータバス４ａを介して受信した接続先ニューロン回路の状態と、その内部アドレスに対応付けられたニューロンインデックスとを出力する。
【００９９】
たとえば、メモリ３３に、図５に示すような接続先情報３３ａ１が記憶されているとする。接続先情報３３ａ１には、チップアドレスがｘのイジング装置に含まれる、内部アドレスが２〜１０２４のニューロン回路が、ニューロン回路１０ｂ１に対する接続先ニューロン回路として登録されている。チップアドレスとしてｘがモードレジスタ３２に設定（記憶）されたとき、そのチップアドレスに対応付けられた内部アドレスとニューロンインデックスとがメモリ３３から読み出される。
【０１００】
このとき、Ｉ／Ｆ回路３１が受信した内部アドレスが、たとえば、２である場合、メモリ３３から読み出された内部アドレスの１つと一致する。そこで、選択回路４０ａ１は、Ｉ／Ｆ回路３１がデータバス４ａを介して受信した接続先ニューロン回路の出力信号の値と、その内部アドレスに対応付けられたニューロンインデックスであるｎ＋ｊとを出力する。
【０１０１】
選択回路＆ＦＦ回路部４１は、選択回路４０ａ１〜４０ａｎが出力した接続先ニューロン回路の状態と、ニューロンインデックスとに基づいて、ニューロン回路１０ｂ１〜１０ｂｎに供給される状態ｘｎ＋１〜ｘＮを更新する。
【０１０２】
図６は、選択回路＆ＦＦ回路部の一部を示す図である。
選択回路＆ＦＦ回路部４１は、選択回路５０，５１、フリップフロップ５２ｎ＋１，…，５２ｎ＋ｊ，…，５２Ｎを有している。このような要素が、ニューロン回路１０ｂ１〜１０ｂｎのそれぞれに対応して設けられる。以下では、選択回路５０，５１、フリップフロップ５２ｎ＋１〜５２Ｎが、ニューロン回路１０ｂ１に対応して設けられた要素であるものとして説明する。
【０１０３】
選択回路５０は、図５に示した選択回路４０ａ１が出力するニューロンインデックスに基づき、クロック信号ｃｌｋを、フリップフロップ５２ｎ＋１〜５２Ｎの何れか１つに供給する。
【０１０４】
選択回路５１は、図５に示した選択回路４０ａ１が出力するニューロンインデックスに基づき、選択回路４０ａ１が出力する接続先ニューロン回路の状態を、フリップフロップ５２ｎ＋１〜５２Ｎの何れか１つに供給する。
【０１０５】
フリップフロップ５２ｎ＋１〜５２Ｎは、状態ｘｎ＋１〜ｘＮを保持するとともに、ニューロン回路１０ｂ１に状態ｘｎ＋１〜ｘＮを供給する。
たとえば、選択回路４０ａ１が出力するニューロンインデックスがｎ＋ｊのとき、選択回路５０は、フリップフロップ５２ｎ＋ｊにクロック信号ｃｌｋを供給し、選択回路５１は、ニューロン状態をフリップフロップ５２ｎ＋ｊに供給する。これにより、クロック信号ｃｌｋに同期して、フリップフロップ５２ｎ＋ｊの出力である状態ｘｎ＋ｊが更新される。
【０１０６】
以上のようなルータ３０によって、ニューロン回路１０ｂ１〜１０ｂｎの接続先ニューロン回路の状態が更新されたときに、その更新がニューロン回路１０ｂ１〜１０ｂｎに反映可能となる。
【０１０７】
なお、図４に示したモードレジスタ３２に、たとえば、イジング装置２ｂｋのチップアドレスが設定されたとき（トークモードのとき）、ニューロン回路１０ｂ１〜１０ｂｎの状態ｘ１，…，ｘｉ，…，ｘｎの何れか１つの更新が許容される。状態ｘ１〜ｘｎは、前述した状態ｘｎ＋１〜ｘＮとともに、更新信号として、ニューロン回路１０ｂ１〜１０ｂｎに供給される。また、更新が許容されるニューロン回路の内部アドレスとして、ランダム信号生成回路１４が出力する乱数値ｒｎが、Ｉ／Ｆ回路３１を介して、アドレスバス４ｂに伝搬される。さらに、更新が許容されるニューロン回路の状態が、Ｉ／Ｆ回路３１を介して、データバス４ａに伝搬される。
【０１０８】
（アニール動作例）
以下、制御装置３によって制御される情報処理装置１ａの動作（アニール動作）の一例を説明する。
【０１０９】
図７は、情報処理装置の動作の一例を示すフローチャートである。
まず、制御装置３は、チップアドレスを、イジング装置２ｂ１〜２ｂｍのそれぞれのレジスタ（たとえば、図４に示したチップアドレスレジスタ３５）に設定する（ステップＳ１）。チップアドレスの設定は、たとえば、スキャンチェーンを用いて実現できる。その場合、チップアドレスレジスタ３５は、チップアドレスのビット数に対応した数のスキャンフリップフロップを有する。
【０１１０】
さらに、制御装置３により、計算対象の問題に応じた重み値とバイアス値が、イジング装置２ｂ１〜２ｂｍの各ニューロン回路にあるレジスタ（またはメモリ）へ書き込まれる（設定される）（ステップＳ２）。
【０１１１】
図８は、重み値の書き込み時の動作例を示すタイミングチャートである。
イジング装置２ｂｋのニューロン回路１０ｂ１〜１０ｂｎのレジスタ２０ｂ１〜２０ｂｎに重み値を書き込む場合、制御装置３は、重み値とイジング装置２ｂｋのチップアドレスとをデータバス４ａとアドレスバス４ｂに供給する。また、制御装置３は、コントロールバス４ｃで伝搬させるウェイト・ライト・イネーブル信号の論理レベルをＨレベルに立ち上げる。
【０１１２】
このとき、ルータ３０のＩ／Ｆ回路３１は、モード・ライト・イネーブル信号の立ち上がり（タイミングｔ１）に同期して、アドレスバス４ｂを伝搬するチップアドレスと、チップアドレスレジスタ３５に記憶されている自身のチップアドレスとを比較する。
【０１１３】
そして、Ｉ／Ｆ回路３１は、両チップアドレスが一致したときに、データバス４ａを伝搬する重み値を取り込み、図示しないデータ線を介してレジスタ２０ｂ１〜２０ｂｎに重み値を書き込む。
【０１１４】
バイアス値ｂ１〜ｂｎについても同様に、ニューロン回路１０ｂ１〜１０ｂｎのレジスタ２４ｂ１〜２４ｂｎに書き込まれる。
他のイジング装置のニューロン回路にあるレジスタ（またはメモリ）にも同様にして重み値及びバイアス値が書き込まれる。
【０１１５】
次に、制御装置３は、全チップ（イジング装置２ｂ１〜２ｂｎ）のニューロン回路の状態を初期化する（ステップＳ３）。たとえば、制御装置３は、図示しない制御信号線を介して、各ニューロン回路の状態を保持するフリップフロップ（たとえば、図３のフリップフロップ２７ｂ１〜２７ｂｎ）の値をリセットする。
【０１１６】
その後、制御装置３は、コントロールバス４ｃを用いてモードレジスタにチップアドレスを設定することで、イジング装置２ｂ１〜２ｂｎのうちアニール動作を実行させる（トークモードとする）イジング装置（アニールチップ）を１つ選択する（ステップＳ４）。
【０１１７】
アニール動作は、イジング装置に含まれるニューロン回路の状態の更新を許容する動作である。たとえば、あるチップアドレスのイジング装置をアニールチップとする場合、このチップアドレスが、他のイジング装置のモードレジスタ（たとえば、図４のモードレジスタ３２）に設定される。たとえば、制御装置３は、イジング装置２ｂ１〜２ｂｎの何れか１つのチップアドレスをランダムに選択してコントロールバス４ｃに供給する。
【０１１８】
選択されたイジング装置では、状態の更新を許容するニューロン回路が１つランダムに選択される（ステップＳ５）。
以下では、ステップＳ４の処理にて、イジング装置２ｂｋが選択されたものとして説明する。ステップＳ５の処理では、図３に示したランダム信号生成回路１４が出力する乱数値ｒｎにより、ニューロン回路１０ｂ１〜１０ｂｎの選択回路２１ｂ１〜２１ｂｎの何れか１つが重み値を出力する。
【０１１９】
たとえば、ニューロン回路１０ｂｉの選択回路２１ｂｉが重み値Ｗｉ１〜ＷｉＮを出力するとき、重み値Ｗｉ１〜ＷｉＮと、状態ｘ１〜ｘＮに基づき算出されるローカルフィールド値ｈｉにノイズ値を加えた値が閾値より大きいと、状態ｘｉは０となる。ローカルフィールド値ｈｉにノイズ値を加えた値が閾値より小さいと、状態ｘｉは１となる。
【０１２０】
ニューロン回路１０ｂｉの状態ｘｉが変化すると、前述したルータ（たとえば、ルータ３０）の機能により、ニューロン回路１０ｂｉの接続先ニューロン回路にその変化が伝わる。
【０１２１】
制御装置３は、アニールチップの選択回数が、予め決められた回数ｃｎｔに達したか否か判定する（ステップＳ６）。アニールチップの選択回数が、予め決められた回数ｃｎｔに達していないときは、ステップＳ４からの処理が繰り返される。
【０１２２】
なお、制御装置３は、アニールチップの選択を行うたびに、イジング装置２ｂ１〜２ｂｍに含まれるノイズ発生回路（たとえば、ノイズ発生回路１３）を制御して、ノイズ幅を徐々に小さくしていくことで、シミュレーテッド・アニーリングが行われる。
【０１２３】
イジング装置２ｂｋにおいて、ノイズ発生回路１３は、たとえば、比較回路２６ｂ１〜２６ｂｎの出力値が１となる確率が、シグモイド関数に従うようなノイズ値を発生する。たとえば、ノイズ発生回路１３は、ニューロン回路１０ｂｉの状態ｘｉが１となる確率Ｐｉ（ｈｉ）が、以下の式（４）の関係になるようなノイズ値を生成する。
【０１２４】
【数４】
2018010474.tif 000006
【０１２５】
式（４）において、Ｔは、実効温度である。
なお、式（４）に示すような確率Ｐｉ（ｈｉ）を得るために生成されるノイズ値ｎｓの確率密度関数ｐ（ｎｓ）は、以下の式（５）のようになる。
【０１２６】
【数５】
2018010474.tif 000007
【０１２７】
図９は、シミュレーテッド・アニーリングの様子を示す図である。
縦軸はエネルギーＥであり、横軸は全ニューロンの出力値の組み合わせｑｋを示している。組み合わせｑｋは、“０００…０”から“１１１…１”まである。図９では、ノイズ幅がＷ１、Ｗ２、Ｗ３と小さくなっていくときの、解の収束の様子が示されている。ノイズ幅を小さくしていくことは、式（５）の実効温度Ｔを小さくしていくことに相当する。
【０１２８】
ノイズ幅がＷ１のとき、解が、局所解（エネルギーが局所的な極小値となる解）ｑｋ１，ｑｋ２，ｑｋ４，ｑｋ５となっても、エネルギーが高くなる方向に変化でき、局所解から脱出できる。ノイズ幅が、Ｗ２、Ｗ３と徐々に小さくなるにつれて、解の変化は制限されていき、最終的に、最適解（エネルギーが最小値となる解）ｑｋ３に収束する。
【０１２９】
アニールチップの選択回数が、予め決められた回数ｃｎｔに達したときは、制御装置３は、全ニューロン回路の状態の変化が収束したものと判定して、全ニューロン回路の状態の組み合わせを解として取得し（ステップＳ７）、アニール動作を終了する。
【０１３０】
以上のような第２の実施の形態の情報処理装置１ａでは、第１の実施の形態の情報処理装置１と同様の効果が得られる。すなわち、イジング装置２ｂ１〜２ｂｍのそれぞれが、受信した他のイジング装置のニューロン回路の状態を、接続先情報に基づいて自身のニューロン回路に反映可能となる。これによって、ニューロン回路間の接続数を増やすことができ、大規模な演算が可能となる。
【０１３１】
また、イジング装置２ｂ１〜２ｂｍは、同じ回路構成で実現可能であり、異なる種類のチップを用意しなくてもよい。また、イジング装置２ｂ１〜２ｂｍは、共通のバス４で接続することができるため、配線が複雑化することもない。
【０１３２】
（第３の実施の形態）
図１０は、第３の実施の形態の情報処理装置の一例を示す図である。図１０において、第２の実施の形態の情報処理装置１ａと同一の要素については同一符号が付されている。
【０１３３】
第３の実施の形態の情報処理装置１ｂでは、複数（ｍ個）のイジング装置２ｃ１〜２ｃｍに含まれるニューロン回路の回路構成が、第２の実施の形態の情報処理装置１ａと異なっている。
【０１３４】
図１０には、イジング装置２ｃｋの回路構成の一例が示されている。イジング装置２ｃｋは、ニューロン回路１０ｃ１，…，１０ｃｉ，…，１０ｃｎ、ノイズ発生回路１３、ランダム信号生成回路１４、ルータ３０ａを有している。
【０１３５】
ニューロン回路１０ｃ１〜１０ｃｎは、第１の実施の形態のイジング装置２ａｋにおけるニューロン回路１０ａ１〜１０ａｎに対応する。ルータ３０ａは、第１の実施の形態のイジング装置２ａｋにおけるルータ１２に対応する。第３の実施の形態のイジング装置２ｃｋでも、第１の実施の形態のメモリ１１に対応する要素は、後述のように、ルータ３０ａ内に含まれているものとしている。
【０１３６】
ニューロン回路１０ｃ１〜１０ｃｎは、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づき動作する回路である。
図１０では、ニューロン回路１０ｃ１〜１０ｃｎのうち、ニューロン回路１０ｃ１，１０ｃｉ，１０ｃｎの一例が示されている。ニューロン回路１０ｃ１〜１０ｃｎのうちニューロン回路１０ｃ１，１０ｃｉ，１０ｃｎ以外のニューロン回路も同様の回路構成となっている。
【０１３７】
ニューロン回路１０ｃ１，１０ｃｉ，１０ｃｎは、レジスタ２０ｃ１，２０ｃｉ，２０ｃｎ、選択回路２１ｃ１，２１ｃｉ，２１ｃｎ，２２ｃ１，２２ｃｉ，２２ｃｎ、乗算回路２３ｃ１，２３ｃｉ，２３ｃｎを有している。さらにニューロン回路１０ｃ１，１０ｃｉ，１０ｃｎは、加算回路２４ｃ１，２４ｃｉ，２４ｃｎ、レジスタ２５ｃ１，２５ｃｉ，２５ｃｎ、加算回路２６ｃ１，２６ｃｉ，２６ｃｎを有している。さらにニューロン回路１０ｃ１，１０ｃｉ，１０ｃｎは、比較回路２７ｃ１，２７ｃｉ，２７ｃｎ、ＸＯＲ回路２８ｃ１，２８ｃｉ，２８ｃｎ、レジスタ２９ｃ１，２９ｃｉ，２９ｃｎを有している。
【０１３８】
レジスタ２０ｃ１，２０ｃｉ，２０ｃｎは、図３に示したレジスタ２０ｂ１，２０ｂｉ，２０ｂｎと同様に、それぞれＮ個の重み値を記憶している。
選択回路２１ｃ１は、ルータ３０ａから供給される重み値の選択信号ｕｄｎに基づき、レジスタ２０ｃ１に保持されている重み値Ｗ１１〜Ｗ１Ｎのうち１つを選択して出力する。選択回路２１ｃｉは、ルータ３０ａから供給される選択信号ｕｄｎに基づき、レジスタ２０ｃｉに保持されている重み値Ｗｉ１〜ＷｉＮのうち１つを選択して出力する。選択回路２１ｃｎは、ルータ３０ａから供給される選択信号ｕｄｎに基づき、レジスタ２０ｃｎに保持されている重み値Ｗｎ１〜ＷｎＮのうち１つを選択して出力する。
【０１３９】
重み値の選択信号ｕｄｎは、たとえば、更新したニューロン回路の内部アドレス、または前述したような接続先情報３３ａ１〜３３ａｎで内部アドレスに対応付けられたニューロンインデックスである。または、重み値の選択信号ｕｄｎは、その内部アドレスまたはニューロンインデックスに基づいて生成される信号であってもよい。
【０１４０】
選択回路２２ｃ１〜２２ｃｎのそれぞれは、ルータ３０ａから供給される、接続先ニューロン回路の更新後の状態（０か１）（以下アップデート状態ｕｄｓという）に基づき、１または−１を選択して出力する。アップデート状態ｕｄｓが０のときには、選択回路２２ｃ１〜２２ｃｎは、−１を選択して出力し、アップデート状態ｕｄｓが１のときには、選択回路２２ｃ１〜２２ｃｎは、１を選択して出力する。この理由については後述する。
【０１４１】
乗算回路２３ｃ１は、選択回路２１ｃ１が出力する値と、選択回路２２ｃ１が出力する値との積を出力する。乗算回路２３ｃｉは、選択回路２１ｃｉが出力する値と、選択回路２２ｃｉが出力する値との積を出力する。乗算回路２３ｃｎは、選択回路２１ｃｎが出力する値と、選択回路２２ｃｎが出力する値との積を出力する。
【０１４２】
加算回路２４ｃ１は、乗算回路２３ｃ１が出力する値と、レジスタ２５ｃ１に保持されている値とを加算して出力する。加算回路２４ｃｉは、乗算回路２３ｃｉが出力する値と、レジスタ２５ｃｉに保持されている値とを加算して出力する。加算回路２４ｃｎは、乗算回路２３ｃｎが出力する値と、レジスタ２５ｃｎに保持されている値とを加算して出力する。
【０１４３】
レジスタ２５ｃ１は、クロック信号ｃｌｋに同期して、加算回路２４ｃ１が出力する値を取り込む。レジスタ２５ｃｉは、クロック信号ｃｌｋに同期して、加算回路２４ｃｉが出力する値を取り込む。レジスタ２５ｃｎは、クロック信号ｃｌｋに同期して、加算回路２４ｃｎが出力する値を取り込む。レジスタ２５ｃ１〜２５ｃｎは、たとえば、フリップフロップである。なお、初期値は前述したバイアス値ｂｉ〜ｂｎである。
【０１４４】
なお、レジスタ２５ｃ１〜２５ｃｎに取り込まれた値が、前述したローカルフィールド値ｈ１，ｈｉ，ｈｎとなる。
加算回路２６ｃ１は、レジスタ２５ｃ１が出力する値に、ノイズ発生回路１３が出力するノイズ値を加算して出力する。加算回路２６ｃｉは、レジスタ２５ｃｉが出力する値に、ノイズ発生回路１３が出力するノイズ値を加算して出力する。加算回路２６ｃｎは、レジスタ２５ｃｎが出力する値に、ノイズ発生回路１３が出力するノイズ値を加算して出力する。
【０１４５】
比較回路２７ｃ１は、加算回路２６ｃ１が出力する値が、閾値（たとえば、０）より大きいときには０を出力し、閾値より小さいときには１を出力する。比較回路２７ｃｉは、加算回路２６ｃｉが出力する値が、閾値より大きいときには０を出力し、閾値より小さいときには１を出力する。比較回路２７ｃｎは、加算回路２６ｃｎが出力する値が、閾値より大きいときには０を出力し、閾値より小さいときには１を出力する。
【０１４６】
なお、イジング装置２ｃｋのモードがトークモードのとき、比較回路２７ｃ１〜２７ｃｎは、ランダム信号生成回路１４が出力する乱数値ｒｎによって、ランダムに１つが有効になり他は無効になる。無効になった比較回路は比較動作を行わない。イジング装置２ｃｋがリスンモードのときには、比較回路２７ｃ１〜２７ｃｎは、全て無効になる。
【０１４７】
ＸＯＲ回路２８ｃ１は、比較回路２７ｃ１が出力する値と、レジスタ２９ｃ１に保持されている値とが、一致しているときはアップデート信号ｕｄ１として０を出力し、異なるときはアップデート信号ｕｄ１として１を出力する。ＸＯＲ回路２８ｃｉは、比較回路２７ｃｉが出力する値と、レジスタ２９ｃｉに保持されている値とが、一致しているときはアップデート信号ｕｄｉとして０を出力し、異なるときはアップデート信号ｕｄｉとして１を出力する。ＸＯＲ回路２８ｃｎは、比較回路２７ｃｎが出力する値と、レジスタ２９ｃｎに保持されている値とが、一致しているときはアップデート信号ｕｄｎとして０を出力し、異なるときはアップデート信号ｕｄｎとして１を出力する。
【０１４８】
レジスタ２９ｃ１は、アップデート信号ｕｄ１が１となると、比較回路２７ｃ１が出力する値を取り込む。これにより、ニューロン回路１０ｃ１の状態ｘ１が変化する（更新される）。レジスタ２９ｃｉは、アップデート信号ｕｄｉが１となると、比較回路２７ｃｉが出力する値を取り込む。これにより、ニューロン回路１０ｃｉの状態ｘｉが変化する。レジスタ２９ｃｎは、アップデート信号ｕｄｎが１となると、比較回路２７ｃｎが出力する値を取り込む。これにより、ニューロン回路１０ｃｎの状態ｘｎが変化する。
【０１４９】
全ニューロン回路のうち、一度に状態が更新されるニューロン回路の数は１つであるため、そのニューロン回路の接続先では、元のローカルフィールド値に対して、その更新による変化分を加算または減算すればよい。図１０のニューロン回路１０ｃ１〜１０ｃｎは、接続先ニューロン回路の状態が更新されたときに、元のローカルフィールド値に対して、その更新による変化分を加算または減算することで、ローカルフィールド値を更新している。
【０１５０】
たとえば、ニューロン回路１０ｃｉに接続されているニューロン回路の状態ｘｊ（０または１）が、１−ｘｊに変化したとき、ニューロン回路１０ａｉのローカルフィールド値ｈｉの変化分Δｈｉは、以下の式（６）で表される。
【０１５１】
【数６】
2018010474.tif 000008
【０１５２】
式（６）において、１−２ｘｊは、状態ｘｊが、０から１に変化したときには、＋１となり、１から０に変化したときには、−１となる。
このような１−２ｘｊの演算は、図１０に示した、選択回路２２ｃｉで実現される。また、乗算回路２３ｃｉが、選択回路２２ｃｉが出力する値に、重み値Ｗｉｊを掛けることで、ローカルフィールド値ｈｉの変化分Δｈｉが算出される。
【０１５３】
（ルータ３０ａの一例）
図１１は、ルータの一例を示す図である。図１１において、図４に示した第２の実施の形態のルータ３０と同一の要素については同一符号が付されている。
【０１５４】
ルータ３０ａの選択回路部３４ａは、ルータ３０の選択回路部３４と異なる機能を有する。
選択回路部３４ａは、イジング装置２ｃｋ内のニューロン回路１０ｃ１〜１０ｃｎから、状態ｘｉ〜ｘｎを受けるとともに、アップデート信号ｕｄ１〜ｕｄｎを受ける。モードレジスタ３２に、イジング装置２ｃｋのチップアドレスが設定されているとき（トークモードのとき）、アップデート信号ｕｄ１〜ｕｄｎの何れか１つが１となる可能性がある。選択回路部３４ａは、ニューロン回路１０ｃ１〜１０ｃｎのうち、アップデート信号ｕｄ１〜ｕｄｎが１となるニューロン回路の内部アドレスを、選択信号ｕｄｎとして出力し、そのニューロン回路の状態をアップデート状態ｕｄｓとして出力する。
【０１５５】
たとえば、ニューロン回路１０ｃｉが出力するアップデート信号ｕｄｉが１となると、選択回路部３４ａは、ニューロン回路１０ｃｉの内部アドレスであるｉを、選択信号ｕｄｎとして出力し、状態ｘｉをアップデート状態ｕｄｓとして出力する。
【０１５６】
アップデート状態ｕｄｓと、選択信号ｕｄｎは、イジング装置２ｃｋ内のニューロン回路１０ｃ１〜１０ｃｎに供給されるとともに、Ｉ／Ｆ回路３１によって、データバス４ａ及びアドレスバス４ｂを介して他のイジング装置に伝搬される。
【０１５７】
また、イジング装置２ｃｋがリスンモードのとき、選択回路部３４ａは、データバス４ａ及びアドレスバス４ｂを介して伝搬される他のイジング装置に含まれるニューロン回路の状態と内部アドレスを、Ｉ／Ｆ回路３１から受ける。
【０１５８】
そして、Ｉ／Ｆ回路３１から選択回路部３４ａが受けた内部アドレスが、メモリ３３から読み出された内部アドレスと一致する場合には、受信した内部アドレスのニューロン回路は、ニューロン回路１０ｃ１〜１０ｃｎの何れかの接続先ニューロン回路である。そのため、選択回路部３４ａは、受信した接続先ニューロン回路の状態を取り込む。選択回路部３４ａは、受信した内部アドレスに対応付けられたニューロンインデックスを選択信号ｕｄｎ、接続先ニューロン回路の状態をアップデート状態ｕｄｓとして、接続先ニューロン回路と接続しているニューロン回路１０ｃ１〜１０ｃｎの何れかに供給する。
【０１５９】
図１２は、選択回路部及び接続先情報の一例を示す図である。
図１２には、リスンモードの際に機能する選択回路部３４ａの回路部分の一例が示されている。図１２において、図５に示した選択回路部３４と同一の要素については同一符号が付されている。
【０１６０】
選択回路部３４ａの選択回路＆ＦＦ回路部４１ａは、選択回路部３４の選択回路＆ＦＦ回路部４１と異なる機能を有する。
選択回路＆ＦＦ回路部４１ａは、選択回路４０ａ１〜４０ａｎが出力した接続先ニューロン回路の状態をアップデート状態ｕｄｓ、選択回路４０ａ１〜４０ａｎが出力した接続先ニューロン回路のニューロンインデックスを、選択信号ｕｄｎとして出力する。
【０１６１】
以上のようなルータ３０ａによって、ニューロン回路１０ｃ１〜１０ｃｎの接続先ニューロン回路の状態が変化したときに、その変化がニューロン回路１０ｃ１〜１０ｃｎに反映可能となる。
【０１６２】
制御装置３によって制御される情報処理装置１ｂの動作（アニール動作）は、図７に示した情報処理装置１ａの動作と同様であるため、説明を省略する。
以上のような第３の実施の形態の情報処理装置１ｂでも、第２の実施の形態の情報処理装置１ａと同様の効果が得られる。
【０１６３】
さらに、第３の実施の形態の情報処理装置１ｂのニューロン回路１０ｃ１〜１０ｃｎは、ローカルフィールド値の変化分を算出して、その変化分でローカルフィールド値を更新する。そのため、第２の実施の形態の情報処理装置１ａのニューロン回路１０ｂ１〜１０ｂｎよりも、加算回路や乗算回路の数を少なくすることができ、回路面積を小さくできる。
【０１６４】
以上、実施の形態に基づき、本発明の情報処理装置、イジング装置及び情報処理装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１６５】
１  情報処理装置
２ａ１〜２ａｍ  イジング装置
３  制御装置
４  バス
４ａ  データバス
４ｂ  アドレスバス
４ｃ  コントロールバス
１０ａ１〜１０ａｎ  ニューロン回路
１１  メモリ
１１ａ１〜１１ａｎ  接続先情報
１２  ルータ
１２ａ  モードレジスタ
１３  ノイズ発生回路
１４  ランダム信号生成回路
【図１】
2018010474.tif 000009
【図２】
2018010474.tif 000010
【図３】
2018010474.tif 000011
【図４】
2018010474.tif 000012
【図５】
2018010474.tif 000013
【図６】
2018010474.tif 000014
【図７】
2018010474.tif 000015
【図８】
2018010474.tif 000016
【図９】
2018010474.tif 000017
【図１０】
2018010474.tif 000018
【図１１】
2018010474.tif 000019
【図１２】
2018010474.tif 000020