(57)【要約】【課題】小さな物量のハードウェアでも大規模演算を可能とする。【解決手段】最適化装置１１は、制御装置１３が選択したニューロン群のニューロンの値が変化したときのエネルギー変化のうち、そのニューロン群に属する他のニューロンの影響による第１の変化分を算出し、エネルギー変化のうちの第２の変化分と第１の変化分との和に基づき、確率的探索によりニューロンの値の更新の可否を判定し、判定結果に基づき、値を更新または維持する処理を繰り返す。演算処理装置１２は、上記ニューロン群に属さないニューロンの影響による上記第２の変化分と、上記和の初期値を計算する。制御装置１３は、第２の変化分と上記初期値の計算に用いられるデータを演算処理装置１２に送信し、演算処理装置１２から上記初期値を受信し、第１の変化分の計算に用いられるデータと上記初期値を最適化装置１１に送信し、最適化装置１１からニューロン群の値を受信する。【選択図】図１
2019139323.tif 000002
【特許請求の範囲】
【請求項１】
エネルギーを表す評価関数の全状態変数に対応する全ニューロンから選択されたニューロン群に属する第１のニューロンの値が変化したときの前記エネルギーの変化のうち、前記ニューロン群に属する他のニューロンの影響による第１の変化分を算出するとともに、前記エネルギーの変化のうちの第２の変化分と前記第１の変化分との和に基づいて、確率的探索により前記第１のニューロンの値の更新の可否を判定し、前記更新の可否についての判定結果に基づいて前記第１のニューロンの値を更新または維持する更新処理を繰り返す最適化装置と、
前記全ニューロンのうち前記ニューロン群に属さない第２のニューロンの影響による前記第２の変化分と、前記和の初期値を計算する演算処理装置と、
前記全ニューロンから前記ニューロン群を選択し、前記第２の変化分の計算と前記初期値の計算に用いられる第１のデータを前記演算処理装置に送信し、前記演算処理装置から前記初期値を受信し、前記第１の変化分の計算に用いられる第２のデータと前記初期値を前記最適化装置に送信し、前記最適化装置から前記ニューロン群の値を受信する制御装置と、
を有する最適化システム。
【請求項２】
前記第１のデータは、前記全ニューロンのうち、前記第２のニューロンを含む一部のニューロンと前記第１のニューロンとが結合するように値が設定された第１の重み係数群を含み、
前記第２のデータは、前記第１のニューロンと前記ニューロン群のうち他の全てのニューロンとが結合するように値が設定された第２の重み係数群を含む、
請求項１に記載の最適化システム。
【請求項３】
前記最適化装置を含む複数の最適化装置を有し、
前記複数の最適化装置のそれぞれは、互いに異なるニューロン群についての前記更新処理を行い、
前記制御装置は、第１のニューロン群を選択した場合、前回選択した第２のニューロン群についての前記更新処理を行った第１の最適化装置から受信した前記第２のニューロン群の値に基づいて更新された前記和を、前記第１のニューロン群についての前記更新処理を行う第２の最適化装置に送信する、
請求項１または２に記載の最適化システム。
【請求項４】
前記制御装置は、前記第１の重み係数群を前記最適化装置に送信するとともに、前記最適化装置から受信した前記ニューロン群の値から、更新されたニューロンを検出し、前記更新されたニューロンの情報を、前記最適化装置に送信し、
前記最適化装置は、受信した前記第１の重み係数群と前記情報に基づいて、前記和を更新する、
請求項２に記載の最適化システム。
【請求項５】
前記最適化装置を含む複数の最適化装置を有し、
前記複数の最適化装置のそれぞれは、互いに異なるニューロン群についての前記更新処理を行い、
前記制御装置は、前記第１の重み係数群を前記複数の最適化装置に送信するとともに、前記ニューロン群についての前記更新処理を行った第１の最適化装置から受信した前記ニューロン群の値から、更新されたニューロンを検出し、前記更新されたニューロンの情報を、前記複数の最適化装置のうち、前記第１の最適化装置以外の第２の最適化装置に送信し、
前記第２の最適化装置は、受信した前記第１の重み係数群と前記情報に基づいて、前記和を更新する、
請求項２に記載の最適化システム。
【請求項６】
エネルギーを表す評価関数の全状態変数に対応する全ニューロンから選択されたニューロン群に属する第１のニューロンの値が変化したときの前記エネルギーの変化のうち、前記ニューロン群に属する他のニューロンの影響による第１の変化分の計算に用いられるデータと、前記全ニューロンのうち前記ニューロン群に属さない第２のニューロンの影響による前記エネルギーの変化の第２の変化分と前記第１の変化分との和の初期値を記憶する記憶部と、
前記データに基づいて、前記第１の変化分を算出するとともに、前記和に基づいて、確率的探索により前記第１のニューロンの値の更新の可否を判定し、前記更新の可否についての判定結果に基づいて前記第１のニューロンの値を更新または維持する更新処理を繰り返す確率的探索回路と、
を有する最適化装置。
【請求項７】
最適化システムが有する最適化装置が、エネルギーを表す評価関数の全状態変数に対応する全ニューロンから選択されたニューロン群に属する第１のニューロンの値が変化したときの前記エネルギーの変化のうち、前記ニューロン群に属する他のニューロンの影響による第１の変化分を算出するとともに、前記エネルギーの変化のうちの第２の変化分と前記第１の変化分との和に基づいて、確率的探索により前記第１のニューロンの値の更新の可否を判定し、前記更新の可否についての判定結果に基づいて前記第１のニューロンの値を更新または維持する更新処理を繰り返し、
前記最適化システムが有する演算処理装置が、前記全ニューロンのうち前記ニューロン群に属さない第２のニューロンの影響による前記第２の変化分と、前記和の初期値を計算し、
前記最適化システムが有する制御装置が、前記全ニューロンから前記ニューロン群を選択し、前記第２の変化分の計算と前記初期値の計算に用いられる第１のデータを前記演算処理装置に送信し、前記演算処理装置から前記初期値を受信し、前記第１の変化分の計算に用いられる第２のデータと前記初期値を前記最適化装置に送信し、前記最適化装置から前記ニューロン群の値を受信する、
最適化システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化システム、最適化装置及び最適化システムの制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置（イジングマシンまたはボルツマンマシンと呼ばれる場合もある）がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
最適化装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、最適化装置に含まれる複数のユニット（ビット）のそれぞれが、他のビットの状態と、他のビットと自身のビットとの結合の強さを示す重み係数（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の最小値が得られる各ビットの状態の組み合わせを、解として求める。
【０００４】
なお、ニューラルネットワーク技術の例として、複数のニューラルネットワーク回路を接続してネットワーク規模の拡張を行うものがあった（たとえば、特許文献１参照）。また、ニューラルネットワークの接続情報を記憶装置に記憶し、その接続情報を書き換えることで、ニューラルネットワークの接続状態を変更して小規模なニューラルネットワークから大規模なニューラルネットワークまで対応させる技術があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１９１９５１号公報
【特許文献２】特開平８−２２４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
確率的探索法により多数の繰り返し演算を行う最適化装置を、ハードウェアで実現する場合、最適化問題が大規模になるほど（ビット数が増加するほど）ハードウェアの物量が増大してしまう問題がある。
【０００７】
１つの側面では、本発明は、小さな物量のハードウェアでも大規模演算が可能な最適化システム、最適化装置及び最適化システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの実施態様では、エネルギーを表す評価関数の全状態変数に対応する全ニューロンから選択されたニューロン群に属する第１のニューロンの値が変化したときの前記エネルギーの変化のうち、前記ニューロン群に属する他のニューロンの影響による第１の変化分を算出するとともに、前記エネルギーの変化のうちの第２の変化分と前記第１の変化分との和に基づいて、確率的探索により前記第１のニューロンの値の更新の可否を判定し、前記更新の可否についての判定結果に基づいて前記第１のニューロンの値を更新または維持する更新処理を繰り返す最適化装置と、前記全ニューロンのうち前記ニューロン群に属さない第２のニューロンの影響による前記第２の変化分と、前記和の初期値を計算する演算処理装置と、前記全ニューロンから前記ニューロン群を選択し、前記第２の変化分の計算と前記初期値の計算に用いられる第１のデータを前記演算処理装置に送信し、前記演算処理装置から前記初期値を受信し、前記第１の変化分の計算に用いられる第２のデータと前記初期値を前記最適化装置に送信し、前記最適化装置から前記ニューロン群の値を受信する制御装置と、を有する最適化システムが提供される。
【０００９】
また、１つの実施態様では、最適化装置が提供される。
また、１つの実施態様では、最適化システムの制御方法が提供される。
【発明の効果】
【００１０】
１つの側面では、小さな物量のハードウェアでも大規模演算が可能となる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の最適化システムの一例を示す図である。
【図２】第１の実施の形態の最適化システムで行われる演算の一例を説明する模式図である。
【図３】第２の実施の形態の最適化システムの一例を示す図である。
【図４】最適化装置の一例を示す図である。
【図５】コントローラの動作の一例の流れを示すフローチャートである。
【図６】ｋをランダムに選択する例を示す図である。
【図７】ｋを所定の順序で選択する例を示す図である。
【図８】ＣＰＵの動作の一例の流れを示すフローチャートである。
【図９】最適化装置の動作の一例の流れを示すフローチャートである。
【図１０】第３の実施の形態の最適化システムの一例を示す図である。
【図１１】第３の実施の形態の最適化システムにおけるコントローラの動作の一例の流れを示すフローチャートである。
【図１２】コントローラにより２回目以降に選択されたｋに対応する最適化装置の動作の一例の流れを示すフローチャートである。
【図１３】第４の実施の形態の最適化システムの一例を示す図である。
【図１４】第４の実施の形態の最適化システムにおけるコントローラの動作の一例の流れを示すフローチャートである。
【図１５】コントローラによるｋの選択が２回目以降の場合の最適化装置の動作の一例の流れを示すフローチャートである。
【図１６】第５の実施の形態の最適化システムの一例を示す図である。
【図１７】第５の実施の形態の最適化システムにおけるコントローラの動作の一例の流れを示すフローチャートである。
【図１８】コントローラにより２回目以降に選択されたｋに対応する最適化装置の動作の一例の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
以下に示す最適化システムは、エネルギーを表す評価関数である、イジング型のエネルギー関数を用いて、巡回セールスマン問題などの最適化問題を計算するシステムである。イジング型のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００１３】
【数１】
2019139323.tif 000003
【００１４】
右辺の１項目は、全ニューロン（全ビット）から選択可能な２つのニューロンの全組み合わせについて、漏れと重複なく、２つのニューロンの値（０または１）と重み係数との積を積算したものである。ｘｉは、ｉ番目のニューロンの値、ｘｊは、ｊ番目のニューロンの値であり、Ｗｉｊは、ｉ番目とｊ番目のニューロンの結合の強さを示す重み係数である。なお、Ｗｉｊ＝Ｗｊｉ、Ｗｉｉ＝０である。
【００１５】
右辺の２項目は、全ニューロンのそれぞれのバイアスとニューロンの値との積の総和を求めたものである。ｂｉは、ｉ番目のニューロンのバイアスを示している。
また、ｉ番目のニューロンのスピン反転（値の変化）に伴うエネルギー変化ΔＥｉは、以下の式（２）で表される。
【００１６】
【数２】
2019139323.tif 000004
【００１７】
式（２）において、ｉ番目のニューロンの値ｘｉが１のとき、２ｘｉ−１は１となり、値ｘｉが０のとき、２ｘｉ−１は−１となる。なお、以下の式（３）で表されるｈｉはローカルフィールド（局所場）と呼ばれ、値ｘｉに応じてローカルフィールドｈｉに符号（＋１または−１）を乗じたものがエネルギー変化ΔＥｉである。
【００１８】
【数３】
2019139323.tif 000005
【００１９】
図１は、第１の実施の形態の最適化システムの一例を示す図である。
最適化システム１０は、上記の式（１）で表されるエネルギー関数Ｅ（ｘ）の値が最小になる、または所定の時間内（または所定の演算回数）において最小となるニューロンの値の組み合わせを、確率的探索により計算するシステムである。
【００２０】
第１の実施の形態の最適化システム１０は、最適化装置１１、演算処理装置１２、制御装置１３を有する。
最適化装置１１は、全ニューロンのうち、制御装置１３により選択されたニューロン群に属するニューロンの値が変化したときのエネルギーの変化のうち、そのニューロン群に属する他のニューロンの影響による変化分（以下第１の変化分という）を算出する。なお、第１の変化分の計算に用いられるデータは、制御装置１３から送信される。また、最適化装置１１は、上記エネルギーの変化のうち、上記ニューロン群に属さないニューロンの影響による変化分（以下第２の変化分という）と第１の変化分との和に基づいて、確率的探索によりニューロンの値の更新の可否を判定する。以下、第１の変化分と第２の変化分の和をローカルフィールドｈｉ（ｋ）という。そして、最適化装置１１は、更新の可否についての判定結果に基づいてそのニューロンの値を更新または維持する。最適化装置１１は、上記のような処理を繰り返す。なお、ローカルフィールドｈｉ（ｋ）の初期値は演算処理装置１２にて算出され、制御装置１３を介して、最適化装置１１に供給される。
【００２１】
最適化装置１１は、たとえば、１チップで実現される。また、最適化装置１１は、記憶部１１ａと確率的探索回路１１ｂとを有する。
記憶部１１ａは、たとえば、上記の第１の変化分の計算に用いられるデータ（たとえば、重み係数、バイアス及びニューロンの値）とローカルフィールドｈｉ（ｋ）の初期値を記憶する。記憶部１１ａとして、ＲＡＭ（Random Access Memory）などの揮発性メモリ、または、フラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）などの不揮発性メモリを用いることができる。
【００２２】
確率的探索回路１１ｂは、ローカルフィールドｈｉ（ｋ）に基づいて、確率的探索により決定されたニューロン群に属するニューロンの値の更新の可否を判定し、更新の可否についての判定結果に基づいてそのニューロンの値を更新または維持する更新処理を繰り返す。この繰り返しの処理の１回目の処理ではローカルフィールドｈｉ（ｋ）の初期値が用いられ、計算された第１の変化分によって、その初期値は更新される。確率的探索回路１１ｂの例については後述する。
【００２３】
演算処理装置１２は、制御装置１３から、上記第２の変化分の計算とローカルフィールドｈｉ（ｋ）の初期値に用いられるデータを受信する。そして、演算処理装置１２は、第２の変化分と、ローカルフィールドｈｉ（ｋ）の初期値を計算する。また、演算処理装置１２は、計算したローカルフィールドｈｉ（ｋ）の初期値を制御装置１３に送信する。演算処理装置１２は、計算した第２の変化分を制御装置１３に送信してもよい。
【００２４】
演算処理装置１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、演算処理装置１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、ＲＡＭなどのメモリに記憶されたプログラムを実行する。
【００２５】
制御装置１３は、最適化装置１１に値の更新処理を行わせるニューロン群を全ニューロンから選択する。また、制御装置１３は、上記第２の変化分の計算とローカルフィールドｈｉ（ｋ）の初期値の計算に用いられるデータ（たとえば、重み係数及びニューロンの値）を演算処理装置１２に送信する。そして、制御装置１３は、ローカルフィールドｈｉ（ｋ）の初期値を受信し、第１の変化分の計算に用いられるデータとローカルフィールドｈｉ（ｋ）の初期値を最適化装置１１に送信する。また、制御装置１３は、最適化装置１１から、ニューロン群の値を最適化装置１１から受信する。
【００２６】
制御装置１３は、たとえば、ＡＳＩＣやＦＰＧＡなどの特定用途の電子回路を含むコントローラである。なお、制御装置１３は、ＣＰＵやＤＳＰなどのプロセッサであってもよい。
【００２７】
制御装置１３は、第１の変化分の計算、第２の変化分の計算及び、ローカルフィールドｈｉ（ｋ）の初期値の計算に用いられるデータを記憶する記憶部１３ａを有する。記憶部１３ａに記憶されるデータとして、全ニューロンの初期値、全ニューロンから２つのニューロンを取り出す全組み合わせのそれぞれの結合の強さを示す重み係数、ローカルフィールドｈｉ（ｋ）の初期値がある。記憶部１３ａは、たとえば、フラッシュメモリ、ＥＥＰＲＯＭ、ＨＤＤ（Hard Disk Drive）などの不揮発性メモリである。
【００２８】
なお、演算処理装置１２と制御装置１３は、１つのプロセッサであってもよい。
以下、第１の実施の形態の最適化システム１０の動作例を説明する。
図１には、ｍ個のニューロン群１５ａ１，１５ａ２，…，１５ａｋ，…，１５ａｍが示されている。ニューロン群１５ａ１〜１５ａｍは、それぞれ複数のニューロンを含む。ニューロン群１５ａ１〜１５ａｍのそれぞれに含まれるニューロン数をｎとすると、全ニューロン数Ｎは、Ｎ＝ｍ×ｎである。たとえば、ニューロン群１５ａ１は、ニューロン１５ｂ１，１５ｂ２，１５ｂ３，１５ｂ４，１５ｂ５，１５ｂ６，１５ｂ７，１５ｂ８を有する。
【００２９】
なお、図１の例では、ニューロン１５ｂ１〜１５ｂ８のそれぞれは、互いに結合している。つまり、ニューロン１５ｂ１〜１５ｂ８は、全結合状態にある。また、ニューロン１５ｂ１〜１５ｂ８のそれぞれは、ニューロン群１５ａ２〜１５ａｍに含まれる一部のニューロンに結合している。
【００３０】
最適化問題のマッピング時（重み係数の設定＝プログラミング）にニューロン群間の結合数が制約となる。しかし、たとえば、各ニューロン群に含まれるニューロン数をｎ＝１０２４とすると、ニューロン群間の結合数が、ニューロン群内での結合数の１／１０程度であれば、多くの場合問題なくプログラミングが可能である。
【００３１】
たとえば、ニューロン群間の結合数を１２８個、つまり各ニューロンが他のニューロン群の１２８個のニューロンと結合可能とすると、１つのニューロン群内で用意すべき重み係数の数は、１０２４２＋１０２４×１２８となる。ニューロン群の数が、たとえば、４のとき、１０２４×４個のニューロンを相互接続させる場合には、重み係数の数は、４．５２×１０６程度になるため、ニューロン群間の接続数を限定することで、用意すべき重み係数の数を減らすことができる。つまり、記憶部１３ａなどに記憶する重み係数の数を減らせることで、装置規模を縮小できる。
【００３２】
図１に示すように、重み係数行列のうち、対角部分にある重み係数群（Ｗｉｊ（１），Ｗｉｊ（２），…，Ｗｉｊ（ｋ），…，Ｗｉｊ（ｍ））のそれぞれは、ニューロン群１５ａ１〜１５ａｍのそれぞれに含まれるニューロン間の結合の強さを示す重み係数からなる。たとえば、重み係数群Ｗｉｊ（１）は、ニューロン群１５ａ１に含まれるニューロン１５ｂ１〜１５ｂ８から２つのニューロンを取り出す全組み合わせのそれぞれの結合の強さを示す重み係数からなる。
【００３３】
一方、重み係数行列のうち、非対角部分にある重み係数群（たとえば、Ｗｉｊ（２１），…，Ｗｉｊ（ｋ１），…，Ｗｉｊ（ｍ１）など）のそれぞれは、異なるニューロン群に属するニューロン間の結合の強さを示す重み係数からなる。なお、異なるニューロン群に属するニューロン同士は互いに結合していないものが多いため、非対角部分にある重み係数群に含まれる重み係数は、値が０であるものが多い。
【００３４】
最適化装置１１は、たとえば、上記のようなニューロン群１５ａ１〜１５ａｍのうちから、制御装置１３により選択されたニューロン群に含まれる各ニューロンについてのローカルフィールドに基づいて、各ニューロンの値の更新処理を行う。
【００３５】
たとえば、ｋ番目のニューロン群１５ａｋが選択された場合の、ニューロン群１５ａｋに含まれる複数のニューロンのうちｉ番目のニューロンが変化するときのローカルフィールドｈｉ（ｋ）は、以下の式（４）で表される。
【００３６】
【数４】
2019139323.tif 000006
【００３７】
式（４）において、右辺の１項目の積和演算部分と２項目のバイアスとの和が、ｋ番目のニューロン群１５ａｋに含まれる他のニューロン（ｉ番目のニューロン以外のニューロン）の影響によるエネルギーの変化分（前述の第１の変化分に相当する）を示す。また、右辺の３項目の積和演算部分は、ニューロン群１５ａｋに属さないニューロン（他のニューロン群に属するニューロン）の影響によるエネルギーの変化分（前述の第２の変化分に相当する）を示す。
【００３８】
最適化装置１１は、第１の変化分を計算し、第２の変化分について計算しない。最適化装置１１は、演算処理装置１２が計算した、ローカルフィールドｈｉ（ｋ）の初期値を、制御装置１３を介して受信する。そして、最適化装置１１の確率的探索回路１１ｂは、第１の変化分の計算結果に基づいて、式（４）で示されるローカルフィールドｈｉ（ｋ）を更新する。なお、確率的探索回路１１ｂは、たとえば、ノイズ値（乱数）をローカルフィールドｈｉ（ｋ）に加え、閾値との比較によってｉ番目のニューロンの値の更新の可否を判定し、その判定結果に基づいてｉ番目のニューロンの値を更新または維持する。確率的探索回路１１ｂは、このような処理を、ニューロン群１５ａｋに属する各ビットについて、多数回（たとえば、１００万回）繰り返す。あるニューロン群についての第２の変化分及びローカルフィールドｈｉ（ｋ）の初期値の計算は１回行えばよいため、演算処理装置１２の負荷は少ない。以下その理由を示す。
【００３９】
図２は、第１の実施の形態の最適化システムで行われる演算の一例を説明する模式図である。
図２では、説明を簡単にするため、全ニューロン数Ｎが８、ニューロン群の数が２つ、図１に示した重み係数行列が、４つの重み係数群２０，２１，２２，２３からなる例（つまり、図１においてＭ＝２の場合の例）が示されている。
【００４０】
たとえば、重み係数群２０は、図１のニューロン群１５ａ１に含まれるニューロン（ただし、ニューロン数は４つ）間の結合の強さを示す重み係数からなり、図１のＷｉｊ（１）に相当する。重み係数群２３は、図１のニューロン群１５ａ２に含まれるニューロン間の結合の強さを示す重み係数からなり、図１のＷｉｊ（２）に相当する。
【００４１】
積算部２４ａ，２４ｂ，２４ｃ，２４ｄ，２４ｅ，２４ｆ，２４ｇ，２４ｈのそれぞれは、担当する列の重み係数ＷＩＪとその重み係数ＷＩＪのＪで示されるインデックスのニューロンの値との積を積算して、ローカルフィールドｈＩを算出する。
【００４２】
たとえば、積算部２４ａは、Ｗ１１ｘ１、Ｗ１２ｘ２、Ｗ１３ｘ３、Ｗ１４ｘ４、Ｗ１５ｘ５、Ｗ１６ｘ６、Ｗ１７ｘ７、Ｗ１８ｘ８を積算してローカルフィールドｈ１を算出する。
【００４３】
判定部２５ａ，２５ｂ，２５ｃ，２５ｄ，２５ｅ，２５ｆ，２５ｇ，２５ｈのそれぞれは、ローカルフィールドｈＩにバイアスやノイズ値を加え、閾値との比較によって値ｘＩの更新の可否を判定し、その判定結果に基づいて値ｘＩを更新または維持する。
【００４４】
たとえば、判定部２５ａは、ローカルフィールドｈ１にバイアスやノイズ値を加え、閾値（たとえば、０）との比較によって値ｘ１の更新の可否を判定し、その判定結果に基づいて値ｘ１を更新または維持する。
【００４５】
なお、図２では、重み係数ＷＩＪ、値ｘＩ、ローカルフィールドｈＩのＩやＪは、各ニューロン群内でのニューロンのインデックスではなく、全ニューロンに対するグローバルインデックスである。たとえば、ｋ番目のニューロン群１５ａｋにおいてｉ番目のニューロンの値をｘｉ（ｋ）と表記すると、ｘｉ（ｋ）＝ｘ（ｋ−１）×ｎ＋ｉであり、（ｋ−１）×ｎ＋ｉがグローバルインデックスのＩである。同様に、ｋ番目のニューロン群１５ａｋにおいてｉ番目のニューロンのローカルフィールドをｈｉ（ｋ）と表記すると、ｈｉ（ｋ）＝ｈ（ｋ−１）×ｎ＋ｉである。また、ｋ番目のニューロン群１５ａｋに含まれるｉ番目のニューロンとｊ番目のニューロンの結合の強さを示す重み係数をＷｉｊ（ｋ）と表記すると、Ｗｉｊ（ｋ）＝Ｗ（ｋ−１）×ｎ＋ｉ，（ｋ−１）×ｎ＋ｊであり、（ｋ−１）×ｎ＋ｊが、グローバルインデックスのＪである。
【００４６】
最適化システム１０において、制御装置１３によりグローバルインデックスＩが１から４までのニューロンによるニューロン群１５ａ１が選択されたものとする。この場合、最適化装置１１では、シミュレーテッド・アニーリングなどの確率的探索により値ｘ１〜ｘ４の更新の可否を判定し、更新または維持を決定する処理を多数回繰り返す。このとき、値ｘ１〜ｘ４と重み係数群２０とを用いた積和演算、すなわち、前述の第１の変化分の計算は毎回行われる。これに対して、値ｘ５〜ｘ８の更新は行われないため、重み係数群２２と値ｘ５〜ｘ８とを用いた積和演算、すなわち、前述の第２の変化分の計算は１回でよい。
【００４７】
このため、最適化装置１１は、制御装置１３を介し、演算処理装置１２が計算したローカルフィールドｈｉ（ｋ）（図２の例ではｈ１〜ｈ４）初期値を受信し、その後は、毎回計算される第１の変化分により、ローカルフィールドｈｉ（ｋ）を更新する。つまり、第２の変化分とローカルフィールドｈｉ（ｋ）の初期値の計算は１回行えばよい。
【００４８】
繰り返し処理が所定の回数行われた場合、制御装置１３は、最適化装置１１に更新処理を行わせる次のニューロン群１５ａ２（グローバルインデックスＩが５から８までのニューロンによるニューロン群）を選択する。その後、同様の処理が繰り返される。
【００４９】
制御装置１３は、たとえば、ニューロン群１５ａ２についての更新処理が所定の回数行われた後に得られる値ｘ１〜ｘ８を、最適化問題の解として出力する。なお、制御装置１３は、再度、ニューロン群１５ａ１についての演算を最適化装置１１に行わせてもよい。
【００５０】
以上のような第１の実施の形態の最適化システム１０によれば、異なるニューロン群の影響によるエネルギーの変化分（第２の変化分）の計算を演算処理装置１２に行わせることで、最適化装置１１のハードウェアの物量を減らせる。たとえば、図２に示したような積算部２４ａ〜２４ｈを最適化装置１１に実装する際のハードウェアの物量を減らせる。また、最適化装置１１の記憶部１１ａに記憶する重み係数の数を減らせるため、記憶部１１ａの容量を小さくできる。これにより、小さな物量のハードウェアでも大規模な演算が可能になる。また、選択したニューロン群に属するニューロンと、そのニューロン群に属さないニューロンの結合の強さを示す重み係数の、最適化装置１１へのロードが不要になるため、計算時間が短縮するとともに、消費電力を削減できる。また、最適化問題の規模が変わっても、１つの最適化装置１１により対応できるため、柔軟性が高い。
【００５１】
（第２の実施の形態）
図３は、第２の実施の形態の最適化システムの一例を示す図である。
最適化システム３０は、最適化装置３１、ＣＰＵ３２、コントローラ３３、全体制御装置３４を有する。
【００５２】
最適化装置３１は、図１に示した最適化装置１１と同様の機能を有する。ＣＰＵ３２は、図１に示した演算処理装置１２の一例である。コントローラ３３は、図１に示した制御装置１３の一例である。
【００５３】
全体制御装置３４は、たとえば、ＰＣ（Personal Computer）であり、最適化問題の計算処理の開始や終了などの指定をコントローラ３３に対して行う。
図４は、最適化装置の一例を示す図である。
【００５４】
図４の最適化装置３１の例は、ニューラルネットワークのイジング型のエネルギー関数の演算を、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づく小規模なハードウェアで行うものである。
【００５５】
最適化装置３１は、たとえば、１チップの半導体集積回路であり、それぞれがニューロンの値を出力するニューロン回路４０ａ１，４０ａ２，…，４０ａｎ、メモリ４０ｂ、制御回路４０ｃ、ノイズ発生回路４０ｄ、更新制御回路４０ｅを有する。ニューロン回路４０ａ１〜４０ａｎ、制御回路４０ｃ、ノイズ発生回路４０ｄ、更新制御回路４０ｅを含む回路は、図１に示した確率的探索回路１１ｂの一例である。ニューロン回路４０ａ１〜４０ａｎが出力する値は、たとえば、図１に示したニューロン群１５ａ１〜１５ａｍのうちの１つのニューロン群の値に相当する。
【００５６】
図４では、ニューロン回路４０ａ１の一例が示されている。他のニューロン回路４０ａ２〜４０ａｎも同様の回路により実現できる。
ニューロン回路４０ａ１は、レジスタ４１、選択回路４２，４３、乗算回路４４、加算回路４５、レジスタ４６、加算回路４７、比較回路４８、排他的論理和回路であるＸＯＲ回路４９、レジスタ５０を有する。
【００５７】
レジスタ４１は、ｎ個の重み係数Ｗ１１，Ｗ１２，…，Ｗ１ｎを格納する。重み係数Ｗ１１〜Ｗ１ｎは、たとえば、全体制御装置３４などのコンピュータにより計算対象の問題に応じて予め計算され、コントローラ３３によって最適化装置３１に供給され、メモリ４０ｂに記憶される。そして、重み係数Ｗ１１〜Ｗ１ｎは、制御回路４０ｃによって、メモリ４０ｂから読み出され、レジスタ４１に格納される。
【００５８】
選択回路４２は、更新制御回路４０ｅが出力するインデックスに基づいて、レジスタ４１に格納されている重み係数Ｗ１１〜Ｗ１ｎのうち１つを選択して出力する。
たとえば、インデックス＝ｎが選択回路４２に入力されたとき、選択回路４２は、重み係数Ｗ１ｎを選択する。
【００５９】
計算の収束性を考慮して一度に１つだけのニューロンの値の変化を許容する場合、値が更新されるニューロンの結合先では、元のローカルフィールドに対して、その更新による変化分を加算または減算すればよい。
【００６０】
たとえば、インデックス＝ｉのニューロンと結合するインデックス＝ｊのニューロンの値ｘｊ（０または１）が、１−ｘｊに変化したとき、インデックス＝ｉのニューロンのローカルフィールドの変化分Δｈｉは、以下の式（５）で表される。
【００６１】
【数５】
2019139323.tif 000007
【００６２】
式（５）において、１−２ｘｊは、値ｘｊが、０から１に変化したときには、＋１となり、値ｘｊが、１から０に変化したときには、−１となる。
選択回路４３は、式（５）の１−２ｘｊの演算を実現するものであり、更新制御回路４０ｅが選択したニューロン（値の更新が許容されたニューロン）の更新後の値に基づき、１または−１を選択して出力する。更新後の値が０のときには、選択回路４３は、−１を選択して出力し、更新後の値が１のときには、選択回路４３は、１を選択して出力する。
【００６３】
乗算回路４４は、選択回路４２が出力する重み係数と、選択回路４３が出力する値との積を出力する。
加算回路４５は、乗算回路４４が出力する値と、レジスタ４６に格納されている値とを加算して出力する。
【００６４】
レジスタ４６は、クロック信号ｃｌｋに同期して、加算回路４５が出力する値を取り込む。レジスタ４６は、たとえば、フリップフロップである。なお、レジスタ４６には、初期値として、式（４）に示したローカルフィールドｈｉ（ｋ）の初期値が格納される。ローカルフィールドｈｉ（ｋ）の初期値は、ＣＰＵ３２によって計算され、コントローラ３３によって最適化装置３１に送信され、メモリ４０ｂに記憶される。ニューロン回路４０ａ１には、たとえば、レジスタ４６が、メモリ４０ｂから読み出された値を取り込むか、加算回路４５が出力する値を取り込むか選択する選択回路が設けられるが、図示が省略されている。なお、クロック信号ｃｌｋは、たとえば、制御回路４０ｃから供給される。
【００６５】
加算回路４７は、レジスタ４６が出力するローカルフィールドｈ１に、ノイズ発生回路４０ｄが出力するノイズ値を加算して出力する。
比較回路４８は、加算回路４７が出力する値が、閾値（たとえば、０）以上のときには０を出力し、閾値より小さいときには１を出力する。
【００６６】
ＸＯＲ回路４９は、比較回路４８が出力する値と、レジスタ５０に格納されている値とに基づきインデックス＝１のニューロンの値の更新の可否を示す値を出力する。たとえば、ＸＯＲ回路４９は、比較回路４８が出力する値と、レジスタ５０に格納されている値が一致しているときは更新が否であることを示す０を出力し、異なるときは更新が可能であることを示す１を出力する。
【００６７】
レジスタ５０は、インデックス＝１のニューロンの値ｘ１を保持している。なお、値ｘ１の初期値は、メモリ４０ｂから供給される。ニューロン回路４０ａ１には、たとえば、レジスタ５０が、メモリ４０ｂから読み出された値を取り込むか、比較回路４８が出力する値を取り込むか選択する選択回路が設けられるが、図示が省略されている。
【００６８】
メモリ４０ｂは、コントローラ３３によって選択されたニューロン群の値の初期値とローカルフィールドｈｉ（ｋ）の初期値と選択されたニューロン群に属するニューロン間の重み係数を記憶する。メモリ４０ｂとして、ＲＡＭなどの揮発性メモリ、または、フラッシュメモリやＥＥＰＲＯＭなどの不揮発性メモリを用いることができる。
【００６９】
制御回路４０ｃは、メモリ４０ｂに記憶されたデータの読み出しや、コントローラ３３から供給されるデータのメモリ４０ｂへの書き込みを制御する。また、制御回路４０ｃは、ニューロン回路４０ａ１〜４０ａｎへのクロック信号ｃｌｋの供給や、ノイズ発生回路４０ｄが出力するノイズの幅の制御を行ってもよい。
【００７０】
ノイズ発生回路４０ｄは、シミュレーテッド・アニーリングを行うために、ノイズ値を生成する。ノイズ発生回路４０ｄとして、たとえば、ＬＦＳＲ（Linear Feedback Shift Registers）などを用いることができる。なお、シミュレーテッド・アニーリングの際、ノイズ発生回路４０ｄは、たとえば、制御回路４０ｃの制御のもと、ノイズ幅を徐々に小さくする。
【００７１】
更新制御回路４０ｅは、ニューロン回路４０ａ１〜４０ａｎが出力する、インデックス＝１〜ｎのそれぞれのニューロンの値ｘ１〜ｘｎと、各ニューロンの値の更新の可否を示す値とを受ける。そして、更新制御回路４０ｅは、各ニューロンの値の更新の可否を示す値に基づき、値が更新できると判定されたニューロンがある場合には、そのニューロンを１つ選択する。さらに更新制御回路４０ｅは、選択したニューロンのインデックスと更新後の値を、ニューロン回路４０ａ１〜４０ａｎに供給する。
【００７２】
たとえば、更新制御回路４０ｅは、複数のニューロンの値の更新が可能である場合、そのうち１つを、乱数値に基づきランダムに選択して、そのニューロンのインデックスと更新後の値とを出力する。図１では、インデックス＝ｊと、ニューロンの値ｘｊが更新制御回路４０ｅから出力される例が示されている。
【００７３】
以下、図３に示した最適化システム３０の動作例を説明する。
図５は、コントローラの動作の一例の流れを示すフローチャートである。
コントローラ３３は、メモリ３３ａを有しており、メモリ３３ａには、図１に示したような重み係数行列と、全ニューロンの初期値及びローカルフィールドの初期値が記憶されている。メモリ３３ａとして、フラッシュメモリ、ＥＥＰＲＯＭ、ＨＤＤなどの不揮発性メモリを用いることができる。
【００７４】
コントローラ３３は、最適化装置３１に供給する重み係数群、ニューロンの初期値及びローカルフィールドｈｉ（ｋ）の初期値を決定するために、ｋを選択する（ステップＳ１０）。これにより、たとえば、図１に示したようなニューロン群１５ａ１〜１５ａｍのうち、どのニューロン群についての更新処理を最適化装置３１に担当させるかが決定する。つまり、ｋの選択は、ニューロン群の選択に相当する。なお、ｋの初期値は、全体制御装置３４により指定されてもよい。たとえば、図１の例において、ｋ＝１の場合、ニューロン群１５ａ１についての更新処理が最適化装置３１にて実行されることになる。
【００７５】
ｋの選択後、コントローラ３３は、選択したｋに基づいて、ｘｉ（Ｌ）、Ｗｉｊ（Ｌ）、ｘｉ（ｋ）、Ｗｉｊ（ｋ）を、ＣＰＵ３２へ送信する（ステップＳ１１）。ｘｉ（Ｌ）、Ｗｉｊ（Ｌ）は、ローカルフィールドｈｉ（ｋ）の前述の第２の変化分（以下、変化分ｈｉ（Ｌ）という）の計算に用いられるデータである。なお、以下では、ｘｉ（Ｌ）は選択されたニューロン群に属さないニューロン群の値であるものとする。また、ｘｉ（ｋ）は選択されたニューロン群の値であるものとする。
【００７６】
たとえば、図１の例において、ｋ＝１の場合、ｘｉ（Ｌ）は、ニューロン群１５ａ１以外の複数のニューロンの値である。そのニューロンの値として、メモリ３３ａに記憶されている初期値、または、以前の処理でそのニューロンの値が更新されている場合には、更新後の値が用いられる。なお、ｋ＝１の場合、Ｗｉｊ（Ｌ）は、図１に示したような重み係数群Ｗｉｊ（２１）〜Ｗｉｊ（ｍ１）である。また、ｋ＝１の場合、ｘｉ（ｋ）は、ニューロン群１５ａ１の値であり、Ｗｉｊ（ｋ）は、図１の重み係数群Ｗｉｊ（１）である。ｘｉ（ｋ）は、メモリ３３ａに記憶されている初期値、または、以前の処理でそのニューロンの値が更新されている場合には、更新後の値が用いられる。
【００７７】
次に、コントローラ３３は、ＣＰＵ３２が上記のデータに基づいて計算した、ローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）をＣＰＵ３２から受信する（ステップＳ１２）。そして、コントローラ３３は、メモリ３３ａに記憶されているローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）を更新する（ステップＳ１３）。なお、変化分ｈｉ（Ｌ）の更新は必要に応じて行えばよい。
【００７８】
その後、コントローラ３３は、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）を最適化装置３１へ送信する（ステップＳ１４）。
次に、コントローラ３３は、最適化装置３１が確率的探索による更新処理で得たｘｉ（ｋ）を受信し（ステップＳ１５）、受信したｘｉ（ｋ）に基づいて、メモリ３３ａに記憶されている全ニューロンの値ｘｉのうち、ｘｉ（ｋ）を更新する（ステップＳ１６）。
【００７９】
コントローラ３３は、全てのｋ（図１の例ではｋ＝１〜ｍ）を選択したか否かを判定する（ステップＳ１７）。全てのｋを選択していない場合には、コントローラ３３は、ステップＳ１０の処理に戻り、次のｋを選択する。
【００８０】
全てのｋを選択した場合、コントローラ３３は、メモリ３３ａに記憶されている全ニューロンの値ｘｉを、最適化問題の計算結果（解）として出力（たとえば、全体制御装置３４へ送信）し（ステップＳ１８）、処理を終了する。
【００８１】
以下、ｋの選択順序の例を説明する。
図６は、ｋをランダムに選択する例を示す図である。
図６では、コントローラ３３がランダムにｋを選択する例が、重み係数行列を用いて示されている。たとえば、図６では、ｋ＝２、ｋ＝５、ｋ＝１、ｋ＝ｍの順に、ｋが選択されている。
【００８２】
図７は、ｋを所定の順序で選択する例を示す図である。
図７の例では、コントローラ３３が所定の順序でｋを選択する例が、重み係数行列を用いて示されている。たとえば、図７では、ｋ＝１、ｋ＝２、…、ｋ＝５、…、ｋ＝ｍの順に、ｋが選択されている。
【００８３】
次に、ＣＰＵ３２の動作例を説明する。
図８は、ＣＰＵの動作の一例の流れを示すフローチャートである。
ＣＰＵ３２は、ｘｉ（Ｌ）、Ｗｉｊ（Ｌ）、ｘｉ（ｋ）、Ｗｉｊ（ｋ）を、コントローラ３３から受信する（ステップＳ２０）。そして、ＣＰＵ３２は、受信したデータに基づいて、式（４）により、ローカルフィールドｈｉ（ｋ）及び変化分ｈｉ（Ｌ）を計算する（ステップＳ２１）。式（４）において、右辺の１項目の積和演算には、ｘｉ（ｋ）、Ｗｉｊ（ｋ）が用いられ、右辺の３項目の積和演算には、ｘｉ（Ｌ）、Ｗｉｊ（Ｌ）が用いられる。なお、３項目の積和演算結果が、変化分ｈｉ（Ｌ）である。
【００８４】
その後、ＣＰＵ３２は、計算したローカルフィールドｈｉ（ｋ）及び変化分ｈｉ（Ｌ）をコントローラ３３に送信し（ステップＳ２２）、処理を終える。
次に、最適化装置３１の動作例を説明する。
【００８５】
図９は、最適化装置の動作の一例の流れを示すフローチャートである。
最適化装置３１は、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）をコントローラ３３から受信し（ステップＳ３０）、たとえば、図４に示したようなメモリ４０ｂに記憶する（ステップＳ３１）。そして、最適化装置３１は、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）をメモリ４０ｂから読み出す（ステップＳ３２）。メモリ４０ｂから読み出されたｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）は、ニューロン回路４０ａ１〜４０ａｎのレジスタ（たとえば、レジスタ４１，４６，５０）に設定される。なお、ｘｉ（ｋ）、ｈｉ（ｋ）については初期値として用いられる。その後、前述したニューロン回路４０ａ１〜４０ａｎや更新制御回路４０ｅの動作によって確率的探索による更新処理が行われる（ステップＳ３３）。
【００８６】
最適化装置３１の制御回路４０ｃは、所定の繰り返し回数の更新処理が終了したか否かを判定する（ステップＳ３４）。所定の繰り返し回数の更新処理が終了していない場合、ステップＳ３３の処理が繰り返される。所定の繰り返し回数の更新処理が終了した場合、最適化装置３１は、更新処理後のｘｉ（ｋ）をコントローラ３３に送信し（ステップＳ３５）、処理を終える。なお、所定の繰り返し回数は、式（５）のΔｈｉが０に収束したとみなす回数であり、たとえば、１００万回程度に設定される。
【００８７】
以上のような第２の実施の形態の最適化システム３０によれば、異なるニューロン群の影響によるエネルギーの変化分ｈｉ（Ｌ）の計算をＣＰＵ３２に行わせることで、最適化装置３１のハードウェアの物量を減らせる。このため、小さな物量のハードウェアでも大規模な演算が可能になる。また、選択したニューロン群に属するニューロンと、そのニューロン群に属さないニューロンの結合の強さを示す重み係数の、最適化装置３１へのロードが不要になるため、計算時間が短縮するとともに、消費電力を削減できる。また、最適化問題の規模が変わっても、１つの最適化装置３１により対応できるため、柔軟性が高い。
【００８８】
なお、上記の説明では、最適化装置３１が確率的探索による更新処理を最初から最後まで行うものとしたが、ＣＰＵ３２が初回の更新処理を行うようにしてもよい。その場合、コントローラ３３は、ＣＰＵ３２による初回の更新処理によって得られたｘｉ（ｋ）を最適化装置３１に初期値として送信する。
【００８９】
（第３の実施の形態）
図１０は、第３の実施の形態の最適化システムの一例を示す図である。図１０において、図３に示した第２の実施の形態の最適化システム３０と同じ要素については同一符号が付されている。
【００９０】
最適化システム６０は、複数の最適化装置６２ａ１，…，６２ａｋ，…，６２ａｍを有する。最適化装置６２ａ１〜６２ａｍのそれぞれは、互いに異なるニューロン群についての更新処理を行う。なお、最適化装置６２ａ１〜６２ａｍのそれぞれは、図４に示したような最適化装置３１と同様の１チップの回路により実現できる。コントローラ６１は、第２の実施の形態の最適化システム３０のコントローラ３３と異なり、以下のような処理を行う。
【００９１】
図１１は、第３の実施の形態の最適化システムにおけるコントローラの動作の一例の流れを示すフローチャートである。
まず、コントローラ６１は、各ｋ（ｋ＝１〜ｍ）に対応したｘｉ（Ｌ）、Ｗｉｊ（Ｌ）、ｘｉ（ｋ）、Ｗｉｊ（ｋ）を、ＣＰＵ３２へ送信する（ステップＳ４０）。
【００９２】
次に、コントローラ６１は、ＣＰＵ３２が上記のデータに基づいて計算した、各ｋに対応したローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）をＣＰＵ３２から受信する（ステップＳ４１）。
【００９３】
その後、コントローラ６１は、各ｋに対応したｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）を、対応する最適化装置に送信する（ステップＳ４２）。たとえば、ｋ＝１に対応したｘｉ（１）、Ｗｉｊ（１）、ｈｉ（１）は、最適化装置６２ａ１に送信され、ｋ＝ｍに対応したｘｉ（ｍ）、Ｗｉｊ（ｍ）、ｈｉ（ｍ）は、最適化装置６２ａｍに送信される。
【００９４】
次に、コントローラ６１は、ｋを選択する（ステップＳ４３）。その後、コントローラ６１は、ｋの選択が２回目以降であるか否かを判定する（ステップＳ４４）。ｋの選択が１回目の場合には、ステップＳ４６の処理が行われる。ｋの選択が２回目以降の場合、コントローラ６１は、選択したｋに対応する最適化装置にローカルフィールドｈｉ（ｋ）を送信する（ステップＳ４５）。
【００９５】
なお、ｋは、図６、図７に示したように、ランダムまたは所定の順序で選択される。ｋが所定の順序で選択される場合、前に選択したｋに対応する最適化装置で確率的探索が繰り返されている最中に、次に選択するｋに対応する最適化装置にローカルフィールドｈｉ（ｋ）を送信可能である。
【００９６】
ステップＳ４４またはステップＳ４５の処理後、コントローラ６１は、選択したｋに対応する最適化装置が確率的探索による更新処理によって得たｘｉ（ｋ）を受信する（ステップＳ４６）。そして、コントローラ６１は、受信したｘｉ（ｋ）に基づいて、メモリ３３ａに記憶されている全ニューロンの値ｘｉのうち、ｘｉ（ｋ）を更新する（ステップＳ４７）。
【００９７】
その後、コントローラ６１は、選択したｋに対応するｘｉ（Ｌ）、Ｗｉｊ（Ｌ）、ｘｉ（ｋ）、Ｗｉｊ（ｋ）を、ＣＰＵ３２へ送信する（ステップＳ４８）。そして、コントローラ６１は、ＣＰＵ３２が上記のデータに基づいて計算した、ローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）をＣＰＵ３２から受信する（ステップＳ４９）。さらに、コントローラ６１は、メモリ３３ａに記憶されているローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）を更新する（ステップＳ５０）。なお、変化分ｈｉ（Ｌ）の更新は必要に応じて行えばよい。
【００９８】
その後、コントローラ６１は、全てのｋを選択したか否かを判定する（ステップＳ５１）。全てのｋを選択していない場合には、コントローラ６１は、ステップＳ４３の処理に戻り、次のｋを選択する。
【００９９】
全てのｋを選択した場合、コントローラ６３は、メモリ３３ａに記憶されている全ニューロンの値ｘｉを、最適化問題の計算結果（解）として出力（たとえば、全体制御装置３４へ送信）し（ステップＳ５２）、処理を終了する。
【０１００】
ＣＰＵ３２の処理は、図８に示した処理と同じである。すなわち、ＣＰＵ３２は、コントローラ６１から受信したデータに基づいて、ローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）を計算し、それらをコントローラ６１に送信する処理を行う。
【０１０１】
最適化装置６２ａ１〜６２ａｍは、図１１のステップＳ４２の処理でコントローラ６１が送信したデータを受信して、それぞれが有するメモリ（たとえば、図１０のメモリ６２ｂｋ）に記憶する。
【０１０２】
次に、コントローラ６１が選択したｋに対応する最適化装置６２ａｋの動作例を説明する。なお、最適化装置６２ａｋが、コントローラ６１による１回目に選択されたｋに対応する最適化装置である場合、図９に示した処理とほぼ同じ処理を行う。すなわち、最適化装置６２ａｋは、メモリ６２ｂｋに記憶されたｘｉ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（ｋ）を読み出して、図４に示したニューロン回路４０ａ１〜４０ａｎのレジスタ（たとえば、レジスタ４１，４６，５０）に設定する。そして、最適化装置６２ａｋは、確率的探索による更新処理を所定回数繰り返した後に、ｘｉ（ｋ）をコントローラ６３に送信する。
【０１０３】
図１２は、コントローラにより２回目以降に選択されたｋに対応する最適化装置の動作の一例の流れを示すフローチャートである。
最適化装置６２ａｋは、図１１のステップＳ４５の処理でコントローラ６１が送信したローカルフィールドｈｉ（ｋ）を受信する（ステップＳ６０）。
【０１０４】
そして、最適化装置６２ａｋは、受信したローカルフィールドｈｉ（ｋ）を、更新処理を行う際の初期値として、たとえば、図４に示したようなレジスタ４６に設定する（ステップＳ６１）。
【０１０５】
その後、最適化装置６２ａｋは、予めメモリ６２ｂｋに記憶したｘｉ（ｋ）、Ｗｉｊ（ｋ）を用いて、前述したニューロン回路４０ａ１〜４０ａｎや更新制御回路４０ｅの動作によって確率的探索による更新処理を行う（ステップＳ６２）。
【０１０６】
最適化装置６２ａｋは、所定の繰り返し回数の更新処理が終了したか否かを判定する（ステップＳ６３）。所定の繰り返し回数の更新処理が終了していない場合、ステップＳ６２の処理が繰り返される。所定の繰り返し回数の更新処理が終了した場合、最適化装置６２ａｋは、更新処理後のｘｉ（ｋ）をコントローラ６１に送信し（ステップＳ６４）、処理を終える。
【０１０７】
以上のような第３の実施の形態の最適化システム６０によれば、異なるニューロン群の影響によるエネルギーの変化分ｈｉ（Ｌ）の計算をＣＰＵ３２に行わせるため、最適化装置６２ａ１〜６２ａｍのそれぞれのハードウェアの物量を減らせる。このため、小さな物量のハードウェアでも大規模な演算が可能になる。
【０１０８】
また、第３の実施の形態の最適化システム６０では、最適化装置６２ａ１〜６２ａｍのそれぞれが、互いに異なるニューロン群についての更新処理を行う。そのため、ｘｉ（ｋ）、ｈｉ（ｋ）の初期値やＷｉｊ（ｋ）を一度、最適化装置６２ａ１〜６２ａｍのメモリに記憶させておけば、コントローラ６１が、再度、これらのデータを最適化装置６２ａ１〜６２ａｍに送らなくてもよくなる。２回目以降のｋの選択の際には、コントローラ６１は、更新されたローカルフィールドｈｉ（ｋ）を、選択したｋに対応する最適化装置に送信すればよい。これにより、データの移動量を抑えることができる。
【０１０９】
なお、上記の説明では、最適化装置の数が、ニューロン群の数と同じであるとしたが、ハードウェアの物量を減らすために、最適化装置の数が、ニューロン群の数よりも少なくてもよい。その場合、複数の最適化装置のうちの何れかが、第２の実施の形態の最適化装置３１と同様に、複数のニューロン群の値の更新処理を行うことになる。
【０１１０】
（第４の実施の形態）
図１３は、第４の実施の形態の最適化システムの一例を示す図である。図１３において、図３に示した第２の実施の形態の最適化システム３０と同じ要素については同一符号が付されている。
【０１１１】
第４の実施の形態の最適化システム７０では、最適化装置７２のメモリ７２ａは、コントローラ７１が、あるｋを選択した場合（あるニューロン群を選択することに相当）、そのｋに対応するｘｉ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（ｋ）以外に、Ｗｉｊ（Ｌ）を記憶する。Ｗｉｊ（Ｌ）は、選択されたニューロン群に属するニューロンと、そのニューロンと結合する他のニューロン群に含まれる１または複数のニューロンの結合の強さを示す重み係数群である。そして、最適化装置７２は、コントローラ７１によって次のｋが選択された場合、コントローラ７１から前のｋの選択時に更新されたニューロンの値とインデックスを含む更新されたニューロンの情報であるΔｘｉ（ｋ）を受信する。そして、最適化装置７２は、Δｘｉ（ｋ）とＷｉｊ（Ｌ）からローカルフィールドｈｉ（ｋ）の更新を行う。
【０１１２】
図１４は、第４の実施の形態の最適化システムにおけるコントローラの動作の一例の流れを示すフローチャートである。
ステップＳ７０〜Ｓ７３の処理は、第２の実施の形態の最適化システム３０におけるコントローラ３３による処理（図５のステップＳ１０〜Ｓ１３の処理）と同じである。
【０１１３】
ステップＳ７３の処理後、コントローラ７１は、ｋの選択が２回目以降であるか否かを判定する（ステップＳ７４）。ｋの選択が１回目である場合、コントローラ７１は、最適化装置７２に、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）を送信する（ステップＳ７５）。ｋの選択が２回目以降である場合、コントローラ７１は、最適化装置７２に、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）、Δｘｉ（ｋ）を送信する（ステップＳ７６）。
【０１１４】
ステップＳ７５，Ｓ７６の処理後、コントローラ７１は、最適化装置７２が確率的探索による更新処理によって得たｘｉ（ｋ）を受信する（ステップＳ７７）。そしてコントローラ７１は、受信したｘｉ（ｋ）に基づいて、メモリ３３ａに記憶されている全ニューロンの値ｘｉのうち、ｘｉ（ｋ）を更新する（ステップＳ７８）。また、コントローラ７１は、ｘｉ（ｋ）に基づいて、更新された（値が変わった）ニューロンの値とインデックスを含むΔｘｉ（ｋ）を検出する（ステップＳ７９）。
【０１１５】
その後、コントローラ７１は、全てのｋを選択したか否かを判定する（ステップＳ８０）。全てのｋを選択していない場合には、コントローラ７１は、ステップＳ７０の処理に戻り、次のｋを選択する。
【０１１６】
全てのｋを選択した場合、コントローラ７１は、メモリ３３ａに記憶されている全ニューロンの値ｘｉを、最適化問題の計算結果（解）として出力し（ステップＳ８１）、処理を終了する。
【０１１７】
ＣＰＵ３２の処理は、図８に示した処理と同じである。すなわち、ＣＰＵ３２は、コントローラ７１から受信したデータに基づいて、ローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）を計算し、それらをコントローラ７１に送信する処理を行う。
【０１１８】
次に、最適化装置７２の動作例を説明する。なお、コントローラ７１によるｋの選択が１回目の場合には、コントローラ７１から、ｘｉ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（ｋ）の他に、Ｗｉｊ（Ｌ）を受信し、それらをメモリ７２ａに記憶する以外、図９に示した処理と同じであるため、説明を省略する。
【０１１９】
図１５は、コントローラによるｋの選択が２回目以降の場合の最適化装置の動作の一例の流れを示すフローチャートである。
最適化装置７２は、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）、Δｘｉ（ｋ）をコントローラ７１から受信し（ステップＳ９０）、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）をメモリ７２ａに記憶する（ステップＳ９１）。
【０１２０】
そして、最適化装置７２は、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）をメモリ７２ａから読み出す（ステップＳ９２）。メモリ７２ａから読み出されたｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）は、ニューロン回路４０ａ１〜４０ａｎのレジスタ（たとえば、レジスタ４１，４６，５０）に設定される。なお、ｘｉ（ｋ）、ｈｉ（ｋ）については初期値として用いられる。
【０１２１】
さらに、最適化装置７２は、Δｘｉ（ｋ）とＷｉｊ（Ｌ）からローカルフィールドｈｉ（ｋ）を更新する（ステップＳ９３）。たとえば、最適化装置７２が図４に示した最適化装置３１と同様の回路で実現される場合、ステップＳ９３の処理では、更新制御回路４０ｅが出力するニューロンの値とインデックスの代りに、Δｘｉ（ｋ）が用いられる。すなわち、前のｋの選択時に更新されたニューロンの値が選択回路４３に供給され、そのニューロンのインデックスが選択回路４２に供給される。前のｋの選択時に更新されたニューロンが複数ある場合には、たとえば、インデックス順に、各ニューロンの値とインデックスが選択回路４２，４３に供給される。これによって、前述の変化分ｈｉ（Ｌ）が更新され、その結果、ローカルフィールドｈｉ（ｋ）が更新される。
【０１２２】
その後は、更新制御回路４０ｅが出力するニューロンの値とインデックスを用いた確率的探索による更新処理が行われる（ステップＳ９４）。
最適化装置７２は、所定の繰り返し回数の更新処理が終了したか否かを判定する（ステップＳ９５）。所定の繰り返し回数の更新処理が終了していない場合、ステップＳ９４の処理が繰り返される。所定の繰り返し回数の更新処理が終了した場合、最適化装置７２は、更新処理後のｘｉ（ｋ）をコントローラ７１に送信し（ステップＳ９６）、処理を終える。
【０１２３】
以上のような最適化システム７０によれば、第２の実施の形態の最適化システム３０と同様の効果が得られるとともに、前回選択されたニューロン群の値の変化を反映したローカルフィールドｈｉ（ｋ）の更新が、最適化装置７２にて実行できる。
【０１２４】
なお、上記の説明では、最適化装置７２が確率的探索による更新処理を最初から最後まで行うものとしたが、ＣＰＵ３２が初回の更新処理を行うようにしてもよい。その場合、コントローラ７１は、ＣＰＵ３２による初回の更新処理によって得られたｘｉ（ｋ）を最適化装置７２に初期値として送信する。
【０１２５】
（第５の実施の形態）
図１６は、第５の実施の形態の最適化システムの一例を示す図である。図１６において、図１０に示した第３の実施の形態の最適化システム６０と同じ要素については同一符号が付されている。
【０１２６】
最適化システム８０は、第３の実施の形態の最適化システム６０と同様、複数の最適化装置８２ａ１，…，８２ａｋ，…，８２ａｍを有する。最適化装置８２ａ１〜８２ａｍのそれぞれは、互いに異なるニューロン群についての更新処理を行う。ただ、最適化装置８２ａ１〜８２ａｍのそれぞれのメモリ（たとえば、メモリ８２ｂｋ）には、ｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）の他に、前述したＷｉｊ（Ｌ）が記憶される。
【０１２７】
図１７は、第５の実施の形態の最適化システムにおけるコントローラの動作の一例の流れを示すフローチャートである。
まず、コントローラ８１は、各ｋ（ｋ＝１〜ｍ）に対応したｘｉ（Ｌ）、Ｗｉｊ（Ｌ）、ｘｉ（ｋ）、Ｗｉｊ（ｋ）を、ＣＰＵ３２へ送信する（ステップＳ１００）。
【０１２８】
次に、コントローラ８１は、ＣＰＵ３２が上記のデータに基づいて計算した、各ｋに対応したローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）をＣＰＵ３２から受信する（ステップＳ１０１）。
【０１２９】
その後、コントローラ８１は、各ｋに対応したｘｉ（ｋ）、Ｗｉｊ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（Ｌ）を、対応する最適化装置に送信する（ステップＳ１０２）。たとえば、ｋ＝１に対応したＷｉｊ（Ｌ）は、図１の重み係数群Ｗｉｊ（１）と同じ列の重み係数群（Ｗｉｊ（２１）〜Ｗｉｊ（ｍ１））である。
【０１３０】
次に、コントローラ８１は、ｋを選択する（ステップＳ１０３）。なお、ｋは、図６、図７に示したように、ランダムまたは所定の順序で選択される。
その後、コントローラ８１は、選択したｋに対応する最適化装置が確率的探索による更新処理によって得たｘｉ（ｋ）を受信する（ステップＳ１０４）。そして、コントローラ８１は、受信したｘｉ（ｋ）に基づいて、メモリ３３ａに記憶されている全ニューロンの値ｘｉのうち、ｘｉ（ｋ）を更新する（ステップＳ１０５）。
【０１３１】
また、コントローラ８１は、ｘｉ（ｋ）に基づいて、更新されたニューロンの値とインデックスを含む更新されたニューロンの情報であるΔｘｉ（ｋ）を検出する（ステップＳ１０６）。そして、コントローラ８１は、選択したｋに対応する最適化装置以外にΔｘｉ（ｋ）を送信する（ステップＳ１０７）。たとえば、ｋ＝１が選択されている場合、最適化装置８２ａ１〜８２ａｍのうち、最適化装置８２ａ１以外の全ての最適化装置に、Δｘｉ（ｋ）が送信される。
【０１３２】
その後、コントローラ８１は、全てのｋを選択したか否かを判定する（ステップＳ１０８）。全てのｋを選択していない場合には、コントローラ８１は、ステップＳ１０３の処理に戻り、次のｋを選択する。
【０１３３】
全てのｋを選択した場合、コントローラ８１は、メモリ３３ａに記憶されている全ニューロンの値ｘｉを、最適化問題の計算結果（解）として出力し（ステップＳ１０９）、処理を終了する。
【０１３４】
ＣＰＵ３２の処理は、図８に示した処理と同じである。すなわち、ＣＰＵ３２は、コントローラ８１から受信したデータに基づいて、ローカルフィールドｈｉ（ｋ）と変化分ｈｉ（Ｌ）を計算し、それらをコントローラ８１に送信する処理を行う。
【０１３５】
次に、最適化装置８２ａ１〜８２ａｍの動作例を説明する。なお、コントローラ８１が最初に選択したｋに対応する最適化装置では、図９に示した処理とほぼ同じ処理を行う。すなわち、最適化装置は自身が有するメモリに記憶されたｘｉ（ｋ）、ｈｉ（ｋ）、Ｗｉｊ（ｋ）を読み出して、図４に示したニューロン回路４０ａ１〜４０ａｎのレジスタ（たとえば、レジスタ４１，４６，５０）に設定する。そして、最適化装置は、確率的探索による更新処理を所定回数繰り返した後に、ｘｉ（ｋ）をコントローラ６３に送信する。
【０１３６】
図１８は、コントローラにより２回目以降に選択されたｋに対応する最適化装置の動作の一例の流れを示すフローチャートである。
コントローラ８１により２回目以降に選択されたｋに対応する最適化装置を、以下では、最適化装置８２ａｋとする。最適化装置８２ａｋは、前回選択されたｋに対応する最適化装置が出力したｘｉ（ｋ）に基づいて、コントローラ８１が検出したΔｘｉ（ｋ）をコントローラ８１から受信する（ステップＳ１１０）。
【０１３７】
そして、最適化装置８２ａｋは、受信したΔｘｉ（ｋ）と、予めメモリ８２ｂｋに記憶されたＷｉｊ（Ｌ）に基づいてローカルフィールドｈｉ（ｋ）を更新する（ステップＳ１１１）。たとえば、最適化装置８２ａｋが図４に示した最適化装置３１と同様の回路で実現される場合、ステップＳ１１１の処理では、更新制御回路４０ｅが出力するニューロンの値とインデックスの代りに、Δｘｉ（ｋ）が用いられる。すなわち、前のｋの選択時に更新されたニューロンの値が選択回路４３に供給され、そのニューロンのインデックスが選択回路４２に供給される。前のｋの選択時に更新されたニューロンが複数ある場合には、たとえば、インデックス順に、各ニューロンの値とインデックスが選択回路４２，４３に供給される。これによって、前述の変化分ｈｉ（Ｌ）が更新され、その結果、ローカルフィールドｈｉ（ｋ）が更新される。
【０１３８】
その後は、更新制御回路４０ｅが出力するニューロンの値とインデックスを用いた確率的探索による更新処理が行われる（ステップＳ１１２）。
最適化装置８２ａｋは、所定の繰り返し回数の更新処理が終了したか否かを判定する（ステップＳ１１３）。所定の繰り返し回数の更新処理が終了していない場合、ステップＳ１１２の処理が繰り返される。所定の繰り返し回数の更新処理が終了した場合、最適化装置８２ａｋは、更新処理後のｘｉ（ｋ）をコントローラ８１に送信し（ステップＳ１１４）、処理を終える。
【０１３９】
以上のような最適化システム８０によれば、第３の実施の形態の最適化システム６０と同様の効果が得られるとともに、前回選択されたニューロン群の値の変化を反映したローカルフィールドｈｉ（ｋ）の更新が、最適化装置８２ａ１〜８２ａｍにて実行できる。
【０１４０】
なお、上記の説明では、最適化装置の数が、ニューロン群の数と同じであるとしたが、ハードウェアの物量を減らすために、最適化装置の数が、ニューロン群の数よりも少なくてもよい。その場合、複数の最適化装置のうちの何れかが、第２の実施の形態の最適化装置３１と同様に、複数のニューロン群の値の更新処理を行うことになる。
【０１４１】
以上、実施の形態に基づき、本発明の最適化システム、最適化装置及び最適化システムの制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１４２】
１０  最適化システム
１１  最適化装置
１１ａ，１３ａ  記憶部
１１ｂ  確率的探索回路
１２  演算処理装置
１３  制御装置
１５ａ１〜１５ａｍ  ニューロン群
１５ｂ１〜１５ｂ８  ニューロン
【図１】
2019139323.tif 000008
【図２】
2019139323.tif 000009
【図３】
2019139323.tif 000010
【図４】
2019139323.tif 000011
【図５】
2019139323.tif 000012
【図６】
2019139323.tif 000013
【図７】
2019139323.tif 000014
【図８】
2019139323.tif 000015
【図９】
2019139323.tif 000016
【図１０】
2019139323.tif 000017
【図１１】
2019139323.tif 000018
【図１２】
2019139323.tif 000019
【図１３】
2019139323.tif 000020
【図１４】
2019139323.tif 000021
【図１５】
2019139323.tif 000022
【図１６】
2019139323.tif 000023
【図１７】
2019139323.tif 000024
【図１８】
2019139323.tif 000025