(57)【要約】【課題】平均や分散を求めるような複雑な計算をネットワークに組み込む必要がなく、かつ、学習時と使用時とでモデルを切り替える必要もなく、従来よりも高速な学習が可能なニューラルネットワーク装置を提供する。【解決手段】ディープニューラルネットワーク装置１０は、プロセッサ１２及びメモリ１４を備える。メモリ１４は、ディープニューラルネットワークを格納する。学習の際に、ディープニューラルネットワークの重みベクトルをWｌ＝［ｗ１ｌ，ｗ２ｌ，・・・ｗｍｌ］Tとした場合に、ｗ１ｌ＋ｗ２ｌ＋・・・ｗｍｌ＝０を満たすような制約を課し、この制約条件の下で学習を行い、重みベクトルを最適化する。【選択図】図５Ａ
2019053383.tif 000002
【特許請求の範囲】
【請求項１】
ディープニューラルネットワークの重みベクトルの要素が線形制約を満たすことを特徴とするニューラルネットワーク装置。
【請求項２】
前記重みベクトルをWｌ＝［ｗ１ｌ，ｗ２ｌ，・・・ｗｍｌ］Tとした場合に、
ｗ１ｌ＋ｗ２ｌ＋・・・ｗｍｌ＝０
を満たすことを特徴とする請求項１に記載のニューラルネットワーク装置。
【請求項３】
ニューラルネットワークの製造方法であって、
ディープニューラルネットワークの重みベクトルの要素に線形制約を課して学習することを特徴とするニューラルネットワークの製造方法。
【請求項４】
前記重みベクトルをWｌ＝［ｗ１ｌ，ｗ２ｌ，・・・ｗｍｌ］Tとした場合に、
ｗ１ｌ＋ｗ２ｌ＋・・・ｗｍｌ＝０
を満たすことを特徴とする請求項３に記載のニューラルネットワークの製造方法。
【請求項５】
前記重みベクトルをWｌ＝［ｗ１ｌ，ｗ２ｌ，・・・ｗｍｌ］Tとした場合に、
【数１】
2019053383.tif 000027
【数２】
2019053383.tif 000028
となるように再パラメータ化し、ｗｉｌに代えて
【数３】
2019053383.tif 000029
を学習することを特徴とする請求項３，４のいずれかに記載のニューラルネットワークの製造方法。
【請求項６】
ｗｉｌのシード
【数４】
2019053383.tif 000030
をサンプリングし、学習データの一部から算出された変数ａｌを用いて、
【数５】
2019053383.tif 000031
の標準偏差、最大値、最小値、分位点の少なくともいずれかの統計量が一定値となるようにγｉｌを算出し、さらに、
【数６】
2019053383.tif 000032
をｗｉｌの初期値とすることを特徴とする請求項４，５のいずれかに記載のニューラルネットワークの製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク装置及びその製造方法に関する。
【背景技術】
【０００２】
近年、ディープニューラルネットワーク（多層ニューラルネットワーク）の開発が進められている。
【０００３】
非特許文献１には、ディープニューラルネットワークの学習に関して記載されている。すなわち、学習に使用するサンプルデータセットについて、Ｌ＋１層目の活性化関数への入力
ｚＬ＋１＝ＷＬａＬ
の値を計算し、ｚＬ＋１の平均と分散を求める。
【０００４】
次に、求めた平均と分散を用いて、ｚＬ＋１を正規化する。正規化されたｚＬ＋１（これをｚｎＬ＋１とする）に線形演算を施したもの
α＊ｚｎＬ＋１＋β（α、βは新たなパラメータ）
を、新たにＬ＋１層目の活性化関数への入力とする。これらの処理を全て、あるいは一部の層に対して実行する。
【０００５】
非特許文献２には、ディープニューラルネットワークの重みベクトルを再パラメータ化することで学習速度を速めることが記載されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”, Sergey Ioffe, Christian Szegedy, ICML 2015
【非特許文献２】“Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks”, Tim Salimans, Diederik P. Kingma, NIPS 2016
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ｚＬ＋１の平均と分散を求める計算をニューラルネットワークに組み込む場合、ネットワーク構造が複雑になるだけでなく、計算負荷が増大してしまう。
【０００８】
また、テストデータに対する予測を行う場合に、学習時に推定したｚＬ＋１の平均と分散を用いるので、学習時とテスト時とでモデルを切り替えて使用する必要があり、手続も煩雑化する。
【０００９】
本発明の目的は、平均や分散を求めるような複雑な計算をネットワークに組み込む必要がなく、かつ、学習時と使用時とでモデルを切り替える必要もなく、従来よりも高速な学習が可能なニューラルネットワーク装置及びその製造方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、ディープニューラルネットワークの重みベクトルの要素が線形制約を満たすことを特徴とするニューラルネットワーク装置である。
【００１１】
本発明の１つの実施形態では、前記重みベクトルをWｌ＝［ｗ１ｌ，ｗ２ｌ，・・・ｗｍｌ］Tとした場合に、
ｗ１ｌ＋ｗ２ｌ＋・・・ｗｍｌ＝０
を満たす。
【００１２】
また、本発明は、ニューラルネットワークの製造方法であって、ディープニューラルネットワークの重みベクトルの要素に線形制約を課して学習することを特徴とする。
【００１３】
本発明の１つの実施形態では、前記重みベクトルをWｌ＝［ｗ１ｌ，ｗ２ｌ，・・・ｗｍｌ］Tとした場合に、
ｗ１ｌ＋ｗ２ｌ＋・・・ｗｍｌ＝０
を満たす。
【００１４】
後に詳述するように、ディープニューラルネットワークでは、層を経る毎に活性化ニューロン毎の発火の偏りが大きくなり、最終的に入力の違いによる発火のばらつきがなくなってしまい学習が困難となる問題があるが、本発明では、重みベクトルに一定の制約を課すことで層を経ても入力の違いによる発火のばらつきを維持して学習を可能とするものであり、当該一定の制約を課すに際して平均や分散は要しない。
【発明の効果】
【００１５】
本発明によれば、平均や分散を求めるような複雑な計算を行う必要がなく、かつ、学習時と使用時とでモデルを切り替える必要もなく、従来よりも高速な学習が可能となる。
【図面の簡単な説明】
【００１６】
【図１Ａ】角度バイアス例を示す図（その１）である。
【図１Ｂ】角度バイアス例を示す図（その２）である。
【図１Ｃ】角度バイアス例を示す図（その３）である。
【図２】ニューラルネットワークの模式図である。
【図３】角度バイアスが生じる重みを有するニューラルネットワークでの発火パターン図である。
【図４】ニューラルネットワークでのある層の重みベクトルとその前の層の出力との角度差を示すグラフ図である。
【図５Ａ】実施形態の装置構成図（その１）である。
【図５Ｂ】実施形態の装置構成図（その２）である。
【図６】実施形態のニューラルネットワークでの発火パターン図である。
【図７】実施形態のニューラルネットワークでのある層の重みベクトルとその前の層の出力との角度差を示すグラフ図（その１）である。
【図８】実施形態のニューラルネットワークでのある層の重みベクトルとその前の層の出力との角度差を示すグラフ図（その２）である。
【図９】実施例１の結果を示す図である。
【図１０】実施例２の結果を示す図である。
【図１１】実施例３の結果を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面に基づき本発明の実施形態について説明する。
【００１８】
１．角度バイアス
まず、本実施形態における用語について説明する。変数ｗ、ａを以下のように定義する。
【数１】
2019053383.tif 000003
【数２】
2019053383.tif 000004
【００１９】
ここで、Ｕ（０，１）は、区間（０，１）の一様乱数である。
【００２０】
このとき、変数ｗが与えられたものでの内積ｗＴａの分布は、ｗが１ｍ＝（１，１，・・・，１）となす角度θｗ及び||ｗ||により決定される。本実施形態において、角度θｗにより生じる内積ｗＴａの分布の偏りを角度バイアス（angle bias）と定義する。
【００２１】
図１Ａ〜図１Ｃは、角度バイアスの例を示す。図１Ａは、変数ｗの例であり、
【数３】
2019053383.tif 000005
であって、各要素を（−１，１）一様分布からランダムにサンプリングしたものである。
【００２２】
また、図１Ｂは、変数ａの例であり、各要素を（０，１）一様分布からランダムサンプリングしたものである。
【００２３】
図１Ｃは、２つの変数の内積を示す。各要素ｗｉによって１ｍ＝（１，１，・・・，１）となす角度が異なるため、角度バイアスによって横縞模様が発生してしまう。
【００２４】
図２は、ニューラルネットワークを模式的に示す、ある層ｌと次の層ｌ＋１を例示したものである。
【００２５】
層ｌのニューロンとしてａ１ｌ，ａ２ｌ，・・・，ａｍｌがあり、ａｌ＝（ａ１ｌ，ａ２ｌ，・・・，ａｍｌ）Ｔである。各ニューロンは非線形の活性化関数ｆで活性化する。活性化関数が例えばシグモイド関数の場合、
【数４】
2019053383.tif 000006
である。層ｌと層ｌ＋１の間の重みベクトルは、ｗｌ＝［ｗ１ｌ，ｗ２ｌ，・・・，ｗｍｌ］Ｔであり、
【数５】
2019053383.tif 000007
である。
【００２６】
層ｌ＋１のニューロンは、
ａ１ｌ＋１＝ｆ（（ｗ１ｌ）Ｔａｌ）
・
・
ａｍｌ＋１＝ｆ（（ｗｍｌ）Ｔａｌ）
である。但し、ここではバイアス項はゼロとして省略している。
【００２７】
ａｌが一様分布に従うと仮定すると、（ｗｉｌ）Ｔａｌに関して角度バイアスが生じることになる。すなわち、ｗｉｌが１ｍ＝（１，１，・・・、１）となす角度θｉｌに依存して偏りが生じる。
【００２８】
そして、角度バイアスが生じる重みを有するディープニューラルネットワーク（ＤＮＮ）では、層を経る毎にニューロン毎の発火の偏りが大きくなっていく。
【００２９】
図３は、ディープニューラルネットワークにおけるニューロンの発火の様子を示す。
【００３０】
条件は、
入力：ＣＩＦＡＲ１０データセット（ｘは３０７２次元）
各層のユニット数：６４
活性化関数：シグモイド関数
重みの初期化：Xavier initialization (Glorot 10)
である。ランダムに選んだ１００サンプルについて、図３（ａ）は入力、図３（ｂ）は１層目、図３（ｃ）は２層目、図３（ｄ）は３層目、図３（ｅ）は４層目の発火の様子を示す。
【００３１】
図３（ｅ）の４層目から分かるように、入力の違いによる発火パターンのばらつきがなくなってしまう。
【００３２】
図４は、図３における１層目、２層目、３層目、及び４層目のｗｉｌとａｌのなす角度を示す。図４（ｂ）は１層目、図４（ｃ）は２層目、図４（ｄ）は３層目、図４（ｅ）は４層目の角度を示す。それぞれの図において、横軸はユニット番号（１〜６４の合計６４個のユニット）を示し、縦軸は角度を示す。例えば、図４（ｃ）については、２層目のユニット６４の重みベクトルと、前層の出力とのなす角度をサンプル毎に計算してボックス幅で表現したものである。層を経る毎に、ユニット間で角度差が顕著になっていくこと、及び発火パターンのばらつきが減少していくことが分かる。
【００３３】
このように、ディープニューラルネットワークでは、浅い層（入力に近い層）では重みを変化させたとしても、層を経る毎に発火のばらつきが無くなってしまうため、最終出力に変化が生じなくなってしまう（勾配がほぼゼロ）問題が生じる。また、深い層では、前層からその層に入力される発火パターンのばらつきがないため、同じ入力に対して異なるラベルを予想する状況となるので、そもそも学習が困難となる（重みを変化させても、全てのサンプルで同じように出力が変化するだけ）。
【００３４】
そこで、本実施形態では、重みベクトルに所定の制約を課すことで、角度バイアスの発生を抑制する。
【００３５】
２．構成
図５Ａは、本実施形態におけるニューラルネットワーク装置の概略構成図を示す。ニューラルネットワーク装置１０は、プロセッサ１２と、メモリ１４と、入出力インターフェイス（Ｉ／Ｆ）１６を備える。
【００３６】
メモリ１４は、ニューラルネットワークを格納する。ニューラルネットワークは、ディープニューラルネットワークである。メモリ１４は、具体的には揮発性メモリあるいは不揮発性メモリで構成される。また、メモリ１４は、プロセッサ１２により実行される処理プログラムを格納する。
【００３７】
プロセッサ１２は、メモリ１４に格納されたディープニューラルネットワークを用いて入力信号を処理し、処理結果を出力信号として出力する。入力信号は、入出力Ｉ／Ｆ１６を介してプロセッサ１２に供給され、出力信号は、入出力Ｉ／Ｆ１６を介して外部に出力される。出力信号は、外部コンピュータに供給されてもよく、あるいは通信回線（例えばインターネット等）を介して外部のサーバ等に供給されてもよい。プロセッサ１２は、例えばＧＰＵ（Graphics Processing Unit）で構成される。プロセッサ１２として、ＧＰＧＰＵ（General-purpose computing on graphics processing units; GPUによる汎用計算）を用いてもよい。
【００３８】
図５Ｂは、メモリ１４に格納されるディープニューラルネットワークを模式的に示す。ディープニューラルネットワークは、入力層、中間層、及び出力層を備える。入力層は入力信号が入力される。中間層は複数層から構成され、入力信号を順次処理する。出力層は、中間層からの出力に基づいて出力信号を出力する。各層は、複数のニューロン（ユニット）を備え、活性化関数ｆで活性化ニューロンとされる。
【００３９】
層ｌのニューロンとしてａ１ｌ，ａ２ｌ，・・・，ａｍｌがあり、層ｌと層ｌ＋１の間の重みベクトルがｗｌ＝［ｗ１ｌ，ｗ２ｌ，・・・，ｗｍｌ］Ｔであるとすると、層ｌ＋１のニューロンは、
ａ１ｌ＋１＝ｆ（（ｗ１ｌ）Ｔａｌ）
・
・
ａｍｌ＋１＝ｆ（（ｗｍｌ）Ｔａｌ）
である。但し、ここではバイアス項はゼロとして省略している。
【００４０】
ディープニューラルネットワークの学習は、学習データを入力し、学習データに対応する目標値と出力値との差によってロスを算出する。算出されたロスをニューラルネットワークで逆伝播させてディープニューラルネットワークのパラメータ、すなわち重みベクトルを調整する。重みが調整されたディープニューラルネットワークに次の学習データを入力し、新しく出力された出力値と目標値との差により再びロスを算出する。再算出されたロスとニューラルネットワークで逆伝播させてディープニューラルネットワークの重みベクトルを再調整する。以上の処理を繰り返すことでディープニューラルネットワークの重みベクトルを最適化する。重みベクトルは、当初は適当な値に初期化され、その後、学習を繰り返すことで最適値に収束される。
【００４１】
３．重みベクトル
次に、本実施形態における重みベクトルについて説明する。
【００４２】
Ｒｍの部分空間ＷＬＣを次のように定義する。
【数６】
2019053383.tif 000008
【００４３】
ここで、
【数７】
2019053383.tif 000009
に関して、以下が成立する。但し、１ｍ＝（１，１，・・・，１）である。
【数８】
2019053383.tif 000010
【００４４】
そして、ディープニューラルネットワークにおいて、「各重みベクトルｗｉｌがＷＬＣに含まれる」という制約を課す。すなわち、
【数９】
2019053383.tif 000011
とする。このような制約を課すことで、任意のｌ，ｉについて、θｉｌ＝９０°であるため角度バイアスが抑制される。以下、このような重みベクトルを、線形制約重みベクトル（Linearly-Constrained Weight: LCW）と称する。
【００４５】
図６は、実施形態におけるディープニューラルネットワークのニューロンの発火の様子を示す。条件は、
入力：ＣＩＦＡＲ１０データセット（ｘは３０７２次元）
各層のユニット数：６４
活性化関数：シグモイド関数
重み：ＬＣＷ
重みの初期化：後に詳述するＬＣＷの初期値推定方法
である。ランダムに選んだ１００サンプルについて、図６（ａ）は入力、図６（ｂ）は１層目、図６（ｃ）は２層目、図６（ｄ）は３層目、図６（ｅ）は４層目の発火の様子を示す。
【００４６】
図３の場合と異なり、層を経ても発火パターンのばらつきが維持されており、入力に応じて発火パターンが変化することが分かる。
【００４７】
図７及び図８は、図６における１層目、２層目、３層目、４層目、１０層目、２０層目、３０層目、及び４０層目のｗｉｌとａｌのなす角度を示す。図７（ｂ）は１層目、図７（ｃ）は２層目、図７（ｄ）は３層目、図７（ｅ）は４層目、図８（ｆ）は１０層目、図８（ｇ）は２０層目、図８（ｈ）は３０層目、図８（ｉ）は４０層目の角度を示す。それぞれの図において、横軸はユニット番号（１〜６４の合計６４個のユニット）を示し、縦軸は角度を示す。例えば、図７（ｃ）については、２層目のユニット６４の重みベクトルと、前層の出力とのなす角度をサンプル毎に計算してボックス幅で表現したものである。
【００４８】
図７に示す浅い層でも、角度バイアスが発生しておらず、層が進んでも発火のばらつきが維持されている。また、図８に示す深い層でも、発火のばらつきが維持されており、角度バイアスも発生していない。
【００４９】
４．再パラメータ化
本実施形態では、線形制約重みベクトルＬＣＷにより角度バイアスを抑制するが、再パラメータ化技術を用いることで線形制約を暗黙的にモデルに課してｗｉｌの効率的な学習を行うことができる。
【００５０】
いま、
【数１０】
2019053383.tif 000012
と再パラメータ化し、ｗｉｌの代わりに、
【数１１】
2019053383.tif 000013
を学習する。すなわち、
【数１２】
2019053383.tif 000014
を探索することで、
【数１３】
2019053383.tif 000015
を探索する。
【数１４】
2019053383.tif 000016
であり、これから
【数１５】
2019053383.tif 000017
が得られる。
【００５１】
ここで、Ｖｍは、ＷＬＣの基底であれば上記以外のものでもよい。また、
【数１６】
2019053383.tif 000018
であるから、ａｌの代わりにＶｍＴａｌを次の層に入力するとみなすことができる。
【００５２】
５．ＬＣＷの初期値
線形制約重みベクトルＬＣＷの初期値については、（ｗｉｌ）Ｔａｌが適当な分布となるようなｗｉｌの初期化が必要である。すなわち、（ｗｉｌ）Ｔａｌの分散が大きすぎるとシグモイド関数の出力が０または１に集中してしまう。他方で、（ｗｉｌ）Ｔａｌの分散が小さすぎるとシグモイド関数の出力が特定の値に集中してしまうことになり、いずれの場合も、発火ばらつきの減少を生じさせる。
【００５３】
そこで、学習用データの一部（ミニバッチサンプル）を用いて、ｗｉｌの初期値を推定する。具体的には、以下の通りである。
【００５４】
まず、
【数１７】
2019053383.tif 000019
とする。そして、ｗｉｌのシードである
【数１８】
2019053383.tif 000020
をＷＬＣ１からサンプリングする。
【００５５】
次に、層毎に、下記のｚｉｌが特定の条件を満たすようにγｉｌ＞０を求める。
【数１９】
2019053383.tif 000021
【００５６】
ここで、ａｌはミニバッチサンプルを用いて計算される。また、特定の条件は、ｚｉｌの標準偏差、最大値、最小値、分位点等の統計量に関して与えられ、例えば「ｚｉｌの標準偏差が０．５」である。
【００５７】
以上のようにして決定されたγｉｌを用いて、
【数２０】
2019053383.tif 000022
をｗｉｌの初期値とする。なお、再パラメータ化するに際し、
【数２１】
2019053383.tif 000023
の初期値としてｗｉｌの１から（ｍ−１）要素を用いる。
【００５８】
［実施例１］
データセットとして、
ＣＩＦＡＲ１０（入力３０７２次元、出力１０クラス）
学習用５０，０００サンプル及び評価用１０，０００サンプル
を用いた。また、ディープニューラルネットワークの構造として、
ＭＬＰ＿５１２＿１０：５１２ユニット／層の１０層
とした。全結合であり、活性化関数としてシグモイド関数を用い、ロス関数として交差エントロピーを用いた。
【００５９】
学習の設定として、
学習アルゴリズム：stochastic gradient decent（ミニバッチサイズ１２８）
学習エポック数：１００
学習率：初期値０．１で、１エポック毎に０．９５倍した。但し、０．００１より小さくしない
学習環境として、
ＯＳ：Ubuntu 16.04 LTS
ＧＰＵ：NVIDIA Tesla K80
開発フレームワーク：Pytorch (0.1.12), Python (3.5.2)
【００６０】
図９は、学習結果を示す。図９（ａ）の縦軸は学習用サンプルに対する的中率、図９（ｂ）の縦軸は評価用サンプルに対する的中率、図９（ｃ）の縦軸は累積計算時間を示す。それぞれの図において、横軸はエポック数を示す。比較のため、実施例をＬＣＷ、非特許文献１をBatchnorm（ＢＮ）、非特許文献２をWeightnorm（ＷＮ）として示す。実施例における学習の収束度及び計算時間は、ＢＮの収束度及び計算時間とほぼ等しく、ＷＮの収束度に比べて速いことがわかった。
【００６１】
［実施例２］
データセットとして、
ＣＩＦＡＲ１０（入力３０７２次元、出力１０クラス）
学習用５０，０００サンプル及び評価用１０，０００サンプル
を用いた。また、ディープニューラルネットワークの構造として、
ＭＬＰ＿２５６＿５０：２５６ユニット／層の５０層
とした。全結合であり、活性化関数としてシグモイド関数を用い、ロス関数として交差エントロピーを用いた。
【００６２】
学習の設定として、
学習アルゴリズム：stochastic gradient decent（ミニバッチサイズ１２８）
学習エポック数：１００
学習率：初期値０．１で、１エポック毎に０．９５倍した。但し、０．００１より小さくしない
学習環境として、
ＯＳ：Ubuntu 16.04 LTS
ＧＰＵ：NVIDIA Tesla K80
開発フレームワーク：Pytorch (0.1.12), Python (3.5.2)
【００６３】
図１０は、学習結果を示す。図１０（ａ）の縦軸は学習用サンプルに対する的中率、図１０（ｂ）の縦軸は評価用サンプルに対する的中率、図１０（ｃ）の縦軸は累積計算時間を示す。それぞれの図において、横軸はエポック数を示す。比較のため、実施例をＬＣＷ、非特許文献１をBatchnorm（ＢＮ）、非特許文献２をWeightnorm（ＷＮ）として示す。実施例における学習の収束度は、ＢＮの収束度よりも速く、計算時間も短い結果が得られた。なお、ＷＮでは学習が進まなかった。
【００６４】
［実施例３］
データセットとして、
ＣＩＦＡＲ１０（入力３０７２次元、出力１０クラス）
学習用５０，０００サンプル及び評価用１０，０００サンプル
を用いた。また、ディープニューラルネットワークの構造として、
ＭＬＰ＿１２８＿１００：１２８ユニット／層の１００層
とした。全結合であり、活性化関数としてシグモイド関数を用い、ロス関数として交差エントロピーを用いた。
【００６５】
学習の設定として、
学習アルゴリズム：stochastic gradient decent（ミニバッチサイズ１２８）
学習エポック数：１００
学習率：初期値０．１で、１エポック毎に０．９５倍した。但し、０．００１より小さくしない
学習環境として、
ＯＳ：Ubuntu 16.04 LTS
ＧＰＵ：NVIDIA Tesla K80
開発フレームワーク：Pytorch (0.1.12), Python (3.5.2)
【００６６】
図１１は、学習結果を示す。図１１（ａ）の縦軸は学習用サンプルに対する的中率、図１１（ｂ）の縦軸は評価用サンプルに対する的中率、図１１（ｃ）の縦軸は累積計算時間を示す。それぞれの図において、横軸はエポック数を示す。比較のため、実施例をＬＣＷ、非特許文献１をBatchnorm（ＢＮ）、非特許文献２をWeightnorm（ＷＮ）として示す。実施例における学習の収束度は、ＢＮの収束度よりも速く、計算時間も大幅に短い結果が得られた。なお、ＷＮでは学習が進まなかった。
【００６７】
これらの結果より、本実施形態における線形制約重みベクトル（ＬＣＷ）を用いることで、従来の方法に比べて学習の収束が速く、かつ計算時間も短くなることが確認された。特に、層数が１００以上のディープニューラルネットワークにおいて、効果が顕著となることが確認された。
【００６８】
以上、本発明の実施形態について説明したが、本発明はこれに限定されず、種々の変形例が可能である。以下、変形例について説明する。
【００６９】
＜変形例１＞
実施形態では、重みベクトルの制約として、
【数２２】
2019053383.tif 000024
すなわち、
【数２３】
2019053383.tif 000025
としているが、これ以外にも、
【数２４】
2019053383.tif 000026
なる制約を課してもよい。要するに、重みベクトルの各成分が線形結合されていればよい。
【符号の説明】
【００７０】
１０  ニューラルネットワーク装置、１２  プロセッサ、１４  メモリ。
【図１Ａ】
2019053383.tif 000033
【図１Ｂ】
2019053383.tif 000034
【図１Ｃ】
2019053383.tif 000035
【図２】
2019053383.tif 000036
【図３】
2019053383.tif 000037
【図４】
2019053383.tif 000038
【図５Ａ】
2019053383.tif 000039
【図５Ｂ】
2019053383.tif 000040
【図６】
2019053383.tif 000041
【図７】
2019053383.tif 000042
【図８】
2019053383.tif 000043
【図９】
2019053383.tif 000044
【図１０】
2019053383.tif 000045
【図１１】
2019053383.tif 000046