(57)【特許請求の範囲】
【請求項１】
コンピュータに、
並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、
前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行しない場合の出力と、前記ラベルとの誤差である第２の出力誤差を算出し、
前記第１の出力誤差と前記第２の出力誤差との差に基づき、前記複数のチャネルから１又は複数のチャネルを特定し、特定した前記１又は複数のチャネルのパラメタを更新する、
処理を実行させる機械学習プログラム。
【請求項２】
前記コンピュータに、
出力層の値の少なくともひとつに対して前記ドロップアウトを実行する、
処理をさらに実行させる請求項１記載の機械学習プログラム。
【請求項３】
前記１又は複数のチャネルのパラメタを更新する処理において、
前記第１の出力誤差から前記第２の出力誤差を差し引いた値が閾値より大きい場合、前記第１のチャネル以外のチャネルである第２のチャネルのパラメタについて第１の更新処理を実行し、
前記第１の出力誤差から前記第２の出力誤差を差し引いた値の絶対値が前記閾値以下である場合、前記第１のチャネルのパラメタ及び前記第２のチャネルのパラメタについて第２の更新処理を実行し、
前記第２の出力誤差から前記第１の出力誤差を差し引いた値が前記閾値より大きい場合、前記第１のチャネルのパラメタについて第３の更新処理を実行する、
請求項１又は２記載の機械学習プログラム。
【請求項４】
前記第２の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新し、
所定の方法で求められた範囲における乱数の値と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第２の誤差を算出し、
前記第２の誤差に基づき、誤差逆伝播法によって、前記第１のチャネルのパラメタを更新する、
請求項３記載の機械学習プログラム。
【請求項５】
前記第２の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新し、
前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタと、前記第１のチャネルのパラメタとを、乱数で置換する、
請求項３記載の機械学習プログラム。
【請求項６】
前記第２の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新し、
前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差と、前記第１のチャネルのパラメタの誤差とを、乱数で置換し、
置換された前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差と、置換された前記第１のチャネルのパラメタの誤差とによって、前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタと前記第１のチャネルのパラメタとを更新する、
請求項３記載の機械学習プログラム。
【請求項７】
前記第３の更新処理において、
前記第２の出力誤差と、前記第１のチャネルの最終層の値及び前記ドロップアウトが実行された前記第２のチャネルの最終層の値とから、当該最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第１のチャネルのパラメタを更新する、
請求項３記載の機械学習プログラム。
【請求項８】
前記第３の更新処理において、
前記第１のチャネルのパラメタを維持し、
前記コンピュータに、
前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行せず且つ前記第２のチャネルの最終層の値に対して前記ドロップアウトを実行した場合の出力を計算する、
処理をさらに実行させる請求項３記載の機械学習プログラム。
【請求項９】
前記第３の更新処理において、
前記第１のチャネルのパラメタを維持し、
前記コンピュータに、
次の入力に対する処理を開始する、
処理をさらに実行させる請求項３記載の機械学習プログラム。
【請求項１０】
前記第１の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新する、
請求項３記載の機械学習プログラム。
【請求項１１】
コンピュータが、
並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、
前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行しない場合の出力と、前記ラベルとの誤差である第２の出力誤差を算出し、
前記第１の出力誤差と前記第２の出力誤差との差に基づき、前記複数のチャネルから１又は複数のチャネルを特定し、特定した前記１又は複数のチャネルのパラメタを更新する、
処理を実行する機械学習方法。
【請求項１２】
並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行しない場合の出力と、前記ラベルとの誤差である第２の出力誤差を算出する算出部と、
前記第１の出力誤差と前記第２の出力誤差との差に基づき、前記複数のチャネルから１又は複数のチャネルを特定し、特定した前記１又は複数のチャネルのパラメタを更新する更新部と、
を有する機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習技術に関する。
【背景技術】
【０００２】
近年、多層ニューラルネットワーク（ＤＮＮ（Deep Neural Network）とも呼ばれる）がデータの分類に利用されるようになっている。例えば、ＤＮＮの一種であるＣＮＮ（Convolutional Neural Network）は、特に１次元の時系列データ及び２次元の画像データの分類によく利用される。図１に、ＣＮＮの一例を示す。図１において、丸の図形はノードを表し、ノード間を結ぶ線分はエッジを表す。図１に示すように、ＣＮＮにおいては、入力層と出力層との間に畳み込み層及びプーリング層が設けられる。畳み込み層及びプーリング層においてデータから特徴が抽出され、抽出された特徴に基づいて分類が行われる。
【０００３】
ＣＮＮにおいては、入力が単一である場合だけではなく複数である場合もある。例えば、複数の観測点に設置されたカメラで取得されたデータによって気象環境の分類を行うケース、及び、両手及び両足に取り付けられたウエアラブルセンサで取得されたデータによって行動推定を行うケース等がある。図２に、複数の入力を処理するＣＮＮの一例を示す。図２に示したＣＮＮにおいては、各入力層に対応するノードが入力層に有るので、複数の入力を処理することができる。
【０００４】
但し、このＣＮＮにおいては複数の入力の各々から特徴が抽出されるわけではなく、複数の入力の組み合わせに対して１つの特徴が抽出される。一般に、各画像及び各時系列のそれぞれが独立した意味を有するので、それぞれから特徴を抽出する方が好ましい場合が多い。また、複数の入力のデータを簡単には結合できない場合、及び、適用すべきネットワークの構造が異なるために２層目以降においてデータを結合できない場合がある。前者のケースとしては、例えば、サイズが異なる複数の画像のデータのように、結合しても長方形のデータにならないためにＣＮＮを適用できないケースである。後者のケースとしては、例えば、画像データ及び時系列データの両方を処理するケース、及び、画像データ及び言語データの両方を処理するケース等である。
【０００５】
一方で、図３に示すような並列型のＣＮＮであれば、各入力から特徴を抽出することができる。図３においては、各入力についてチャネルが設けられており、チャネルにおけるネットワークが入力に適した構造になっている。各チャネルにおいて入力から特徴が抽出され、最終段階において特徴が組み合わされる。
【０００６】
しかし、入力が出力に対して及ぼす影響の強さは画像及び時系列の種類によって異なり、また、画像及び時系列の種類によっては或る出力に対して全く影響を及ぼさないことがある。一般的な誤差逆伝播法によって学習を行う場合、各チャネルに対して誤差の影響を均等に割り振ることになるため、入力の影響の強さを考慮した学習を行うことができない。また、入力が影響を及ぼす出力と及ぼさない出力とが有ったとしても、それを考慮した学習を行うことができない。以上のようなことが原因で適切な学習が行われず、結果として分類の精度が高くならないことがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２０１４／０１８０９８９号明細書
【非特許文献】
【０００８】
【非特許文献１】Natalia Neverova, Christian Wolf, Graham Taylor, and Florian Nebout, "ModDrop: adaptive multi-modal gesture recognition", [online]、２０１５年６月６日、Cornell University Library、[平成２８年１月１２日検索]、インターネット
【非特許文献２】Yi Zheng, Qi Liu, Enhong Chen, Yong Ge, and J. Leon Zhao, "Time Series Classification Using Multi-Channels Deep Convolutional Neural Networks", WAIM2014, Lecture Notes in Computer Science 8485, pp. 298-310, 2014
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、１つの側面では、並列型ニューラルネットワークによる分類の精度を高めるための技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明に係る機械学習方法は、並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、第１のチャネルの最終層の値に対してドロップアウトを実行しない場合の出力と、ラベルとの誤差である第２の出力誤差を算出し、第１の出力誤差と第２の出力誤差との差に基づき、複数のチャネルから１又は複数のチャネルを特定し、特定した１又は複数のチャネルのパラメタを更新する処理を含む。
【発明の効果】
【００１１】
１つの側面では、並列型ニューラルネットワークによる分類の精度を高めることができるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、ＣＮＮの一例を示す図である。
【図２】図２は、複数の入力を処理するＣＮＮの一例を示す図である。
【図３】図３は、並列型ＣＮＮの一例を示す図である。
【図４】図４は、本実施の形態の情報処理装置の機能ブロック図である。
【図５】図５は、本実施の形態のＤＮＮの一例を示す図である。
【図６】図６は、メインの処理フローを示す図である。
【図７】図７は、Δｂの算出について説明するための図である。
【図８】図８は、ブロックドロップアウトについて説明するための図である。
【図９】図９は、Δａの算出について説明するための図である。
【図１０】図１０は、メインの処理フローを示す図である。
【図１１】図１１は、第１学習処理の処理フローを示す図である。
【図１２】図１２は、バックドロップアウトについて説明するための図である。
【図１３】図１３は、第１の学習処理について説明するための図である。
【図１４】図１４は、第１の学習処理について説明するための図である。
【図１５】図１５は、第２学習処理の処理フローを示す図である。
【図１６】図１６は、第２学習処理の処理フローを示す図である。
【図１７】図１７は、出力誤差を乱数で置換する処理について説明するための図である。
【図１８】図１８は、出力誤差を乱数で置換する処理について説明するための図である。
【図１９】図１９は、第２の学習処理について説明するための図である。
【図２０】図２０は、第２の学習処理について説明するための図である。
【図２１】図２１は、第３学習処理の処理フローを示す図である。
【図２２】図２２は、ｖについて説明するための図である。
【図２３】図２３は、ｖチルダについて説明するための図である。
【図２４】図２４は、第３の学習処理について説明するための図である。
【図２５】図２５は、第３の学習処理について説明するための図である。
【図２６】図２６は、分類精度の向上について説明するための図である。
【図２７】図２７は、第２の実施の形態について説明するための図である。
【図２８】図２８は、第３の実施の形態について説明するための図である。
【図２９】図２９は、第４の実施の形態について説明するための図である。
【図３０】図３０は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
［実施の形態１］
図４に、本実施の形態における情報処理装置１の機能ブロック図を示す。情報処理装置１は、入力データ格納部１０１と、ラベルデータ格納部１０２と、計算結果格納部１０３と、パラメタ格納部１０４と、算出部１０５と、第１学習処理部１０６と、第２学習処理部１０７と、第３学習処理部１０８とを含む。
【００１４】
入力データ格納部１０１は、本実施の形態のＤＮＮの入力となる入力データ（すなわち入力層のベクトル）を格納する。入力データは、例えば物理的なセンサで取得されたセンサデータ、及び、デジタルカメラ又はスマートフォン等の物理的デバイスで取得された画像データ等である。物理的なセンサとは、例えば、人に取り付けられたウエアラブルセンサ及び屋外に設置された気象観測用のセンサ等である。なお、本実施の形態におけるＤＮＮの入力の数は複数であるので、入力データ格納部１０１は複数入力のデータを格納する。ラベルデータ格納部１０２は、入力データに対する正解を表すラベル（教師データとも呼ばれる）を格納する。計算結果格納部１０３は、算出部１０５による計算の結果（例えば、出力データ及び各ノードの値等）を格納する。パラメタ格納部１０４は、ＤＮＮのパラメタ（例えば、重み行列）を格納する。
【００１５】
算出部１０５は、入力データ格納部１０１に格納された入力データ及びパラメタ格納部１０４に格納されたパラメタに基づき、ＤＮＮに従って出力データ（すなわち出力層のベクトル）を計算する処理を実行し、計算の結果を計算結果格納部１０３に格納する。第１学習処理部１０６は、計算結果格納部１０３に格納されているデータに基づきパラメタ格納部１０４に格納されているパラメタを更新する処理を実行する。第２学習処理部１０７は、計算結果格納部１０３に格納されているデータに基づきパラメタ格納部１０４に格納されているパラメタを更新する処理を実行する。第３学習処理部１０８は、計算結果格納部１０３に格納されているデータに基づきパラメタ格納部１０４に格納されているパラメタを更新する処理を実行する。
【００１６】
図５に、本実施の形態のＤＮＮの一例を示す。図５に示すように、本実施の形態のＤＮＮはチャネル１ｃ乃至ｋｃ（ｋは２以上の自然数）を有している。各チャネルにおいては、そのチャネルの入力データの処理に適した構造の多層ニューラルネットワークに従って計算が行われる。各チャネルの最終特徴層の各ノードは、出力層のノードの各々に接続される。
【００１７】
なお、本実施の形態の処理はＣＮＮだけでなくあらゆる種類のＤＮＮに適用可能である。また、チャネル１ｃは画像に対する２次元ＣＮＮ、チャネル２ｃは時系列に対する１次元ＣＮＮ、・・・、チャネルｋｃは自然言語に対する単純なＤＮＮといったように、各チャネルの構造が異なっていてもよい。
【００１８】
次に、図６乃至図２６を用いて、第１の実施の形態における情報処理装置１の動作を説明する。
【００１９】
まず、算出部１０５は、各チャネルに対応する入力データを入力データ格納部１０１から読み出す（図６：ステップＳ１）。算出部１０５は、例えば、チャネル１ｃについては脈拍数のデータ、チャネル２ｃについては心拍数のデータ、・・・、チャネルｋｃについては脳波のデータといったように、予め定められたルールに従って入力データを読み出す。
【００２０】
算出部１０５は、各チャネルについて、ＤＮＮの計算を進めて最終特徴層のベクトルを計算する（ステップＳ３）。最終特徴層のベクトルとは、例えば、最終特徴層のノードの値を要素とするベクトルである。なお、算出部１０５は、各ノードの値等を含む計算結果を計算結果格納部１０３に格納する。
【００２１】
算出部１０５は、最終特徴層のベクトルと、パラメタ格納部１０４に格納されている、最終特徴層と出力層とをつなぐ重み行列とから、出力層のベクトルを計算し（ステップＳ５）、出力層のベクトルを計算結果格納部１０３に格納する。
【００２２】
算出部１０５は、ステップＳ５において計算した出力層のベクトルと、ラベルデータ格納部１０２に格納されているラベルとから、出力層の誤差のベクトルΔｂを計算する（ステップＳ７）。本実施の形態においては、図７に示すように、太線で囲まれた部分に含まれるノードが出力層のノードであるので、これらのノードの値とラベルとに基づき誤差のベクトルΔｂが計算される。
【００２３】
なお、ステップＳ１乃至Ｓ７の処理は一般的なＤＮＮの計算と同じであるので、ここでは詳細な説明を省略する。
【００２４】
算出部１０５は、予め定められた確率ｐ（例えば０．５）に従って、チャネル１ｃ乃至ｋｃのうちブロックドロップアウトの対象となるチャネルを選択する。例えばチャネルの数が１０であり且つ確率ｐが０．５である場合には、各チャネルがブロックドロップアウトの対象となる確率が０．５であるので、平均的には５つのチャネルが選択されることになる。そして、算出部１０５は、選択したチャネルの最終特徴層について、ブロックドロップアウトを実行する（ステップＳ９）。
【００２５】
ドロップアウトとは、フィードフォワードの際、対象となるノードの値を０に置き換える処理であり、ＤＮＮにおける過学習の問題を解決するために利用される。特に、ドロップアウトの一種であるブロックドロップアウトは、各学習機会において、チャネルにおける最終特徴層の全ノードの値を０に置き換える処理である。ブロックドロップアウトにおいては、最終特徴層の全ノードの値が０に置き換えられるため、学習の際に影響がチャネル内の全ノードに及ぶことになる。一方で、単純に１つのノードの値を０に置き換えるドロップアウトの場合、ドロップアウトが実行されていない他のノードによりその影響が緩和される。なお、ブロックドロップアウトの詳細については、非特許文献１を参照のこと。
【００２６】
図８を用いて、ブロックドロップアウトについて説明する。図８においては、ハッチングが付されたノードがドロップアウトが実行されたノード（すなわち、値が０に置き換えられたノード）であり、破線のエッジはドロップアウトの影響が及ぶエッジである。
【００２７】
算出部１０５は、ブロックドロップアウト後の最終特徴層のベクトルと、パラメタ格納部１０４に格納されている、最終特徴層と出力層とをつなぐ重み行列とから、出力層のベクトルを計算し（ステップＳ１１）、出力層のベクトルを計算結果格納部１０３に格納する。ブロックドロップアウト後の最終特徴層のベクトルは、例えば、最終特徴層のベクトルの要素のうちブロックドロップアウトの対象となったチャネルにおけるノードに対応する要素が０に置き換えられたベクトルである。
【００２８】
算出部１０５は、Ｓ１１において計算された出力層のベクトルと、ラベルデータ格納部１０２に格納されたラベルとから、出力層の誤差のベクトルΔａを計算する（ステップＳ１３）。処理は端子Ａを介して図１０のステップＳ１５に移行する。本実施の形態においては、図９に示すように、太線で囲まれた部分に含まれるノードが出力層のノードであるので、これらのノードの値とラベルとに基づき誤差のベクトルΔａが計算される。ステップＳ１３までの処理によって、ブロックドロップアウトを実行した場合の出力誤差と実行しない場合の出力誤差とが同一の入力データについて求められる。
【００２９】
図１０の説明に移行し、算出部１０５は、ブロックドロップアウトを実行した場合の出力層の誤差のベクトルΔａから誤差ｅaを算出し、ブロックドロップアウトを実行しない場合の出力層の誤差のベクトルΔｂから誤差ｅbを算出する。誤差ｅa及び誤差ｅbは、例えば、ベクトルの要素の平均二乗誤差によって算出される。そして、算出部１０５は、ｅa−ｅb＞ｔが成立するか判定する（図１０：ステップＳ１５）。ｔは予め定められた閾値であり、管理者により設定される。
【００３０】
ｅa−ｅb＞ｔが成立する場合（ステップＳ１５：Ｙｅｓルート）、ブロックドロップアウトをしたことにより誤差が大きくなったので、ブロックドロップアウトの対象であるチャネルについては学習が適切に進んでいると考えられる。従って、算出部１０５は、第１学習処理部１０６に処理の実行を指示する。これに応じ、第１学習処理部１０６は、第１学習処理を実行する（ステップＳ１７）。第１学習処理については、図１１乃至図１４を用いて説明する。
【００３１】
まず、第１学習処理部１０６は、計算結果格納部１０３に格納されているデータ及びパラメタ格納部１０４に格納されているパラメタ（例えば、重み行列）を読み出す。そして、第１学習処理部１０６は、確率ｐ（例えば０．５）に従って出力層のノードのうちドロップアウトの対象となるノードを選択する。そして、第１学習処理部１０６は、選択したノードの誤差に０を設定する（図１１：ステップＳ３１）。例えば出力層のノードの数が１０であり且つ確率ｐが０．５である場合には、各ノードがドロップアウトの対象となる確率が０．５であるので、平均的には５つのノードの誤差に０が設定されることになる。本実施の形態においては、ステップＳ３１のように出力層のノードの誤差を０に置き換える処理のことをバックドロップアウトと呼ぶこととする。
【００３２】
図１２を用いて、バックドロップアウトについて説明する。図１２においては、出力層のノードのうちハッチングが付されたノードがドロップアウトの対象となったノードである。破線のエッジは、ドロップアウトの影響が及ぶエッジである。このように、学習機会ごとに確率的に選択した出力の誤差についてドロップアウトを行うことで、その出力に影響を及ぼさないチャネルの学習を、そのチャネルが影響を及ぼす出力の誤差に基づいてより強く行うことができるようになる。これにより、分類の精度を向上させることができるようになる。
【００３３】
第１学習処理部１０６は、ステップＳ９におけるブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルが有るか判定する（ステップＳ３３）。ブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルが有る場合（ステップＳ３３：Ｙｅｓルート）、第１学習処理部１０６は、ブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルを１つ特定する（ステップＳ３５）。
【００３４】
第１学習処理部１０６は、ステップＳ３５において特定したチャネルについて、最終特徴層と出力層とをつなぐ重み行列の誤差を計算する（ステップＳ３７）。
【００３５】
ステップＳ３７の計算は、誤差逆伝播法の計算に基づいている。誤差逆伝播法とは、更新前のパラメタによって計算した出力層の値とラベルとの誤差を、ひとつ前の層のユニットに均等に配分して更新を行う方法である。この方法は、誤差の原因が各ユニットに同程度存在するという仮定に基づいている。説明を簡単にするため、最終特徴層と出力層とが直接つながっているものとし、最終特徴層のベクトルをｖ、最終特徴層と出力層とをつなぐ重み行列をＷ、出力層の値ベクトルをａとする。この場合、以下の関係が成立する。
【００３６】
【数１】
0006610278.tif 000002
【００３７】
従って、重み行列の誤差ΔＷを以下のように計算することができる。
【００３８】
【数２】
0006610278.tif 000003
【００３９】
よって、Ｗ−ΔＷを計算することで更新後のＷを求めることができるようになる。
【００４０】
第１学習処理部１０６は、ステップＳ３７において計算した重み行列の誤差ΔＷに基づき、ステップＳ３５において特定したチャネルの最終特徴層の誤差を計算する（ステップＳ３９）。ステップＳ３７の処理は一般的な誤差逆伝播法の処理の一部であるので、詳細な説明を省略する。
【００４１】
第１学習処理部１０６は、ステップＳ３５において特定したチャネルについて、ステップＳ３９において計算した最終特徴層の誤差に基づく誤差逆伝播法によって、各層について重み行列の誤差ΔＷを計算する（ステップＳ４１）。ステップＳ４１の処理も一般的な誤差逆伝播法の処理であり、また、ステップＳ３７において簡単に説明を行ったので、詳細な説明を省略する。
【００４２】
第１学習処理部１０６は、ステップＳ３７及びＳ４１において計算した重み行列の誤差ΔＷを用いて、重み行列ＷをＷ−ΔＷによって更新する（ステップＳ４３）。第１学習処理部１０６は、更新後の重み行列Ｗによって、パラメタ格納部１０４に格納されている重み行列Ｗを更新する。そしてステップＳ３３の処理に戻る。なお、最終特徴層と出力層とをつなぐ重み行列Ｗは、ステップＳ３９において更新されてもよい。
【００４３】
一方、ブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルがない場合（ステップＳ３３：Ｎｏルート）、呼び出し元の処理に戻る。
【００４４】
図１３及び図１４を用いて、第１の学習処理について説明を追加する。第１学習処理においては、ブロックドロップアウトの対象ではないチャネルの最終特徴層と出力層とをつなぐ重み行列の誤差ΔＷが算出される。そして、図１３に示すように、算出されたΔＷによって最終特徴層と出力層とをつなぐ重み行列Ｗの学習が行われるようになる。さらに、誤差逆伝播法によって、ブロックドロップアウトの対象ではないチャネルの各層について重み行列の誤差ΔＷが計算される。そして、図１４に示すように、算出されたΔＷによってチャネルにおける各層の重み行列Ｗの学習が行われるようになる。なお、実際にはバックドロップアウトも実行されるため、出力層のノードの一部にドロップアウトが実行されているが、説明を簡単にするため、図１３及び図１４においては出力層のノードに対するドロップアウトを図示していない。以下の図においても同様とする。
【００４５】
このように、ブロックドロップアウトの対象であるチャネルについては学習が適切に進んでいると考えられる場合には、ブロックドロップアウトの対象であるチャネルについて学習を行わず、ブロックドロップアウトの対象ではないチャネルについて通常の誤差逆伝播法によって学習を行う。この理由は、既に適切に学習が進んでいるチャネルについて学習をさらに行うと、現状よりも学習が良くない方向に進み、分類精度が落ちることがあるからである。
【００４６】
図１０の説明に戻り、ｅa−ｅb＞ｔが成立しない場合（ステップＳ１５：Ｎｏルート）、算出部１０５は、｜ｅa−ｅb｜＜ｔが成立するか判定する（ステップＳ１９）。｜ｅa−ｅb｜＜ｔが成立する場合（ステップＳ１９：Ｙｅｓルート）、ブロックドロップアウトの対象であるチャネルの学習が適切に進んでいないためにブロックドロップアウトの影響が小さくなっている可能性がある。学習は適切に進んでいるが元々出力に及ぼす影響が小さいという可能性もあるが、学習を進めなければ前者の場合に学習が進まないままになる。従って、算出部１０５は、第２学習処理部１０７に処理の実行を指示する。これに応じ、第２学習処理部１０７は、第２学習処理を実行する（ステップＳ２１）。第２学習処理については、図１５乃至図２０を用いて説明する。
【００４７】
まず、第２学習処理部１０７は、計算結果格納部１０３に格納されているデータ及びパラメタ格納部１０４に格納されているパラメタ（例えば、重み行列）を読み出す。そして、第２学習処理部１０７は、確率ｐ（例えば０．５）に従って出力層のノードのうちドロップアウトの対象となるノードを選択する。そして、第２学習処理部１０７は、選択したノードの誤差に０を設定する（図１５：ステップＳ５１）。すなわち、第２学習処理部１０７は、バックドロップアウトを実行する。
【００４８】
第２学習処理部１０７は、ステップＳ９におけるブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルが有るか判定する（ステップＳ５３）。ブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルが有る場合（ステップＳ５３：Ｙｅｓルート）、第２学習処理部１０７は、ブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルを１つ特定する（ステップＳ５５）。
【００４９】
第２学習処理部１０７は、ステップＳ５５において特定したチャネルについて、最終特徴層と出力層とをつなぐ重み行列の誤差ΔＷを計算する（ステップＳ５７）。
【００５０】
第２学習処理部１０７は、ステップＳ５７において計算した重み行列の誤差ΔＷに基づき、ステップＳ５５において特定したチャネルの最終特徴層の誤差を計算する（ステップＳ５９）。ステップＳ５７の処理は一般的な誤差逆伝播法の処理の一部であるので、詳細な説明を省略する。
【００５１】
第２学習処理部１０７は、ステップＳ５５において特定したチャネルについて、ステップＳ５９において計算した最終特徴層の誤差に基づく誤差逆伝播法によって、各層について重み行列の誤差ΔＷを計算する（ステップＳ６１）。ステップＳ６１の処理も一般的な誤差逆伝播法の処理の一部であるので、詳細な説明を省略する。
【００５２】
第２学習処理部１０７は、ステップＳ５７及びＳ６１において計算した重み行列の誤差ΔＷを用いて、重み行列ＷをＷ−ΔＷによって更新する（ステップＳ６３）。第２学習処理部１０７は、更新後の重み行列Ｗによって、パラメタ格納部１０４に格納されている重み行列Ｗを更新する。そしてステップＳ５３の処理に戻る。なお、最終特徴層と出力層とをつなぐ重み行列Ｗは、ステップＳ５９において更新されてもよい。
【００５３】
一方、ブロックドロップアウトの対象ではないチャネルのうち未処理のチャネルがない場合（ステップＳ５３：Ｎｏルート）、処理は端子Ｃを介して図１６の説明に移行する。
【００５４】
なお、ステップＳ５１乃至Ｓ６３の処理はステップＳ３１乃至Ｓ４３の処理と同様である。
【００５５】
図１６の説明に移行し、第２学習処理部１０７は、出力層の誤差のベクトルΔａの要素の平均ｄａを算出し、誤差Δａの各要素に、０からｄａの範囲内の乱数を設定する（図１６：ステップＳ６５）。設定後の出力層の誤差のベクトルをΔｄａとする。
【００５６】
図１７及び図１８を用いて、ステップＳ６５の処理について説明する。図１７及び図１８においては、チャネル１ｃがステップＳ９のブロックドロップアウトの対象であるとする。太線で囲まれたノードは出力層のノードである。図１７に示すように、出力層の誤差の値の平均がｄａに相当する。但し、ｄａが最大或いは平均二乗平方根誤差等によって求められてもよい。そして、図１８に示すように、出力層の誤差ベクトルΔａの各要素は、０からｄａまでの範囲内における乱数に設定される。学習が悪い状態に陥っている可能性がある場合には、このような乱数を設定することにより、学習が悪い状態から脱して学習が進むようになることがある。
【００５７】
第２学習処理部１０７は、ステップＳ９におけるブロックドロップアウトの対象であるチャネルのうち未処理のチャネルが有るか判定する（ステップＳ６７）。ブロックドロップアウトの対象であるチャネルのうち未処理のチャネルが有る場合（ステップＳ６７：Ｙｅｓルート）、第２学習処理部１０７は、ブロックドロップアウトの対象であるチャネルのうち未処理のチャネルを１つ特定する（ステップＳ６９）。
【００５８】
第２学習処理部１０７は、ステップＳ６９において特定したチャネルについて、最終特徴層と出力層とをつなぐ重み行列の誤差ΔＷを、出力層の誤差としてΔｄａを使用する計算方法によって計算する（ステップＳ７１）。ステップＳ７１においては、誤差逆伝播法に基づき以下の計算式によって計算が行われる。
【００５９】
【数３】
0006610278.tif 000004
【００６０】
ここで、ｉは層を表す番号であり、ステップＳ７１の処理においてはｉとして最終特徴層の番号が設定される。ｖiは第ｉ層の値ベクトルであり、ΔＷiは第ｉ層と第（ｉ＋１）層とをつなぐ重み行列の誤差ΔＷである。
【００６１】
第２学習処理部１０７は、ステップＳ７１において計算した重み行列の誤差ΔＷに基づき、ステップＳ６９において特定したチャネルの最終特徴層の誤差を計算する（ステップＳ７３）。ステップＳ７１の処理は一般的な誤差逆伝播法の処理の一部であるので、詳細な説明を省略する。
【００６２】
第２学習処理部１０７は、ステップＳ６９において特定したチャネルについて、ステップＳ７３において計算した最終特徴層の誤差に基づく誤差逆伝播法によって、各層について重み行列の誤差ΔＷを計算する（ステップＳ７５）。ステップＳ７５の処理も一般的な誤差逆伝播法の処理であるので、詳細な説明を省略する。
【００６３】
第２学習処理部１０７は、ステップＳ７１及びＳ７５において計算した重み行列の誤差ΔＷを用いて、重み行列ＷをＷ−ΔＷによって更新する（ステップＳ７７）。第２学習処理部１０７は、更新後の重み行列Ｗによって、パラメタ格納部１０４に格納されている重み行列を更新する。そしてステップＳ６７の処理に戻る。なお、最終特徴層と出力層とをつなぐ重み行列Ｗは、ステップＳ７３において更新されてもよい。
【００６４】
一方、ブロックドロップアウトの対象であるチャネルのうち未処理のチャネルがない場合（ステップＳ６７：Ｎｏルート）、呼び出し元の処理に戻る。
【００６５】
図１９及び図２０を用いて、第２の学習処理のうちブロックドロップアウトの対象であるチャネルのパラメタを更新する処理について説明を追加する。第２学習処理においては、ブロックドロップアウトの対象であるチャネルの最終特徴層と出力層とをつなぐ重み行列の誤差ΔＷが、Δｄａを用いて算出される。そして、図１９に示すように、算出されたΔＷによって最終特徴層と出力層とをつなぐ重み行列Ｗの学習が行われるようになる。さらに、誤差逆伝播法によって、ブロックドロップアウトの対象であるチャネルの各層について重み行列の誤差ΔＷが計算される。そして、図２０に示すように、算出されたΔＷによってチャネルにおける各層の重み行列Ｗの学習が行われるようになる。
【００６６】
以上のように、ブロックドロップアウトの対象であるチャネルの学習が適切に進んでいないためにブロックドロップアウトの影響が小さくなっている可能性がある場合には、ブロックドロップアウトの対象ではないチャネルだけではなく、ブロックドロップアウトの対象であるチャネルについても学習を行う。これにより、ブロックドロップアウトの対象であるチャネルの学習が進むので、分類の精度をより高めることができるようになる。
【００６７】
図１０の説明に戻り、｜ｅa−ｅb｜＜ｔが成立しない場合（ステップＳ１９：Ｎｏルート）、算出部１０５は、ｅb−ｅa＞ｔが成立するか判定する（ステップＳ２３）。ｅb−ｅa＞ｔが成立しない場合（ステップＳ２３：Ｎｏルート）、ステップＳ２７の処理に移行する。一方、ｅb−ｅa＞ｔが成立する場合（ステップＳ２３：Ｙｅｓルート）、ブロックドロップアウトの対象であるチャネルの学習は適切に進んでいないと考えられる。従って、算出部１０５は、第３学習処理部１０８に処理の実行を指示する。これに応じ、第３学習処理部１０８は、第３学習処理を実行する（ステップＳ２５）。第３学習処理については、図２１乃至図２５を用いて説明する。
【００６８】
まず、第３学習処理部１０８は、計算結果格納部１０３に格納されているデータ及びパラメタ格納部１０４に格納されているパラメタ（例えば、重み行列）を読み出す。そして、第３学習処理部１０８は、確率ｐ（例えば０．５）に従って出力層のノードのうちドロップアウトの対象となるノードを選択する。そして、第３学習処理部１０８は、選択したノードの誤差に０を設定する（図２１：ステップＳ８１）。すなわち、第３学習処理部１０８は、バックドロップアウトを実行する。
【００６９】
第３学習処理部１０８は、ステップＳ９におけるブロックドロップアウトの対象であるチャネルのうち未処理のチャネルが有るか判定する（ステップＳ８３）。ブロックドロップアウトの対象であるチャネルのうち未処理のチャネルが有る場合（ステップＳ８３：Ｙｅｓルート）、第３学習処理部１０８は、ブロックドロップアウトの対象であるチャネルのうち未処理のチャネルを１つ特定する（ステップＳ８５）。
【００７０】
第３学習処理部１０８は、ステップＳ８５において特定したチャネルについて、最終特徴層と出力層とをつなぐ重み行列の誤差ΔＷを、最終特徴層のベクトルとして（ｖ−ｖチルダ）を使用し且つ出力層の誤差としてΔｂを使用する計算方法で計算する（ステップＳ８７）。ステップＳ８７においては、誤差逆伝播法に基づき以下の計算式によって計算が行われる。
【００７１】
【数４】
0006610278.tif 000005
【００７２】
ここで、ｖはブロックドロップアウトを実行しない場合の最終特徴層のベクトルであり、ｖチルダはブロックドロップアウトを実行した場合の最終特徴層のベクトルである。図２２及び図２３を用いて、ｖ及びｖチルダについて説明する。ｖはブロックドロップアウトを実行しない場合の最終特徴層のベクトルであるので、図２２に示すように、太線で囲まれた部分に含まれるノードの値を要素とするベクトルである。一方、ｖチルダはブロックドロップアウトを実行した場合の最終特徴層のベクトルであるので、図２３に示すように、太線で囲まれた部分に含まれるノードの値を要素とするベクトルであるが、ブロックドロップアウトの対象であるチャネルに含まれるノードの値が０に置換されている。
【００７３】
第３学習処理部１０８は、ステップＳ８７において計算した重み行列の誤差ΔＷに基づき、ステップＳ８５において特定したチャネルの最終特徴層の誤差を計算する（ステップＳ８９）。ステップＳ８７の処理は一般的な誤差逆伝播法の処理の一部であるので、詳細な説明を省略する。
【００７４】
第３学習処理部１０８は、ステップＳ８５において特定したチャネルについて、ステップＳ８９において計算した最終特徴層の誤差に基づく誤差逆伝播法によって、各層について重み行列の誤差ΔＷを計算する（ステップＳ９１）。ステップＳ９１の処理も一般的な誤差逆伝播法の処理であるので、詳細な説明を省略する。
【００７５】
第３学習処理部１０８は、ステップＳ８７及びＳ９１において計算した重み行列の誤差ΔＷを用いて、重み行列ＷをＷ−ΔＷによって更新する（ステップＳ９３）。第３学習処理部１０８は、更新後の重み行列Ｗによって、パラメタ格納部１０４に格納されている重み行列Ｗを更新する。そしてステップＳ８３の処理に戻る。なお、最終特徴層と出力層とをつなぐ重み行列Ｗは、ステップＳ８９において更新されてもよい。
【００７６】
一方、ブロックドロップアウトの対象であるチャネルのうち未処理のチャネルがない場合（ステップＳ８３：Ｎｏルート）、呼び出し元の処理に戻る。
【００７７】
図２４及び図２５を用いて、第３の学習処理について説明を追加する。第３学習処理においては、ブロックドロップアウトの対象であるチャネルの最終特徴層と出力層とをつなぐ重み行列の誤差ΔＷが、（ｖ−ｖチルダ）及びΔｂを用いて算出される。そして、図２４に示すように、算出されたΔＷによって最終特徴層と出力層とをつなぐ重み行列Ｗの学習が行われるようになる。さらに、誤差逆伝播法によって、ブロックドロップアウトの対象であるチャネルの各層について重み行列の誤差ΔＷが計算される。そして、図２５に示すように、算出されたΔＷによってチャネルにおける各層の重み行列Ｗの学習が行われるようになる。
【００７８】
以上のように、ブロックドロップアウトの対象であるチャネルの学習は適切に進んでいないと考えられる場合には、ブロックドロップアウトの対象であるチャネルについてのみ学習を行う。
【００７９】
図１０の説明に戻り、算出部１０５は、処理を終了するか判定する（ステップＳ２７）。処理を終了する場合とは、例えば、入力データ格納部１０１に未処理の入力データが格納されていない場合である。処理を終了しない場合（ステップＳ２７：Ｎｏルート）、処理は端子Ｂを介して図６のステップＳ１に戻る。それ以外の場合、処理を終了する（ステップＳ２７：Ｙｅｓルート）。
【００８０】
図２６を用いて、分類精度の向上について説明する。図２６には、実際にＤＮＮによってデータを分類した場合の正答率が示されている。この分類においては、３種類の時系列データが用いられ、層の数並びに畳み込み層及びプーリング層の条件は各分類機会において同一であるとする。従来のブロックドロップアウトとは、ブロックアウトの対象であるチャネルのパラメタを更新しないことを意味する。本実施の形態のブロックアウトとは、ブロックアウトを実行した場合の出力誤差とブロックアウトを実行しない場合の出力誤差との差に基づいていずれのチャネルのパラメタを更新するか決定することを意味する。
【００８１】
図２６に示すように、ブロックドロップアウトを実行しない場合及び従来のブロックドロップアウトを実行する場合よりも、本実施の形態のブロックドロップアウトを実行する方が正答率が高い。また、バックドロップアウトを実行した場合、バックドロップアウトを実行しない場合よりも正答率が高い。従って、本実施の形態のように学習を行うことで、並列型ＤＮＮによる分類の精度を高めることができるようになる。
【００８２】
［実施の形態２］
第１の実施の形態の第２学習処理においては出力層の誤差の値を乱数で置換しているが、他の部分を乱数で置換してもよい。例えば、チャネルｌｃ（ｌは１≦ｌ≦ｋを満たす自然数）における第ｐ層（ｐは１以上の自然数）と第（ｐ＋１）層とをつなぐ重み行列をＷlpと表すとする。このとき、図２７に示すように、Ｗlpの各要素を０から予め定められた値までの範囲内における乱数に置換した重み行列であるＷlpチルダに置き換えてもよい。このような方法であっても、第１の実施の形態と同様、ブロックドロップアウトの対象であるチャネルについて学習を進めることができるようになる。
【００８３】
なお、乱数の範囲は層毎に異なっていてもよい。
【００８４】
［実施の形態３］
第２の実施の形態の第２学習処理においては、重み行列Ｗlpを乱数の行列に置き換えているが、重み行列の誤差を乱数の行列に置き換えてもよい。例えば、重み行列Ｗlpの誤差の行列Ｗlpバーの各要素を、０から予め定められた値までの範囲内における乱数に置換してもよい。このとき、図２８に示すように、Ｗlpを、Ｗlp−Ｗlpバーで更新してもよい。このような方法であっても、第１及び第２の実施の形態と同様、ブロックドロップアウトの対象であるチャネルについて学習を進めることができるようになる。
【００８５】
なお、乱数の範囲は層毎に異なっていてもよい。
【００８６】
［実施の形態４］
第１の実施の形態の第３学習処理においては、ブロックドロップアウトの対象であるチャネル（ここでは、チャネル１ｃとする）について学習を行い、ブロックドロップアウトの対象ではないチャネル（ここでは、チャネル２ｃ乃至ｋｃとする）については学習を行わない。これは、図２９に示すように、ブロックドロップアウトの対象であるチャネルがチャネル２ｃ乃至ｋｃとし、通常どおりブロックドロップアウトの対象ではないチャネル１ｃについて学習を行うことと同等である。よって、｜ｅa−ｅb｜＜ｔが成立する場合には、ブロックドロップアウトの対象となるチャネルの選択を逆にしてもよい。
【００８７】
［実施の形態５］
第４の実施の形態においては、｜ｅa−ｅb｜＜ｔが成立する場合にブロックドロップアウトの対象となるチャネルの選択を逆にしているが、学習を全く行わず、次の入力データの処理に移行してもよい。このようにすれば、ブロックドロップアウトの対象ではないチャネル（ここでは、チャネル２ｃ乃至ｋｃとする）について学習が行われることを防ぐことができる。
【００８８】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００８９】
また、上で説明したデータ構造は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００９０】
また、入力データ格納部１０１に格納されているデータは、上で述べたようなデータでなくてもよい。
【００９１】
なお、上で述べた情報処理装置１は、コンピュータ装置であって、図３０に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００９２】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００９３】
本実施の形態に係る機械学習方法は、（Ａ）並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、（Ｂ）第１のチャネルの最終層の値に対してドロップアウトを実行しない場合の出力と、ラベルとの誤差である第２の出力誤差を算出し、（Ｃ）第１の出力誤差と第２の出力誤差との差に基づき、複数のチャネルから１又は複数のチャネルを特定し、特定した１又は複数のチャネルのパラメタを更新する処理を含む。
【００９４】
第１の出力誤差と第２の出力誤差との差に着目すれば、どのチャネルのパラメタを更新すればよいか判定できる。従って、上で述べたような処理を実行することによって、適切なチャネルのパラメタが更新されるようになり、並列型ニューラルネットワークの分類精度を高めることができるようになる。
【００９５】
また、本機械学習方法は、（Ｄ）出力層の値の少なくともひとつに対してドロップアウトを実行する処理をさらに含んでもよい。０で置換された値に影響を与えないチャネルの学習を、そのチャネルが影響を与える値に基づいてより強く行うことができるので、分類の精度を高めることができるようになる。
【００９６】
また、１又は複数のチャネルのパラメタを更新する処理において、（ｃ１）第１の出力誤差から第２の出力誤差を差し引いた値が閾値より大きい場合、第１のチャネル以外のチャネルである第２のチャネルのパラメタについて第１の更新処理を実行し、（ｃ２）第１の出力誤差から第２の出力誤差を差し引いた値の絶対値が閾値以下である場合、第１のチャネルのパラメタ及び第２のチャネルのパラメタについて第２の更新処理を実行し、（ｃ３）第２の出力誤差から第１の出力誤差を差し引いた値が閾値より大きい場合、第１のチャネルのパラメタについて第３の更新処理を実行してもよい。第１の出力誤差から第２の出力誤差を差し引いた値が閾値より大きい場合、ドロップアウトをしたことにより誤差が大きくなったので、第１のチャネルについては学習が適切に進んでいると考えられる。一方、第１の出力誤差から第２の出力誤差を差し引いた値の絶対値が閾値以下である場合、第１のチャネルの学習が適切に進んでいないためにドロップアウトの影響が小さくなっている可能性がある。また、第２の出力誤差から第１の出力誤差を差し引いた値が閾値より大きい場合、ドロップアウトをしたことにより誤差が小さくなったので、第１のチャネルの学習は適切に進んでいないと考えられる。従って、上で述べたようにすれば、適切なチャネルのパラメタが更新されるようになる。
【００９７】
また、第２の更新処理において、（ｃ２１１）第１の出力誤差と、第１及び第２のチャネルの最終層の値とから、第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、（ｃ２１２）第１の誤差に基づき、誤差逆伝播法によって、第２のチャネルのパラメタを更新し、（ｃ２１３）所定の方法で求められた範囲における乱数の値と、第１及び第２のチャネルの最終層の値とから、第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第２の誤差を算出し、（ｃ２１４）第２の誤差に基づき、誤差逆伝播法によって、第１のチャネルのパラメタを更新してもよい。これにより、第２のチャネルについては通常の方法で学習を進めることができると共に、第１のチャネルについての学習をも進めることができるようになる。
【００９８】
また、第２の更新処理において、（ｃ２２１）第１の出力誤差と、第１及び第２のチャネルの最終層の値とから、第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、（ｃ２２２）第１の誤差に基づき、誤差逆伝播法によって、第２のチャネルのパラメタを更新し、（ｃ２２３）第１のチャネルの最終層の値から出力層の値を算出するためのパラメタと、第１のチャネルのパラメタとを、乱数で置換してもよい。これにより、第２のチャネルについては通常の方法で学習を進めることができると共に、第１のチャネルについての学習をも進めることができるようになる。
【００９９】
また、第２の更新処理において、（ｃ２３１）第１の出力誤差と、第１及び第２のチャネルの最終層の値とから、第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、（ｃ２３２）第１の誤差に基づき、誤差逆伝播法によって、第２のチャネルのパラメタを更新し、（ｃ２３３）第１のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差と、第１のチャネルのパラメタの誤差とを、乱数で置換し、（ｃ２３４）置換された第１のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差と、置換された第１のチャネルのパラメタの誤差とによって、第１のチャネルの最終層の値から出力層の値を算出するためのパラメタと第１のチャネルのパラメタとを更新してもよい。これにより、第２のチャネルについては通常の方法で学習を進めることができると共に、第１のチャネルについての学習をも進めることができるようになる。
【０１００】
また、第３の更新処理において、（ｃ３１１）第２の出力誤差と、第１のチャネルの最終層の値及びドロップアウトが実行された第２のチャネルの最終層の値とから、当該最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、（ｃ３１２）第１の誤差に基づき、誤差逆伝播法によって、第１のチャネルのパラメタを更新してもよい。これにより、第１のチャネルの学習を進めることができると共に、第２のチャネルについての学習が行われることを防ぐことができるようになる。
【０１０１】
また、第３の更新処理において、（ｃ３２１）第１のチャネルのパラメタを維持してもよい。そして、本機械学習方法は、（Ｅ）第１のチャネルの最終層の値に対してドロップアウトを実行せず且つ第２のチャネルの最終層の値に対してドロップアウトを実行した場合の出力を計算する処理をさらに含んでもよい。これにより、ドロップアウトされるチャネルを入れ替えたうえで学習を進めることができるようになる。
【０１０２】
また、第３の更新処理において、（ｃ３２１）第１のチャネルのパラメタを維持し、（ｃ３２２）次の入力に対する処理を開始してもよい。これにより、いずれのチャネルについても学習を行うことなく次の入力に対する処理を開始できるようになる。
【０１０３】
また、第１の更新処理において、（ｃ１１１）第１の出力誤差と、第１及び第２のチャネルの最終層の値とから、第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、（ｃ１１２）第１の誤差に基づき、誤差逆伝播法によって、第２のチャネルのパラメタを更新してもよい。これにより、第２のチャネルについて通常の方法で学習を進めることができるようになる。
【０１０４】
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１０５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０６】
（付記１）
コンピュータに、
並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、
前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行しない場合の出力と、前記ラベルとの誤差である第２の出力誤差を算出し、
前記第１の出力誤差と前記第２の出力誤差との差に基づき、前記複数のチャネルから１又は複数のチャネルを特定し、特定した前記１又は複数のチャネルのパラメタを更新する、
処理を実行させる機械学習プログラム。
【０１０７】
（付記２）
前記コンピュータに、
出力層の値の少なくともひとつに対して前記ドロップアウトを実行する、
処理をさらに実行させる付記１記載の機械学習プログラム。
【０１０８】
（付記３）
前記１又は複数のチャネルのパラメタを更新する処理において、
前記第１の出力誤差から前記第２の出力誤差を差し引いた値が閾値より大きい場合、前記第１のチャネル以外のチャネルである第２のチャネルのパラメタについて第１の更新処理を実行し、
前記第１の出力誤差から前記第２の出力誤差を差し引いた値の絶対値が前記閾値以下である場合、前記第１のチャネルのパラメタ及び前記第２のチャネルのパラメタについて第２の更新処理を実行し、
前記第２の出力誤差から前記第１の出力誤差を差し引いた値が前記閾値より大きい場合、前記第１のチャネルのパラメタについて第３の更新処理を実行する、
付記１又は２記載の機械学習プログラム。
【０１０９】
（付記４）
前記第２の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新し、
所定の方法で求められた範囲における乱数の値と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第２の誤差を算出し、
前記第２の誤差に基づき、誤差逆伝播法によって、前記第１のチャネルのパラメタを更新する、
付記３記載の機械学習プログラム。
【０１１０】
（付記５）
前記第２の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新し、
前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタと、前記第１のチャネルのパラメタとを、乱数で置換する、
付記３記載の機械学習プログラム。
【０１１１】
（付記６）
前記第２の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新し、
前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差と、前記第１のチャネルのパラメタの誤差とを、乱数で置換し、
置換された前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差と、置換された前記第１のチャネルのパラメタの誤差とによって、前記第１のチャネルの最終層の値から出力層の値を算出するためのパラメタと前記第１のチャネルのパラメタとを更新する、
付記３記載の機械学習プログラム。
【０１１２】
（付記７）
前記第３の更新処理において、
前記第２の出力誤差と、前記第１のチャネルの最終層の値及び前記ドロップアウトが実行された前記第２のチャネルの最終層の値とから、当該最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第１のチャネルのパラメタを更新する、
付記３記載の機械学習プログラム。
【０１１３】
（付記８）
前記第３の更新処理において、
前記第１のチャネルのパラメタを維持し、
前記コンピュータに、
前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行せず且つ前記第２のチャネルの最終層の値に対して前記ドロップアウトを実行した場合の出力を計算する、
処理をさらに実行させる付記３記載の機械学習プログラム。
【０１１４】
（付記９）
前記第３の更新処理において、
前記第１のチャネルのパラメタを維持し、
前記コンピュータに、
次の入力に対する処理を開始する、
処理をさらに実行させる付記３記載の機械学習プログラム。
【０１１５】
（付記１０）
前記第１の更新処理において、
前記第１の出力誤差と、前記第１及び第２のチャネルの最終層の値とから、前記第１及び第２のチャネルの最終層の値から出力層の値を算出するためのパラメタの誤差である第１の誤差を算出し、
前記第１の誤差に基づき、誤差逆伝播法によって、前記第２のチャネルのパラメタを更新する、
付記３記載の機械学習プログラム。
【０１１６】
（付記１１）
コンピュータが、
並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、
前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行しない場合の出力と、前記ラベルとの誤差である第２の出力誤差を算出し、
前記第１の出力誤差と前記第２の出力誤差との差に基づき、前記複数のチャネルから１又は複数のチャネルを特定し、特定した前記１又は複数のチャネルのパラメタを更新する、
処理を実行する機械学習方法。
【０１１７】
（付記１２）
並列型ニューラルネットワークにおける複数のチャネルのうち第１のチャネルの最終層の値に対して０で置換する処理であるドロップアウトを実行した場合の出力と、ラベルとの誤差である第１の出力誤差を算出し、前記第１のチャネルの最終層の値に対して前記ドロップアウトを実行しない場合の出力と、前記ラベルとの誤差である第２の出力誤差を算出する算出部と、
前記第１の出力誤差と前記第２の出力誤差との差に基づき、前記複数のチャネルから１又は複数のチャネルを特定し、特定した前記１又は複数のチャネルのパラメタを更新する更新部と、
を有する機械学習装置。
【符号の説明】
【０１１８】
１  情報処理装置    １０１  入力データ格納部
１０２  ラベルデータ格納部    １０３  計算結果格納部
１０４  パラメタ格納部    １０５  算出部
１０６  第１学習処理部    １０７  第２学習処理部
１０８  第３学習処理部
【図１】
0006610278.tif 000006
【図２】
0006610278.tif 000007
【図３】
0006610278.tif 000008
【図４】
0006610278.tif 000009
【図５】
0006610278.tif 000010
【図６】
0006610278.tif 000011
【図７】
0006610278.tif 000012
【図８】
0006610278.tif 000013
【図９】
0006610278.tif 000014
【図１０】
0006610278.tif 000015
【図１１】
0006610278.tif 000016
【図１２】
0006610278.tif 000017
【図１３】
0006610278.tif 000018
【図１４】
0006610278.tif 000019
【図１５】
0006610278.tif 000020
【図１６】
0006610278.tif 000021
【図１７】
0006610278.tif 000022
【図１８】
0006610278.tif 000023
【図１９】
0006610278.tif 000024
【図２０】
0006610278.tif 000025
【図２１】
0006610278.tif 000026
【図２２】
0006610278.tif 000027
【図２３】
0006610278.tif 000028
【図２４】
0006610278.tif 000029
【図２５】
0006610278.tif 000030
【図２６】
0006610278.tif 000031
【図２７】
0006610278.tif 000032
【図２８】
0006610278.tif 000033
【図２９】
0006610278.tif 000034
【図３０】
0006610278.tif 000035