JP6691297B2 - 情報処理装置、イジング装置及び情報処理装置の制御方法 - Google Patents

情報処理装置、イジング装置及び情報処理装置の制御方法 Download PDF

Info

Publication number
JP6691297B2
JP6691297B2 JP2016138671A JP2016138671A JP6691297B2 JP 6691297 B2 JP6691297 B2 JP 6691297B2 JP 2016138671 A JP2016138671 A JP 2016138671A JP 2016138671 A JP2016138671 A JP 2016138671A JP 6691297 B2 JP6691297 B2 JP 6691297B2
Authority
JP
Japan
Prior art keywords
connection destination
ising
neuron
value
circuit
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
JP2016138671A
Other languages
English (en)
Other versions
JP2018010474A (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 JP2016138671A priority Critical patent/JP6691297B2/ja
Priority to US15/609,767 priority patent/US11275995B2/en
Publication of JP2018010474A publication Critical patent/JP2018010474A/ja
Application granted granted Critical
Publication of JP6691297B2 publication Critical patent/JP6691297B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06N3/047Probabilistic or stochastic networks
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Description

本発明は、情報処理装置、イジング装置及び情報処理装置の制御方法に関する。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いたイジング装置(ボルツマンマシンと呼ばれる場合もある)がある。イジング装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
イジング装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジング装置に含まれる複数のユニット(ビット)のそれぞれが、他のビットの状態と、他のビットと自身のビットとの結合の強さを示す重み値(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。イジング装置は、たとえば、シミュレーテッド・アニーリングにより、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の最小値が得られる各ビットの状態の組み合わせを、解として求める。
また、大規模な演算を行うために、複数のチップや複数のプロセッサを組み合わせてニューラルネットワークを構築する技術が知られている。この技術として、ニューロンに相当する仮想プロセッサ、シナプスの結合に相当する仮想プロセッサなど複数種類の仮想プロセッサを、複数の実プロセッサに割り当ててニューラルネットを構築する手法がある。また、複数のチップをアレイ状に配置し、配置場所によってニューロンの接続可能数が変わるため、アレイ周辺部とアレイ内部とで異なる回路構成のチップを用いることが提案されている。
特開2001−250102号公報 特開平5−250346号公報 特開平2−306365号公報
C. R. Schneider and H. C. Card, "Analog CMOS Deterministic Boltzmann Circuits", Journal of Solid-State Circuits, pp.907-914, 1993
しかし、複数のチップや複数のプロセッサを接続してニューラルネットワークを構築する従来の技術では、配線の複雑化を招く可能性がある。また、複数種類のプロセッサやチップを用意する手間や工数がかかる。このため、大規模な問題の演算を行うハードウェアを実現することが困難であるという問題があった。
1つの側面では、本発明は、変数が比較的多い大規模な問題の演算を可能とする情報処理装置、イジング装置及び情報処理装置の制御方法を提供することを目的とする。
1つの態様では、共通のバスに接続された複数のイジング装置と、前記複数のイジング装置のそれぞれに設けられ、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第1の値を算出し、前記第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第1の値を更新する複数のニューロン回路と、前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のそれぞれを識別する第1のアドレス情報と、前記複数のイジング装置のうち前記複数の接続先ニューロン回路のうち1つまたは複数を有する第1のイジング装置を識別する第2のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のうち、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1の出力信号の変化時に、前記バスを介して前記第1の接続先ニューロン回路を識別する前記第1のアドレス情報を受信した場合、受信した前記第1のアドレス情報と、予め指定される前記第1のイジング装置を識別する前記第2のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第1の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、前記第1の出力信号の変化を許容する前記第1の接続先ニューロン回路を含む前記第1のイジング装置を識別する前記第2のアドレス情報を指定する制御装置と、を有する情報処理装置が提供される。
また、1つの態様では、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第1の値を算出し、前記第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第1の値を更新する複数のニューロン回路と、前記複数の接続先ニューロン回路のそれぞれを識別する第1のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち1つまたは複数を有する第1のイジング装置を識別する第2のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、前記複数の接続先ニューロン回路のうち、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1の出力信号の変化時に、前記バスを介して前記第1の接続先ニューロン回路を識別する前記第1のアドレス情報を受信した場合、受信した前記第1のアドレス情報と、予め指定される前記第1のイジング装置を識別する前記第2のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第1の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、を有するイジング装置が提供される。
また、1つの態様では、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第1の値を算出し、前記第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第1の値を更新する複数のニューロン回路と、前記複数の接続先ニューロン回路のそれぞれを識別する第1のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち1つまたは複数を有する第1のイジング装置を識別する第2のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、前記複数の接続先ニューロン回路のうち、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1の出力信号の変化時に、前記バスを介して前記第1の接続先ニューロン回路を識別する前記第1のアドレス情報を受信した場合、受信した前記第1のアドレス情報と、予め指定される前記第1のイジング装置を識別する前記第2のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第1の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、をそれぞれが有する前記複数のイジング装置に対して、制御装置が、前記第1の出力信号の変化を許容する前記第1の接続先ニューロン回路を含む前記第1のイジング装置を識別する前記第2のアドレス情報を指定する、情報処理装置の制御方法が提供される。
1つの側面では、変数が比較的多い大規模な問題の演算が可能となる。
第1の実施の形態の情報処理装置の一例を示す図である。 本実施の形態の情報処理装置で実現されるニューラルネットワークのイメージ図である。 第2の実施の形態の情報処理装置の一例を示す図である。 ルータの一例を示す図である。 選択回路部及び接続先情報の一例を示す図である。 選択回路&FF回路部の一部を示す図である。 情報処理装置の動作の一例を示すフローチャートである。 重み値の書き込み時の動作例を示すタイミングチャートである。 シミュレーテッド・アニーリングの様子を示す図である。 第3の実施の形態の情報処理装置の一例を示す図である。 ルータの一例を示す図である。 選択回路部及び接続先情報の一例を示す図である。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の情報処理装置の一例を示す図である。
情報処理装置1は、複数(m個)のイジング装置2a1〜2amと、制御装置3を有している。
たとえば、イジング装置2a1〜2amのそれぞれは、1つの半導体集積回路(チップ)で実現される。イジング装置2a1〜2amは、共通のバス4に接続されている。図1の例では、バス4はデータバス4a、アドレスバス4b、コントロールバス4cを含む。データバス4aではデータが伝搬され、アドレスバス4bでは後述するニューロン回路を識別するアドレス情報が伝搬される。また、コントロールバス4cでは、イジング装置2a1〜2amのうち、出力信号の変化が許容されたニューロン回路を含むイジング装置を識別するアドレス情報が伝搬される。
イジング装置2a1〜2amのそれぞれは、以下のような要素を有している。図1には、イジング装置2akに含まれる要素の例が示されている。
イジング装置2akは、複数(n個)のニューロン回路10a1,10a2,…,10ai,…,10an、メモリ11、ルータ12、ノイズ発生回路13、ランダム信号生成回路14を有している。
ニューロン回路10a1〜10anは、複数の接続先ニューロン回路の出力信号に、接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく値(以下、ローカルフィールド値という)を算出する。
そして、ニューロン回路10a1〜10anは、ローカルフィールド値にノイズ値を加算した値と閾値(たとえば、0)との比較結果に基づき、0または1を出力する。さらに、ニューロン回路10a1〜10anは、接続先ニューロン回路の出力信号の変化時に更新信号を受けると、その更新信号に基づいてローカルフィールド値を更新する。
たとえば、ニューロン回路10a1〜10anは相互接続している。さらに、ニューロン回路10a1〜10anの少なくとも1つは、イジング装置2a1〜2amのうち、イジング装置2ak以外のイジング装置に含まれる1または複数のニューロン回路とも接続している。
ニューロン回路10a1〜10anのそれぞれには、このような接続先ニューロンとの接続の強さを示す重み値が記憶されている。重み値は、たとえば、ニューロン回路10a1〜10anのそれぞれに含まれる記憶部(レジスタまたはメモリ)に記憶されている。
たとえば、ニューロン回路10a1は、ニューロン回路10a2〜10anの出力信号のほか、イジング装置2ak外のイジング装置内の接続先ニューロン回路の出力信号を受け、各接続先ニューロン回路の出力信号の値と、対応する重み値との積の総和を求める。さらにニューロン回路10a1は、この総和に後述するバイアス値を加えることでローカルフィールド値を算出する。さらに、ニューロン回路10a1は、ローカルフィールド値にノイズ値を加えた値が、閾値(たとえば、0)よりも小さいときには、1を出力し、閾値よりも大きいときには、0を出力する。
このようなニューロン回路10a1〜10anを用いることで、イジング型のエネルギー関数の演算をハードウェアで実現できる。なお、イジング型のエネルギー関数E(x)は、たとえば、以下の式(1)で定義される。
Figure 0006691297
右辺の1項目は、全ニューロン回路から選択可能な2つのニューロン回路の全組み合わせについて、漏れと重複なく、2つのニューロン回路の出力信号の値と重み値との積を積算したものである。なお、Wij=Wji、Wii=0である。
右辺の2項目は、全ニューロン回路のそれぞれのバイアス値と出力信号の値との積の総和を求めたものである。bは、ニューロン回路10aiのバイアス値を示している。
このようなイジング型のエネルギー関数において、あるニューロン回路の出力信号を変化させたときのエネルギー値の変化は、そのニューロン回路と他のニューロン回路との間の重み値と、各ニューロン回路の出力値から決めることができる。
たとえば、ニューロン回路10aiの出力信号が変化したときのエネルギーの変化は以下の式(2)で表せる。
Figure 0006691297
式(2)において、ニューロン回路10aiの出力信号の値(以下状態という)xが1のとき、2x−1は1となり、状態xが0のとき、2x−1は−1となる。また、式(2)において、ニューロン回路10aiが関わる結合によって発生するエネルギーを示すローカルフィールド値hは、以下の式(3)のように表すことができる。
Figure 0006691297
式(3)において、右辺の1項目は、ニューロン回路10aiと、ニューロン回路10aiの全接続先ニューロン回路のそれぞれとの間の接続の強さを示す複数の重み値と、接続先ニューロン回路のそれぞれの状態との積の総和を求めたものである。このような演算は、乗算回路や加算回路などを用いて実現できる。
式(2)、式(3)から、ローカルフィールド値hが負で、且つ、2x−1が正のとき、または、ローカルフィールド値hが正で、且つ、2x−1が負のとき、ΔEが負となり、エネルギーが減少する。
ニューロン回路10aiは、状態の変化がエネルギーを減少させる変化であるときに、更新後の状態を出力する。このような判定は、比較回路を用いて実現できる。更新が許容されるニューロン回路は全ニューロン回路からランダムに選択され、同様の処理が繰り返されることで、全体のエネルギーが減少していく。
しかし、単にエネルギーが減少する全ニューロン回路の状態の組み合わせによる解を求めるだけでは、解が最適解ではなく局所解に拘束されると抜け出すことができなくなる。そこで、熱ノイズに相当するノイズ値(乱数値)をローカルフィールド値に加えることで、ある程度エネルギーが高くなる解の変化も可能となり、解が局所解から脱出することが可能となる。ノイズ幅を徐々に小さくすることで、解が最適解へと収束していく。
なお、ニューロン回路10a1〜10anとして、DeGloriaアルゴリズムと呼ばれるアルゴリズムに基づく回路を用いることもできる。DeGloriaアルゴリズムや、ニューロン回路10a1〜10anの回路構成の例については後述する(図3、図10参照)。
メモリ11は、接続先情報11a1,11a2,…,11ai,…,11anを記憶する。接続先情報11a1〜11anでは、複数の接続先ニューロン回路のそれぞれを識別するアドレス情報と、その複数の接続先ニューロン回路のうち1つまたは複数を有するイジング装置を識別するアドレス情報とが対応付けられている。接続先情報11a1〜11anのそれぞれは、ニューロン回路10a1〜10anのそれぞれに対応して記憶されている。
たとえば、接続先情報11a1では、ニューロン回路10a1に接続される接続先ニューロン回路のアドレス情報と、その接続先ニューロン回路を有するイジング装置のアドレス情報とが対応付けられている。
また、接続先情報11a1〜11anには、イジング装置2ak内で用いる複数の接続先ニューロン回路のそれぞれの識別情報(以下ニューロンインデックスと呼ぶ)が、複数の接続先ニューロン回路のそれぞれのアドレス情報に対応付けられていてもよい。
以下では、接続先ニューロン回路のアドレス情報を、内部アドレスと呼び、イジング装置のアドレス情報を、チップアドレスと呼ぶ。なお、内部アドレスは、接続先ニューロン回路を含むイジング装置内で、その接続先ニューロン回路を識別するためのアドレス情報である。内部アドレスやチップアドレスは、たとえば、制御装置3によって、予め図示しないレジスタ(またはメモリ11)に記憶される。
なお、メモリ11としては、たとえば、フラッシュメモリなどの半導体記憶装置を使用することができる。
ルータ12は、複数の接続先ニューロン回路のうち、自身以外(イジング装置2ak以外)のイジング装置に含まれる1つの接続先ニューロン回路の状態の変化時に、アドレスバス4bを介してその接続先ニューロン回路の内部アドレスを受信する。また、ルータ12は、データバス4aを介してその接続先ニューロン回路の状態を受信する。
そして、ルータ12は、受信した内部アドレスと、その接続先ニューロン回路を含むイジング装置のチップアドレスと接続先情報11a1〜11anとに基づき、変化後の状態に基づく更新信号をニューロン回路10a1〜10anの何れかに供給する。たとえば、更新信号は、変化後の状態や、ニューロン回路10a1〜10anにおいて、重み値を選択するために用いられるニューロンインデックス(DeGloriaアルゴリズムと呼ばれるアルゴリズムに基づく回路を用いる場合)などである。
なお、状態の更新を許容する接続先ニューロン回路を含むイジング装置のチップアドレスは、制御装置3で予め指定され、コントロールバス4cを介してルータ12に供給される。そして、そのチップアドレスは、たとえば、ルータ12内の記憶部(図1の例ではモードレジスタ12a)に記憶される。
たとえば、ルータ12は、チップアドレスと内部アドレスを、接続先情報11a1〜11anに含まれるチップアドレス及び内部アドレスと比較する。ルータ12は、各アドレスが、たとえば、ニューロン回路10a1に対応した接続先情報11a1に含まれているときには、接続先ニューロン回路の変化後(更新後)の状態を更新信号として、ニューロン回路10a1に供給する。
また、ルータ12は、ニューロン回路10a1〜10anの何れかの状態が変化したときには、変化後の状態と、状態が変化したニューロン回路のアドレス(内部アドレス)を出力する。出力された内部アドレスと状態は、アドレスバス4bとデータバス4aにより他のイジング装置に伝搬される。
また、ルータ12は、ニューロン回路10a1〜10anのうち、状態が変化したニューロン回路の変化後の状態やニューロンインデックスを、その他のニューロン回路に供給する。
上記のような動作を行うルータ12は、たとえば、比較回路や選択回路などで実現できる。
ノイズ発生回路13は、制御装置3の制御のもと、シミュレーテッド・アニーリングを行うためにノイズ値を出力する。また、ノイズ発生回路13は、たとえば、増幅回路を有している。制御装置3が増幅回路の増幅率を変化させることで、ノイズ値の振幅(ノイズ幅)が制御可能である。なお、ノイズ発生回路13として、たとえば、LFSR(Linear Feedback Shift Registers)などを用いることができる。
ランダム信号生成回路14は、n個のニューロン回路10a1〜10anのうち、状態の更新を許容するニューロン回路を1つランダムに選択するための乱数値を、複数回出力する。一度に1つのニューロン回路の状態の更新を許容することで、計算の収束性が悪化することが抑制される。なお、ランダム信号生成回路14も、ノイズ発生回路13と同様に、たとえば、LFSRを用いて実現可能である。
制御装置3は、イジング装置2a1〜2amのうち、状態の更新を許容するニューロン回路を含むイジング装置のチップアドレスを指定する。制御装置3は、たとえば、イジング装置2a1〜2amをランダムに1つ選択し、そのチップアドレスをコントロールバス4cに供給する。チップアドレスは、コントロールバス4cで伝搬され、イジング装置2a1〜2amによって取り込まれる。
また、制御装置3は、シミュレーテッド・アニーリングを実行するため、ノイズ発生回路13を制御して、ノイズ発生回路13が出力するノイズ値のノイズ幅を、徐々に小さくしていく。
また、制御装置3は、計算対象の問題に応じた重み値やバイアス値を、イジング装置2a1〜2amの各ニューロン回路に設定する。重み値やバイアス値は、たとえば、各ニューロン回路内にあるメモリやレジスタに書き込まれる。
上記のような動作を行う制御装置3は、たとえば、プロセッサで実現できる。プロセッサは、たとえば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサは、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。また、制御装置3は、PC(パーソナルコンピュータ)であってもよい。
なお、制御装置3がプロセッサの場合、プロセッサが実行するOS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及びデータを記憶する不揮発性の記憶装置を設けてもよい。なお、不揮発性の記憶装置としては、たとえば、フラッシュメモリやSSD(Solid State Drive)、HDD(Hard Disk Drive)などが用いられる。
(情報処理装置1の動作例)
以下、制御装置3によって制御される情報処理装置1の動作の一例を説明する。
制御装置3は、イジング装置2a1〜2amに含まれる全ニューロン回路に対して、計算対象の問題に応じて、重み値とバイアス値の設定を行う。たとえば、イジング装置2a1〜2amのそれぞれの内部では、n個のニューロン回路(たとえば、ニューロン回路10a1〜10an)が相互接続可能なように、重み値が設定される。
しかし、イジング装置2a1〜2amに含まれる全ニューロン回路が相互接続するように重み値が設定されていなくてもよい。問題のマッピング時(重み値の設定=プログラミング)時には、全ニューロン回路が相互接続するように重み値を設定しなくても、多くの場合問題なくプログラミングが可能であるためである。
たとえば、イジング装置2akのニューロン回路10a1〜10anに重み値を書き込む場合、制御装置3は、重み値をデータバス4aに供給し、イジング装置2akのチップアドレスをアドレスバス4bに供給する。また、制御装置3は、たとえば、コントロールバス4cで伝搬させるライトイネーブル信号の論理レベルをH(High)レベルに立ち上げる。
このときルータ12は、ライトイネーブル信号を受けると、アドレスバス4bを介して伝搬されているチップアドレスと自身のチップアドレスとを比較する。そして、ルータ12は、両チップアドレスが一致したときに、データバス4aを介して伝搬されている重み値を取り込み、ニューロン回路10a1〜10anに書き込む。
バイアス値についても同様にニューロン回路10a1〜10anに書き込まれる。また、接続先情報11a1〜11anについても同様の処理で、メモリ11に書き込まれる。
また、制御装置3は、全ニューロン回路の状態の初期値を設定する。たとえば、制御装置3は、重み値の書き込み処理と同様に、各ニューロン回路に含まれる、ニューロン回路の状態を保持するレジスタの値に初期値を書き込む。
その後、制御装置3は、状態の更新を許容するニューロン回路を含むイジング装置のチップアドレスを指定する。指定されたチップアドレスは、コントロールバス4cを介してイジング装置2a1〜2amによって取り込まれる。つまり、イジング装置2a1〜2amには同一のチップアドレスが設定される。
以下では、イジング装置2a1のチップアドレスが指定された場合の、イジング装置2akの動作例を説明する。
イジング装置2akのルータ12は、イジング装置2a1のチップアドレスを受信すると、モードレジスタ12aにチップアドレスを記憶する。そして、イジング装置2a1内の1つのニューロン回路の状態が更新されたとき、ルータ12は、イジング装置2a1により出力され、アドレスバス4bを伝搬するそのニューロン回路の内部アドレスを受信する。
そして、ルータ12は、モードレジスタ12aに記憶されたチップアドレスと、受信した内部アドレスと接続先情報11a1〜11anに基づき、そのニューロン回路が、ニューロン回路10a1〜10anの何れかに対する接続先であるか決定する。
たとえば、接続先情報11a1に、状態が更新されたニューロン回路が、ニューロン回路10a1の接続先であることが登録されているとき、ルータ12は、データバス4aを伝搬するイジング装置2a1のニューロン回路の変化後(更新後)の状態を受信する。そして、その変化後の状態に基づく更新信号をニューロン回路10a1に供給する。
これにより、ニューロン回路10a1は、その更新信号に基づく更新が可能となる。
以上のように、本実施の形態の情報処理装置1によれば、イジング装置2a1〜2amのそれぞれが、接続先情報に基づいて、受信した他のイジング装置のニューロン回路の状態の変化を、自身のニューロン回路に反映可能となる。これによって、ニューロン回路間の接続数を増やすことができ、大規模な演算が可能となる。
たとえば、変数の数が10から10以上となるような最適化問題を1チップの集積回路で演算することは難しいが、上記の情報処理装置1によれば、多数のチップを用いて1つのイジング装置として機能させることもできるため、演算が容易になる。
また、イジング装置2a1〜2amは、同じ回路構成で実現可能であり、異なる種類のチップを用意しなくてもよい。また、イジング装置2a1〜2amは、共通のバス4で接続することができるため、異なる2つのイジング装置の間で複数のニューロン回路を配線で接続する場合のように、配線が複雑化することもない。また、接続先情報を書き換えるだけで、ニューロン間接続を変更できる。
図2は、本実施の形態の情報処理装置で実現されるニューラルネットワークのイメージ図である。
図2の例では、8つのニューロン(たとえば、ニューロン16a)が互いに接続されている6つのニューロン部(たとえば、ニューロン部16)が、相互接続されているニューラルネットワークが示されている。
1つのニューロン部は、1つのイジング装置(チップ)に相当し、1つのニューロンは1つのニューロン回路に相当する。
問題のマッピング時(重み値の設定=プログラミング)時にニューロン部間の接続数が制約となるが、たとえば、ニューロン数をn=1024とすると、ニューロン部内での接続数の1/10程度の接続があれば多くの場合問題なくプログラミングが可能である。
たとえば、ニューロン部間の接続数を128個、つまり各ニューロンが他のニューロン部の128個のニューロンと接続可能とすると、1つのニューロン部内で用意すべき重み値の数は、1024+1024×128となる。ニューロン部の数が、たとえば、4のとき、1024×4個のニューロンを相互接続させる場合には、重み値の数は、4.52×10程度になるため、ニューロン部間の接続数を限定することで、用意すべき重み値の数を減らすことができる。つまり、第1の実施の形態のニューロン回路10a1〜10anのレジスタなどに記憶する重み値の数を減らせることで、回路規模を縮小できる。
(第2の実施の形態)
図3は、第2の実施の形態の情報処理装置の一例を示す図である。図3において、第1の実施の形態の情報処理装置1と同一の要素については同一符号が付されている。
第2の実施の形態の情報処理装置1aは、複数(m個)のイジング装置2b1〜2bmと、制御装置3を有している。
たとえば、イジング装置2b1〜2bmのそれぞれは、1つの半導体集積回路(チップ)で実現される。イジング装置2b1〜2bmは、共通のバス4に接続されている。バス4はデータバス4a、アドレスバス4b、コントロールバス4cを含む。
イジング装置2b1〜2bmのそれぞれは、以下のような要素を有している。図3には、イジング装置2bkに含まれる要素の例が示されている。
イジング装置2bkは、複数(n個)のニューロン回路10b1,…,10bi,…,10bn、ノイズ発生回路13、ランダム信号生成回路14、ルータ30を有している。
ニューロン回路10b1〜10bnは、第1の実施の形態のイジング装置2akにおけるニューロン回路10a1〜10anに対応する。ルータ30は、第1の実施の形態のイジング装置2akにおけるルータ12に対応する。第2の実施の形態のイジング装置2bkでは、第1の実施の形態のメモリ11に対応する要素は、後述のように、ルータ30内に含まれているものとしている。
図3では、ニューロン回路10b1〜10bnのうち、ニューロン回路10b1,10bi,10bnの一例が示されている。ニューロン回路10b1〜10bnのうちニューロン回路10b1,10bi,10bn以外のニューロン回路も同様の回路構成となっている。
ニューロン回路10b1,10bi,10bnは、レジスタ20b1,…,20bi,…,20bn、選択回路21b1,21bi,21bnを有している。ニューロン回路10b1,10bi,10bnは、乗算回路22b11〜22b1N,22bi1〜22biN,22bn1〜22bnN、加算部23b1,23bi,23bn、レジスタ24b1,24bi,24bnを有している。さらに、ニューロン回路10b1,10bi,10bnは、加算回路25b1,25bi,25bn、比較回路26b1,26bi,26bn、フリップフロップ27b1,27bi,27bnを有している。
レジスタ20b1,20bi,20bnはそれぞれN個の重み値を記憶している。レジスタ20b1は、重み値W11,W12,…,W1Nを記憶し、レジスタ20biは、重み値Wi1,Wi2,…,WiNを格納し、レジスタ20bnは、重み値Wn1,Wn2,…,WnNを記憶する。N−nが、イジング装置2bk以外の複数のイジング装置の全ニューロン回路のうち、ニューロン回路10b1,10bi,10bnのそれぞれが接続する数となる。
たとえば、レジスタ20biに格納される重み値Wi1〜WiNのうち、重み値Wi1〜Winは、ニューロン回路10b1〜10bnのうち、ニューロン回路10biと、イジング装置2bk内のその他のニューロン回路との接続の強さを示す。
一方、重み値Wi1〜WiNのうち、重み値Win+1〜WiNは、ニューロン回路10biと、イジング装置2bk以外の1つまたは複数のイジング装置に含まれる、N−n個のニューロン回路との接続の強さを示す。
たとえば、n=1024でN=1152であるとき、ニューロン回路10biは、イジング装置2bk以外の複数のイジング装置の全ニューロン回路のうち、128個との接続をもつ。つまり、イジング装置2bk内でのニューロン回路10biに対する接続先ニューロン回路の数よりも、イジング装置2bk以外でのニューロン回路10biに対する接続先ニューロン回路の数が少ない。前述のように、多くの問題の場合、情報処理装置1a内の全ニューロン回路を相互接続しなくても、イジング装置2b1〜2bmにマッピング可能であるためである。
ただ、nや、Nの数は、上記の例に限定されないことは言うまでもない。また、イジング装置2bk外の全てのニューロン回路が、ニューロン回路10b1〜10bnに対する接続先ニューロン回路になるようにNが設定されていてもよい。
なお、上記のような重み値は、制御装置3により、計算対象の問題に応じて設定され、レジスタ20b1〜20bnに書き込まれる。なお、上記のような重み値は、RAM(Random Access Memory)などのメモリに記憶されていてもよい。
ニューロン回路10b1〜10bnは、それぞれ、上記のような重み値を用いて式(3)に示したようなローカルフィールド値を求め、さらにノイズ値を加え、閾値との比較結果を出力するものである。
ニューロン回路10b1〜10bnのうち、状態の更新が許容されるニューロン回路は、ランダム信号生成回路14が出力する乱数値rnによってランダムに決まる。たとえば、乱数値rnは1<rn<nの自然数であり、ニューロン回路10b1〜10bnの内部アドレスに相当する。乱数値rnは、ニューロン回路10b1〜10bnの選択回路21b1〜21bnに選択信号として供給される。そして乱数値rnに応じて、選択回路21b1〜21bnのうち1つが重み値を出力することで、状態の更新が許容されるニューロン回路が決まる。
なお、ランダム信号生成回路14は、たとえば、制御装置3によって制御される。イジング装置2bkがニューロン回路の状態の更新を許容しないイジング装置として設定されているとき(後述のモードレジスタに記憶されるチップアドレスで決まる)、乱数値rnは出力されず、選択回路21b1〜21bnは、重み値を出力しない。
以下、乱数値rnにより、ニューロン回路10biの状態の更新が許容された場合を例にして説明する。
選択回路21biは、レジスタ20biに記憶されている重み値Wi1〜WiNを出力する。
乗算回路22bi1〜22biNのそれぞれは、ルータ30から更新信号として供給されるN個のニューロン回路の状態x〜xの1つと、その1つに対応する重み値Wi1〜WiNの1つとの積を出力する。
たとえば、乗算回路22bi1は、状態xと、重み値Wi1との積を出力し、乗算回路22biNは、状態xと、重み値WiNとの積を出力する。
なお、状態x〜xのうち、状態x〜xは、イジング装置2bk内のニューロン回路10b1〜10bnの状態を示す。また、状態x〜xのうち、状態xn+1〜xは、イジング装置2b1〜2bmのうち、イジング装置2bk以外のイジング装置に含まれるN−n個のニューロン回路の状態を示す。状態xn+1〜xは、後述するルータ30の機能によって取得できる。
加算部23biは、乗算回路22bi1〜22biNが出力する値の総和を出力する。
レジスタ24biは、バイアス値bを記憶する。バイアス値bは、予め制御装置3によって、レジスタ24biに書き込まれる。
加算回路25biは、加算部23biが出力する値と、ノイズ発生回路13が出力するノイズ値と、バイアス値bとの和を出力する。なお、加算部23biが出力する値と、バイアス値bとの和が、前述したローカルフィールド値hである。
比較回路26biは、加算回路25biが出力する値と、閾値(たとえば、0)との比較結果を出力する。
フリップフロップ27biは、比較回路26biでの比較結果を、クロック信号clkに同期して取り込み、状態xとして出力する。なお、クロック信号clkは、たとえば、図示しないクロック信号発生回路から供給される。クロック信号clkは、イジング装置2b1〜2bmで共通のものである。
(ルータ30の一例)
図4は、ルータの一例を示す図である。
ルータ30は、I/F(インターフェース)回路31、モードレジスタ32、メモリ33、選択回路部34、チップアドレスレジスタ35を有している。
I/F回路31は、データバス4a、アドレスバス4b、コントロールバス4cに接続されており、イジング装置2bk内の要素と、データバス4a、アドレスバス4b、コントロールバス4cとの間で情報の送受信を行う。
モードレジスタ32は、イジング装置2b1〜2bmのうち、状態の更新が許容されるニューロン回路を含むイジング装置のチップアドレスを記憶する。このチップアドレスは、制御装置3で指定され、コントロールバス4cで伝搬される。I/F回路31はそのチップアドレスを取得し、モードレジスタ32に供給する。
以下、モードレジスタ32に設定(記憶)されるチップアドレスのイジング装置のモードを、トークモード、それ以外のイジング装置のモードを、リスンモードという。
メモリ33は、接続先情報33a1,…,33ai,…,33anを記憶する。接続先情報33a1〜33anのそれぞれは、ニューロン回路10b1〜10bnのそれぞれに対応して記憶されている。
接続先情報33a1〜33anでは、ニューロン回路10b1〜10bnの接続先ニューロン回路の内部アドレスと、接続先ニューロン回路を有するイジング装置のチップアドレスとが対応付けられている。また、接続先情報33a1〜33anでは、イジング装置2bk内で用いる、接続先ニューロン回路の識別情報であるニューロンインデックスが、接続先ニューロン回路の内部アドレスに対応付けられている。
たとえば、接続先情報33a1では、ニューロン回路10b1に接続される接続先ニューロン回路の内部アドレスと、その接続先ニューロン回路を有するイジング装置のチップアドレスと、ニューロンインデックスとが対応付けられている。
このようなニューロンインデックスを用いることで、他のイジング装置内にある接続先ニューロン回路の状態についても、イジング装置2bk内のニューロン回路10b1〜10bnの状態と同様に扱うことができる。
モードレジスタ32にチップアドレスが設定されると、接続先情報33a1〜33anにおいてそのチップアドレスに対応付けられた内部アドレスと、ニューロンインデックスとが、メモリ33から読み出される。
なお、メモリ33としては、たとえば、フラッシュメモリなどの半導体記憶装置を使用することができる。
選択回路部34は、イジング装置2bkのモードがリスンモードのとき以下の動作を行う。選択回路部34は、I/F回路31がアドレスバス4bを介して受信した内部アドレスが、メモリ33から読み出された内部アドレスと一致した場合には、I/F回路31がデータバス4aを介して受信した接続先ニューロン回路の状態を取り込む。そして、選択回路部34は、その状態の変化に基づき、状態xn+1〜xを更新する。
チップアドレスレジスタ35は、イジング装置2bkのチップアドレスを記憶する。
図5は、選択回路部及び接続先情報の一例を示す図である。
選択回路部34は、選択回路40a1,…,40ai,…,40an、選択回路&FF回路部41を有している。
選択回路40a1〜40anは、I/F回路31が受信した内部アドレスとメモリ33から読み出された内部アドレスとを比較する。そして、選択回路40a1〜40anは、両者が一致した場合には、I/F回路31がデータバス4aを介して受信した接続先ニューロン回路の状態と、その内部アドレスに対応付けられたニューロンインデックスとを出力する。
たとえば、メモリ33に、図5に示すような接続先情報33a1が記憶されているとする。接続先情報33a1には、チップアドレスがxのイジング装置に含まれる、内部アドレスが2〜1024のニューロン回路が、ニューロン回路10b1に対する接続先ニューロン回路として登録されている。チップアドレスとしてxがモードレジスタ32に設定(記憶)されたとき、そのチップアドレスに対応付けられた内部アドレスとニューロンインデックスとがメモリ33から読み出される。
このとき、I/F回路31が受信した内部アドレスが、たとえば、2である場合、メモリ33から読み出された内部アドレスの1つと一致する。そこで、選択回路40a1は、I/F回路31がデータバス4aを介して受信した接続先ニューロン回路の出力信号の値と、その内部アドレスに対応付けられたニューロンインデックスであるn+jとを出力する。
選択回路&FF回路部41は、選択回路40a1〜40anが出力した接続先ニューロン回路の状態と、ニューロンインデックスとに基づいて、ニューロン回路10b1〜10bnに供給される状態xn+1〜xを更新する。
図6は、選択回路&FF回路部の一部を示す図である。
選択回路&FF回路部41は、選択回路50,51、フリップフロップ52n+1,…,52n+j,…,52Nを有している。このような要素が、ニューロン回路10b1〜10bnのそれぞれに対応して設けられる。以下では、選択回路50,51、フリップフロップ52n+1〜52Nが、ニューロン回路10b1に対応して設けられた要素であるものとして説明する。
選択回路50は、図5に示した選択回路40a1が出力するニューロンインデックスに基づき、クロック信号clkを、フリップフロップ52n+1〜52Nの何れか1つに供給する。
選択回路51は、図5に示した選択回路40a1が出力するニューロンインデックスに基づき、選択回路40a1が出力する接続先ニューロン回路の状態を、フリップフロップ52n+1〜52Nの何れか1つに供給する。
フリップフロップ52n+1〜52Nは、状態xn+1〜xを保持するとともに、ニューロン回路10b1に状態xn+1〜xを供給する。
たとえば、選択回路40a1が出力するニューロンインデックスがn+jのとき、選択回路50は、フリップフロップ52n+jにクロック信号clkを供給し、選択回路51は、ニューロン状態をフリップフロップ52n+jに供給する。これにより、クロック信号clkに同期して、フリップフロップ52n+jの出力である状態xn+jが更新される。
以上のようなルータ30によって、ニューロン回路10b1〜10bnの接続先ニューロン回路の状態が更新されたときに、その更新がニューロン回路10b1〜10bnに反映可能となる。
なお、図4に示したモードレジスタ32に、たとえば、イジング装置2bkのチップアドレスが設定されたとき(トークモードのとき)、ニューロン回路10b1〜10bnの状態x,…,x,…,xの何れか1つの更新が許容される。状態x〜xは、前述した状態xn+1〜xとともに、更新信号として、ニューロン回路10b1〜10bnに供給される。また、更新が許容されるニューロン回路の内部アドレスとして、ランダム信号生成回路14が出力する乱数値rnが、I/F回路31を介して、アドレスバス4bに伝搬される。さらに、更新が許容されるニューロン回路の状態が、I/F回路31を介して、データバス4aに伝搬される。
(アニール動作例)
以下、制御装置3によって制御される情報処理装置1aの動作(アニール動作)の一例を説明する。
図7は、情報処理装置の動作の一例を示すフローチャートである。
まず、制御装置3は、チップアドレスを、イジング装置2b1〜2bmのそれぞれのレジスタ(たとえば、図4に示したチップアドレスレジスタ35)に設定する(ステップS1)。チップアドレスの設定は、たとえば、スキャンチェーンを用いて実現できる。その場合、チップアドレスレジスタ35は、チップアドレスのビット数に対応した数のスキャンフリップフロップを有する。
さらに、制御装置3により、計算対象の問題に応じた重み値とバイアス値が、イジング装置2b1〜2bmの各ニューロン回路にあるレジスタ(またはメモリ)へ書き込まれる(設定される)(ステップS2)。
図8は、重み値の書き込み時の動作例を示すタイミングチャートである。
イジング装置2bkのニューロン回路10b1〜10bnのレジスタ20b1〜20bnに重み値を書き込む場合、制御装置3は、重み値とイジング装置2bkのチップアドレスとをデータバス4aとアドレスバス4bに供給する。また、制御装置3は、コントロールバス4cで伝搬させるウェイト・ライト・イネーブル信号の論理レベルをHレベルに立ち上げる。
このとき、ルータ30のI/F回路31は、モード・ライト・イネーブル信号の立ち上がり(タイミングt1)に同期して、アドレスバス4bを伝搬するチップアドレスと、チップアドレスレジスタ35に記憶されている自身のチップアドレスとを比較する。
そして、I/F回路31は、両チップアドレスが一致したときに、データバス4aを伝搬する重み値を取り込み、図示しないデータ線を介してレジスタ20b1〜20bnに重み値を書き込む。
バイアス値b〜bについても同様に、ニューロン回路10b1〜10bnのレジスタ24b1〜24bnに書き込まれる。
他のイジング装置のニューロン回路にあるレジスタ(またはメモリ)にも同様にして重み値及びバイアス値が書き込まれる。
次に、制御装置3は、全チップ(イジング装置2b1〜2bn)のニューロン回路の状態を初期化する(ステップS3)。たとえば、制御装置3は、図示しない制御信号線を介して、各ニューロン回路の状態を保持するフリップフロップ(たとえば、図3のフリップフロップ27b1〜27bn)の値をリセットする。
その後、制御装置3は、コントロールバス4cを用いてモードレジスタにチップアドレスを設定することで、イジング装置2b1〜2bnのうちアニール動作を実行させる(トークモードとする)イジング装置(アニールチップ)を1つ選択する(ステップS4)。
アニール動作は、イジング装置に含まれるニューロン回路の状態の更新を許容する動作である。たとえば、あるチップアドレスのイジング装置をアニールチップとする場合、このチップアドレスが、他のイジング装置のモードレジスタ(たとえば、図4のモードレジスタ32)に設定される。たとえば、制御装置3は、イジング装置2b1〜2bnの何れか1つのチップアドレスをランダムに選択してコントロールバス4cに供給する。
選択されたイジング装置では、状態の更新を許容するニューロン回路が1つランダムに選択される(ステップS5)。
以下では、ステップS4の処理にて、イジング装置2bkが選択されたものとして説明する。ステップS5の処理では、図3に示したランダム信号生成回路14が出力する乱数値rnにより、ニューロン回路10b1〜10bnの選択回路21b1〜21bnの何れか1つが重み値を出力する。
たとえば、ニューロン回路10biの選択回路21biが重み値Wi1〜WiNを出力するとき、重み値Wi1〜WiNと、状態x〜xに基づき算出されるローカルフィールド値hにノイズ値を加えた値が閾値より大きいと、状態xは0となる。ローカルフィールド値hにノイズ値を加えた値が閾値より小さいと、状態xは1となる。
ニューロン回路10biの状態xが変化すると、前述したルータ(たとえば、ルータ30)の機能により、ニューロン回路10biの接続先ニューロン回路にその変化が伝わる。
制御装置3は、アニールチップの選択回数が、予め決められた回数cntに達したか否か判定する(ステップS6)。アニールチップの選択回数が、予め決められた回数cntに達していないときは、ステップS4からの処理が繰り返される。
なお、制御装置3は、アニールチップの選択を行うたびに、イジング装置2b1〜2bmに含まれるノイズ発生回路(たとえば、ノイズ発生回路13)を制御して、ノイズ幅を徐々に小さくしていくことで、シミュレーテッド・アニーリングが行われる。
イジング装置2bkにおいて、ノイズ発生回路13は、たとえば、比較回路26b1〜26bnの出力値が1となる確率が、シグモイド関数に従うようなノイズ値を発生する。たとえば、ノイズ発生回路13は、ニューロン回路10biの状態xが1となる確率P(h)が、以下の式(4)の関係になるようなノイズ値を生成する。
Figure 0006691297
式(4)において、Tは、実効温度である。
なお、式(4)に示すような確率P(h)を得るために生成されるノイズ値nsの確率密度関数p(ns)は、以下の式(5)のようになる。
Figure 0006691297
図9は、シミュレーテッド・アニーリングの様子を示す図である。
縦軸はエネルギーEであり、横軸は全ニューロンの出力値の組み合わせqを示している。組み合わせqは、“000…0”から“111…1”まである。図9では、ノイズ幅がW1、W2、W3と小さくなっていくときの、解の収束の様子が示されている。ノイズ幅を小さくしていくことは、式(5)の実効温度Tを小さくしていくことに相当する。
ノイズ幅がW1のとき、解が、局所解(エネルギーが局所的な極小値となる解)qk1,qk2,qk4,qk5となっても、エネルギーが高くなる方向に変化でき、局所解から脱出できる。ノイズ幅が、W2、W3と徐々に小さくなるにつれて、解の変化は制限されていき、最終的に、最適解(エネルギーが最小値となる解)qk3に収束する。
アニールチップの選択回数が、予め決められた回数cntに達したときは、制御装置3は、全ニューロン回路の状態の変化が収束したものと判定して、全ニューロン回路の状態の組み合わせを解として取得し(ステップS7)、アニール動作を終了する。
以上のような第2の実施の形態の情報処理装置1aでは、第1の実施の形態の情報処理装置1と同様の効果が得られる。すなわち、イジング装置2b1〜2bmのそれぞれが、受信した他のイジング装置のニューロン回路の状態を、接続先情報に基づいて自身のニューロン回路に反映可能となる。これによって、ニューロン回路間の接続数を増やすことができ、大規模な演算が可能となる。
また、イジング装置2b1〜2bmは、同じ回路構成で実現可能であり、異なる種類のチップを用意しなくてもよい。また、イジング装置2b1〜2bmは、共通のバス4で接続することができるため、配線が複雑化することもない。
(第3の実施の形態)
図10は、第3の実施の形態の情報処理装置の一例を示す図である。図10において、第2の実施の形態の情報処理装置1aと同一の要素については同一符号が付されている。
第3の実施の形態の情報処理装置1bでは、複数(m個)のイジング装置2c1〜2cmに含まれるニューロン回路の回路構成が、第2の実施の形態の情報処理装置1aと異なっている。
図10には、イジング装置2ckの回路構成の一例が示されている。イジング装置2ckは、ニューロン回路10c1,…,10ci,…,10cn、ノイズ発生回路13、ランダム信号生成回路14、ルータ30aを有している。
ニューロン回路10c1〜10cnは、第1の実施の形態のイジング装置2akにおけるニューロン回路10a1〜10anに対応する。ルータ30aは、第1の実施の形態のイジング装置2akにおけるルータ12に対応する。第3の実施の形態のイジング装置2ckでも、第1の実施の形態のメモリ11に対応する要素は、後述のように、ルータ30a内に含まれているものとしている。
ニューロン回路10c1〜10cnは、DeGloriaアルゴリズムと呼ばれるアルゴリズムに基づき動作する回路である。
図10では、ニューロン回路10c1〜10cnのうち、ニューロン回路10c1,10ci,10cnの一例が示されている。ニューロン回路10c1〜10cnのうちニューロン回路10c1,10ci,10cn以外のニューロン回路も同様の回路構成となっている。
ニューロン回路10c1,10ci,10cnは、レジスタ20c1,20ci,20cn、選択回路21c1,21ci,21cn,22c1,22ci,22cn、乗算回路23c1,23ci,23cnを有している。さらにニューロン回路10c1,10ci,10cnは、加算回路24c1,24ci,24cn、レジスタ25c1,25ci,25cn、加算回路26c1,26ci,26cnを有している。さらにニューロン回路10c1,10ci,10cnは、比較回路27c1,27ci,27cn、XOR回路28c1,28ci,28cn、レジスタ29c1,29ci,29cnを有している。
レジスタ20c1,20ci,20cnは、図3に示したレジスタ20b1,20bi,20bnと同様に、それぞれN個の重み値を記憶している。
選択回路21c1は、ルータ30aから供給される重み値の選択信号udnに基づき、レジスタ20c1に保持されている重み値W11〜W1Nのうち1つを選択して出力する。選択回路21ciは、ルータ30aから供給される選択信号udnに基づき、レジスタ20ciに保持されている重み値Wi1〜WiNのうち1つを選択して出力する。選択回路21cnは、ルータ30aから供給される選択信号udnに基づき、レジスタ20cnに保持されている重み値Wn1〜WnNのうち1つを選択して出力する。
重み値の選択信号udnは、たとえば、更新したニューロン回路の内部アドレス、または前述したような接続先情報33a1〜33anで内部アドレスに対応付けられたニューロンインデックスである。または、重み値の選択信号udnは、その内部アドレスまたはニューロンインデックスに基づいて生成される信号であってもよい。
選択回路22c1〜22cnのそれぞれは、ルータ30aから供給される、接続先ニューロン回路の更新後の状態(0か1)(以下アップデート状態udsという)に基づき、1または−1を選択して出力する。アップデート状態udsが0のときには、選択回路22c1〜22cnは、−1を選択して出力し、アップデート状態udsが1のときには、選択回路22c1〜22cnは、1を選択して出力する。この理由については後述する。
乗算回路23c1は、選択回路21c1が出力する値と、選択回路22c1が出力する値との積を出力する。乗算回路23ciは、選択回路21ciが出力する値と、選択回路22ciが出力する値との積を出力する。乗算回路23cnは、選択回路21cnが出力する値と、選択回路22cnが出力する値との積を出力する。
加算回路24c1は、乗算回路23c1が出力する値と、レジスタ25c1に保持されている値とを加算して出力する。加算回路24ciは、乗算回路23ciが出力する値と、レジスタ25ciに保持されている値とを加算して出力する。加算回路24cnは、乗算回路23cnが出力する値と、レジスタ25cnに保持されている値とを加算して出力する。
レジスタ25c1は、クロック信号clkに同期して、加算回路24c1が出力する値を取り込む。レジスタ25ciは、クロック信号clkに同期して、加算回路24ciが出力する値を取り込む。レジスタ25cnは、クロック信号clkに同期して、加算回路24cnが出力する値を取り込む。レジスタ25c1〜25cnは、たとえば、フリップフロップである。なお、初期値は前述したバイアス値b〜bである。
なお、レジスタ25c1〜25cnに取り込まれた値が、前述したローカルフィールド値h,h,hとなる。
加算回路26c1は、レジスタ25c1が出力する値に、ノイズ発生回路13が出力するノイズ値を加算して出力する。加算回路26ciは、レジスタ25ciが出力する値に、ノイズ発生回路13が出力するノイズ値を加算して出力する。加算回路26cnは、レジスタ25cnが出力する値に、ノイズ発生回路13が出力するノイズ値を加算して出力する。
比較回路27c1は、加算回路26c1が出力する値が、閾値(たとえば、0)より大きいときには0を出力し、閾値より小さいときには1を出力する。比較回路27ciは、加算回路26ciが出力する値が、閾値より大きいときには0を出力し、閾値より小さいときには1を出力する。比較回路27cnは、加算回路26cnが出力する値が、閾値より大きいときには0を出力し、閾値より小さいときには1を出力する。
なお、イジング装置2ckのモードがトークモードのとき、比較回路27c1〜27cnは、ランダム信号生成回路14が出力する乱数値rnによって、ランダムに1つが有効になり他は無効になる。無効になった比較回路は比較動作を行わない。イジング装置2ckがリスンモードのときには、比較回路27c1〜27cnは、全て無効になる。
XOR回路28c1は、比較回路27c1が出力する値と、レジスタ29c1に保持されている値とが、一致しているときはアップデート信号udとして0を出力し、異なるときはアップデート信号udとして1を出力する。XOR回路28ciは、比較回路27ciが出力する値と、レジスタ29ciに保持されている値とが、一致しているときはアップデート信号udとして0を出力し、異なるときはアップデート信号udとして1を出力する。XOR回路28cnは、比較回路27cnが出力する値と、レジスタ29cnに保持されている値とが、一致しているときはアップデート信号udとして0を出力し、異なるときはアップデート信号udとして1を出力する。
レジスタ29c1は、アップデート信号udが1となると、比較回路27c1が出力する値を取り込む。これにより、ニューロン回路10c1の状態xが変化する(更新される)。レジスタ29ciは、アップデート信号udが1となると、比較回路27ciが出力する値を取り込む。これにより、ニューロン回路10ciの状態xが変化する。レジスタ29cnは、アップデート信号udが1となると、比較回路27cnが出力する値を取り込む。これにより、ニューロン回路10cnの状態xが変化する。
全ニューロン回路のうち、一度に状態が更新されるニューロン回路の数は1つであるため、そのニューロン回路の接続先では、元のローカルフィールド値に対して、その更新による変化分を加算または減算すればよい。図10のニューロン回路10c1〜10cnは、接続先ニューロン回路の状態が更新されたときに、元のローカルフィールド値に対して、その更新による変化分を加算または減算することで、ローカルフィールド値を更新している。
たとえば、ニューロン回路10ciに接続されているニューロン回路の状態x(0または1)が、1−xに変化したとき、ニューロン回路10aiのローカルフィールド値hの変化分Δhは、以下の式(6)で表される。
Figure 0006691297
式(6)において、1−2xは、状態xが、0から1に変化したときには、+1となり、1から0に変化したときには、−1となる。
このような1−2xの演算は、図10に示した、選択回路22ciで実現される。また、乗算回路23ciが、選択回路22ciが出力する値に、重み値Wijを掛けることで、ローカルフィールド値hの変化分Δhが算出される。
(ルータ30aの一例)
図11は、ルータの一例を示す図である。図11において、図4に示した第2の実施の形態のルータ30と同一の要素については同一符号が付されている。
ルータ30aの選択回路部34aは、ルータ30の選択回路部34と異なる機能を有する。
選択回路部34aは、イジング装置2ck内のニューロン回路10c1〜10cnから、状態x〜xを受けるとともに、アップデート信号ud〜udを受ける。モードレジスタ32に、イジング装置2ckのチップアドレスが設定されているとき(トークモードのとき)、アップデート信号ud〜udの何れか1つが1となる可能性がある。選択回路部34aは、ニューロン回路10c1〜10cnのうち、アップデート信号ud〜udが1となるニューロン回路の内部アドレスを、選択信号udnとして出力し、そのニューロン回路の状態をアップデート状態udsとして出力する。
たとえば、ニューロン回路10ciが出力するアップデート信号udが1となると、選択回路部34aは、ニューロン回路10ciの内部アドレスであるiを、選択信号udnとして出力し、状態xをアップデート状態udsとして出力する。
アップデート状態udsと、選択信号udnは、イジング装置2ck内のニューロン回路10c1〜10cnに供給されるとともに、I/F回路31によって、データバス4a及びアドレスバス4bを介して他のイジング装置に伝搬される。
また、イジング装置2ckがリスンモードのとき、選択回路部34aは、データバス4a及びアドレスバス4bを介して伝搬される他のイジング装置に含まれるニューロン回路の状態と内部アドレスを、I/F回路31から受ける。
そして、I/F回路31から選択回路部34aが受けた内部アドレスが、メモリ33から読み出された内部アドレスと一致する場合には、受信した内部アドレスのニューロン回路は、ニューロン回路10c1〜10cnの何れかの接続先ニューロン回路である。そのため、選択回路部34aは、受信した接続先ニューロン回路の状態を取り込む。選択回路部34aは、受信した内部アドレスに対応付けられたニューロンインデックスを選択信号udn、接続先ニューロン回路の状態をアップデート状態udsとして、接続先ニューロン回路と接続しているニューロン回路10c1〜10cnの何れかに供給する。
図12は、選択回路部及び接続先情報の一例を示す図である。
図12には、リスンモードの際に機能する選択回路部34aの回路部分の一例が示されている。図12において、図5に示した選択回路部34と同一の要素については同一符号が付されている。
選択回路部34aの選択回路&FF回路部41aは、選択回路部34の選択回路&FF回路部41と異なる機能を有する。
選択回路&FF回路部41aは、選択回路40a1〜40anが出力した接続先ニューロン回路の状態をアップデート状態uds、選択回路40a1〜40anが出力した接続先ニューロン回路のニューロンインデックスを、選択信号udnとして出力する。
以上のようなルータ30aによって、ニューロン回路10c1〜10cnの接続先ニューロン回路の状態が変化したときに、その変化がニューロン回路10c1〜10cnに反映可能となる。
制御装置3によって制御される情報処理装置1bの動作(アニール動作)は、図7に示した情報処理装置1aの動作と同様であるため、説明を省略する。
以上のような第3の実施の形態の情報処理装置1bでも、第2の実施の形態の情報処理装置1aと同様の効果が得られる。
さらに、第3の実施の形態の情報処理装置1bのニューロン回路10c1〜10cnは、ローカルフィールド値の変化分を算出して、その変化分でローカルフィールド値を更新する。そのため、第2の実施の形態の情報処理装置1aのニューロン回路10b1〜10bnよりも、加算回路や乗算回路の数を少なくすることができ、回路面積を小さくできる。
以上、実施の形態に基づき、本発明の情報処理装置、イジング装置及び情報処理装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
1 情報処理装置
2a1〜2am イジング装置
3 制御装置
4 バス
4a データバス
4b アドレスバス
4c コントロールバス
10a1〜10an ニューロン回路
11 メモリ
11a1〜11an 接続先情報
12 ルータ
12a モードレジスタ
13 ノイズ発生回路
14 ランダム信号生成回路

Claims (7)

  1. 共通のバスに接続された複数のイジング装置と、
    前記複数のイジング装置のそれぞれに設けられ、複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第1の値を算出し、前記第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第1の値を更新する複数のニューロン回路と、
    前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のそれぞれを識別する第1のアドレス情報と、前記複数のイジング装置のうち前記複数の接続先ニューロン回路のうち1つまたは複数を有する第1のイジング装置を識別する第2のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、
    前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のうち、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1の出力信号の変化時に、前記バスを介して前記第1の接続先ニューロン回路を識別する前記第1のアドレス情報を受信した場合、受信した前記第1のアドレス情報と、予め指定される前記第1のイジング装置を識別する前記第2のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第1の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、
    前記第1の出力信号の変化を許容する前記第1の接続先ニューロン回路を含む前記第1のイジング装置を識別する前記第2のアドレス情報を指定する制御装置と、
    を有することを特徴とする情報処理装置。
  2. 前記第1のイジング装置に含まれるルータは、前記第1の接続先ニューロン回路の前記第1の出力信号の変化時に、前記第1の出力信号の変化後の値と、前記第1の接続先ニューロン回路を識別する第1のアドレス情報とを、前記バスに供給することを特徴とする請求項1に記載の情報処理装置。
  3. 前記複数のイジング装置はさらに、前記制御装置によって指定される同一の前記第2のアドレス情報を記憶する記憶部を有することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記複数のイジング装置のうち、第2のイジング装置に設けられるメモリに記憶された前記接続先情報において、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1のアドレス情報は、前記第2のイジング装置の内部で用いられる識別情報と対応付けられることを特徴とする請求項1乃至3の何れか一項に記載の情報処理装置。
  5. 前記複数のイジング装置のうち、第3のイジング装置に設けられる複数のニューロン回路に対する複数の接続先ニューロン回路は、前記第3のイジング装置に設けられる複数のニューロン回路のうちの何れかである複数の第2の接続先ニューロン回路と、前記複数のイジング装置のうち、1または複数の第4のイジング装置に設けられる複数の第3の接続先ニューロン回路とを含み、
    前記複数の第2の接続先ニューロン回路の数よりも、前記複数の第3の接続先ニューロン回路の数が少ない、
    ことを特徴とする請求項1乃至4の何れか一項に記載の情報処理装置。
  6. 複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第1の値を算出し、前記第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第1の値を更新する複数のニューロン回路と、
    前記複数の接続先ニューロン回路のそれぞれを識別する第1のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち1つまたは複数を有する第1のイジング装置を識別する第2のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、
    前記複数の接続先ニューロン回路のうち、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1の出力信号の変化時に、前記バスを介して前記第1の接続先ニューロン回路を識別する前記第1のアドレス情報を受信した場合、受信した前記第1のアドレス情報と、予め指定される前記第1のイジング装置を識別する前記第2のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第1の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、
    を有することを特徴とするイジング装置。
  7. 複数の接続先ニューロン回路の出力信号に前記複数の接続先ニューロン回路との接続の強さをそれぞれ示す複数の重み値を掛けた値の総和に基づく第1の値を算出し、前記第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力するとともに、前記出力信号の変化時に更新信号を受けると、前記更新信号に基づいて前記第1の値を更新する複数のニューロン回路と、
    前記複数の接続先ニューロン回路のそれぞれを識別する第1のアドレス情報と、共通のバスに接続された複数のイジング装置のうち前記複数の接続先ニューロン回路のうち1つまたは複数を有する第1のイジング装置を識別する第2のアドレス情報とが対応付けられた接続先情報を、前記複数のニューロン回路のそれぞれに対応して記憶するメモリと、
    前記複数の接続先ニューロン回路のうち、前記第1のイジング装置に含まれる第1の接続先ニューロン回路の第1の出力信号の変化時に、前記バスを介して前記第1の接続先ニューロン回路を識別する前記第1のアドレス情報を受信した場合、受信した前記第1のアドレス情報と、予め指定される前記第1のイジング装置を識別する前記第2のアドレス情報と前記接続先情報とに基づき、前記バスを介して伝搬される前記第1の出力信号の変化後の値に基づく前記更新信号を前記複数のニューロン回路の何れかに供給するルータと、
    をそれぞれが有する前記複数のイジング装置に対して、
    制御装置が、前記第1の出力信号の変化を許容する前記第1の接続先ニューロン回路を含む前記第1のイジング装置を識別する前記第2のアドレス情報を指定する、
    ことを特徴とする情報処理装置の制御方法。
JP2016138671A 2016-07-13 2016-07-13 情報処理装置、イジング装置及び情報処理装置の制御方法 Active JP6691297B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016138671A JP6691297B2 (ja) 2016-07-13 2016-07-13 情報処理装置、イジング装置及び情報処理装置の制御方法
US15/609,767 US11275995B2 (en) 2016-07-13 2017-05-31 Information processing apparatus, ising device, and control method for information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016138671A JP6691297B2 (ja) 2016-07-13 2016-07-13 情報処理装置、イジング装置及び情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2018010474A JP2018010474A (ja) 2018-01-18
JP6691297B2 true JP6691297B2 (ja) 2020-04-28

Family

ID=60941216

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016138671A Active JP6691297B2 (ja) 2016-07-13 2016-07-13 情報処理装置、イジング装置及び情報処理装置の制御方法

Country Status (2)

Country Link
US (1) US11275995B2 (ja)
JP (1) JP6691297B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7068575B2 (ja) * 2018-02-06 2022-05-17 富士通株式会社 最適化システム、最適化装置及び最適化システムの制御方法
JP7014963B2 (ja) * 2018-03-15 2022-02-02 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7093009B2 (ja) * 2018-08-30 2022-06-29 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP6964056B2 (ja) 2018-09-18 2021-11-10 株式会社東芝 計算装置
US11531922B2 (en) 2018-09-27 2022-12-20 Intel Corporation Apparatus and method for scalable qubit addressing
JP7108186B2 (ja) * 2018-11-27 2022-07-28 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7208529B2 (ja) 2019-05-29 2023-01-19 富士通株式会社 最適化装置及び最適化方法
JP7051771B2 (ja) 2019-09-09 2022-04-11 株式会社東芝 計算装置、計算方法およびプログラム
JP7314014B2 (ja) 2019-10-08 2023-07-25 株式会社東芝 探索装置、探索方法、プログラム、探索システムおよび裁定取引システム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68927474T2 (de) 1988-12-29 1997-05-22 Sharp Kk Neuro-Rechner
JPH0782482B2 (ja) 1989-05-19 1995-09-06 シャープ株式会社 ニューロコンピュータの負荷配分方法
JPH05250346A (ja) 1992-03-04 1993-09-28 Nec Corp ニューラルネットワークシミュレーション装置
JP4088398B2 (ja) 2000-03-08 2008-05-21 独立行政法人科学技術振興機構 時間符号化装置
JP5922203B2 (ja) * 2014-08-29 2016-05-24 株式会社日立製作所 半導体装置
JP6503072B2 (ja) * 2015-09-02 2019-04-17 株式会社日立製作所 半導体システムおよび計算方法
JP6659957B2 (ja) * 2016-06-06 2020-03-04 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法

Also Published As

Publication number Publication date
JP2018010474A (ja) 2018-01-18
US20180018563A1 (en) 2018-01-18
US11275995B2 (en) 2022-03-15

Similar Documents

Publication Publication Date Title
JP6691297B2 (ja) 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6659957B2 (ja) 情報処理装置、イジング装置及び情報処理装置の制御方法
US9785886B1 (en) Cooperative execution of a genetic algorithm with an efficient training algorithm for data-driven model creation
US20200210847A1 (en) Ensembling of neural network models
JP6468254B2 (ja) 情報処理装置、イジング装置及び情報処理装置の制御方法
US11853893B2 (en) Execution of a genetic algorithm having variable epoch size with selective execution of a training algorithm
KR102486030B1 (ko) 완전연결층 신경망 정방향 연산 실행용 장치와 방법
JP5864684B1 (ja) 半導体装置
Liu et al. Data-flow graph mapping optimization for CGRA with deep reinforcement learning
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7068575B2 (ja) 最適化システム、最適化装置及び最適化システムの制御方法
JP6935356B2 (ja) 半導体装置、情報処理システム、および情報処理方法
JP2018173843A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2008310700A (ja) 演算処理装置及び方法
JP6841722B2 (ja) 情報処理装置
CN106547515A (zh) 用于执行算术运算的方法和处理设备
US20180247691A1 (en) Semiconductor device and information processing device
JP2017182320A (ja) 機械学習装置
JP6643905B2 (ja) 機械学習方法および機械学習装置
JP2021157361A (ja) 最適化装置及び最適化方法
JP2019071119A (ja) 情報処理装置、イジング装置及び情報処理装置の制御方法
JP7256378B2 (ja) 最適化システムおよび最適化システムの制御方法
JPH0844550A (ja) プログラム作成装置及びプログラム作成方法
US10795404B2 (en) Information processing acceleration control system
JP7193708B2 (ja) 最適化装置及び最適化装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190416

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200219

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: 20200310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200323

R150 Certificate of patent or registration of utility model

Ref document number: 6691297

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150