(57)【要約】  入力層と隠れ層と出力層とを含むニューラルネットワークの層間の結合重みの情報を抵抗変化型メモリ素子により保持する機械学習デバイスであって、複数のデータ要素を含む入力データを受け入れ、ニューラルネットワークの結合重みの情報を用いて、複数のデータ要素を含む出力データを演算し、学習中は、当該出力データのうち、目的の値に達していないデータ要素の演算に係る結合重みの情報を保持する抵抗変化型メモリ素子に対し、目的の値に近接させる電気的信号を印加する学習処理を実行する。
2020141597.tif 000002
【特許請求の範囲】
【請求項１】
入力層と隠れ層と出力層とを含むニューラルネットワークの層間の結合重みの情報を抵抗変化型メモリ素子により保持する機械学習デバイスであって、
複数のデータ要素を含む入力データを受け入れ、前記ニューラルネットワークの前記結合重みの情報を用いて、複数のデータ要素を含む出力データを演算する演算手段と、
学習中は、前記出力データのうち、目的の値に達していないデータ要素の演算に係る前記結合重みの情報を保持する抵抗変化型メモリ素子に対し、目的の値に近接させる電気的信号を印加する学習処理を実行する学習手段と、
を含む機械学習デバイス。
【請求項２】
請求項１記載の機械学習デバイスであって、
前記学習手段は、前記学習処理では、前記出力データのｉ番目（ｉは自然数）のデータ要素の値の目的の値を、前記入力データの、対応するｉ番目のデータ要素の値として、前記出力データのうち、当該目的の値に達していないデータ要素の演算に係る前記結合重みの情報を保持する抵抗変化型メモリ素子に対し、前記目的の値に近接させる電気的信号を印加する機械学習デバイス。
【請求項３】
請求項１または２に記載の機械学習デバイスであって、
前記学習手段は、前記学習処理では、前記出力データのｉ番目のデータ要素の値の目的の値を、前記入力データの、対応するｉ番目のデータ要素の値として、
前記入力データのｊ番目（ｊは、ｉ≠ｊなる自然数）の値が予め定めた条件を満足する値となっているときに、前記出力データのうち、当該目的の値に達していないデータ要素の演算に係る前記結合重みの情報を保持する抵抗変化型メモリ素子に対し、前記目的の値に近接させる電気的信号を印加する機械学習デバイス。
【請求項４】
請求項１または２に記載の機械学習デバイスであって、
前記学習手段は、前記学習処理では、前記出力データのｉ番目のデータ要素の値の目的の値を、前記入力データの、対応するｉ番目のデータ要素の値として、
前記隠れ層のｊ（ｊは自然数）番目の要素が予め定めた値となっているときに、前記出力データのうち、当該目的の値に達していないデータ要素の演算に係り、前記ｊ番目の隠れ層に関わる前記結合重みの情報を保持する抵抗変化型メモリ素子に対し、前記目的の値に近接させる電気的信号を印加する機械学習デバイス。
【請求項５】
請求項１から４のいずれか一項に記載の機械学習デバイスであって、
前記入力層と隠れ層と出力層とにおける各データ要素の値はバイナリ値である機械学習デバイス。
【請求項６】
請求項１から４のいずれか一項に記載の機械学習デバイスであって、
前記入力層と隠れ層と出力層とにおける各データ要素の値は離散的に定められたいずれかの値である機械学習デバイス。
【請求項７】
請求項１から６のいずれか一項に記載の機械学習デバイスであって、
前記抵抗変化型メモリ素子の結合重みのそれぞれを保持する各セルは、定常状態では互いにコンダクタンスの異なる、Ｇk（ｋ＝０，１，…）の複数の状態のいずれかをとり、状態を変化させる電気的信号が印加されている間、変化状態となって、前記定常状態にて取り得る状態の間で変化し、当該所定の電気的信号の印加が終了した時点から前記定常状態のいずれかの状態に時間減衰して遷移する抵抗変化型メモリ素子であり、
前記学習手段は、複数の入力データを入力データセットとして受け入れて、当該入力データセットに含まれる入力データを順次用いて前記学習処理を実行し、当該学習処理の間に前記学習手段が目的の値に近接させる電気的信号を印加するときには、当該電気的信号の印加を予め定めた時間だけ続けて印加し、
前記学習手段は、一つの入力データセットに含まれる入力データを用いた学習処理を、予め定めた回数だけ繰り返し行う機械学習デバイス。
【請求項８】
請求項７記載の機械学習デバイスであって、
前記抵抗変化型メモリ素子のセルの各々は、互いに実質的に平行に配された上部電極と下部電極との間に、抵抗変化層を配してなり、前記抵抗変化層内には、フィラメントの減衰を規制する平板状の疑似電極が少なくとも一つ、前記上部電極または下部電極に実質的に平行に配されてなる機械学習デバイス。
【請求項９】
請求項８に記載の機械学習デバイスであって、
前記抵抗変化型メモリ素子のセルは二次元的な仮想的なＸＹ平面に配列され、各セルの前記上部電極は前記ＸＹ平面を張るＸ軸またはＹ軸のいずれか一方の方向に隣接するセルの上部電極に互いに接続されてなり、
前記セルの前記下部電極は、前記ＸＹ平面を張るＸ軸またはＹ軸のいずれか他方の方向に隣接するセルの下部電極に互いに接続されてなる機械学習デバイス。
【請求項１０】
入力層と隠れ層と出力層とを含むニューラルネットワークの層間の結合重みの情報を抵抗変化型メモリ素子により保持する機械学習デバイスの制御方法であって、
演算手段が、複数のデータ要素を含む入力データを受け入れ、前記ニューラルネットワークの前記結合重みの情報を用いて、複数のデータ要素を含む出力データを演算する工程と、
学習手段が、学習中は、前記出力データのうち、目的の値に達していないデータ要素の演算に係る前記結合重みの情報を保持する抵抗変化型メモリ素子に対し、目的の値に近接させる電気的信号を印加する学習処理を実行する工程と、
を含む機械学習デバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習デバイス及びその制御方法に関する。
【背景技術】
【０００２】
近年、ニューラルネットワーク等の機械学習装置が広く開発され、組合せ最適化問題および意思決定問題等の最適化問題の解の探索をはじめ、機械制御等の分野に至るまで、種々の応用研究も行われている。【０００３】
一例として特許文献１には、最適解探索問題の解を量子ドットからなるナノスケールの回路を利用して探索する量子ドットによる解探索システムが開示されている。また、特許文献２には、フィードバック制御を行って高速かつ効率的に充足可能性問題（Satisfiability Problem, SAT）を解くことが可能な解探索システムが開示されている。【０００４】
また一方、ニューラルネットワークに対する応用を念頭に、抵抗変化型メモリ素子の研究を行っている例もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２４２４７７号公報
【特許文献２】特開２０１４−８５７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来例の技術では、ニューラルネットワークの各層の結合重みの学習過程は、いわゆるバックプロパゲーションの処理により行われるため、演算が比較的複雑なものとなり、ＧＰＵ（Graphics Processing Unit）等、ベクトルや行列演算に適したハードウェアを用いているのが現状である。このために現実には、ニューラルネットワークの応用可能な現場は制限されており、学習処理のためのハードウェアを設置できる場所か、当該ハードウェアとの間で通信が可能な場所でなければならない。【０００７】
本発明は上記実情に鑑みて為されたもので、学習処理の負荷を軽減して小規模なハードウェアによる学習を可能とし、ニューラルネットワークの利用場面を拡大できる機械学習デバイス、及びその制御方法を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００８】
上記従来例の問題点を解決する本発明の一態様は、入力層と隠れ層と出力層とを含むニューラルネットワークの層間の結合重みの情報を抵抗変化型メモリ素子により保持する機械学習デバイスであって、複数のデータ要素を含む入力データを受け入れ、前記ニューラルネットワークの前記結合重みの情報を用いて、複数のデータ要素を含む出力データを演算する演算手段と、学習中は、前記出力データのうち、目的の値に達していないデータ要素の演算に係る前記結合重みの情報を保持する抵抗変化型メモリ素子に対し、目的の値に近接させる電気的信号を印加する学習処理を実行する学習手段と、を含むこととしたものである。
【発明の効果】
【０００９】
本発明によれば、基本的に、目的の値に達しているか否かという判断で学習処理を行うため、その負荷を軽減して小規模なハードウェアによる学習を可能とし、ニューラルネットワークの利用場面を拡大できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る機械学習デバイスの例を表す構成ブロック図である。
【図２】本発明の実施の形態に係る機械学習デバイスにおいて利用されるニューラルネットワークの構造例を表す説明図である。
【図３】本発明の実施の形態に係る機械学習デバイスが用いる抵抗変化型のメモリ素子の構成の概要例を表す説明図である。
【図４】本発明の実施の形態に係る機械学習デバイスが用いる抵抗変化型のメモリ素子におけるコンダクタンスの時間変化の例を表す説明図である。
【図５】本発明の実施の形態に係る機械学習デバイスに入力される学習用のデータセットの例を表す説明図である。
【図６】本発明の実施の形態に係る機械学習デバイスの機械学習の際の処理例を表すフローチャート図である。
【図７】本発明の実施の形態に係る機械学習デバイスにおける機械学習処理の内容例を表すフローチャート図である。
【図８】本発明の実施の形態に係る機械学習デバイスにおける抵抗変化型のメモリ素子の利用例を表す説明図である。
【図９】本発明の実施の形態に係る機械学習デバイスにおける抵抗変化型のメモリ素子の別の例を表す概略説明図である。
【図１０】本発明の実施の形態に係る機械学習デバイスにおける抵抗変化型のメモリ素子の別の例を表すもう一つの概略説明図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態に係る機械学習デバイスについて、図面を参照しながら説明する。本実施の形態の機械学習デバイスは、図１に例示するように、記憶部１１と、情報入力部１２と、学習処理部１３と、出力部１４とを含んで構成されている。
【００１２】
記憶部１１は、抵抗変化型メモリ１１ｍを含んで構成され、ニューラルネットワークの情報として、ニューラルネットワークの結合重みの情報を保持する。
【００１３】
本実施の形態の例のニューラルネットワークは、図２にその概要を例示するように、入力層と、１層の隠れ層と、出力層とを含む。入力層と出力層とはいずれもＮ個（Ｎは２以上の自然数）のノードＩ1，Ｉ2，…ＩN、Ｏ1，Ｏ2，…ＯNを備え、隠れ層はＮより少ない数のノードＨ1，Ｈ2…，ＨMを備えている。また、入力層のｊ番目のノードＩjと隠れ層のｉ番目のノードＨiとの間の結合重みをＷi,jとする。また隠れ層のｉ番目のノードＨiと、出力層のｊ番目のノードＯjとの間の結合重みを、Ｗj,iとする。
【００１４】
つまり、入力層のｊ番目のノードＩjと隠れ層のｉ番目のノードＨiとの間の結合重みＷをＷ＝［Ｗi,j］と行列で表現すると、隠れ層のｉ番目のノードＨiと、出力層のｊ番目のノードＯjとの間の結合重みは行列Ｗの転置行列ＷTとなっている。
【００１５】
また、このニューラルネットワークの結合重みの情報を保持する、本実施の形態の抵抗変化型メモリ１１ｍは、図３にその概略構成を示すように、複数の下部電極ライン１１１と、複数の上部電極ライン１１２と、抵抗変化層１１３とを含んで構成される。なお、図３では、図示の都合上、抵抗変化層１１３をその概略の外形として示し、内部を透過して示している。
【００１６】
ここで複数の下部電極ライン１１１は、平面内（この平面の法線方向をＺ軸とする）に互いに平行に（以下、この下部電極ライン１１１の長手方向をＸ軸方向とする）所定の間隔をおいて配されている。また複数の上部電極ライン１１２は、下部電極ライン１１１が配されている面と実質的に平行な（交わらない）面内に、互いに平行に、所定の間隔をおいて配される。この上部電極ライン１１２の長手方向はＸ軸に対して交わる方向となっており、ここでは一例としてＸ軸に直交するＹ軸方向に上部電極ライン１１２の長手方向が配されて、いわゆるクロスバー構造をなしているものとする。
【００１７】
ここで下部電極ライン１１１が配される面と、上部電極ライン１１２が配される面との間隔は５０ｎｍ程度以下、好ましくは１０ｎｍ以下となっている。また各電極ラインは金属材料で構成され、例えば、Ｐｔ、Ｃｕ，Ａｕ，Ｔｉ、Ａｇ等が好適に使用される。
【００１８】
また少なくとも、上部電極ライン１１２と下部電極ライン１１１とが平面視で交差している箇所（個々の抵抗変化型メモリ素子を構成し、メモリセルとなる箇所、図３中では破線で示す）においては下部電極ライン１１１と上部電極ライン１１２との間に、抵抗変化層１１３が配される。この抵抗変化層１１３は、印加電圧によって抵抗値を変化させる（従ってそのコンダクタンスも変化する）材料を含んでなる。このような材料としては固体電解質として、例えばＡｇ，Ｃｕ，Ｌｉ，Ｎａ，Ｍｇ，Ｆｅ，Ｎｉ，Ｔａ，Ｚｒなどといった金属の硫化物材料（Ａｇ2Ｓ，Ｃｕ2Ｓ等）や、酸化物材料（Ｔａ2Ｏ5，ＺｒＯ2）、あるいは上記金属のイオン（１価のＡｇ，Ｃｕ，Ｌｉ，Ｎａ，Ｍｇの各イオンや、２価のＦｅ，Ｎｉのイオン等）を含むポリエチレンオキシドなどの高分子系材料がある。
【００１９】
上部電極ライン１１２と下部電極ライン１１１とが平面視で交差している箇所は、メモリセルとなり、このメモリセルにおいて上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧を制御することで、当該メモリセルが保持する値（以下、保持値と呼ぶ。この保持値は実数値となる。以下の説明では保持可能な最大の保持値を「１」、最小の保持値を「０」と規格化したものとして説明する）を変化させ（データの書き込みを行い）、あるいはその保持値を維持させる。
【００２０】
このため本実施の形態では、メモリセルにおいて上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧が所定の電位差Ｖthを下回るように印加電圧を制御すると（図４では時刻０において制御を行うと）、図４（ａ）に示すように、保持値に相当するコンダクタンスは時間経過とともに成長に比べると迅速に減衰して「０」に近づき、当初の保持値が「１」であったときでも、上記電圧が上記電位差Ｖthを下回ることとなってから時刻Ｔrが経過したときには記憶している保持値は「０」となる。
【００２１】
また印加する電圧Ｖが所定の電位差Ｖthを超えて、このＶthから所定の範囲（Ｖth＜Ｖ＜Ｖth′）であるよう制御すると、電圧Ｖを印加する前の保持値が維持される。さらに印加する電圧Ｖを、この所定の電位差Ｖthから上記所定の範囲を超え、Ｖ0＋ΔＶ以上となる（Ｖ0＋ΔＶ＞Ｖth′）よう制御すると、図４（ｂ）に例示するように、保持値であるコンダクタンスは時間経過とともに指数関数的に最大値に近づき、当初の保持値が「０」であっても、上記電圧が上記電位差Ｖ0＋ΔＶ以上となってから時間Ｔsが経過したときには、保持値は「１」となる。
【００２２】
このように印加電圧に応じてコンダクタンスが変化する現象は、上部電極ライン１１２と下部電極ライン１１１との間にある抵抗変化層において、上部電極ライン１１２と下部電極ライン１１１との間に上記Ｖ0＋ΔＶ以上の電圧が印加されると、下部電極ライン１１１側から金属が析出して金属フィラメントとして成長して抵抗変化層の抵抗値が減少し（コンダクタンスは上昇し）、一方、上部電極ライン１１２と下部電極ライン１１１との間の電位差がＶthを下回ると金属フィラメントが再度イオン化して抵抗変化層の抵抗値が上昇する（コンダクタンスは低下する）ことから生じると考えられる。
【００２３】
なお、抵抗変化層の材質によっては、金属フィラメントが抵抗変化層の下部電極ライン１１１側の端から上部電極ライン１１２側の端まで成長すると、上部電極ライン１１２と下部電極ライン１１１との間の電位差がＶthを下回っても金属フィラメントの再イオン化が生じず、抵抗変化層の抵抗値が維持されるものがある。この場合は、再イオン化のために、保持値を「０」とするべく、一時的にリセット電圧（例えば−（Ｖ0＋ΔＶ））を印加して再イオン化を促す。
【００２４】
この記憶部１１の抵抗変化型メモリ１１ｍには、各メモリセルを選択する選択ラインが別途設けられていてもよい。またこのような抵抗変化型メモリ１１ｍに対してデータを書き込み・読み出しを行う方法は広く知られているので、ここでは簡単のために、その説明を省略する。
【００２５】
なお、この例に係る抵抗変化型メモリ１１ｍに対する印加電圧は、１ｍＶから高々１Ｖほどであり、一般的には１０〜５００ｍＶ程度であるため、その消費電力は比較的低く抑えられている。また上述のような、いわゆるクロスバー型の構造を有する抵抗変化型メモリは、広く知られている微細加工技術を用いて製造できる。
【００２６】
また本実施の形態の一例では、一対のメモリセルにより、一つの結合重みの情報が保持されるものとする。すなわち、本実施の形態の例では、一つの結合重みの情報Ｗi,jは、正の結合重みＷi,j,+と負の結合重みＷi,j,-との２つの値の差Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）として表され、一つのメモリセルは、いずれかの結合重みの情報に係る、正の結合重みまたは負の結合重みの一方の値を保持値として保持する。これにより抵抗変化型メモリの各メモリセルにおいて保持値を二値化して用いる場合であっても、正の値と負の値とを含む多値の表現が可能となる。
【００２７】
もっとも、本実施の形態はこの例に限られるものではなく、第１の電極ライン、第１の抵抗変化層、第２の電極ライン、第２の抵抗変化層、第３の電極ラインをこの順に積層したものを用いてもよい。この例の抵抗変化型メモリ１１ｍを用いると、第１の電極ラインと第２の電極ラインとの間に電圧を印加するか、あるいは第２の電極ラインと第３の電極ラインとの間に電圧を印加するかにより、第２の電極ラインを挟んで、第１の電極ラインと第３の電極ラインのうち一方の電極ライン側に新たな金属フィラメントが成長し、他方の金属フィラメントは収縮する、いわゆる綱引き型の動作をする原子スイッチとなる。この綱引き型の原子スイッチを用いる場合、第１の抵抗変化層の抵抗値と、第２の抵抗変化層の抵抗値とによりそれぞれ正の結合重みＷi,j,+と負の結合重みＷi,j,-との２つの値を表し、その差Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）として結合重みの情報Ｗi,jを表すこととしてもよい。
【００２８】
情報入力部１２は、ニューラルネットワークに対して入力する入力データを生成する。具体的に本実施の形態では、ニューラルネットワークへの入力データ及びニューラルネットワークの出力データはいずれもベクトルデータであり、入力層及び出力層の各ノードに対応する、複数のデータ要素を含んでいる。
【００２９】
そこで情報入力部１２は、例えば画像データを学習あるいは推論させる場合、入力データとしては、当該２値の画像データの画素の画素値を所定の順序（ラスタスキャン順でよい）で配列して、複数のデータ要素を含むベクトルデータとする。
【００３０】
学習処理部１３は、論理回路等により構成され、学習時（学習を行うか推論を行うかは外部から指示されるものとする）に、情報入力部１２から入力される情報を用いて、記憶部１１に格納したニューラルネットの結合重みの情報を更新する。なお、本実施の形態のここでの例では、抵抗変化型メモリ１１ｍの各メモリセルには、定常的に電圧Ｖ0が印加されているものとする。ここでの例では、この電圧Ｖ0は、メモリセルが保持している値を維持させるのに十分な電圧（Ｖth≦Ｖ0≦Ｖth′）であるものとする。
【００３１】
なお、この定常的に印加する電圧Ｖ0は、常に一定でなくてもよく、メモリセルごとに、当該メモリセルに電圧を印加する時点での金属フィラメントの成長の状態（すなわち当該メモリセルの抵抗値）に応じて変化するよう制御されてもよい。具体的には、メモリセルの抵抗値が小さいほど（金属フィラメントが成長しているほど）、Ｖ0の値を小さくすると、単位時間あたりの金属フィラメントの成長の度合いを、その時点での成長の状態によらず、実質的に均一にできる。
【００３２】
本実施の形態において、この結合重みの情報の更新は次のようにして行われる。学習処理部１３は、当初、結合重みの情報を予め定めた方法で初期化する。この初期化の方法はXavierの方法など、広く知られた種々の方法を採用できるので、ここでの詳しい説明は省略する。
【００３３】
そして学習処理部１３は、学習用に用意されたデータセットに含まれる、複数の入力データを逐次的に情報入力部１２から受け入れ、それぞれの入力データを、記憶部１１に格納したニューラルネットワークに入力したときの、当該ニューラルネットワークの出力データを演算する。
【００３４】
具体的に、ここでは入力データ及び出力データはいずれも、各データ要素が「０」または「１」となるバイナリ（２値）である（各ノードの値Ｉj，Ｏjが、Ｉj，Ｏj∈｛０，１｝である）とする。このとき学習処理部１３は、隠れ層の各ノードＨiの値を、記憶部１１が保持する保持値に基づいて得られるＷi,jを用いて、
Ｈi＝ｆ（Σj Ｗi,j・Ｉj＋ｂ）
として演算する。ここでΣjは、ｊについて総和することを意味し、ｂは予め定められたバイアス値（スカラー値）である。また、関数ｆ（Ｘ）は、Ｘ＞０のとき「１」となり、そうでない場合は「０」となる二値化の関数である（以下の説明において同じ）。
【００３５】
学習処理部１３は、さらに、出力層の各ノードＯjの値を、記憶部１１が保持する保持値に基づいて得られるＷi,jを用いて、
Ｏj＝ｆ（Σi Ｗj,i・Ｈi＋ｂ）
として演算する。ここでΣiは、ｉについて総和することを意味する。その他の部分は隠れ層のノードの演算に用いたものと同様である（バイアスの値は隠れ層を演算する際の値と同じであっても、異なっていてもよい）。
【００３６】
次に学習処理部１３は、出力データのデータ要素のうち、目的の値（教師データの対応するデータ要素の値）に達していないデータ要素の演算に係る結合重みの情報を保持する抵抗変化型メモリ１１ｍのメモリセルに対して、目的の値に近接させる電気的信号を印加するよう制御して、メモリセルの保持値を更新する。本実施の形態の一例では、ニューラルネットワークはオートエンコーダであり、この場合、入力データが教師データとなるので、出力データの各データ要素の目的の値は、入力データの対応するデータ要素の値となる。
【００３７】
具体的にこの学習処理部１３は、出力データのｊ番目のデータ要素の値（ノードＯjの値）が、入力データにおいて対応するｊ番目のデータ要素の値（ノードＩjの値）と等しくないとき（Ｏj≠Ｉjのとき）に、隠れ層の各ノードＨi（ｉ＝１，２，…）を順次参照し、隠れ層のｉ番目のノードの値が「１」（Ｈi＝１）であるときに、次の動作を行う。
【００３８】
学習処理部１３は、Ｏj≠Ｉjであるとき、Ｈi＝１であるならば、さらに、Ｉj＝０であるか否かを調べ、Ｉj＝０であれば、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴ（以下、ΔＴ＞Ｔs、かつΔＴ＞Ｔrとする）だけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位のパルス状の電圧を印加するよう制御する。このとき、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧は、予め定めた時間ΔＴだけＶthを下回るよう制御する。
【００３９】
また、学習処理部１３は、Ｏj≠Ｉjであるとき、Ｈi＝１であり、さらに、Ｉj＝１であるならば、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位のパルス状の電圧を印加するよう制御する。このとき、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧は、ΔＴの時間だけ、Ｖthを下回るよう制御する。
【００４０】
さらに学習処理部１３は、Ｏj＝Ｉjであるか、またはＨi＝０であるならば各メモリセルに印加する電圧を制御しない（Ｗi,j,+、及びＷi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧をＶ0に維持する）。
【００４１】
ここで隠れ層、出力層の各ノードの値の演算は、論理回路と加算器、並びにコンパレータ回路を用いて実現できる（関数ｆは値「０」と比較するコンパレータ回路で実現できる）。また学習の処理についても、各ノードの値の比較は、いずれもＡＮＤ回路等を用いて行うことができ、条件分岐はＡＮＤ回路またはＯＲ回路で実現でき、さらに電圧制御は、一般的な電圧制御回路によって実現できる。つまり、この学習処理部１３は、必ずしもプログラム実行モジュールであるプロセッサ等を必要としない、比較的簡便な回路によって実現できる。また、プログラム実行モジュールを用いる場合も、比較的簡単な、比較及び条件分岐によって処理が実現できるため、そのプログラムも簡便で処理負荷の低いものとなっている。このように本実施の形態によれば、小規模なハードウェアによる学習を可能とし、ニューラルネットワークの利用場面を拡大できる。
【００４２】
出力部１４は、論理回路等により構成され、推論時に、情報入力部１２から入力される情報と、記憶部１１に格納したニューラルネットワークの結合重みの情報とを用いて、推論を行う。
【００４３】
具体的に、この出力部１４は、まず隠れ層の各ノードＨiの値を、記憶部１１が保持する保持値に基づいて得られるＷi,jを用いて、
Ｈi＝ｆ（Σj Ｗi,j・Ｉj＋ｂ）
として演算する。そして出力部１４は、さらに、出力層の各ノードＯjの値を、記憶部１１が保持する保持値に基づいて得られるＷi,jを用いて、
Ｏj＝ｆ（Σi Ｗj,i・Ｈi＋ｂ）
として演算する。これらの演算は、学習処理部１３において出力データを得る際の演算と同様であるので、繰り返しての説明を省略する。
【００４４】
出力部１４は、ここで得られた出力層の各ノードの値から、出力データを生成して推論の結果として出力する。例えば推論の結果として画像データを得る場合、出力データの各データ要素の値を所定のサイズ（入力データが画像データの場合、同じサイズでよい）の平面的画像データの各画素値として、所定の順序（ラスタスキャン順でよい）で配列して画像データとする。
【００４５】
［動作］
本発明の実施の形態に係る機械学習デバイスは、基本的に上記の構成を有し、次のように動作する。以下の例では、図５に例示するようなグレイスケール画像データを学習する例について述べる。
【００４６】
本実施の形態の機械学習デバイスの学習処理部１３は、学習処理の開始指示（初期化して開始する指示）を受けて、図６（ａ）に例示する処理を開始する。学習処理部１３は、まず図２に例示したニューラルネットワークの結合重みを初期化する（Ｓ１）。
【００４７】
具体的には、学習処理部１３は、予め定めた方法で、結合重みの情報を表す、Ｗi,j（ｉ＝１，２，…Ｎ、ｊ＝１，２，…Ｍ、ただしＮは入力層と出力層とのノードの数、Ｍは隠れ層のノードの数）のそれぞれの初期値を決定し、これらのうち「０」とすると決定した結合重みを保持する記憶部１１のメモリセル（結合重みＷi,j,+，Ｗi,j,-のそれぞれの値を保持するメモリセル）には保持値が「０」となるのに十分な時間だけ電位Ｖ０を下回る電圧が印加されるよう制御する。これにより対応するメモリセルにおいて金属フィラメントがイオン化した状態となって（あるいはその状態を維持することとなって）、これらのメモリセルの保持値が「０」に設定される。
【００４８】
また学習処理部１３は、初期値を決定した結合重みのうち、「１」とすると決定した結合重みの、正の値Ｗi,j,+を保持する記憶部１１のメモリセルにはＶ0＋ΔＶを超える電圧が印加され、負の値Ｗi,j,-を保持する記憶部１１のメモリセルには電位Ｖ０を下回る電圧が印加されるよう制御する。なお、この電圧の印加時間は、少なくとも正の値Ｗi,j,+を保持するメモリセルの保持値が「１」となるのに十分な時間としておく。このようにすると、正の値Ｗi,j,+を保持する記憶部１１のメモリセルでは金属フィラメントが成長し、当該メモリセルの保持値が「１」まで増大する。また、負の値Ｗi,j,-を保持する記憶部１１のメモリセルでは金属フィラメントがイオン化した状態となって（あるいはその状態を維持することとなって）、このメモリセルの保持値が「０」まで減少する。これにより結合重みＷi,jが、Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）＝１と設定される。
【００４９】
さらに学習処理部１３は、初期値を決定した結合重みのうち、「−１」とすると決定した結合重みの、正の値Ｗi,j,+を保持する記憶部１１のメモリセルには電位Ｖ０を下回る電圧が印加され、負の値Ｗi,j,-を保持する記憶部１１のメモリセルにはＶ0＋ΔＶを超える電圧が印加されるよう制御する。ここでも、この電圧の印加時間は、少なくとも負の値Ｗi,j,-を保持するメモリセルの保持値が「１」となるのに十分な時間としておく。このようにすると、正の値Ｗi,j,+を保持する記憶部１１のメモリセルでは金属フィラメントがイオン化した状態となって（あるいはその状態を維持することとなって）、このメモリセルの保持値が「０」まで減少する。また負の値Ｗi,j,-を保持する記憶部１１のメモリセルでは金属フィラメントが成長して、当該メモリセルの保持値が「１」まで増大する。これにより、Ｗi,jが、Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）＝−１と設定される。
【００５０】
次に学習処理部１３は、図７に示す機械学習処理を開始する（Ｓ２）。この機械学習処理により学習を行わせるときには、ニューラルネットワークに対して入力する入力データとして、図５に例示したようなグレイスケール画像データを複数用意してデータセットとする。情報入力部１２は、用意されたデータセットに含まれるグレイスケール画像データの各々について、その各画素の画素値をラスタスキャン順に配列したベクトルデータＩj（ｊ＝１，２，…Ｎ）を生成する。
【００５１】
学習処理部１３は、図７に例示するように、情報入力部１２が各グレイスケール画像データについて生成したベクトルデータを受け入れ、それを逐次的に選択する（Ｓ１１）。学習処理部１３は、選択したベクトルデータをニューラルネットワークに入力し、ニューラルネットワークの出力データを演算する（Ｓ１２）。
【００５２】
具体的に学習処理部１３は、記憶部１１に含まれる各メモリセルの保持値である結合重みＷi,j,+及びＷi,j,-を参照し、結合重みの情報Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）を得る。そして、隠れ層の各ノードＨiの値を、
Ｈi＝ｆ（Σj Ｗi,j・Ｉj＋ｂ）
として演算する。そして学習処理部１３はさらに、出力層の各ノードＯjの値を、
Ｏj＝ｆ（Σi Ｗj,i・Ｈi＋ｂ）
として演算する。ここでＷj,iは、Ｗi,jを要素とする行列［Ｗi,j］の転置行列［Ｗi,j］Tのｊ行ｉ列目の要素である。
【００５３】
この間、記憶部１１に保持されている結合重みの情報はそのまま保持する。学習処理部１３は、演算で求めた出力データの各データ要素Ｏj（ｊ＝１，２，…Ｎ）を参照し、対応する入力データのデータ要素Ｉjと異なる値となっている（Ｏj≠Ｉjである）出力データのデータ要素Ｏjを抽出する（Ｓ１３）。
【００５４】
学習処理部１３は、隠れ層の各ノードＨi（ｉ＝１，２，…Ｍ）を順次参照し（Ｓ１４）、隠れ層のｉ番目のノードＨiの値が「１」であるか否かを調べる（Ｓ１５）。ここで、Ｈiの値が「１」であれば（Ｓ１５：Ｙｅｓ）、処理Ｓ１３で抽出したデータ要素Ｏjのそれぞれについて（Ｓ１６）、当該データ要素Ｏjに対応する入力データのデータ要素Ｉjが「０」であるか否かを調べ（Ｓ１７）、Ｉj＝０であれば（Ｓ１７：Ｙｅｓ）、Ｗi,j,+の値を増大させるよう制御し、Ｗi,j,-の値を減少させるよう制御する。つまり、Ｏj≠Ｉjかつ、Ｈi＝「１」、かつＩj＝「０」ならば、学習処理部１３は、結合重みＷi,jを増大させる（Ｓ１８）。
【００５５】
また学習処理部１３は、処理Ｓ１７において、Ｉj＝「１」であれば（Ｓ１７：Ｎｏ）、Ｗi,j,-の値を増大させるよう制御し、Ｗi,j,+の値を減少させるよう制御する。つまり、Ｏj≠Ｉjかつ、Ｈi＝「１」、かつＩj＝「１」ならば、学習処理部１３は、結合重みＷi,jを減少させる（Ｓ１９）。
【００５６】
この処理Ｓ１８，Ｓ１９においてＷi,j,+や、Ｗi,j,-の値を増大させる制御は、当該増大させようとする値を保持値として保持するメモリセルに対して印加する電圧を、予め定めた時間ΔＴpだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶ＞Ｖth′の電位の電圧を印加するよう制御することによって行われる。
【００５７】
また処理Ｓ１８，Ｓ１９においてＷi,j,+や、Ｗi,j,-の値を減少させるよう制御させる際には、当該減少させようとする値を保持値として保持するメモリセルに対して印加する電圧を、予め定めた時間ΔＴmだけ、電位差Ｖthを下回る電圧とする。
【００５８】
ここで保持値を増大させるための時間ΔＴｐと保持値を減少させるための時間ΔＴｍは互いに異なっていてもよい。これらの時間ΔＴｐ，ΔＴｍは、例えばそれぞれ、保持値を「１」，「０」とするのに十分な時間としてもよい。またこれらの時間ΔＴｐ，ΔＴｍは、保持値をそれぞれ「０」から所定の値だけ増大または「１」から所定の値だけ減少させるのに十分な時間だけとしてもよい。
【００５９】
学習処理部１３は、処理Ｓ１７，Ｓ１８またはＳ１９の処理を、処理Ｓ１３で抽出したデータ要素Ｏjの数だけ繰り返し、さらに処理Ｓ１５以降の処理を、隠れ層のノードの数だけ繰り返す。なお、学習処理部１３は、処理Ｓ１５において、Ｈiの値が「０」であれば（Ｓ１５：Ｎｏ）、処理Ｓ１６からＳ１９までの処理を行わずに、繰り返しの処理を続ける（次の隠れ層のノードについて処理Ｓ１５以下の処理を実行する）。
【００６０】
学習処理部１３は、処理Ｓ１１に戻って、次に入力するべきベクトルデータがあれば、当該ベクトルデータについて処理Ｓ１２以下の処理を繰り返して実行する。また、次に入力するべきベクトルデータがなければ（受け入れたすべてのベクトルデータについて処理を終了したならば）、図７の機械学習処理を終了する。
【００６１】
この図６（ａ），図７に例示した学習処理部１３の処理は、マイクロコンピュータ等を用いても実現できる。この場合も、マイクロコンピュータが行う処理としては、バイナリの比較処理と繰り返しの処理、そして電圧制御の処理のみとなっているので、処理負荷は一般的なバックプロパゲーションの処理を行う場合に比べて軽減されている。
【００６２】
また、この学習処理部１３は、既に述べたように、論理回路を用いたハードウェアとしても実現できる。この場合、処理Ｓ１４，Ｓ１６に例示するような逐次的な選択動作を実現する方法としては、例えばマルチプレクサ及びクロック回路等の回路を用いる方法など、種々の広く知られた方法を採用できる。
【００６３】
［学習処理の他の例］
なお、ここでは学習処理の方法として、入力層、出力層の各ノードの値と、隠れ層の各ノードの値とを参照することとしていたが、本実施の形態はこれに限られず、より簡便に、隠れ層のノードの値を参照することなく、入力層と出力層の各ノードの値のみを参照して学習処理を行ってもよい。
【００６４】
すなわち本実施の形態のもう一つの例に係る学習処理部１３は、出力データのうち、目的の値に達していないデータ要素の演算に係る結合重みの情報を保持する抵抗変化型メモリ１１ｍのメモリセルに対して、目的の値に近接させる電気的信号を印加するよう制御する点で既に説明した例と同じ動作を行うが、具体的な処理の内容が異なる。
【００６５】
すなわち、この学習処理部１３は、出力データのｊ番目のデータ要素の値（ノードＯjの値）が、入力データにおいて対応するｊ番目のデータ要素の値（ノードＩjの値）と等しくないとき（Ｏj≠Ｉjのとき）に、入力層の各ノードＩi（ｉ＝１，２，…Ｎ、ただしｉ≠ｊ）を順次参照し、隠れ層のｉ番目（ｉはｊとは異なる）のノードの値が「１」（Ｉi＝１）であるときに、次の動作を行う。
【００６６】
学習処理部１３は、Ｏj≠Ｉjであるとき、Ｉi＝１（ｊ≠ｉ）であるならば、さらに、Ｏj＝０であるか否かを調べる。ここでＯj＝０であれば、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｐだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位の電圧を印加するよう制御する。このとき、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧は、予め定めた時間ΔＴｍに亘り、Ｖthを下回るよう制御する。
【００６７】
また、学習処理部１３は、Ｏj≠Ｉjであるとき、Ｏi＝１（ｊ≠ｉ）であり、さらに、Ｏj＝１であるならば、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｐだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位の電圧を印加するよう制御する。このとき、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧は、ΔＴｍの時間だけＶthを下回るよう制御する。
【００６８】
さらに学習処理部１３は、Ｏj＝Ｉjであるか、またはＩi＝０であるならば各メモリセルに印加する電圧を制御しない（Ｗi,j,+、及びＷi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧をＶ0に維持する）。
【００６９】
この例の学習の処理においても、各ノードの値の比較は、いずれもＡＮＤ回路等を用いて行うことができ、条件分岐はＡＮＤ回路またはＯＲ回路で実現でき、さらに電圧制御は、一般的な電圧制御回路によって実現できる。つまり、この学習処理部１３は、必ずしもプログラム実行モジュールであるプロセッサ等を必要としない、比較的簡便な回路によって実現できる。また、プログラム実行モジュールを用いる場合も、比較的簡単な、比較及び条件分岐によって処理が実現できるため、そのプログラムも簡便で処理負荷の低いものとなっている。このように本実施の形態によれば、小規模なハードウェアによる学習を可能とし、ニューラルネットワークの利用場面を拡大できる。
【００７０】
［減衰を利用する例］
また、本実施の形態では、記憶部１１の抵抗変化型メモリ１１ｍのメモリセルに定常的に印加する電位Ｖ0を電位Ｖthから所定の電位Ｖmだけ下回る値に設定して、時間的にフィラメントを減衰させて用いてもよい。このようにすると、学習内容を時間経過とともに減衰させるメモリとして用いることが可能となり、自然な忘却処理が実現できる。ここで所定の電位Ｖmの値を制御することで、忘却の速度も制御できる（Ｖｍを小さくすると減衰が起こりにくいため忘却速度は遅くなり、大きくすると減衰が迅速に進むため忘却速度が速まる）。
【００７１】
さらに、このように金属フィラメントの減衰による忘却処理を用いる場合は、学習処理部１３は、一つのデータセットを用いた学習処理を複数回繰り返して行ってもよい。すなわち、本実施の形態の一例では、学習処理部１３は、図６（ｂ）に例示するように、図２に例示したニューラルネットワークの結合重みを初期化（Ｓ１）した後、ループを開始し（Ｓ３）、図７に示した機械学習処理を実行する（Ｓ２）。そして図７の機械学習処理が終了するごとに、ループの終了条件を満足したか（例えば予め定めた繰り返し回数だけ機械学習処理を実行したか）否かを調べ（Ｓ４）、予め定めた繰り返し回数の機械学習処理を行っていないなど、ループの終了条件を満足していない場合には、処理Ｓ２に戻って処理を繰り返す。また、予め定めた繰り返し回数の機械学習処理が行われたなど、ループの終了条件が満足されているならば、機械学習に係る処理を終了する。この場合に、処理Ｓ２の機械学習処理では、繰り返しの各回ごとに同じデータセットを利用した機械学習処理を行う。
【００７２】
また、この場合の機械学習処理（処理Ｓ２）では、各メモリセルが保持する値の更新（メモリセルに印加する電圧の制御）を行う時間の間隔が、メモリセルに対して定常的に印加する電圧Ｖ0を印加したときに当該メモリセルのコンダクタンスが最大の状態から最小の状態まで減衰するのに要する時間Ｔrより短い時間となるように上記電位Ｖmを設定するか、学習の処理を行うようにしてもよい。
【００７３】
このようにすると、メモリセルの金属フィラメントが減衰しきらずに残存している状況で次の学習が行われるため、図８に例示するように、例えば当初「１」の値を保持しているメモリセル（金属フィラメントが十分成長して、コンダクタンスが十分大きいメモリセル）において、次の入力データに対する学習処理で、値の更新が行われたときに記憶内容が維持されることとなると、電圧Ｖ0が印加されて、徐々にコンダクタンスが減衰する（Ａ）。
【００７４】
そしてさらに次の入力データに対する学習処理で、このメモリセルに対して保持値の更新が行われたときに、保持値が増大するように、このメモリセルの金属フィラメントを成長させるだけの電圧Ｖ0＋ΔＶがΔＴｐの時間だけ印加されると、減衰中の状態（保持値を表すコンダクタンスが「０」となっていない状態）で再度、ΔＴｐの時間だけ金属フィラメントが成長して保持値が増大する（Ｂ）。
【００７５】
このように本実施の形態のこの例（減衰を利用する例）では、確率的にメモリセルの状態が制御されてニューラルネットワークの結合重みの情報が更新されることとなり、入力データにノイズが含まれている場合に過学習してしまうことなどを防止できる。
【００７６】
［多値メモリの例］
また本実施の形態のここまでの説明では、記憶部１１の抵抗変化型メモリ１１ｍが保持する保持値は電圧を印加しない状態では、「０」または「１」に維持されるものとしたが、本実施の形態で用いる記憶部１１を実現する抵抗変化型メモリは、この例の抵抗変化型メモリに限られない。
【００７７】
本実施の形態のもう一つの例に係る機械学習デバイスの記憶部１１を実現する抵抗変化型メモリ１１ｍは、図９にその構造を例示するように、下部電極ライン１１１と、上部電極ライン１１２との間にある抵抗変化層１１３内に、下部電極ライン１１１及び上部電極ライン１１２に対してそれぞれ平行に配された（従って互いに平行に配された状態にある）複数の抵抗保持層１１４ａ，ｂ，…ｎを備える。なお、下部電極ライン１１１と上部電極ライン１１２とはそれぞれ複数本ずつ平行して互いに異なる面内（この面の法線方向をＺ軸とする）に配され、下部電極ライン１１１と上部電極ライン１１２とのそれぞれの長手方向の角度は平面視では交差するように配される。具体的には下部電極ライン１１１の長手方向はＸ軸方向に配され、上部電極ライン１１２の長手方向はＸ軸方向に対して直交するＹ軸方向に配されるものとする（つまりここでもクロスバー構造を有する）。
【００７８】
本実施の形態の一例では、この抵抗保持層１１４は、抵抗変化層１１３内に析出する金属フィラメントの金属と同じ素材の金属を用いて形成するものとする。この抵抗保持層１１４が本発明の疑似電極に相当する。またこの抵抗保持層１１４は平面視では、ひとつのメモリセルに含まれる抵抗変化層１１３に内包される程度の大きさを有するものとする（図１０）。
【００７９】
このように抵抗保持層１１４を備えたメモリセルにおいて上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧を制御すると、当該メモリセルが保持する値が次のように変化する。なお、以下の例において、下部電極ライン１１１に最も近い側にある抵抗保持層１１４ａを、第１の抵抗保持層１１４ａと呼び、以下下部電極ライン１１１に近い順に、各抵抗保持層１１４ｂ，ｃ…ｎを、第２の抵抗保持層１１４ｂ，第３の抵抗保持層１１４ｃ…と呼ぶ。
【００８０】
このメモリセルにおいて当初、金属フィラメントが抵抗変化層１１３の下部電極ライン１１１側の端（以下、下端と呼ぶ）から第ｋの抵抗保持層１１４ｋまで成長した状態にあるとするとき、上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧が所定の電位差Ｖthを下回るよう制御すると、図４（ａ）に示した例と同様、コンダクタンスは時間経過とともに成長に比べると迅速に減衰して、所定の時間（時間Ｔr）が経過した後、下端から金属フィラメントが第（ｋ−１）番目の抵抗保持層１１４（ｋ−１）まで成長した状態となる。この状態でさらに上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧が所定の電位差Ｖthを下回るよう制御すると、コンダクタンスは時間経過とともにさらに減衰して、さらに所定の時間（時間Ｔr）が経過した後には、下端から金属フィラメントが第（ｋ−２）番目の抵抗保持層１１４（ｋ−２）まで成長した状態となる。以下、上記印加する電圧が所定の電位差Ｖthを下回るよう制御している間、次々とコンダクタンスが減少していく。このような印加電圧の制御を以下では「減衰制御」と呼ぶ。
【００８１】
また、このメモリセルにおいて、上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧がこの所定の電位Ｖthから所定の範囲（Ｖthを超え、Ｖth＋Ｖth′までの範囲とする）となるよう制御すると、金属フィラメントは成長も減衰もせず、その時点で金属フィラメントが抵抗変化層１１３の下部電極ライン１１１側の端（以下、下端と呼ぶ）から第ｋの抵抗保持層１１４ｋまで成長した状態にあったときには、その状態が維持される。この印加電圧の制御を、以下では「維持制御」と呼ぶ
【００８２】
なお、抵抗変化層の材質によっては、金属フィラメントがいずれかの抵抗保持層１１４まで成長した状態にあるときには、上部電極ライン１１２と下部電極ライン１１１との間の電位差がＶthを下回るよう制御されても、下端からその時点で金属フィラメントが接触している抵抗保持層１１４（直近の下部電極ライン１１１に近い側の抵抗保持層）まで成長した状態が維持される。つまり、抵抗保持層１１４により、金属フィラメントの減衰が規制される。この場合に、記憶している値を「０」に近接させる際には、減衰制御を行う前に、印加電圧を、一時的にリセット電圧（例えば−（Ｖ0＋ΔＶ））とするよう制御してもよい。なお、学習処理を行っている間は、リセット電圧の印加を行わないこととしてもよい。
【００８３】
また金属フィラメントが抵抗変化層１１３の下部電極ライン１１１側の端（以下、下端と呼ぶ）から第ｋの抵抗保持層１１４ｋまで成長した状態にあるときに、上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧Ｖが所定の電位差Ｖthを超えて、Ｖ0＋ΔＶ以上となる（Ｖ0＋ΔＶ＞Ｖth′）よう制御すると、図４（ｂ）に例示したように、コンダクタンスは時間経過とともに指数関数的に増大して、所定の時間（時間Ｔs）が経過した後、金属フィラメントが、下端から次の（上部電極ライン１１２に近い側の）第（ｋ＋１）番目の抵抗保持層１１４（ｋ＋１）まで成長した状態となる。
【００８４】
この状態でさらに上部電極ライン１１２と下部電極ライン１１１との間に印加する電圧がＶ0＋ΔＶ以上となるよう制御し続けると、コンダクタンスは時間経過とともにさらに指数関数的に増大して、また所定の時間（時間Ｔs）が経過した後には、下端から金属フィラメントが第（ｋ＋２）番目の抵抗保持層１１４（ｋ＋２）まで成長した状態となる。以下、上記印加する電圧がＶ0＋ΔＶ以上であるよう制御されている間、次々とコンダクタンスが増大していく。この印加電圧の制御を、以下では「成長制御」と呼ぶ。
【００８５】
そしてこの例では、金属フィラメントが下端からどの抵抗保持層１１４ａ，ｂ，…ｎ（あるいは抵抗変化層１１３の上部電極ライン１１２側端部、以下「上端」という）まで成長しているかに対応する状態Ｇｋ（ｋ＝１，２，…）により、抵抗変化層１１３のコンダクタンスが、複数の状態Ｇkに対応する複数段階の保持値（コンダクタンス）のいずれかとなり、この段階のいずれかであれば、電圧を印加しない状態でも保持値であるコンダクタンスは維持される。
【００８６】
つまり、この抵抗変化層１１３を含むメモリセルは、電圧を印加しない状態で、単体で多値の情報を保持可能となる。なお、ここでの例でも最大のコンダクタンスの値を表す保持値を「１」、最小のコンダクタンスの値を表す保持値を「０」と規格化したものとして説明する。
【００８７】
このような多値の情報を保持可能な抵抗変化型メモリ１１ｍを用いる場合、学習処理部１３は次のように動作する。
【００８８】
この例における学習処理部１３は、学習用に用意された複数の入力データを逐次的に情報入力部１２から受け入れて、それぞれの入力データを、記憶部１１に格納したニューラルネットワークに入力したときの、当該ニューラルネットワークの出力データを演算する。
【００８９】
この例においても入力データ及び出力データはいずれも、各データ要素が「０」または「１」となるバイナリ（２値）であるものとする（各ノードの値Ｉj，Ｏjが、Ｉj，Ｏj∈｛０，１｝である）とする。このとき学習処理部１３は、隠れ層の各ノードＨiの値を、
Ｈi＝ｆ（Σj Ｗi,j・Ｉj＋ｂ）
として演算する。ここでΣjは、ｊについて総和することを意味し、ｂは予め定められたバイアス値（スカラー値）である。また、関数ｆ（Ｘ）は、既に述べた通り、Ｘ＞０のとき「１」となり、そうでない場合は「０」となる二値化の関数である。
【００９０】
またこの例においても、一つの結合重みの情報Ｗi,jあたり一対のメモリセルを用い、各メモリセルがそれぞれ正の結合重みＷi,j,+または負の結合重みＷi,j,-の値を保持するものとする。そして結合重みの情報Ｗi,jは、これら２つの値の差Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）として表すものとする。本実施の形態のここでの例では、抵抗変化型メモリの各メモリセルにおいて多値の情報（０，Ｇ，２Ｇ，…ｎＧのいずれかの値、ここでｎは正の整数）が保持されているため、−ｎＧから＋ｎＧまでの間の多値の表現が可能となる（ただし−１≦−ｎＧ＜０＜ｎＧ≦１）。
【００９１】
学習処理部１３は、さらに、出力層の各ノードＯjの値を、
Ｏj＝ｆ（Σi Ｗj,i・Ｈi＋ｂ）
として演算する。ここでΣiは、ｉについて総和することを意味する。その他の部分は隠れ層のノードの演算に用いたものと同様である（バイアスの値は隠れ層を演算する際の値と同じであっても、異なっていてもよい）。
【００９２】
次に学習処理部１３は、出力データのうち、目的の値に達していないデータ要素の演算に係る結合重みの情報を保持する抵抗変化型メモリ１１ｍのメモリセルに対して、目的の値に近接させる電気的信号を印加するよう制御する。ここでニューラルネットワークがオートエンコーダであるとすると、出力データの各データ要素の目的の値は、入力データの対応するデータ要素の値となる。
【００９３】
この学習処理部１３は、出力データのｊ番目のデータ要素の値（ノードＯjの値）が、入力データにおいて対応するｊ番目のデータ要素の値（ノードＩjの値）と等しくないとき（Ｏj≠Ｉjのとき）に、隠れ層の各ノードＨi（ｉ＝１，２，…）を順次参照し、隠れ層のｉ番目のノードの値が「１」（Ｈi＝１）であるときに、次の動作を行う。
【００９４】
学習処理部１３は、Ｏj≠Ｉjであるとき、Ｈi＝１であるならば、さらに、Ｉj＝０であるか否かを調べ、Ｉj＝０であれば、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｐ（以下、ΔＴ＞Ｔs、かつΔＴ＞Ｔrとする）だけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位の電圧を印加するよう制御する（成長制御）。このとき学習処理部１３は、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｍだけ、Ｖthを下回るよう制御する（減衰制御）。ここでΔＴｐ，ΔＴｍは、既に説明した例と同様に定められる（以下同様）。
【００９５】
また学習処理部１３は、Ｏj≠Ｉjであるとき、Ｈi＝１であり、さらに、Ｉj＝１であるならば、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｐだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位の電圧を印加するよう制御する（成長制御）。このとき学習処理部１３は、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、ΔＴｍの時間だけ、Ｖthを下回るよう制御する（減衰制御）。
【００９６】
さらに学習処理部１３は、Ｏj＝Ｉjであるか、またはＨi＝０であるならば各メモリセルに印加する電圧を変化させないよう制御する（Ｗi,j,+、及びＷi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧をＶ0に維持する：維持制御）。
【００９７】
またここでの例でも、学習処理部１３が入力層、出力層の各ノードの値と、隠れ層の各ノードの値とを参照する代わりに、より簡便に、隠れ層のノードの値を参照することなく、入力層と出力層の各ノードの値のみを参照して学習処理を行ってもよい。
【００９８】
多値の結合重みの情報を保持するメモリセルを用いた場合の、この例に係る学習処理部１３は、それぞれの入力データを、記憶部１１に格納したニューラルネットワークに入力したときの、当該ニューラルネットワークの出力データを演算する処理までは上述と同様に動作する。
【００９９】
そして学習処理部１３は、出力データのｊ番目のデータ要素の値（ノードＯjの値）が、入力データにおいて対応するｊ番目のデータ要素の値（ノードＩjの値）と等しくないとき（Ｏj≠Ｉjのとき）に、入力層の各ノードＩi（ｉ＝１，２，…Ｎ、ただしｉ≠ｊ）を順次参照し、隠れ層のｉ番目（ｉはｊとは異なる）のノードの値が「１」（Ｉi＝１）であるときに、次の動作を行う。
【０１００】
学習処理部１３は、Ｏj≠Ｉjであるとき、Ｉi＝１（ｊ≠ｉ）であるならば、さらに、Ｏj＝０であるか否かを調べる。ここでＯj＝０であれば、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｐだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位の電圧を印加するよう制御する（成長制御）。このとき、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧は、予め定めた時間ΔＴｍに亘り、Ｖthを下回るよう制御する（減衰制御）。
【０１０１】
また、学習処理部１３は、Ｏj≠Ｉjであるとき、Ｏi＝１（ｊ≠ｉ）であり、さらに、Ｏj＝１であるならば、Ｗi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧を、予め定めた時間ΔＴｐだけ、定常的に印加されている電圧Ｖ0からΔＶだけ上昇させ、当該メモリセルにＶ0＋ΔＶの電位の電圧を印加するよう制御する（成長制御）。このとき、Ｗi,j,+の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧は、ΔＴｍの時間だけＶthを下回るよう制御する（減衰制御）。
【０１０２】
さらに学習処理部１３は、Ｏj＝Ｉjであるか、またはＩi＝０であるならば各メモリセルに印加する電圧を変化させないよう制御する（Ｗi,j,+、及びＷi,j,-の値を保持する抵抗変化型メモリ１１ｍのメモリセルに印加する電圧をＶ0に維持する：維持制御）。
【０１０３】
これらの例の学習の処理においても、各ノードの値の比較は、いずれもＡＮＤ回路等を用いて行うことができ、条件分岐はＡＮＤ回路またはＯＲ回路で実現でき、さらに電圧制御は、一般的な電圧制御回路によって実現できる。つまり、この学習処理部１３は、必ずしもプログラム実行モジュールであるプロセッサ等を必要としない、比較的簡便な回路によって実現できる。また、プログラム実行モジュールを用いる場合も、比較的簡単な、比較及び条件分岐によって処理が実現できるため、そのプログラムも簡便で処理負荷の低いものとなっている。このように本実施の形態によれば、小規模なハードウェアによる学習を可能とし、ニューラルネットワークの利用場面を拡大できる。
【０１０４】
［繰り返し学習］
さらに、このように多値の情報を保持可能な抵抗変化型メモリ１１ｍを用いる場合も、維持制御の際の電位Ｖ0をＶthから所定の電位Ｖmだけ下回る値に設定して、時間的にフィラメントを減衰させて用いてもよい。このようにすると、学習内容が時間経過とともに減衰して、自然な忘却処理が実現できる。
【０１０５】
さらに、このように金属フィラメントの減衰による忘却処理を用いる場合も、図６（ｂ）に例示したように、学習処理部１３が一つのデータセットを用いた学習処理を複数回繰り返して行ってもよい。
【０１０６】
また、この場合の機械学習処理（図６の処理Ｓ２，図７の処理）でも、各メモリセルが保持する値の更新（メモリセルに印加する電圧の制御）を行う時間の間隔が、メモリセルに対して定常的に印加する電圧Ｖ0を印加したときに当該メモリセルのコンダクタンスが最大の状態から最小の状態まで減衰するのに要する時間Ｔrより短い時間となるように上記電位Ｖmを設定するか、学習の処理を行うようにしてもよい。
【０１０７】
［収束を学習の終了条件とする場合］
ここまでの説明において、同じデータセットを用いて繰り返して機械学習を行うときに、当該繰り返しを終了する条件は、繰り返し回数によって定めるものとしていたが、本実施の形態はこれに限られない。
【０１０８】
例えば機械学習処理（図６の処理Ｓ２，図７の処理）を行う際に、値を変更したメモリセルの数をカウントし、このカウント値が予め定めた閾値を下回ったときに、学習の内容が収束したものとして、機械学習処理の繰り返しを終了してもよい。
【０１０９】
［チップ化］
また本実施の形態の機械学習デバイスは、記憶部１１と、情報入力部１２と、学習処理部１３と、出力部１４とを一つのチップとしてパッケージしたものとしてもよい。学習処理部１３が既に述べたように、論理回路等、比較的簡易な回路で構成されるため、これらを一つのチップとしてパッケージしても回路が大規模化することがない。
【０１１０】
［推論動作］
次に、以上のように機械学習を行った機械学習デバイスを用いて推論処理（例えば画像データの想起処理）を行う方法について説明する。この例では、推論のもととなる入力データを受け入れた機械学習デバイスの情報入力部１２が、当該入力データに基づいて、記憶部１１が結合重みの情報を保持するニューラルネットワークへ入力するためのベクトルデータを生成する。
【０１１１】
そして出力部１４が記憶部１１に保持されている結合重みＷi,j,+及びＷi,j,-とを用い、結合重みの情報Ｗi,j＝（Ｗi,j,+）−（Ｗi,j,-）を得る。出力部１４は、情報入力部１２が生成したベクトルデータＩj（ｊ＝１，２，…Ｎ）を用い、
隠れ層の各ノードＨiの値を、
Ｈi＝ｆ（Σj Ｗi,j・Ｉj＋ｂ）
として演算する。そして出力部１４はさらに、出力層の各ノードＯjの値を、
Ｏj＝ｆ（Σi Ｗj,i・Ｈi＋ｂ）
として演算する。ここでＷj,iは、入力層のｊ番目のノードＩjと隠れ層のｉ番目のノードＨiとの間の結合重みＷをＷ＝［Ｗi,j］と行列で表現したときの、隠れ層のｉ番目のノードＨiと、出力層のｊ番目のノードＯjとの間の結合重みである行列Ｗの転置行列ＷTのｊ行ｉ列目の要素である。
【０１１２】
すなわち、出力部１４は、学習処理部１３が出力層の各ノードの値を生成するのと同じ方法で推論処理を行う。そして出力部１４は、当該出力層の各ノードの値を配列したベクトルデータを推論の結果として出力する。
【図１】
2020141597.tif 000003
【図２】
2020141597.tif 000004
【図３】
2020141597.tif 000005
【図４】
2020141597.tif 000006
【図５】
2020141597.tif 000007
【図６】
2020141597.tif 000008
【図７】
2020141597.tif 000009
【図８】
2020141597.tif 000010
【図９】
2020141597.tif 000011
【図１０】
2020141597.tif 000012
【国際調査報告】
2020141597.tif 000013
2020141597.tif 000014
2020141597.tif 000015
2020141597.tif 000016
2020141597.tif 000017
2020141597.tif 000018