(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024000428
(43)【公開日】2024-01-05
(54)【発明の名称】処理回路、論理ゲート、演算処理方法及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20231225BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022099193
(22)【出願日】2022-06-20
(71)【出願人】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(71)【出願人】
【識別番号】594164542
【氏名又は名称】キヤノンメディカルシステムズ株式会社
(74)【代理人】
【識別番号】110001771
【氏名又は名称】弁理士法人虎ノ門知的財産事務所
(72)【発明者】
【氏名】羽生 貴弘
(72)【発明者】
【氏名】鬼沢 直哉
(72)【発明者】
【氏名】新 誠一
(72)【発明者】
【氏名】藤田 博之
(72)【発明者】
【氏名】矢野 亨治
(57)【要約】
【課題】逆問題を解くことのできる回路において性能を向上させること。
【解決手段】実施形態に係る処理回路は、1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートが複数個組み合わせられることにより構成される。処理回路は、入力ノード及び出力ノードのうちの少なくとも一部のノード間で満たすべき関係に基づいて、信号値の制御を行う制御部を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における前記入力ノード及び前記出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートが複数個組み合わせられることにより構成され、
前記入力ノード及び前記出力ノードのうちの少なくとも一部のノード間で満たすべき関係に基づいて、前記信号値の制御を行う制御部を備える処理回路。
【請求項2】
前記制御部は、前記関係に基づいて、前記入力ノード及び前記出力ノードのうちの少なくとも一方に与える乱数値の大きさを定めることにより、前記信号値を確率的に更新する、請求項1に記載の処理回路。
【請求項3】
前記制御部は、前記入力ノード及び前記出力ノードにおける信号値に基づいて定められた評価値に基づいて、前記入力ノード及び前記出力ノードのうちの少なくとも一方における前記信号値を確率的に更新する、請求項2に記載の処理回路。
【請求項4】
前記制御部は、前記乱数値の大きさに基づいて生成された乱数と前記評価値との和に基づいて、前記入力ノード及び前記出力ノードのうちの少なくとも一方における前記信号値を確率的に更新する、請求項3に記載の処理回路。
【請求項5】
前記入力ノード及び前記出力ノードのうちの少なくとも一部のノード間で満たすべき関係が、
前記論理ゲートが満たすべき関係に基づいて定まる、請求項2に記載の処理回路。
【請求項6】
前記制御部は、前記入力ノード及び前記出力ノードにおける前記信号値が、前記論理ゲートの満たすべき真理値表と一致しない場合、前記真理値表と一致する場合と比較して大きな前記乱数値を前記入力ノード及び前記出力ノードのうちの少なくとも一方に与える、請求項2に記載の処理回路。
【請求項7】
前記制御部は、前記入力ノード及び前記出力ノードのうちの少なくとも一方に与える乱数値の大きさが固定されている第1の動作モードと、前記入力ノード及び前記出力ノードのうちの少なくとも一方に与える乱数値の大きさが前記関係に基づいて変化する第2の動作モードとを切り替えながら、前記信号値を確率的に更新する、請求項2に記載の処理回路。
【請求項8】
前記制御部は、一定の時間周期で、前記第2の動作モードにて前記信号値を確率的に更新し、前記第2の動作モードで動作する時刻以外の時刻においては、前記第1の動作モードにて前記信号値を確率的に更新する、請求項7に記載の処理回路。
【請求項9】
1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における前記入力ノード及び前記出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートであって、
前記入力ノード及び前記出力ノードのうちの一部のノード間で満たすべき関係に基づいて、前記信号値の制御を行う制御部を備える論理ゲート。
【請求項10】
前記制御部は、前記関係に基づいて、前記入力ノード及び前記出力ノードのうちの少なくとも一方に与える乱数値の大きさを定めることにより、前記信号値を確率的に更新する、請求項9に記載の論理ゲート。
【請求項11】
1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における前記入力ノード及び前記出力ノードのうちの少なくとも一方における信号値を確率的に定める演算処理を行い、
前記演算処理の際に、前記入力ノード及び前記出力ノードのうちの一部のノード間で満たすべき関係に基づいて、前記信号値の制御を行う、演算処理方法。
【請求項12】
1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における前記入力ノード及び前記出力ノードのうちの少なくとも一方における信号値を確率的に定める演算処理を、コンピュータに実行させ、
前記演算処理の際に、前記入力ノード及び前記出力ノードのうちの一部のノード間で満たすべき関係に基づいて、前記信号値の制御を行う処理を前記コンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書及び図面に開示の実施形態は、処理回路、論理ゲート、演算処理方法及びプログラムに関する。
【背景技術】
【0002】
逆問題を解くためのアプローチとして、反転可能論理(Invertible logic)ゲートを用いる方法がある。反転可能論理ゲートは、ゲートごとに定められたハミルトニアンに従ってノードの信号値を更新していくことで、十分な時間が経過したのちにノードの信号値の状態が、高確率で当該ハミルトニアンにより定められる最小エネルギー状態を満たしたものとなる動作をする素子である。
【0003】
しかしながら、反転可能論理ゲートを組み合わせた回路においては、ノードの信号値が時間発展の際に局所的な最小エネルギー状態に捕捉され抜け出ることができない結果、真の計算結果である大域的な最小エネルギー状態に移行できない場合があった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-013350号公報
【特許文献2】特開2019-160169号公報
【特許文献3】特開2019-159782号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本明細書及び図面の開示の実施形態が解決しようとする課題の一つは、逆問題を解くことのできる回路において性能を向上させることである。ただし、本明細書及び図面に開示の実施形態により解決しようとする課題は上記課題に限られない。後述する実施形態に示す各構成による各効果に対応する課題を他の課題として位置づけることもできる。
【課題を解決するための手段】
【0006】
実施形態に係る処理回路は、1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートが複数個組み合わせられることにより構成される。処理回路は、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係に基づいて、信号値の制御を行う制御部を備える。
【図面の簡単な説明】
【0007】
【
図1】
図1は、実施形態に係る処理回路150の構成の一例を示す図である。
【
図2】
図2は、実施形態に係る処理回路150におけるノードの配置の一例を示す図である。
【
図3】
図3は、実施形態に係る処理回路150に接続される装置の一例を示す図である。
【
図4】
図4は、実施形態に係る反転可能論理ゲートの一例を示す図である。
【
図5】
図5は、実施形態に係る反転可能論理ゲートの一例を示す図である。
【
図6】
図6は、実施形態に係る反転可能論理ゲートの一例を示す図である。
【
図7】
図7は、実施形態に係る反転可能論理ゲートを用いた計算の処理の流れの一例を示すフローチャートである。
【
図8】
図8は、
図7のステップS200の処理の流れを詳細に説明したフローチャートである。
【
図9】
図9は、実施形態に係る反転可能論理ゲートが行う処理の一例を示す図である。
【
図10】
図10は、実施形態に係る処理回路150が行う処理の一例を示す図である。
【
図11】
図11は、実施形態に係る処理回路150が行う処理の流れを示すフローチャートである。
【
図12】
図12は、実施形態に係る処理回路150が行う処理について説明した図である。
【
図13】
図13は、実施形態に係る処理回路150が行った計算結果の一例を示した図である。
【
図14】
図14は、実施形態に係る処理回路150が行った計算結果の一例を示した図である。
【発明を実施するための形態】
【0008】
(実施形態)
以下、図面を参照しながら、処理回路、論理ゲート、演算処理方法及びプログラムの実施形態について詳細に説明する。
【0009】
図1に、実施形態に係る処理回路150の構成の一例が示されている。処理回路150は、後述する反転可能論理(Invertible logic)ゲートを用いて逆問題を解くことができる処理回路であり、1または2以上の反転可能論理ゲートを有し、処理回路全体として、入力ノード、中間ノード及び出力ノードを有する。
図2には、反転可能乗算回路15が実施形態に係る処理回路150である場合の具体例を示しており、この場合、処理回路150としての反転可能乗算回路15は、入力ノード11、12と、中間ノード14と、出力ノード13とを有する。すなわち、
図2におけるA
0~A
3、B
0~B
3、C
0~C
7の一つ一つが、処理回路150としての反転可能乗算回路15における各ノードとなる。また、処理回路150としての反転可能乗算回路15は、全体として複数の反転可能論理ゲートから構成される。ここで、それぞれの反転可能論理ゲートは、複数のノードとそれらのノード間との接続と、後述する所定の制御機能により実現される。
【0010】
図1に戻り、処理回路150は、データ入力機能151、入力ノードデータ保持機能152、中間ノードデータ保持機能153、出力ノードデータ保持機能154、データ出力機能155及び反転可能論理ゲート処理機能160の各機能を有する。反転可能論理ゲート処理機能160は、第1評価値生成機能161、第2評価値生成機能162、評価値加算機能163、ノードデータ更新機能164、収束判定機能165、計算精度算出機能166を有する。第1評価値生成機能161は、ハミルトニアン係数保持機能161a及びハミルトニアン評価機能161bを有する。第2評価値生成機能162は、対象ゲート判定機能162a、有効状態判定機能162b、乱数部係数決定機能162c及び乱数生成機能162dを有する。
【0011】
また、
図3に示されるように、処理回路150は、入力装置110、メモリ120、ディスプレイ130等と接続される。入力装置110は、操作者からの各種指示や情報入力を受け付ける、例えば、マウスやトラックボール等のポインティングデバイス、モード切り替えスイッチ等の選択デバイス、あるいはキーボード等の入力デバイスである。メモリ120は、処理回路150に入力される入力データや、処理回路150が出力する出力データ等の種々のデータを記憶するメモリであり、例えば、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリ素子、ハードディスク、光ディスク等である。ディスプレイ130は、種々の解析結果等をユーザに表示するディスプレイであり、例えば液晶表示器等の表示デバイスである。
【0012】
図1に戻り、実施形態では、データ入力機能151、入力ノードデータ保持機能152、中間ノードデータ保持機能153、出力ノードデータ保持機能154、データ出力機能155及び反転可能論理ゲート処理機能160(及び反転可能論理ゲート処理機能160を構成する各処理機能)の各処理機能は、コンピュータによって実行可能なプログラムの形態でメモリ120へ記憶されている。処理回路150はプログラムをメモリ120から読み出し、実行することで各プログラムに対応する機能を実現するプロセッサである。換言すると、各プログラムを読み出した状態の処理回路150は、
図1の処理回路150内に示された各機能を有することになる。なお、
図1においては単一の処理回路150にて、これらの処理機能が実現されるものとして説明するが、複数の独立したプロセッサを組み合わせて処理回路150を構成し、各プロセッサがプログラムを実行することにより機能を実現するものとしても構わない。換言すると、上述のそれぞれの機能がプログラムとして構成され、1つの処理回路150が各プログラムを実行する場合であってもよい。別の例として、特定の機能が専用の独立したプログラム実行回路に実装される場合であってもよい。
【0013】
なお、データ入力機能151、データ出力機能155及び反転可能論理ゲート処理機能160は、制御部の一例である。また、入力ノードデータ保持機能152、中間ノードデータ保持機能153、出力ノードデータ保持機能154は、保持部の一例である。
【0014】
上記説明において用いた「プロセッサ」という文言は、例えば、CPU(Central Processing Unit)、GPU(Graphical Processing Unit)或いは、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、プログラマブル論理デバイス(例えば、単純プログラマブル論理デバイス(Simple Programmable Logic Device:SPLD)、複合プログラマブル論理デバイス(Complex Programmable Logic Device:CPLD)、及びフィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA))等の回路を意味する。プロセッサはメモリ120に保存されたプログラムを読み出し実行することで機能を実現する。
【0015】
また、メモリ120にプログラムを保存する代わりに、プロセッサの回路内にプログラムを直接組み込むよう構成しても構わない。この場合、プロセッサは回路内に組み込まれたプログラムを読み出し実行することで機能を実現する。
【0016】
データ入力機能151は、計算対象の入力データを入力する機能である。具体的には、処理回路150は、データ入力機能151により、入力装置110またはメモリ120から計算対象の入力データを取得し、処理回路150のうちの出力ノード13に当該入力データを入力する。なお、実施形態の処理回路150は、逆問題を解く処理を行うものであるので、入力データは出力ノード13に入力され、また出力データは入力ノード11、12から出力される。
【0017】
データ出力機能155は、計算結果の出力データを外部装置に出力する機能である。具体的には、処理回路150は、データ出力機能155により、入力ノード11、12に保持された計算結果の出力データを、メモリ120に送信し、またはディスプレイ130に表示させる。
【0018】
また、処理回路150は、入力ノードデータ保持機能152、中間ノードデータ保持機能153、出力ノードデータ保持機能154の各機能により、それぞれ入力ノード11、12、中間ノード14、出力ノード13のデータを保持する。
【0019】
処理回路150は、反転可能論理ゲート処理機能160により、反転可能論理ゲートを用いた処理を行い、逆問題を解く処理を行う。
【0020】
続いて、
図4~10を用いて、反転可能論理ゲート及び、反転可能論理ゲートを用いた回路について簡単に説明する。
【0021】
通常の論理ゲートは、入力ノードに入力信号が入力されると、入力信号に一意的に対応する出力信号が出力ノードから出力される。例えば、OR論理ゲートである場合、第1の入力ノードの信号値が「1」であり、第2の入力ノードの信号値が「0」である場合、これらの入力信号に一意的に対応する出力信号である信号値「1」が、出力ノードから出力される。
【0022】
これに対して、反転可能論理ゲートでは、与えられた出力信号に対して無矛盾な入力信号が、入力信号として高確率で出力される。一例として、反転可能OR論理ゲートである場合、出力ノードの信号値が「1」である場合、この出力ノードの信号値と無矛盾な入力信号の組としては、第1の入力ノードの信号値が「1」であり、第2の入力ノードの信号値が「0」であるケース、第1の入力ノードの信号値が「0」であり、第2の入力ノードの信号値が「1」であるケース、第1の入力ノードの信号値が「1」であり、第2の入力ノードの信号値が「1」であるケースのいずれかが考えられる。従って、反転可能論理ゲートでは、出力ノードの信号値と無矛盾な入力ノードの信号値の組のいずれかが、高確率で入力ノードに与えられる。
【0023】
ここで、通常の論理ゲートの場合と異なり、反転可能論理ゲートの場合、出力ノードの信号値に対して、出力ノードの信号値と無矛盾な入力信号の組は一般には複数存在するので、入力ノードの信号値は一意的に定まらない。従って、反転可能論理ゲートでは、出力ノードの信号値と無矛盾な信号値が、入力ノードの信号値として、確率的に与えられる。
【0024】
また、反転可能論理ゲートでは、出力ノードの信号値と無矛盾な入力ノードの信号値の組のいずれかが、高確率で入力ノードに与えられるが、出力ノードの信号値と矛盾する入力ノードの信号値が入力ノードに与えられる可能性は排除されない。例えば、反転可能OR論理ゲートにおいて、出力ノードの信号値が「1」でも、第1の入力ノードの信号値が「0」であり、第2の入力ノードの信号値が「0」である可能性は排除されない。換言すると、反転可能論理ゲートにおいては、各時刻において、通常の論理ゲートとしての入力ノードの信号値と出力ノードの信号値との関係性が満たされているとは限らない。
【0025】
しかしながら、反転可能論理ゲートにおいては、後述する処理により、各ノードの信号値を定期的に更新する処理が行われる。この際に、後述するハミルトニアンが各論理ゲートに対して導入され、通常の論理ゲートとしての論理的関係性を満たしている入力ノード及び出力ノードの組と、通常の論理ゲートとしての論理的関係性を満たしていない入力ノード及び出力ノードの組との間で、信号値の更新確率を異ならせる処理が行われる。このことで、初期状態から十分時間が経過した時刻において、通常の論理ゲートとしての論理的関係性を満たしている入力信号の組が、高確率で選択されることになる。
【0026】
すなわち、反転可能論理ゲートにおいては、各時刻においては、入力ノードと出力ノードとの間に、通常の論理ゲートとしての論理的関係性は必ずしも保証されないにもかかわらず、初期状態から十分時間が経過した後では、通常の論理ゲートとしての論理的関係性を満たしている入力信号の組が、高確率で選択される。この意味で、反転可能論理ゲートは、出力信号に対する入力信号を出力することができると考えることができる。従って、反転可能論理ゲートを複数組み合わせた回路を構成することにより、与えられた出力信号になるような入力信号を出力することができ、逆問題を解くことができる処理回路150を構成することができる。
【0027】
上記した論理的関係性とは、例えば、論理演算(AND、OR、XOR、NOTなど)の真理値表に示される入力と出力における対応関係のことである。また、ここでいう関係性は、例えば、論理演算(論理ゲート)単位ではなく、複数の論理ゲートを含み構成されるブロック単位で、入力、出力ノード間で満たすべき関係と考えることもできる。なお、反転可能論理ゲートは、CPU、GPU(或いは、ASIC)、プログラマブル論理デバイス(例えば、SPLD、CPLD、及びFPGA)等の所定のハードウェアにより実現されてもよいし、ハードウェア上のソフトウェアとして実現されてもよい。
【0028】
図4に、反転可能論理ゲート10の模式図が示されている。すなわち、入力ノードが第1の入力ノード1a及び第2の入力ノード1bの2ノード、出力ノードが出力ノード1cの1ノードの計3ノードからなる反転可能論理ゲート10が示されている。ここで、第1の入力ノード1a、第2の入力ノード1b及び出力ノード1cにおいて保持されている信号値は、「0」または「1」となる。これらの信号値は、スピン1/2の表現を取ることもでき、例えば信号値「0」が、下向きスピンであるm=-1の状態に対応し、信号値「1」が、上向きスピンであるスピンm=1の状態に対応する。例えば、第1の入力ノード1aの信号値が「0」、第2の入力ノード1bの信号値が「1」、出力ノードの信号値が「0」である場合、第1の入力ノード1aの信号値のスピン表現はm
1=-1、第2の入力ノード1bの信号値のスピン表現はm
2=1、出力ノード1cの信号値のスピン表現はm
3=-1となる。
【0029】
反転可能論理ゲート10に対して、以下の式(1)で示すイジングモデルのハミルトニアンHgateが定義される。
【0030】
【0031】
ここで、i及びjは各ノードの添え字を表し、miは、i番目のノードの信号値のスピン表現である。hiは、i番目のノードに対する係数であり、イジングモデルにおいては、i番目のノードに関する磁場を表す量である。また、Jijは、i番目のノードとj番目のノードとの間に対する係数であり、イジングモデルにおいては、i番目のノードとj番目のノードとの間の交換相互作用を表す量である。
【0032】
このハミルトニアンに対応して、反転可能論理ゲート10は、
図4に示す通り、各ノードの係数である係数2a、2b、2cに対応する情報及び、ノード間の係数である係数3a、3b、3cに対応する情報を保持する。具体的には、反転可能論理ゲート10は、式(1)の右辺第1項に対応する係数を、係数2a、2b、2cとして保持する。すなわち、反転可能論理ゲート10は、係数2a、2b、2cを、それぞれ1番目、2番目、3番目のノードに対する、式(1)の右辺第1項に対応する係数として保持する。また、反転可能論理ゲート10は、式(1)の右辺第2項に対応する係数を、係数3a、3b、3cとして保持する。すなわち、反転可能論理ゲート10は、係数3a、3b、3cを、それぞれ1番目のノードと2番目のノードの間の、2番目のノードと3番目のノードの間の、3番目のノードと1番目のノードの間の係数であって、式(1)の右辺第2項に対応する係数として保持する。
【0033】
なお、係数2a、2b、2c及び係数3a、3b、3cは、反転可能論理ゲート10の論理ゲートとしての種類によってあらかじめ定められている数値である。これらの数値は、時刻が変化しても不変な数値であり、また、各ノードの信号値に依存しない。
【0034】
また、これらの係数は、反転可能論理ゲート10が通常の論理ゲートであったと仮定した場合においてノード間で満たすべき論理的関係性を満たしている状態(有効な状態)におけるハミルトニアンの評価値が、そうでない状態(有効でない状態)と比較して小さくなるように設計されている。換言すると、式(1)で与えられるハミルトニアンは、反転可能論理ゲート10において有効な状態におけるハミルトニアンの評価値が、有効でない状態におけるハミルトニアンの評価値と比較して小さくなるように設計される。
【0035】
図5及び
図6を用いて、反転可能論理ゲートのより具体的な構成例について説明する。
図5に示される反転可能OR論理ゲート10aにおいては、係数h
i及び係数J
ijは、それぞれ以下の式(2)及び式(3)で表される。
【0036】
【0037】
【0038】
すなわち、
図5に示されるように、反転可能OR論理ゲート10aにおいて、係数2aについてh
1=-1、係数2bについてh
2=-1、係数2cについてh
3=2となる。また、反転可能OR論理ゲート10aにおいて、係数3aについてJ
12=-1、係数3bについてJ
23=2、係数3cについてJ
31=2となる。
【0039】
また、
図6に示される反転可能AND論理ゲート10bにおいては、係数h
i及び係数J
ijは、それぞれ以下の式(4)及び式(5)で表される。
【0040】
【0041】
【0042】
すなわち、
図6に示されるように、反転可能AND論理ゲート10bにおいて、係数2aについてh
1=1、係数2bについてh
2=1、係数2cについてh
3=-2となる。また、反転可能AND論理ゲート10bにおいて、係数3aについてJ
12=-1、係数3bについてJ
23=2、係数3cについてJ
31=2となる。
【0043】
また、その他の種類の反転可能論理ゲート10、例えば反転可能XOR論理ゲートや反転可能NOR論理ゲート等についても、同様に、ハミルトニアンの係数値を適宜構成することにより、構成することができる。
【0044】
なお、式(1)で示された反転可能論理ゲート10のハミルトニアンは、以下の式(6)で示されるように、ハミルトニアンのうちノードiに係る部分Hiの和に分解することができる。
【0045】
【0046】
具体的には、反転可能論理ゲート10のハミルトニアンのうちノードiに係る部分Hiは、以下の式(7)で表される。
【0047】
【0048】
すなわち、反転可能論理ゲート10のハミルトニアンは、適宜、ノードごとの成分の和に分解することができる。これらノードごとの成分に分解されたハミルトニアンの各成分は、後述の式(8)の右辺第1項及び第2項に組み込まれることにより、各ノードにおける信号値を更新する処理に用いられる。
【0049】
続いて、
図7及び
図8を用いて、反転可能論理ゲート10において行われる処理について説明する。
図7は、実施形態に係る反転可能論理ゲート10において行われる処理の流れを示したフローチャートである。また、
図8は、
図7のステップS200において行われる処理の流れを示したフローチャートである。なお、実施形態に係る処理回路150においては、
図7のステップS200における処理について、
図7のフローチャートに示された以外の処理を含んだ処理を行うが、この点については、後述する
図11の説明において詳しく説明することとし、まずはこの処理については除外して、反転可能論理ゲート10の基本的な動作について説明する。
【0050】
また、実施形態においては、通常複数の反転可能論理ゲート10が組み合わされて処理回路150が構成されるが、複数の反転可能論理ゲート10を組み合わせる場合については後述し、ここでは、1個の反転可能論理ゲート10により処理回路150が構成されている場合について説明する。
【0051】
はじめに、ステップS100において、処理回路150は、データ入力機能151により、時刻t=0において、初期値を出力ノード1cに入力する。具体的には、処理回路150は、データ入力機能151により、反転可能論理ゲート10の出力ノード1cに、初期値を入力する。一例として、時刻t=0において、出力ノード1cに入力される初期値が「1」の場合、処理回路150は、データ入力機能151により、反転可能論理ゲート10の出力ノード1cに、初期値である「1」を入力する。この時、出力ノード1cの信号値は、m3=1となる。
【0052】
続いて、処理はステップS200に進み、処理回路150は、一定の時間間隔で、各ノードの信号値を更新する。すなわち、処理回路150は、反転可能論理ゲート処理機能160により、iをノード番号として、ある時刻tにおけるノードiの信号値m
i(t)及びその他のノードj(ノードjはノードiとは異なるノードであって、ノードiに隣接するノードとする)の信号値m
j(t)に基づいて、次の時刻t+1における信号値m
i(t+1)を、確率的に定める。一例として、
図4の場合、処理回路150は、反転可能論理ゲート処理機能160により、時刻tにおける第1の入力ノード1aの信号値m
1(t)、時刻tにおける第2の入力ノード1bの信号値m
2(t)、時刻tにおける出力ノード1cの信号値m
3(t)に基づいて、次の時刻t+1における信号値m
1(t+1)、m
2(t+1)及びm
3(t+τ)を確率的に定める。
【0053】
具体的には、処理回路150は、反転可能論理ゲート処理機能160により、時刻t+1におけるノードiの信号値mi(t+1)を、以下の式(8)~(10)により与える。
【0054】
【0055】
【0056】
【0057】
ここで、式(8)において、tは時刻、i及びjはノードの番号、hiは式(1)の右辺第1項のi番目のノードに関する係数、Jijは式(1)の右辺第2項のi番目のノードとj番目のノード間の係数、nrndは乱数の大きさを表す定数、ri(t)は、時刻tにおいてi番目のノードに与えられる乱数である。すなわち、i番目のノードにおける時刻t+1における関数Ii(t)は、式(8)の右辺を評価することにより求められる。
【0058】
また、時刻t+1におけるi番目のノードにおける関数Itanhi(t+1)は、関数Ii(t)を用いて、式(9)により評価することができる。ここで、I0は、所定の閾値である。なお、I0は、スピン系において、温度の逆数を意味する意味合いの量である。なお、関数Itanhi(t)は、その挙動がtanh関数に類似する関数という意味あいで命名している関数であるが、式(9)の漸化式により順次定められる関数であり、tanh関数そのものではない。
【0059】
前述の関数Itanhi(t)を用いて、時刻t+1におけるi番目のノードにおける信号値mi(t+1)は、上述の式(10)で与えられる。
【0060】
図8に、そのようなステップの詳細が示されている。
図8は、
図7のステップS200の処理についてより詳細に説明したフローチャートである。
【0061】
はじめに、ステップS210において、処理回路150は、第1評価値生成機能161により、各ノードにおける信号値に基づいて定められた第1の評価値を算出する。
【0062】
第1評価値生成機能161は、各ゲートのハミルトニアンの係数を保持するハミルトニアン係数保持機能161aと、ハミルトニアン係数保持機能161aにより保持されたハミルトニアンの係数に基づいて、ハミルトニアンの評価を行うハミルトニアン評価機能161bとを有する。処理回路150は、ハミルトニアン係数保持機能161aにより、各ノードに関する係数hi及び、ノード間の係数Jijの値を保持する。また、処理回路150は、ハミルトニアン評価機能161bにより、保持された各ノードに関する係数hi及び、ノード間の係数Jijの値に基づいて、式(8)の右辺第1項及び右辺第2項の和である第1の評価値を算出する。
【0063】
かかる処理が
図9に示されている。
図9において、処理回路150は、第1評価値生成機能161により、矢印4で示された部分において式(8)の右辺第1項の評価を行い、囲み線5で示された部分において式(8)の右辺第2項の評価を行う。処理回路150は、ハミルトニアン評価機能161bの一部としての加算回路8により、式(8)の右辺第1項と第2項との和を算出する。
【0064】
続いて、ステップS220において、処理回路150は、第2評価値生成機能162により、第2の評価値を算出する。
【0065】
ここで、第2評価値生成機能162は、対象ゲート判定機能162a、有効状態判定機能162b、乱数部係数決定機能162c及び乱数生成機能162dを有する。ただし、
図8の例については、乱数部係数n
rndは固定値であるので、対象ゲート判定機能162a、有効状態判定機能162b及び乱数部係数決定機能162cの機能は使用されない。これらの機能の詳細については
図11において説明する。乱数生成機能162dは、乱数を生成する機能である。すなわち、処理回路150は、乱数生成機能162dにより、式(8)の右辺第3項に示される乱数r
i(t)を生成する。
【0066】
続いて、処理回路150は、第2評価値生成機能162により、式(8)の右辺第3項における固定された乱数部係数n
rndに乱数r
i(t)を乗じて式(8)の右辺第3項である第2の評価値を算出する。一例として、処理回路150は、乱数生成機能162dにより、
図9の矢印6で示された部分において、式(8)の右辺第3項である第2の評価値を算出する。
【0067】
続いて、ステップS230において、処理回路150は、評価値加算機能163及びノードデータ更新機能164により、信号値の更新を行う。評価値加算機能163は、第1評価値生成機能161により生成された第1の評価値と、第2評価値生成機能162により生成された第2の評価値とを加算する機能である。
【0068】
すなわち、処理回路150は、評価値加算機能163により、式(8)の右辺第1項及び右辺第2項である第1の評価値と、式(8)の右辺第3項である第2の評価値とを加算して、関数Ii(t+1)の値を生成する。一例として、処理回路150は、評価値加算機能163としての加算回路8により、矢印4で示される式(8)の右辺第1項の評価値と、囲み線5で示される式(8)の右辺第2項の評価値と、矢印6で示される式(8)の右辺第3項の評価値とを加算して、関数Ii(t+1)の値を生成する。
【0069】
また、ノードデータ更新機能164は、生成された関数Ii(t)の値に基づいて、信号値を更新する機能である。すなわち、処理回路150は、ノードデータ更新機能164により、評価値加算機能163により生成された関数Ii(t)の値に基づいて、式(9)及び式(10)により、i番目のノードにおける信号値miを更新する。一例として、処理回路150は、式(9)に相当する処理を行う回路9aに基づいて、評価値加算機能163により生成された関数Iiの値に基づいて、関数Itanhiの値の算出を行う。また、処理回路150は、式(10)に相当する処理を行う回路9bに基づいて、信号値miの更新を行う。すなわち、回路9a及び回路9bは、ノードデータ更新機能164の一例である。
【0070】
なお、ステップS230において、処理回路150は、すべてのノードにおいて信号値を更新するのではなく、一部のノードのみにおける信号値を更新してもよい。
【0071】
一例として、処理回路150は、ノードデータ更新機能164により、入力ノードの信号値を固定して、出力ノードの信号値のみを更新する順方向モード(forward mode)にて、信号値の更新を行ってもよい。この場合、処理回路150は、ノードデータ更新機能164により、出力ノード1cの信号値m3のみ更新し、第1の入力ノード1aの信号値m1及び第2の入力ノード1bの信号値m2については信号値を固定し更新を行わなくてもよい。
【0072】
また、別の例として、処理回路150は、ノードデータ更新機能164により、出力ノードの信号値を固定して、入力ノードの信号値のみを更新する逆方向モード(reverse mode)にて、信号値の更新を行ってもよい。この場合、処理回路150は、ノードデータ更新機能164により、第1の入力ノード1aの信号値m1及び第2の入力ノード1bの信号値m2のみ更新し、出力ノード1cの信号値m3については信号値を固定し更新を行わなくてもよい。更にまた、別の例として、処理回路150は、ノードデータ更新機能164により、出力ノードの信号値と、入力ノードの信号値の両方を更新したり、上記した順方向モードと逆方向モードとを組み合わせたりする(両モードを交互に行う等)こともできる。
【0073】
収束判定機能165及び計算精度算出機能166は、各繰り返しステップにおいて、それぞれ収束判定及び計算精度の算出を行う機能である。ここで、収束判定とは、計算結果すなわち各ノードの信号値が一定の値に収束しているかを判定する機能である。また、計算精度とは、その時点の逆問題の解候補である入力ノードのデータが、どの程度、満たすべき逆問題の関係を満たしているかを表す数値を意味する。処理回路150は、収束判定機能165または計算精度算出機能166により、各繰り返しステップにおいて、必要に応じて適宜収束判定を行い、または計算精度の算出を行ってもよい。
【0074】
以上のように、ステップS200において、処理回路150は、ノードデータ更新機能164により、各ノードの信号値miの更新を行う。
【0075】
図7に戻り、ステップS300において、処理回路150は、反転可能論理ゲート処理機能160により、終了判定条件が満たされたか否かを判定する。ここで、終了判定条件を満たすとは、例えば、計算結果に関する収束判定条件を満たす場合が挙げられる。すなわち、処理回路150は、収束判定機能165により、計算結果が収束しているか否かを判定することにより、終了判定条件が満たされたか否かを判定する。また、別の終了判定条件として、処理回路150は、反転可能論理ゲート処理機能160により、所定の回数だけ信号値の更新が行われた場合、終了判定条件が満たされたと判定してもよい。尚、ステップS300における終了判定状況としては、例えば、複数の論理ゲートがある場合には、個々のゲートを構成する入力ノードの信号値と出力ノードの信号値との関係が、真理値表と比較した場合に、当該真理値表と矛盾してしまう状態(invalid state)のゲートの個数がゼロとなるように定めることもできるし、また、真理値表に矛盾する状態のゲートの存在をある程度許容するように定めることもできる。
【0076】
処理回路150が、反転可能論理ゲート処理機能160により、終了判定条件が満たされていないと判定した場合(ステップS300 No)、処理はステップS200に戻り、処理回路150は、各ノードの信号値miの更新を行う。一方、処理回路150が、反転可能論理ゲート処理機能160により、終了判定条件が満たされたと判定した場合(ステップS300 Yes)、処理はステップS400に進む。
【0077】
続いて、ステップS400において、処理回路150は、データ出力機能155により、入力ノードの信号値を、計算結果として出力する。一例として、反転可能論理ゲート10は、第1の入力ノード1aの信号値及び第2の入力ノード1bの信号値を、計算結果として出力する。反転可能論理ゲート10においては、信号値miの更新確率を定めるのに用いられる評価値であるハミルトニアンが、各入力ノードの信号値に対する反転可能論理ゲート10が通常の論理ゲートであったと仮定した場合に満たすべき関係を満たす場合に、当該関係を満たさない場合と比較して小さな値を取るように設計されている。この結果、十分なサイクルだけ時間が経過したのちは、各入力ノードの信号値が、当該満たすべき関係を高確率で満たすようになる。
【0078】
続いて、反転可能論理ゲートを複数組み合わせた場合の処理回路150について説明する。
【0079】
図5及び
図6では、反転可能AND論理ゲート及び反転可能ORゲートについて説明したが、ハミルトニアンを適切に設定することにより、同様に、反転可能XOR論理ゲート、反転可能NOR論理ゲート、反転可能NAND論理ゲート等の基本的な論理ゲートを構成することができる。ここで、任意の論理回路は、ANDゲート、ORゲート、XORゲートなどの基本的な論理ゲートの組み合わせで表現することができる。従って、任意の論理回路について、基本的な反転可能論理ゲートを複数組み合わせた回路を構成することにより、順方向の問題が通常の論理回路で表現された問題に対する逆問題を解くことができる。一例として、順方向の問題がANDゲートとXORゲートとの組み合わせにより表現できる場合、反転可能AND論理ゲートと反転可能XOR論理ゲートとを組み合わせた回路を用いることにより、当該順方向の問題に対する逆問題を解くことができる。
【0080】
すなわち、逆問題を反転可能論理ゲートを用いて解くための回路を作成するには、まず、順問題を通常の論理ゲートの組み合わせで表現したのち、通常の論理ゲートを、対応する反転可能論理ゲートに置き換えればよい。
【0081】
以下、自然数の因数分解問題を例として、そのような回路構成について説明する。ここで、自然数の因数分解問題とは、与えられた自然数Cに対して、A×B=Cを満たす自然数A及びBの組を見出す問題を言う。すなわち、自然数Aと自然数Bに対して、AとBの積を計算する処理を順方向の問題として、与えられた自然数Cに対して、A×B=Cを満たす自然数A及びBの組を見出す問題は、当該順方向の問題に対する逆問題となる。
【0082】
まず、順方向の問題の解法を考えると、簡単のため、A及びBは1以上16未満の自然数とすると、A及びBを2進数表現すると、A=A3×23+A2×22+A1×2+A0×20、B=B3×23+B2×22+B1×21+B0×20となる。これらの2進数表現を用いてA×Bを表現し、繰り上がり等も考慮してCの2進数表現C=C7×27+C6×26+C5×25+C4×24+C3×23+C2×22+C1×21+C0×20と比較することにより、自然数Aと自然数Bに対してAとBの積を計算する論理回路を実装することができる。
【0083】
図10に、そのような論理回路の例が示されている。ここで、A
3、A
2、A
1、A
0は、自然数Aの2進数表現であり、これらが入力として与えられる。また、B
3、B
2、B
1、B
0は、自然数Bの2進数表現であり、これらが入力として与えられる。また、C
7、C
6、C
5、C
4、C
3、C
2、C
1、C
0は、自然数Cの2進数表現であり、これらが出力として与えられる。
【0084】
ここで、ゲート20及びゲート21はAND論理ゲートである。また、回路22及び回路23は、それぞれHalf-Adder、Full―Adderとして知られる論理回路であり、所定の論理ゲートの組み合わせにより実現可能な回路である。例えば、回路22及び回路23は、ANDゲートと、XORゲートとの所定の組み合わせで実現可能な回路である。従って、一例として、Half-Adderである回路22の回路構成のうち、ANDゲートを反転可能AND論理ゲートに、XORゲートを反転可能XOR論理ゲートに置き換えることで、反転可能Half-Adder回路を生成することができる。また、一例として、Full-Adderである回路23の回路構成のうち、ANDゲートを反転可能AND論理ゲートに、XORゲートを反転可能XOR論理ゲートに置き換えることで、反転可能Full-Adder回路を生成することができる。
【0085】
従って、
図10に示される乗算回路において、各構成要素の論理ゲートを反転可能論理ゲートに置き換えることで、反転可能乗算回路(因数分解回路)を生成することができる。
【0086】
図2に戻り、反転可能乗算回路15のノード構成について説明する。出力ノード13は、逆問題の初期入力が入力されるノードである。処理回路150は、データ入力機能151により、因数分解を行うべき自然数Cの2進数表現を、出力ノード13に入力する。また、入力ノード11及び入力ノード12は、計算結果が出力されるノードである。処理回路150は、データ出力機能155により、因数分解が行われた自然数Aの2進数表現を入力ノード11から出力し、因数分解が行われた自然数Bの2進数表現を入力ノード12から出力する。また、中間ノード14は、反転可能乗算回路15のノードのうち、入力ノード11、12及び出力ノード13以外のノードである。中間ノード14には、種々の中間的な計算結果が保持される。
【0087】
図7及び
図8を再び参照し、反転可能論理ゲートを複数組み合わせた処理回路150の行う処理の流れについて説明する。
【0088】
はじめに、ステップS100において、処理回路150は、データ入力機能151により、時刻t=0において、初期値を出力ノードに入力する。一例として、処理回路150は、データ入力機能151により、反転可能乗算回路15の出力ノード13に、因数分解を行うべき自然数Cの2進数表現を入力する。
【0089】
続いて、処理はステップS200に進み、処理回路150は、一定の時間間隔で、各ノードの信号値を更新する。ここで、「各ノード」とは、出力ノード13以外のノードである、入力ノード11、入力ノード12及び中間ノード14である。処理回路150は、反転可能論理ゲート処理機能160により、これらのノードの信号値を確率的に更新する。なお、処理回路150は、出力ノード13の信号値については、更新を行わず固定することができる。
【0090】
ここで、処理回路150は、式(8)~式(10)を用いて各ノードの信号値を更新するが、複数の反転可能論理ゲートの組み合わせにより構成された回路における各ノードの信号値についての式(8)の右辺の評価は、式(8)の右辺第1項及び第2項に関しては、各論理ゲートの和により定められる回路全体のハミルトニアンのうち、当該各ノードに関連する部分の寄与を用いて評価する。
【0091】
すなわち、複数の論理ゲートが構成されて一つの回路となる場合、回路全体のハミルトニアンHは、以下の式(11)で表現することができる。
【0092】
【0093】
ここで、kは各反転可能論理ゲートに付された番号であり、HGate_kは、k番目の反転可能論理ゲートのハミルトニアンである。また、それぞれの反転可能論理ゲートのハミルトニアンは、式(1)のような形式になっているので、式(6)及び式(7)のように、ハミルトニアンを、ノードごとの成分に分離することができる。従って、式(11)の回路全体のハミルトニアンについても、ノードごとの成分に分離することができる。当該ノードごとのハミルトニアン成分を、式(8)の右辺第1項及び第2項に変えて代入して式(9)及び式(10)を用いることにより、処理回路150は反転可能論理ゲート処理機能160により各ノードの信号値を更新する。
【0094】
すなわち、ステップS210において、処理回路150は、第1評価値生成機能161により、回路全体のハミルトニアンのうち各ノードについての寄与である第1の評価値を算出する。
【0095】
続いて、ステップS220において、処理回路150は、乱数生成機能162dにより、式(8)の右辺第3項に示される乱数ri(t)を生成する。続いて、処理回路150は、第2評価値生成機能162により、式(8)の右辺第3項における固定された乱数部係数nrndに乱数ri(t)を乗じて式(8)の右辺第3項である第2の評価値を算出する。
【0096】
続いて、ステップS230において、処理回路150は、評価値加算機能163により、第1の評価値と第2の評価値を加算して、関数Ii(t+1)の値を生成する。続いて、処理回路150は、ノードデータ更新機能164により、生成された関数Ii(t+1)の値に基づいて、式(9)及び式(10)に基づいて、i番目のノードにおける信号値miを更新する。
【0097】
以上のように、ステップS200において、処理回路150は、ノードデータ更新機能164により、各ノードの信号値miの更新を行う。
【0098】
図7に戻り、ステップS300において、処理回路150は、反転可能論理ゲート処理機能160により、終了判定条件が満たされたか否かを判定する。
【0099】
処理回路150が、反転可能論理ゲート処理機能160により、終了判定条件が満たされていないと判定した場合(ステップS300 No)、処理はステップS200に戻り、処理回路150は、各ノードの信号値miの更新を行う。一方、処理回路150が、反転可能論理ゲート処理機能160により、終了判定条件が満たされたと判定した場合(ステップS300 Yes)、処理はステップS400に進む。
【0100】
続いて、ステップS400において、処理回路150は、データ出力機能155により、入力ノードの信号値を、計算結果として出力する。一例として、処理回路150は、データ出力機能155により、入力ノード11及び入力ノード12の信号値を、計算結果として出力する。
【0101】
続いて、実施形態に係る背景について説明する。
【0102】
反転可能論理ゲートを用いた計算において、計算結果が局所的な最小エネルギー状態から抜けだせなくなってしまい、その結果、真の計算結果である大域的な最小エネルギー状態にたどり着けない場合があるという問題がある。例えば、各ノードが、本来の論理ゲートの満たすべき論理関係を満たしていない論理ゲート(以下、第1の論理ゲートと呼ぶ)に、複数の論理ゲート(第2の論理ゲート)が隣接し、これら第2の論理ゲートにおいては、各ノードが、本来の論理ゲートの満たすべき論理関係を満たしている場合を考える。
【0103】
この場合、第1の論理ゲートにおける各ノードが当該論理関係を満たすために、第1の論理ゲートにおけるノードの信号値を変更した場合を考える。この場合、第2の論理ゲートは、第1の論理ゲートにおけるノードの信号値が変更された結果、もはや本来の論理ゲートの満たすべき論理関係を満たさなくなり、その結果、その状態のエネルギーが高エネルギー状態と評価される場合がある。従って、第2の論理ゲートにおける各ノードの信号値を更に変更すれば大域的な低エネルギー状態が得られるにもかかわらず、そのような状態への到達確率が低くなり、真の計算結果が得られない場合がある。
【0104】
前記処理回路150は、かかる背景に基づくものである。すなわち、実施形態に係る処理回路150は、1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートが複数個組み合わせられることにより構成される。ここで、処理回路150は、反転可能論理ゲート処理機能160により、入力ノード及び出力ノードのうちの少なくとも一部のノード間で満たすべき関係に基づいて、信号値の制御を行うことができる。尚、処理回路150は、入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードにおける信号値の両方を確率的に定める論理ゲートを複数個含み構成されることもできる。また、論理ゲートが複数集まった回路では、
図2や
図10で説明するように、ゲート出力が複数、すなわち出力ノードが複数ある場合も本実施形態に含まれ得る。なお、処理回路150は、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係に基づいて、信号値の制御を行うこともできるし、入力・出力ノードのうちの全てのノード間で満たすべき関係に基づいて、信号値の制御を行ってもよい。
【0105】
また、実施形態に係る論理ゲートは、1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートであって、入力ノード及び出力ノードのうちの少なくとも一部のノード間で満たすべき関係に基づいて、信号値の制御を行う制御部を備える。
【0106】
また、実施形態に係る演算処理方法は、1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める演算処理を行い、演算処理の際に、入力ノード及び出力ノードのうちの少なくとも一部のノード間で満たすべき関係に基づいて、信号値の制御を行う。
【0107】
また、実施形態に係るプログラムは、1または2以上の入力ノードと、出力ノードとのある時刻における信号値に基づいて、次の時刻における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める演算処理を、コンピュータに実行させ、当該演算処理の際に、入力ノード及び出力ノードのうちの少なくとも一部のノード間で満たすべき関係に基づいて、信号値の制御を行う処理をコンピュータに実行させる。
【0108】
すなわち、実施形態においては、処理回路150は、反転可能論理ゲート処理機能160により、
図7のステップS200の処理において、
図8において示される処理に代えて、
図11において示される処理を行う。具体的には、処理回路150は、反転可能論理ゲート処理機能160により、ステップS215及びステップS500~S540の処理を追加的に行いながらノードの信号値を確率的に更新するものである。これにより処理回路150は、信号値が時間発展の際に局所的な最小エネルギー状態に捕捉されて抜け出せなくなることを防止することができる。この結果、計算結果の収束性を改善することができ、計算結果が安定的に大域的な最小エネルギー状態へと到達する確率を向上させることができる。すなわち、実施形態に係る処理回路150は、逆問題を解くことのできる回路において性能を向上させることができる。
【0109】
なお、ここでいう「入力ノード及び出力ノードのうちの一部のノード」とは、処理回路150を構成するいずれかの反転可能論理ゲート10の第1の入力ノード1a、第2の入力ノード1bまたは出力ノード1cとなっているノードを意味する。すなわち、例えば
図2の反転可能乗算回路15の場合、入力ノード11、12、出力ノード13のみならず中間ノード14に関しても、いずれかの反転可能論理ゲート10の第1の入力ノード1a、第2の入力ノード1bまたは出力ノード1cとなっているノードであるので、ここでいう「入力ノード及び出力ノードのうちの一部のノード」に含まれる。
【0110】
実施形態に係る処理回路150は、反転可能論理ゲート10が1または複数個組み合わせられることにより構成され、逆問題を解くための計算に使用される。すなわち、実施形態に係る処理回路150は、1または2以上の入力ノードと、出力ノードとのある時刻tにおける信号値に基づいて、次の時刻t+1における入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に定める論理ゲートが1または複数個組み合わせられることにより構成されるものである。
【0111】
なお、初期データが入力されてから計算結果が出力されるまでの基本的な流れは、
図7にすでに示した通りであり、ステップS200に示されるように、処理回路150は、反転可能論理ゲート処理機能160により、時刻tにおける信号値m
i(t)に基づいて、次の時刻t+1における信号値m
i(t+1)を確率的に定める。ここで、実施形態においては、
図8に代えて、
図11で示される処理に基づいて、
図7のステップS200の処理を行う。
【0112】
ここで、実施形態に係る処理回路150は、式(8)に代えて、以下の式(12)及び式(13)に基づいて信号値の更新を行う。換言すると、処理回路150は、式(12)、式(13)、式(9)及び式(10)に基づいて信号値の更新を行う。
【0113】
【0114】
【0115】
式(12)において、nrnd_i(t)は、式(8)におけるnrndと同様に、乱数の大きさであるが、実施形態においては、定数ではなく、ノードiごとに異なる値をもち、また、時刻tに依存した値となる。また、式(12)の右辺第3項は、ノードiが所定のゲートに含まれる場合にのみ、右辺第3項の評価値が右辺に加算されることを示している。すなわち、式(12)は、右辺第1項及び第2項については式(8)と同様であるが、右辺第3項で与えられる乱数項の大きさが、ノードi及び時刻tによって異なる値を取り得ることを示し、また、所定のゲートに対してのみ当該処理が行われることを示している。
【0116】
また、式(13)は、式(12)の右辺第3項に示されるそのような乱数項の大きさを示したものである。ここで、TINTVLは、所定の時間間隔を、lは、定数を、nrndは、乱数の固定値を示している。すなわち、式(13)は、所定のゲート(Gate k)がinvalid (無効)であり、かつ、時刻tが、所定の時間間隔TINTVLの倍数であるときにのみ、与えられる乱数項の大きさが乱数の固定値nrndに定数lを乗じたものとなり、その他の場合においては、乱数項の大きさは固定値nrndになることを意味する。すなわち、式(13)は、所定のゲートの状態がinvalid(無効)でありかつ、時刻tが、所定の時間間隔TINTVLの倍数であるときにのみ、与えられる乱数項の大きさをその他の場合と異ならせることを意味する。なお、定数lは通常、1より大きな値が選択され、すなわち、所定の論理ゲートの状態がinvalid(無効)でありかつ、時刻tが、所定の時間間隔TINTVLの倍数であるときにのみ、大きな乱数項が与えられる。
【0117】
換言すると、実施形態に係る処理回路150は、所定の論理ゲートの状態がinvalid(無効)でありかつ、時刻tが、所定の時間間隔TINTVLの倍数であるときにのみ、大きな乱数項をノードに与えて反転確率を高めることで、系の状態が局所的な最小エネルギー状態から速やかに脱出できるような処理を行う。尚、どのようなタイミングで、大きな乱数項をノードに与えて反転確率を高めるかが予め決められていれば、必ずしも、所定の時間間隔TINTVLの倍数であるときにのみノードの反転確率を高めなくてもよい。このように、本実施形態においては、入力ノードと出力ノードを含み構成される論理ゲートの状態がvalidである場合に比べて、前記論理ゲートがinvalidである場合には、前記入力値及び出力値の少なくとも一方をより高い確率で反転させる(例えば、入力値が1である場合に、―1に更新する)ために、より大きな乱数値(換言すると、より大きなノイズ)を前記論理ゲートのノードに加える処理を行う。
【0118】
なお、所定の論理ゲートがvalid(有効)か、invalid(無効)かは、例えば当該論理ゲートが満たすべき関係を満たしているか否かによって判定される。すなわち、反転可能論理ゲートが通常の論理ゲートであったと仮定した場合に満たすべき関係を満たしている場合、当該反転可能論理ゲートは有効な状態であり、通常の論理ゲートであったと仮定した場合に満たすべき関係を満たしていない場合、当該反転可能論理ゲートは無効な状態である。一例として、反転可能ANDゲートの場合、入力ノードが「1」及び「1」であり出力ノードが「1」である場合は、当該反転可能ANDゲートは有効な状態であり、入力ノードが「1」及び「0」であり出力ノードが「1」である場合は、当該反転可能ANDゲートは無効な状態である。
【0119】
以上を踏まえ、
図11及び
図12を用いて、実施形態に係る処理回路150が行う処理の流れについて説明する。
【0120】
先に述べたように、式(12)の右辺第1項及び第2項については、信号値の更新の処理に用いられる評価値のうち、乱数項以外の部分については、
図8の場合と共通の処理が行われる。すなわち、ステップS210において、処理回路150は、第1評価値生成機能161により、式(12)の右辺第1項及び第2項を評価することにより、回路全体のハミルトニアンのうち各ノードについての寄与である第1の評価値を算出する。
【0121】
ここで、実施形態においては、式(13)において、tがTINTVLの倍数であるときのみ式(13)の左辺の値がnrndと異なることとなることからもわかるように、処理回路150は、反転可能論理ゲート処理機能160により、入力ノード及び出力ノードのうちの少なくとも一方に与える乱数値の大きさnrndが固定されている第1の動作モードと、入力ノード及び出力ノードのうちの少なくとも一方に与える乱数値の大きさnrnd_i(t)が入力ノード及び出力ノードのうちの一部のノード間(例えば、入力ノード11、12、中間ノード14及び出力ノード13のうちの一部のノード間)で満たすべき関係に基づいて変化する第2の動作モードとを切り替えながら、信号値miを確率的に更新する。
【0122】
一例として、処理回路150は、反転可能論理ゲート処理機能160により、一定の時間周期TINTVLで第2の動作モードにて信号値miを確率的に更新し、第2の動作モードで動作する時刻以外の時刻においては、第1の動作モードにて信号値miを確率的に更新する。
【0123】
すなわち、ここでの第2の動作モードは、計算結果が局所的な低エネルギー状態に捕らわれてしまうのを防止する利点がある一方で、第2の動作モードの作動頻度が多すぎてしまうと、計算結果の収束という点では悪影響を及ぼす可能性がある。従って、実施形態に係る処理回路150は、信号値の更新ごとに毎回第2の動作モードを作動させるのではなく、一定の時間周期TINTVLでのみ、第2の動作モードを作動させることもできる。典型的には、例えばTINTVL=6やTINTVL=10の値が選択される。
【0124】
すなわち、ステップS215において、処理回路150は、反転可能論理ゲート処理機能160により、乱数の大きさをゲートごとに変化させる第2の動作モードを作動させるか否かを判定する。一例として、処理回路150は、反転可能論理ゲート処理機能160により、一定の時間周期T
INTVLごとにのみ、第2の動作モードを作動させる。一例として、処理回路150は、反転可能論理ゲート処理機能160により、時刻tがT
INTVLの整数倍である時には(ステップS215 Yes)、処理はステップS500に進み、処理回路150は、ステップS510~ステップS540の処理を行う(第2の動作モード)。一方、処理回路150は、反転可能論理ゲート処理機能160により、時刻tがT
INTVLの整数倍以外の場合には(ステップS215 No)、処理はステップS216に進み、処理回路150は、ステップS220の処理を行う(第1の動作モード)。ステップS220の処理については、
図8ですでに説明した処理と同様であるので、重ねての説明は省略する。
【0125】
続いて、第2の動作モードの処理について、
図12を適宜参照しながら説明する。はじめに、ステップS510において、処理回路150は、第2評価値生成機能162の対象ゲート判定機能162aにより、ステップS520~540の処理を行う論理ゲートを抽出する。ここで、一例として、
図12において、処理回路150は、対象ゲート判定機能162aにより、例えば抽出範囲32で示した範囲にある所定の反転可能論理ゲートを、ステップS520~540の処理を行う論理ゲートとして抽出する。また、別の例として、処理回路150は、対象ゲート判定機能162aにより、全てのゲートを、ステップS520~540の処理を行う論理ゲートとして抽出してもよい。更にまた、ステップS210を行う時点で、抽出したゲートについて、各ノードの信号値を真理値表と照合することが既に行われている場合は、ステップS520は、省略することもできる。かかる場合、S530における処理は、ステップS210で照合した結果に応じて、異なる値の乱数部係数を定めることになる。
【0126】
続いて、ステップS520において、処理回路150は、有効状態判定機能162bにより、ステップS510において抽出された反転可能論理ゲートについて、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係を満たしているかを判定する。一例として、処理回路150は、有効状態判定機能162bにより、ステップS510において抽出された反転可能論理ゲートについて、反転可能論理ゲートが通常の論理ゲートであると仮定した場合の、論理ゲートがノード間で満たすべき関係を満たしているかを判定する。すなわち、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係は、例えば、論理ゲートが満たすべき関係に基づいて定まる。尚、反転可能論理ゲートについて、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係を満たしているかを判定する代わりに、当該反転可能論理ゲートを構成するすべての入力ノードと出力ノード間で満たすべき関係を満たしているかどうかを判定してもよい。
【0127】
より具体的な処理としては、処理回路150は、有効状態判定機能162bにより、ステップS510において抽出した論理ゲートについて、各ノードの信号値を、真理値表(truth table)と照合し、真理値表と一致していた場合、論理ゲートが満たすべき関係を満たしており、有効(valid)であると判定する。一方、処理回路150は、有効状態判定機能162bにより、ステップS510において抽出した論理ゲートについて、各ノードの信号値を、真理値表(truth table)と照合し、真理値表と一致しない場合、論理ゲートが満たすべき関係を満たしておらず、無効(invalid)であると判定する。
【0128】
一例として、
図12において、抽出範囲32に含まれるノード31に係るゲートが反転可能ANDゲートの場合、入力ノードが「1」及び「1」であり出力ノードが「1」である場合は、処理回路150は、有効状態判定機能162bにより、有効状態判定部33として、当該反転可能ANDゲートは有効であると判定する。また、ノード31に係るゲートが反転可能ANDゲートの場合であって、入力ノードが「1」及び「0」であり出力ノードが「1」である場合は、処理回路150は、有効状態判定機能162bにより、有効状態判定部33として、当該反転可能ANDゲートは無効であると判定する。
【0129】
なお、先に述べたように、ここでいう「入力ノード及び出力ノードのうちの一部のノード」とは、処理回路150を構成するいずれかの反転可能論理ゲート10の入力ノード及び出力ノードのうちの一部のノードを意味する。従って、例えば
図2の反転可能乗算回路15の場合、中間ノード14等においても、いずれかの反転可能論理ゲートの入力ノードまたは出力ノードとなっているノードであるので、ここでいう「入力ノード及び出力ノードのうちの一部のノード」に含まれる。
【0130】
続いて、ステップS530において、処理回路150は、乱数部係数決定機能162cにより、ステップS520で判定した結果に応じて、異なる値の乱数部係数nrnd_i(t)を算出する。一例として、処理回路150は、乱数部係数決定機能162cにより、ステップS520で各ノードの信号値を真理値表と照合した結果に基づいて、異なる値の乱数部係数nrnd_i(t)を算出する。具体的には、処理回路150は、乱数部係数決定機能162cにより、ステップS520において無効と判定した論理ゲートに係るノードに関しては、式(13)の上段の値を適用し、固定値nrndに、定数lを乗じた値を、乱数部係数nrnd_t(t)として算出する。一方、処理回路150は、乱数部係数決定機能162cにより、ステップS520において有効と判定した論理ゲートに係るノードに関しては、式(13)の下段の値を適用し、固定値nrndを、乱数部係数nrn_i(t)として算出する。
【0131】
なお、定数lの値は、通常1より大きな値が用いられる。この場合、処理回路150は、乱数部係数決定機能162cにより、入力ノード及び出力ノードにおける信号値が、論理ゲートの満たすべき真理値表と一致しない場合、真理値表と一致する場合と比較して大きな乱数値を入力ノード及び出力ノードのうちの少なくとも一方に与える。
【0132】
続いて、ステップS540において、処理回路150は、乱数生成機能162dにより、式(12)の右辺第3項に示される乱数ri(t)を生成する。続いて、処理回路150は、第2評価値生成機能162により、ステップS230で与えられた乱数部係数nrnd_i(t)に、乱数ri(t)を乗じて式(12)の右辺第3項である第2の評価値を算出する。
【0133】
続いて、ステップS230において、処理回路150は、評価値加算機能163により、式(12)の右辺第1項と右辺第2項の和である第1の評価値と、式(12)の右辺第3項である第2の評価値を加算して、関数I
i(t+1)の値を生成する。続いて、処理回路150は、ノードデータ更新機能164により、生成された関数I
i(t+1)の値に基づいて、式(9)及び式(10)に基づいて、i番目のノードにおける信号値m
i(t)を更新する。このように、
図12に示されるように、ノードデータ更新機能164としてのスピン状態反転部34は、有効状態判定部33から取得した情報に基づいて、抽出範囲32に含まれるノードにおける信号値m
i(t)の値を更新する。
【0134】
以上のように、処理回路150は、反転可能論理ゲート処理機能160により、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係に基づいて、信号値mi(t)の制御を行う。すなわち、処理回路150は、反転可能論理ゲート処理機能160により、入力ノード及び出力ノードのうちの一部のノード間で満たすべき関係に基づいて、入力ノード及び出力ノードのうちの少なくとも一方に与える乱数値の大きさnrnd_i(t)を定めることにより、信号値mi(t)を確率的に更新する。具体的には、処理回路150は、入力ノード及び出力ノードにおける信号値mi(t)に基づいて定められた評価値と、乱数値の大きさnrnd_i(t)に基づいて生成された乱数との和に基づいて、入力ノード及び出力ノードのうちの少なくとも一方における信号値を確率的に更新する。
【0135】
なお、実施形態は、これに限られない。実施形態では、ステップS520における、ノード間で満たすべき関係を満たしているかを判定する処理を行う場合において、ノードの信号値について論理ゲート単位で判定を行う場合について説明した。しかしながら、実施形態はこれに限られず、ステップS520において、処理回路150は、第2評価値生成機能162により、複数の論理ゲートのブロック単位で、ノード間で満たすべき関係を満たしているかを判定してもよい。
【0136】
図13及び
図14に、実施形態に係る処理回路150が行った方法の性能が示されている。
図13及び
図14は、因数分解問題において、因数分解をすべき数の出力ビット幅を変化させたときの、比較手法と実施形態に係る手法とにおいて、それぞれ3200サイクルの計算を行った時の、収束確率P
CONV(
図13)及び正解に達した確率P
SOLN(
図14)を示したものである。
【0137】
ここで、グラフ40及びグラフ41は、比較例を示すものであり、グラフ42及びグラフ43は、実施形態に係る手法を示したものである。
【0138】
グラフ40は、
図8に示される手法を用いて計算を行ったものであり、グラフ41は、
図8のステップS220において、一定の確率でのみ第2の評価値を算出し、その他の場合、第2の評価値をゼロとして計算を行ったものである。また、グラフ42及びグラフ43は、いずれも
図11に示される手法を用いて計算を行ったものであるが、ステップS215において、第2の動作モードを作動させる時間間隔が異なる。すなわち、グラフ42に係る計算においては、処理回路150は6サイクルごとに第2の動作モードを作動させたのに対して、グラフ43に係る計算においては、処理回路150は10サイクルごとに第2の動作モードを動作させた。
【0139】
図13を見ると、実施形態に係る方法においては、比較例に係る方法と比較して、計算結果の収束性が大きく改善していることがわかる。また、
図14を見ると、実施形態に係る方法においては、比較例に係る方法と比較して、正しい結果が得られる確率が大きく改善していることがわかる。
【0140】
以上説明した少なくとも1つの実施形態によれば、逆問題を解くことのできる回路において性能を向上させることができる。
【0141】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、実施形態同士の組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0142】
150 処理回路
151 データ入力機能
152 入力ノードデータ保持機能
153 中間ノードデータ保持機能
154 出力ノードデータ保持機能
155 データ出力機能
160 反転可能論理ゲート処理機能
161 第1評価値生成機能
161a ハミルトニアン係数保持機能
161b ハミルトニアン評価機能
162 第2評価値生成機能
162a 対象ゲート判定機能
162b 有効状態判定機能
162c 乱数部係数決定機能
162d 乱数生成機能
163 評価値加算機能
164 ノードデータ更新機能
165 収束判定機能
166 計算精度算出機能