JP7014963B2 - 最適化装置及び最適化装置の制御方法 - Google Patents

最適化装置及び最適化装置の制御方法 Download PDF

Info

Publication number
JP7014963B2
JP7014963B2 JP2018047655A JP2018047655A JP7014963B2 JP 7014963 B2 JP7014963 B2 JP 7014963B2 JP 2018047655 A JP2018047655 A JP 2018047655A JP 2018047655 A JP2018047655 A JP 2018047655A JP 7014963 B2 JP7014963 B2 JP 7014963B2
Authority
JP
Japan
Prior art keywords
arithmetic processing
index
neurons
tightly coupled
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018047655A
Other languages
English (en)
Other versions
JP2019159997A (ja
Inventor
タンビア アーメド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018047655A priority Critical patent/JP7014963B2/ja
Priority to US16/284,123 priority patent/US11481618B2/en
Publication of JP2019159997A publication Critical patent/JP2019159997A/ja
Application granted granted Critical
Publication of JP7014963B2 publication Critical patent/JP7014963B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Feedback Control In General (AREA)

Description

本発明は、最適化装置及び最適化装置の制御方法に関する。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
最適化装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、最適化装置に含まれる複数のユニット(ビット)のそれぞれが、他のビットの状態と、他のビットと自身のビットとの結合の強さを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングを用いた確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の最小値が得られる各ビットの状態の組み合わせを、解として求める。
なお、従来、確率的探索法の1つであるマルコフ連鎖モンテカルロ法を、複数のハードウェアにより並列に行う手法があった(たとえば、特許文献1参照)。なお、この手法では、複数のハードウェアにそれぞれ同じ重み係数が与えられて演算が行われる。
特表2013-521545号公報
従来の技術では、ハードウェア的な制約によって、確率的探索を行う単一の回路をもつ最適化装置に大規模な最適化問題をマッピングして解くことが困難であるという問題があった。たとえば、ニューロン数が1024(各ニューロンが他の全てのニューロンとの間で結合をもつ場合の重み係数の数は、1024×1024(約100万個))程度が限度であった。
1つの側面では、本発明は、大規模な最適化問題を最適化装置にマッピングして解くことが可能な最適化装置及び最適化装置の制御方法を提供することを目的とする。
1つの実施態様では、複数のニューロンを含み、エネルギーを表す評価関数の極小値を計算する最適化装置において、前記複数のニューロンのうち所定数のニューロンが、自ニューロンが属する演算処理部に含まれる他の全てのニューロンとそれぞれ接続されたニューラルネットワークにおける、前記所定数のニューロンの値についての演算を、各々が行う複数の演算処理部と、前記複数のニューロンに対し、同一の演算処理部に含まれる何れか2つのニューロンに対しては前記評価関数の密結合部分に対応する密結合重み係数をそれぞれ与えて演算させるとともに、異なる演算処理部に含まれる何れか2つのニューロンに対しては前記評価関数の疎結合部分に対応する疎結合重み係数を用いて前記エネルギーの変化分を自身で計算した後、計算した前記変化分をそれぞれ与えて演算させる制御部と、を有する最適化装置が提供される。
また、1つの実施態様では、最適化装置の制御方法が提供される。
1つの側面では、本発明は、大規模な最適化問題を最適化装置にマッピングして解くことが可能になる。
第1の実施の形態の最適化装置の一例を示す図である。 第2の実施の形態の最適化装置の一例を示す図である。 確率的探索回路の一例を示す図である。 第2の実施の形態の最適化装置におけるインデックスコントローラの一例を示す図である。 重み係数インデックスコントローラの一例を示す図である。 最終状態インデックスコントローラの一例を示す図である。 第2の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。 第3の実施の形態の最適化装置の一例を示す図である。 第3の実施の形態の最適化装置におけるインデックスコントローラの一例を示す図である。 重み係数インデックスコントローラの一例を示す図である。 最終状態インデックスコントローラの一例を示す図である。 第3の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。 第4の実施の形態の最適化装置の一例を示す図である。 第4の実施の形態の最適化装置におけるインデックスコントローラの一例を示す図である。 重み係数インデックスコントローラの一例を示す図である。 最終状態インデックスコントローラの一例を示す図である。 第4の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す最適化装置は、エネルギーを表す評価関数である、イジング型のエネルギー関数の極小値(極小値が複数ある場合には、なるべく小さい値)を計算することで、巡回セールスマン問題などの最適化問題を計算する。イジング型のエネルギー関数E(x)は、たとえば、以下の式(1)で定義される。
Figure 0007014963000001
右辺の1項目は、全ニューロン(全ビット)から選択可能な2つのニューロンの全組み合わせについて、漏れと重複なく、2つのニューロンの値(0または1)と重み係数との積を積算したものである。xは、i番目のニューロンの値、xは、j番目のニューロンの値であり、Wijは、i番目とj番目のニューロンの結合の強さを示す重み係数である。なお、Wij=Wji、Wii=0である。
右辺の2項目は、全ニューロンのそれぞれのバイアスとニューロンの値との積の総和を求めたものである。bは、i番目のニューロンのバイアスを示している。
また、i番目のニューロンのスピン反転(値の変化)に伴うエネルギー変化ΔEは、以下の式(2)で表される。
Figure 0007014963000002
式(2)において、i番目のニューロンの値xが1のとき、2x-1は1となり、値xが0のとき、2x-1は-1となる。なお、以下の式(3)で表されるhはローカルフィールド(局所場)と呼ばれ、値xに応じてローカルフィールドhに符号(+1または-1)を乗じたものがエネルギー変化ΔEである。
Figure 0007014963000003
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
最適化装置10は、演算処理部11a1,11a2,…,11ak,…,11am、制御部12を有する。
演算処理部11a1~11amのそれぞれには、全ニューロンのうち、所定数のニューロンが属する。つまり、演算処理部11a1~11amのそれぞれは、所定数のニューロンの値についての演算を行う。この所定数のニューロンに対して、自ニューロンが属する演算処理部に含まれる他の全てのニューロンとそれぞれ接続されるように(つまり全結合状態となるように)、重み係数が設定される。この重み係数は、前述のエネルギー関数の密結合部分(全結合しているニューロンについての積和演算を行う部分)に対応しているため、以下この重み係数を、密結合重み係数という。
図1には、m個のニューロン群15a1,15a2,…,15ak,…,15amによるニューラルネットワークの例が示されている。ニューロン群15a1~15amは、それぞれ対応する演算処理部に属している。たとえば、ニューロン群15a1は、演算処理部11a1に属し、ニューロン群15a2は、演算処理部11a2に属し、ニューロン群15akは、演算処理部11akに属し、ニューロン群15amは、演算処理部11amに属する。ニューロン群15a1~15amは、それぞれ上記所定数のニューロンを含む。
ニューロン群15a1~15amのそれぞれに含まれるニューロン数をnとすると、全ニューロン数Mは、M=m×nである。たとえば、ニューロン群15a1は、ニューロン15b1,15b2,15b3,15b4,15b5,15b6,15b7,15b8を有する。ニューロン15b1~15b8のそれぞれは、互いに結合している。つまり、ニューロン15b1~15b8は、全結合状態にある。また、ニューロン15b1~15b8のそれぞれは、ニューロン群15a2~15amに含まれる一部のニューロンに結合している。
最適化問題のマッピング時(重み係数の設定=プログラミング)にニューロン群間の結合数が制約となる。しかし、たとえば、各ニューロン群に含まれるニューロン数をn=1024とすると、ニューロン群間の結合数が、ニューロン群内での結合数の1/10程度であれば、多くの場合問題なくプログラミングが可能である。
たとえば、ニューロン群間の結合数を128個、つまり各ニューロンが他のニューロン群の128個のニューロンと結合可能とすると、1つのニューロン群内で用意すべき重み係数の数は、1024+1024×128となる。ニューロン群の数が、たとえば、4のとき、1024×4個のニューロンを相互接続させる場合には、重み係数の数は、4.52×10程度になるため、ニューロン群間の接続数を限定することで、用意すべき重み係数の数を減らすことができる。つまり、後述する制御部12内の記憶部12aなどに記憶する重み係数の数を減らせることで、装置規模を縮小できる。
図1に示すように、重み係数行列のうち、対角部分にある重み係数群(Wij (1),Wij (2),…,Wij (k),…,Wij (m))のそれぞれは、ニューロン群15a1~15amのそれぞれに含まれるニューロン間の結合の強さを示す前述の密結合重み係数からなる。たとえば、重み係数群Wij (1)は、ニューロン群15a1に含まれるニューロン15b1~15b8から2つのニューロンを取り出す全組み合わせのそれぞれの結合の強さを示す密結合重み係数からなる。
一方、重み係数行列のうち、非対角部分にある重み係数群(たとえば、Wij (21),…,Wij (k1),…,Wij (m1)など)のそれぞれは、異なるニューロン群に属する(異なる演算処理部に属する)ニューロン間の結合の強さを示す重み係数からなる。なお、異なるニューロン群に属するニューロン同士は、前述のように互いに結合していないものが多いため、非対角部分にある重み係数群に含まれる重み係数は、値が0であるものが多い。このような重み係数は、前述のエネルギー関数の疎結合部分(異なる演算処理部に属するニューロンについての積和演算を行う部分)に対応しているため、以下この重み係数を、疎結合重み係数という。
制御部12は、全ニューロンに対し、同一の演算処理部に含まれる何れか2つのニューロンに対しては密結合重み係数をそれぞれ与えて演算させる。また、制御部12は、異なる演算処理部に含まれる何れか2つのニューロンに対しては、疎結合重み係数を用いてエネルギーの変化分を自身で計算する。そして、制御部12は、それら2つのニューロンに対して、その変化分をそれぞれ与えて(つまり、上記異なる演算処理部のそれぞれにその変化分を送信する)演算させる。
また、制御部12は、記憶部12aを有する。記憶部12aは、たとえば、計算対象の最適化問題に応じて値が設定された疎結合重み係数を記憶する。記憶部12aは、密結合重み係数を記憶してもよい。これらの重み係数は、たとえば、図示しない制御装置(コンピュータなど)から供給される。
なお、演算処理部11a1~11amのそれぞれは、たとえば、1チップの半導体集積回路である。制御部12は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含むコントローラである。なお、制御部12は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサであってもよい。また、記憶部12aとして、RAM(Random Access Memory)などの揮発性メモリ、または、フラッシュメモリやEEPROM(Electrically Erasable Programmable Read Only Memory)などの不揮発性メモリを用いることができる。
以下、第1の実施の形態の最適化装置10の動作例を説明する。
制御部12は、密結合重み係数を、演算処理部11a1~11amに送信する。
演算処理部11a1~11amのそれぞれでは、制御部12が送信した密結合重み係数のうち、自身に属するニューロン群に対応する密結合重み係数を用いた演算(ニューロンの値を更新する演算処理)を行う。以下、演算処理部11a1~11amのそれぞれで行われる演算の例を説明する。
たとえば、k番目のニューロン群15akに含まれる複数のニューロンのうちi番目のニューロンが変化するときのローカルフィールドh (k)は、以下の式(4)で表される。
Figure 0007014963000004
式(4)において、右辺の1項目の積和演算部分と2項目のバイアスとの和が、k番目のニューロン群15akに含まれる他のニューロン(i番目のニューロン以外のニューロン)の影響によるエネルギーの変化分を示す。また、右辺の3項目の積和演算部分は、ニューロン群15akに属さないニューロン(他のニューロン群に属するニューロン)の影響によるエネルギーの変化分を示す。以下、前者の変化分を内部ローカルフィールド、後者の変化分を外部ローカルフィールドという。
k番目のニューロン群15akが属する演算処理部11akは、内部ローカルフィールドを、密結合重み係数とニューロン群15akの値を用いて計算し、外部ローカルフィールドについては計算しない。
演算処理部11akは、たとえば、制御部12が計算した、ローカルフィールドh (k)の初期値を受信する。そして、演算処理部11akは、内部ローカルフィールドの計算結果に基づいて、式(4)で示されるローカルフィールドh (k)を更新する。なお、演算処理部11akは、たとえば、ノイズ値(乱数)をローカルフィールドh (k)に加え、閾値との比較によってi番目のニューロンの値の更新の可否を判定し、その判定結果に基づいてi番目のニューロンの値を更新または維持する。演算処理部11akは、このような処理を、ニューロン群15akの各ニューロンについて、所定回数繰り返す。なお、シミュレーテッド・アニーリングを実現するために、ノイズ値のノイズ幅は所定回数の繰り返し処理ごとに、徐々に小さくなるように制御される。
以上の処理が、演算処理部11a1~11amのそれぞれにおいて行われる。そして、演算処理部11a1~11amは、所定回数の繰り返し処理の終了後に、各ニューロンの値を制御部12に送信する。制御部12は、各ニューロンの値と、記憶部12aに記憶されている疎結合重み係数に基づいて、外部ローカルフィールドを計算する。そして、制御部12は、その外部ローカルフィールドを演算処理部11a1~11amに送信する。
たとえば、演算処理部11akでは、式(4)で示されるローカルフィールドh (k)の右辺の3項目の外部ローカルフィールドを制御部12より受信する。そして、演算処理部11akはその外部ローカルフィールドをローカルフィールドh (k)の初期値として、再度前述の内部ローカルフィールドの計算結果に基づいて、ローカルフィールドh (k)を更新する処理を、上記所定回数繰り返す。
このような演算処理部11a1~11amと制御部12との間でのニューロンの値と、外部ローカルフィールドの送受信が、さらに所定回数繰り返されたのち、最終的に得られた各ニューロンの値が、最適化問題に対する解として制御部12から出力される。
以上のような第1の実施の形態の最適化装置10によれば、密結合状態(全結合状態)のニューロン群15a1~15amのそれぞれの演算を、対応する演算処理部が行う。つまり、最適化装置10には複数の演算処理部11a1~11amが設けられている。そして、異なる演算処理部に属する疎結合状態のニューロンの演算を制御部12が行い、その結果(外部ローカルフィールド)が演算処理部11a1~11amの演算に反映される。これにより、確率的探索を行う単一の回路をもつ最適化装置では計算が困難であった、大規模な最適化問題を最適化装置10にマッピングして解くことが可能となる。
また、演算処理部11a1~11amのそれぞれは、疎結合重み係数を用いた計算を行わなくてよいため、演算処理部11a1~11amにおいて重み係数を保持するメモリを小さくできる。
また、演算処理部11a1~11amのそれぞれが、所定回数の繰り返し処理の終了後に、各ニューロンの値を制御部12に送信する。制御部12は、その値と疎結合重み係数に基づいて、外部ローカルフィールドを計算し、演算処理部11a1~11amに送信する。これにより、演算処理部11a1~11amと制御部12との間での通信頻度や通信データ量を抑えることができ、最適化問題を計算する上でのオーバーヘッドとなる通信時間を短縮できるため、最適化問題の計算時間を短縮できる。
(第2の実施の形態)
図2は、第2の実施の形態の最適化装置の一例を示す図である。
最適化装置30は、演算処理部31a1,31a2,…,31aN、コントローラ32を有する。
演算処理部31a1~31aNのそれぞれは、密結合重み係数メモリ、確率的探索回路、インデックスコントローラを有する。図2の例では、演算処理部31a1に含まれる密結合重み係数メモリ31b1、確率的探索回路31c1、インデックスコントローラ31d1が示されている。また、演算処理部31a2に含まれる密結合重み係数メモリ31b2、確率的探索回路31c2、インデックスコントローラ31d2が示されている。また、演算処理部31aNに含まれる密結合重み係数メモリ31bN、確率的探索回路31cN、インデックスコントローラ31dNが示されている。
なお、演算処理部31a1~31aNのそれぞれは、たとえば、1チップの半導体集積回路である。
以下、演算処理部31a1の各要素についての説明を行うが、演算処理部31a2~31aNについても同様である。
密結合重み係数メモリ31b1は、演算処理部31a1に属するニューロン群に含まれるニューロン間の結合の強さを示す密結合重み係数を記憶する。密結合重み係数メモリ31b1として、RAMなどの揮発性メモリ、または、フラッシュメモリやEEPROMなどの不揮発性メモリを用いることができる。
確率的探索回路31c1は、マルコフ連鎖モンテカルロ法による更新処理を行う回路である。確率的探索回路31c1は、演算処理部31a1に属するニューロン群の各ニューロンにおけるローカルフィールドhの初期値または外部ローカルフィールドを受信し、内部ローカルフィールドの計算結果に基づいて、ローカルフィールドhを更新する。なお、確率的探索回路31c1は、たとえば、ノイズ値(乱数)をローカルフィールドhに加え、閾値との比較によってi番目のニューロンの値の更新の可否を判定し、その判定結果に基づいてi番目のニューロンの値を更新または維持する。確率的探索回路31c1は、このような処理を、演算処理部31a1に属するニューロン群の各ニューロンについて、所定回数繰り返す。
インデックスコントローラ31d1は、密結合重み係数と、その密結合重み係数がどのニューロン間の結合に関するものであるのかを示すインデックスとをコントローラ32から受信する。そして、インデックスコントローラ31d1は、そのインデックスに応じた密結合重み係数メモリ31b1のアドレスに、密結合重み係数を書き込む。
また、インデックスコントローラ31d1は、ローカルフィールドhの初期値または外部ローカルフィールドと、それらがどのニューロンに関するものであるのかを示すインデックスをコントローラ32から受信する。そして、インデックスコントローラ31d1は、確率的探索回路31c1のうち、そのインデックスに対応するニューロンに関する演算を行う回路部に、ローカルフィールドhの初期値または外部ローカルフィールドを供給する。
また、インデックスコントローラ31d1は、確率的探索回路31c1から各ニューロンの値(状態)を受け、その値に、どのニューロンの値かを示すインデックスを付与してコントローラ32に供給する。
図3は、確率的探索回路の一例を示す図である。
図3の確率的探索回路31c1の例は、ニューラルネットワークのイジング型のエネルギー関数の演算を、DeGloriaアルゴリズムと呼ばれるアルゴリズムに基づく小規模なハードウェアで行うものである。
確率的探索回路31c1は、それぞれがニューロンの値を出力するニューロン回路40a1,40a2,…,40an、選択信号生成回路40b、ノイズ発生回路40c、更新制御回路40dを有する。
ニューロン回路40a1~40anが出力する値は、たとえば、図1に示したニューロン群15a1~15amのうちの1つのニューロン群の値に相当する。
図3では、ニューロン回路40a1の一例が示されている。他のニューロン回路40a2~40anも同様の回路により実現できる。
ニューロン回路40a1は、選択回路41,42、乗算回路43、加算回路44、選択回路45、レジスタ46、加算回路47、比較回路48、排他的論理和回路であるXOR回路49、レジスタ50を有する。
選択回路41は、更新制御回路40dが出力するインデックスに基づいて、密結合重み係数メモリ31b1に記憶されている密結合重み係数W11,W12,…,W1nのうち1つを選択して出力する。
たとえば、インデックス=nが選択回路41に入力されたとき、選択回路41は、密結合重み係数W1nを選択する。
計算の収束性を考慮して一度に1つだけのニューロンの値の変化を許容する場合、値が更新されるニューロンの結合先では、元のローカルフィールドに対して、その更新による変化分を加算または減算すればよい。
たとえば、インデックス=iのニューロンと結合するインデックス=jのニューロンの値x(0または1)が、1-xに変化したとき、インデックス=iのニューロンのローカルフィールドの変化分Δhは、以下の式(5)で表される。
Figure 0007014963000005
式(5)において、1-2xは、値xが、0から1に変化したときには、+1となり、値xが、1から0に変化したときには、-1となる。
選択回路42は、式(5)の1-2xの演算を実現するものであり、更新制御回路40dが選択したニューロン(値の更新が許容されたニューロン)の更新後の値に基づき、1または-1を選択して出力する。更新後の値が0のときには、選択回路42は、-1を選択して出力し、更新後の値が1のときには、選択回路42は、1を選択して出力する。
乗算回路43は、選択回路41が出力する重み係数と、選択回路42が出力する値との積を出力する。
加算回路44は、乗算回路43が出力する値と、レジスタ46に格納されている値とを加算して出力する。
選択回路45は、選択信号生成回路40bから供給される選択信号に基づいて、加算回路44が出力する値、ローカルフィールドhの初期値h (init)、外部ローカルフィールドh (ext)の何れか1つを選択して出力する。
レジスタ46は、クロック信号clkに同期して、選択回路45が出力する値を取り込む。レジスタ46は、たとえば、フリップフロップである。なお、クロック信号clkは、たとえば、コントローラ32から供給される。
加算回路47は、レジスタ46が出力するローカルフィールドhに、ノイズ発生回路40cが出力するノイズ値を加算して出力する。
比較回路48は、加算回路47が出力する値が、閾値(たとえば、0)以上のときには0を出力し、閾値より小さいときには1を出力する。
XOR回路49は、比較回路48が出力する値と、レジスタ50に格納されている値とに基づきインデックス=1のニューロンの値の更新の可否を示す値を出力する。たとえば、XOR回路49は、比較回路48が出力する値と、レジスタ50に格納されている値が一致しているときは更新が否であることを示す0を出力し、異なるときは更新が可能であることを示す1を出力する。
レジスタ50は、インデックス=1のニューロンの値xを保持している。
選択信号生成回路40bは、最適化装置30の初期設定時に、選択回路45に対して、ローカルフィールドhの初期値h (init)を選択させる選択信号を出力し、その後の繰り返し処理では、加算回路44が出力する値を選択させる選択信号を出力する。選択信号生成回路40bは、所定回数の繰り返し処理後には、選択回路45に対して、外部ローカルフィールドh (ext)を選択させる選択信号を出力する。その後の繰り返し処理では、選択信号生成回路40bは、再び、選択回路45に対して、加算回路44が出力する値を選択させる選択信号を出力する。
ノイズ発生回路40cは、シミュレーテッド・アニーリングを行うために、ノイズ値を生成する。ノイズ発生回路40cとして、たとえば、LFSR(Linear Feedback Shift Registers)などを用いることができる。なお、シミュレーテッド・アニーリングの際、ノイズ発生回路40cは、たとえば、コントローラ32の制御のもと、ノイズ幅を徐々に小さくする。
更新制御回路40dは、ニューロン回路40a1~40anが出力する、インデックス=1~nのそれぞれのニューロンの値x~xと、各ニューロンの値の更新の可否を示す値とを受ける。そして、更新制御回路40dは、各ニューロンの値の更新の可否を示す値に基づき、値が更新できると判定されたニューロンがある場合には、そのニューロンを1つ選択する。さらに更新制御回路40dは、選択したニューロンのインデックスと更新後の値を、ニューロン回路40a1~40anに供給する。
たとえば、更新制御回路40dは、複数のニューロンの値の更新が可能である場合、そのうち1つを、乱数値に基づきランダムに選択して、そのニューロンのインデックスと更新後の値とを出力する。図3では、インデックス=jと、ニューロンの値xが更新制御回路40dから出力される例が示されている。
図4は、第2の実施の形態の最適化装置におけるインデックスコントローラの一例を示す図である。
インデックスコントローラ31d1は、重み係数インデックスコントローラ51、外部ローカルフィールドコントローラ52、最終状態インデックスコントローラ53を有する。
重み係数インデックスコントローラ51は、密結合重み係数と、その密結合重み係数がどのニューロン間の結合に関するものであるのかを示すインデックスとをコントローラ32から受信する。そして、重み係数インデックスコントローラ51は、そのインデックスに応じた密結合重み係数メモリ31b1のアドレスに、密結合重み係数を書き込む。
外部ローカルフィールドコントローラ52は、初期値h (init)または外部ローカルフィールドh (ext)と、それらがどのニューロンに関するものであるのかを示すインデックスをコントローラ32から受信する。そして、外部ローカルフィールドコントローラ52は、ニューロン回路40a1~40anのうち、そのインデックスに対応するニューロンに関する演算を行うニューロン回路に、初期値h (init)または外部ローカルフィールドh (ext)を供給する。
最終状態インデックスコントローラ53は、ニューロン回路40a1~40anのそれぞれのレジスタ(たとえば、レジスタ50)から各ニューロンの値xを取得する。そして、最終状態インデックスコントローラ53は、その値xに、どのニューロンの値かを示すインデックスを付与してコントローラ32に供給する。
図5は、重み係数インデックスコントローラの一例を示す図である。
重み係数インデックスコントローラ51は、FIFO(First In, First Out)メモリ(以下単にFIFOという)51a、比較回路51b、選択回路51c、レジスタ51dを有する。
密結合重み係数とそのインデックスは、FIFO51aに入力された後、インデックスは比較回路51bに供給され、密結合重み係数は選択回路51cに供給される。
比較回路51bは、供給されたインデックスが、予め図示しないレジスタなどに記憶されている演算処理部31a1に属するニューロン間の重み係数のインデックス(対応インデックス)に一致する場合には1を出力し、一致しなければ0を出力する。
選択回路51cは、比較回路51bが出力する信号に応じて、FIFO51aが出力する密結合重み係数か、レジスタ51dに記憶されている密結合重み係数の何れか一方を選択して出力する。選択回路51cは、比較回路51bが1を出力する場合には、FIFO51aが出力する密結合重み係数を選択して出力し、比較回路51bが0を出力する場合には、レジスタ51dに記憶されている密結合重み係数を選択して出力する。
レジスタ51dは、クロック信号clkに同期したタイミングで、選択回路51cが出力する密結合重み係数を保持する。このレジスタ51dに保持されている密結合重み係数が、重み係数インデックスコントローラ51の出力となる。
図4に示した外部ローカルフィールドコントローラ52も、図5に示した重み係数インデックスコントローラ51と同様の回路にて実現できる。
図6は、最終状態インデックスコントローラの一例を示す図である。
最終状態インデックスコントローラ53は、FIFO53a、インデックス生成カウンタ53b、レジスタ53cを有する。
FIFO53aは、ニューロン回路40a1~40anのそれぞれのレジスタから順番に各ニューロンの値xを取得して、その順番に各ニューロンの値xを出力する。インデックス生成カウンタ53bはインデックスを出力するとともに、FIFO53aが値xを出力するタイミングに合わせて、出力するインデックスをインクリメントする。レジスタ53cは、FIFO53aが出力する値xと、値xに対応するインデックスとをクロック信号clkに同期したタイミングで保持する。このレジスタ53cに保持されている値xと、値xに対応するインデックスとが、最終状態インデックスコントローラ53の出力となる。
図2において、コントローラ32は、疎結合重み係数メモリ32a、密結合重み係数送信部32b、外部ローカルフィールド計算部32cを有する。
疎結合重み係数メモリ32aは、ホストコンピュータ35から供給される密結合重み係数と疎結合重み係数、及びそれらのインデックスのうち、疎結合重み係数とそのインデックスを記憶する。疎結合重み係数メモリ32aとして、RAMなどの揮発性メモリ、または、フラッシュメモリやEEPROMなどの不揮発性メモリを用いることができる。なお、疎結合重み係数メモリ32aは密結合重み係数とそのインデックスを記憶してもよい。
密結合重み係数送信部32bは、密結合重み係数とそのインデックスを、演算処理部31a1~31aNに送信する(ブロードキャストする)。
外部ローカルフィールド計算部32cは、演算処理部31a1~31aNから、各ニューロンの値とそのインデックスを受ける。そして、外部ローカルフィールド計算部32cは、各ニューロンの値とそのインデックスと、疎結合重み係数メモリ32aに記憶されている疎結合重み係数とそのインデックスとに基づいて、外部ローカルフィールドを計算する。外部ローカルフィールド計算部32cは、計算した外部ローカルフィールドを、演算処理部31a1~31aNに送信する(ブロードキャストする)。
以下、第2の実施の形態の最適化装置の全体の動作の流れを、フローチャートを用いて説明する。
図7は、第2の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。
コントローラ32は、図示しないカウンタのカウント値nを1にセットし(ステップS10)、ホストコンピュータ35から供給される疎結合重み係数(及びそのインデックス)を疎結合重み係数メモリ32aに記憶する(ステップS11)。また、コントローラ32は、ホストコンピュータ35から供給される密結合重み係数(及びそのインデックス)を演算処理部31a1~31aNにブロードキャストする(ステップS12)。
演算処理部31a1~31aNのそれぞれは、対応するインデックスをもつ密結合重み係数を密結合重み係数メモリ31b1~31bNに記憶し(ステップS13)、imax/N回の、更新処理を行う(ステップS14)。imax/Nは、たとえば、計算が収束したとみなす繰り返し回数imaxを、演算処理部31a1~31aNの数(=N)で割った値である。
その後、演算処理部31a1~31aNのそれぞれは、自身に属する各ニューロンの値(及びそのインデックス)を、最終状態として、コントローラ32に送信する(ステップS15)。
コントローラ32は、カウント値nがNに達したか否かを判定し(ステップS16)、カウント値nがNに達していない場合には、外部ローカルフィールドを計算する(ステップS17)。そして、コントローラ32は、計算した外部ローカルフィールドを、演算処理部31a1~31aNにブロードキャストする(ステップS18)。また、コントローラ32は、カウント値nをインクリメントさせる(ステップS19)。その後、ステップS14からの処理が繰り返される。
カウント値nがNに達した場合、最適化装置30は、最適化問題の計算処理を終了する。なお、カウント値nがNに達した場合、たとえば、コントローラ32は、その時点での各ニューロンの値を、最適化問題の解としてホストコンピュータ35に送信する。
以上のような第2の実施の形態の最適化装置30によれば、第1の実施の形態の最適化装置10と同様の効果が得られる。また、インデックスコントローラ31d1~31dNは、それぞれ、コントローラ32と一対一の通信を行えばよいため、比較的小さい回路で実現できる。
(第3の実施の形態)
図8は、第3の実施の形態の最適化装置の一例を示す図である。図8において、図2に示した第2の実施の形態の最適化装置30と同じ要素については同一符号が付されている。
第3の実施の形態の最適化装置60において、演算処理部61a1,61a2,…,61aNは、インデックスコントローラ61b1,61b2,…,61bNによって、バス状に接続されている。そして、コントローラ62は、演算処理部61a1~61aNの何れかに接続されている。なお、接続トポロジは、バス状に限らず、演算処理部61a1と演算処理部61aNとが直接的に接続されたリング状(環状)であってもよい。
図8の例ではコントローラ62は、演算処理部61a1に接続されており、密結合重み係数送信部62aは、全ての密結合重み係数とそのインデックスを、演算処理部61a1に送信する。また、外部ローカルフィールド計算部62bは、全てのニューロンの値とそのインデックスを演算処理部61a1から受信し、計算した全ての外部ローカルフィールドを、演算処理部61a1に送信する。
インデックスコントローラ61b1~61bNは、図8の左方向に隣接する演算処理部(インデックスコントローラ61b1の場合はコントローラ62)から、密結合重み係数と外部ローカルフィールドと、それらのインデックスを受ける。そして、インデックスコントローラ61b1~61bNは、インデックスに基づいて、自身に属するニューロン群についての密結合重み係数と外部ローカルフィールドを判別する。その後、インデックスコントローラ61b1~61bNは、判別した密結合重み係数を密結合重み係数メモリ31b1~31bNに記憶し、判別した外部ローカルフィールドを確率的探索回路31c1~31cNに供給する。
また、インデックスコントローラ61b1~61bNのうちインデックスコントローラ61bN以外は、自身に属さないニューロン群についての密結合重み係数と外部ローカルフィールドとそれらのインデックスを、図8の右方向に隣接する演算処理部に送信する。
さらに、インデックスコントローラ61b2~61bNは、確率的探索回路31c1~31cNが出力するニューロン群の値とそのインデックスを、図8の左方向に隣接する演算処理部に送信する。
また、インデックスコントローラ61b1~61bNのうちインデックスコントローラ61bN以外は、図8の右方向に隣接する演算処理部とその演算処理部よりも右方向にある演算処理部に属するニューロン群の値とそのインデックスを受ける。そして、インデックスコントローラ61b1~61bNのうちインデックスコントローラ61bN以外は、それらを図8の左方向に隣接する演算処理部(インデックスコントローラ61b1の場合はコントローラ62)に送信する。
図9は、第3の実施の形態の最適化装置におけるインデックスコントローラの一例を示す図である。以下では、インデックスコントローラ61b1の例を説明するが、インデックスコントローラ61b2~61bNについても同様の回路構成にて実現できる。
インデックスコントローラ61b1は、重み係数インデックスコントローラ63、外部ローカルフィールドコントローラ64、最終状態インデックスコントローラ65を有する。
重み係数インデックスコントローラ63は、密結合重み係数と、その密結合重み係数がどのニューロン間の結合に関するものであるのかを示すインデックスとをコントローラ62から受信する。そして、重み係数インデックスコントローラ63は、インデックスに基づいて、自身に属するニューロン群についての密結合重み係数を判別する。その後、重み係数インデックスコントローラ63は、判別した密結合重み係数を密結合重み係数メモリ31b1に記憶する。
また、重み係数インデックスコントローラ63は、自身に属さないニューロン群についての密結合重み係数とそのインデックスを、図8の右方向に隣接する演算処理部61a2に送信する。
外部ローカルフィールドコントローラ64は、初期値h (init)または外部ローカルフィールドh (ext)と、それらがどのニューロンに関するものであるのかを示すインデックスをコントローラ62から受信する。そして、外部ローカルフィールドコントローラ64は、インデックスに基づいて、自身に属するニューロン群についての初期値h (init)または外部ローカルフィールドh (ext)を判別する。その後、外部ローカルフィールドコントローラ64は、判別した初期値h (init)または外部ローカルフィールドh (ext)を確率的探索回路31c1に供給する。
また、外部ローカルフィールドコントローラ64は、自身に属さないニューロン群についての初期値h (init)または外部ローカルフィールドh (ext)とそれらのインデックスを、図8の右方向に隣接する演算処理部61a2に送信する。
最終状態インデックスコントローラ65は、図3に示したニューロン回路40a1~40anのそれぞれのレジスタからニューロンの値を受け、その値にインデックスを付与して、コントローラ62に送信する。また、最終状態インデックスコントローラ65は、演算処理部61a2から、演算処理部61a2~62aNに属するニューロン群の値とそのインデックスを受ける。そして、最終状態インデックスコントローラ65は、それらをコントローラ62に送信する。
図10は、重み係数インデックスコントローラの一例を示す図である。
重み係数インデックスコントローラ63は、FIFO63a、比較回路63b、選択回路63c、インバータ回路63d、選択回路63e、レジスタ63f,63gを有する。
密結合重み係数とそのインデックスは、FIFO63aに入力された後、インデックスは比較回路63bに供給され、密結合重み係数は選択回路63cに供給される。また、密結合重み係数とインデックスの組は選択回路63eに供給される。
比較回路63bは、供給されたインデックスが、予め図示しないレジスタなどに記憶されている演算処理部61a1に属するニューロン間の重み係数のインデックス(対応インデックス)に一致する場合には1を出力し、一致しなければ0を出力する。
選択回路63cは、比較回路63bが出力する信号に応じて、FIFO63aが出力する密結合重み係数か、レジスタ63fに記憶されている密結合重み係数の何れか一方を選択して出力する。選択回路63cは、比較回路63bが1を出力する場合には、FIFO63aが出力する密結合重み係数を選択して出力し、比較回路63bが0を出力する場合には、レジスタ63fに記憶されている密結合重み係数を選択して出力する。
インバータ回路63dは、比較回路63bが出力する信号を反転する。比較回路63bが0を出力する場合、インバータ回路63dは1を出力し、比較回路63bが1を出力する場合、インバータ回路63dは0を出力する。
選択回路63eは、インバータ回路63dが出力する信号に応じて、FIFO63aが出力する密結合重み係数とインデックスの組か、レジスタ63gに記憶されている密結合重み係数とインデックスの組の何れか一方の組を選択して出力する。選択回路63eは、インバータ回路63dが1を出力する場合には、FIFO63aが出力する密結合重み係数とインデックスの組を選択して出力する。選択回路63eは、インバータ回路63dが0を出力する場合には、レジスタ63gに記憶されている密結合重み係数とインデックスの組を選択して出力する。
レジスタ63fは、クロック信号clkに同期したタイミングで、選択回路63cが出力する密結合重み係数を保持する。このレジスタ63fに保持されている密結合重み係数が、密結合重み係数メモリ31b1に供給される。
レジスタ63gは、クロック信号clkに同期したタイミングで、選択回路63eが出力する密結合重み係数とインデックスの組を保持する。このレジスタ63gに保持されている密結合重み係数とインデックスの組が、演算処理部61a2に供給される。
図9に示した外部ローカルフィールドコントローラ64も、図10に示した重み係数インデックスコントローラ63と同様の回路にて実現できる。
図11は、最終状態インデックスコントローラの一例を示す図である。
最終状態インデックスコントローラ65は、FIFO65a,65b、インデックス生成カウンタ65c、選択回路65d、レジスタ65eを有する。
FIFO65aは、図3に示したニューロン回路40a1~40anのそれぞれのレジスタから順番に各ニューロンの値xを取得して、その順番に各ニューロンの値xを出力する。
FIFO65bは、演算処理部61a2から供給される、演算処理部61a2~62aNに属するニューロンの値xとそのインデックスの組を取得し、供給順にそれらの組を出力する。
インデックス生成カウンタ65cはインデックスを出力するとともに、FIFO65aが値xを出力するタイミングに合わせて、出力するインデックスをインクリメントする。
選択回路65dは、図示しない選択信号生成回路から供給される選択信号selが1である場合、FIFO65aが出力する値xとインデックス生成カウンタ65cが出力するインデックスの組を選択して出力する。選択回路65dは、選択信号selが0である場合、FIFO65bが出力するニューロンの値xとそのインデックスの組を選択して出力する。
たとえば、図示しない選択信号生成回路は、インデックス生成カウンタ65cが、n個のニューロンの値のインデックスを生成するまでは、選択信号selを1とし、その後は、選択信号selを0とする。
レジスタ65eは、選択回路65dが出力する値xとそのインデックスとをクロック信号clkに同期したタイミングで保持する。このレジスタ65eに保持されている値xとそのインデックスとが、コントローラ62に供給される。
以下、第3の実施の形態の最適化装置の全体の動作の流れを、フローチャートを用いて説明する。
図12は、第3の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。
ステップS20,S21の処理は、図7に示したステップS10,S11の処理と同じである。ステップS22の処理では、コントローラ62は、密結合重み係数(及びそのインデックス)を1つの演算処理部61a1に送信する。そして、演算処理部61a1は対応するインデックス以外のインデックスをもつ密結合重み係数を隣接する演算処理部61a2に送信する(ステップS23)。演算処理部61a2~61aNのうち、演算処理部61aN以外も同一の処理を行う。
そして、図7に示したステップS13,S14と同様のステップS24,S25の処理が行われる。
その後、演算処理部61a1~61aNのそれぞれに属する各ニューロンの値(及びそのインデックス)が演算処理部61a1に集められ、最終状態として、演算処理部61a1からコントローラ62に送信される(ステップS26)。
ステップS27,S28の処理は、図7に示したステップS16,S17の処理と同じである。
ステップS28の処理後、コントローラ62は、計算した外部ローカルフィールド(及びそのインデックス)を、1つの演算処理部61a1に送信する(ステップS29)。そして、演算処理部61a1は対応するインデックス以外のインデックスをもつ外部ローカルフィールドを隣接する演算処理部61a2に送信する(ステップS30)。演算処理部61a2~61aNのうち、演算処理部61aN以外も同一の処理を行う。また、コントローラ62は、カウント値nをインクリメントさせる(ステップS31)。その後、ステップS25からの処理が繰り返される。
カウント値nがNに達した場合、最適化装置60は、最適化問題の計算処理を終了する。なお、カウント値nがNに達した場合、たとえば、コントローラ62は、その時点での各ニューロンの値を、最適化問題の解としてホストコンピュータ35に送信する。
以上のような第3の実施の形態の最適化装置60によれば、第1の実施の形態の最適化装置10と同様に、大規模な最適化問題を最適化装置60にマッピングして解くことが可能となる。また、1つの演算処理部61a1のインデックスコントローラ61b1が、コントローラ62と接続されているため、コントローラ62と演算処理部61a1~61aNを接続する配線の数を少なくできる。
なお、図8の例では、左端の演算処理部61a1がコントローラ62に接続するものとしたがこれに限定されず、右端の演算処理部61aNがコントローラ62に接続されてもよいし、中央の演算処理部がコントローラ62に接続されてもよい。その場合、密結合重み係数などのデータの転送方向を変えればよい。
(第4の実施の形態)
図13は、第4の実施の形態の最適化装置の一例を示す図である。図13において、図8に示した第3の実施の形態の最適化装置60と同じ要素については同一符号が付されている。
第4の実施の形態の最適化装置70において、N×N個の演算処理部71a11,71a12,…,71a1N,71a21,71a22,…,71a2N,…,71aN1,71aN2,…,71aNNは、メッシュ状の2次元接続により接続されている。そして、コントローラ62は、演算処理部71a11~71aNNの何れかに接続されている。なお、接続トポロジは、メッシュ状に限らず、演算処理部71a11と演算処理部71a1N、演算処理部71a21と演算処理部71a2N、…、演算処理部71aN1と演算処理部71aNNとがそれぞれ直接的に接続されたトーラス状(円環状)であってもよい。
図13の例ではコントローラ62は、演算処理部71aNNに接続されており、密結合重み係数送信部62aは、全ての密結合重み係数とそのインデックスを、演算処理部71aNNに送信する。また、外部ローカルフィールド計算部62bは、全てのニューロンの値とそのインデックスを演算処理部71aNNから受信し、計算した全ての外部ローカルフィールドを、演算処理部71aNNに送信する。
演算処理部71a11~71aNNのそれぞれには、インデックスコントローラ(たとえば、インデックスコントローラ71d)が含まれる。インデックスコントローラは、たとえば、図13の右方向または下方向に隣接する演算処理部(演算処理部71aNNのインデックスコントローラの場合はコントローラ62)から、密結合重み係数と外部ローカルフィールドと、それらのインデックスを受ける。そして、インデックスコントローラは、インデックスに基づいて、自身に属するニューロン群についての密結合重み係数と外部ローカルフィールドを判別する。その後、インデックスコントローラは、判別した密結合重み係数を密結合重み係数メモリ(たとえば、密結合重み係数メモリ71b)に記憶し、判別した外部ローカルフィールドを確率的探索回路(たとえば、確率的探索回路71c)に供給する。
また、演算処理部71a12~71aNNに含まれるインデックスコントローラは、自身に属さないニューロン群についての密結合重み係数と外部ローカルフィールドとそれらのインデックスを、図13の左方向または上方向に隣接する演算処理部に送信する。
さらに、各インデックスコントローラは、確率的探索回路が出力するニューロン群の値とそのインデックスを、図13の右方向または下方向に隣接する演算処理部(演算処理部71aNNのインデックスコントローラの場合はコントローラ62)に送信する。
また、演算処理部71a12~71aNNに含まれるインデックスコントローラは、図13の左方向または上方向に隣接する演算処理部から送信された、ニューロン群の値とそのインデックスを、図13の右方向または下方向に隣接する演算処理部に転送する。
図14は、第4の実施の形態の最適化装置におけるインデックスコントローラの一例を示す図である。以下では、演算処理部71a22に含まれるインデックスコントローラ71dの例を説明するが、他の演算処理部に含まれるインデックスコントローラについても同様の回路構成にて実現できる。
インデックスコントローラ71dは、重み係数インデックスコントローラ72、外部ローカルフィールドコントローラ73、最終状態インデックスコントローラ74を有する。
重み係数インデックスコントローラ72は、密結合重み係数とそのインデックスとを、図13の右方向または下方向に隣接する演算処理部から受信する。そして、重み係数インデックスコントローラ72は、インデックスに基づいて、自身に属するニューロン群についての密結合重み係数を判別する。その後、重み係数インデックスコントローラ72は、判別した密結合重み係数を密結合重み係数メモリ71bに記憶する。
また、重み係数インデックスコントローラ72は、自身に属さないニューロン群についての密結合重み係数とそのインデックスを、図13の左方向または上方向に隣接する演算処理部に送信する。
外部ローカルフィールドコントローラ73は、初期値h (init)または外部ローカルフィールドh (ext)と、それらがどのニューロンに関するものであるのかを示すインデックスを、図13の右方向または下方向に隣接する演算処理部から受信する。そして、外部ローカルフィールドコントローラ73は、インデックスに基づいて、自身に属するニューロン群についての初期値h (init)または外部ローカルフィールドh (ext)を判別する。その後、外部ローカルフィールドコントローラ73は、判別した初期値h (init)または外部ローカルフィールドh (ext)を確率的探索回路71cに供給する。
また、外部ローカルフィールドコントローラ73は、自身に属さないニューロン群についての初期値h (init)または外部ローカルフィールドh (ext)とそれらのインデックスを、図13の左方向または上方向に隣接する演算処理部に送信する。
最終状態インデックスコントローラ74は、図3に示したニューロン回路40a1~40anのそれぞれのレジスタからニューロンの値を受け、その値にインデックスを付与して、図13の右方向または下方向に隣接する演算処理部に送信する。
また、最終状態インデックスコントローラ74は、図13の左方向または上方向に隣接する演算処理部から送信された、ニューロン群の値とそのインデックスを、図13の右方向または下方向に隣接する演算処理部に転送する。
図15は、重み係数インデックスコントローラの一例を示す図である。
重み係数インデックスコントローラ72は、FIFO72a,72b、比較回路72c,72d、選択回路72e、インバータ回路72f、選択回路72g、レジスタ72h、制御回路72i、選択回路72j,72k、レジスタ72l,72mを有する。
右方向に隣接する演算処理部から供給される密結合重み係数w1とそのインデックスi1は、FIFO72aに入力された後、インデックスi1は比較回路72cに供給され、密結合重み係数w1は選択回路72eに供給される。また、密結合重み係数w1とインデックスi1は選択回路72jに供給される。
下方向に隣接する演算処理部から供給される密結合重み係数w2とそのインデックスi2は、FIFO72bに入力された後、インデックスi2は比較回路72dに供給され、密結合重み係数w2は選択回路72gに供給される。また、密結合重み係数w2とインデックスi2は選択回路72kに供給される。
比較回路72cは、供給されたインデックスi1が、予め図示しないレジスタなどに記憶されている演算処理部71a22に属するニューロン間の重み係数のインデックス(対応インデックス)に一致する場合には1を出力し、一致しなければ0を出力する。
比較回路72dは、供給されたインデックスi2が、上記対応インデックスに一致する場合には1を出力し、一致しなければ0を出力する。
選択回路72eは、比較回路72cが1を出力する場合には、FIFO72aが出力する密結合重み係数w1を選択して出力し、比較回路72cが0を出力する場合には、レジスタ72hに記憶されている密結合重み係数を選択して出力する。
インバータ回路72fは、比較回路72dが出力する信号を反転する。比較回路72dが0を出力する場合、インバータ回路72fは1を出力し、比較回路72dが1を出力する場合、インバータ回路72fは0を出力する。
選択回路72gは、インバータ回路72fが1を出力する場合には、選択回路72eが出力する密結合重み係数を選択して出力し、インバータ回路72fが0を出力する場合には、FIFO72bが出力する密結合重み係数w2を選択して出力する。
レジスタ72hは、クロック信号clkに同期したタイミングで、選択回路72gが出力する密結合重み係数を保持する。このレジスタ72hに保持されている密結合重み係数が、密結合重み係数メモリ71bに供給される。
制御回路72iは、インデックスi1,i2と、制御信号cnt1,cnt2に基づいて、選択回路72j,72kに供給する選択信号を生成し、出力する。制御信号cnt1は、右方向に隣接する演算処理部から供給され、右方向の通信経路が開放されていることを示す信号である。制御信号cnt2は、下方向に隣接する演算処理部から供給され、下方向の通信経路が開放されていることを示す信号である。
右方向の通信経路が開放されている場合、制御回路72iは、インデックスi1に応じて、左方向と上方向のどちらの演算処理部へ密結合重み係数w1とインデックスi1を送信すれば、より短い通信経路でそれらを対応する演算処理部に配給できるかを判定する。制御回路72iは、上方向の演算処理部よりも左方向の演算処理部へ密結合重み係数w1とインデックスi1を送信したほうが通信経路を短くできる場合には、1を出力し、その反対の場合には、0を出力する。
下方向の通信経路が開放されている場合、制御回路72iは、インデックスi2に応じて、左方向と上方向のどちらの演算処理部へ密結合重み係数w2とインデックスi2を送信すれば、より短い通信経路でそれらを対応する演算処理部に配給できるかを判定する。制御回路72iは、上方向の演算処理部よりも左方向の演算処理部へ密結合重み係数w2とインデックスi2を送信したほうが通信経路を短くできる場合には、1を出力し、その反対の場合には、0を出力する。
選択回路72jは、制御回路72iが出力する選択信号が1である場合、密結合重み係数w1とインデックスi1の組を選択して出力し、選択信号が0である場合、密結合重み係数w2とインデックスi2の組を選択して出力する。
選択回路72kは、制御回路72iが出力する選択信号が1である場合、密結合重み係数w2とインデックスi2の組を選択して出力し、選択信号が0である場合、密結合重み係数w1とインデックスi1の組を選択して出力する。
レジスタ72lは、クロック信号clkに同期したタイミングで、選択回路72jが出力する密結合重み係数とインデックスの組を保持する。このレジスタ72lに保持されている密結合重み係数とインデックスの組が、演算処理部71a22の左方向に隣接する演算処理部(図13の例では演算処理部71a21)に供給される。
レジスタ72mは、クロック信号clkに同期したタイミングで、選択回路72kが出力する密結合重み係数とインデックスの組を保持する。このレジスタ72mに保持されている密結合重み係数とインデックスの組が、演算処理部71a22の上方向に隣接する演算処理部(図13の例では演算処理部71a12)に供給される。
図14に示した外部ローカルフィールドコントローラ73も、図15に示した重み係数インデックスコントローラ72と同様の回路にて実現できる。
図16は、最終状態インデックスコントローラの一例を示す図である。
最終状態インデックスコントローラ74は、FIFO74a,74b,74c,74d、インデックス生成カウンタ74e,74f、選択回路74g,74h,74i,74j、インバータ回路74k,74l、レジスタ74m,74nを有する。
FIFO74a,74cは、図3に示したニューロン回路40a1~40anのそれぞれのレジスタから順番に各ニューロンの値xを取得して、その順番に各ニューロンの値xを出力する。
FIFO74bは、上方向に隣接する演算処理部から供給される、ニューロンの値xとそのインデックスの組を取得し、供給順にそれらの組を出力する。
FIFO74dは、左方向に隣接する演算処理部から供給される、ニューロンの値xとそのインデックスの組を取得し、供給順にそれらの組を出力する。
インデックス生成カウンタ74e,74fはインデックスを出力するとともに、FIFO74a,74cが値xを出力するタイミングに合わせて、出力するインデックスをインクリメントする。
選択回路74gは、図示しない選択信号生成回路から供給される選択信号sel1が1である場合、FIFO74aが出力する値xとインデックス生成カウンタ74eが出力するインデックスの組を選択して出力する。選択回路74gは、選択信号sel1が0である場合、FIFO74bが出力する値xとそのインデックスの組を選択して出力する。
たとえば、図示しない選択信号生成回路は、インデックス生成カウンタ74eが、n個のニューロンの値のインデックスを生成するまでは、選択信号sel1を1とし、その後は、選択信号sel1を0とする。
選択回路74hは、選択信号sel1をインバータ回路74kが反転した値を選択信号として受ける。そして選択回路74hは、選択信号sel1が0である場合、FIFO74cが出力する値xとインデックス生成カウンタ74fが出力するインデックスの組を選択して出力する。選択回路74hは、選択信号sel1が1である場合、FIFO74dが出力する値xとそのインデックスの組を選択して出力する。
選択回路74iは、図示しない選択信号生成回路から供給される選択信号sel2が1である場合、選択回路74gが出力する値xとインデックスの組を選択して出力する。選択回路74iは、選択信号sel2が0である場合、選択回路74hが出力する値xとそのインデックスの組を選択して出力する。
選択回路74jは、選択信号sel2をインバータ回路74lが反転した値を選択信号として受ける。そして、選択回路74jは、選択信号sel2が0である場合、選択回路74gが出力する値xとインデックスの組を選択して出力する。選択回路74jは、選択信号sel2が1である場合、選択回路74hが出力する値xとそのインデックスの組を選択して出力する。
たとえば、図示しない選択信号生成回路は、下方向の演算処理部よりも右方向の演算処理部へ値xとそのインデックスの組を送信したほうが通信経路を短くできる場合には、選択信号sel2を1とする。
レジスタ74mは、クロック信号clkに同期したタイミングで、選択回路74iが出力する値xとそのインデックスの組を保持する。このレジスタ74mに保持されている値xとそのインデックスの組が、演算処理部71a22の右方向に隣接する演算処理部に供給される。
レジスタ74nは、クロック信号clkに同期したタイミングで、選択回路74jが出力する値xとそのインデックスの組を保持する。このレジスタ74nに保持されている値xとそのインデックスの組が、演算処理部71a22の下方向に隣接する演算処理部に供給される。
以下、第4の実施の形態の最適化装置の全体の動作の流れを、フローチャートを用いて説明する。
図17は、第4の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。
ステップS40,S41の処理は、図7のステップS10,S11の処理と同じである。ステップS41の処理後、コントローラ62は、密結合重み係数(及びそのインデックス)を演算処理部71aNNに送信する(ステップS42)。
送信された密結合重み係数が、前述した対応インデックスをもつ密結合重み係数ではない場合(ステップS43:NO)、演算処理部71aNNに含まれるインデックスコントローラによって以下の処理が行われる。演算処理部71aNNの左方向の通信経路が最短パスである場合(ステップS44:YES)、インデックスコントローラは、演算処理部71aNNの左方向に隣接する演算処理部に、密結合重み係数とそのインデックスを送信する(ステップS45)。演算処理部71aNNの左方向の通信経路が最短パスではない場合(ステップS44:NO)、インデックスコントローラは、演算処理部71aNNの上方向に隣接する演算処理部に、密結合重み係数とそのインデックスを送信する(ステップS46)。ステップS45,S46の処理後、密結合重み係数が送信された演算処理部にて、ステップS43からの処理が繰り返される。
送信された密結合重み係数が、前述した対応インデックスをもつ密結合重み係数である場合(ステップS43:YES)、図7に示したステップS13,S14と同様のステップS47,S48の処理が行われる。
その後、前述の処理により、演算処理部71a11~71aNNのそれぞれに属する各ニューロンの値(及びそのインデックス)が演算処理部71aNNに集められ、最終状態として、演算処理部71aNNからコントローラ62に送信される(ステップS49)。
ステップS50,S51の処理は、図7に示したステップS16,S17の処理と同じである。
ステップS51の処理後、コントローラ62は、計算した外部ローカルフィールド(及びそのインデックス)を、1つの演算処理部71aNNに送信する(ステップS52)。その後は、ステップS43~S46と同様の処理によって、外部ローカルフィールド(及びそのインデックス)が、対応する演算処理部に最短パスで転送される(ステップS53)。また、コントローラ62は、カウント値nをインクリメントさせる(ステップS54)。その後、ステップS48からの処理が繰り返される。
カウント値nがNに達した場合、最適化装置70は、最適化問題の計算処理を終了する。なお、カウント値nがNに達した場合、たとえば、コントローラ62は、その時点での各ニューロンの値を、最適化問題の解としてホストコンピュータ35に送信する。
以上のような第4の実施の形態の最適化装置70によれば、第1の実施の形態の最適化装置10と同様に、大規模な最適化問題を最適化装置70にマッピングして解くことが可能となる。
また、1つの演算処理部71aNNが、コントローラ62と接続されているため、コントローラ62と演算処理部71a11~71aNNを接続する配線の数を少なくできる。また、演算処理部71a11~71aNNが、メッシュ状に2次元接続されているため、演算処理部71a11~71aNNの数を増やせ、より大規模な最適化問題を最適化装置70にマッピングできる。また、演算処理部71a11~71aNNのそれぞれは、密結合重み係数などのデータをより短い通信経路になるように転送する経路を選択するため、通信時間が短縮できる。
なお、図13の例では、右下の演算処理部71aNNがコントローラ62に接続するものとしたがこれに限定されない。他の演算処理部がコントローラ62に接続される場合、密結合重み係数などのデータの転送方向を変えればよい。
以上、実施の形態に基づき、本発明の最適化装置及びその制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
たとえば、上記の説明では、全演算処理部を使用した動作例を説明したが、最適化問題の規模が、演算処理部の数に比べて小さい場合には、一部の演算処理部を使用せずともよい。ただその場合、第3の実施の形態の最適化装置60では、使用しない演算処理部は、右端の演算処理部61aNから優先的に選択される。
10 最適化装置
11a1~11am 演算処理部
12 制御部
12a 記憶部
15a1~15am ニューロン群
15b1~15b8 ニューロン

Claims (6)

  1. 複数のニューロンを含み、エネルギーを表す評価関数の極小値を計算する最適化装置において、
    前記複数のニューロンのうち所定数のニューロンが、自ニューロンが属する演算処理部に含まれる他の全てのニューロンとそれぞれ接続されたニューラルネットワークにおける、前記所定数のニューロンの値についての演算を、各々が行う複数の演算処理部と、
    前記複数のニューロンに対し、同一の演算処理部に含まれる何れか2つのニューロンに対しては前記評価関数の密結合部分に対応する密結合重み係数をそれぞれ与えて演算させるとともに、異なる演算処理部に含まれる何れか2つのニューロンに対しては前記評価関数の疎結合部分に対応する疎結合重み係数を用いて前記エネルギーの変化分を自身で計算した後、計算した前記変化分をそれぞれ与えて演算させる制御部と、
    を有する最適化装置。
  2. 前記複数の演算処理部の各々は、前記制御部と1対1で接続される、請求項1に記載の最適化装置。
  3. 前記複数の演算処理部は、バス状またはリング状に接続され、前記複数の演算処理部の何れかが、前記制御部と接続される、請求項1に記載の最適化装置。
  4. 前記複数の演算処理部は、メッシュ状またはトーラス状の2次元接続により接続され、前記複数の演算処理部の何れかが、前記制御部と接続される、請求項1に記載の最適化装置。
  5. 前記複数の演算処理部の各々は、前記密結合重み係数と前記変化分のそれぞれに付与されたインデックスに基づいて、第1の方向に隣接する第1の演算処理部または、第2の方向に隣接する第2の演算処理部のうち、前記密結合重み係数と前記変化分の通信経路が短くなる何れか一方に、前記密結合重み係数と前記変化分を送信する、請求項4に記載の最適化装置。
  6. 複数のニューロンを含み、エネルギーを表す評価関数の極小値を計算する最適化装置の制御方法において、
    複数の演算処理部の各々が、前記複数のニューロンのうち所定数のニューロンが、自ニューロンが属する演算処理部に含まれる他の全てのニューロンとそれぞれ接続されるニューラルネットワークにおける、前記所定数のニューロンの値についての演算を行い、
    制御部が、前記複数のニューロンに対し、同一の演算処理部に含まれる何れか2つのニューロンに対しては前記評価関数の密結合部分に対応する密結合重み係数をそれぞれ与えて演算させるとともに、異なる演算処理部に含まれる何れか2つのニューロンに対しては前記評価関数の疎結合部分に対応する疎結合重み係数を用いて前記エネルギーの変化分を自身で計算した後、計算した前記変化分をそれぞれ与えて演算させる、
    最適化装置の制御方法。
JP2018047655A 2018-03-15 2018-03-15 最適化装置及び最適化装置の制御方法 Active JP7014963B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018047655A JP7014963B2 (ja) 2018-03-15 2018-03-15 最適化装置及び最適化装置の制御方法
US16/284,123 US11481618B2 (en) 2018-03-15 2019-02-25 Optimization apparatus and method for controlling neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018047655A JP7014963B2 (ja) 2018-03-15 2018-03-15 最適化装置及び最適化装置の制御方法

Publications (2)

Publication Number Publication Date
JP2019159997A JP2019159997A (ja) 2019-09-19
JP7014963B2 true JP7014963B2 (ja) 2022-02-02

Family

ID=67905766

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018047655A Active JP7014963B2 (ja) 2018-03-15 2018-03-15 最適化装置及び最適化装置の制御方法

Country Status (2)

Country Link
US (1) US11481618B2 (ja)
JP (1) JP7014963B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366322B2 (en) * 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
JP7417074B2 (ja) * 2020-02-19 2024-01-18 富士通株式会社 最適化装置、最適化方法及び最適化装置の制御プログラム
KR20210106131A (ko) 2020-02-20 2021-08-30 삼성전자주식회사 전자 장치 및 그의 제어 방법
JP2021135791A (ja) * 2020-02-27 2021-09-13 富士通株式会社 最適化装置、最適化方法、及び最適化プログラム
US11556384B2 (en) 2020-03-13 2023-01-17 Cisco Technology, Inc. Dynamic allocation and re-allocation of learning model computing resources
US11164084B1 (en) * 2020-11-11 2021-11-02 DeepCube LTD. Cluster-connected neural network
JP2022158585A (ja) 2021-04-02 2022-10-17 富士通株式会社 最適化プログラム、最適化方法及び最適化装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016051351A (ja) 2014-08-29 2016-04-11 株式会社日立製作所 半導体装置
JP2017219948A (ja) 2016-06-06 2017-12-14 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP2018010474A (ja) 2016-07-13 2018-01-18 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP2019139323A (ja) 2018-02-06 2019-08-22 富士通株式会社 最適化システム、最適化装置及び最適化システムの制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0769893B2 (ja) * 1988-01-25 1995-07-31 日本電気株式会社 ニューラルネットワークシミュレータ
US8386403B2 (en) 2010-03-02 2013-02-26 Empire Technology Development Llc Distributed-type Markov chain Monte Carlo
JP6468254B2 (ja) * 2016-07-01 2019-02-13 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016051351A (ja) 2014-08-29 2016-04-11 株式会社日立製作所 半導体装置
JP2017219948A (ja) 2016-06-06 2017-12-14 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP2018010474A (ja) 2016-07-13 2018-01-18 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP2019139323A (ja) 2018-02-06 2019-08-22 富士通株式会社 最適化システム、最適化装置及び最適化システムの制御方法

Also Published As

Publication number Publication date
US11481618B2 (en) 2022-10-25
JP2019159997A (ja) 2019-09-19
US20190286981A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
JP7014963B2 (ja) 最適化装置及び最適化装置の制御方法
TWI671688B (zh) 硬體中轉置神經網路矩陣之方法、系統及電腦儲存媒體
JP6623947B2 (ja) 情報処理装置、イジング装置及び情報処理装置の制御方法
JP2017219948A (ja) 情報処理装置、イジング装置及び情報処理装置の制御方法
KR102203746B1 (ko) 인공 신경망 정방향 연산 실행용 장치와 방법
JP7410395B2 (ja) 最適化装置及び最適化方法
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JPH04290155A (ja) 並列データ処理方式
CN113283046B (zh) 优化装置、优化方法和记录介质
JP7137064B2 (ja) 最適化装置及び最適化装置の制御方法
JP7068575B2 (ja) 最適化システム、最適化装置及び最適化システムの制御方法
JP2017182320A (ja) 機械学習装置
JP2020173661A (ja) 最適化装置及び最適化装置の制御方法
JP6856112B1 (ja) ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム
US11507821B2 (en) Neural network circuit and neural network integrated circuit
Liu et al. Global asymptotic stability of generalized bi-directional associative memory networks with discrete and distributed delays
JP7004938B2 (ja) 最適化装置および最適化装置の制御方法
Meng et al. PPOAccel: A high-throughput acceleration framework for proximal policy optimization
JP2020173579A (ja) 最適化システムおよび最適化システムの制御方法
WO2019208581A1 (ja) インバーティブルロジック回路装置
Ruelmann On the prospects of using machine learning for the numerical simulation of PDEs: training neural networks to assemble approximate inverses
US20210142153A1 (en) Resistive processing unit scalable execution
JPH03105584A (ja) 並列データ処理方式
JP2023037176A (ja) 計算装置
JP2009104403A (ja) 再構成ユニットによる解探索の方法およびデータ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20201217

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20201217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220103