(57)【要約】【課題】最適解の収束性を改善する。【解決手段】ニューロン回路５ａ１〜５ａｎはそれぞれ、自身以外の複数の他のニューロン回路との接続の有無を示す複数の重み値と、複数の他のニューロン回路の複数の出力信号との積の総和に基づく第１の値を算出し、第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力する。調停回路１０は、複数の重み値に基づき、ニューロン回路５ａ１〜５ａｎのうち、互いに接続されている複数の第１のニューロン回路の複数の第１の出力信号が同時に変化するとき、複数の第１のニューロン回路のうち１つ以外の第１の出力信号の更新を禁止し、互いに接続されていない複数の第２のニューロン回路の複数の第２の出力信号が同時に変化するとき、複数の第２の出力信号の更新を許可する。【選択図】図１
2019071113.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、自身以外の複数の他のニューロン回路との接続の有無を示す複数の重み値と、前記複数の他のニューロン回路の複数の出力信号との積の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力する複数のニューロン回路と、
前記複数の重み値に基づき、前記複数のニューロン回路のうち、互いに接続されている複数の第１のニューロン回路の複数の第１の出力信号が同時に変化するとき、前記複数の第１のニューロン回路のうち１つ以外の第１の出力信号の更新を禁止し、互いに接続されていない複数の第２のニューロン回路の複数の第２の出力信号が同時に変化するとき、前記複数の第２の出力信号の更新を許可する調停回路と、
を有することを特徴とするイジング装置。
【請求項２】
前記調停回路は、前記複数の第１のニューロン回路のうちの１つを識別する第１の識別情報を生成し、
前記複数のニューロン回路のうち、前記第１の識別情報に対応する第３のニューロン回路は、前記複数の出力信号に基づく更新を行う、
ことを特徴とする請求項１に記載のイジング装置。
【請求項３】
前記複数のニューロン回路のそれぞれを識別する識別情報群を記憶しているメモリを有し、
前記調停回路は、前記メモリから前記識別情報群を読み込み、前記複数の第１のニューロン回路のそれぞれを識別する第１の識別情報群を、前記識別情報群から抽出し、前記第１の識別情報群から、ランダムに前記第１の識別情報を選択、または、前記第１の識別情報群から、値が最大または最小となる前記第１の識別情報を選択する、
ことを特徴とする請求項２に記載のイジング装置。
【請求項４】
前記調停回路は、
前記複数の重み値に基づき、前記第３のニューロン回路に接続されている第４のニューロン回路を識別する第２の識別情報を、前記識別情報群から抽出し、
前記第２の識別情報を、前記第１の識別情報群から除去する、
ことを特徴とする請求項３に記載のイジング装置。
【請求項５】
イジング装置の制御方法において、
前記イジング装置が有する複数のニューロン回路が、自身以外の複数の他のニューロン回路との接続の有無を示す複数の重み値と、前記複数の他のニューロン回路の複数の出力信号との積の総和に基づく第１の値をそれぞれ算出し、
前記複数のニューロン回路が、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１をそれぞれ出力し、
前記イジング装置が有する調停回路が、前記複数の重み値に基づき、前記複数のニューロン回路のうち、互いに接続されている複数の第１のニューロン回路の複数の第１の出力信号が同時に変化するとき、前記複数の第１のニューロン回路のうち１つ以外の第１の出力信号の更新を禁止し、互いに接続されていない複数の第２のニューロン回路の複数の第２の出力信号が同時に変化するとき、前記複数の第２の出力信号の更新を許可する、
ことを特徴とするイジング装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イジング装置及びイジング装置の制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型の目的関数を用いたシミュレーテッド・アニーリングを行うイジング装置（ボルツマンマシンと呼ばれる場合もある）がある。イジング装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
従来、イジング装置をハードウェアで実現する手法の１つとして、たとえば、ニューロンの機能を模擬するニューロン回路を複数並列動作させる手法が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平３−１００８５７号公報
【非特許文献】
【０００５】
【非特許文献１】S. Gemanand D. Geman, "Stochastic Relaxation, Gibbs Distributions, and the Bayesian Restoration of Images," IEEE Trans. on Pattern Analysis and Machine Intelligence, PAMI-6, pp.721-741, 1984
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ボルツマンマシンにおいて、一度に１つのニューロン回路の状態（出力値）が更新される場合には、最適解に収束することが証明されている（たとえば、非特許文献１参照）。しかし、複数のニューロン回路の状態が同時に更新される場合には、このような収束性が証明されていない。このため、複数のニューロン回路が並列動作する場合、計算処理の高速化が図れることが期待できるものの、最適解への収束性が悪化する可能性があるという問題がある。
【０００７】
１つの側面では、本発明は、最適解への収束性が改善できるイジング装置及びイジング装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、それぞれが、自身以外の複数の他のニューロン回路との接続の有無を示す複数の重み値と、前記複数の他のニューロン回路の複数の出力信号との積の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力する複数のニューロン回路と、前記複数の重み値に基づき、前記複数のニューロン回路のうち、互いに接続されている複数の第１のニューロン回路の複数の第１の出力信号が同時に変化するとき、前記複数の第１のニューロン回路のうち１つ以外の第１の出力信号の更新を禁止し、互いに接続されていない複数の第２のニューロン回路の複数の第２の出力信号が同時に変化するとき、前記複数の第２の出力信号の更新を許可する調停回路と、を有するイジング装置が提供される。
【０００９】
また、１つの態様では、それぞれが、自身以外の複数の他のニューロン回路との接続の有無を示す複数の重み値と、前記複数の他のニューロン回路の複数の出力信号との積の総和に基づく第１の値を算出し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力する複数のニューロン回路と、前記複数の重み値に基づき、前記複数のニューロン回路のうち、互いに接続されている複数の第１のニューロン回路の複数の第１の出力信号が同時に変化するとき、前記複数の第１のニューロン回路のうち１つ以外の第１の出力信号の更新を禁止し、互いに接続されていない複数の第２のニューロン回路の複数の第２の出力信号が同時に変化するとき、前記複数の第２の出力信号の更新を許可する調停回路と、を有するイジング装置に対して、制御装置が、前記複数の重み値を設定し、前記制御装置が、複数のニューロン回路のうち、有効にする前記複数の第１のニューロン回路または前記複数の第２のニューロン回路を、ランダム信号生成回路にランダムに選択させ、前記制御装置が、ノイズ発生回路が出力する前記ノイズ値の振幅を制御する、イジング装置の制御方法が提供される。
【発明の効果】
【００１０】
１つの側面では、最適解への収束性を改善することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態のイジング装置の一例を示す図である。
【図２】ニューロン回路の一例を示す図である。
【図３】状態ｘｉが１となる確率Ｐｉ（ｈｉ）の一例を示す図である。
【図４】ランダム信号生成回路の一例を示す図である。
【図５】調停回路の一例を示す図である。
【図６】イジング装置で実行される制御処理の一例を示すフローチャートである。
【図７】シミュレーテッド・アニーリングの様子を示す図である。
【図８】調停回路で実行される調停／更新処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
図１は、本実施の形態のイジング装置の一例を示す図である。
イジング装置１は、レジスタ部２ａ、ノイズ発生回路３、ランダム信号生成回路４、複数（ｎ個）のニューロン回路５ａ１，…，５ａｋ，…，５ａｎ、制御装置６、調停回路１０を有している。イジング装置１は、たとえば、１つの半導体集積回路（チップ）で実現される。
【００１３】
レジスタ部２ａは、レジスタ２ｂ１，２ｂ２，…，２ｂｎを含んでいる。レジスタ２ｂ１，２ｂ２，…，２ｂｎは、ニューロン回路５ａ１〜５ａｎのうちの任意の２つの間の接続の有無を示す複数の重み値を格納している。たとえば、レジスタ２ｂ１には、１番目のニューロン回路５ａ１とその他のニューロン回路との間の接続の有無を示す重み値Ｗ１２，Ｗ１３，…，Ｗ１ｎが格納されている。レジスタ２ｂｋには、ｋ番目のニューロン回路５ａｋとその他のニューロン回路との間の接続の有無を示す重み値Ｗｋ１，Ｗｋ２，…，Ｗｋｎが格納されている。レジスタ２ｂｎには、ｎ番目のニューロン回路５ａｎとその他のニューロン回路との間の接続の有無を示す重み値Ｗｎ１，Ｗｎ２，…，Ｗｎｎが格納されている。
【００１４】
また、図１には、重み値Ｗｉｊ（１≦ｉ≦ｎ，１≦ｊ≦ｎ）の様子の一例がマトリクス状に示されている。この図では、縦横のそれぞれにニューロン回路５ａ１〜５ａｎの番号（１番目，２番目，３番目，…，ｋ番目，…，ｎ番目）がそれぞれ付されている。なお、図１の例では、重み値Ｗｉｉは、０であり、重み値Ｗｊｉは重み値Ｗｉｊと等しいものとしている。
【００１５】
重み値Ｗｉｊは、ニューロン回路５ａ１〜５ａｎのうち、ｉ番目とｊ番目のニューロン回路間の接続の有無を示す重み値である。また、図１において、相互接続している２つのニューロン回路に対応付けられた重み値（Ｗｉｊ≠０）には、斜線が施されており、相互接続していない２つのニューロン回路に対応付けられた重み値（Ｗｉｊ＝０）には、斜線が施されていない。
【００１６】
たとえば、図１の例では、１番目のニューロン回路５ａ１と、２番目のニューロン回路５ａ２とに対応付けられた重み値Ｗ１２は０ではないので、ニューロン回路５ａ１，５ａ２は相互接続していることが分かる。一方、図１の例では、１番目のニューロン回路５ａ１と、ｋ番目のニューロン回路５ａｋとに対応付けられた重み値Ｗ１ｋは０であるので、ニューロン回路５ａ１，５ａｋは相互接続していないことが分かる。
【００１７】
上記のような重み値は、計算対象の問題に応じて適宜設定され、レジスタ２ｂ１〜２ｂｎに格納される。なお、重み値Ｗｉｉは０であるので、図１の例ではレジスタ２ｂ１〜２ｂｎに格納されていない。上記のような重み値は、レジスタ２ｂ１〜２ｂｎに格納される代わりに、フラッシュメモリなどの半導体記憶装置や、ＲＡＭ（Random Access Memory）などのメモリに格納されてもよい。
【００１８】
ノイズ発生回路３は、制御装置６による制御のもと、ニューロン回路５ａ１〜５ａｎのそれぞれに対してノイズ値を出力する。ノイズ値の例については後述する。
ランダム信号生成回路４は、制御装置６による制御のもと、ニューロン回路５ａ１〜５ａｎのうち、有効にする複数のニューロン回路をランダムに選択するための選択信号を出力する。
【００１９】
ランダム信号生成回路４としては、ＬＦＳＲ（Linear Feedback Shift Registers）などを用いることができる。なお、ランダム信号生成回路４の一例については、後述する（図４参照）。
【００２０】
ニューロン回路５ａ１〜５ａｎのそれぞれは、自身以外の複数のニューロン回路との接続の有無を示す複数の重み値と、複数のニューロン回路のそれぞれの出力信号との積の総和に基づく値（以下、ローカルフィールド値という）を算出する。
【００２１】
そして、ニューロン回路５ａ１〜５ａｎのそれぞれは、ローカルフィールド値に、ノイズ発生回路３から供給されるノイズ値を加算した値と、閾値（たとえば、０）との比較結果に基づき、０または１を出力する。
【００２２】
ニューロン回路５ａ１〜５ａｎの回路図の一例については後述する（図２参照）。
制御装置６は、ノイズ発生回路３やランダム信号生成回路４を制御する。たとえば、制御装置６は、シミュレーテッド・アニーリングを実現するために、ノイズ発生回路３に含まれる増幅回路（図示せず）を制御して、ノイズ値の振幅を徐々に小さくさせる。また、制御装置６は、バス（図示せず）を介してレジスタ部２ａに接続されており、レジスタ部２ａのレジスタ２ｂ１〜２ｂｎに重み値をそれぞれ書き込む。
【００２３】
制御装置６は、たとえば、プロセッサで実現できる。プロセッサは、たとえば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサは、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。また、制御装置６は、ＰＣ（パーソナルコンピュータ）であってもよい。
【００２４】
調停回路１０は、上記の複数の重み値に基づき、ニューロン回路５ａ１〜５ａｎのうち、相互接続されている複数のニューロン回路の複数の出力信号（状態）が同時に変化するとき、そのうち１つ以外の状態の更新を禁止する。
【００２５】
これにより、相互接続されている複数のニューロン回路の状態が同時に更新されることがなくなり、最適解への収束性を改善できる。
なお、前述のように、重み値が０か０ではないかにより、相互接続されている複数のニューロン回路と、相互接続されていない複数のニューロン回路が特定される。
【００２６】
また、調停回路１０は、上記の複数の重み値に基づき、ニューロン回路５ａ１〜５ａｎのうち、相互接続されていない複数のニューロン回路の状態が同時に変化するとき、その状態の更新を許可する。
【００２７】
これにより、収束性に影響を与えない相互接続されていない複数のニューロン回路の状態を同時に更新することができるため、計算時間を短縮できる。
なお、調停回路１０の一例については後述する（図５参照）。
【００２８】
（ニューロン回路の一例）
図２は、ニューロン回路の一例を示す図である。
図２では、ニューロン回路５ａ１〜５ａｎのうち、ニューロン回路５ａ１，５ａｋ，５ａｎの一例が示されている。
【００２９】
なお、図２では、図１のイジング装置１と同様の要素には同じ符号を付しており、それらの説明については省略する。
ニューロン回路５ａ１，５ａｋ，５ａｎは、乗算回路５ｃ１１，５ｃ１ｋ，５ｃ１ｎを有している。さらに、ニューロン回路５ａ１，５ａｋ，５ａｎは、加算回路部５ｄ１，５ｄｋ，５ｄｎ、加算回路５ｅ１，５ｅｋ，５ｅｎ、比較回路５ｆ１，５ｆｋ，５ｆｎを有している。
【００３０】
乗算回路５ｃ１１〜５ｃ１ｎは、レジスタ２ｂ１に格納されている重み値と、調停回路１０から出力されるニューロン回路５ａ１〜５ａｎの状態ｘ１〜ｘｎ（０または１）との積を出力する。乗算回路５ｃｋ１〜５ｃｋｎは、レジスタ２ｂｋに格納されている重み値と、調停回路１０から出力されるニューロン回路５ａ１〜５ａｎの状態ｘ１〜ｘｎとの積を出力する。乗算回路５ｃｎ１〜５ｃｎｎは、レジスタ２ｂｎに格納されている重み値と、調停回路１０から出力されるニューロン回路５ａ１〜５ａｎの状態ｘ１〜ｘｎとの積を出力する。
【００３１】
加算回路部５ｄ１は、乗算回路５ｃ１１〜５ｃ１ｎから出力される値をそれぞれ加算して出力する。加算回路部５ｄｋは、乗算回路５ｃｋ１〜５ｃｋｎから出力される値をそれぞれ加算して出力する。加算回路部５ｄｎは、乗算回路５ｃｎ１〜５ｃｎｎから出力される値をそれぞれ加算して出力する。
【００３２】
加算回路５ｅ１は、加算回路部５ｄ１から出力される値（ローカルフィールド値）に、ノイズ発生回路３から出力されるノイズ値を加算して出力する。加算回路５ｅｋは、加算回路部５ｄｋから出力される値に、ノイズ発生回路３から出力されるノイズ値を加算して出力する。加算回路５ｅｎは、加算回路部５ｄｎから出力される値に、ノイズ発生回路３から出力されるノイズ値を加算して出力する。
【００３３】
比較回路５ｆ１は、ランダム信号生成回路４から供給される選択信号により、無効（または有効）になる。比較回路５ｆ１は、加算回路５ｅ１から出力される値が、閾値（たとえば、０）よりも大きいときにはニューロン回路５ａ１の状態ｘ１として１を、閾値以下のときにはニューロン回路５ａ１の状態ｘ１として０を出力する。比較回路５ｆｋは、ランダム信号生成回路４からの選択信号により、無効（または有効）になる。比較回路５ｆｋは、加算回路５ｅｋから出力される値が、閾値よりも大きいときにはニューロン回路５ａｋの状態ｘｋとして１を、閾値以下のときにはニューロン回路５ａｋの状態ｘｋとして０を出力する。比較回路５ｆｎは、ランダム信号生成回路４からの選択信号により、無効（または有効）になる。比較回路５ｆｎは、加算回路５ｅｎから出力される値が、閾値よりも大きいときにはニューロン回路５ａｎの状態ｘｎとして１を、閾値以下のときにはニューロン回路５ａｎの状態ｘｎとして０を出力する。
【００３４】
なお、ニューロン回路５ａ１〜５ａｎのうち、ニューロン回路５ａ１，５ａｋ，５ａｎ以外についても、ニューロン回路５ａ１，５ａｋ，５ａｎと同様の回路となっている。
以上のような、ニューロン回路５ａ１〜５ａｎは、イジング型のエネルギー関数の演算をハードウェアで実現するものである。なお、イジング型のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００３５】
【数１】
2019071113.tif 000003
【００３６】
右辺の１項目は、全ニューロン回路から選択可能な２つのニューロン回路の全組み合わせについて、漏れと重複なく、２つのニューロン回路の状態と重み値との積を積算したものである。なお、既述の通り、Ｗｉｊ＝Ｗｊｉ、Ｗｉｉ＝０である。
【００３７】
右辺の２項目は、全ニューロン回路のそれぞれのバイアス値と状態との積を積算したものである。ｂｉは、ｉ番目のニューロン回路のバイアス値を示している。
上記のようなエネルギー関数Ｅ（ｘ）をハードウェアで表現するため、図２に示したニューロン回路５ａ１〜５ａｎのそれぞれは、ローカルフィールド値ｈ１〜ｈｎを演算する。たとえば、ｉ番目のニューロン回路におけるローカルフィールド値ｈｉは以下の式（２）で表される。
【００３８】
【数２】
2019071113.tif 000004
【００３９】
右辺の１項目は、ｉ番目のニューロン回路と、複数の他のニューロン回路のそれぞれとの間の接続の有無を示す複数の重み値と、複数の他のニューロン回路のそれぞれの状態との積を積算したものである。
【００４０】
このようなローカルフィールド値ｈｉは、ｉ＝１のときは、加算回路部５ｄ１から出力される値に相当する。なお、図２の例では、バイアス値は０としているが、加算回路部５ｄ１から出力される値にバイアス値を加える加算回路を設けるようにしてもよい。なお、バイアス値は、問題に応じて制御装置６から与えられる。
【００４１】
図２に示したようなニューロン回路５ａ１〜５ａｎでは、シミュレーテッド・アニーリングを行うために、ローカルフィールド値ｈ１〜ｈｎにノイズ値を加えた値に対して、比較回路５ｆ１〜５ｆｎで閾値との比較が行われる。
【００４２】
たとえば、比較回路５ｆ１〜５ｆｎの出力値（ニューロン回路５ａ１〜５ａｎの状態ｘ１〜ｘｎ）が１となる確率が、シグモイド関数に従うようにノイズ値が加えられる。たとえば、ｉ番目のニューロン回路の状態ｘｉが１となる確率Ｐｉ（ｈｉ）が、以下の式（３）の関係になるように、ノイズ値が加えられる。
【００４３】
【数３】
2019071113.tif 000005
【００４４】
式（３）において、Ｔは、実効温度である。
式（３）に示すような確率Ｐｉ（ｈｉ）を得るために、加算するノイズ値ｎｓの確率密度関数ｐ（ｎｓ）は、以下の式（４）のようになる。
【００４５】
【数４】
2019071113.tif 000006
【００４６】
図３は、状態ｘｉが１となる確率Ｐｉ（ｈｉ）の一例を示す図である。
横軸は、ローカルフィールド値ｈｉにノイズ値ｎｓを加算した値を示し、縦軸は、状態ｘｉが１となる確率を示している。
【００４７】
波形３０は、ローカルフィールド値ｈｉに、式（４）に示すような確率密度関数ｐ（ｎｓ）に従うノイズ値ｎｓが加算されたときに、状態ｘｉが１となる確率Ｐｉ（ｈｉ）を示す。波形３１は、ローカルフィールド値ｈｉにノイズ値ｎｓが加算されないときに、状態ｘｉが１となる確率Ｐｉ（ｈｉ）を示す。
【００４８】
波形３１に示すように、ノイズ値ｎｓがローカルフィールド値ｈｉに加算されないときは、ローカルフィールド値ｈｉが、閾値Ｖｔｈ以下では、Ｐｉ（ｈｉ）＝０、閾値Ｖｔｈを超えると、Ｐｉ（ｈｉ）＝１となる。
【００４９】
これに対して、ノイズ値ｎｓがローカルフィールド値ｈｉに加算されるときは、波形３０に示すように、シグモイド関数に従って確率Ｐｉ（ｈｉ）が変化する。
次に、ランダム信号生成回路４の一例について、図４を用いて説明する。
【００５０】
図４は、ランダム信号生成回路の一例を示す図である。
ランダム信号生成回路４は、たとえば、７次の原始多項式（Ｘ７＋Ｘ６＋１）に基づく７ビットのランダム信号を発生させるＬＦＳＲである。ランダム信号生成回路４は、レジスタ４ａ〜４ｇ（フリップフロップ）と、ＸＯＲ回路４ｈと、デコード回路４ｉとを有している。
【００５１】
レジスタ４ａ〜４ｇは、直列に接続されている。また、レジスタ４ａ〜４ｇには、それぞれ初期値を付与するための信号線（“ｓｅｅｄ”）と、初期値を設定するための信号線（“ｒｅｓｅｔ”）とが接続されている。また、レジスタ４ａ〜４ｇは、クロック信号に同期して、動作する。クロック信号は、たとえば、制御装置６から供給される。
【００５２】
ＸＯＲ回路４ｈは、レジスタ４ｆから出力された値と、レジスタ４ｇから出力された値のＸＯＲ演算結果を出力する。ＸＯＲ回路４ｈの出力端子は、初段のレジスタ４ａの入力端子に接続されている。
【００５３】
デコード回路４ｉは、レジスタ４ａ〜４ｇの出力端子（ｏｕｔ０〜ｏｕｔ６）から出力される７ビットのランダム信号をデコードして１２８ビットのデコード信号を出力する。
このようなランダム信号生成回路４では、レジスタ４ａ〜４ｇの出力端子（ｏｕｔ０〜ｏｕｔ６）から、７ビットのランダム信号が出力される。デコード回路４ｉがランダム信号をデコードすることによって、ニューロン回路５ａ１〜５ａｎ（ｎ＝１２８）の比較回路５ｆ１〜５ｆｎが、有効、または無効となる。たとえば、出力端子ｅｎの最下位ビットの値が０のとき、比較回路５ｆ１は無効化される。
【００５４】
なお、ノイズ発生回路３も、ＬＦＳＲを用いて実現できる。
（調停回路１０の一例）
図５は、調停回路の一例を示す図である。
【００５５】
調停回路１０は、メモリ１１、レジスタ部１２、デコード回路１３、ＸＯＲ回路部１４、識別情報抽出回路１５、ニューロン選択回路１６、選択回路１７、接続ニューロン検出回路１８、加算回路１９を有している。また、調停回路１０は、識別情報有無検出回路２０、ＡＮＤ回路部２１を有している。
【００５６】
メモリ１１は、ニューロン回路５ａ１〜５ａｎのそれぞれを識別する識別情報群を記憶している。メモリ１１として、たとえば、フラッシュメモリなどの半導体記憶装置、ＲＡＭなどを用いることができる。
【００５７】
レジスタ部１２は、ニューロン回路５ａ１〜５ａｎの状態ｘ１〜ｘｎを格納するｎ個のレジスタを含んでいる。レジスタ部１２のｎ個のレジスタは、後述する識別情報有無検出回路２０の出力がＨ（High）レベルになっている状態で、ＡＮＤ回路部２１から供給される信号に同期して、ニューロン選択回路１６で選択された状態ｘｉのみを取り込む。
【００５８】
デコード回路１３は、ニューロン選択回路１６が選択する１つのニューロン回路の識別情報に基づき、デコード出力信号を出力する。
ＸＯＲ回路部１４は、レジスタ部１２のｎ個のレジスタにそれぞれ対応して、ｎ個のＸＯＲ回路を含んでいる。たとえば、ｉ番目のＸＯＲ回路は、ｉ番目のレジスタの入力値と出力値のＸＯＲ演算結果を出力する。これにより、ｉ番目のＸＯＲ回路は、ｉ番目のニューロン回路の状態ｘｉの変化を検出する。たとえば、ｉ番目のニューロン回路の状態ｘｉが、ｉ番目のレジスタに格納されている値と異なる値に変化すると、ｉ番目のＸＯＲ回路は、１を出力する。一方、ｉ番目のニューロン回路の状態ｘｉが、ｉ番目のレジスタに格納されている値と同じであるときには、ｉ番目のＸＯＲ回路は、０を出力する。
【００５９】
このようにして、ＸＯＲ回路部１４は、ニューロン回路５ａ１〜５ａｎの状態ｘ１〜ｘｎの変化を表す値を出力する。
識別情報抽出回路１５は、メモリ１１に記憶されている識別情報群を、クロック信号に同期して読み込む。そして、識別情報抽出回路１５は、ＸＯＲ回路部１４からの出力結果に基づき、状態が変化したニューロン回路の識別情報を、その識別情報群から抽出する。以下では、状態が変化したニューロン回路が複数あるものとして、メモリ１１から読み込んだ識別情報群から、状態が変化した複数のニューロン回路の識別情報群が抽出されるものとする。
【００６０】
ニューロン選択回路１６は、識別情報抽出回路１５が抽出した識別情報群から、１つのニューロン回路の識別情報を選択する。たとえば、ニューロン選択回路１６は、識別情報群から、１つのニューロン回路の識別情報をランダムに選択するか、値が最小（または最大）の識別情報を選択する。
【００６１】
選択回路１７は、レジスタ部２ａに格納されている複数の重み値から、ニューロン選択回路１６が選択した識別情報に対応したニューロン回路と、他のニューロン回路との間の接続の有無を示す重み値を選択する。
【００６２】
接続ニューロン検出回路１８は、選択回路１７が選択した重み値を参照して、当該重み値が０であるか否かに基づき、ニューロン選択回路１６が選択した識別情報に対応したニューロン回路に相互接続されている他のニューロン回路を検出する。そして、接続ニューロン検出回路１８は、検出した他のニューロン回路の識別情報を、メモリ１１から取得して出力する。
【００６３】
加算回路１９は、識別情報抽出回路１５から出力される識別情報群から、ニューロン選択回路１６が選択したニューロン回路の識別情報と、接続ニューロン検出回路１８から出力される識別情報とを除く。
【００６４】
識別情報有無検出回路２０は、加算回路１９から出力されている識別情報の有無を検出する。たとえば、識別情報有無検出回路２０は、識別情報があることを検出するたびに、Ｌ（Low）レベルからＨ（High）レベルになる信号を出力する。
【００６５】
ＡＮＤ回路部２１は、レジスタ部１２のｎ個のレジスタにそれぞれ対応して、ｎ個のＡＮＤ回路を含んでいる。たとえば、ｉ番目のＡＮＤ回路は、識別情報有無検出回路２０の出力（Ｈレベル）と、デコード回路１３から供給されるｉ番目のニューロン回路の識別情報に基づくデコード出力信号とのＡＮＤ演算結果をｉ番目のレジスタに出力する。これにより、ｉ番目のＡＮＤ回路は、ｉ番目のニューロン回路の状態ｘｉを更新する。
【００６６】
次に、上記のようなイジング装置１で実行される、計算対象の問題を計算する際に行われる制御処理について、図６を用いて説明する。
図６は、イジング装置で実行される制御処理の一例を示すフローチャートである。
【００６７】
［ステップＳ１］  制御装置６は、レジスタ部２ａなどを初期化する。
［ステップＳ２］  制御装置６は、レジスタ部２ａの各レジスタ２ｂ１〜２ｂｎに、計算対象の問題に応じた重み値を設定する。
【００６８】
なお、このようにして設定された重み値は調停回路１０に供給される。
［ステップＳ３］  制御装置６は、ランダム信号生成回路４に選択信号を出力させ、ランダムに複数のニューロン回路を選択する（有効にする）。
【００６９】
なお、制御装置６は、ニューロン回路の選択を行うたびに、シミュレーテッド・アニーリングを実現するために、ノイズ発生回路３に含まれる増幅回路（図示せず）を制御して、ノイズ値の振幅を徐々に小さくさせる。
【００７０】
ここでは、シミュレーテッド・アニーリングについて、図７を用いて説明する。
図７は、シミュレーテッド・アニーリングの様子を示す図である。
縦軸はエネルギーＥであり、横軸は全ニューロン回路の状態の組み合わせｑＫを示している。組み合わせｑＫは、“０００…０”から“１１１…１”まである。図７では、ノイズの振幅がＷ１、Ｗ２、Ｗ３と小さくなっていくときの、解の収束の様子が示されている。ノイズの振幅を小さくしていくことは、式（４）の実効温度Ｔを小さくしていくことに相当する。
【００７１】
ノイズの振幅がＷ１のとき、解が、局所解（エネルギーが局所的な極小値となる解）ｑｋ１，ｑｋ２，ｑｋ４，ｑｋ５となっても、エネルギーが高くなる方向に変化でき、局所解から脱出できる。ノイズの振幅が、Ｗ２、Ｗ３と徐々に小さくなるにつれて、解の変化は制限されていき、最終的に、最適解（エネルギーが最小値となる解）ｑｋ３に収束する。
【００７２】
［ステップＳ４］  ステップＳ４の処理では、調停回路１０を用いた、調停／更新処理が行われる。ステップＳ４の処理については後述する。
［ステップＳ５］  制御装置６は、調停回路１０から出力される更新を許容するニューロン回路の識別情報の出力回数が、予め決められた回数ｃｎｔ１に達したか否か判定する。
【００７３】
更新を許容するニューロン回路の識別情報の出力回数が、回数ｃｎｔ１に達すると、ステップＳ６の処理が実行され、回数ｃｎｔ１に達しなければ、ステップＳ４からの処理が繰り返される。
【００７４】
［ステップＳ６］  制御装置６は、ステップＳ３によるニューロン回路の選択回数が、予め決められた回数ｃｎｔ２に達したか否かを判定する。
ニューロン回路の選択回数が、回数ｃｎｔ２に達しなければ、ステップＳ３の処理が再び実行され、回数ｃｎｔ２に達すると、制御装置６による制御処理が終了する。
【００７５】
次に、図５に示した調停回路１０を用いた調停／更新処理について、図８を用いて説明する。
図８は、調停回路で実行される調停／更新処理の一例を示すフローチャートである。
【００７６】
［ステップＳ４ａ］  識別情報抽出回路１５は、クロック信号に同期して、メモリ１１から、識別情報群を読み込む。そして、識別情報抽出回路１５は、ＸＯＲ回路部１４からの出力結果に基づき、状態が変化した複数のニューロン回路の識別情報を含む識別情報群を、メモリ１１から読み込んだ識別情報群から抽出して出力する。
【００７７】
［ステップＳ４ｂ］  ニューロン選択回路１６は、識別情報抽出回路１５が抽出した識別情報群から、１つのニューロン回路の識別情報を選択する。たとえば、ニューロン選択回路１６は、識別情報群から、１つのニューロン回路の識別情報をランダムに選択するか、値が最小（または最大）の識別情報を選択する。
【００７８】
［ステップＳ４ｃ］  加算回路１９から出力される識別情報があるときには、識別情報有無検出回路２０は、Ｈレベルの信号を出力する。デコード回路１３は、ニューロン選択回路１６が選択した１つのニューロン回路の識別情報に基づきデコード出力信号を出力する。ＡＮＤ回路部２１は、Ｈレベルの信号と、デコード出力信号とに基づくＡＮＤ演算結果の信号を出力する。レジスタ部１２のｎ個のレジスタは、ＡＮＤ回路部２１が出力する信号に応じて、ニューロン選択回路１６で選択された識別情報に対応する状態ｘｉを更新して、出力する。
【００７９】
［ステップＳ４ｄ］  接続ニューロン検出回路１８は、選択回路１７が選択した重み値を参照して、当該重み値が０であるか否かに基づき、ニューロン選択回路１６が選択した識別情報に対応したニューロン回路に相互接続されている他のニューロン回路を検出する。そして、接続ニューロン検出回路１８は、検出した他のニューロン回路の識別情報を、メモリ１１から取得して出力する。
【００８０】
［ステップＳ４ｅ］  加算回路１９は、識別情報抽出回路１５から出力される識別情報群から、ニューロン選択回路１６が選択したニューロン回路の識別情報と、接続ニューロン検出回路１８から出力される識別情報とを除く。
【００８１】
［ステップＳ４ｆ］  識別情報有無検出回路２０は、加算回路１９から出力されている識別情報の有無を（判定）検出する。識別情報があるときは、ステップＳ４ｂからの処理が繰り返される。識別情報がないときは、調停／更新処理が終了する。
【００８２】
以上のような動作により、各ニューロン回路５ａ１〜５ａｎが出力する状態ｘ１〜ｘｎのうち、ニューロン選択回路１６で選択された識別情報に対応する状態ｘｉが更新されて、出力される。
【００８３】
これにより、相互接続されている複数のニューロン回路の状態が同時に更新されることがなくなり、最適解への収束性の悪化を防げる。また、収束性に影響を与えない相互接続されていない複数のニューロン回路の状態を同時に更新することができるため、計算時間を短縮できる。言い換えると、イジング装置１は、複数のニューロン回路５ａ１〜５ａｎを並列動作させても、最適解への収束性に悪影響が及ぶことなく、計算時間を短縮することができるようになる。
【００８４】
最適化問題では、変数の数が１０３個から１０６個と、非常に多くなる場合があり、計算時間が極めて長くなってしまう。特に、最適解への収束に近づくにつれて、状態の更新により、全体のエネルギーを下げられるニューロン回路の数が減少してしまうために、全体からランダムに選択して有効なニューロン回路を選択できる確率も減少してしまう。このため、状態が変化しない無駄なニューロン回路の動作が増加して、計算時間が非常に長くなってしまう。実際には、有効な更新頻度は１０３回の動作に１回以下となってしまう。
【００８５】
そこで、本実施の形態のイジング装置１は、たとえば、１０００個のニューロン回路を並列動作させると、状態が変化するニューロン回路を検出できる確率は１０００倍向上する。これにより、計算時間の多くを占めていた状態の変化が起きない無駄なニューロン回路の動作の発生確率を１／１０００に減らすことができ、計算時間の大幅な短縮が可能となる。
【００８６】
ところで、ニューロン回路は、図２に示したような回路に限定されない。たとえば、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づく回路を用いることもできる。ＤｅＧｌｏｒｉａアルゴリズムに基づく複数のニューロン回路のそれぞれは、複数の他のニューロン回路の状態に他のニューロン回路との接続の有無を示す重み値を掛けた値の総和に基づく値（ローカルフィールド値）を保持する。そして、複数のニューロン回路のそれぞれは、ローカルフィールド値にノイズ値を加算した値と閾値（たとえば、０）との比較結果に基づき、０または１を出力する。さらに、複数のニューロン回路のそれぞれは、他のニューロン回路の状態の変化時に、調停回路１０から供給される識別情報で指定されたニューロン回路は、変化したニューロン回路の状態に基づいて、ローカルフィールド値の変化分を求め、その変化分を、上記状態の変化前のローカルフィールド値に対して加算または減算することで、ローカルフィールド値を更新する。調停回路１０は、複数のニューロン回路の状態が変化したとき、相互接続されている複数のニューロン回路のうち、１つ以外に対応した識別情報は出力しない。また、調停回路１０は、複数のニューロン回路の状態が変化したとき、相互接続されていない複数のニューロン回路の識別情報を出力する。これにより、ニューロン回路として、図２に示したような回路を用いた場合と同様の効果が得られる。
【００８７】
以上、実施の形態に基づき、本発明のイジング装置及びイジング装置の製造方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【００８８】
１  イジング装置
２ａ  レジスタ部
２ｂ１〜２ｂｎ，４ａ〜４ｇ  レジスタ
３  ノイズ発生回路
４  ランダム信号生成回路
５ａ１〜５ａｎ  ニューロン回路
６  制御装置
１０  調停回路
【図１】
2019071113.tif 000007
【図２】
2019071113.tif 000008
【図３】
2019071113.tif 000009
【図４】
2019071113.tif 000010
【図５】
2019071113.tif 000011
【図６】
2019071113.tif 000012
【図７】
2019071113.tif 000013
【図８】
2019071113.tif 000014