IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-最適化装置及び最適化方法 図1
  • 特許-最適化装置及び最適化方法 図2
  • 特許-最適化装置及び最適化方法 図3
  • 特許-最適化装置及び最適化方法 図4
  • 特許-最適化装置及び最適化方法 図5
  • 特許-最適化装置及び最適化方法 図6
  • 特許-最適化装置及び最適化方法 図7
  • 特許-最適化装置及び最適化方法 図8
  • 特許-最適化装置及び最適化方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-11
(45)【発行日】2023-01-19
(54)【発明の名称】最適化装置及び最適化方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20230112BHJP
   G06N 3/063 20230101ALI20230112BHJP
   G06N 3/044 20230101ALI20230112BHJP
【FI】
G06N99/00 180
G06N3/063
G06N3/04 145
【請求項の数】 4
(21)【出願番号】P 2019100622
(22)【出願日】2019-05-29
(65)【公開番号】P2020194442
(43)【公開日】2020-12-03
【審査請求日】2022-02-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】塚本 三六
(72)【発明者】
【氏名】田村 泰孝
(72)【発明者】
【氏名】松原 聡
【審査官】加藤 優一
(56)【参考文献】
【文献】特開2018-041351(JP,A)
【文献】特開2018-028908(JP,A)
【文献】特開2017-219948(JP,A)
【文献】特開平05-233586(JP,A)
【文献】特開2018-133095(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 -99/00
(57)【特許請求の範囲】
【請求項1】
最適化問題を変換したイジングモデルの複数のスピンに対応した複数のニューロンのうちの1つである対象ニューロンと結合する結合先ニューロンを示す結合先情報を保持し、値が更新される更新対象ニューロンを示す更新対象情報を受け、前記更新対象情報と一致する前記結合先情報を示す信号を出力する第1の記憶部と、
前記対象ニューロンと前記結合先ニューロンとの間の結合の強さを示す重み係数を保持し、前記第1の記憶部が出力する前記信号が示す前記結合先情報に対応した前記重み係数を出力する第2の記憶部と、
前記第2の記憶部が出力する前記重み係数と、前記更新対象ニューロンの値とを用いて、前記対象ニューロンの値の更新を確率的に許容し、前記対象ニューロンの値の更新を許容したか否かを示す判定結果を出力する演算部と、
をそれぞれが有し、それぞれが異なる前記対象ニューロンについての前記判定結果を出力する複数のニューロン回路と、
前記複数のニューロン回路から出力される複数の前記判定結果に基づいて、前記更新対象ニューロンを決定し、前記更新対象ニューロンの値を更新するとともに、前記更新対象情報を出力する更新制御回路と、
を有する最適化装置。
【請求項2】
前記第1の記憶部は、前記更新対象情報と一致する前記結合先情報を保持しているか否かを示す一致判定情報を出力し、
前記更新制御回路は、前記複数のニューロン回路のうち、前記更新対象情報と一致する前記結合先情報を保持していないことを示す前記一致判定情報を出力したニューロン回路が、前記対象ニューロンの値の更新を許容したことを示す前記判定結果を出力した場合、前記対象ニューロンを前記更新対象ニューロンの1つとして決定する、
請求項1に記載の最適化装置。
【請求項3】
前記第1の記憶部は連想メモリである、請求項1または2に記載の最適化装置。
【請求項4】
複数のニューロン回路のそれぞれが有する第1の記憶部が、最適化問題を変換したイジングモデルの複数のスピンに対応した複数のニューロンのうちの1つであり、前記複数のニューロン回路のそれぞれにおいて異なる対象ニューロンと結合する結合先ニューロンを示す結合先情報を保持し、値が更新される更新対象ニューロンを示す更新対象情報を受け、前記更新対象情報と一致する前記結合先情報を示す信号を出力し、
前記複数のニューロン回路のそれぞれが有する第2の記憶部が、前記対象ニューロンと前記結合先ニューロンとの間の結合の強さを示す重み係数を保持し、前記第1の記憶部が出力する前記信号が示す前記結合先情報に対応した前記重み係数を出力し、
前記複数のニューロン回路のそれぞれが有する演算部が、前記第2の記憶部が出力する前記重み係数と、前記更新対象ニューロンの値とを用いて、前記対象ニューロンの値の更新を確率的に許容し、前記対象ニューロンの値の更新を許容したか否かを示す判定結果を出力し、
更新制御回路が、前記複数のニューロン回路のそれぞれの前記演算部から出力される複数の前記判定結果に基づいて、前記更新対象ニューロンを決定し、前記更新対象ニューロンの値を更新するとともに、前記更新対象情報を出力する、
最適化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置及び最適化方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする多変数の組合せ最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【0003】
最適化装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数の状態変数のそれぞれが、他の状態変数の値と、他の状態変数と自身の状態変数との相互作用の大きさを示す重み係数とに応じて0または1を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数の値(以下エネルギーという)の最小値が得られる各状態変数の値の組合せを、解として求める。
【0004】
従来、デジタル回路を用いてシミュレーテッド・アニーリングを行うことでエネルギーが最小となる各状態変数の値の組合せを計算する最適化装置があった(たとえば、特許文献1,2,3参照)。
【0005】
また、ニューラルネットワークを用いた技術において、学習による発火状況に応じてニューロンを追加または削除する技術があった(たとえば、特許文献4参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2017-219952号公報
【文献】特開2018-10474号公報
【文献】国際公開第2015/132883号
【文献】特開2001-331839号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、問題の規模の増大に応じて状態変数の数が増えると重み係数の数も増加する。特に、問題をイジングモデルに置き換える際の柔軟性に優れた、全状態変数間の相互作用を考慮可能な全結合型の最適化装置(たとえば、特許文献1,2)では、状態変数の数の増加とともに重み係数の数が急激に増加する。
【0008】
このため、たとえば、1チップの半導体集積回路で最適化装置を実現する場合、重み係数を記憶する記憶部の容量が増加してしまう。最適化装置の外部のメモリに重み係数を記憶しておく方法や、複数チップを用いて最適化装置を構成する方法があるが、メモリからの重み係数の読み出しやチップ間の通信にかかる時間により計算速度が低下してしまう問題がある。
【0009】
1つの側面では、重み係数を記憶する記憶部の容量を削減可能な最適化装置及び最適化方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
1つの実施態様では、最適化問題を変換したイジングモデルの複数のスピンに対応した複数のニューロンのうちの1つである対象ニューロンと結合する結合先ニューロンを示す結合先情報を保持し、値が更新される更新対象ニューロンを示す更新対象情報を受け、前記更新対象情報と一致する前記結合先情報を示す信号を出力する第1の記憶部と、前記対象ニューロンと前記結合先ニューロンとの間の結合の強さを示す重み係数を保持し、前記第1の記憶部が出力する前記信号が示す前記結合先情報に対応した前記重み係数を出力する第2の記憶部と、前記第2の記憶部が出力する前記重み係数と、前記更新対象ニューロンの値とを用いて、前記対象ニューロンの値の更新を確率的に許容し、前記対象ニューロンの値の更新を許容したか否かを示す判定結果を出力する演算部と、をそれぞれが有し、それぞれが異なる前記対象ニューロンについての前記判定結果を出力する複数のニューロン回路と、前記複数のニューロン回路から出力される複数の前記判定結果に基づいて、前記更新対象ニューロンを決定し、前記更新対象ニューロンの値を更新するとともに、前記更新対象情報を出力する更新制御回路と、を有する最適化装置が提供される。
【0011】
また、1つの実施態様では最適化方法が提供される。
【発明の効果】
【0012】
1つの側面では、重み係数を記憶する記憶部の容量を削減可能となる。
【図面の簡単な説明】
【0013】
図1】第1の実施の形態の最適化装置の一例を示す図である。
図2】第2の実施の形態の最適化装置の一例を示す図である。
図3】ニューロン回路の一例を示す図である。
図4】CAMの一例を示す図である。
図5】第2の実施の形態の最適化装置の一例の動作の流れを示すフローチャートである。
図6】第3の実施の形態の最適化装置の一例を示す図である。
図7】第3の実施の形態の最適化装置におけるCAMの一例を示す図である。
図8】第3の実施の形態の最適化装置における更新制御回路の一例を示す図である。
図9】第3の実施の形態の最適化装置の一例の動作の流れを示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す最適化装置は、最適化問題を変換したイジングモデルの複数のスピンに対応した複数のニューロンのそれぞれの値(以下、ビット値という)の組合せのうち、エネルギーが最小となるときの各ニューロンのビット値の組合せを探索するものである。
【0015】
イジング型のエネルギー関数E(x)は、たとえば、以下の式(1)で定義される。
【0016】
【数1】
【0017】
右辺の1項目は、全ニューロンの全組合せについて、漏れと重複なく、2つのニューロンのビット値(0または1)と重み係数との積を積算したものである。xは、識別情報(以下idと表記する)がiのニューロンのビット値を表す変数(状態変数とも呼ばれる)、xは、id=jのニューロンのビット値を表す変数である。Wijは、id=i,jのニューロンの相互作用の大きさ(結合の強さ)を示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。またWijは、所定のビット幅(たとえば、16ビット、32ビット、64ビット、128ビットなど)をもつ。
【0018】
右辺の2項目は、全ニューロンのそれぞれのバイアス係数とニューロンのビット値との積の総和を求めたものである。bは、id=iのニューロンのバイアス係数を示している。
【0019】
また、xが変化して1-xとなると、xの増加分は、Δx=(1-x)-x=1-2xと表せる。スピン反転(ニューロンのビット値の変化)に伴うエネルギー変化(ΔE)は、以下の式(2)で表される。
【0020】
【数2】
【0021】
式(2)において、xが1から0に変化するとき、Δxは-1となり、xが0から1に変化するとき、Δxは1となる。なお、hはローカルフィールド(局所場)と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEである。hが0より小さければ、xを1から0へ更新することで、全エネルギーが減少し、hが0より大きければ、xを0から1へ更新することで、全エネルギーが減少する。
【0022】
また、xが0から1に変化したときのhの変化分(Δh)は、+Wij、xが1から0に変化したときのΔhは、-Wijと表せる。したがって、状態遷移に伴って更新されたニューロンのビット値が1か0かによって、Wijを元のhに加算または減算することで、hの更新が可能である。
【0023】
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
第1の実施の形態の最適化装置10は、ニューロン回路11a1,11a2,…,11an、更新制御回路12を有する。図1の例では、ニューロン回路11a1~11anには、n個のニューロンの何れかを示すidが割当てられている。図1の例では、ニューロン回路11a1にはid=1が割当てられ、ニューロン回路11a2にはid=2が割当てられ、ニューロン回路11anにはid=nが割当てられている。
【0024】
ニューロン回路11a1は、記憶部11b1,11c1、演算部11d1を有する。
記憶部11b1は、複数の(n個の)ニューロンのうちの1つである対象ニューロンと結合する結合先ニューロンを示す結合先情報を保持する。また、記憶部11b1は、値が更新される更新対象ニューロンを示す更新対象情報を受け、その更新対象情報と一致する結合先情報を示す信号を出力する。
【0025】
図1には、記憶部11b1が保持している結合先情報の例が示されている。ニューロン回路11a1における対象ニューロンは、id=1のニューロンであり、結合先情報はid=1のニューロンと結合するニューロンを示す。図1の例では、id=1のニューロンと結合するニューロンのid(2,5,…,n-1)が結合先情報として記憶部11b1に保持されている。記憶部11b1は、更新対象情報(id)として、id=2を受けた場合、id=2と一致する結合先情報(id=2)を保持しているため、id=2を示す信号を出力する。記憶部11b1は、id=nを受けた場合、id=nと一致する結合先情報を保持していないため、結合先情報を示す信号を出力しない。
【0026】
記憶部11b1は、たとえば、連想メモリ(CAM:Content-Addressable Memory)などによって実現できる。記憶部11b1は、RAM(Random Access Memory)や比較器などを用いて実現されるようにしてもよい。
【0027】
記憶部11c1は、対象ニューロンと結合先ニューロンとの間の結合の強さを示す重み係数を保持し、記憶部11b1が出力する信号が示す結合先情報に対応した重み係数を出力する。
【0028】
図1には、記憶部11c1が保持している重み係数の例が示されている。前述のようにid=1のニューロンがid=2,5,…,n-1とニューロンと結合している場合、記憶部11c1は、重み係数としてW12,W15,…,W1,n-1を保持する。記憶部11c1は、記憶部11b1がid=2を示す信号を出力した場合、W12を出力する。
【0029】
記憶部11c1は、たとえば、RAMやレジスタなどによって実現できる。
結合先情報や重み係数は、たとえば、図示しない制御装置が、最適化問題を式(1)のようなエネルギー関数で表されるイジングモデルに変換することで得られる。そして、結合先情報や重み係数は、たとえば、最適化装置10の初期設定処理時に、制御装置から最適化装置10に供給され、記憶部11b1,11c1に書き込まれる。
【0030】
演算部11d1は、記憶部11c1が出力する重み係数と、更新対象ニューロンのビット値とを用いて、対象ニューロンの値の更新を確率的に許容し、対象ニューロンの値の更新を許容したか否かを示す判定結果(f)を出力する。
【0031】
たとえば、演算部11d1は、記憶部11c1が出力する重み係数と、更新対象ニューロンのビット値とを用いて、前述のローカルフィールド(h)を更新するとともに、式(2)に基づいて、エネルギー変化(ΔE)を更新する。そして、演算部11d1は、温度パラメータと乱数とに基づいて決定される熱ノイズと、ΔEとに基づいて、id=1のニューロンのビット値の更新を許容するか否かを判定する。温度パラメータは、たとえば、図示しない制御回路または更新制御回路12から入力される。
【0032】
前述のようにid=iのニューロンについてのhが0より小さくxが1の場合、xを1から0へ更新することで、全エネルギーが減少する。また、hが0より大きくxが0の場合、xを0から1へ更新することで、全エネルギーが減少する。これらに対して、hが0より小さくxが0の場合、xを0から1へ更新することで、全エネルギーが増加する。また、hが0より大きくxが1の場合、xを1から0へ更新することで、全エネルギーが増加する。
【0033】
イジングモデルの状態が基底状態(最適解)ではない、局所解にトラップされることを防止するために、演算部11d1は、熱ノイズを用いて、エネルギーが増加する状態遷移も所定の確率で発生させる。熱ノイズは、温度パラメータが大きいほどノイズ幅が大きくなる。シミュレーテッド・アニーリングが行われる場合、温度パラメータは徐々に小さくなるように制御される。
【0034】
演算部11d1は、ΔEを計算する論理回路、LFSR(Linear Feedback Shift Registers)などの乱数生成器を用いて熱ノイズを生成する回路、比較器などにより実現される。
【0035】
他のニューロン回路11a2~11anについても、ニューロン回路11a1と同じ要素を有しており、それぞれ異なる対象ニューロンについての判定結果を出力する。たとえば、id=2が割当てられているニューロン回路11a2は、記憶部11b2,11c2、演算部11d2を有し、id=2のニューロンのビット値の更新を許容するか否かを示す判定結果(f)を出力する。id=nが割当てられているニューロン回路11anは、記憶部11bn,11cn、演算部11dnを有し、id=nのニューロンのビット値の更新を許容するか否かを示す判定結果(f)を出力する。
【0036】
更新制御回路12は、ニューロン回路11a1~11anが出力する判定結果(f~f)に基づいて、更新対象ニューロンを1つ決定し、更新対象ニューロンのビット値(x)を更新するとともに、更新対象情報(id)を出力する。
【0037】
更新制御回路12は、たとえば、更新が許容されたニューロンが複数ある場合、乱数に基づいて、1つを更新対象ニューロンとして選択する選択回路や、各ニューロンのビット値を保持するレジスタなどを用いて実現される。乱数に基づいて、1つを更新対象ニューロンとして選択する選択回路の例については、たとえば、特開2018-041351号公報の第5~第7図に記載されている。
【0038】
以下、第1の実施の形態の最適化装置10の動作例を説明する。
まず、初期設定処理において、たとえば、図示しない制御装置から供給される結合先情報や重み係数が記憶部11b1~11bn,11c1~11cnに書き込まれる。また、制御装置によって、各ニューロンについてのローカルフィールドの初期値が演算部11d1~11dnに設定され、各ニューロンのビット値の初期値が更新制御回路12の図示しないレジスタに設定される。また、シミュレーテッド・アニーリングが行われる場合、制御装置によって、アニーリング条件(温度パラメータの変化スケジュールや計算の反復回数など)の設定が行われる。
【0039】
その後、演算部11d1~11dnは、初期設定処理によって得られた各ニューロンのビット値やローカルフィールドの初期値に基づいてエネルギー変化を計算する。そして、演算部11d1~11dnは、各ニューロンについて、計算したエネルギー変化と熱ノイズとに基づいて更新を許容するか否かを示す判定結果(f~f)を出力する。以下では、f=1の場合、id=iのニューロンの更新が許容されたものとする。
【0040】
更新制御回路12は、ニューロン回路11a1~11anが出力するf~fに基づいて、更新対象ニューロンを決定する。更新が許容されたニューロンが複数ある場合、更新制御回路12は、たとえば、乱数に基づいて、1つを更新対象ニューロンとして決定する。そして、更新制御回路12は、更新対象ニューロンのビット値(x)を更新するとともに、更新対象情報(id)を出力する。更新が許容されたニューロンが1つもない場合、ビット値の更新は行われない。
【0041】
なお、演算部11d1~11dnは、解が局所解に拘束されることを抑制するため、オフセット値をエネルギー変化に加えるとともに、ビット値の更新が生じない状況が発生するたびにそのオフセット値を増やし、更新を促進するようにしてもよい。
【0042】
更新制御回路12が、idを出力した場合、記憶部11b1~11bnは、idと一致する結合先情報がある場合、その一致する結合先情報を示す信号を出力する。たとえば前述のようにid=2で、記憶部11b1が、結合先情報としてid=2を保持している場合、記憶部11b1は、id=2を示す信号を出力する。
【0043】
そして、記憶部11c1~11cnは、記憶部11b1~11bnが出力する信号が示す結合先情報に対応した重み係数を出力する。
演算部11d1~11dnは、記憶部11c1~11cnが出力した重み係数と、xとに基づいてローカルフィールドを更新し、エネルギー変化についても更新する。その後、更新されたエネルギー変化と熱ノイズとに基づいたf~fの出力や更新対象ニューロンの決定、xの更新が繰り返される。
【0044】
シミュレーテッド・アニーリングが行われる場合、熱ノイズを徐々に小さくしていきながら、上記の処理が所定回数繰り返される。そして、上記の処理が所定回数繰り返された後に得られた各ニューロンのビット値が最適化問題の解として出力される。なお、更新制御回路12は、更新対象ニューロンが更新されることによるエネルギー変化を用いてエネルギーを更新するとともに、そのエネルギーがこれまでの最小値である場合、その最小値と最小値が得られたときの各ニューロンのビット値を保持してもよい。その場合、上記の処理の反復回数が所定回数に達した時点で保持されているエネルギーが最小値のときの各ニューロンのビット値が、解として出力されるようにしてもよい。
【0045】
以上のような、第1の実施の形態の最適化装置10では、記憶部11c1~11cnには、結合のないニューロン間の重み係数については保持されていない。たとえば、id=1のニューロンとid=nのニューロンが結合していない場合、重み係数(W1n)は0である。この場合、式(1)において、i=1、j=nとすると、x,xの値によらず、W1n=0であるので、W1nはエネルギーに影響を与えない。このため、記憶部11c1は、W1nを保持しなくてもよい。
【0046】
このような重み係数を保持しないようにすることで、記憶部11c1~11cnの容量を削減することができる。これにより、たとえば、1チップの最適化装置10で、より大規模な最適化問題の計算が可能になる。
【0047】
なお、各ニューロンの結合先は問題によって変わるが、問題に応じて記憶部11b1~11bn,11c1~11cnの保持内容を変更することで、様々な結合状態に対応することができる。
【0048】
(第2の実施の形態)
図2は、第2の実施の形態の最適化装置の一例を示す図である。
第2の実施の形態の最適化装置20は、ニューロン回路21a1,21a2,…,21an、更新制御回路22、制御回路23を有する。また、最適化装置20は、制御装置25と接続されている。
【0049】
ニューロン回路21a1~21anは、図1に示したニューロン回路11a1~11anと同様の機能を行う。ニューロン回路21a1~21anの回路例については後述する。
【0050】
更新制御回路22は、図1に示した更新制御回路12と同様の機能を行う。更新制御回路22は、たとえば、各ニューロンのビット値を保持する保持部22aを有する。保持部22aは、たとえば、レジスタやRAMなどによって実現できる。
【0051】
制御回路23は、制御装置25から供給される情報に基づいて、最適化装置20の初期設定処理などを行う。また、制御回路23は、シミュレーテッド・アニーリングを行う場合、更新対象ニューロンを決定する処理がアニーリング条件に基づいた回数繰り返されるごとに、たとえば、温度パラメータの値を小さくしていく。
【0052】
さらに、制御回路23は、更新対象ニューロンを決定する処理が所定回数、繰り返された後、保持部22aに保持されている各ニューロンのビット値を取得し、最適化問題に対する解として制御装置25に送信する。
【0053】
なお、制御回路23は、保持部22aが、エネルギーの最小値や最小値が得られたときの各ニューロンのビット値を保持している場合、更新対象ニューロンを決定する処理が所定回数、繰り返されたのちにそれらの情報を取得して、制御装置25に送信してもよい。
【0054】
制御回路23は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路にて実現できる。なお、制御回路23は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の処理を行う。
【0055】
また、制御回路23の一部または全ての機能を行う要素が、更新制御回路22または制御装置25に含まれていてもよい。
制御装置25は、ユーザによって入力された最適化問題の情報に基づいて、最適化問題をイジングモデルに変換する(式(1)のエネルギー関数に定式化する)。変換されたイジングモデルの情報は、重み係数とバイアス係数を含む。制御装置25は、重み係数に基づいて、各ニューロンについての結合先のニューロンのidを、結合先情報として最適化装置20に送信する。また、制御装置25は、ローカルフィールドの初期値(たとえば、バイアス係数)や、値が0ではない重み係数、アニーリング条件などについても最適化装置20に送信する。さらに、制御装置25は、最適化装置20から解(各ニューロンのビット値)を受信した場合、解を図示しない表示装置に表示させてもよい。
【0056】
制御装置25は、たとえば、PC(Personal Computer)などのコンピュータであってもよいし、CPUやDSPなどのプロセッサであってもよい。
(ニューロン回路21a1~21anの一例)
図3は、ニューロン回路の一例を示す図である。図3では、ニューロン回路21a1の例を示しているが、他のニューロン回路21a2~21anについても同様の回路により実現される。
【0057】
ニューロン回路21a1は、CAM30、RAM31、演算部32を有する。
CAM30は、id=1のニューロンと結合する結合先ニューロンを示すidを保持する。また、CAM30は、値が更新される更新対象ニューロンを示すidを受け、idと一致するidを保持している場合、そのidを示す信号を出力する。CAM30の例については後述する(図4参照)。
【0058】
RAM31は、id=1のニューロンと結合先ニューロンとの間の結合の強さを示す重み係数を保持し、CAM30が出力する信号が示すidに対応した重み係数を出力する。
演算部32は、ΔE計算部32a、状態遷移判定部32bを有する。
【0059】
ΔE計算部32aは、選択回路32a1、乗算器32a2、加算器32a3、レジスタ32a4、乗算器32a5、選択回路32a6を有する。
選択回路32a1は、更新対象ニューロン(id=idのニューロン)のビット値の変化分の演算を実現するものである。更新対象ニューロンのビット値(x)が、1から0に変化するとき、変化分(Δx)は-1となり、xが0から1に変化するとき、Δxは1となる。選択回路32a1は、更新制御回路22から供給されるx(更新後の値)が0のときには、-1を選択して出力し、xが1のときには、1を選択して出力する。
【0060】
乗算器32a2は、RAM31が出力する重み係数と、選択回路32a1が出力する値との積を出力する。図3の例では、乗算器32a2には、重み係数W1jが入力されている。乗算器32a2の出力は、xが変化したことによるローカルフィールド(h)の変化分(Δh)を表す。
【0061】
加算器32a3は、乗算器32a2が出力する値と、レジスタ32a4に格納されている値とを加算して出力する。
レジスタ32a4は、図示しないクロック信号に同期して、加算器32a3が出力する値(h)を取り込む。レジスタ32a4は、たとえば、フリップフロップである。なお、レジスタ32a4に格納されるhの初期値は、全ニューロンのビット値の初期値を0とした場合、バイアス係数(b)である。
【0062】
乗算器32a5は、レジスタ32a4が出力するhと選択回路32a6が出力する値との積を出力する。この積が、式(2)において、id=1のニューロンのビット値が変化することによるエネルギー変化(ΔE)である。
【0063】
選択回路32a6は、式(2)の-Δxの演算を実現するものである。選択回路32a6は、更新制御回路22から供給されるid=1のニューロンのビット値であるxが0のときは-1を出力し、xが1のときは1を出力する。
【0064】
状態遷移判定部32bは、符号反転部32b1、オフセット加算部32b2、乱数発生回路32b3、選択法則適用部32b4、乗算器32b5、比較回路32b6を有する。
符号反転部32b1は、ΔEに-1を掛けて符号を反転させる。
【0065】
オフセット加算部32b2は、符号反転部32b1の出力値(-ΔE)に、オフセット値を加える。オフセット加算部32b2は、更新制御回路22から更新が許容されるニューロンがないことを示す信号(f=0)を受けたとき、オフセット値を増加していく。一方、オフセット加算部32b2は、更新制御回路22から更新が許容されるニューロンがあることを示す信号(f=1)を受けたとき、オフセット値を0にする。オフセット値が大きくなるとニューロンのビット値の更新が許容されやすくなり、現在の状態(各ニューロンのビット値の組合せ)が局所解にある場合、その局所解からの脱出が促進される。
【0066】
乱数発生回路32b3は、0以上、1以下の一様乱数rを発生する。
選択法則適用部32b4は、シミュレーテッド・アニーリングを行うための選択法則(メトロポリス法またはギブス法)に基づいた値を出力する。
【0067】
シミュレーテッド・アニーリングが行われる場合、あるエネルギー変化を引き起こす状態遷移の許容確率A(ΔE,T)を以下の式(3)、(4)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
【0068】
【数3】
【0069】
【数4】
【0070】
式(3)、(4)においてTは、前述の温度パラメータである。
式(3)、(4)で表される許容確率A(ΔE,T)を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【0071】
許容確率A(ΔE,T)でエネルギー変化を引き起こす状態遷移を許容することを示す判定結果(=1)を出力する回路は、式(3)、(4)のf(-ΔE/T)と、一様乱数rとの比較結果に基づいた値を出力する比較器によって実現できる。
【0072】
ただ、次のような変形を行っても同じ機能が実現できる。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。たとえば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数(r)に作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをrとしたf-1(r)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(r)より大きいとき1を出力する回路でよいことがわかる。さらにTが正であることから、その回路は、-ΔEがT・f-1(r)より大きいとき1を出力する回路でよい。
【0073】
選択法則適用部32b4は、入力されるrを上記のf-1(r)の値に変換する変換テーブルを用いて、f-1(r)の値を出力する。メトロポリス法が適用される場合、f-1(r)は、log(r)である。変換テーブルは、たとえば、RAM、フラッシュメモリなどのメモリに記憶されている。
【0074】
乗算器32b5は、制御回路23から供給されるTと、f-1(r)との積(T・f-1(r))を出力する。T・f-1(r)は、前述の熱ノイズ(熱励起エネルギー)に相当する。
【0075】
比較回路32b6は、オフセット加算部32b2による加算結果と、T・f-1(r)とを比較する。そして、比較回路32b6は、加算結果が、T・f-1(r)より大きい場合、id=1のニューロンの更新を許容することを示す判定結果(f=1)を出力し、T・f-1(r)より小さい場合、更新を許容しないことを示す判定結果(f=0)を出力する。
【0076】
(CAM30の一例)
図4は、CAMの一例を示す図である。
CAM30は、入力レジスタ30a、一致判定回路30b1,30b2,30b3,…,30bm、エンコーダ30cを有する。
【0077】
入力レジスタ30aは、更新対象ニューロンを示すidを保持する。なお、図4の例では、全ニューロンの数であるnが1024であるものとしている。その場合、idやidのビット数は、図4に示すように10ビットとなる。また、各ニューロンの結合数の最大値が、たとえば、32の場合、一致判定回路30b1~30bmは32個、設けられる。
【0078】
一致判定回路30b1~30bmのそれぞれは、CAM30が含まれるニューロン回路21a1に割当てられたid=1のニューロンと結合するニューロンを示すidを保持するレジスタを含む。さらに、一致判定回路30b1~30bmのそれぞれは、保持しているidと、入力レジスタ30aに保持されているidとが一致する場合に1を出力し、不一致の場合に0を出力する。
【0079】
エンコーダ30cは、一致判定回路30b1~30bmが出力する値をエンコードし、エンコード結果を出力する。
たとえば、図4の例では、一致判定回路30b2のレジスタに保持されているidが、idと一致するため、一致判定回路30b2は1を出力している。この場合、エンコーダ30cは、たとえば、“01”を出力する。
【0080】
CAM30が上記のようなエンコーダ30cを有する場合、RAM31はデコーダ31aを有することになる。デコーダ31aは、エンコーダ30cが出力するエンコード結果が示すidに対応した重み係数が保持されている記憶領域を指定する信号を出力する。図4の例では、RAM31は、8ビットの重み係数を保持する記憶領域31b1,31b2,31b3,…,31bmを有する。
【0081】
デコーダ31aによって、たとえば、記憶領域31b2を指定する信号が出力された場合、記憶領域31b2に保持されている重み係数(W1j=00100011)が読み出される。
【0082】
なお、CAM30は、エンコーダ30cを含まなくてもよい。その場合、RAM31は、デコーダ31aを含まなくてもよい。また、その場合、RAM31は、一致判定回路30b1~30bmが出力する値によって、記憶領域31b1~31bmの何れかを指定して重み係数の読み出しを行う。
【0083】
(第2の実施の形態の最適化装置20の動作例(最適化方法の例))
図5は、第2の実施の形態の最適化装置の一例の動作の流れを示すフローチャートである。
【0084】
最適化装置20の動作が開始すると(たとえば電源投入時)、まず初期設定処理が行われる(ステップS10)。初期設定処理では、制御回路23は、たとえば、CAM30やRAM31の保持内容、保持部22aの保持内容、レジスタ32a4の保持内容などを全て、一旦、0に初期化する。さらに、制御回路23は、制御装置25から、各ニューロンの結合先ニューロンのidと、値が0ではない重み係数とを受信し、対応するニューロン回路のCAM30やRAM31に書き込む。また、制御回路23は、制御装置25からローカルフィールドの初期値(たとえば、バイアス係数)を受信し、対応するニューロン回路のレジスタ32a4に書き込む。また、制御回路23は、アニーリング条件についても制御装置25から受信する。
【0085】
その後、制御回路23は、反復回数を示す変数(t)を0に設定する(ステップS11)。
ニューロン回路21a1~21anのそれぞれは、初回は、初期設定処理によって得られた各ニューロンのビット値やローカルフィールドの初期値などに基づいてエネルギー変化や熱ノイズを計算する。そして、ニューロン回路21a1~21anのそれぞれは、エネルギー変化と熱ノイズに基づいて各ニューロンの更新可否(更新を許容するか否か)を判定する(ステップS12)。ニューロン回路21a1~21anのそれぞれは、2回目以降は、更新された各ニューロンのビット値や、更新されたエネルギー変化に基づいて同様の処理を行う。
【0086】
更新制御回路22は、ニューロン回路21a1~21anが出力する判定結果(f~f)に基づいて、更新対象ニューロンを1つ決定し、そのビット値を更新する(ステップS13)。更新が許容されたニューロンが複数ある場合、更新制御回路22は、たとえば、乱数に基づいて、1つを更新対象ニューロンとして決定する。そして、更新制御回路22は、決定した更新対象ニューロンを示すidと更新後のビット値(x)を、ニューロン回路21a1~21anのそれぞれに供給する(ステップS14)。なお、更新制御回路22は、更新が許容されたニューロンが1つもない場合、ビット値の更新は行わず、前述のオフセット値を増加させるために、f=0を出力する。
【0087】
ニューロン回路21a1~21anのそれぞれが有するCAM30が、idと一致するidを保持している場合、そのidに対応した重み係数がRAM31から読み出される(ステップS15)。ニューロン回路21a1~21anのそれぞれが有する演算部32は、RAM31から重み係数が読み出された場合、その重み係数と、更新対象ニューロンのビット値(x)に基づいて、エネルギー変化を更新する(ステップS16)。
【0088】
その後、制御回路23は、反復回数を示すtを+1し(ステップS17)、tが所定回数(k)より大きいか否かを判定する(ステップS18)。制御回路23は、tがk以下である場合、ニューロン回路21a1~21anにステップS12からの処理を繰り返させる。
【0089】
なお、図5では図示が省略されているが、シミュレーテッド・アニーリングが行われる場合、制御回路23は、tが所定回数増加するたびに、アニーリング条件にしたがって、温度パラメータの値を小さくしていく。
【0090】
制御回路23は、tがkより大きい場合、保持部22aに保持されている各ニューロンのビット値を取得し、最適化問題に対する解として出力(制御装置25に送信)し(ステップS19)、最適化装置20の動作を終了させる。
【0091】
なお、制御回路23は、保持部22aが、エネルギーの最小値や最小値が得られたときの各ニューロンのビット値を保持している場合には、更新対象ニューロンを決定する処理が所定回数、繰り返されたのちに、保持されている情報を取得する。そして、制御回路23は、取得した情報を制御装置25に送信してもよい。
【0092】
以上のような、第2の実施の形態の最適化装置20によれば、第1の実施の形態の最適化装置10と同様の効果が得られる。すなわち、図4に示したような重み係数を記憶するRAM31の容量を削減することができる。たとえば、各ニューロンの結合数の最大値が32の場合、32個分の重み係数を保持する容量のRAM31を用いればよい。これにより、たとえば、1チップの最適化装置20により、より大規模な最適化問題の計算が可能になる。
【0093】
なお、CAM30は、一般的に遅延時間が少ないため、CAM30を追加したことによる計算時間の低下は少ない。
(第3の実施の形態)
図6は、第3の実施の形態の最適化装置の一例を示す図である。図6において、図3に示した要素と同じ要素については同一符号が付されている。なお、図6では、図2に示した制御回路23については図示が省略されている。
【0094】
第3の実施の形態の最適化装置40において、ニューロン回路41a1のCAM42は、idに一致する結合先情報(id)を保持しているか否かを示す一致判定情報(MHIT)を出力する。以下では、CAM42は、idに一致するidを保持している場合、MHIT=0を出力し、idに一致するidを保持していない場合、MHIT=1を出力するものとする。
【0095】
ニューロン回路41a2~41anについてもニューロン回路41a1と同様の回路構成となっている。ニューロン回路41a2~41anは、id=2~nのニューロンについての更新を許容するか否かの判定結果(f~f)を出力するとともに、idに一致するidを保持しているか否かを示す一致判定情報(MHIT~MHIT)を出力する。
【0096】
更新制御回路43は、ニューロン回路41a1~41anのうち、値が1の一致判定情報を出力したニューロン回路が出力する判定結果が、ニューロンの更新を許容するものである場合、そのニューロンを更新対象ニューロンの1つとして決定する。
【0097】
(第3の実施の形態の最適化装置40におけるCAM42の一例)
図7は、第3の実施の形態の最適化装置におけるCAMの一例を示す図である。図7において、図4に示した要素と同じ要素については同一符号が付されている。
【0098】
CAM42は、NOR(否定論理和)回路42aを有する。NOR回路42aは、一致判定回路30b1~30bmのそれぞれの出力値の否定論理和であるMHITを出力する。
【0099】
図7に示すように、一致判定回路30b1~30bmの全てに、idに一致するidが保持されていない場合、一致判定回路30b1~30bmの出力値は全て0となり、NOR回路42aは、MHIT=1を出力する。一致判定回路30b1~30bmの何れか、idに一致するidが保持されている場合、一致判定回路30b1~30bmの何れかの出力値は1となり、NOR回路42aは、MHIT=0を出力する。
【0100】
(第3の実施の形態の最適化装置40における更新制御回路43の一例)
図8は、第3の実施の形態の最適化装置における更新制御回路の一例を示す図である。
更新制御回路43は、メモリ43a、id抽出回路43b、加算回路43c、ニューロン選択回路43d、結合ニューロン検出回路43e、id有無検出回路43f、ビット値更新回路43gを有する。
【0101】
メモリ43aは、各ニューロンを示すidを記憶している。メモリ43aとして、たとえば、レジスタ、RAM、フラッシュメモリなどの半導体記憶装置などを用いることができる。なお、ニューロン回路41a1~41anのそれぞれが自身のidを保持しており、f~f及びMHIT~MHITとともに、idを更新制御回路43に供給する場合、メモリ43aはなくてもよい。
【0102】
id抽出回路43bは、ニューロン回路41a1~41anのそれぞれが出力する判定結果(f~f)のうち、値が1である判定結果を出力するニューロン回路に割当てられたidを、メモリ43aから抽出して出力する。なお、id抽出回路43bは、f~fが全て0の場合、f=0を出力し、f~fのうち少なくとも1つの値が1の場合、f=1を出力する。
【0103】
加算回路43cは、id抽出回路43bが抽出したidが複数ある場合、複数のidのうち、ニューロン選択回路43dが出力するidと、結合ニューロン検出回路43eが出力するidを削除する。
【0104】
ニューロン選択回路43dは、加算回路43cが出力するidから、更新対象ニューロンを示すidを選択する。たとえば、ニューロン選択回路43dは、加算回路43cが出力するidが複数ある場合、そのうち1つをランダムに選択するか、値が最小(または最大)のidを、idとして選択する。
【0105】
結合ニューロン検出回路43eは、ニューロン回路41a1~41anのそれぞれが出力するMHIT~MHITに基づいて、idで表される更新対象ニューロンと結合するニューロンを示すidをメモリ43aから抽出して、idとして出力する。MHIT~MHITのうち、値が0の一致判定情報を出力するニューロン回路に割当てられたidがidとして出力される。すなわち、更新対象ニューロンと結合するニューロンのidがidとして出力される。
【0106】
id有無検出回路43fは、加算回路43cが出力するidの有無を検出する。id有無検出回路43fが出力する検出結果は、ビット値更新回路43gに供給されるとともに、制御回路23にも供給される。
【0107】
ビット値更新回路43gは、各ニューロンのビット値を保持する図示しない保持部を有しており、idで示される更新対象ニューロンのビット値を更新(0から1または1から0に反転)し、更新後のビット値(x)を出力する。また、ビット値更新回路43gは、id有無検出回路43fが、idがないことを検出した場合、ビット値の更新を行わない。
【0108】
このような更新制御回路43では、MHIT~MHITに基づいて検出される更新対象ニューロンと結合するニューロン以外については、更新が許容される。たとえば、f,f=1の場合、id抽出回路43bは、id=1,2を出力する。そして、ニューロン選択回路43dは、たとえば、id=1をidとして出力する。これにより、id=1のニューロンのビット値が更新される。
【0109】
id=1のニューロンと、id=2のニューロンが結合していない場合、MHIT=1となる。このため、idとして、id=2は出力されない。このとき、加算回路43cは、id=1,2のうち、ニューロン選択回路43dが出力するid=1を削除するため、ニューロン選択回路43dは、id=2をidとして出力する。これにより、id=2のニューロンのビット値が更新される。
【0110】
(第3の実施の形態の最適化装置40の動作例(最適化方法の例))
図9は、第3の実施の形態の最適化装置の一例の動作の流れを示すフローチャートである。
【0111】
ステップS20,S21,S22の処理は、図5に示したステップS10~S12の処理と同じである。ステップS23の処理では、図8に示した更新制御回路43のニューロン選択回路43dが更新対象ニューロンを1つ決定し、ビット値更新回路43gが更新対象ニューロンのビット値(x)を更新する。ステップS24の処理では、ニューロン選択回路43dが出力するidと、ビット値更新回路43gが出力するxがニューロン回路41a1~41anのそれぞれに供給される。その後のステップS25,S26の処理は、図5に示したステップS15,S16の処理と同じである。
【0112】
ステップS27の処理では、図8に示した更新制御回路43の加算回路43cは、id抽出回路43bが出力するidから、idとidを削除する。ステップS28の処理では、id有無検出回路43fは、加算回路43cが出力するidがあるか否か(残っているか否か)を検出する。idが残っている場合、ステップS23からの処理が繰り返される。idが残っていない場合、ステップS29の処理が行われる。ステップS29,S30,S31の処理は、図5に示したステップS17~S19の処理と同じである。
【0113】
なお、図9でも図示が省略されているが、シミュレーテッド・アニーリングが行われる場合、制御回路23は、tが所定回数増加するたびに、アニーリング条件にしたがって、温度パラメータの値を小さくしていく。
【0114】
以上のような、第3の実施の形態の最適化装置40によれば、第2の実施の形態の最適化装置20と同様の効果が得られる。また、最適化装置40によれば、複数のニューロンのビット値の更新が許容された場合、結合がないニューロン同士についてはビット値を同時に更新することができる。なお、結合がないニューロン同士についてはビット値を同時に更新しても、最適解への収束性の悪化を招かない。
【0115】
また、上記のようなMHIT~MHITを用いることで、値が0の重み係数を保持しなくても更新対象ニューロンと結合しないニューロンを検出することができる。
以上、実施の形態に基づき、本発明の最適化装置及び最適化方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0116】
10 最適化装置
11a1~11an ニューロン回路
11b1~11bn,11c1~11cn 記憶部
11d1~11dn 演算部
12 更新制御回路
図1
図2
図3
図4
図5
図6
図7
図8
図9