(57)【特許請求の範囲】
【請求項１】
可変な抵抗値をとりうる２個以上の可変抵抗素子が共通ビット線で接続され、
入力データから入力信号を生成し、上記可変抵抗素子に印加する入力信号生成回路と、
共通ビット線に流れる電流を検出する検出回路と、
入力データに対応する教師信号と検出回路の出力の差分を出力する差分回路と、
ニューラルネットワークの学習アルゴリズムを実行し、重み更新量を各素子のコンダクタンス変化量に変換する学習制御回路と、
上記可変抵抗素子のコンダクタンスを上記学習制御回路で算出した分だけ変化させるための信号を生成する書き込み信号生成回路と、
予め定めた選別条件によって一部の可変抵抗素子を選択する選択回路から構成されるニューロモルフィック回路において、
コンダクタンス変化量に基づく書き込み信号を印加した後、選択回路によって選択された一部の素子にさらなる書き込み信号を印加した後、
入力信号を全ての抵抗変化素子に再入力し、検出回路の出力と教師信号の差分の変化から
学習を継続するか、停止するかを判定する判定機構を具備してなるニューロモーフィック回路。
【請求項２】
前記選択回路における選別条件は、重み更新量の絶対値をもとに算出された閾値によって選別することを特徴とする請求項１記載のニューロモーフィック回路。
【請求項３】
前記選択回路における選別条件は、入力データの絶対値をもとに算出された閾値によって選別することを特徴とする請求項１記載のニューロモーフィック回路。
【請求項４】
前記閾値は、共通ビット線に接続される素子総数に対して、一定の割合で素子が選別される様に決定することを特徴とする請求項２乃至３記載のニューロモーフィック回路。
【請求項５】
前記閾値は学習の進行に対して変動させることを特徴とする、請求項２乃至３記載のニューロモーフィック回路。
【請求項６】
第一の方向に配設される２本以上の前記共通ビット線で構成され、複数の共通ビット線上で端部から同じ位置に配置される複数の可変抵抗素子は、共通ビット線と異なる第二の方向に配設されるワード線によって相互に接続され、前記選択回路は各々の共通ビット線の単位で追加的書き込み信号印加処理を順次実施することを特徴とする、請求項１記載のニューロモーフィック回路。
【請求項７】
第一の方向に配設される２本以上の前記共通ビット線で構成され、複数の共通ビット線上で端部から同じ位置に配置される複数の可変抵抗素子は、共通ビット線と異なる第二の方向に配設されるワード線によって相互に接続され、前記選択回路は各々の共通ビット線の単位で追加的書き込み信号印加処理を順次実施することを特徴とする、請求項２乃至５記載のニューロモーフィック回路。
【請求項８】
請求項７記載のニューロモーフィック回路において、
前記閾値を共通ビット線毎に異なる値を設定することを特徴とするニューロモーフィック回路。
【請求項９】
前記判定機構は、追加書き込み信号を印加した後、差分の変動量が正の場合にはさらに追加の書き込み信号を印加し、負の場合には逆の方向に抵抗を変化させるための書き込み信号を印加することを特徴とする、請求項１乃至８記載のニューロモーフィック回路。
【請求項１０】
複数の可変抵抗素子で構成されるニューロモーフィックアレイにおいて、ニューラルネットワークの学習を行うステップと、ニューラルネットワークの重みの更新量をニューロモーフィックアレイの各可変抵抗素子のコンダクタンスの変化量に変換するステップと、変換したコンダクタンス変化量に基づく書き込み信号をニューロモーフィックアレイに印加するステップと、さらに一部の素子を選択するステップと選択した素子に対してのみ追加的な書き込み信号を印加するステップと、改めて学習データをニューロモーフィックアレイに入力し、その教師信号との差分によって当該学習サイクルの終了を判定するステップと、を備える、ニューロモーフィックアレイの学習方法。
【請求項１１】
可変な特性の値に応じた重みを信号に乗算するニューロモーフィック素子を含むニューロモーフィックアレイにおいて、ニューラルネットワークの学習を行うステップと、ニューラルネットワークの重みの更新量をニューロモーフィックアレイ素子のコンダクタンスの変化量に変換するステップと、変換したコンダクタンス変化量に基づく書き込み信号をニューロモーフィックアレイに印加するステップと、さらに一部の素子を選択するステップと、選択した素子に対してのみ追加的な書き込み信号を印加するステップと、改めて学習データをニューロモーフィックアレイに入力し、その教師信号との差分によって当該学習サイクルの終了を判定するステップと、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューロモーフィック素子を含むアレイの重み更新に関する制御装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、ニューラルネットワークの技術が検討されている。
深層学習をはじめ、ニューラルネット技術を用いた高度な情報の識別技術、分類技術が金融、マーケティング、認証、セキュリティなどの広い分野で実用化されている。このような技術では、膨大な量の積和演算が必要であり、クラウドサーバあるいは巨大な計算機を用いて実行される場合が多い。【０００３】
近年、アナログ的にコンダクタンス、あるいは抵抗値を変化させることが可能なニューロモーフィック（Ｎｅｕｒｏｍｏｒｐｈｉｃ）素子を利用して、上述の積和演算を低電力で高速に実行可能な新たな演算機構が研究されている。これらは、人間の脳の認識プロセスにおけるニューロンとシナプスの関係を模倣することで低消費電力、高速な信号処理を実現しようとするもので、ニューラルネットワークの構造をスタティックなネットワークモデルとして模倣する技術、あるいは、スパイク信号のタイミングからニューロンの発火モデルを実現しようとする技術など、幅広い研究が行われている。【０００４】
この分野における、ニューロモーフィック素子の例を説明する。例えば、結晶と非晶質との相変化を段階的に制御するＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）を使用する素子や電気化学的反応により金属析出とイオン化との間のパスの形成および消滅を利用するＣＢＲＡＭ（Ｃｏｎｄｕｃｔｉｖｅ  Ｂｒｉｄｇｅ  ＲＡＭ）を使用する素子などがある。
また、他の例として、スピントロニクス（Ｓｐｉｎｔｒoｎｉｃｓ）を使用する素子も用いられている。例えば、磁壁の制御による線形的なコンダクタンス変化を発生させるドメインウォール型、あるいは、スピン軌道トルク作用による磁化反転を使用したＳＯＴ（Ｓｐｉｎ  Ｏｒｂｉｔ  Ｔｏｒｑｕｅ）型の素子の研究が進められている。
さらに他のニューロモーフィック素子の例としては、ＴａＯ２等の媒体の界面の酸素欠陥濃度を利用するＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用する素子があげられる。【０００５】
ニューロモーフィック素子は特に推論機能を実行するアナログハードウェア基盤として研究されてきたが、その様な中、ニューロモーフィック素子を複数アレイ状に配置したニューロモーフィックアレイで、従来コンピュータ上の演算で行ってきたニューラルネットワークの学習自体を実行するための研究も始まっている。一例として、特許文献１では、スパイク型のニューラルネットワークにおいて、同一ビット線に接続される複数の素子のコンダクタンスを各素子に同時印加した際の入力と出力の電位差によって、一括して各々の素子のコンダクタンスを更新する、つまりニューラルネットワークシステムの学習手法が開示されている。（引用文献１参照。）。【０００６】
ニューラルネットワークの学習では一般的に勾配降下法などの方法が用いられる。勾配降下法は出力と教師データの差分から、ニューラルネットワークの各ノードを結合するシナプス重み（以下、単に重みという）に対する変更量を計算することを繰り返し実行することで、最終的に入力データに対するニューラルネットワークの出力が教師データに一致する様にニューラルネットの重みを最適化する手法である。より詳細には、下記式（１）〜（５）に示すように、ニューラルネットの出力と教師信号の差分を、ニューラルネットの重みで偏微分した結果が０になる様に重みを更新していく。【０００７】
式（１）を計算し、Δｗを求める。第一項は、式（２）で表せる。第二項は、活性化関数がＲＥＬＵの場合、式（３）で表せる。第三項の変数ｖは、ｗの多項式であるから、その偏微分は、式（４）で表せる。以上の結果を基に、Δｗを式（５）で算出する（ρは、学習率を表す係数である）。【０００８】
【数１】
0006881693.tif 000002
【０００９】
【数２】
0006881693.tif 000003
【００１０】
【数３】
0006881693.tif 000004
【００１１】
【数４】
0006881693.tif 000005
【００１２】
【数５】
0006881693.tif 000006
【００１３】
この学習アルゴリズムをニューロモーフィック素子で構成されたニューロモーフィックアレイに適用する場合は、ニューラルネットワークで計算した重みの更新量から、素子のコンダクタンスの更新量に換算する。そして、重み更新量に相当するコンダクタンス変化を素子に与えるために書き込み信号を素子に印加する。しかしながら、一般に素子のコンダクタンス変化を全く均一に製造することは困難であり、そのためコンダクタンス変化量が正しく素子のコンダクタンスの実際の値に反映されるとは限らない。アレイを構成する素子数が少ない場合は、書き込み信号を印加した後に、素子毎にコンダクタンスを測定しコンダクタンス値を微調整することで、素子のコンダクタンスを精度よく決定することができる。しかしながら、一般的にニューラルネットの各層のサイズは１００個×１００個、あるいはそれ以上の規模になり、この様な手法は現実的ではない。先行例に示す様な一括書き換えなどの手法はこの様な背景の下で提案されたものである。【００１４】
この様に、ニューロモーフィック素子でニューラルネットワークを実行する場合における課題の一つとして、素子のばらつきがあげられる。素子のばらつきには、例えばアレイを構成した場合の各素子間のコンダクタンスばらつきや、読出し再現性ばらつき、あるいは、同一素子内の各ステップにおけるコンダクタンスの非線形性、非対称性ばらつきなどがあげられる。これらのばらつきは、コンピュータ上で計算されるニューラルネットワークでは通常考慮されていないため、ニューラルネットをこの様な素子によるアレイで実現しようとすると、多くの課題が生じる。特に、識別性能に対して重要な影響を与える学習アルゴリズムにおいて深刻な影響を与える可能性がある。例えば、素子が正確な重みを反映していないことによる識別性能低下、あるいは、学習アルゴリズムの実行において学習収束までに時間がかかる、あるいは、学習アルゴリズムが収束しないなどの問題が発生する。【００１５】
再現性が高い、スタティックなばらつきは、ニューラルネットワークの重みの、コンダクタンスへの割り当て方法などで補正する方法があるが、ダイナミックなばらつき、つまり、一回のコンダクタンス変化操作の単位での変動は、その様な手法での回避が困難である。この様な現象は、例えば、フィラメント形成型の素子（ＣＢＲＡＭ）などでは、抵抗変化のために与えた電界エネルギーに対して原子間ポテンシャルが離散的な値をとることにより、フィラメントの形成状態が次のステップのコンダクタンス状態との境界領域付近にとどまってしまうなどの状態がありえる。また、磁気抵抗変化素子を用いた応用例では、磁性膜の磁気ポテンシャル変動によって生じるトラップサイトによって、本来移動させたい磁壁位置目標よりも手前の位置で磁壁が停止し、コンダクタンスが本来変動させたい目標値から外れてしまうなどの現象が上げられる。【００１６】
上述のように、素子のコンダクタンスばらつきがあるために、重み更新量と素子のコンダクタンス変化量（離散ステップ）から計算したコンダクタンス変化量を期待する書き込み信号を素子に印加しても、学習アルゴリズムが期待するコンダクタンス値から変動してしまう。その結果、コンダクタンス変化範囲内の同一ステップ位置では本来同じコンダクタンス値を持つことが求められるのに対し、実際の素子のコンダクタンスは、ばらつきを持つことになる。つまり、アルゴリズムから計算されたコンダクタンスの目標値からずれた状態になる。これは学習アルゴリズムの収束性やオプティマイザと呼ばれる最適化処理の動作や局所最適解リスクを回避するための正則化処理などの機構に悪影響を及ぼす。最悪の場合、学習アルゴリズムが破綻し、発散するなどの現象が起きる。これらの状況に鑑み、本発明はなされるものである。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２０１５−１９５０１１号
【特許文献２】特許６２９３９６３号
【発明の概要】
【発明が解決しようとする課題】
【００１８】
ニューロモーフィック素子からなるニューロモーフィックアレイでニューラルネットワークの学習アルゴリズムを実行する場合、当該ニューロモーフィック素子の素子ばらつき、変動に起因して、学習性能が低下する、あるいは学習アルゴリズム自体が機能しない問題があった。また、現実的に製造されるニューロモーフィック素子を想定したニューラルネットワークの学習方法、最適化制御等については、今まで十分に検討されていなかった。【００１９】
本発明は、このような事情を考慮してなされたもので、ニューロモーフィックアレイによるニューラルネットワークの学習アルゴリズムを効率的、安定的に実行させることができるニューロモーフィック素子を含むアレイの制御装置、素子のコンダクタンス変化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の一態様は、可変な抵抗値をとりうる２個以上の可変抵抗素子が共通ビット線で接続され、入力データから入力信号を生成し、上記可変抵抗素子に印加する入力信号生成回路と、共通ビット線に流れる電流を検出する検出回路と、入力データに対応する教師信号と検出回路の出力の差分を出力する差分回路と、ニューラルネットワークの学習アルゴリズムを実行し、重み更新量を各素子のコンダクタンス変化量に変換する学習制御回路と、上記可変抵抗素子のコンダクタンスを上記学習制御回路で算出した分だけ変化させるための信号を生成する書き込み信号生成回路と、予め定めた選別条件によって一部の可変抵抗素子を選択する選択回路から構成されるニューロモルフィック回路において、コンダクタンス変化量に基づく書き込み信号を印加した後、選択回路によって選択された一部の素子にさらなる書き込み信号を印加した後、入力信号を全ての抵抗変化素子に再入力し、検出回路の出力と教師信号の差分の変化から学習を継続するか、停止するかを判定する判定機構を具備してなるニューロモーフィック回路である。【００２１】
本発明の一態様は、上述の選択回路における選別条件は、重み更新量の絶対値をもとに算出された閾値によって選別する。
本発明の一態様は、上述の選択回路における選別条件は、入力データの絶対値をもとに算出された閾値によって選別する。
本発明の一態様は、上述の閾値は、共通ビット線に接続される素子総数に対して、一定の割合で素子が選別される様に決定する。
本発明の一態様は、上述の閾値は学習の進行に対して変動させる。
本発明の一態様は、第一の方向に配設される２本以上の前記共通ビット線で構成され、複数の共通ビット線上で端部から同じ位置に配置される複数の可変抵抗素子は、共通ビット線と異なる第二の方向に配設されるワード線によって相互に接続され、前記選択回路は各々の共通ビット線の単位で追加的書き込み信号印加処理を順次実施する。
本発明の一態様は、上述のニューロモーフィック回路において、前記閾値を共通ビット線毎に異なる値を設定する。
本発明の一態様は、上述の判定機構は、追加書き込み信号を印加した後、差分の変動量が正の場合にはさらに追加の書き込み信号を印加し、負の場合には逆の方向に抵抗を変化させるための書き込み信号を印加する。
本発明の一態様は、複数の可変抵抗素子で構成されるニューロモーフィックアレイにおいて、ニューラルネットワークの学習を行うステップと、ニューラルネットワークの重みの更新量をニューロモーフィックアレイの各可変抵抗素子のコンダクタンスの変化量に変換するステップと、変換したコンダクタンス変化量に基づく書き込み信号をニューロモーフィックアレイに印加するステップと、さらに一部の素子を選択するステップと選択した素子に対してのみ追加的な書き込み信号を印加するステップと、改めて学習データをニューロモーフィックアレイに入力し、その教師信号との差分によって当該学習サイクルの終了を判定するステップと、を備える、ニューロモーフィックアレイの学習方法である。
本発明の一態様は、可変な特性の値に応じた重みを信号に乗算するニューロモーフィック素子を含むニューロモーフィックアレイにおいて、ニューラルネットワークの学習を行うステップと、ニューラルネットワークの重みの更新量をニューロモーフィックアレイ素子のコンダクタンスの変化量に変換するステップと、変換したコンダクタンス変化量に基づく書き込み信号をニューロモーフィックアレイに印加するステップと、さらに一部の素子を選択するステップと、選択した素子に対してのみ追加的な書き込み信号を印加するステップと、改めて学習データをニューロモーフィックアレイに入力し、その教師信号との差分によって当該学習サイクルの終了を判定するステップと、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００２２】
本発明によれば、ニューロモーフィックアレイを使ってニューラルネットワークシステムの学習を行う場合に、コンピュータで計算された学習アルゴリズムを安定的に実行させることができる。
また、本発明によれば、ニューロモーフィックアレイを使用したニューラルネットワークにおいて学習アルゴリズムを高速に収束することが可能になる。
また、本発明によれば、ニューロモーフィックアレイを使用したニューラルネットワークにおいて、識別性能を改善することが可能になる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態に係る、ニューロモーフィックアレイを構成するニューロモーフィック素子のコンダクタンス変化を模式的に表現した図である
【図２】本発明の実施形態に係るニューラルネットワークに関して、学習の進展に伴う損失関数の出力、及び識別性能の変化推移をコンピュータシミュレーションで推移計算した結果を示す図である。
【図３】本発明の実施形態に係るニューラルネットワークに関して、理想的な特性を持つニューロモーフィックアレイで学習を実施した場合の学習の進展に伴う損失関数の出力、及び識別性能の変化推移を表すシミュレーション結果を示す図である。
【図４】ニューロモーフィック素子のばらつきを考慮したニューロモーフィックアレイで学習を実施した場合の学習の進展に伴う損失関数の出力、及び識別性能の変化推移を表すシミュレーション結果を示す図である。
【図５】本発明によるニューロモーフィック素子を使用したニューロモーフィックアレイの学習方法を示す
【図６】本発明の実施形態に係るニューラルネットワークシステム１の概略的な構成を示すブロック図である。
【図７】本発明の実施形態に係る、識別対象の画像の例を示したものである。
【図８】素子の離散的特性に素子のばらつきを加味して調整機能を全体の５％の素子に適用した場合の学習の進展に伴う損失関数の出力、及び識別性能の変化推移を表すシミュレーション結果を示す図である。
【図９】素子の離散的特性に素子のばらつきを加味して調整機能を全体の８％の素子に適用した場合の学習の進展に伴う損失関数の出力、及び識別性能の変化推移を表すシミュレーション結果を示す図である。
【図１０】素子の離散的特性に素子のばらつきを加味して調整機能を全体の１０％の素子に適用した場合の学習の進展に伴う損失関数の出力、及び識別性能の変化推移を表すシミュレーション結果を示す図である。
【発明を実施するための形態】
【００２４】
［ニューロモーフィック素子のコンダクタンス変化］
図１はニューロモーフィック素子のコンダクタンス変化におけるばらつきを示したものである。図１は、素子特性が理想的ではないため重み更新値の乖離が生じることを示す。ニューラルネットワークの積和演算器としてニューロモーフィック素子を使用する場合、各素子のコンダクタンス変化特性は図中の理想線形変化（Ｚ線）に示す様な変化特性が望まれる。しかしながら、現実に製造される素子は、様々な素子間のばらつきやプロセスに依存する変動が起こりえる。また素子のコンダクタンス変化機序として利用する物理現象によっては原理的に非線形なコンダクタンス変化を示す場合もある。この様な変動を踏まえた現実的な素子のコンダクタンス変化は、例えば、図中の素子１、素子２、素子３の様なコンダクタンス変化を示す。
【００２５】
この様な特性を持つ素子を使用することを前提に、課題を説明する。今、素子３の時間Tにおけるコンダクタンスが図の値Ｇ[Ｔ]をとっているとする。この状態で勾配降下法などの学習アルゴリズムで計算した重み更新量からコンダクタンス変化量を計算し、期待するコンダクタンス値（白抜き三角（Ｘ点））まで素子のコンダクタンスを変化させることを考える。コンダクタンス変化を与えるための書き込み信号を印加し、素子のコンダクタンスが、図中の”現実の素子のコンダクタンス（Ｙ点）”の値に変化する。この後に、次の学習サイクルが実行され、学習データがアレイに入力され、アレイの出力を教師信号と比較する。学習アルゴリズムが理想的に動作していれば、この出力と教師信号との差分値は漸減していく。しかしながら、現実的なプロセスを使用して製造されたニューロモーフィックアレイでは、計算されたコンダクタンス変化量が素子に正確には反映されず、Ｇ’[Ｔ]のコンダクタンスを持つため、この後に実行される学習サイクルでは学習アルゴリズムが期待する方向に収束せずに発散する、あるいは、収束性が低下するなどの現象を招く。
【００２６】
この様な素子のばらつきが学習アルゴリズムに与える影響をシミュレーションによって説明する。
手書き数字を識別させるためのニューラルネットワークにおける学習の様子を示す。ニューラルネットワークは３層構造のＭＬＰを想定し、１層目は７８４次元、２層目は１００次元、３層目は１０次元のニューロンから構成されている。図２は、浮動小数点演算で重みを計算した場合の学習性能収束推移を示す。図２はこのニューラルネットワークにおいて、コンピュータ上で勾配降下法による学習アルゴリズムを実行させ、そのエポックの進捗に対する誤差関数の出力（赤破線）、識別率（青破線）の推移を示したものである。この様に、学習の進行とともに、誤差関数の出力が漸減し、識別性能が漸増する収束傾向を示している。応用上は誤差関数出力値やその差分、あるいは識別率等による何等かの基準で閾値を設定し、終了判定するのが一般的なコンピュータ上での実装方法である。なお、ここでは３層ＭＬＰで示したが、現実的な応用では様々なニューラルネットワークの層構成や機構などが提案されている。例えば層構造が２０層を超えるネットワークなども使われ、応用的にも一般物体検出や識別、感情分析などの自然言語処理など多岐にわたっている。
【００２７】
図３はこのニューラルネットワークを理想的なコンダクタンス変化、つまり一定の離散ステップ幅でコンダクタンスが線形変化するニューロモーフィック素子によるアレイで実現した場合の学習推移を示す。ここで理想的と表現したのは、素子のばらつき要因は考慮せず、ニューロモーフィックアレイの各素子は均一な有限の離散ステップ幅を刻み、全ての素子が同一の線形コンダクタンス変化することを想定したものである。この様にニューロモーフィック素子の特性が理想的であれば、素子のコンダクタンスの離散化特性があっても、学習アルゴリズムは大きな影響を受けることなく、正常に収束することが期待される。特許文献２にも記載されている様に、素子のばらつきや重みの割り当て方法が適していれば、この様に実用上では問題ないレベルの学習アルゴリズムを実行可能である。
【００２８】
一方、図４はニューロモーフィック素子のばらつきを考慮した結果である。各ニューロモーフィック素子のコンダクタンスに対して１％程度の確率分布に基づく変動を与え、毎回の学習アルゴリズムの実行単位で独立した変動が起きると仮定したものである。この結果でわかるように、素子の変動が学習アルゴリズムに与える影響は大きく、このケースでは収束アルゴリズム自体が破綻していることを示している。現実の素子では変動のメカニズムによって、確率的に発生する変動や、素子個々の形状等による固定的なオフセット変動の様なものがあり、本シミュレーション結果は必ずしも普遍的な意味合いを持つものではないが、学習アルゴリズムは、演算語長を十分とった浮動小数点形式の中で、創出、検証されるため、素子特有の離散値に加えて、素子特性のばらつきを考慮する現実の素子において、学習アルゴリズムがコンピュータ上での計算結果と同様に機能することは保証されないと考えてよい。むしろ、本シミュレーションで示したように、収束するまでの学習回数の増加や振動を招く事は容易に推測される。この様な背景技術に基づき、本発明はなされるものである。
【００２９】
［ニューロモーフィック素子の学習の概要］
図５は本発明によるニューロモーフィック素子を使用したニューロモーフィックアレイの学習方法を概念的に示したものである。学習データ１００をニューラルネットワーク２００に入力し、その出力と教師信号（図示せず）との差分（損失）を誤差計算判定処理３００で計算し、学習アルゴリズムの終了を判定する。終了しない場合は、学習アルゴリズム４００で誤差を最小化する重み更新量を求める。通常は求めた重み更新量に基づいて、ニューラルネットワーク２００の重みを変更する。さらにニューロモーフィックアレイの素子のコンダクタンスはＮＭＤ抵抗変化量計算５００のステップで重み更新量からコンダクタンス変化量に換算し、ＮＭＤ抵抗変化処理６００で実際のニューロモーフィックアレイを構成する素子に書き込み信号を印加する。本発明では、上記までのステップの後にＮＭＤ素子調整ステップ７００を設けて一部の素子のコンダクタンス値を調整することを特徴とする。
【００３０】
学習アルゴリズムは、バッチと呼ばれる単位で学習データを取得し、学習データをニューロモーフィックアレイに入力し、その出力を学習データに対応する教師データと比較し、その累積誤差を最小化するようにニューロモーフィックアレイの各素子のコンダクタンスを調整する方法で実現する。学習は学習データ入力からコンダクタンス更新サイクルを繰り返しながら、累積誤差が予め設定した閾値以上であれば学習サイクルを継続し、閾値以下になった場合には学習を終了するなどの制御がされる。
【００３１】
学習アルゴリズムとしては、例えば勾配降下法などがある。これは、教師信号との差分（損失）を層間の各重みで偏微分することで、各重みに対する変更量を計算する方法である。この計算アルゴリズムは、層を２個以上持つ、多層構造のニューラルネットワークに対しても、出力層から入力層に向かって層単位で順に遡って計算することが可能であり、多層ニューラルネットワーク全体の重みを更新することも可能にする。これは、誤差逆伝搬法と呼ばれ、通常のコンピュータ等で実行するニューラルネットワークで使用されている計算方法である。
【００３２】
また、別の学習方法として、ＳＴＤＰ（Ｓｐｉｋｅ Ｔｉｍｉｎｇ  Ｄｅｐｅｎｄａｎｃｙ  Ｐｌａｓｔｉｃｉｔｙ）学習がある。これは、微分を使用した収束化アルゴリズムである勾配降下法と異なり、人間の脳のシナプス結合の結合度合いを更新するメカニズムを模倣したものである。シナプス結合は、前段ニューロン（プレニューロン）と後段ニューロン（ポストニューロン）の間に配置される抵抗変化型素子で実現され、前後のニューロンの発火タイミングの時間差を利用して、シナプス結合の素子に電位差をある期間生じさせ、コンダクタンスを上昇、あるいは、下降させるものである。コンダクタンスが減少することは、前段ニューロンの信号が後段に伝播しづらくなり、後段ニューロンの活性が低下し、逆にコンダクタンスが増加することは前段ニューロンの信号がより後段ニューロンに伝播しやすくなり、入力信号に対して励起しやすくなる。つまり、神経細胞の興奮状態をモデル化した学習方法である。
【００３３】
いずれの場合でも、ニューロモーフィックアレイを使用したニューラルネットワークでは、重みに相当する素子のコンダクタンス値を対象とする問題に最適化することが必要になる。図５内の、“ＮＭＤコンダクタンス変化量ΔＧ計算”では、計算上得られた重み更新量と、素子に割り当てられている分解能や重みのレンジなどのパラメータを基に、重み更新量に相当するコンダクタンス変化量を計算する。この様な重みと素子のコンダクタンスレンジに対する割り当て方法などは特許文献２に詳述されている。
【００３４】
“ＮＭＤコンダクタンス変化処理“では、コンダクタンス変化量に対応する書き込み信号を生成する。簡単な方法として、計算されたコンダクタンス変化量が書き込み信号による基本コンダクタンス変化量の何倍に相当するかを計算し、その回数分書き込み信号を印加するなどの手法が考えられる。この書き込み信号をニューロモーフィックアレイに印加することで素子のコンダクタンスを変化させ、次の学習サイクルを繰り返す。
【００３５】
本発明では、上記までの通常のコンダクタンス更新処理を実施した後に、素子ばらつき等に起因する変動の影響を抑制するための機能を設ける。本機能を学習サイクルに組み込むことによって、ニューロモーフィックアレイ全体としてコンダクタンスの精度ばらつきの影響が抑制され、学習アルゴリズムの収束安定化、高速化に資することができる。以下に調整機能について説明する。
【００３６】
［調整機能］
既に説明した様に、ニューロモーフィックアレイでは再現性ばらつきなどの変動要因により、浮動小数点演算等で計算した重み更新量を正確に反映することが困難である。従って、本発明では上記までのニューロモーフィック素子のコンダクタンス変化のための書き込みを実施した後に、以下の処理を実施することを開示する。ドロップアウトなどの手法を除けば、通常の学習アルゴリズムでは、演算語長に起因する計算分解能以下にならない限り、対象の層の全重みが更新計算の対象となる。一方、ニューロモーフィック素子は、コンダクタンス値が離散ステップをとるため、ある値以下の更新量の場合は、素子のコンダクタンス更新量は０になる。コンダクタンス更新量が０である素子以外に対して書き込み信号が印加される。この更新のための書き換え信号を印加した後に、調整機能では、素子の中から、特定の条件に合致する素子を選択し、その素子に対して追加書き込み信号を印加する。ここで特定の条件と記載したのは、全ての素子に対して調整機構を適用せずとも、学習アルゴリズムには支障がないためである。
【００３７】
素子のコンダクタンスは追加書き込みによって変化する。その後に改めて学習データをニューロモーフィックアレイに入力し、その出力と教師信号との差分を調整機能実施前の差分と比較する。その比較結果によって、選択した素子への書き込み信号をさらに追加で印加するか、反対方向の（負の）コンダクタンス変化を起こすための書き込み信号を印加するなどの判断を行う。このように、学習アルゴリズムで更新された素子の中から、一部の素子を抽出して追加的にコンダクタンス値を変動させることで、識別器の学習性能を改善することが可能になる。
【００３８】
調整機能における素子選択条件としては、重み更新量や、コンダクタンス、抵抗変化量等の絶対値に対する閾値を予め設定し、その閾値を超えて更新を行う素子を選択するなどが考えられる。さらには、ニューロモーフィックアレイを構成する全素子の数に対して、更新量の大きい順に一定の比率を設け、その比率の数の素子に対して同様の調整機能を実施することも想定される。調整機能は、後述するように、全体の素子の１０％以下の素子に対して実行するだけで十分効果が発揮できる。さらには、その比率や閾値を、学習のバッチ進行とともに変化させるなどの手法でもよい。
【００３９】
さらに調整機能で使用する追加書き込み信号は、通常の学習サイクルでの書き込み信号よりも小さなコンダクタンス変化を起こすような書き込み信号を印加することも考えられる。例えば、電圧に依存してコンダクタンス変化量が決まるような素子の場合には、通常の書き換えに使用する電圧よりも低い電圧を使用する、あるいは、書き込みに定電圧パルス幅変調方式を使用する素子の場合にはパルス長を短くするなどの手法が考えられる。調整機能では、通常の学習プロセスのコンダクタンス変化最小量よりも小さなコンダクタンス変化を発生させても本素子調整機構の効果は期待される。
【実施例の説明】
【００４０】
本発明の実施例について説明する。
［ニューロモーフィックアレイを用いたニューラルネットワークシステムの概要］
図６は、本発明の実施形態に係るニューラルネットワークシステム１の概略的な構成を示すブロック図である。
ニューラルネットワークシステム１は、信号生成回路２、ニューロモーフィックアレイ３、検出回路４、差分回路５、学習制御回路６から構成される。信号生成回路２は、ニューロモーフィックアレイ３に印加する信号を生成するバッファ回路である。ニューロモーフィックアレイ３は、ニューラルネットワークシステム１におけるアナログ積和演算器としての機能を担い、２個以上のニューロモーフィック素子３１、共通ビット線３２、ワード線３３から構成される。ニューロモーフィック素子３１は、さらに入力端子３１１と共通端子３１２を持つ。検出回路４はニューロモーフィックアレイ３からの出力から総電荷量を検出し、電圧に変換する回路である。差分回路５は、検出回路４の出力と教師信号との差分である誤差信号を出力する回路である。学習制御回路６は、ニューロモーフィックアレイ３の各ニューロモーフィック素子３１のコンダクタンスを適切に制御するための学習を制御する回路であり、学習用データセットから学習、及び検証データセットを受信し、読出し信号に変換する学習信号生成部６１、学習用データセットから教師信号を生成する教師信号生成部６２、誤差信号を受信して学習ステップを継続判断、追加的書き込み信号を生成するかの判断を行う学習判定部６３、誤差信号からネットワークの重みを計算し、さらにコンダクタンス変化量に変換するコンダクタンス更新量計算部６４、計算されたコンダクタンス更新量を起こさせるための書き込み信号生成部６５、及び、学習判定部から追加的書き込み信号生成指示を受けて追加書き込み信号を発生する追加書き込み信号生成部６６から構成される。
【００４１】
信号生成回路２は、ニューロモーフィックアレイ３に対する印加信号を発生させるバッファ回路である。印加信号は、コンダクタンスを読み出す信号とコンダクタンスを変化させる書き込み信号の両方を含む。なお、ここで例示するニューロモーフィック素子３１は、二端子型の素子を想定し、読み出しも書き込みも同じ２個の端子を使用して実施するものとする。２端子型素子の場合は、読出しと書き込みよって印加する電圧を変化させることで、読出し時の電圧は抵抗変化が起きない、もしくは、予め定めた基準内に変化量が収まるように電圧が設定されるのが一般的である。
推論動作など、ニューロモーフィック素子のコンダクタンスを読みだす場合は、例えば０．２Ｖ程度の電圧を印加し、学習動作において素子のコンダクタンスを変化させる場合は、１Ｖ程度の書き込み信号を印加する。
なお、推論動作では入力信号に２値を超える意味を持たせる場合、各値を表現するための変調信号を用いる。ここでは、入力カウンタ回路（図示せず）を用いたパルス幅変調回路（電圧は０．２Ｖ）を想定し、１０ｎｓを単位として、０〜２５５０ｎｓまでの２５６階調のパルス幅変調（ＰＷＭ）方式として説明する。
【００４２】
［学習データ］
本実施例で使用する学習用データセットについて説明する。図７は、本発明の実施形態に係る識別対象の画像を２４個、例として示したものである。例えば、Ｐｉｃ  Ｎｏ．０は数字の「５」を手書きした場合における手書きパターンの画像である。同様に、Ｐｉｃ  Ｎｏ．２から５までは各々数字の「４」、「１」、「７」、「０」を手書きした場合における手書きパターンの画像である。各パターンは２８画素×２８画素、計７８４画素のデータから構成され、各画素のデータは、０から１の範囲に正規化された形式で学習信号生成部６１に入力される。一方、各手書き画像信号に対応して、各々の正解となる数字０から９の値が教師データとして、教師信号生成部６２に入力される。本実施例のニューラルネットワークは、入力された手書きパターン画像が数字の５であるか、否かを識別するニューラルネットワークであるため、最終的に教師信号生成部６２から出力される値は、正解値が「５」の場合は、１を、そうでない場合は、０を差分回路５に出力する。
【００４３】
［ニューロモーフィックアレイ］
本実施例のニューロモーフィックアレイ３は共通ビット線３２に接続される複数の素子から構成される。各ニューロモーフィック素子３１は入力端子３１１と共通端子３１２を持つ２端子型の素子として説明する。入力端子３１１は、信号生成回路２に接続され、ニューロモーフィックアレイ３を使った推論や学習の単位で実施される検証時に、所定の変調方式に従った入力信号が印加される。また、学習アルゴリズムによるコンダクタンス変化においては、入力端子３１１に書き込み信号が印加され、ニューロモーフィック素子３１のコンダクタンスを変化させる。共通端子３１２は、推論時、あるいは、学習時に入力信号が印加された場合の電流が流れる経路となる。また、推論時には接続される複数の素子の電流が共通ビット線で合算される。書き込み時には書き込み電流の経路として使用される。公知例に示すように学習時に書き込み信号を共通端子３１２から印加する方式も可能である。本実施例では、読出し時は入力データをパルス幅変調した信号が入力端子３１１と共通端子３１２の間に印加され、書き込み時は書き込み信号としてパルス幅を固定した矩形波が入力端子３１１と共通端子３１２の間に印加される。なお書き込み用の矩形波の数は１に限らない。
【００４４】
各ニューロモーフィック素子３１は入力画像の１画素に対応する乗算を実行する。つまり、本実施例では７８４画素分のデータが入力信号であるため、７８４個のニューロモーフィック素子３１が共通ビット線３２に対して、並列に接続されている。
【００４５】
［学習ステップ］
学習データの各画素の情報は信号生成回路２によって、１０ｎｓから２５６０ｎｓの間のパルス幅変調信号（図中ｗ［１］〜ｗ［ｎ］等で記載の波形）に変換された上で、ニューロモーフィックアレイ３の各素子３１の入力端子３１１に印加される。素子３１にはコンダクタンスと電圧を乗じた電流値がパルス幅の期間流れる。共通ビット線３２によって接続される全ての素子に流れる電流量総和が検出回路４で電荷量として検出される。原理的には最大パルス長の時間、つまりこの例では２５５０ｎｓ期間において、共通ビット線３２を流れる電流量総和が積和演算結果となるため、検出回路４ではこの電荷をＱＶ変換回路などの回路によって電圧に変換する。なお、電荷量の検出方法に関しては必ずしもＱＶ変換回路を用いる必要はなく、その他の方式でも構わない。
【００４６】
差分回路５は、検出回路４から出力される電圧値と教師信号との差分信号を誤差信号として出力する。本実施例では、共通ビット線３２の出力は検出回路４によって電圧値に変換されているため、教師信号もまた、電圧値に変換しておく必要がある。（図示せず）一般には、ＱＶ変換回路など想定する回路のダイナミックレンジを想定して、上値と下値に各々１と０を割り当てた電圧を教師信号として差分回路５に入力することになる。もっとも共通ビット線３２の出力をＡＤＣ回路などでデジタル信号に変換した場合には、教師信号はデジタル信号の値をそのまま、あるいは、簡単な演算を加えるだけで実現でき、差分回路５は簡単なデジタル差分処理で計算可能である。ここで、教師信号は、入力データに対する正解判定値を示す。本実施例では、入力された手書き数字データが「５」であるか、否かを識別するものであるため、教師信号は、入力された手書き数字画像が「５」の場合は１に、そうでなければ０に対応する電圧値となる。
【００４７】
学習制御回路６の中の学習判定部６３は、差分回路５の出力である誤差信号をデジタル値に変換する機構、及び、学習アルゴリズムによる重みの更新量を計算する回路である。差分回路５からの誤差信号が予め設定される閾値よりも小さい場合は当該学習サイクルを終了し、次の学習サイクルに進む。当該学習サイクルで学習自体を終了することもある。学習サイクルが継続する場合は、さらに勾配降下法等を使用して（式（１）〜（５））ニューラルネットワークシステムの重み更新量を計算する。本実施例では、共通ビット線３２の出力が０、もしくは１の値をとるように重み更新量を計算する。この計算はデジタル計算で行うのが一般である。
【００４８】
全ての重みに対して各更新量を計算した後、コンダクタンス更新量計算部６４で、重み更新量に対応する各素子のコンダクタンス更新量が計算される。前述の通り、コンダクタンス更新量は素子のコンダクタンス変化レンジや分解能とコンダクタンスに対する重みの割り当て方法を元に計算される。計算結果によっては、コンダクタンス更新量が０になる場合もある。
【００４９】
書き込み信号生成部６５では、コンダクタンス更新量計算部６４で計算されたコンダクタンス変化を起こさせるために必要な書き込み信号の元データを計算する。本実施例ではニューロモーフィック素子３１のコンダクタンスは、書き込み信号のパルス数に対して線形的に変化するので、書き込み信号の元データとは、印加するパルス数に相当する値となる。書き込みの方法がニューロモーフィック素子３１に印加するパルス幅や電圧の場合は、素子に応じたパルス長や電圧などの書き込み元信号を生成する。書き込み信号は、信号生成回路２によって所望の信号としてニューロモーフィック素子３１の入力端子３１１に印加される。これによって、各ニューロモーフィック素子３１は理論上、学習アルゴリズムで求めたコンダクタンス値に変化する。ここまでが、通常のニューラルネットワークシステムの学習アルゴリズムをニューロモーフィックアレイに適用した場合の学習ステップである。
【００５０】
次に、上述までのステップに続いて実施される、本発明による調整機能を実行するステップについて説明する。
【００５１】
［素子調整ステップ］
上述までの学習ステップによって各ニューロモーフィック素子３１に対して書き込み信号を印加した後、学習判定部６３で計算した重み更新量の絶対値が最大である素子を選択する。素子調整ステップでは選択された素子に対してのみ、追加書き込み信号生成部６６で追加的書き込み信号を発生させる。追加的書き込み信号は、通常の学習ステップにおいて使用されるコンダクタンス変化量の最小単位の変化を起こす信号である。この結果、選択素子には、学習アルゴリズムが計算した重み更新量を超えて書き込み信号が印加される。この後、学習判定部６３は、改めて今回の学習サイクルの学習データをニューロモーフィックアレイ３に入力し、ニューロモーフィックアレイ３の出力と教師信号の差分を差分回路５で求める。この差分が前回と比較して減少した場合は、上記を繰り返す。増加、あるいは、変動しない場合はこれ以上の素子調整ステップを中止するなどの制御を行う。複数の素子に対して素子調整ステップを実行する場合は、このプロセスを調整する素子の数分だけ複数回繰り返し実施する。
【００５２】
人間の脳のメカニズムから着想を得たニューラルネットワークは、対象とする問題を多次元の非線形空間に変換することで機能する。入力情報はその非線形空間上に射影され、期待される出力に合致するように、ネットワークの重みを学習させることによって機能実現する。従って、個々の素子のコンダクタンス値の精度に加え、系全体の状態が最適化(最小化)されているかを判断することは、学習プロセスの観点で大変重要である。つまり、ニューロモーフィックアレイが効率的に学習アルゴリズムを実行するには、個々の素子のコンダクタンスの精度を追求することもさることながら、系全体が最適化に向かうことを考慮しながら素子のコンダクタンスを決定していくことが重要である。本実施例では、最大更新量をもつ素子の様に、部分的に選択された素子について、学習アルゴリズムが計算した変化量を超えた入力を与えることで、系全体の出力が好ましい方向に進むかを判定しながら、ニューロモーフィックアレイの学習を実施することを主張するものである。加えて、追加的書き込み信号の印加は、ニューラルネットワークシステムに対するゆらぎの様な効果を与え、例えば系が局所最適解に陥ることに対する正則化項としての効果も期待される。この場合は、前述の素子調整ステップにおいて、追加的書き込み信号を印加した後の判定処理を削除することも考えられる。
【００５３】
なお、素子調整ステップにおいて、追加書き込み信号を印加して学習誤差が増加した場合、その増加分が予め定められた閾値を超えた場合は、逆向きの書き込み信号を印加する制御も考えられる。学習誤差が変動しない場合は、そこで素子調整ステップを終了し、次の学習サイクルに進む。学習は、複数のデータ単位によるバッチ処理でも、あるいは、オンライン学習の様に各一個の学習データ単位に学習アルゴリズムを実行してもよい。
【００５４】
なお、本実施例では、１クラスの識別器として説明したが、複数クラスの識別器にも適用可能である。例えば、０から９までの１０個の手書き数字画像の分類器として実現する場合は、ニューロモーフィックアレイ３を水平方向に１０本並列に配設し、各共通ビット線３２の各々のニューロモーフィック素子３１は横方向のワード線で接続されるような構造になる。そして、各１０本の共通ビット線３２の出力は、各々０から９までの１０個のクラスに各対応し、識別処理の結果、最も尤度の高い共通ビット線３２の出力が１となり、その他の共通ビット線３２の出力は０になるような学習を実行する。その場合には、学習の各ステップにおいて、本実施例の様な調整機能を共通ビット線の単位で順次実行することで、学習アルゴリズムの高速化、収束の安定化を図ることが可能になる。
なお、本実施例は、本例の手書き数字に限定する必要はなく、動・静止画像、音声、あるいはセンサなどの時系列信号など様々な情報に対して、識別や予測などを行なうニューラルネットワークに対して適用可能であることは言うまでもない。
【００５５】
本実施例では２端子を持つ素子を使用したニューロモーフィックアレイとして説明した。例えば、ＲＥＲＡＭや相変化型メモリの様な素子はこの様な２端子型の素子として研究されている。一方、本実施例を３端子型の素子に適用することも可能である。その場合は、入力端子３１１、共通端子３２２の代わりに、各ニューロモーフィック素子３１は読み出し端子、書き込み端子、共通端子の３端子から構成され、信号生成回路は、推論時には読出し端子と共通端子間に信号を印加し、学習時のコンダクタンス変化のためには書き込み端子と共通端子の間に信号を印加することになる。なお、３端子型のニューロモーフィック素子として、スピントロニクスを用いた磁壁移動型抵抗変化素子などが研究されている。
【００５６】
さらに、本実施例では調整機能ステップにおける書き込み信号は、通常の学習時に使用される書き込み信号の最小パルス幅として説明したが、それを単位にした複数単位分の信号であっても、あるいは、学習時最小パルス幅よりも短いパルス幅を使用してもよい。
【００５７】
この様なニューロモーフィック素子としては、任意の素子が用いられてもよい。また、ニューロモーフィック素子としては、例えば、１種類のニューロモーフィック素子が複数組み合されて用いられてもよく、あるいは、２種類以上のニューロモーフィック素子が組み合されて用いられてもよい。
【００５８】
本実施形態では、素子の特性としてコンダクタンスの値を変化させることが可能なニューロモーフィック素子が用いられており、その変化の分解能が有限である。
なお、ニューロモーフィック素子としては、任意の特性を変化させることが可能なものが用いられてもよく、例えば、抵抗、あるいは、光位相などの特性を変化させることが可能なものが用いられてもよい。
【００５９】
素子調整機構の効果についてさらに説明する。
図４の結果は、既に説明したように３層ＭＬＰにおいて、素子のコンダクタンスが確率的変動を持つ場合を想定したものである。つまり、学習ステップの各コンダクタンス変化の処理毎に、コンダクタンス書き換え結果が確率的な分布を持つ誤りをもった場合に、学習アルゴリズム収束への影響を示している。ここでは、確率的変動によって、学習アルゴリズムが動作せず、損失関数の出力が学習の進展とともに上昇し、識別率が４０％を切るまでに低下していることがわかる。素子の再現性誤りが学習アルゴリズムに悪影響を与えていることがわかる。
【００６０】
そこで、本発明を想定して、一部のニューロモーフィック素子３１に対して調整機能に相当する処理を実施してみる。学習回毎に重み更新量の絶対値の大きい順に５％、８％、１０％の数のニューロモーフィック素子３１について、コンダクタンスばらつきを加えた後に離散値正値に戻す処理を加えて学習アルゴリズムを進めた結果が図８、図９、図１０である。本発明での調整機能は必ずしも素子のコンダクタンスを正値に戻すことにはならないが、調整機能の中で一部の素子に対する追加書き込みと、再度ニューロモーフィックアレイの出力と教師差分を評価し、学習推移を判断することの効果を間接的に示していると考える。５％に対する調整機構では、識別率自体は若干改善するものの、アルゴリズムへの影響は回避できずに、損失関数の出力は再現性ばらつきを混入させた場合と同じく、低下傾向にある。しかし、８％の素子に対して同様の調整機構を適用すると、識別性能の改善に加えて、学習アルゴリズム自体も正常な動きをするようになる。つまり、第一層の素子７８４個×１００個の素子の中の８％程度の素子に対して、本発明の調整機構を組み込むことで学習アルゴリズムの破綻を防ぐことが可能になる。さらに１０％の素子でも同等の結果を示している。なお、ここでは８％の素子に対して調整機構を組み込むことで効果があることが示されたが、これは学習アルゴリズムやオプティマイザと呼ばれる学習率更新などの手法や、ネットワークの定義、構造によって異なる。
【００６１】
［実施形態のまとめ］
以上のように、本実施形態に係るニューラルネットワークシステム１では、分解能が有限であるニューロモーフィック素子を使用したニューロモーフィックアレイを使ってニューラルネットワークを学習する場合の素子調整機構を開示した。つまり、通常の勾配降下法等の学習アルゴリズムに基づいて計算された重み更新量に基づく、素子のコンダクタンス更新処理の後に、改めて素子列を構成する一部の素子を選択して、それらの素子に追加的に書き込み信号を印加し、その後に、学習データを入力させた出力結果と教師信号の差分を評価することで、学習性能が改善することを示した。これらの追加的適正化処理における素子の選択方法は、単に全体に対する素子数割合や、更新量絶対値、コンダクタンス更新量（絶対値）の大きい素子などを選択的に調整する手法が開示された。また、その選択にあたっては、全体の素子の８％程度の素子を選択することでも、十分に素子特性の変動が学習アルゴリズムに与える影響が抑制され、学習アルゴリズムの収束性を改善することができることが示された。
【００６２】
ニューラルネットワークにおける学習アルゴリズムの経過によって、重みの絶対値が漸増するように変化するのが一般である。従って、更新量の大きな値を持つ素子は値自体が大きくなる、その結合の活性度が上昇するため、そういった結合部に対して調整機構を組み込むことは合理的である。また式（１）〜（５）でもわかるように、誤差逆伝搬法では、重みの更新量は入力信号の絶対値に比例するので、重み更新量やコンダクタンス更新量の代わりに、学習データの入力信号の大きな値を持つ素子を選択するような機構を素子調整機構に組み込むことも可能である。
【００６３】
また、本実施形態では、多層のニューラルネットワークを複数のニューロモーフィックアレイで実現する場合においても有効である。多層のニューラルネットワークにおいて、学習は誤差逆伝搬法などを用いて出力段に近い層から順に、層単位で重み更新量を計算していくが、この時、ニューロモーフィックアレイのコンダクタンスの適正化も同様に各アレイの学習アルゴリズムの中で実施すればよい。
例えば、３層構造、つまり、隠れ層が一層ある場合は、入力層と隠れ層の間に対応する第一のニューロモーフィックアレイと隠れ層と出力層の間に対応する第二のニューロモーフィックアレイで実現する。この場合、学習は、ニューロモーフィックアレイの出力値と教師信号の差分から重み更新量を勾配降下法などで計算し、第二のニューロモーフィックアレイの各素子のコンダクタンス変化量を計算する。求めた変化量を起こさせるための書き換え信号を素子列に印加して各素子のコンダクタンスを変更する。第一のニューロモーフィックアレイのコンダクタンス変化は第二のニューロモーフィックアレイの重み更新量の計算過程を使用して計算する。この計算過程は誤差逆伝搬法と呼ばれる手法を適用することで何層にでも遡って適用することが可能である。
【００６４】
ここで、本実施形態では、ニューラルネットワークにより識別する対象（識別対象）として、数字の手書き画像データを用いたが、識別対象としての限定は無く、音声やセンサ信号等のデータを用いてもよい。また、目的も手書き画像データから筆記している数字を識別させることを例に説明したが、音声信号から文字の識別、音響信号の予測や動画像データから物体検出や識別機能、あるいは、画素単位のクラスを予測するセマンティックセグメンテーションなどへの応用も可能である。
また、ニューラルネットワークとしては、任意の種類のニューラルネットワークが用いられてもよく、例えば、全結合型のニューラルネットワーク、畳み込みニューラルネットワーク、あるいは、再帰型ニューラルネットワークなどが用いられてもよい。
【００６５】
なお、以上に示した実施形態に係る各装置（例えば、制御装置１１）の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体（記憶媒体）に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。
なお、ここでいう「コンピュータシステム」とは、オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）あるいは周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、記録媒体としては、例えば、一時的にデータを記録する記録媒体であってもよい。
【００６６】
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバあるいはクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００６７】
＜構成例＞
一構成例として、可変な特性（例えば、コンダクタンスなど）の値に応じた重みを信号に乗算するニューロモーフィック素子を含むアレイ（本実施形態では、ニューロモーフィックアレイ３）の制御装置（本実施形態では、学習制御回路６）であって、学習アルゴリズムが出力した重みの更新量から変換したニューロモーフィック素子のコンダクタンス変化を与えることでニューロモーフィック素子の学習を行う機能において、特定の条件で抽出した一部の素子に対して追加的変動を与えながら、コンダクタンスを調整する制御部（本実施形態では、学習制御回路６の機能であり、例えば、追加書き込み信号生成部６６）を備える、制御装置である。
一構成例として、制御装置において、制御部は、対象素子の選択は学習データの入力値の最も大きい素子を選択する。
一構成例として、制御装置において、制御部は、学習アルゴリズムによって計算された重み更新量が最も大きい重みに対応する素子を選択する。
一構成例として、制御装置において、制御部は、素子のコンダクタンス変化量が最も大きい素子を選択する。
一構成例として、制御装置において、制御部は、上記のいずれかの基準に基づいて設定された閾値により、複数の対象素子を選択し、素子毎に順次、上述の調整機能を実行する。
一構成例として、制御装置において、制御部は、閾値を学習の進展毎に更新する機能を持つ。
一構成例として、制御装置において、制御部は、閾値はニューラルネットワークの各層毎に異なる値を設定する機能を持つ。
一構成例として、制御装置において、制御部は、上述の調整機能を実行後、学習データを入力した結果の教師信号との差分が縮小する間は、追加パルスの印加ステップを継続する機能を持つ。
一構成例として、制御装置において、制御部（本実施形態では、学習制御回路６の機能であり、例えば、学習判定部６３、コンダクタンス更新量計算部６４、書き込み信号生成部６５）は、ニューロモーフィック素子の離散化ステップサイズを使用して、アレイについて学習を行う。
一構成例として、制御装置において、アレイは、ニューロモーフィック素子を用いてニューラルネットワークにおける積和演算を行う回路を有する。
【００６８】
一構成例として、可変な特性の値に応じた重みを信号に乗算するニューロモーフィック素子を含むアレイについて、ニューロモーフィック素子の特性の離散化ステップサイズに基づいて学習アルゴリズムを演算する演算方法（例えば、学習制御回路６のコンダクタンス更新量計算部６４あるいは他のコンピュータにより行われる演算の方法）であって、ニューロモーフィック素子の特性の分解能よりも高い精度でニューラルネットワークの学習を行うステップと、重みの更新量をニューロモーフィックアレイの各素子のコンダクタンスの更新量に変換するステップと、変換したコンダクタンス更新量に基づく書き込み信号をニューロモーフィックアレイに印加するステップと、さらに更新量が最大となる素子を選択するステップと選択した素子に対してのみ追加的な書き込み信号を印加するステップと、改めて学習データをニューロモーフィックアレイに入力し、その教師信号との差分によって当該学習サイクルの終了を判定するステップと、を備える、ニューロモーフィックアレイの学習方法である。
【００６９】
一構成例として、可変な特性の値に応じた重みを信号に乗算するニューロモーフィック素子を含むアレイについて、ニューロモーフィック素子の特性の離散化ステップサイズに基づいて学習アルゴリズム演算する演算方法（例えば、学習制御回路６のコンダクタンス更新量計算部６４あるいは他のコンピュータにより行われる演算の方法）であって、ニューロモーフィック素子の特性の分解能よりも高い精度でニューラルネットワークの学習を行うステップと、重みの更新量をニューロモーフィックアレイの各素子のコンダクタンスの更新量に変換するステップと、変換したコンダクタンス更新量に基づく書き込み信号をニューロモーフィックアレイに印加するステップと、さらに更新量が最大となる素子を選択するステップと選択した素子に対してのみ追加的な書き込み信号を印加するステップと、改めて学習データをニューロモーフィックアレイに入力し、その教師信号との差分によって当該学習サイクルの終了を判定するステップと、をコンピュータに実行させるためのプログラムである。
ここで、コンピュータでは、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサがメモリに記憶されたプログラムを読み出して実行する。
【００７０】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【００７１】
本発明によれば、ニューロモーフィックアレイを使ってニューラルネットワークシステムの学習を行う場合に、コンピュータで計算された学習アルゴリズムを安定的に実行させることができる。
また、本発明によれば、ニューロモーフィックアレイを使用したニューラルネットワークにおいて学習アルゴリズムを高速に収束することが可能になる。
また、本発明によれば、ニューロモーフィックアレイを使用したニューラルネットワークにおいて、識別性能を改善することが可能になる。
【符号の説明】
【００７２】
１…ニューラルネットワークシステム
２…信号生成回路
３…ニューロモーフィックアレイ
３１…ニューロモーフィック素子
３１１…入力端子
３１２…共通端子
３２…共通ビット線
３３…ワード線
４…検出回路
５…差分回路
６…学習制御回路
６１…学習信号生成部
６２…教師信号生成部
６３…学習判定部
６４…コンダクタンス更新量計算部
６５…書き込み信号生成部
６６…追加書き込み信号生成部
Ｐｉｃ  Ｎｏ．  ０〜２４…画像
【図１】
0006881693.tif 000007
【図２】
0006881693.tif 000008
【図３】
0006881693.tif 000009
【図４】
0006881693.tif 000010
【図５】
0006881693.tif 000011
【図６】
0006881693.tif 000012
【図７】
0006881693.tif 000013
【図８】
0006881693.tif 000014
【図９】
0006881693.tif 000015
【図１０】
0006881693.tif 000016