(57)【特許請求の範囲】
【請求項１】
３層以上のニューラルネットワークに含まれる第１の層の入力ベクトルと当該第１の層の学習重み行列とに基づいて当該第１の層の次の第２の層の入力ベクトルを生成する複数の層間ユニットを含む層間アクセラレータを具備し、
前記複数の層間ユニットの各々は、
前記第１の層の入力ベクトルの複数の要素と前記学習重み行列のいずれかの行に相当する行ベクトルの複数の要素との差分に応じた周波数で発振する複数の発振器を含み、当該複数の発振器によって生成された発振信号を平均化して演算信号を得る結合発振器アレイと、
前記演算信号に活性化関数を適用することによって、前記第２の層の入力ベクトルのいずれかの要素を生成する活性化関数適用器と
を含む、
機械学習装置。
【請求項２】
前記第１の層と前記第２の層との間の層間演算のために、前記層間アクセラレータにおいて動作させる層間ユニットの数と、当該層間ユニットの内部の結合発振器アレイにおいて同時発振させる発振器の数と、当該発振器の入力信号とを制御するコントローラをさらに具備する、請求項１記載の機械学習装置。
【請求項３】
前記複数の層間ユニットは、並列動作して前記第２の層の入力ベクトルの複数の要素を生成する、請求項１または請求項２記載の機械学習装置。
【請求項４】
前記複数の発振器はスピントルク発振器を含む、請求項１乃至請求項３のいずれか１項記載の機械学習装置。
【請求項５】
前記学習重み行列を保存する不揮発性メモリをさらに具備する、請求項１乃至請求項４のいずれか１項記載の機械学習装置。
【請求項６】
前記不揮発性メモリは磁気抵抗ランダムアクセスメモリを含む、請求項５記載の機械学習装置。
【請求項７】
前記学習重み行列を保存する磁気抵抗ランダムアクセスメモリをさらに具備し、
前記複数の発振器はスピントルク発振器を含み、
前記スピントルク発振器は、８個の磁気抵抗ランダムアクセスメモリセルによって取り囲まれて配置される、
請求項１乃至請求項３のいずれか１項記載の機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、機械学習に関する。
【背景技術】
【０００２】
近年、機械学習の分野では、多層ニューラルネットワークを利用する深層学習が注目を集めている。深層学習はニューラルネットワーク関連技術の発展に大いに寄与することが期待されており、これをきっかけに第三次人工知能ブームが到来したと考えられている。深層学習によれば、ニューラルネットワークは多様な特徴表現を半自動的に獲得できるので、設計者は特徴量の抽出法を考案する必要が無い。将来的に、スマートフォン、自律ロボット、ドローンなどのモバイルデバイスに深層学習を適用することで、これらのモバイルデバイスに知的かつ自発的なアクションを取らせることが可能となるかもしれない。
【０００３】
深層学習において利用される多層ニューラルネットワークは、典型的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリおよびＧＰＵ（Ｇｒａｐｈｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含む計算機サーバにプログラム（コード）を実行させることで実装されている。計算機サーバに含まれるＧＰＵはアクセラレータとも呼ばれており、ＧＰＵの並列性を活用することでプログラムの実行を高速化することが可能となる。加えて、深層学習のさらなる高速化のために、複数のＧＰＵを用いて分散学習が行われることもある。
【０００４】
多層ニューラルネットワークでは、ある層の入力ベクトルに学習重み行列を乗じ、この積（ベクトル）に基づいて次の層の入力ベクトルが生成される。このような層間の行列積演算は、頻繁に実行されるうえにその計算コストが大きい。
【０００５】
例えば、近年成功を収めた画像認識用の深層学習ニューラルネットワークは、多重に積層された畳み込み層と、出力層付近の全結合層とを含んでおり、これら畳み込み層および全結合層における計算コストの大部分を行列積演算が占めている。また、音声認識において広く用いられるＤＮＮ（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）−ＨＭＭ（Ｈｉｄｄｅｎ  Ｍａｒｋｏｖ  Ｍｏｄｅｌ）ハイブリッド型モデルにおいても、そのＤＮＮ部分は多層の全結合層を含み、これらは行列積演算を利用する。
【０００６】
概括すれば、深層学習における計算コストの大部分を行列積演算が占めている。故に、例えば前述の計算機サーバを用いて実装される深層学習では、ＧＰＵ向けにチューニングされた行列積演算ライブラリを利用することで高速化が図られている。
【０００７】
アクセラレータとしてのＧＰＵは深層学習の高速化に大きく貢献するが、これをモバイルデバイスに搭載することは現実的ではない。例えば、計算機サーバに搭載されるＧＰＵのサイズ（＞２５ｃｍ×１０ｃｍ×３ｃｍ）は一般的なスマートフォンのサイズよりもはるかに大きく、その重量も１ｋｇ以上である。加えて、１つのＧＰＵを動作させるためには２００Ｗもの電力が必要となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第８，８９７，０４７号
【非特許文献】
【０００９】
【非特許文献１】Ｙａｎｎ  ＬｅＣｕｎ，  Ｙｏｓｈｕａ  Ｂｅｎｇｉｏ，  Ｇｅｏｆｆｒｅｙ  Ｈｉｎｔｏｎ，  “Ｄｅｅｐ  ｌｅａｒｎｉｎｇ”，  Ｎａｔｕｒｅ  ５２１，  ４３６−４４４  （２８  Ｍａｙ  ２０１５）
【非特許文献２】Ｄｍｉｔｒｉ  Ｅ．  Ｎｉｋｏｎｏｖ，  Ｉａｎ  Ａ．  Ｙｏｕｎｇ，  Ｇｅｏｒｇｅ  Ｉ．  Ｂｏｕｒｉａｎｏｆｆ，  “Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｔｗｏｒｋｓ  ｆｏｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ  ｂｙ  Ｃｏｕｐｌｅｄ  Ｏｓｃｉｌｌａｔｏｒ  Ａｒｒａｙｓ”，  ａｒＸｉｖ：１４０９．４４６９ｖ１
【発明の概要】
【発明が解決しようとする課題】
【００１０】
実施形態は、ＧＰＵに代わるアクセラレータを提供することを目的とする。
【課題を解決するための手段】
【００１１】
実施形態によれば、機械学習装置は、層間アクセラレータを含む。層間アクセラレータは、３層以上のニューラルネットワークに含まれる第１の層の入力ベクトルと当該第１の層の学習重み行列とに基づいて当該第１の層の次の第２の層の入力ベクトルを生成する複数の層間ユニットを含む。複数の層間ユニットの各々は、結合発振器アレイと、活性化関数適用器とを含む。結合発振器アレイは、第１の層の入力ベクトルの複数の要素と学習重み行列のいずれかの行に相当する行ベクトルの複数の要素との差分に応じた周波数で発振する複数の発振器を含み、当該複数の発振器によって生成された発振信号を結合して演算信号を得る。活性化関数適用器は、演算信号に活性化関数を適用することによって、第２の層の入力ベクトルのいずれかの要素を生成する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係る機械学習装置に含まれる層間アクセラレータを例示するブロック図。
【図２】第１の実施形態に係る機械学習装置を例示するブロック図。
【図３】図１の発振器の動作の説明図。
【図４】多層ニューラルネットワークにおける層間の行列席演算の説明図。
【図５】第２の実施形態に係る機械学習装置に含まれる層間アクセラレータによって用いられるスピントルク発振器の動作の説明図。
【図６】第３の実施形態に係る機械学習装置に含まれるハイブリッドチップを例示する図。
【図７】第４の実施形態に係る機械学習装置に含まれるハイブリッドチップを例示する図。
【図８】図７のハイブリッドチップの鳥瞰図。
【図９】図７のＳＴＯの電流および磁場に対する依存特性を例示するグラフ。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら実施形態の説明が述べられる。尚、以降、説明済みの要素と同一または類似の要素には同一または類似の符号が付され、重複する説明は基本的に省略される。例えば、複数の同一または類似の要素が存在する場合に、各要素を区別せずに説明するために共通の符号を用いることがあるし、各要素を区別して説明するために当該共通の符号に加えて枝番号を用いることもある。
【００１４】
（第１の実施形態）  
第１の実施形態に係る機械学習装置は、深層学習（多層ニューラルネットワーク（或いは、深層ニューラルネットワーク）ともいう）タスク処理を実行する。この多層ニューラルネットワークは入力層と１層以上の隠れ層と出力層とを含むので、その層数（Ｐ）は合計で３以上である。
【００１５】
本実施形態に係る機械学習装置は、図１に例示される層間アクセラレータ１００を利用して多層ニューラルネットワークタスク処理を高速に実行する。図１の層間アクセラレータ１００は、複数の層間ユニット１１０を含む。各層間ユニット１１０は、第Ｌ層の入力ベクトル１１（Ｘ）と第Ｌ層の学習重み行列１２（Ｗ）に含まれるいずれかの行に相当する行ベクトル（以降、学習重みベクトルと称される）とを受け取り、これらに基づいて第Ｌ＋１層の入力ベクトル１３のいずれかの要素（すなわち、第Ｌ＋１層に含まれるいずれかのニューロンの入力値）を生成する。
【００１６】
各ベクトルの要素は、図１の層間アクセラレータ１００の適用される多層ニューラルネットワークにおいて取り扱われるデータの種別に応じて規格化されてもよい。例えば、画像データが取り扱われる場合には、各ベクトルの要素は８ビット階調（すなわち、２５６値）を表現できるように規格化される。
【００１７】
一般に、多層ニューラルネットワークの第Ｌ層と第Ｌ＋１層（Ｌは１以上Ｐ−１以下の整数）とを媒介する行列積演算（図４を参照）は、下記数式（１）で表すことができる。
【００１８】
【数１】
0006542062.tif 000002
【００１９】
数式（１）において、Ｗは第Ｌ層の学習重み行列１２を表し、Ｘは第Ｌ層の入力ベクトル１１を表し、ＸｎｅｗはＷおよびＸの積（ベクトル）を表し、ＭおよびＮは学習重み行列の行数および列数をそれぞれ表す。
【００２０】
行列積演算は、複数のベクトルドット積演算に分解することができる。例えば数式（１）の行列積演算は、入力ベクトル１１と学習重みベクトルとの合計Ｍ個のベクトルドット積演算に分解される。任意のベクトルａおよびベクトルｂのドット積ａ・ｂは、下記数式（２）で計算することができる。
【００２１】
【数２】
0006542062.tif 000003
【００２２】
ここで、｜・｜はベクトルの大きさを表し、θはベクトルａおよびベクトルｂのなす角を表す。ベクトルａおよびベクトルｂの大きさを１に規格化すれば、ドット積ａ・ｂはｃｏｓθに一致する。ｃｏｓθは、θの絶対値が０［ｒａｄ］の時（すなわち、ベクトルａおよびベクトルｂが同一方向を向いている時）に最大（１）となり、θの絶対値の増加に伴って単調減少し、θの絶対値がπ［ｒａｄ］の時（すなわち、ベクトルａおよびベクトルｂが反対方向を向いている時）に最小（−１）となる。従って、ベクトルドット積は、２つのベクトルの（角度的な）類似度の一種といえる。
【００２３】
そこで、層間アクセラレータ１００は、行列積演算を構成するベクトルドット積演算の代わりに２ベクトルの類似度を得ることのできる他の演算を高速に実行する。具体的には、層間アクセラレータ１００に含まれる各層間ユニット１１０が、入力ベクトル１１（Ｘ）と学習重みベクトルとのドット積の代わりに両者の類似度を後述されるように演算することによって、ベクトルＸｎｅｗのいずれかの要素を生成する。
【００２４】
層間ユニット１１０は、図１に例示されるように、結合発振器アレイ１４０および活性化関数適用器１３０を含む。
【００２５】
結合発振器アレイ１４０は、入力ベクトル１１の複数の要素と学習重みベクトルの複数の要素との差分に応じた周波数で（同時）発振する複数の発振器１２０を含む。換言すれば、結合発振器アレイ１４０は、入力ベクトル１１および学習重みベクトルを複数の発振器１２０の周波数シフトとしてエンコードする。結合発振器アレイ１４０は、複数の発振器１２０によって生成された発振信号を結合し、演算信号を得る。例えば、発振信号は、容量結合を通じて平均化されてもよい。結合発振器アレイ１４０は、演算信号を活性化関数適用器１３０へと出力する。
【００２６】
発振器１２０は、入力電流（Ｉ）に応じた周波数（ｆ（Ｉ）≠ｃｏｎｓｔ．）で発振する電流制御発振器であってもよい。この場合に、第ｋ番目（ｋは１以上Ｎ以下の任意の整数）の要素を取り扱う発振器１２０−ｌ−ｋ（ｌは１以上Ｍ以下の任意の整数）の入力電流（Ｉｋ）は、図３に例示されるように、Ｉｂｉａｓ＋（Ｉｉｎ，ｋ−Ｉｗｅｉｇｈｔ，ｋ）となる。ここで、Ｉｂｉａｓはバイアス電流を表し、Ｉｉｎ，ｋは入力ベクトル１１の第ｋ番目の要素に対応する電流を表し、Ｉｗｅｉｇｈｔ，ｋは学習重みベクトルの第ｋ番目の要素に対応する電流を表す。入力ベクトル１１の第ｋ番目の要素とＩｉｎ，ｋとの対応関係（例えば変換式）は、学習重みベクトルの第ｋ番目の要素とＩｗｅｉｇｈｔ，ｋとの対応関係に一致するように設計される。従って、入力ベクトル１１の第ｋ番目の要素が学習重みベクトルの第ｋ番目の要素に等しいならば、Ｉｉｎ，ｋそのものおよびＩｗｅｉｇｈｔ，ｋそのものの大きさに関わらず発振器１２０−ｋは周波数ｆ（Ｉｂｉａｓ）で発振する。なお、入力電流（Ｉ）は、ｆ（Ｉ）がＩに対して単調増加または単調減少する範囲に収まるように設計される。また、発振器１２０は、電圧制御発振器またはその他の制御可能な発振器であってもよい。
【００２７】
結合発振器アレイ１４０によって出力される演算信号は、入力ベクトル１１および学習重みベクトルの類似度を表す。具体的には、この演算信号の振幅は、入力ベクトル１１の複数の要素と学習重みベクトルの複数の要素との間のマッチング度を表す。仮に、入力ベクトル１１の全ての要素が学習重みベクトルの対応する要素と一致すれば発振信号は完全に同期し、マッチング度は最大となる。他方、入力ベクトル１１の一部の要素が学習重みベクトルの対応する要素と一致していなければ発振信号は完全には同期せず、マッチング度は最大値に比して小さくなる。
【００２８】
結合発振器アレイ１４０は、例えば、非特許文献２に開示された周波数シフトキーイング結合振動子アレイ（ＦＳＫ  ｃｏｕｐｌｅｄ  ｏｓｃｉｌｌａｔｏｒ  ａｒｒａｙ）であってもよい。
【００２９】
活性化関数適用器１３０は、結合発振器アレイ１４０から演算信号を受け取る。活性化関数適用器１３０は、演算信号に活性化関数を適用することによって、第Ｌ＋１層の入力ベクトル１３のいずれかの要素を生成する。活性化関数は、図１の層間アクセラレータ１００の適用される多層ニューラルネットワークの構成に応じて定められてよく、例えば、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）、シグモイド関数などを採用することができる。
【００３０】
このような層間アクセラレータ１００を含む機械学習装置２００が図２に例示される。図２の機械学習装置２００は、層間アクセラレータ１００と、コントローラ２１０と、第１のメモリ２２０と、第２のメモリ２３０とを含む。
【００３１】
コントローラ２１０は、例えば設計者によって作成されたプログラムを実行することで深層学習を遂行するための種々の制御を行う。
【００３２】
具体的には、コントローラ２１０は、第Ｌ層と第Ｌ＋１層との間を媒介する層間演算のために、層間アクセラレータ１００において動作させる層間ユニット１１０の数を制御してもよい。例えば、層間アクセラレータ１００に含まれる層間ユニット１１０の総数が第Ｌ層の学習重み行列１２の行数（Ｍ）を超える場合に、コントローラ２１０は動作させる層間ユニット１１０の数をＭに定めてもよい。
【００３３】
さらに、コントローラ２１０は、第Ｌ層と第Ｌ＋１層との間を媒介する層間演算のために、動作させる層間ユニット１１０の内部の結合発振器アレイ１４０において同時発振させる発振器１２０の数を制御してもよい。例えば、層間アクセラレータ１００に含まれる層間ユニット１１０の総数が第Ｌ層の学習重み行列１２の列数（Ｎ）を超える場合に、コントローラ２１０は同時発振させる発振器の数をＮに定めてもよい。
【００３４】
加えて、コントローラ２１０は、第Ｌ層と第Ｌ＋１層との間を媒介する層間演算のために、同時発振させる発振器１２０の入力信号を制御してもよい。例えば、コントローラ２１０は、第１のメモリ２２０から入力ベクトル１１を読み出し、これをＭ個の層間ユニット１１０−１，１１０−２，・・・，１１０−Ｍにブロードキャストしてもよい。同様に、コントローラ２１０は、第２のメモリ２３０から学習重み行列を分解したＭ個の行ベクトルを読み出し、これらをＭ個の層間ユニット１１０−１，１１０−２，・・・，１１０−Ｍにそれぞれ供給してもよい。
【００３５】
このように、コントローラ２１０が適切なプログラムを実行して種々のパラメータ（例えば、動作させる層間ユニット１１０の数、同時発振させる発振器１２０および当該発振器１２０の入力信号）を制御すれば、層間アクセラレータ１００に任意の多層ニューラルネットワークにおける任意の層間演算を実行させることができる。但し、層間アクセラレータ１００のハードウェアを所望の多層ニューラルネットワークの構造に適合するように設計すれば、上記パラメータを制御する必要はない。すなわち、コントローラ２１０を省略することが可能である。
【００３６】
さらに、コントローラ２１０は、各層間ユニット１１０において適切な数（Ｎ個）の発振器１２０を同時動作（発振）させることにより、１命令で当該層間ユニット１１０に入力ベクトル１１および学習重みベクトルの類似度演算を実行させることができる。すなわち、多層ニューラルネットワークタスク処理を高速化することができる。対照的に、ＧＰＵに入力ベクトル１１および学習重みベクトルのドット積演算を実行させるには、より多くの命令が必要となる。具体的には、ドット積演算は総和演算を含んでいるが、１＋２＋３＋４＋５＋６＋７＋８＝３６という総和演算をＧＰＵに実行させるためには少なくとも３命令が必要となる。仮に、ｒｅｄｕｃｔｉｏｎなどの並列化手法を用いて十分な数のスレッドを同時動作させたとしても、ＧＰＵに１命令でドット積演算を実行させることは不可能である。
【００３７】
なお、異なる層間ユニット１１０における類似度演算および活性化関数の適用は互いに独立であるから、係る動作を並列化することができる。類似度演算および活性化関数の適用を並列化することにより、第Ｌ＋１層の学習重みベクトルの複数の要素を一斉に生成することができる。すなわち、多層ニューラルネットワークタスク処理を高速化することができる。例えば、コントローラ２１０は、適切な数（Ｍ個）の層間ユニット１１０を同時動作させることにより、１命令で層間アクセラレータ１００に入力ベクトル１１および学習重み行列１２の行列積演算（数式（１）の演算）に類似する演算を実行させることもできる。
【００３８】
第１のメモリ２２０には、第Ｌ層の入力ベクトル１１が保存される。第１のメモリ２２０には、さらに、層間アクセラレータ１００によって計算される第Ｌ＋１層の入力ベクトル１３が保存されてもよい。
【００３９】
第２のメモリ２３０には、第Ｌ層の学習重み行列１２が保存される。なお、現在の大規模深層ニューラルネットワークでは、学習重みの合計データサイズは数ＧＢから１００ＧＢ程度である。第２のメモリ２３０は、好ましくは不揮発性メモリである。学習重みは、学習過程では学習毎に更新されるが、学習過程が終了すれば更新されず繰り返し使用される。故に、学習重みを第２のメモリ２３０としての（ローカル）不揮発性メモリに保存することで、外部ストレージから学習重みを第２のメモリ２３０に毎回ロードする場合に比べて、多層ニューラルネットワークタスク処理の実行時間を短縮することができる。なお、機械学習装置２００に学習をさせる場合には、従来の誤差逆伝播法、ＳＧＤ（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ）、ｄｒｏｐｏｕｔなどの公知の技法を利用することができる。
【００４０】
以上説明したように、第１の実施形態に係る機械学習装置は、多層ニューラルネットワークにおいて、第Ｌ層の入力ベクトルの複数の要素と第Ｌ層の学習重み行列のいずれかの行に相当する行ベクトルの複数の要素との差分に応じた周波数でそれぞれ発振する複数の発振器を含む層間ユニットを用いて、上記入力ベクトルおよび行ベクトルのドット積演算に類似する演算を高速に実行する。さらに、この機械学習装置は、複数の層間ユニットを並列動作させることで、第Ｌ層の入力ベクトルの複数の要素と第Ｌ層の学習重み行列との行列積演算に類似する演算を高速に実行することもできる。従って、この機械学習装置によれば、多層ニューラルネットワークタスク処理を高速化することができる。
【００４１】
（第２の実施形態）  
第２の実施形態に係る機械学習装置は、図１の層間アクセラレータ１００において発振器１２０としてスピントルク発振器（ＳＴＯ）３２０を採用した構成に相当する。
【００４２】
ＳＴＯ３２０は、磁化フリー層、スペーサおよび磁化固定層を含んでおり、いわゆる磁気抵抗メモリセルと同様の基本構造を持つ。ＳＴＯ３２０の発振周波数は、磁気抵抗効果により定まる。
【００４３】
具体的には、ＳＴＯ３２０が通電するとスピントランスファ効果（スピントルク）が生じてフリー層磁化ｍは歳差運動を始める。そして、ＳＴＯ３２０はこの歳差運動に応じた周波数で発振する。なお、ＳＴＯ３２０が通電してから発振するまでの所要時間は数ナノ秒程度であるから、複数のＳＴＯ３２０を含む結合発振器アレイ１４０は入力ベクトル１１および学習重みベクトルの類似度演算を高速に（数ナノ秒程度で）実行できる。
【００４４】
ＳＴＯ３２０は、入力電流（Ｉ）に応じた周波数（ｆ（Ｉ）≠ｃｏｎｓｔ．）で発振する非線形発振器である。従って、第ｋ番目の要素を取り扱うＳＴＯ３２０−ｌ−ｋの入力電流（Ｉｋ）は、図５に例示されるように、Ｉｂｉａｓ＋（Ｉｉｎ，ｋ−Ｉｗｅｉｇｈｔ，ｋ）となる。
【００４５】
ＳＴＯ３２０はサブミクロンサイズの発振器である。故に、図１の層間アクセラレータ１００に含まれる発振器１２０としてＳＴＯ３２０を採用することで当該層間アクセラレータ１００を小型に実装することができる。例えば、現在の多層ニューラルネットワーク技術を鑑みて相当に大規模な１０００万個のニューロンを実装する場合に、ＳＴＯ３２０の合計サイズを以下のように見積もることができる。
【００４６】
仮に１個のＳＴＯ３２０が１個のニューロンの役割を果たすとすれば、層間アクセラレータ１００は１０００万個のＳＴＯ３２０を含むことになる。但し、異なる層間演算は異なる時間に実行されるので、実用上はＳＴＯ３２０を複数回に亘って繰り返し動作させることができる。このようにＳＴＯ３２０を繰り返し動作させることで、その必要数を削減することができる。例えば、ＳＴＯ３２０を平均５回繰り返し動作させるならば、その必要数は繰り返し動作をさせない場合に比べて１／５倍となる。
【００４７】
前述のように、ＳＴＯ３２０は磁気抵抗メモリセルと同様の基本構造を持つので、そのサイズは例えば垂直磁化型スピントランスファトルク磁気抵抗メモリ（ＳＴＴ−ＭＲＡＭ）の設計ルールである６Ｆ２によって評価することができる。ＳＴＯ３２０のセルサイズとしてＦ＝２０ｎｍを仮定すると、１０００万個のＳＴＯ３２０のサイズは下記数式（３）で見積もられる。
【００４８】
【数３】
0006542062.tif 000004
【００４９】
すなわち、１０００万個のＳＴＯ３２０は、約１５５μｍ四方の正方形状のチップに収めることができる。このサイズは、ＧＰＵのサイズ（＞２５ｃｍ×１０ｃｍ×３ｃｍ）と比べてはるかに小さい。
【００５０】
以上説明したように、第２の実施形態に係る機械学習装置は、ＳＴＯを発振器とする層間アクセラレータを含む。従って、この機械学習装置は、アクセラレータとしてＧＰＵを用いる機械学習装置に比べて小型に実装することができる。
【００５１】
（第３の実施形態）  
第３の実施形態に係る機械学習装置は、図１の層間アクセラレータ１００において発振器１２０としてＳＴＯ３２０を採用し、図２の機械学習装置２００において第２のメモリ２３０として磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）４３０を採用した構成に相当する。
【００５２】
ＭＲＡＭ４３０は不揮発性メモリである。故に、学習過程が既に終了しているのであれば、学習重みを（ローカル）ＭＲＡＭ４３０に保存することで、外部ストレージから学習重みをＭＲＡＭ４３０に毎回ロードする場合に比べて、タスク処理の実行時間を短縮することができる。
【００５３】
さらに、ＳＴＯ３２０およびＭＲＡＭ４３０は、磁性体多層膜からなるという、類似の基本構造を持つため、同様の製造プロセスを実行して作製することができる。故に、図６に例示されるように、ＳＴＯ３２０およびＭＲＡＭ４３０を同一のチップ（以降、ハイブリッドチップと称される）上に形成することが可能である。
【００５４】
現在の多層ニューラルネットワーク技術を鑑みて相当に大規模な１００ＧＢ分の学習重みをＭＲＡＭ４３０に保存する場合に、図６のようなＳＴＯ３２０およびＭＲＡＭ４３０のハイブリッドチップのうちＭＲＡＭ４３０の占有部分の合計サイズを以下のように見積もることができる。
【００５５】
ＭＲＡＭ４３０に含まれる各ＭＲＡＭセルは１ビットの情報を保存するので、ＭＲＡＭセルの必要数は８×１００×１０９個である。従って、ＭＲＡＭ４３０のセルサイズとしてＦ＝２０ｎｍを仮定して前述の６Ｆ２の設計ルールを用いると、１００ＧＢ分の学習重みを保存するＭＲＡＭ４３０のサイズは下記数式（４）で見積もられる。
【００５６】
【数４】
0006542062.tif 000005
【００５７】
すなわち、１００ＧＢ分の学習重みを保存するＭＲＡＭ４３０（８０００億個のＭＲＡＭセル）は、約４．４ｃｍ四方の正方形状のチップに収めることができる。さらに、前述の１０００万個のＳＴＯ３２０のサイズは、このＭＲＡＭ４３０のサイズに比べればはるかに小さい。故に、図６のようなハイブリッドチップの全体も高々４．５ｃｍ四方の正方形に収めることができる。このサイズは、ＧＰＵのサイズ（＞２５ｃｍ×１０ｃｍ×３ｃｍ）と比べてはるかに小さい。
【００５８】
以上説明したように、第３の実施形態に係る機械学習装置は、ＳＴＯおよびＭＲＡＭのハイブリッドチップを含む。従って、この機械学習装置は、アクセラレータとしてＧＰＵを用いる機械学習装置に比べて小型に実装することができる。
【００５９】
（第４の実施形態）  
第３の実施形態に係る機械学習装置は、図１の層間アクセラレータ１００において発振器１２０としてＳＴＯ３２０を採用し、図２の機械学習装置２００において第２のメモリ２３０としてＭＲＡＭ４３０を採用した構成に相当する。さらに、この機械学習装置において、各ＳＴＯ３２０は、図７に例示されるように複数（例えば８個）のＭＲＡＭセルによって取り囲まれて配置される。
【００６０】
なお、８個のＭＲＡＭセルの容量は合計で１バイトであって、１バイトの情報は２５６通りの値を表現できる。グレースケール画像データの画素値、ならびに、カラー画像データのＲＧＢコンポーネント毎の画素値は典型的には１バイトであるから、このような情報を学習重みとして用いる場合にその各要素を保存するのに必要なＭＲＡＭセルの個数は８個である。すなわち、８個のＭＲＡＭセルは、グレースケール画像データの画素値またはカラー画像データのＲＧＢコンポーネント毎の画素値を学習重みとして保存するのに必要かつ十分である。なお、８個のＭＲＡＭセルには、１バイトのピクセル値に限られず様々なサイズ（最大１バイト）の様々な種別の学習重みが保存されてもよい。
【００６１】
これら８個のＭＲＡＭセルの各々には１バイトで表現される学習重みのうち１ビットがそれぞれ保存されており、各ＭＲＡＭセルは保存する情報に応じた磁場を発生する。すなわち、８個のＭＲＡＭセルからの漏れ磁場は、当該ＭＲＡＭセルに保存される学習重みの値に依存して変化する。そして、ＳＴＯ３２０は、電流だけでなく外部磁場の影響により発振周波数が変化する。故に、ＳＴＯ３２０の周囲に学習重みを保存した８個のＭＲＡＭセルを配置すれば、コントローラ２１０が当該学習重みをロードしなくても、漏れ磁場を利用して当該ＳＴＯ３２０に学習重みを入力する（すなわち、ＳＴＯ３２０の発振周波数を学習重みに応じてシフトさせる）ことができる。従って、多層ニューラルネットワークタスク処理の高速化が可能である。
【００６２】
ＳＴＯ３２０およびこれを取り囲む８個のＭＲＡＭセルは、例えば図７に示されるようにハイブリッドチップ５００上にマトリクス状に配置されてもよい。このマトリクスの各列は、１つの結合発振器アレイ１４０に相当してもよい。１つの結合発振器アレイ１４０に含まれる全てのＳＴＯ３２０を同一の列内に収めて配置すれば、図８に例示されるように、共通線を介して入力電流を供給したり出力信号を結合したりすることができる。なお、図７には示されていないが、活性化関数適用器１３０は、例えばマトリクスの列と列との間にアレイ状に配置されてもよい。
【００６３】
図８の例では、各ＳＴＯ３２０と共通線との間にＮＭＯＳ（Ｎ−ｔｙｐｅ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）スイッチ（または、他の種別のスイッチであってもよい）が挿入されている。例えばコントローラ２１０が各ＮＭＯＳスイッチのゲート電圧を入力ベクトル１１の対応する要素の値に応じて制御することで、当該ＮＭＯＳスイッチに接続されたＳＴＯ３２０に適切な量の電流が供給される。この結果、各ＳＴＯ３２０は、入力ベクトル１１のいずれかの要素の値に応じた電流を受け取る。
【００６４】
概括すれば、各ＳＴＯ３２０は、入力ベクトル１１のいずれかの要素の値に応じた電流を受け取り、その周囲に配置された８個のＭＲＡＭセルからの漏れ磁場の影響を受ける。すなわち、各ＳＴＯ３２０には、入力ベクトル１１のいずれかの要素の値に応じた電流が流れ、当該要素に対応する（当該要素に乗算される）学習重みの値に応じた漏れ磁場が作用する。従って、各ＳＴＯ３２０の発振周波数は、入力ベクトル１１のいずれかの要素の値と当該要素に対応する学習重みの値とに応じて変化する。そして、図８の例では、各ＳＴＯ３２０の出力信号は共通線において結合され、活性化関数適用器１３０（図８には示されない）へと供給される。
【００６５】
具体的には、ＳＴＯ３２０の発振周波数は、（入力）電流および（外部）磁場に対して図９に例示されるように依存する。図９のグラフにおいて、Ｉｘは入力ベクトル１１の要素がｘ（ｘ＝０，・・・，２５５）である場合のＳＴＯ３２０の入力電流を表し、ｃｏｎｆｉｇ．ｗは当該要素に対応する学習重みがｗ（ｗ＝０，・・・，２５５）である場合にＳＴＯ３２０に作用する外部磁場を表す。図９の例では、入力ベクトル１１の要素と当該要素に対応する学習重みとが一致している（ｘ＝ｗ）場合には、ＳＴＯ３２０の発振周波数（ｆＳＴＯ）は所定のマッチング周波数（ｆＭａｔｃｈ）となる。他方、ｘ≠ｗの場合にはｆＳＴＯはｆＭａｔｃｈに対して高域側または低域側にずれる。
【００６６】
例えば、入力ベクトル１１が（２２，５８，８７，９，１２３，２４１，１８９，４５）であって、学習重みベクトルが（２２，５８，８７，９，１２３，２４１，１８９，４５）であるならば、合計８個のＳＴＯ３２０の発振周波数は完全に同期し、これらの出力信号を結合した演算信号の示すマッチング度は最大となる。他方、入力ベクトル１１が（２２，５８，８７，９，１２３，２４１，１８９，４５）であって、学習重みベクトルが（１，５８，２，９，１２３，３，１８９，４５）であるならば、合計８個のＳＴＯ３２０の発振周波数は完全には同期せず、マッチング度は最大値に比して小さくなる。
【００６７】
現在の多層ニューラルネットワーク技術を鑑みて相当に大規模な１００ＧＢ分の学習重みをＭＲＡＭ４３０に保存する場合に、図７のようなＳＴＯ３２０およびＭＲＡＭ４３０のハイブリッドチップ５００の合計サイズを以下のように見積もることができる。
【００６８】
なお、１００ＧＢ分の学習重みは、例えば、画像認識用ニューラルネットワークの各層におけるフィルタサイズを全て１２８×１２８とした場合に約６００万個のフィルタ（学習重み行列）に相当する。
【００６９】
ＭＲＡＭ４３０に含まれる各ＭＲＡＭセルは１ビットの情報を保存するので、ＭＲＡＭセルの必要数は８×１００×１０９個である。そして、ＳＴＯ３２０は、ＭＲＡＭセル８個につき１つ配置されている。従って、ＳＴＯ３２０およびＭＲＡＭ４３０のセルサイズとしてＦ＝２０ｎｍを仮定して前述の６Ｆ２の設計ルールを用いると、ハイブリッドチップ５００のサイズは下記数式（５）で見積もられる。
【００７０】
【数５】
0006542062.tif 000006
【００７１】
すなわち、ハイブリッドチップ５００（８０００億個のＭＲＡＭセルおよび１０００億個のＳＴＯ３２０）は、約４．７ｃｍ四方の正方形に収めることができる。このサイズは、ＧＰＵのサイズ（＞２５ｃｍ×１０ｃｍ×３ｃｍ）と比べてはるかに小さい。
【００７２】
以上説明したように、第４の実施形態に係る機械学習装置は、各ＳＴＯの周囲を取り囲むように８個のＭＲＡＭセルを配置する。そして、各ＳＴＯは、周囲のＭＲＡＭからの漏れ磁場を利用して学習重みを入力する。従って、この機械学習装置によれば、学習重みをロードしてこの値に応じた電流をＳＴＯに供給する必要がないので、多層ニューラルネットワークタスク処理を高速化することができる。
【００７３】
上記各実施形態の処理の少なくとも一部は、汎用のコンピュータを基本ハードウェアとして用いることでも実現可能である。上記処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記録媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどである。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１１・・・第Ｌ層の入力ベクトル
１２・・・第Ｌ層の学習重み行列
１３・・・第Ｌ＋１層の入力ベクトル
１００・・・層間アクセラレータ
１１０・・・層間ユニット
１２０・・・発振器
１３０・・・活性化関数適用器
１４０・・・結合発振器アレイ
２００・・・機械学習装置
２１０・・・コントローラ
２２０・・・第１のメモリ
２３０・・・第２のメモリ
３２０・・・スピントルク発振器
４３０・・・磁気抵抗ランダムアクセスメモリ
５００・・・ハイブリッドチップ
【図１】
0006542062.tif 000007
【図２】
0006542062.tif 000008
【図３】
0006542062.tif 000009
【図４】
0006542062.tif 000010
【図５】
0006542062.tif 000011
【図６】
0006542062.tif 000012
【図７】
0006542062.tif 000013
【図８】
0006542062.tif 000014
【図９】
0006542062.tif 000015