以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明によるニューラルネットワーク学習装置の第一の実施形態の構成例を示すブロック図である。本発明におけるニューラルネットワーク学習装置100は、学習データ記憶部10と、学習データ決定部20と、学習部30と、線形化量決定部40と、集約部50とを備えている。
学習データ記憶部10は、後述する学習部30が学習に用いる複数の学習データ(学習データセット)を記憶する。また、学習データ記憶部10は、後述する学習部30がモデルを生成するために必要な各種パラメータを記憶していてもよい。本実施形態では、学習前に入力層、中間層の数および出力層、並びに、各層の接続形態を含むネットワーク構造がパラメータ等を用い予め定められ、学習データ記憶部10に記憶されているものとする。学習データ記憶部10は、例えば、磁気ディスク等により実現される。
学習データ決定部20は、学習データ記憶部10から学習データを取得し、学習部30に入力する。学習データ決定部20が取得する学習データを決定する方法は任意である。また、学習データ決定部20は、後述する学習部30が学習に用いた学習データを特定してもよい。
学習部30は、学習データ決定部20により入力された学習データを用いてニューラルネットワークを学習する。学習部30は、広く知られた方法を用いてニューラルネットワークを学習すればよい。本実施形態では、学習部30が誤差逆伝播法を用いてニューラルネットワークを学習する方法を説明する。具体的には、学習部30は、入力された学習データを(多層)ニューラルネットワークへ入力し、出力を取得する。そして、学習部30は、出力と学習データとの誤差を算出し、算出された誤差を出力から入力方向へ伝搬させ、入力層までの各層の重みを修正する。修正量は、学習率により決定されるため、用いられる学習率は、予め定めておけばよい。
さらに、本実施形態では、学習部30は、ニューラルネットワークの学習の際、そのニューラルネットワークによる出力に基づく評価値を算出する。学習部30が算出する評価値として、出力と学習データとの誤差や、検証データによる出力の判定精度、出力回数などが挙げられる。
本実施形態では、学習部30が、算出した誤差を評価値として用いる場合について説明する。すなわち、学習部30は、ニューラルネットワークの学習において、学習データとそのニューラルネットワークによる出力との誤差を算出する。
線形化量決定部40は、ニューラルネットワークで用いられる活性化関数に含まれるパラメータであって、増加または減少させることによりその活性化関数を線形関数に近づけるパラメータ(以下、線形化量と記す。)を決定する。具体的には、線形化量決定部40は、学習部30によって算出された評価値が予め定められた基準を満たす場合に、線形化量を予め定めた分だけ変化させる。本実施形態では、線形化量を増加または減少させる方法を説明する。
以下の式3に例示する関数は、線形化量γを含む活性化関数の一例である。
式3に示す活性化関数は、Scaling Tanhと呼ばれる活性化関数であり、γを増加させると線形関数y=xに近づく。図2は、Scaling Tanhの変化例を示す説明図である。図2では、γを1から1000まで変化させた場合のグラフの変化を例示している。図2に例示するように、上記の式3では、γ>0のときに、出力が±γを超えない。また、式3における微分は、以下の式4に示すように、原点付近で傾き1になる。
線形化量決定部40は、学習過程において、線形化量γを逐次増加または減少させる。本実施形態では、線形化量決定部40は、誤差の減少に応じて線形化量を増加または減少させる。線形化量決定部40は、例えば、評価値として算出された誤差が予め定めた閾値より小さくなったときに線形化量を増加または減少させてもよい。線形化量を変更する度合いは、学習率等と同様に予め定めておけばよく、線形化量決定部40は、例えば、誤差errに対し、以下の式5で算出されるγを適用してもよい。
図3は、線形化量を増加させる度合いの例を示す説明図である。図3に例示するグラフは、上記式5によって定められる度合いであり、誤差が小さくなるほど線形化量が大きく設定されることを示す。
集約部50は、線形化量を増加または減少させることにより線形関数に収束すると判断される活性化関数をその線形関数に置き換える。例えば、上記式3に示す活性化関数を用いた場合に、学習過程において線形化量γを増加させた結果、学習の終了時にγ=∞(無限大)にできるとする。この場合、集約部50は、線形近似可能と判断し、活性化関数を以下の式6に示すように、傾き1の線形関数に置き換える。
また、集約部50は、γを予め定めた閾値(例えばγ=16など)以上の場合に、線形近似可能と判定して、線形関数に置き換えてもよい。また、中間層の出力に対して集約させる線形関数の傾きと見なせる範囲(以下、線形近似範囲と記す。)を設定しておき、集約部50は、γを増加させたときの活性化関数の傾きがその範囲内の場合に線形近似可能と判定して、線形関数に置き換えてもよい。
図4は、線形近似を判定する際に設定する範囲の例を示す説明図である。図4に例示するように、原点付近の範囲を設定しておき、集約部50は、この範囲内における傾きを算出してもよい。例えば、集約させる線形関数の傾きが1の場合、傾き=0.95を傾き1と見なせる範囲と設定しておき、集約部50は、γを増加させたときの活性化関数の傾きが0.95以上の場合に線形近似可能と判定して、線形関数に置き換えてもよい。
なお、集約部50は、γ=∞にできないと判断した場合、活性化関数を線形関数に置き換えられないと判断して、集約処理を中止すればよい。また、上記説明では、誤差の減少に応じて線形化量γを増加させる方法を説明したが、学習部30がγ=1で学習を行った後で、推論の精度を維持できるようにγ=∞に変更されてもよい。
そして、集約部50は、置き換えた線形関数を用いる層間の重みを集約する。例えば、図34に例示するニューラルネットワークで用いる活性化関数が全て線形関数に置き換え可能であったとする。この場合、集約部50は、図34に例示する重みW1~W5を以下の式7に例示する重みWに集約する。
W=W5W4W3W2W1 (式7)
集約された重みWを用いることで、推論時には、以下に例示する式8を用いて計算を行うことができる。
Out=W・In (式8)
このように集約部50が重みを集約することで、計算量を削減することが可能になる。例えば、上記に示す式7の例では、計算量を5分の1に削減することが可能になる。
なお、集約部50は、全ての層間の重みだけでなく、一部の層間の重みを集約してもよい。例えば、一部の活性化関数のみ線形関数に置き換えられた場合、集約部50は、置き換えた一部の層間の重みのみ集約してもよい。例えば、図34に例示するニューラルネットワークの入力層、第一層および第二層の活性化関数を線形関数に置き換え可能であったとする。この場合、集約部50は、図34に例示する重みW1~W5を以下の式9に例示する重みWpartに集約してもよい。
Wpart=W3W2W1 (式9)
図5は、重みを集約したニューラルネットワークの例を示す説明図である。図5に例示するニューラルネットワークに重みを集約した場合、一部を集約した重みWpartを用いることで、推論時には、以下に例示する式10を用いて計算を行うことができる。
Out=Wpart・In (式10)
以下、活性化関数を部分的に線形近似する場合の具体例を説明する。図6は、活性化関数を部分的に線形近似する処理の例を示す説明図である。活性化関数を部分的に線形近似できる状態とは、一つのニューラルネットワークに含まれる一部のニューラルネットワークの構造を変更できる状態を示す。例えば、部分的に「ある特徴量」を抽出するための構造を設計した場合には、各特徴量を抽出する構造自体が、一部のニューラルネットワークに対応する。
例えば、図6に例示するように、ある画像データのセットから、丸、三角および四角を分類する処理を想定した場合、丸の有無の判定、三角の有無の判定および四角の有無の判定を別々のネットワーク構造で構成することができる。最終的に三種類の判定回路の出力をまとめて一つの出力を作る構成を一つのニューラルネットワークとした場合、例えば、丸の有無の判定だけ線形近似できる状況が部分的に線形近似できる状況に対応する。
なお、上記説明では、Scaling Tanhを活性化関数の一例として説明したが、活性化関数は、Scaling Tanhに限定されない。以下、線形化量を変更することにより線形関数に近づく活性化関数の例をいくつか説明する。
第一の他の活性化関数の例として、Scaling Sigmoidが挙げられる。Scaling Sigmoidは、以下に例示する式11で表される関数であり、γを1から∞まで増加させたときに、φ(x)=0.25x+0.5に近似される関数である。また、式11の微分は、以下の式12で表される。
図7は、Scaling Sigmoidの変化例を示す説明図である。また、図8は、Scaling Sigmoidの傾きの変化例を示す説明図である。図7では、γを1から1000まで変化させた場合のグラフの変化を例示している。図7に例示するようにγを増加させていくと、図7に例示するグラフは、図8に例示する傾きで示されるように、最終的に切片0.5を通る傾き0.25の直線に近似される。
第二の他の活性化関数の例として、Scaling ReLUが挙げられる。Scaling ReLUは、以下に例示する式13で表される関数であり、γを0から-∞まで減少させたときに、φ(x)=xに近似される関数である。また、式13の微分は、以下の式14で表される。
図9は、Scaling ReLUの変化例を示す説明図である。図9では、γを0から-1000まで変化させた場合のグラフの変化を例示している。図9に例示するように、γを減少させていくと、図9に例示するグラフは、最終的に、原点を通る傾き1の直線に近似される。
第三の他の活性化関数の例として、Scaling PReLUが挙げられる。Scaling PReLUは、以下に例示する式15で表される関数であり、γを0から(1-α)(ただし、0<α<1)まで増加させたときに、φ(x)=xに近似される関数である。また、式15の微分は、以下の式16で表される。
図10は、Scaling PReLUの変化例を示す説明図である。図10では、α=0.2とし、γを0から0.8まで変化させた場合のグラフの変化を例示している。図10に例示するように、γを増加させていくと、図10に例示するグラフは、最終的に、原点を通る傾き1の直線に近似される。
第四の他の活性化関数の例として、Min and Maxが挙げられる。Min and Maxは、以下に例示する式17で表される関数であり、γを0から∞まで増加させたときに、φ(x)=xに近似される関数である。また、式17の微分は、以下の式18で表される。
図11は、Min and Maxの変化例を示す説明図である。図11では、γを1から1000まで変化させた場合のグラフの変化を例示している。図11に例示するように、γを増加させていくと、図11に例示するグラフは、最終的に、原点を通る傾き1の直線に近似される。
他にも、上述するScaling Tanhを一般化した一般化Scaling Tanhが活性化関数として用いられてもよい。一般化Scaling Tanhは、以下に例示する式19で表される関数であり、γを1から∞まで増加させたときに、φ(x)=αxに近似される関数である。また、式19の微分は、以下の式20で表される。
図12は、一般化Scaling Tanhの変化例を示す説明図である。また、図13は、一般化Scaling Tanhの傾きの変化例を示す説明図である。図12では、α=3とし、γを1から1000まで変化させた場合のグラフの変化を例示している。図12に例示するように、γを増加させていくと、図12に例示するグラフは、図13に例示する傾きで示されるように、最終的に原点を通る傾きα=3の直線に近似される。
以降、学習処理が終了するまで、上記処理が繰り返される。
学習データ決定部20と、学習部30と、線形化量決定部40と、集約部50とは、プログラム(ニューラルネットワーク学習プログラム)に従って動作するコンピュータのプロセッサ(例えば、CPU(Central Processing Unit )、GPU(Graphics Processing Unit)、FPGA(field-programmable gate array ))によって実現される。
例えば、プログラムは、ニューラルネットワーク学習装置の記憶部(図示せず)に記憶され、プロセッサは、そのプログラムを読み込み、プログラムに従って、学習データ決定部20、学習部30、線形化量決定部40および集約部50として動作してもよい。また、ニューラルネットワーク学習装置の機能がSaaS(Software as a Service )形式で提供されてもよい。
学習データ決定部20と、学習部30と、線形化量決定部40と、集約部50とは、それぞれが専用のハードウェアで実現されていてもよい。また、各装置の各構成要素の一部又は全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組合せによって実現されもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。
また、ニューラルネットワーク学習装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本実施形態のニューラルネットワーク学習装置の動作を説明する。図14は、本実施形態のニューラルネットワーク学習装置の動作例を示すフローチャートである。学習データ決定部20は、学習データ記憶部10に記憶された学習データセットから学習データを決定し(ステップS11)、入力データとして学習部30に入力する(ステップS12)。学習部30は、入力された学習データを(多層)ニューラルネットワークに適用することで出力を取得し(ステップS13)、出力と学習データとの誤差を算出する(ステップS14)。
学習部30は、誤差を出力から入力方向へ伝搬させて入力層までの重みを修正する(ステップS15)。一方、線形化量決定部40は、誤差の減少に応じて線形化量を増加または減少させる(ステップS16)。集約部50は、学習処理の終了条件を満たしているか判断する(ステップS17)。終了条件は任意であり、例えば、予め定めた回数や時間等が挙げられる。終了条件を満たしていない場合(ステップS17におけるNo)、ステップS11以降の処理が繰り返される。
一方、終了条件を満たしている場合(ステップS17におけるYes)、集約部50は、線形関数に収束すると判断される活性化関数をその線形関数に置き換えて、置き換えた線形関数を用いる層間の重みを集約する(ステップS18)。
以上のように、本実施形態では、学習部30が、ニューラルネットワークの学習において、そのニューラルネットワークによる出力に基づく評価値(具体的には、誤差)を算出し、線形化量決定部40が、評価値が予め定められた基準を満たす場合に、線形化量を変化させる。具体的には、線形化量決定部40は、誤差の減少に応じて線形化量を増加または減少させる。そして、集約部50が、線形化量を増加または減少させることにより線形関数に収束すると判断される活性化関数をその線形関数に置き換えて、置き換えた線形関数を用いる層間の重みを集約する。よって、計算量を削減するようにニューラルネットワークを学習できる。
例えば、特許文献1に記載されているような一般的なニューラルネットワークの学習において、学習率を調整して最適解を求めることは行われていたが、予め定められた非線形な活性化関数を変更するという技術的思想は存在しなかった。一方、本実施形態では、学習部30が、多層ニューラルネットワークの学習過程にて、拡大縮小が可能な活性化関数を用いて、学習途中で活性化関数を線形変更へ変形させる。すなわち、パラメータを変えることにより、元の非線形関数を線形関数に近づけたり、元の非線形関数に戻したりできる活性化関数が用いられる。そのため、学習対象が線形分離可能か不可能かの判断が可能になる。
図15は、重みを集約したニューラルネットワークの例を示す説明図である。例えば、図34に例示するニューラルネットワークについて、線形化量を増加または減少させた学習の結果、W1の重みが以下の式21で示す行列で表されるものとする。この場合、以下の式21で示す行列は、式22で示す2つの(行列)式に変形できる。そこで、集約部50は、図15の部分P1に示すように重みを集約したニューラルネットワークを構築してもよい。
また、W4の重みについて、w12、w13、w21、w22、w31、および、w33が十分小さいとする。この場合、集約部50は、図15の部分P2に示すように、接続関係を削除する、いわゆる枝刈りをすることによってニューラルネットワークを構築してもよい。
次に、本実施形態のニューラルネットワーク学習装置の変形例を説明する。上記実施形態では、線形化量決定部40が、誤差の減少に応じて線形化量を増加または減少させた。線形化量決定部40は、線形化量を増加または減少させる条件として、さらに、中間層の出力を考慮してもよい。具体的には、線形化量決定部40は、誤差の減少に加え、中間層の出力が、集約させる線形関数の傾きと見なせるものとして設定された範囲(すなわち、線形近似範囲)の場合に、線形化量を増加または減少させてもよい。
実施形態2.
次に、本発明によるニューラルネットワーク学習装置の第二の実施形態を説明する。第一の実施形態では、学習部40が評価値として算出した誤差に基づいて線形化量を増加または減少させる方法を説明した。本実施形態では、評価値として検証データによる出力の判定精度を用いて線形化量を変更する方法を説明する。
図16は、本発明によるニューラルネットワーク学習装置の第二の実施形態の構成例を示すブロック図である。本実施形態のニューラルネットワーク学習装置200は、学習データ記憶部10と、テストデータ記憶部12と、学習データ決定部20と、テストデータ決定部22と、学習部32と、線形化量決定部42と、集約部50とを備えている。
すなわち、本実施形態のニューラルネットワーク学習装置200は、第一の実施形態のニューラルネットワーク学習装置100と比較して、テストデータ記憶部12およびテストデータ決定部22をさらに備え、学習部30および線形化量決定部40の代わりに、それぞれ学習部32および線形化量決定部42を備えている点において異なる。
テストデータ記憶部12は、後述する学習部32が、ニューラルネットワークの判定精度を算出する際に用いる正解ラベル付のテストデータを記憶する。テストデータ記憶部12は、例えば、磁気ディスク等により実現される。
テストデータ決定部22は、テストデータ記憶部12からテストデータを取得し、学習部32に入力する。テストデータ決定部22が取得するテストデータを決定する方法は任意である。また、テストデータ決定部22は、後述する学習部32が評価に用いたテストデータを特定してもよい。
学習部32は、第一の実施形態と同様の方法を用いて、学習データ決定部20により入力された学習データを用いてニューラルネットワークを学習する。さらに、本実施形態では、学習部32は、入力されたテストデータを(多層)ニューラルネットワークへ入力し、出力を取得する。そして、学習部32は、出力とテストデータの正解ラベルとに基づいて判定精度を算出する。
具体的には、学習部32は、ニューラルネットワークに、正解ラベル付のテストデータを入力した際の判定精度を算出する。判定精度を算出する方法は任意であり、例えば正解率を算出する方法など、広く知られた方法が用いられれば良い。
線形化量決定部42は、算出された判定精度の増加に応じて線形化量を増加または減少させる。線形化量決定部42は、例えば、評価値として算出された判定精度が目標とした値になったとき(予め定めた閾値よりも高くなったとき)に線形化量を増加または減少させてもよい。線形化量を変更させる度合いは、第一の実施形態と同様に予め定めておけばよい。
集約部50は、第一の実施形態と同様、線形化量を増加または減少させることにより線形関数に収束すると判断される活性化関数をその線形関数に置き換え、置き換えた線形関数を用いる層間の重みを集約する。
以降、学習処理が終了するまで、上記処理が繰り返される。なお、線形化量決定部42は、学習データが入力されるごとに、線形化量を更新してもよく、複数の学習データによる学習が行われるごとに、線形化量を更新してもよい。
学習データ決定部20と、テストデータ決定部22と、学習部32と、線形化量決定部42と、集約部50とは、プログラム(ニューラルネットワーク学習プログラム)に従って動作するコンピュータのプロセッサによって実現される。
次に、本実施形態のニューラルネットワーク学習装置の動作を説明する。図17は、本実施形態のニューラルネットワーク学習装置の動作例を示すフローチャートである。学習データを入力して重みを修正するステップS11からステップS15までの処理は、図14に例示する処理と同様である。
テストデータ決定部22は、テストデータ記憶部12に記憶されたテストデータセットからテストデータを決定し(ステップS21)、入力データとして学習部32に入力する(ステップS22)。学習部32は、入力されたテストデータを(多層)ニューラルネットワークに適用することで出力を取得し(ステップS23)、出力とテストデータに基づいて正解率(判定精度)を算出する(ステップS24)。
線形化量決定部42は、判定精度が目標とした値になったか否か判断する(ステップS25)。判定精度が目標とした値になった場合(ステップS25におけるYes)、線形化量決定部42は、線形化量γを増加または減少させる(ステップS26)。一方、判定精度が目標とした値になっていない場合(ステップS25におけるNo)、線形化量γは変更せずに処理を継続する。
以降、集約部50が学習処理の終了条件を判断して活性化関数を線形関数に置き換えるステップS17およびステップS18の処理は、図14に例示する処理と同様である。
以上のように、本実施形態では、学習部32が、ニューラルネットワークに、ラベル付のテストデータを入力した際の判定精度を算出し、線形化量決定部42が、判定精度の増加に応じて線形化量を増加または減少させる。よって、第一の実施形態と同様、計算量を削減するようにニューラルネットワークを学習できる。
なお、第一の実施形態では、学習部30が評価値として誤差を算出し、第二の実施形態では、学習部32が評価値として判定精度を算出する方法を説明した。他にも、学習部は、学習結果の出力回数を評価値としてもよい。
実施形態3.
次に、本発明によるニューラルネットワーク学習装置の第三の実施形態を説明する。第一の実施形態および第二の実施形態では、誤差や判定精度に基づいて線形化量を変更させていた。一方、線形化量を変更することにより活性化関数を更新した場合、線形分離できないデータの影響によって、誤差の増大や判定精度の低下が想定される。
一方、線形分離できないデータの集合であっても、データの入力次元を増加させることで線形分離できるようになることが知られている。図18は、入力次元を増加させた場合の線形分離化の例を示す説明図である。図18に例示するように、二次元のXOR(exclusive or)は、線形分離できない。一方、入力次元を四次元に増加させ、増加させた次元のデータの値を0(または1)にした場合、三次元線形空間を用いてXORを線形分離可能になる。図18(a)に例示する分離は、追加した次元の値が0の場合に、1を線形分離している例であり、図18(b)に例示する分離は、追加した次元の値が1の場合に、0を線形分離している例である。
そこで、本実施形態では、線形化量の変更に応じて学習データを修正する方法を説明する。図19は、本発明によるニューラルネットワーク学習装置の第三の実施形態の構成例を示すブロック図である。本実施形態のニューラルネットワーク学習装置300は、学習データ記憶部10と、学習データ決定部20と、学習部30と、線形化量決定部40と、集約部50と、入力次元追加部60とを備えている。
すなわち、本実施形態のニューラルネットワーク学習装置300は、第一の実施形態のニューラルネットワーク学習装置100と比較して、入力次元追加部60をさらに備える点において異なる。
入力次元追加部60は、線形化量が変更されたあとで評価値が悪化した場合、次元数を増加させるように学習データの値を追加し、ニューラルネットワークの入力層の次元数を増加させるようにニューラルネットワークの構造を変更する。具体的には、入力次元追加部60は、線形化量を増加または減少させたあとで誤差が大きくなる場合、n個の学習データ(例えば、[In1,…,Ini,Out1,…,Outj])に、入力次元を1次元増加させた学習データ(例えば、[In1,…,Ini,Ini+1,Out1,…,Outj]=[In1,…,Ini,1,1,…,1])を追加する。そして、入力次元追加部60は、入力次元を1増加させるように、多層ニューラルネットワークの構造を変更する。
以降、入力次元を増加させた学習データを用いて、学習部30による処理が繰り返される。なお、本実施形態の入力次元追加部60を第二の実施形態のニューラルネットワーク学習装置200が、さらに備える構成であってもよい。この場合、入力次元追加部60は、線形化量を増加または減少させたあとで判定精度が悪くなる場合、n個の学習データに、入力次元を1次元増加させた学習データを追加し、入力次元を1増加させるように、多層ニューラルネットワークの構造を変更すればよい。
学習データ決定部20と、学習部30と、線形化量決定部40と、集約部50と、入力次元追加部60とは、プログラム(ニューラルネットワーク学習プログラム)に従って動作するコンピュータのプロセッサによって実現される。
次に、本実施形態のニューラルネットワーク学習装置の動作を説明する。図20は、本実施形態のニューラルネットワーク学習装置の動作例を示すフローチャートである。学習データを入力して重みを修正し、線形化量を変更するステップS11からステップS16までの処理は、図14に例示する処理と同様である。
入力次元追加部60は、線形化量を変更したあとで評価値が悪化したか否か判断する(ステップS31)。入力次元追加部60は、例えば、誤差が大きくなったか否か、判定精度が悪くなったか否かを判断する。評価値が悪化した場合(ステップS31におけるYes)、入力次元追加部60は、次元数を増加させるように学習データの値を追加する(ステップS32)。さらに、入力次元追加部60は、ニューラルネットワークの入力層の次元数を増加させるようにニューラルネットワークの構造を変更する(ステップS33)。
一方、評価値が悪化していない場合(ステップS31におけるNo)、データの変更等は行われずにステップS17からの処理が行われる。以降、集約部50が学習処理の終了条件を判断して活性化関数を線形関数に置き換えるステップS17およびステップS18の処理は、図14に例示する処理と同様である。
以上のように、本実施形態では、入力次元追加部60が、線形化量が変更されたあとで評価値が悪化した場合、次元数を増加させるように学習データの値を追加し、ニューラルネットワークの入力層の次元数を増加させるようにニューラルネットワークの構造を変更する。よって、第一の実施形態または第二の実施形態の効果に加え、線形分離可能な範囲を増やすことが可能になる。
実施形態4.
次に、本発明によるニューラルネットワーク学習装置の第四の実施形態を説明する。上記実施形態では、活性化関数を非線形関数から線形関数に近似するように線形化量を増加または減少させる方法を説明した。本実施形態では、予め線形関数に近似可能な値に線形化量を設定し、線形性の有無を判定しながら学習を行う方法を説明する。
図21は、本発明によるニューラルネットワーク学習装置の第四の実施形態の構成例を示すブロック図である。本実施形態のニューラルネットワーク学習装置400は、学習データ記憶部10と、テストデータ記憶部12と、学習データ決定部20と、テストデータ決定部22と、学習部32と、線形化量決定部44と、集約部50とを備えている。すなわち、本実施形態のニューラルネットワーク学習装置400は、第二の実施形態のニューラルネットワーク学習装置200と比較して、線形化量決定部42の代わりに線形化量決定部44を備えている点において異なる。なお、本実施形態のニューラルネットワーク学習装置400が、入力次元追加部60を備えていていてもよい。
線形化量決定部44は、学習部32による学習が行われる前に、活性化関数を線形関数に近似可能な値に線形化量を設定する。例えば、活性化関数として、上記の式3に示すScaling Tanhが用いられる場合、線形化量決定部44は、γを非常に大きな値(例えば、γ=1000)に設定する。このように設定することで、学習の初期状態で活性化関数を線形関数と見なして学習処理を行うことができる。
以降、第二の実施形態等と同様の学習サイクル(例えば、図17に例示するステップS11からステップS15およびステップS21からステップS24の処理)を複数回実行する。
線形化量決定部44は、判定精度が線形性を表わす所定の基準を満たさないと判定した場合、活性化関数が非線形関数を表わすように線形化量を変更する。例えば、活性化関数として、上記の式3に示すScaling Tanhが用いられる場合、線形化量決定部44は、γを1に戻すように変更する。一方、線形化量決定部44は、判定精度が線形性を表わす所定の基準を満たすと判定した場合、線形化量を変更せずに以降の学習処理を継続させる。線形性を表わす基準の設定は任意であり、線形化量決定部44は、例えば、判定精度が予め定めた目標精度に達したか否かで線形性を表わすか否か判定してもよい。
このように、線形化量決定部44がパラメータである線形化量を変更するだけで、モデルを変更せずに線形状態と非線形状態とを切り替えることが可能になる。
学習データ決定部20と、テストデータ決定部22と、学習部32と、線形化量決定部44と、集約部50とは、プログラム(ニューラルネットワーク学習プログラム)に従って動作するコンピュータのプロセッサによって実現される。
次に、本実施形態のニューラルネットワーク学習装置の動作を説明する。図22は、本実施形態のニューラルネットワーク学習装置の動作例を示すフローチャートである。まず、線形化量決定部44は、学習処理が行われる前に、活性化関数を線形関数に近似可能な値に線形化量を設定する(ステップS51)。以降、図17に例示するステップS11からステップS15までの処理、および、ステップS21からステップS24の処理と同様のニューラルネットワークの学習処理および判定精度の算出処理が行われる。
線形化量決定部44は、判定精度が線形性を表わす所定の基準を満たすか否か(すなわち、線形性を有するか否か)判断する(ステップS52)。基準を満たしていない(すなわち、線形性を有さない)と判断した場合(ステップS52におけるNo)、線形化量決定部44は、活性化関数が非線形関数を表わすように線形化量を変更する(ステップS53)。一方、基準を満たしている(すなわち、線形性を有する)と判断した場合(ステップS52におけるYes)、線形化量を維持したまま、ステップS17以降の処理が行われる。
以上のように、本実施形態では、線形化量決定部44が、学習部32による学習の開始前に、活性化関数を線形関数に近似可能な値に線形化量を設定する。そして、学習部32による学習の結果、判定精度が線形性を表わす所定の基準を満たさないと判定した場合、活性化関数が非線形関数を表わすように線形化量を変更し、上記基準を満たすと判定した場合、線形化量を維持したまま学習部32による学習を継続させる。よって、上記実施形態の効果に加え、ニューラルネットワークのモデルを変更することなく、線形状態と非線形状態とを切り替えることが可能になる。
実施形態5.
次に、本発明によるニューラルネットワーク学習装置の第五の実施形態を説明する。第四の実施形態では、線形化量決定部44が、判定精度が線形性を表わす所定の基準を満たすと判定した場合、線形化量を維持したまま学習部32による学習を継続させる場合について説明した。本実施形態では、第四の実施形態において、線形性を表わす所定の基準を満たすと判定された場合、モデルを再構築する方法を説明する。
図23は、本発明によるニューラルネットワーク学習装置の第五の実施形態の構成例を示すブロック図である。本実施形態のニューラルネットワーク学習装置500は、学習データ記憶部10と、テストデータ記憶部12と、学習データ決定部20と、テストデータ決定部22と、学習部34と、線形化量決定部44と、集約部50と、モデル再構築部70とを備えている。すなわち、本実施形態のニューラルネットワーク学習装置500は、第四の実施形態のニューラルネットワーク学習装置400と比較して、学習部32の代わりに学習部34を備え、モデル再構築部70を更に備えている点において異なる。なお、本実施形態のニューラルネットワーク学習装置500が、入力次元追加部60を備えていていてもよい。
モデル再構築部70は、線形化量決定部44によって、線形性を表わす所定の基準を満たすと判定された場合、学習中のニューラルネットワークから中間層をすべて削除し、入力層と出力層とを線形関数を表わす活性化関数で接続するモデルへ再構築する。モデル再構築部70は、例えば、図34に例示するニューラルネットワークを図32に例示するニューラルネットワークに再構築する。以降、第二の実施形態等と同様の学習サイクル(例えば、図17に例示するステップS11からステップS15およびステップS21からステップS24の処理)を実行する。
図24は、ニューラルネットワークを再構築する方法の例を示す説明図である。図24に例示するように、ネットワーク構造を定義するmakelink()関数と、中間層の活性化関数を定義するforward() 関数とを含むモデル定義がされているとする。図24に例示するモデル定義において、リンク構造は、link(入力数,出力数)で表されるものとし、リンク構造内には重み値が含まれる。また、出力列は、一般化Scaling Tanhを表わすgstanh(入力列,リンク構造,一般化Scaling Tanhにおけるγ)、または、線形関数を表わすlinear(入力列,リンク構造)で表されるものとする。
例えば、図34に例示する構造を図32に例示する構造に置き換える場合、モデル再構築部70は、図24に例示するモデル定義D1からモデル定義D2へモデル定義を書き換えることで、中間層の構造に依らず、機械的にモデルを再構築してもよい。
図25は、ニューラルネットワークを再構築する方法の他の例を示す説明図である。一般に、出力数と入力数が同じになるネットワークが出力に追加されて処理される。図24に示す例では、中間層の活性化関数をすべて線形関数に置き換える方法が使用されたが、図25に示す例では、最終段のsoftmax関数を残す方法が使用されている。ここでは、出力列は、softmax関数を表わすsoftmax(入力列,リンク構造) で表されるものとする。
例えば、図34に例示する構造を図32に例示する構造に置き換える場合、モデル再構築部70は、図25に例示するモデル定義D3からモデル定義D4へモデル定義を書き換えることで、中間層の構造に依らず、機械的にモデルを再構築してもよい。
このように、学習部32が、線形関数を表わす活性化関数で接続されたニューラルネットワークを用いて学習を行うため、層間の重みWは、学習により算出される。よって、積和計算による丸め誤差が生じすること抑制できるため、よりニューラルネットワークの精度を向上させることが可能になる。
学習データ決定部20と、テストデータ決定部22と、学習部32と、線形化量決定部44と、集約部50とは、モデル再構築部70とは、プログラム(ニューラルネットワーク学習プログラム)に従って動作するコンピュータのプロセッサによって実現される。
次に、本実施形態のニューラルネットワーク学習装置の動作を説明する。図26は、本実施形態のニューラルネットワーク学習装置の動作例を示すフローチャートである。活性化関数を線形関数に近似可能な値に線形化量を設定してニューラルネットワークを学習し、線形性を判断するまでの処理は、図22に例示するステップS51からステップS53までの処理と同様である。ただし、ステップS52におけるYes以降の処理が異なる。
すなわち、判定精度が線形性を表わす所定の基準を満たすと判断された場合(ステップS52におけるYes)、モデル再構築部70は、学習中のニューラルネットワークから中間層をすべて削除し、入力層と出力層とを線形関数を表わす活性化関数で接続するモデルへ再構築する(ステップS61)。以降、再構築されたモデルを用いてステップS11以降の処理を繰り返すことによりニューラルネットワークを学習する。
以上のように、本実施形態では、判定精度が線形性を表わす所定の基準を満たすと判断された場合、モデル再構築部70が、学習中のニューラルネットワークから中間層をすべて削除し、入力層と出力層とを線形関数を表わす活性化関数で接続するモデルへ再構築する。このように、再構築されたモデルを用いて学習部32が学習を行うため、ニューラルネットワークの精度を向上させることが可能になる。
実施形態6.
次に、本発明によるニューラルネットワーク学習装置の第六の実施形態を説明する。第五の実施形態では、判定精度が線形性を表わす所定の基準を満たすと判断された場合にモデルを再構築する方法を説明した。本実施形態では、第五の実施形態において、線形性を表わす所定の基準を満たすと判定された場合に、線形性を有する部分と非線形性が残る部分とを特定してモデルを再構成する方法を説明する。
図27は、本発明によるニューラルネットワーク学習装置の第六の実施形態の構成例を示すブロック図である。本実施形態のニューラルネットワーク学習装置600は、学習データ記憶部10と、テストデータ記憶部12と、第一重み記憶部14と、第二重み記憶部16と、学習データ決定部20と、テストデータ決定部22と、学習部34と、線形化量決定部44と、集約部50と、線形・非線形分離再構成部72とを備えている。
すなわち、本実施形態のニューラルネットワーク学習装置600は、第五の実施形態のニューラルネットワーク学習装置500と比較して、モデル再構築部70の代わりに線形・非線形分離再構成部72を備え、第一重み記憶部14および第二重み記憶部16をさらに備えている点において異なる。なお、本実施形態のニューラルネットワーク学習装置600が、入力次元追加部60を備えていていてもよい。また、第一重み記憶部14および第二重み記憶部16が、同一の記憶装置で実現されていてもよい。
本実施形態では、線形化量決定部44によって、線形性を表わす所定の基準を満たすと判定された場合でも、学習部34は、学習処理を継続する。線形・非線形分離再構成部72は、学習部34による学習が完了すると、線形性を表わす所定の基準を満たすと判定された場合、学習されたニューラルネットワークの重み(以下、第一重みと記す。)を第一重み記憶部14に保存する。
その後、学習部34および線形化量決定部44は、第二の実施形態の学習部32および線形化量決定部42と同様に、判定精度に基づいて線形化量γを増加させながらニューラルネットワークを学習する。そして、線形化量決定部44は、線形化量γが十分な大きさ(例えば、元の1000倍程度)になったときに学習されたニューラルネットワークの重み(以下、第二重みと記す。)を第二重み記憶部16に保存する。
線形・非線形分離再構成部72は、第一重みと第二重みとの差分に基づいて、非線形性が残る入力を特定し、線形性を有する部分と非線形性を有する部分とに分離したニューラルネットワークを再構成する。具体的には、線形・非線形分離再構成部72は、第一重みと第二重みで対応する層の重みの差異が予め定めた基準よりも小さい層を線形性を有する層として削除するようにニューラルネットワークを構成する。
図28は、ニューラルネットワークを再構成する処理の例を示す説明図である。例えば、図34に例示する構造が、図28に例示するモデル定義D5のように定義されているものとする。また、第一重み記憶部14に記憶された重み(第一重み)の行列を、M.W1~M.W5とし、第二重み記憶部16に記憶された重み(第二重み)の行列を、N.W1~N.W5とする。
線形・非線形分離再構成部72は、層ごとの重みの差異を算出して、ニューラルネットワークを再構成するか否か判断する。線形・非線形分離再構成部72は、層ごとの重みの差を算出してもよく、層ごとの重みの商を算出してもよい。具体的には、線形・非線形分離再構成部72は、(N.W1-M.W1),…,(N.W5-M.W5)、または、(N.W1/M.W1),…,(N.W5/M.W5)を算出してもよい。算出された差が0の場合、または、算出された商が1の場合、その重みに対応する層は精度の向上に貢献しないと判断し、線形・非線形分離再構成部72は、その層を削除すると判定する。
そして、線形・非線形分離再構成部72は、削除すると判定された層の数を全層数から削除する。例えば、(N.W1-M.W1)=0、または、(N.W1/M.W1)=1を満たすが、それ以外の層は上記条件を満たさない場合、線形・非線形分離再構成部72は、全層から一層分削除する。例えば、図28に例示するモデル定義D5がされていた場合、線形・非線形分離再構成部72は、モデル定義D6のようにニューラルネットワークの構造を再構成する。
学習データ決定部20と、テストデータ決定部22と、学習部32と、線形化量決定部44と、集約部50は、線形・非線形分離再構成部72とは、プログラム(ニューラルネットワーク学習プログラム)に従って動作するコンピュータのプロセッサによって実現される。
次に、本実施形態のニューラルネットワーク学習装置の動作を説明する。図29は、本実施形態のニューラルネットワーク学習装置の動作例を示すフローチャートである。活性化関数を線形関数に近似可能な値に線形化量を設定してニューラルネットワークを学習し、線形性を判断するまでの処理は、図22に例示するステップS51からステップS53までの処理と同様である。ただし、ステップS52におけるYes以降の処理が異なる。
すなわち、判定精度が線形性を表わす所定の基準を満たすと判断された場合(ステップS52におけるYes)、線形・非線形分離再構成部72は、学習部34による学習の完了時に、学習されたニューラルネットワークの重みを第一重み記憶部14に保存すると判断し(ステップS71)、終了条件満たすまで学習処理を繰り返す(ステップS17におけるNo)。
終了条件を満たすと判断された場合(ステップS17におけるYes)、線形・非線形分離再構成部72は、学習されたニューラルネットワークの重み(第一重み)を第一重み記憶部14に保存する(ステップS72)。さらに、学習部34は、第二の実施形態で示すように、判定精度に基づいて線形化量γを増加させながらニューラルネットワークを学習する図17に例示するステップS100の処理を行う。そして、線形化量決定部44は、学習されたニューラルネットワークの重み(第二重み)を第二重み記憶部16に保存する(ステップS73)。
線形・非線形分離再構成部72は、第一重みと第二重みとの差異がないか否か判断する(ステップS74)。差異がないと判断された場合(ステップS74におけるYes)、再線形・非線形分離再構成部72は、ニューラルネットワークを再構成する(ステップS75)。一方、差異があると判断された場合(ステップS74におけるNo)、処理を終了する。
以上のように、本実施形態では、線形化量決定部44が、学習部34による学習の開始前に、活性化関数を線形関数に近似可能な値に線形化量を設定し、学習の結果、判定精度が線形性を表わす所定の基準を満たすと判断した場合第一の重みを保存する。さらに、学習部34は、活性化関数が非線形関数を示す値に線形化量を設定して学習し、学習の結果を第二の重みとして保存する。そして、線形・非線形分離再構成部72が、第一重みと第二重みで対応する重みの差異が予め定めた基準よりも小さい層を線形性を有する層として削除するようにニューラルネットワークを再構成する。よって、精度を向上させながら計算量を削減するようにニューラルネットワークを学習できる。
次に、本発明の概要を説明する。図30は、本発明によるニューラルネットワーク学習装置の概要を示すブロック図である。本発明によるニューラルネットワーク学習装置80は、ニューラルネットワークを学習する学習部81(例えば、学習部30,32,34)と、ニューラルネットワークで用いられる活性化関数に含まれるパラメータであって、増加または減少させることによりその活性化関数を線形関数に近づけるパラメータである線形化量(例えば、線形化量γ)を決定する線形化量決定部82(例えば、線形化量決定部40,42,44)と、線形化量を増加または減少させることにより線形関数に収束すると判断される活性化関数をその線形関数に置き換えて、置き換えた線形関数を用いる層間の重みを集約する集約部83(例えば、集約部50)とを備えている。
学習部81は、ニューラルネットワークの学習において、そのニューラルネットワークによる出力に基づく評価値(例えば、誤差、評価精度、出力回数など)を算出し、線形化量決定部82は、評価値が予め定められた基準を満たす場合に、線形化量を変化させる。
そのような構成により、計算量を削減するようにニューラルネットワークを学習できる。
具体的には、学習部81は、ニューラルネットワークに、正解ラベル付のテストデータを入力した際の判定精度を算出してもよい。そして、線形化量決定部82は、判定精度の増加に応じて線形化量を増加または減少させてもよい。
また、線形化量決定部82は、学習部による学習の開始前に、活性化関数を線形関数に近似可能な値に線形化量を設定し、学習の結果、判定精度が線形性を表わす所定の基準を満たさないと判定した場合、活性化関数が非線形関数を表わすように線形化量を変更し、基準を満たすと判定した場合、線形化量を維持したまま学習部による学習を継続させてもよい。
また、ニューラルネットワーク学習装置80は、判定精度が線形性を表わす所定の基準を満たすと判断された場合、学習中のニューラルネットワークから中間層をすべて削除し、入力層と出力層とを線形関数を表わす活性化関数で接続するモデルへ再構築するモデル再構築部(例えば、モデル再構築部70)を備えていてもよい。そして、学習部81は、再構築されたモデルを用いてニューラルネットワークを学習してもよい。
一方、学習部81は、ニューラルネットワークの学習において、学習データとそのニューラルネットワークによる出力との誤差を算出してもよい。そして、線形化量決定部82は、誤差の減少に応じて線形化量を増加または減少させてもよい。
また、ニューラルネットワーク学習装置80は、線形化量が変更されたあとで評価値が悪化した場合、次元数を増加させるように学習データの値を追加し、ニューラルネットワークの入力層の次元数を増加させるようにニューラルネットワークの構造を変更する入力次元追加部(例えば、入力次元追加部60)を備えていてもよい。
図31は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。コンピュータ1000は、プロセッサ1001、主記憶装置1002、補助記憶装置1003、インタフェース1004を備える。
上述のニューラルネットワーク学習装置は、コンピュータ1000に実装される。そして、上述した各処理部の動作は、プログラム(ニューラルネットワーク学習プログラム)の形式で補助記憶装置1003に記憶されている。プロセッサ1001は、プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、当該プログラムに従って上記処理を実行する。
なお、少なくとも1つの実施形態において、補助記憶装置1003は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disc Read-only memory )、DVD-ROM(Read-only memory)、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000が当該プログラムを主記憶装置1002に展開し、上記処理を実行しても良い。
また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置1003に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であっても良い。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)ニューラルネットワークを学習する学習部と、前記ニューラルネットワークで用いられる活性化関数に含まれるパラメータであって、増加または減少させることにより当該活性化関数を線形関数に近づけるパラメータである線形化量を決定する線形化量決定部と、前記線形化量を増加または減少させることにより線形関数に収束すると判断される前記活性化関数を当該線形関数に置き換えて、置き換えた線形関数を用いる層間の重みを集約する集約部とを備え、前記学習部は、前記ニューラルネットワークの学習において、当該ニューラルネットワークによる出力に基づく評価値を算出し、前記線形化量決定部は、前記評価値が予め定められた基準を満たす場合に、前記線形化量を変化させることを特徴とするニューラルネットワーク学習装置。
(付記2)学習部は、ニューラルネットワークに、正解ラベル付のテストデータを入力した際の判定精度を算出し、線形化量決定部は、前記判定精度の増加に応じて線形化量を増加または減少させる付記1記載のニューラルネットワーク学習装置。
(付記3)線形化量決定部は、学習部による学習の開始前に、活性化関数を線形関数に近似可能な値に線形化量を設定し、前記学習の結果、判定精度が線形性を表わす所定の基準を満たさないと判定した場合、活性化関数が非線形関数を表わすように線形化量を変更し、前記基準を満たすと判定した場合、線形化量を維持したまま学習部による学習を継続させる付記2記載のニューラルネットワーク学習装置。
(付記4)判定精度が線形性を表わす所定の基準を満たすと判断された場合、学習中のニューラルネットワークから中間層をすべて削除し、入力層と出力層とを線形関数を表わす活性化関数で接続するモデルへ再構築するモデル再構築部を備え、学習部は、再構築されたモデルを用いてニューラルネットワークを学習する付記3記載のニューラルネットワーク学習装置。
(付記5)学習部は、ニューラルネットワークの学習において、学習データと当該ニューラルネットワークによる出力との誤差を算出し、線形化量決定部は、前記誤差の減少に応じて線形化量を増加または減少させる付記1記載のニューラルネットワーク学習装置。
(付記6)線形化量が変更されたあとで評価値が悪化した場合、次元数を増加させるように学習データの値を追加し、ニューラルネットワークの入力層の次元数を増加させるようにニューラルネットワークの構造を変更する入力次元追加部を備えた付記1から付記5のうちのいずれか1つに記載のニューラルネットワーク学習装置。
(付記7)ニューラルネットワークの構造を再構成する線形・非線形分離再構成部を備え、線形化量決定部は、学習部による学習の開始前に、活性化関数を線形関数に近似可能な値に線形化量を設定し、学習の結果、判定精度が線形性を表わす所定の基準を満たすと判断した場合第一の重みを保存し、学習部は、活性化関数が非線形関数を示す値に線形化量を設定して学習し、学習の結果を第二の重みとして保存し、前記線形・非線形分離再構成部は、前記第一重みと前記第二重みで対応する重みの差異が予め定めた基準よりも小さい層を線形性を有する層として削除するようにニューラルネットワークを再構成する付記1から付記6のうちのいずれか1つに記載のニューラルネットワーク学習装置。
(付記8)ニューラルネットワークを学習し、前記ニューラルネットワークの学習において、当該ニューラルネットワークによる出力に基づく評価値を算出し、前記ニューラルネットワークで用いられる活性化関数に含まれるパラメータであって、増加または減少させることにより当該活性化関数を線形関数に近づけるパラメータである線形化量を決定し、前記評価値が予め定められた基準を満たす場合に、前記線形化量を変化させ、前記線形化量を増加または減少させることにより線形関数に収束すると判断される前記活性化関数を当該線形関数に置き換えて、置き換えた線形関数を用いる層間の重みを集約することを特徴とするニューラルネットワーク学習方法。
(付記9)ニューラルネットワークに、正解ラベル付のテストデータを入力した際の判定精度を算出し、前記判定精度の増加に応じて線形化量を増加または減少させる付記8記載のニューラルネットワーク学習方法。
(付記10)ニューラルネットワークの学習において、学習データと当該ニューラルネットワークによる出力との誤差を算出し、前記誤差の減少に応じて線形化量を増加または減少させる付記8記載のニューラルネットワーク学習方法。
(付記11)コンピュータに、ニューラルネットワークを学習する学習処理、前記ニューラルネットワークで用いられる活性化関数に含まれるパラメータであって、増加または減少させることにより当該活性化関数を線形関数に近づけるパラメータである線形化量を決定する線形化量決定処理、および、前記線形化量を増加または減少させることにより線形関数に収束すると判断される前記活性化関数を当該線形関数に置き換えて、置き換えた線形関数を用いる層間の重みを集約する集約処理を実行させ、前記学習処理で、前記ニューラルネットワークの学習において、当該ニューラルネットワークによる出力に基づく評価値を算出させ、前記線形化量決定処理で、前記評価値が予め定められた基準を満たす場合に、前記線形化量を変化させるためのニューラルネットワーク学習プログラム。
(付記12)コンピュータに、学習処理で、ニューラルネットワークに、正解ラベル付のテストデータを入力した際の判定精度を算出させ、線形化量決定処理で、前記判定精度の増加に応じて線形化量を増加または減少させる付記11記載のニューラルネットワーク学習プログラム。
(付記13)コンピュータに、学習処理で、ニューラルネットワークの学習において、学習データと当該ニューラルネットワークによる出力との誤差を算出させ、線形化量決定処理で、前記誤差の減少に応じて線形化量を増加または減少させる付記11記載のニューラルネットワーク学習プログラム。