(57)【特許請求の範囲】
【請求項１】
それぞれが、自身以外の出力に基づく第１の値を加算して、加算結果をアナログ信号に変換し、前記アナログ信号と第２の値とを比較し、比較結果を出力する複数の回路部と、
前記複数の回路部のそれぞれから出力される前記比較結果に対して、重み値を乗じて前記第１の値を生成する複数の演算回路と、
前記複数の回路部のそれぞれが生成する前記アナログ信号の振幅を増幅させていくことで、等価的にアニーリングを行う制御回路と、
を有することを特徴とするボルツマンマシン回路。
【請求項２】
前記複数の回路部のそれぞれは、
デジタル値である前記第１の値を加算するデジタル加算回路と、
前記デジタル加算回路から出力される前記加算結果を前記アナログ信号に変換するデジタルアナログ変換回路と、
前記デジタルアナログ変換回路から出力される前記アナログ信号と前記第２の値とを比較する比較回路と、
を有することを特徴とする請求項１に記載のボルツマンマシン回路。
【請求項３】
前記制御回路は、前記デジタルアナログ変換回路のゲインを増加することで、前記アナログ信号の前記振幅を増幅させることを特徴とする請求項２に記載のボルツマンマシン回路。
【請求項４】
それぞれが、自身以外の出力に基づく第１の値を加算して、加算結果に基づき第２の値を生成し、前記第２の値と第３の値とを比較し、比較結果を出力する複数の回路部と、
前記複数の回路部のそれぞれから出力される前記比較結果に対して、重み値を乗じて前記第１の値を生成する複数の演算回路と、
前記複数の回路部のそれぞれにおける前記加算結果の変化に対する前記第２の値の変化の度合いを増加させていくことで、等価的にアニーリングを行う制御回路と、を有し、
前記複数の回路部のそれぞれは、
デジタル値である前記第１の値を加算するデジタル加算回路と、
前記デジタル加算回路から出力される前記加算結果に基づき前記第２の値を生成し、前記第２の値と前記第３の値とを比較する比較回路と、
を有することを特徴とするボルツマンマシン回路。
【請求項５】
前記制御回路は、前記比較回路のゲインを増加することで、前記加算結果の変化に対する前記第２の値の変化の度合いを増加させることを特徴とする請求項４に記載のボルツマンマシン回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ボルツマンマシン回路に関する。
【背景技術】
【０００２】
ニューラルネットワークの１つであるボルツマンマシンは、ノイマン型コンピュータが不得意とする多変数の最適化問題やパターン認識などを高速で実行することができると期待されている。
【０００３】
しかし、ボルツマンマシンをシミュレーションで実現すると、ボルツマンマシンに含まれるユニット数またはユニット間の接続数の増加により計算時間が長くなる。そのため、ボルツマンマシンの規模がある程度まで拡大されるとシミュレーションが非実用的になる。
【０００４】
従来、ボルツマンマシンを回路で実現することによって、計算時間を短縮することが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平２−２７４９３号公報
【特許文献２】特開２０１４−９６７６９号公報
【特許文献３】特開２０１３−１４３６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ボルツマンマシンでは、解が局所解に捕捉されること防ぐために、各ユニットが１を出力する確率を温度パラメータによって変化させるシミュレーテッドアニーリングという手法が用いられる。従来の回路で実現したボルツマンマシンは、アナログ信号を用いる部分が多いという点のほか、上記の確率を変えるためにランダムノイズ発生器で発生するノイズの振幅を増幅器で変えて各ユニットの入力値を生成しており、回路規模が大きくなるという課題がある。
【課題を解決するための手段】
【０００７】
発明の一観点によれば、それぞれが、自身以外の出力に基づく第１の値を加算して、加算結果をアナログ信号に変換し、前記アナログ信号と第２の値とを比較し、比較結果を出力する複数の回路部と、前記複数の回路部のそれぞれから出力される前記比較結果に対して、重み値を乗じて前記第１の値を生成する複数の演算回路と、前記複数の回路部のそれぞれが生成する前記アナログ信号の振幅を増幅させていくことで、等価的にアニーリングを行う制御回路と、を有するボルツマンマシン回路が提供される。
【０００８】
また、発明の一観点によれば、それぞれが、自身以外の出力に基づく第１の値を加算して、加算結果に基づき第２の値を生成し、前記第２の値と第３の値とを比較し、比較結果を出力する複数の回路部と、前記複数の回路部のそれぞれから出力される前記比較結果に対して、重み値を乗じて前記第１の値を生成する複数の演算回路と、前記複数の回路部のそれぞれにおける前記加算結果の変化に対する前記第２の値の変化の度合いを増加させていくことで、等価的にアニーリングを行う制御回路と、を有するボルツマンマシン回路が提供される。
【発明の効果】
【０００９】
開示のボルツマンマシン回路によれば、回路規模を縮小できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態のボルツマンマシン回路の一例を示す図である。
【図２】アナログ信号の振幅を増幅することによるシミュレーテッドアニーリングを説明する図である。
【図３】ＤＡＣの一例を示す図である。
【図４】ＤＡＣの他の例を示す図である。
【図５】重み値を学習する回路を含むボルツマンマシン回路の一例を示す図である。
【図６】第２の実施の形態のボルツマンマシン回路の一例を示す図である。
【図７】閾値調整機能付きの比較回路の一例を示す図である。
【図８】加算結果に対する判定閾値の変化の差異の一例を示す図である。
【図９】回路部５１ａ１の状態ｓ1が１になる確率Ｐを示している。
【図１０】シミュレーテッドアニーリングにより最適解を求める際の、第２の実施の形態のボルツマンマシン回路の動作例を示す図である。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
ボルツマンマシンは、互いに接続されたユニットによるネットワークであり、そのネットワークのもつエネルギーは、たとえば、以下の式（１）で定義される。
【００１２】
【数１】
0006471629.tif 000002
【００１３】
式（１）において、ｎはユニット数、ｗijは、ｉ番目のユニットとｊ番目のユニット間の結合係数（以下重み値と呼ぶ）を示し、ｓi，ｓjは、ｉ番目のユニットとｊ番目のユニットのそれぞれの状態（０か１）を示している。また、式（１）において、ｂiは、ｉ番目のユニットの閾値を示している。式（１）において、１番目の項は、ｎ個のユニットのそれぞれの状態と閾値との積の積算を示す。２番目の項は、ｎ個のユニットによる集合Ｅｄｇｅｓに含まれるｉ番目のユニットとｊ番目のユニットの状態と、これらユニット間の重み値との積の積算を示している。１番目の項と２番目の項の一方はなくてもよい。
【００１４】
また、ボルツマンマシンでは、ある閾値と重み値が与えられているとき、式（１）で示されるエネルギーＥが最も小さくなるような各ユニットの状態を見つけるために、シミュレーテッドアニーリングが用いられる。
【００１５】
本実施の形態のボルツマンマシン回路は、上記のようなボルツマンマシンを回路化したものである。
図１は、第１の実施の形態のボルツマンマシン回路の一例を示す図である。
【００１６】
ボルツマンマシン回路１は、回路部２ａ１〜２ａｎと、デジタル演算回路３ａ１〜３ａｎと、制御回路４とを有している。
回路部２ａ１〜２ａｎは、前述したボルツマンマシンのネットワークに含まれるｎ個のユニットに対応している。回路部２ａ１〜２ａｎのそれぞれは、回路部２ａ１〜２ａｎのうち、自身以外の出力に基づく値を加算し、その加算結果をアナログ信号に変換し、そのアナログ信号と閾値との比較結果を出力する。
【００１７】
たとえば、回路部２ａ１，２ａｎは、デジタル加算回路２ｂ１，２ｂｎ、デジタルアナログ変換回路（以下ＤＡＣ（Digital-Analog Converter）という）２ｃ１，２ｃｎ、比較回路２ｄ１，２ｄｎを有している。
【００１８】
デジタル加算回路２ｂ１は、回路部２ａ１〜２ａｎのうち、回路部２ａ１以外の回路部の出力に基づくデジタル値を加算する。デジタル加算回路２ｂｎは、回路部２ａ１〜２ａｎのうち、回路部２ａｎ以外の回路部の出力に基づくデジタル値を加算する。
【００１９】
ＤＡＣ２ｃ１は、デジタル加算回路２ｂ１から出力される加算結果ｚ1dをアナログ信号ｚ1に変換する。ＤＡＣ２ｃｎは、デジタル加算回路２ｂｎから出力される加算結果ｚndをアナログ信号ｚnに変換する。図１の例では、ＤＡＣ２ｃ１，２ｃｎは、基準電圧Ｖｒｅｆ，−Ｖｒｅｆに基づき、加算結果ｚ1d，ｚndをアナログ信号ｚ1，ｚnに変換する、乗算型のＤＡＣである。
【００２０】
比較回路２ｄ１は、アナログ信号ｚ1と、閾値ｂ1との比較に基づき、１か０の比較結果を回路部２ａ１の状態ｓ1として出力する。比較回路２ｄｎは、アナログ信号ｚnと、閾値ｂnとの比較に基づき、１か０の比較結果を回路部２ａｎの状態ｓnとして出力する。なお、閾値ｂ1，ｂnは、たとえば、レジスタなどに予め保持されているものであってもよいし、回路部２ａ１〜２ａｎの何れかの出力であってもよい。
【００２１】
回路部２ａ１〜２ａｎのうち、回路部２ａ１，２ａｎ以外の回路部についても同様の要素を有している。
デジタル演算回路３ａ１〜３ａｎは、たとえば、乗算回路であり、回路部２ａ１〜２ａｎのそれぞれの出力に対して、後述する学習によって得られる重み値を乗じたデジタル値を生成する。たとえば、デジタル演算回路３ａ１は、回路部２ａ１の出力（状態ｓ1）に、重み値ｗ1nを乗じることでデジタル値を生成し、回路部２ａｎに供給する。また、デジタル演算回路３ａｎは、回路部２ａｎの出力（状態ｓn）に、重み値ｗn1を乗じることでデジタル値を生成し、回路部２ａ１に供給する。重み値ｗ1n，ｗn1は、０であってもよい。
【００２２】
なお、図１では、回路部２ａ１〜２ａｎのそれぞれに対して、１つのデジタル演算回路３ａ１〜３ａｎを示しているが、各回路部２ａ１〜２ａｎのそれぞれにおける出力は、ｎ−１個の回路部に供給されるため、ｎ−１個のデジタル演算回路が設けられる。
【００２３】
制御回路４は、回路部２ａ１〜２ａｎのそれぞれが生成するアナログ信号ｚ1〜ｚnの振幅を増幅させていくことで、等価的にアニーリングを行う。制御回路４は、たとえば、プロセッサ（ＣＰＵ（Central Processing Unit）など）である。
【００２４】
たとえば、制御回路４は、ＤＡＣ２ｃ１〜２ｃｎのゲインを徐々に増加させることで、アナログ信号ｚ1〜ｚnの振幅を増幅させていく。
アナログ信号ｚ1〜ｚnの振幅を増幅することが、アニーリング（シミュレーテッドアニーリング）を行うことに相当する理由を以下に説明する。
【００２５】
図２は、アナログ信号の振幅を増幅することによるシミュレーテッドアニーリングを説明する図である。
図２では、回路部２ａ１の状態ｓ1が１になる確率Ｐを示している。
【００２６】
縦軸は、確率Ｐを示しており、横軸は、アナログ信号ｚ1の振幅値ｚ1Aを示している。波形５のように、振幅値ｚ1Aが閾値ｂ1より大きいほど、状態ｓ1が１になる確率Ｐが大きくなり、振幅値ｚ1Aが閾値ｂ1より小さいほど、確率Ｐは小さくなる。振幅値ｚ1Aが閾値ｂ1に近いほど、状態ｓ1が１になる場合と０になる確率が等しくなる。このような特性は、比較回路２ｄ１のデバイスノイズに基づくものである。
【００２７】
ところで、シミュレーテッドアニーリングは、温度パラメータを徐々に小さくすることによって、各ユニットの状態が１または０の一方となる確率（状態が確定する確率）を、徐々に大きくするものである。
【００２８】
シミュレーテッドアニーリングを回路で実現するために、ノイズの大きさを変化させて、確率Ｐの波形を波形６から波形５のように変化させることも考えられるが、その場合、ノイズを加える回路などの追加が発生してしまう。これに対しては、本実施の形態のボルツマンマシン回路１は、比較回路２ｄ１へ入力されるアナログ信号ｚ1の振幅値ｚ1Aを増加（振幅を増幅）させて、状態ｓ1が１または０の一方になる確率を大きくする。
【００２９】
制御回路４は、たとえば、ＤＡＣ２ｃ１のゲインを増加させて、アナログ信号ｚ1の振幅値ｚ1Aをｚ1minaから、マイナス方向に増加させてｚ1minbとし、ｚ1maxaから、プラス方向に増加させて、ｚ1maxbとする。これにより、アナログ信号ｚ1に基づき状態ｓ1が１または０の一方になる確率が等価的に大きくなる。つまり、アナログ信号ｚ1の振幅を増幅させることが、温度パラメータを小さくすることに相当し、等価的にシミュレーテッドアニーリングを行うことが可能となる。
【００３０】
以下、図１を用いて、シミュレーテッドアニーリングにより最適解を求める際の、ボルツマンマシン回路１の動作例を説明する。
図１には、ＤＡＣ２ｃ１〜２ｃｎの出力振幅の値（アナログ信号ｚ1〜ｚnの振幅値）がｍｉｎ、ｍｉｄ（＞ｍｉｎ）、ｍａｘ（＞ｍｉｄ）のときのエネルギー波形１０，１１，１２の一例の様子が示されている。縦軸はエネルギーＥであり、横軸はｎ個の回路部２ａ１〜２ａｎの状態ｓ1〜ｓnの組み合わせｓKを示している。また、図１には、図２で説明したような比較回路２ｄ１〜２ｄｎのデバイスノイズに基づく判定結果のばらつきで生じる、エネルギーＥのばらつきｗ１の例が示されている。
【００３１】
ＤＡＣ２ｃ１〜２ｃｎの出力振幅がｍｉｎのとき（たとえば、制御回路４がＤＡＣ２ｃ１〜２ｃｎで、加算結果ｚ1d〜ｚndに乗じる基準電圧Ｖｒｅｆを０とするとき）、エネルギー波形１０は、ばらつきｗ１の範囲に収まっている。この場合、エネルギーＥを最小にする解（組み合わせｓK）への収束はなされない。
【００３２】
ＤＡＣ２ｃ１〜２ｃｎの出力振幅がｍｉｄのとき、エネルギー波形１１において、組み合わせｓKがｓK1のとき、エネルギーＥはばらつきｗ１の範囲に収まっているため、この解（局所解）への収束はなされない。一方、組み合わせｓKがｓK2のとき、エネルギーＥはばらつきｗ１の範囲外となるため、この解へ収束されていく。
【００３３】
ＤＡＣ２ｃ１〜２ｃｎの出力振幅がｍａｘのとき、エネルギー波形１２において、組み合わせｓK2への収束が終わり、最適解として、組み合わせｓK2が得られる。
このように、ＤＡＣ２ｃ１〜２ｃｎの出力振幅を増幅させていくことは、高い温度から低い温度に変化させていくアニーリングに相当する。
【００３４】
以上のように、本実施の形態のボルツマンマシン回路１は、各回路部２ａ１〜２ａｎの出力段の比較回路２ｄ１〜２ｄｎに入力されるアナログ信号ｚ1〜ｚnの振幅を増幅し、比較回路２ｄ１〜２ｄｎのノイズを利用して等価的にアニーリングを行う。これによって、ノイズ発生器などが不要となり、回路規模を小さくできる。
【００３５】
さらに、各回路部２ａ１〜２ａｎがもつアナログ回路は、ＤＡＣ２ｃ１〜２ｃｎと比較回路２ｄ１〜２ｄｎだけであるので、微細化プロセスによる高密度実装が可能である。また、回路部２ａ１〜２ａｎ間で送受信される信号は、デジタル信号であるため、配線の自由度が上がる。そのため、回路規模をより縮小可能である。
【００３６】
以下、アナログ信号ｚ1〜ｚnの振幅を変化可能なＤＡＣ２ｃ１〜２ｃｎの例を説明する。
（ＤＡＣの例）
図３は、ＤＡＣの一例を示す図である。
【００３７】
ＤＡＣ２ｃ１は、基準電圧Ｖｒｅｆ，−Ｖｒｅｆが印加される端子２０，２１間に直列に接続された抵抗素子Ｒ0，Ｒ1，…，Ｒm-1，Ｒmと、各抵抗素子間のノードに一端を接続し、他端を共通に接続したスイッチＳＷ1，ＳＷ2，…，ＳＷm-1，ＳＷmを含む。さらに、ＤＡＣ２ｃ１は、デコーダ２２を有している。スイッチＳＷ1〜ＳＷmの他端からアナログ信号ｚ1が出力される。
【００３８】
抵抗素子Ｒ0〜Ｒmのうち、抵抗素子Ｒ1〜Ｒm-1は同じ抵抗値を有し、抵抗素子Ｒ0，Ｒmの抵抗値は、抵抗素子Ｒ1〜Ｒm-1のそれぞれの抵抗値の半分の値である。
スイッチＳＷ1〜ＳＷmは、デコーダ２２からの信号に基づき、オンまたはオフする。スイッチＳＷ1〜ＳＷmは、ＭＯＳＦＥＴ（Metal-Oxide-Semiconductor Field-Effect Transistor）で実現可能である。
【００３９】
デコーダ２２は、デジタル加算回路２ｂ１での加算結果ｚ1d（デジタル値）を受けると、加算結果ｚ1dの大きさに対応したアナログ信号ｚ1が出力されるように、スイッチＳＷ1〜ＳＷmの何れか１つをオンする。このとき、アナログ信号ｚ1の振幅値ｚ1Aは、以下の式（２）のように表される。
【００４０】
ｚ1A＝（ｚ1dA＋０．５）×｛Ｖｒｅｆ−（−Ｖｒｅｆ）｝／２m＋（−Ｖｒｅｆ）＝２×（ｚ1dA＋０．５）／２m）×Ｖｒｅｆ−Ｖｒｅｆ                    （２）
なお、式（２）において、ｚ1dAは、加算結果ｚ1dの値を示している。
【００４１】
デコーダ２２は、さらに、シミュレーテッドアニーリングが行われる際、制御回路４からの制御信号を受け、ゲインが増加していくように（振幅値ｚ1Aが増加していくように）、スイッチＳＷ1〜ＳＷmを制御する。このように、図３のＤＡＣ２ｃ１では、デコーダ２２は制御回路４からの制御信号に基づき、基準電圧Ｖｒｅｆを抵抗分割するスイッチＳＷ1〜ＳＷmを制御することで、振幅値ｚ1Aを増加させることができる。
【００４２】
（ＤＡＣの他の例）
図４は、ＤＡＣの他の例を示す図である。
図４のＤＡＣ２ｃ１ａにおいて、図３に示したＤＡＣ２ｃ１と同様の要素については同一符号を付してある。
【００４３】
ＤＡＣ２ｃ１ａは、基準電圧Ｖｒｅｆ，−Ｖｒｅｆが印加される端子３０，３１間に直列に接続された抵抗素子Ｒａ0，Ｒａ1，…，Ｒａm-1，Ｒａm、バッファ回路３２，３３、制御部３４、デコーダ３５を有する。
【００４４】
制御部３４は、制御回路４からの制御信号に基づき、図示しないスイッチのオンオフを制御して、バッファ回路３２，３３の入力端子を、抵抗素子Ｒａ0〜Ｒａmの何れか１つの一方の端子に接続させる。
【００４５】
図４のＤＡＣ２ｃ１ａの例では、抵抗素子Ｒ0〜Ｒmは、バッファ回路３２，３３の出力端子の間に直列に接続されている。また、デコーダ３５は、デジタル加算回路２ｂ１での加算結果ｚ1dを受けると、加算結果ｚ1dの大きさに対応したアナログ信号ｚ1が出力されるように、スイッチＳＷ1〜ＳＷmの何れか１つをオンする。
【００４６】
バッファ回路３２の出力端子の電圧をＶｒｅｆａ＝ｋG×Ｖｒｅｆ（バッファ回路３３の出力端子の電圧を−Ｖｒｅｆａ＝ｋG×−Ｖｒｅｆ）とすると、アナログ信号ｚ1の振幅値ｚ1Bは、以下の式（３）のように表される。
【００４７】
ｚ1B＝２×（ｚ1dA＋０．５）／２m）×Ｖｒｅｆａ−Ｖｒｅｆａ＝ｋG｛２×（ｚ1dA＋０．５）／２m）×Ｖｒｅｆ−Ｖｒｅｆ｝                      （３）
制御部３４は、シミュレーテッドアニーリングが行われる際、制御回路４からの制御信号を受け、Ｖｒｅｆａが大きくなるように（ｋGが大きくなるように）、バッファ回路３２，３３の接続先を決定することで、振幅値ｚ1Bを増加させることができる。
【００４８】
次に、図１に示した重み値ｗ1n〜ｗn1の学習方法の一例を説明する。
（学習方法）
ボルツマンマシンにおける重み値の学習の際には、ネットワークに含まれる任意のｉ番目のユニットとｊ番目のユニットが同時に発火する（状態が１となる）確率Ｐijを用いて重み値が変更される。たとえば、以下のような回路を用いて重み値の学習が実現される。
【００４９】
図５は、重み値を学習する回路を含むボルツマンマシン回路の一例を示す図である。
図５に示すボルツマンマシン回路１ａにおいて、図１に示したボルツマンマシン回路１と同様の要素については同一符号が付されている。
【００５０】
なお、図５には、回路部２ａ１，２ａｎの出力に対して適用する重み値ｗ1n，ｗn1を学習する回路の例を示しているが、他の回路部（ユニット）の出力に対して適用する重み値を学習する場合についても同様の回路が用いられる。
【００５１】
ボルツマンマシン回路１ａは、ＡＮＤ回路４０、カウンタ回路４１、エンコーダ４２、記憶部４３、ＡＮＤ回路４４，４５を有している。
ＡＮＤ回路４０は、回路部２ａ１，２ａｎの出力と、ボルツマンマシン回路１ａの外部から供給されるクロック信号ＣＬＫを受け、これらのＡＮＤ論理演算結果を出力する。
【００５２】
カウンタ回路４１は、ＡＮＤ回路４０が１となる回数を計数する。
エンコーダ４２は、カウンタ回路４１での計数結果に基づき重み値ｗ1n，ｗn1を生成する。
【００５３】
記憶部４３は、カウンタ回路４１での計数結果と、エンコーダ４２で生成された重み値ｗ1n，ｗn1を記憶する。
ＡＮＤ回路４４は、図１に示したデジタル演算回路３ａ１に相当し、回路部２ａ１の出力（状態ｓ1）と、重み値ｗ1nとのＡＮＤ論理演算結果を、１か０のデジタル値として回路部２ａｎに供給する。
【００５４】
ＡＮＤ回路４５は、図１に示したデジタル演算回路３ａｎに相当し、回路部２ａｎの出力（状態ｓn）と、重み値ｗn1とのＡＮＤ論理演算結果を、１か０のデジタル値として回路部２ａ１に供給する。
【００５５】
このようなボルツマンマシン回路１ａでは、回路部２ａ１，２ａｎが同時に１になる確率Ｐ1nは、以下の式（４）で表せる。
Ｐ1n＝Ｃ／（ｔ×ｆCK）        （４）
式（４）において、Ｃは、カウンタ回路４１の計数値、ｔは、カウンタ回路４１での計数時間、ｆCKは、クロック信号ＣＬＫの周波数を示している。
【００５６】
重み値ｗ1n〜ｗn1の学習に際して、制御回路４は、ＤＡＣ２ｃ１〜２ｃｎの出力を制御して、回路部２ａ１〜２ａｎの状態ｓ1〜ｓnを学習したい特定のビットパターンに設定する。その後、制御回路４は、シミュレーテッドアニーリングを行い、回路部２ａ１〜２ａｎによるネットワークを熱平衡状態とする（たとえば、図１のＤＡＣ出力振幅＝ｍａｘの状態）。
【００５７】
エンコーダ４２は、このときの回路部２ａ１，２ａｎが同時に１になる確率Ｐ1nを式（４）に基づき求める。
さらに、制御回路４は、学習したいビットパターンを変更して、同様の処理でネットワークを熱平衡状態とする。そして、エンコーダ４２は、確率Ｐ1nを再度求め（再度求めたものを確率Ｐａ1nとする）、確率Ｐ1nと確率Ｐａ1nとの差分に基づき、重み値ｗ1n，ｗn1を調整する。
【００５８】
ボルツマンマシン回路１ａは、上記のような処理を繰り返して、たとえば、確率Ｐ1nと確率Ｐａ1nとの差分が所定の値より小さくなったところで、学習を終える。
以上のように、本実施の形態のボルツマンマシン回路１ａを用いて、重み値の学習が可能である。
【００５９】
（第２の実施の形態）
図６は、第２の実施の形態のボルツマンマシン回路の一例を示す図である。
ボルツマンマシン回路５０は、回路部５１ａ１〜５１ａｎと、デジタル演算回路５２ａ１〜５２ａｎと、制御回路５３とを有している。
【００６０】
回路部５１ａ１〜５１ａｎは、前述したボルツマンマシンのネットワークに含まれるｎ個のユニットに対応している。回路部５１ａ１〜５１ａｎのそれぞれは、回路部５１ａ１〜５１ａｎのうち、自身以外の回路部の出力に基づくデジタル値を加算する。そして、回路部５１ａ１〜５１ａｎのそれぞれは、閾値ｂ1〜ｂnと比較する判定閾値ｚ1t〜ｚntの値を加算結果に基づき生成（決定）し、閾値ｂ1〜ｂnと判定閾値ｚ1t〜ｚntの値との比較結果を出力する。
【００６１】
たとえば、回路部５１ａ１，５１ａｎは、デジタル加算回路５１ｂ１，５１ｂｎ、閾値調整機能付きの比較回路５１ｃ１，５１ｃｎを有している。
デジタル加算回路５１ｂ１は、回路部５１ａ１〜５１ａｎのうち、回路部５１ａ１以外の回路部の出力に基づくデジタル値を加算する。デジタル加算回路５１ｂｎは、回路部５１ａ１〜５１ａｎのうち、回路部５１ａｎ以外の回路部の出力に基づくデジタル値を加算する。
【００６２】
比較回路５１ｃ１は、加算結果ｚ1dに基づき判定閾値ｚ1tを生成し、判定閾値ｚ1tと閾値ｂ1との比較に基づき、１か０の比較結果を回路部５１ａ１の状態ｓ1として出力する。比較回路５１ｃｎは、加算結果ｚndに基づき判定閾値ｚntを生成し、判定閾値ｚntと、閾値ｂnとの比較に基づき、１か０の比較結果を回路部５１ａｎの状態ｓnとして出力する。
【００６３】
回路部５１ａ１〜５１ａｎのうち、回路部５１ａ１，５１ａｎ以外の回路部についても同様の要素を有している。
デジタル演算回路５２ａ１〜５２ａｎは、図１に示したデジタル演算回路３ａ１〜３ａｎと同様の機能を有するため説明を省略する。
【００６４】
制御回路５３は、回路部５１ａ１〜５１ａｎのそれぞれにおける、デジタル加算回路５１ｂ１〜５１ｂｎでの加算結果ｚ1d〜ｚndの変化に対する判定閾値ｚ1t〜ｚntの変化の度合いを増加させていく。これによって、制御回路５３は、等価的にアニーリングを行う。制御回路５３は、たとえば、プロセッサである。
【００６５】
たとえば、制御回路５３は、比較回路５１ｃ１〜５１ｃｎのゲインを徐々に増加させることで、加算結果ｚ1d〜ｚndの変化に対する判定閾値ｚ1t〜ｚntの変化の度合いを増加させる。
【００６６】
加算結果ｚ1d〜ｚndの変化に対する判定閾値ｚ1t〜ｚntの変化の度合いを増加させることが、アニーリング（シミュレーテッドアニーリング）を行うことに相当する理由については後述する。
【００６７】
以下、本実施の形態のボルツマンマシン回路５０の各回路部５１ａ１〜５１ａｎに含まれる比較回路５１ｃ１〜５１ｃｎの例を説明する。なお、以下では、比較回路５１ｃ１〜５１ｃｎのうち、比較回路５１ｃ１に着目して説明を行うが、他の比較回路についても同様である。
【００６８】
（比較回路の例）
図７は、閾値調整機能付きの比較回路の一例を示す図である。
なお、図７の比較回路５１ｃ１の差動の入力信号である閾値ｂ1（＋），ｂ1（−）は、図６に示した閾値ｂ1に対応している。また、比較回路５１ｃ１の差動の出力信号である状態ｓ1（＋），ｓ1（−）は、図６に示した状態ｓ1に対応している。
【００６９】
比較回路５１ｃ１は、ゲイン制御部６１，６２，６３、閾値制御部６４、６５、トランジスタ６６，６７，６８，６９，７０，７１，７２，７３，７４，７５，７６，７７，７８を有している。トランジスタ６６〜６９，７２，７４，７５，７６は、ｐチャネル型ＭＯＳＦＥＴであり、トランジスタ７０，７１，７３，７７，７８は、ｎチャネル型ＭＯＳＦＥＴである。
【００７０】
ゲイン制御部６１は、トランジスタ６１ａ，６１ｂを有している。トランジスタ６１ａ，６１ｂは、ｐチャネル型ＭＯＳＦＥＴである。トランジスタ６１ａのソースは、トランジスタ６１ｂのドレインに接続されており、トランジスタ６１ａのドレインは、トランジスタ６６，６７のドレイン、トランジスタ６９，７１のゲート、トランジスタ７０のドレイン、閾値制御部６４に接続されている。トランジスタ６１ａのゲートは、図６に示した制御回路５３に接続されている。トランジスタ６１ａは、制御回路５３から供給される制御信号ｋGに応じてオンまたはオフする。トランジスタ６１ｂのソースには、電源電圧Ｖｄｄが印加され、トランジスタ６１ｂのゲートは、ゲイン制御部６３、閾値制御部６４、トランジスタ６６のゲート、トランジスタ７５，７７のドレインに接続されている。
【００７１】
図示を省略しているが、ゲイン制御部６１は、上記のような接続のトランジスタ６１ａ，６１ｂの組みと同様のものを他にも１組以上有しており、複数ビットの制御信号ｋGによってオンする組みが選択される。
【００７２】
ゲイン制御部６２は、トランジスタ６２ａ，６２ｂを有している。トランジスタ６２ａ，６２ｂは、ｐチャネル型ＭＯＳＦＥＴである。トランジスタ６２ａのソースは、トランジスタ６２ｂのドレインに接続されており、トランジスタ６２ａのドレインは、トランジスタ６８，６９のドレイン、トランジスタ６７，７０のゲート、トランジスタ７１のドレイン、閾値制御部６５に接続されている。トランジスタ６２ａのゲートは、図６に示した制御回路５３に接続されている。トランジスタ６２ａは、制御回路５３から供給される制御信号ｋGに応じてオンまたはオフする。トランジスタ６２ｂのソースには、電源電圧Ｖｄｄが印加され、トランジスタ６２ｂのゲートは、ゲイン制御部６３、閾値制御部６５、トランジスタ６８のゲート、トランジスタ７６，７８のドレインに接続されている。
【００７３】
ゲイン制御部６１と同様、ゲイン制御部６２も、上記のような接続のトランジスタ６２ａ，６２ｂの組みと同様のものを他にも１組以上有しており、複数ビットの制御信号ｋGによってオンする組みが選択される。
【００７４】
ゲイン制御部６３は、ｐチャネル型トランジスタであるトランジスタ６３ａ，６３ｂを有している。トランジスタ６３ａ，６３ｂのソースは、トランジスタ７４のドレイン、トランジスタ７５，７６のソースに接続されている。トランジスタ６３ａのドレインは、トランジスタ６１ｂ，６６のゲート、閾値制御部６４、トランジスタ７５，７７のドレインに接続されている。トランジスタ６３ｂのドレインは、トランジスタ６２ｂ，６８のゲート、閾値制御部６５、トランジスタ７６，７８のドレインに接続されている。トランジスタ６３ａ，６３ｂのゲートは、図６に示した制御回路５３に接続されている。トランジスタ６３ａ，６３ｂは、制御回路５３から供給される制御信号ｋGに応じてオンまたはオフする。
【００７５】
図示を省略しているが、ゲイン制御部６３も、上記のような接続のトランジスタ６３ａ，６３ｂの組みと同様のものを他にも１組以上有しており、複数ビットの制御信号ｋGによってオンする組みが選択される。
【００７６】
閾値制御部６４は、トランジスタ６４ａ，６４ｂを有している。また、閾値制御部６５は、トランジスタ６５ａ，６５ｂを有している。トランジスタ６４ａ，６４ｂ，６５ａ，６５ｂは、ｐチャネル型ＭＯＳＦＥＴである。
【００７７】
トランジスタ６４ａのソースは、トランジスタ６１ａ，６６，６７，７０のドレイン、トランジスタ６９，７１のゲートに接続されている。トランジスタ６５ａのソースは、トランジスタ６２ａ，６８，６９，７１のドレイン、トランジスタ６７，７０のゲートに接続されている。トランジスタ６４ａのドレインは、トランジスタ６４ｂのソースに接続されている。トランジスタ６５ａのドレインは、トランジスタ６５ｂのソースに接続されている。トランジスタ６４ａのゲートは、デジタル加算回路５１ｂ１に接続されている。トランジスタ６３ａは、デジタル加算回路５１ｂ１から供給される加算結果ｚ1dに応じてオンまたはオフする。トランジスタ６５ａのゲートには、加算結果ｚ1dの値の論理レベルを反転した値ｚ1daが供給される。トランジスタ６４ｂ，６５ｂのドレインは、トランジスタ７０，７１のソース、トランジスタ７２，７３のドレインに接続されている。
【００７８】
トランジスタ６６〜６９のソースには、電源電圧Ｖｄｄが印加されている。トランジスタ６６，６７のドレインは、トランジスタ６１ａ，７０のドレイン、トランジスタ６４ａのソース、トランジスタ６９，７１のゲートに接続されている。トランジスタ６８，６９のドレインは、トランジスタ６２ａ，７１のドレイン、トランジスタ６５ａのソース、トランジスタ６７，７０のゲートに接続されている。
【００７９】
トランジスタ６６のゲートは、トランジスタ６１ｂのゲート、トランジスタ６４ｂのゲート、トランジスタ６３ａ，７５，７７のドレインに接続されている。トランジスタ６７のゲートは、トランジスタ６２ａ，６８，６９，７１のドレイン、トランジスタ６５ａのソースに接続されている。トランジスタ６８のゲートは、トランジスタ６２ｂのゲート、トランジスタ６５ｂのゲート、トランジスタ６３ｂ，７６，７８のドレインに接続されている。トランジスタ６９のゲートは、トランジスタ６１ａ，６６，６７，７０のドレイン、トランジスタ６４ａのソースに接続されている。
【００８０】
トランジスタ７０のドレインは、トランジスタ６１ａ，６６，６７のドレイン、トランジスタ６４ａのソース、トランジスタ６９，７１のゲートに接続されている。トランジスタ７１のドレインは、トランジスタ６２ａ，６８，６９のドレイン、トランジスタ６５ａのソース、トランジスタ６７，７０のゲートに接続されている。トランジスタ７０，７１のソースは、トランジスタ６４ｂ，６５ｂ，７２，７３のドレインに接続されている。トランジスタ７０のゲートは、トランジスタ６２ａ，６８，６９，７１のドレイン、トランジスタ６５ａのソース、トランジスタ６７のゲートに接続されている。トランジスタ７１のゲートは、トランジスタ６１ａ，６６，６７，７０のドレイン、トランジスタ６４ａのソース、トランジスタ６９のゲートに接続されている。
【００８１】
トランジスタ７２のソースには、電源電圧Ｖｄｄが印加される。トランジスタ７２，７３のドレインは、トランジスタ６４ｂ，６５ｂのドレイン、トランジスタ７０，７１のソースに接続されており、トランジスタ７２，７３のゲートには、クロック信号ＣＬＫの論理レベルを反転させた信号ＣＬＫａが供給される。トランジスタ７３のソースは接地されている。
【００８２】
トランジスタ７４のソースには電源電圧Ｖｄｄが印加される。トランジスタ７４のドレインとトランジスタ７５，７６のソースは、トランジスタ６３ａ，６３ｂのソースに接続されている。トランジスタ７４のゲートには、クロック信号ＣＬＫが供給される。トランジスタ７５のゲートには、閾値ｂ1（＋）が供給され、トランジスタ７６のゲートには、閾値ｂ1（−）が供給される。
【００８３】
トランジスタ７５のソースとトランジスタ７７のドレインには、トランジスタ６１ｂ，６４ｂ，６６のゲート、トランジスタ６３ａのドレインが接続されている。トランジスタ７６のソースとトランジスタ７８のドレインには、トランジスタ６２ｂ，６５ｂ，６８のゲート、トランジスタ６３ｂのドレインが接続されている。トランジスタ７７，７８のゲートにはクロック信号ＣＬＫが供給され、トランジスタ７７，７８のソースは接地されている。
【００８４】
上記のような比較回路５１ｃ１において、トランジスタ６１ａ，６２ａのドレイン電圧が、比較回路５１ｃ１の出力である状態ｓ1（＋），ｓ1a（−）となる。
以下、比較回路５１ｃ１の動作例を説明する。まず、通常の比較動作を説明する。ゲイン制御部６１〜６３、閾値制御部６４を用いた動作については後述する。
【００８５】
クロック信号ＣＬＫの論理レベルがＨ（High）レベルのとき、トランジスタ７７，７８がともにオンし、トランジスタ６６，６８のゲート電圧がＬ（Low）レベルとなるため、状態ｓ1（＋），ｓ1a（−）は、電源電圧Ｖｄｄにプルアップされ、“１”となる。この状態は、比較回路５１ｃ１のリセット状態を示す。
【００８６】
クロック信号ＣＬＫの論理レベルがＨレベルからＬレベルに遷移すると、トランジスタ７７，７８がオフし、トランジスタ７４がオンする。これにより、トランジスタ７５，７６のソースドレイン間に電流が流れる。この電流は、閾値ｂ1（＋），ｂ1（−）によって制御される。トランジスタ７５のソースドレイン間電流と、トランジスタ７６のソースドレイン間電流との差に基づく電位差が、トランジスタ６６〜７１などによる正帰還ループで増幅され、状態ｓ1（＋），ｓ1a（−）は、最終的に電源電圧Ｖｄｄまたは接地電位となり、判定が終了する。通常の比較動作では、これによって閾値ｂ1（＋），ｂ1（−）間の電位の大小が判定される。
【００８７】
次に、閾値制御部６４，６５を用いた閾値調整動作の例を説明する。
閾値制御部６４，６５は、デジタル加算回路５１ｂ１から供給される加算結果ｚ1dによって、クロック信号ＣＬＫの論理レベルがＬレベルに切り替わった直後に、状態ｓ1（＋），ｓ1a（−）を決めるトランジスタ６１ａ，６２ａのドレイン側に流れる電流を調整する。これにより、比較結果が反転する閾値ｂ1（＋），ｂ1（−）間の電位差（以下、判定閾値ｚ1tという）を調整することができる。
【００８８】
次に、ゲイン制御部６１〜６３を用いたゲイン調整動作の例を説明する。
ゲイン制御部６３では、制御信号ｋGによって、オンするトランジスタ（たとえば、トランジスタ６３ａ，６３ｂ）の数が多いほどゲインが下がる。
【００８９】
逆に電源電圧Ｖｄｄと接続されているゲイン制御部６１，６２では、制御信号ｋGによって、オンするトランジスタ（たとえば、トランジスタ６１ａ，６２ａ）の数が多いほどゲインが上がる（なお、ゲイン制御部６１，６２間でオンするトランジスタ数は同じ）。
【００９０】
図８は、加算結果に対する判定閾値の変化の差異の一例を示す図である。
横軸は、加算結果ｚ1dを示し、縦軸は、判定閾値ｚ1tを示す。また、直線８０は、ゲインが最小のときのｚ1d−ｚ1t特性を示し、直線８１はゲインが最大のときのｚ1d−ｚ1t特性を示す。
【００９１】
デジタル加算回路５１ｂ１から供給される加算結果ｚ1dは、判定閾値ｚ1tを変化させるための制御信号として機能する。直線８１では、直線８０よりも、加算結果ｚ1dの変化に対する判定閾値ｚ1tの変化の度合いが大きい。
【００９２】
図６に示した制御回路５３は、制御信号ｋGにより、ゲインを最小から最大に変えることで、加算結果の変化に対する度合を、直線８０で示される度合いから、直線８１の度合いまで増加させることができる。
【００９３】
図９は、回路部５１ａ１の状態ｓ1が１になる確率Ｐを示している。
縦軸は、確率Ｐを示しており、横軸は、判定閾値ｚ1tを示している。波形８２のように、判定閾値ｚ1tが閾値ｂ1より大きいほど、状態ｓ1が１になる確率Ｐが大きくなり、判定閾値ｚ1tが閾値ｂ1より小さいほど、確率Ｐは小さくなる。判定閾値ｚ1tが閾値ｂ1に近いほど、状態ｓ1が１になる場合と０になる確率が等しくなる。このような特性は、比較回路５１ｃ１のデバイスノイズに基づくものである。
【００９４】
前述したように、シミュレーテッドアニーリングは、温度パラメータを徐々に小さくすることによって、各ユニットが１または０の一方を出力する確率を、徐々に大きくするものである。
【００９５】
第２の実施の形態のボルツマンマシン回路５０は、図９に示すように、ゲインを増加することによって、比較回路５１ｃ１の判定閾値ｚ1tの変化の幅を増加させて、状態ｓ1が１または０の一方になる確率を等価的に大きくする。
【００９６】
制御回路５３は、比較回路５１ｃ１のゲインを増加させて、判定閾値ｚ1tをｚ1tminaから、マイナス方向に増加させてｚ1tminbとし、ｚ1tmaxaから、プラス方向に増加させて、ｚ1tmaxbとする。これにより、判定閾値ｚ1tに基づき状態ｓ1が１または０の一方になる確率が等価的に大きくなる。つまり、判定閾値ｚ1tの変化の幅を増加させることが、温度パラメータを小さくすることに相当し、等価的にシミュレーテッドアニーリングを行うことが可能となる。
【００９７】
図１０は、シミュレーテッドアニーリングにより最適解を求める際の、第２の実施の形態のボルツマンマシン回路の動作例を示す図である。
図１０には、制御信号ｋGがＭｉｎ（ゲイン最小）、Ｍｉｄ（＞Ｍｉｎ）、Ｍａｘ（＞Ｍｉｄ）（ゲイン最大）のときのエネルギー波形９０，９１，９２の一例の様子が示されている。縦軸はエネルギーＥであり、横軸はｎ個の回路部５１ａ１〜５１ａｎの状態ｓ1〜ｓnの組み合わせｓKを示している。また、図１０には、前述したような比較回路５１ｃ１〜５１ｃｎのデバイスノイズに基づく判定結果のばらつきで生じる、エネルギーＥのばらつきｗａの例が示されている。
【００９８】
制御信号ｋGがＭｉｎのとき、エネルギー波形９０は、ばらつきｗａの範囲に収まっている。この場合、エネルギーＥを最小にする解（組み合わせｓK）への収束はなされない。
【００９９】
制御信号ｋGがＭｉｄのとき、エネルギー波形９１において、組み合わせｓKが組み合わせｓKaのとき、エネルギーＥは、ばらつきｗａの範囲に収まっているため、この解（局所解）への収束はなされない。一方、組み合わせｓKが組み合わせｓKbのとき、エネルギーＥは、ばらつきｗ２の範囲外となるため、この解へ収束されていく。
【０１００】
制御信号ｋGがＭａｘのとき、エネルギー波形９２において、組み合わせｓKbへの収束が終わり、最適解として、組み合わせｓKbが得られる。
このように、制御信号ｋGによって、比較回路５１ｃ１〜５１ｃｎのゲインを増加させ、加算結果ｚ1d〜ｚndの変化に対する判定閾値ｚ1t〜ｚntの変化の度合いを増加させていくことは、高い温度から低い温度に変化させていくアニーリングに相当する。
【０１０１】
以上のように、本実施の形態のボルツマンマシン回路５０は、各回路部５１ａ１〜５１ａｎの比較回路５１ｃ１〜５１ｃｎにおける判定閾値ｚ1t〜ｚntの変化の度合いを増加し、比較回路５１ｃ１〜５１ｃｎのノイズを利用して等価的にアニーリングを行う。これによって、第１の実施の形態のボルツマンマシン回路１と同様の効果が得られるとともに、ＤＡＣが不要となるため、さらに、回路規模を縮小できる。
【０１０２】
なお、第２の実施の形態のボルツマンマシン回路５０でも、図５に示したような回路を用いて、重み値を学習することができる。
以上、実施の形態に基づき、本発明のボルツマンマシン回路の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１０３】
１  ボルツマンマシン回路
２ａ１〜２ａｎ  回路部（ユニット）
２ｂ１〜２ｂｎ  デジタル加算回路
２ｃ１〜２ｃｎ  ＤＡＣ
２ｄ１〜２ｄｎ  比較回路
３ａ１〜３ａｎ  デジタル演算回路
４  制御回路
１０〜１２  エネルギー波形
【図１】
0006471629.tif 000003
【図２】
0006471629.tif 000004
【図３】
0006471629.tif 000005
【図４】
0006471629.tif 000006
【図５】
0006471629.tif 000007
【図６】
0006471629.tif 000008
【図７】
0006471629.tif 000009
【図８】
0006471629.tif 000010
【図９】
0006471629.tif 000011
【図１０】
0006471629.tif 000012