(57)【要約】【課題】ニューラルネットワークの学習効率を向上させることができる機械学習装置を提供することを過大とする。【解決手段】機械学習装置１００は、ラージネットワーク２Ａの中間層に追加出力層２４を接続し、スモールネットワーク３Ａの中間層に追加出力層３４を接続する。演算部１０４は、ラージネットワーク２Ａの演算を実行し、出力層から通常出力値４３を取得し、追加出力層２４から追加出力値５３を取得する。出力値調整部１０５は、通常出力値４３の分布範囲が狭くなるように通常出力値４３を調整して、追加調整値５４を生成する。追加誤差計算部１０７は、追加出力値５３及び追加調整値５４を用いて追加誤差値５５を算出する。更新部１０９は、追加誤差値５５を、スモールネットワーク３Ａの追加出力層３４に入力し、スモールネットワーク３Ａの重み計数を、誤差逆伝播法を用いて更新する。【選択図】図１
2017182320.tif 000002
【特許請求の範囲】
【請求項１】
学習済みのニューラルネットワークである第１ネットワークと、前記第１ネットワークよりも規模の小さいニューラルネットワークであり、かつ、層の数がｍ（ｍは４以上の自然数）である第２ネットワークとを取得するネットワーク取得部と、
前記第１のネットワークから一の中間層を選択し、前記一の中間層を構成するノードと接続されたノードを有する第１追加出力層を前記第１ネットワークに追加する第１追加出力層生成部と、
前記第２ネットワークに含まれる中間層の中から前記一の中間層に対応する第ｋ層（ｋは２以上ｍ−２以下の自然数）を特定し、前記第ｋ層を構成するノードと接続されたノードを有する第２追加出力層を前記第２ネットワークに追加する第２追加出力層生成部と、
学習データを前記第１ネットワークに入力して前記第１ネットワークを用いた演算を実行し、前記第１ネットワークの通常出力層のノードから通常出力値を取得し、前記第１追加出力層のノードから追加出力値を取得する演算部と、
前記通常出力値の分布範囲が狭くなるように前記通常出力値を調整することにより追加調整値を生成する出力値調整部と、
前記追加出力値及び前記追加調整値から追加誤差値を算出する追加誤差計算部と、
前記追加誤差値を前記第２追加出力層のノードに入力し、前記第２ネットワークに含まれる前記第ｋ層のノードと、第（ｋ−１）層のノードとを接続する信号経路の重み計数を誤差逆伝播法を用いて更新する更新部と、
を備える機械学習装置。
【請求項２】
請求項１に記載の機械学習装置であって、
前記第２ネットワークにおける層の数は、前記第１ネットワークにおける層の数と同じであり、
前記第２ネットワークの入力層を基準にした場合における前記第ｋ層の位置が、前記第１ネットワークの入力層を基準にした場合における前記一の中間層の位置と同じである機械学習装置。
【請求項３】
請求項１または請求項２に記載の機械学習装置であって、
前記第１ネットワークの出力層のノードの数と、前記第２ネットワークの出力層のノードの数と、前記第１追加出力層のノードの数と、前記第２追加出力層のノードの数とは、同じである機械学習装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の機械学習装置であって、さらに、
前記出力値調整部は、前記通常出力値の分布範囲が狭くなるように前記出力値を調整することにより、調整出力値を生成し、
前記機械学習装置は、さらに、
前記通常出力値及び前記調整出力値に基づいて調整誤差値を生成する出力誤差計算部、
を備え、
前記更新部は、前記調整誤差値を前記第２ネットワークの通常出力層に入力し、前記通常出力層に入力された調整誤差値を用いて前記重み計数を更新する機械学習装置。
【請求項５】
請求項４に記載の機械学習装置であって、
前記追加調整値の分布範囲は、前記調整出力値の分布範囲よりも狭い機械学習装置。
【請求項６】
請求項４に記載の機械学習装置であって、
前記出力誤差計算部は、前記通常出力値及び前記学習データに対応する正解値に基づいて出力誤差値を生成し、
前記更新部は、前記出力誤差値を前記第２ネットワークの通常出力層に入力し、前記通常出力層に入力された出力誤差値を用いて前記重み計数を更新する機械学習装置。
【請求項７】
請求項６に記載の機械学習装置であって、
前記更新部は、前記通常出力層に入力された調整誤差値に基づく前記重み計数の第１の更新量を計算し、前記第２の追加出力層に入力された追加誤差値に基づく前記前記重み計数の第２の更新量を計算し、
前記第２の更新量の学習率は、前記第１の更新量の学習率よりも小さい機械学習装置。
【請求項８】
学習済みのニューラルネットワークである第１ネットワークと、前記第１ネットワークよりも規模の小さいニューラルネットワークであり、かつ、層の数がｍ（ｍは４以上の自然数）である第２ネットワークとを取得するステップと、
前記第１のネットワークから一の中間層を選択し、前記一の中間層を構成するノードと接続されたノードを有する第１追加出力層を生成するステップと、
前記第２ネットワークに含まれる中間層の中から前記一の中間層に対応する第ｋ層（ｋは２以上ｍ−２以下の自然数）を特定し、前記第ｋ中間層を構成するノードと接続されたノードを有する第２追加出力層を生成するステップと、
学習データを前記第１ネットワークに入力して前記第１ネットワークを用いた演算を実行し、前記第１ネットワークの通常出力層のノードから通常出力値を取得し、前記第１追加出力層のノードから追加出力値を取得するステップと、
前記通常出力値の分布範囲が狭くなるように前記通常出力値を調整することにより追加調整値を生成するステップと、
前記追加出力値及び前記追加調整値から追加誤差値を算出するステップと、
前記追加誤差値を前記第２追加出力層のノードに入力し、前記第２ネットワークに含まれる前記第ｋ層のノードと、第（ｋ−１）層のノードとを接続する信号経路の重み計数を誤差逆伝播法を用いて更新するステップと、
を備える機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークの学習を行う機械学習装置に関する。
【背景技術】
【０００２】
ニューラルネットワークは、カメラにより撮影された画像から人物などの所定の物体を検出する物体検出装置や、センサにより計測されたデータを解析する解析装置などに採用されている。例えば、ニューラルネットワークを物体検出装置に用いる場合、機械学習装置が、画像に含まれる所定の物体の特徴をニューラルネットワークに学習させる。学習を終了したニューラルネットワークをコンピュータなどに実装することにより、物体検出装置が作成される。
【０００３】
ニューラルネットワークは、その規模が大きくなるほど学習の精度が高くなる傾向にある。しかし、ニューラルネットワークの規模が大きくなるにつれて、ニューラルネットワークの演算量が増大する。ニューラルネットワークを物体検出装置や、データ解析装置に適用するためには、ニューラルネットワークの演算量はできるだけ少ないことが望ましい。このため、高精度で、演算量の少ないニューラルネットネットワークを作成する技術の開発が望まれている。
【０００４】
非特許得文献１には、学習済みの大規模なニューラルネットワークの出力結果を利用して、小規模なニューラルネットワークの学習を行う技術が開示されている。小規模なニューラルネットワークの学習には、誤差逆伝播法（バックプロパゲーション）が用いられる。誤差逆伝播法は、教師あり学習のアルゴリズムである。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】”Distilling the Knowledge in a Neural Network”, [online], [平成28年2月9日検索], インターネット<URL: https://www.cs.toronto.edu/~hinton/absps/distillation.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
誤差逆伝播法を用いる機械学習装置は、ある学習データをニューラルネットワークに入力し、ニューラルネットワークの出力値と学習データの正解値とに基づいて誤差を計算する。機械学習装置は、ニューラルネットワークにおける出力層のノードに、計算した誤差を入力し、入力した誤差が小さくなるように出力層のノードに関する重み計数を更新する。その後、機械学習装置は、出力層よりも前に位置する下位層のノードから出力される出力値の誤差が小さくなるように、各層のノードに関する重み計数を更新する処理を繰り返す。
【０００７】
誤差逆伝播法を用いる場合、出力層のノードに入力された誤差は、下位層に伝播するに従って減衰する。ニューラルネットワークの下位層の重み計数の更新量は、誤差の減衰に従って小さくなるため、ニューラルネットワークの下位層の重み計数が更新されない場合がある。
【０００８】
従って、非特許文献１に開示されている技術を用いて、小規模なニューラルネットワークの学習を行う場合であっても、下位層の重み計数が更新されない可能性が考えられる。ニューラルネットワークの下位層の重み計数を更新させるために、ニューラルネットワークに大量の学習データを学習させる必要がある。学習する学習データの量が増加するほど、ニューラルネットワークの学習効率は低下する。
【０００９】
本発明の目的は、ニューラルネットワークの学習効率を向上させることができる機械学習装置を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、請求項１記載の発明は、機械学習装置であって、学習済みのニューラルネットワークである第１ネットワークと、前記第１ネットワークよりも規模の小さいニューラルネットワークであり、かつ、層の数がｍ（ｍは４以上の自然数）である第２ネットワークとを取得するネットワーク取得部と、前記第１のネットワークから一の中間層を選択し、前記一の中間層を構成するノードと接続されたノードを有する第１追加出力層を前記第１ネットワークに追加する第１追加出力層生成部と、前記第２ネットワークに含まれる中間層の中から前記一の中間層に対応する第ｋ層（ｋは２以上ｍ−２以下の自然数）を特定し、前記第ｋ層を構成するノードと接続されたノードを有する第２追加出力層を前記第２ネットワークに追加する第２追加出力層生成部と、学習データを前記第１ネットワークに入力して前記第１ネットワークを用いた演算を実行し、前記第１ネットワークの通常出力層のノードから通常出力値を取得し、前記第１追加出力層のノードから追加出力値を取得する演算部と、前記通常出力値の分布範囲が狭くなるように前記通常出力値を調整することにより追加調整値を生成する出力値調整部と、前記追加出力値及び前記追加調整値から追加誤差値を算出する追加誤差計算部と、前記追加誤差値を前記第２追加出力層のノードに入力し、前記第２ネットワークに含まれる前記第ｋ層のノードと、第（ｋ−１）層のノードとを接続する信号経路の重み計数を誤差逆伝播法を用いて更新する更新部と、を備える。
【００１１】
請求項２記載の発明は、請求項１に記載の機械学習装置であって、前記第２ネットワークにおける層の数は、前記第１ネットワークにおける層の数と同じであり、前記第２ネットワークの入力層を基準にした場合における前記第ｋ層の位置が、前記第１ネットワークの入力層を基準にした場合における前記一の中間層の位置と同じである。
【００１２】
請求項３記載の発明は、請求項１または請求項２に記載の機械学習装置であって、前記第１ネットワークの出力層のノードの数と、前記第２ネットワークの出力層のノードの数と、前記第１追加出力層のノードの数と、前記第２追加出力層のノードの数とは、同じである。
【００１３】
請求項４記載の発明は、請求項１ないし請求項３のいずれかに記載の機械学習装置であって、さらに、前記出力値調整部は、前記通常出力値の分布範囲が狭くなるように前記出力値を調整することにより、調整出力値を生成し、前記機械学習装置は、さらに、前記通常出力値及び前記調整出力値に基づいて調整誤差値を生成する出力誤差計算部、を備え、前記更新部は、前記調整誤差値を前記第２ネットワークの通常出力層に入力し、前記通常出力層に入力された調整誤差値を用いて前記重み計数を更新する。
【００１４】
請求項５記載の発明は、請求項４に記載の機械学習装置であって、前記追加調整値の分布範囲は、前記調整出力値の分布範囲よりも狭い。
【００１５】
請求項６記載の発明は、請求項４に記載の機械学習装置であって、前記出力誤差計算部は、前記通常出力値及び前記学習データに対応する正解値に基づいて出力誤差値を生成し、前記更新部は、前記出力誤差値を前記第２ネットワークの通常出力層に入力し、前記通常出力層に入力された出力誤差値を用いて前記重み計数を更新する。
【００１６】
請求項７記載の発明は、請求項６に記載の機械学習装置であって、前記更新部は、前記通常出力層に入力された調整誤差値に基づく前記重み計数の第１の更新量を計算し、前記第２の追加出力層に入力された追加誤差値に基づく前記重み計数の第２の更新量を計算し、前記第２の更新量の学習率は、前記第１の更新量の学習率よりも小さい。
【００１７】
請求項８記載の発明は、機械学習方法であって、学習済みのニューラルネットワークである第１ネットワークと、前記第１ネットワークよりも規模の小さいニューラルネットワークであり、かつ、層の数がｍ（ｍは４以上の自然数）である第２ネットワークとを取得するステップと、前記第１のネットワークから一の中間層を選択し、前記一の中間層を構成するノードと接続されたノードを有する第１追加出力層を生成するステップと、前記第２ネットワークに含まれる中間層の中から前記一の中間層に対応する第ｋ層（ｋは２以上ｍ−２以下の自然数）を特定し、前記第ｋ中間層を構成するノードと接続されたノードを有する第２追加出力層を生成するステップと、学習データを前記第１ネットワークに入力して前記第１ネットワークを用いた演算を実行し、前記第１ネットワークの通常出力層のノードから通常出力値を取得し、前記第１追加出力層のノードから追加出力値を取得するステップと、前記通常出力値の分布範囲が狭くなるように前記通常出力値を調整することにより追加調整値を生成するステップと、前記追加出力値及び前記追加調整値から追加誤差値を算出するステップと、前記追加誤差値を前記第２追加出力層のノードに入力し、前記第２ネットワークに含まれる前記第ｋ層のノードと、第（ｋ−１）層のノードとを接続する信号経路の重み計数を誤差逆伝播法を用いて更新するステップと、を備える。
【発明の効果】
【００１８】
本発明の機械学習装置において、演算部は、第１ネットワークの通常中間層のノードから通常出力値を取得し、第１ネットワークの一の中間層に接続された第１追加出力層のノードから追加出力値を取得する。出力値調整部は、通常出力値の分布範囲よりも狭い分布範囲を有する追加調整値を通常出力値から生成する。追加誤差計算部は、追加出力値及び追加調整値を用いて、追加誤差値を算出し、更新部は、追加誤差値を第２ネットワークの第ｋ層に接続された第２追加出力層に入力し、誤差逆伝播法を用いて第２ネットワークの重み計数を更新する。
【００１９】
機械学習装置は、第２ネットワークの第ｋ層よりも下位に位置する下位層のノードに対して、従来の誤差逆伝播法を用いて誤差を伝播させる場合よりも、減衰量の少ない誤差を伝播させることができる。これにより、機械学習装置は、第２ネットワークの下位層の重み計数を効率よく更新することが可能となり、ニューラルネットワークの学習効率を向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施の形態に係る機械学習装置の構成を示す機能ブロック図である。
【図２】図１に示す機械学習装置に入力されるラージネットワークの一例を示す図である。
【図３】図１に示す機械学習装置に入力されるスモールネットワークの一例を示す図である。
【図４】図１に示す機械学習装置の動作を示すフローチャートである。
【図５】図１に示す機械学習装置により追加出力層を追加されたラージネットワークの一例を示す図である。
【図６】図１に示す機械学習装置により追加出力層を追加されたスモールネットワークの一例を示す図である。
【図７】図５に示すラージネットワークにおける追加学習の対象を示す図である。
【図８】図１に示す出力誤差計算部により算出される調整誤差値及び出力誤差値の算出過程を示す図である。
【図９】図８に示す通常出力値４３及び調整通常出力値４４の分布図である。
【図１０】図１に示す追加誤差計算部により算出される追加誤差値の算出過程を示す図である。
【図１１】図６に示すスモールネットワークにおける重み計数の更新の概略を示す図である。
【図１２】一般的なニューラルネットワークにおける重み計数と、ノードとの関係を示す図である。
【図１３】図１に示す機械学習装置の構成の変形例を示す機能ブロック図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２２】
｛１．機械学習装置１００の構成｝
図１は、本発明の実施の形態に係る機械学習装置１００の構成を示す機能ブロック図である。図１に示すように、機械学習装置１００は、ラージネットワーク２Ａ及びスモールネットワーク３Ａを入力する。ラージネットワーク２Ａは、学習済みのニューラルネットワークである。スモールネットワーク３Ａは、未学習のニューラルネットワークであり、ラージネットワーク２Ａよりも規模が小さい。
【００２３】
機械学習装置１００は、ラージネットワーク２Ａの構成を一部変更したラージネットワーク２Ｃを生成し、スモールネットワーク３Ａの構成を一部変更したスモールネットワーク３Ｂの学習を行う。ラージネットワーク２Ｃは、ラージネットワーク３Ａと同様に学習済みである。機械学習装置１００は、ラージネットワーク２Ｃの識別結果を利用して、スモールネットワーク３Ｂの学習を行う。学習済みのスモールネットワーク３Ｂは、スモールネットワーク３Ｃとして、機械学習装置１００から出力される。
【００２４】
ラージネットワーク２Ａは、上述のように学習済みであり、例えば、カメラにより撮影された画像から、複数種類の物体を検出するために用いられる。複数種類の物体は、例えば、イヌ、ネコ及びその他の物体である。ラージネットワーク２Ａの学習アルゴリズムは特に限定されない。ラージネットワーク２Ａの学習において、転移学習を用いてもよい。
【００２５】
一般的に、ニューラルネットワークは、その規模が大きいほど学習の精度が高いといわれている。機械学習装置１００は、規模の大きいラージネットワーク２Ｃの識別結果を利用して、ラージネットワーク２Ｃよりも規模の小さいスモールネットワーク３Ｂの学習を行う。これにより、比較的規模の小さいニューラルネットワークの学習精度を高めることが可能となる。つまり、機械学習装置１００は、演算回数が少なく、かつ、精度が高いニューラルネットワークを生成することができる。
【００２６】
機械学習装置１００は、ネットワーク取得部１０１と、追加出力層生成部１０２，１０８と、追加学習部１０３と、演算部１０４と、出力値調整部１０５と、出力誤差計算部１０６と、追加誤差計算部１０７と、更新部１０９とを備える。
【００２７】
ネットワーク取得部１０１は、ラージネットワーク２Ａ及びスモールネットワーク３Ａを取得する。
【００２８】
追加出力層生成部１０２は、ラージネットワーク２Ａに追加出力層を追加することにより、ラージネットワーク２Ｂを生成する。具体的には、追加出力層生成部１０２は、ラージネットワーク２Ａに含まれる複数の中間層から一の中間層を選択し、選択した中間層のノードと接続された追加出力層を生成する。追加出力層は、ラージネットワーク２Ａが予め備えている出力層と別の層である。
【００２９】
追加学習部１０３は、誤差逆伝播法（バックプロパゲーション）を用いて、選択した中間層に含まれるノードと、追加出力層に含まれるノードとの間の信号経路の重み計数を更新する。追加学習部１０３は、追加学習の終了したラージネットワーク２Ｂを、ラージネットワーク２Ｃとして演算部１０４に出力する。
【００３０】
演算部１０４は、ラージネットワーク２Ｃに学習データ４を入力して、ラージネットワーク２Ｃを用いた演算を実行する。学習データ４は、例えば、イヌ、ネコ及びその他の物体が撮影された画像である。
【００３１】
出力値調整部１０５は、ラージネットワーク２Ｃの演算結果として、ラージネットワーク２Ｃの出力層を構成する各ノードから通常出力値４３Ａ，４３Ｂ，４３Ｃ，・・・を取得する。以下、通常出力値４３Ａ，４３Ｂ，４３Ｃ，・・・を総称する場合、通常出力値４３と記載する。
【００３２】
出力値調整部１０５は、通常出力値４３の分布範囲を調整して、調整通常出力値４４を生成する。調整通常出力値４４は、通常出力値４３Ａ，４３Ｂ，４３Ｃ，・・・の各々を調整することにより得られる調整通常出力値４４Ａ，４４Ｂ，４４Ｃ，・・・の総称である。調整通常出力値４４の分布範囲は、通常出力値４３の分布範囲よりも狭い。
【００３３】
また、出力値調整部１０５は、通常出力値４３の分布範囲を調整して、追加調整値５４を生成する。追加調整値５４は、通常出力値４３Ａ，４３Ｂ，４３Ｃ，・・・の各々を調整することにより得られる追加調整値５４Ａ，５４Ｂ，５４Ｃ，・・・の総称である。追加調整値５４の分布範囲は、通常出力値４３の分布範囲よりも狭く、かつ、調整通常出力値４４の分布範囲よりも狭い。
【００３４】
出力誤差計算部１０６は、通常出力値４３を用いて、調整誤差値４５及び出力誤差値４７を算出する。
【００３５】
出力誤差計算部１０６は、通常出力値４３と正解値４６との差分を計算することにより、出力誤差値４７を生成する。正解値４６は、ラージネットワーク２Ｃに学習データ４を入力した場合に、ラージネットワーク２Ｃの出力層を構成する各ノードが出力すべき所定値である。出力誤差値４７Ａ，４７Ｂ，４７Ｃ，・・・は、ラージネットワーク２Ｃの出力層が有する各出力ノードに対応する。出力誤差値４７は、出力誤差値４７Ａ，４７Ｂ，４７Ｃ，・・・の総称である。
【００３６】
出力誤差計算部１０６は、通常出力値４３と調整通常出力値４４との差分を計算することにより、調整誤差値４５を生成する。調整誤差値４５は、通常出力値４３Ａ，４３Ｂ，４３Ｃ，・・・の各々に対応する調整誤差値４５Ａ，４５Ｂ，４５Ｃ，・・・の総称である。
【００３７】
追加誤差計算部１０７は、ラージネットワーク２Ｃの演算結果である追加出力値５３Ａ，５３Ｂ，５３Ｃ，・・・を演算部１０４から取得する。追加出力値５３Ａ，５３Ｂ，５３Ｃ，・・・は、ラージネットワーク２Ｃの追加出力層を構成する各ノードから出力される。以下、追加出力値５３Ａ，５３Ｂ，５３Ｃ，・・・を総称する場合、追加出力値５３と記載する。追加誤差計算部１０７は、追加出力値５３と追加調整値５４との差分を計算することにより、追加誤差値５５を生成する。追加誤差値５５は、追加出力値５３Ａ，５３Ｂ，５３Ｃ，・・・の各々に対応する追加誤差値５５Ａ，５５Ｂ，５５Ｃ，・・・の総称である。
【００３８】
追加出力層生成部１０８は、追加出力層生成部１０２によりラージネットワーク２Ａから選択された一の中間層に対応する中間層を、スモールネットワーク３Ａに含まれる複数の中間層の中から選択する。スモールネットワーク３Ａの中間層の選択の詳細については、後述する。追加出力層生成部１０８は、選択したスモールネットワーク３Ａの中間層のノードと接続されたノードを有する追加出力層を生成する。生成された追加出力層は、スモールネットワーク３Ａが予め備えている出力層と別の層である。追加出力層生成部１０８は、スモールネットワーク３Ａに追加出力層を追加したニューラルネットワークを、スモールネットワーク３Ｂとして更新部１０９に出力する。
【００３９】
更新部１０９は、誤差逆伝播法を用いて、スモールネットワーク３Ｂの学習を実行する。具体的には、更新部１０９は、調整誤差値４５及び出力誤差値４７をスモールネットワーク３Ｂにおける出力層のノードに入力し、追加誤差値５５をスモールネットワーク３Ｂにおける追加出力層のノードに入力する。更新部１０９は、誤差逆伝播法を用いて、スモールネットワーク３Ｂの重み計数を更新する。
【００４０】
｛２．ラージネットワークとスモールネットワークとの関係｝
図２は、図１に示すラージネットワーク２Ａの構成の一例を示す図である。図２に示すラージネットワーク２Ａにおいて、円は、ニューラルネットワークを構成するノードを示し、矢印は、２つのノード間を接続する信号経路を示す。以下の説明で参照される図３、図５〜図７、図１１〜図１２も同様である。
【００４１】
図２に示すラージネットワーク２Ａにおいて、層の数は４である。ラージネットワーク２Ａは、入力層２１と、中間層２２１，２２２と、出力層２３とを備える。入力層２１と、中間層２２１及び２２２とは、それぞれ、４つのノードを備える。なお、中間層２２１は、ノード２２１ａ〜２２１ｄを備える。
【００４２】
出力層２３は、第２ネットワークに予め設けられた通常出力層であり、３つの出力ノード２３ａ〜２３ｃを備える。上述のように、ラージネットワーク２Ａがイヌ、ネコ及びその他の物体を識別するために用いられる場合、出力ノード２３ａは、イヌに対応する出力値を出力し、出力ノード２３ｂは、ネコに対応する出力値を出力する。出力ノード２３ｃは、その他の物体に対応する出力値を出力する。
【００４３】
図３は、図１に示すスモールネットワーク３Ａの構成の一例を示す図である。図３に示すように、スモールネットワーク３Ａは、入力層３１と、中間層３２１，３２２と、出力層３３とを備える。中間層３２１は、ノード３２１ａ〜３２１ｃを備え、出力層３３は、出力ノード３３ａ〜３３ｃを有する。
【００４４】
スモールネットワーク３Ａは、ラージネットワーク２Ａよりも規模の小さいニューラルネットワークであり、ラージネットワーク２Ａの構造に基づいて作成される。ラージネットワーク２Ａの構成と、スモールネットワーク３Ａの構成とは、下記の２点で同じである。
【００４５】
第１の点は、スモールネットワーク３Ａが有する層の数は、ラージネットワーク２Ａが有する層の数と同じであることである。このため、ラージネットワーク２Ａの層は、スモールネットワーク３Ａの層と１対１に対応する。ラージネットワーク２Ａの層と、スモールネットワーク３Ａの層との対応関係は、各ネットワークの入力層を基準にして決定される。例えば、ラージネットワーク２Ａの中間層２２１は、入力層２１から数えて２番目の位置にある。従って、中間層２２１は、スモールネットワーク３Ａの入力層３１から数えて２番目の位置にある中間層３２１に対応する。
【００４６】
第２の点は、ラージネットワーク２Ａ及びスモールネットワーク３Ａにおいて、入力層のノードの数が同じであり、出力層のノードの数が同じであることである。図２及び図３に示す例では、入力層２１及び３１におけるノードの数は、ともに４であり、出力層２３及び３３におけるノードの数は、ともに３である。スモールネットワーク３Ａの出力層３３が有するノード３３ａ〜３３ｃは、ラージネットワーク２Ａの出力層２３が有するノード２３ａ〜２３ｃにそれぞれ対応する。
【００４７】
相違点は、以下の通りである。スモールネットワーク３Ａの中間層のノードの数は、対応するラージネットワーク２Ａの中間層のノードの数よりも小さいか、同じである。図２及び図３に示すように、中間層３２１及び３２２が有するノードの数は、対応するラージネットワーク２Ａの中間層２２１及び２２２が有するノードの数よりも少ない。すなわち、スモールネットワーク３Ａにおける一の中間層が有するノードの数が、この一の中間層に対応するラージネットワーク２Ａの中間層が有するノードの数よりも少なければよい。これにより、スモールネットワーク３Ａの規模を、ラージネットワーク２Ａの規模よりも小さくすることができる。
【００４８】
｛３．機械学習装置１００の動作｝
以下、機械学習装置１００の動作について詳しく説明する。機械学習装置１００は、ラージネットワーク２Ｃによる学習データ４の識別結果を、スモールネットワーク３Ｂに反映させることにより、スモールネットワーク３Ｂの学習を実行する。機械学習装置１００は、スモールネットワーク３Ｂの学習が終了した場合、学習済みのスモールネットワーク３Ｂから追加出力層を削除したニューラルネットワークを、スモールネットワーク３Ｃとして出力する。
【００４９】
以下、機械学習装置１００が、図２に示すラージネットワーク２Ａと、図３に示すスモールネットワーク３Ａを取得する場合を例にして、機械学習装置１００の動作を詳しく説明する。
【００５０】
｛３．１．ニューラルネットワークの取得｝
図４は、機械学習装置１００の動作を示すフローチャートである。図４に示すように、ネットワーク取得部１０１が、ラージネットワーク２Ａ及びスモールネットワーク３Ａを取得する（ステップＳ１）。
【００５１】
ラージネットワーク２Ａ及びスモールネットワーク３Ａの各々は、各層に含まれるノードを定義するデータと、２つのノードを接続する信号経路の重み計数とを含むデータである。ラージネットワーク２Ａに含まれる重み計数は、イヌ、ネコ及びその他の物体を識別するために既に調整されている。機械学習装置１００は、図４に示す処理を実行する際に、ラージネットワーク２Ａに含まれる重み計数を更新しない。
【００５２】
｛３．２．追加出力層の追加｝
追加出力層生成部１０２が、ネットワーク取得部１０１が取得したラージネットワーク２Ａに追加出力層を追加する（ステップＳ２）。具体的には、追加出力層生成部１０２は、ラージネットワーク２Ａに含まれる複数の中間層から一の中間層を選択し、選択した中間層のノードと接続された追加出力層を生成する。この結果、ラージネットワーク２Ｂが、ラージネットワーク２Ａから生成される。
【００５３】
図５は、追加出力層生成部１０２により生成されたラージネットワーク２Ｂの一例を示す図である。図５に示す例では、追加出力層生成部１０２は、追加出力ノード２４ａ〜２４ｃを有する追加出力層２４を生成する。追加出力ノード２４ａ〜２４ｃの数は、出力層２３が有する出力ノード２３ａ〜２３ｃの数と一致する。追加出力層生成部１０２は、中間層２２１を選択し、中間層２２１のノード２２１ａ〜２２１ｄと追加出力ノード２４ａ〜２４ｃとを接続する。
【００５４】
追加出力ノード２４ａ〜２４ｃは、出力層２３が備える出力ノード２３ａ〜２３ｃのいずれか１つに対応する。具体的には、追加出力ノード２４ａは、出力ノード２３ａに対応する。追加出力ノード２４ｂは、出力ノード２３ｂに対応する。追加出力ノード２４ｃは、出力ノード２３ｃに対応する。
【００５５】
追加出力層生成部１０２は、追加出力層２４の追加に伴って、ノード２２１ａ〜２２１ｄと、追加出力ノード２４ａ〜２４ｃとの間における信号経路の重み計数の初期値を設定する。重み計数の初期値は、例えば、予め定められた分散の範囲内に収まるようにランダムに設定される。
【００５６】
再び、図４を参照する。追加出力層生成部１０８が、ネットワーク取得部１０１が取得したスモールネットワーク３Ａに追加出力層を追加する（ステップＳ３）。具体的には、追加出力層生成部１０８は、スモールネットワーク３Ａが有する中間層の中から、ステップＳ２において追加出力層が接続されたラージネットワーク２Ａの中間層に対応する層を特定する。追加出力層生成部１０８は、特定したスモールネットワーク３Ａの中間層に接続された追加出力層を生成する。これにより、これにより、スモールネットワーク３Ｂが、スモールネットワーク３Ａから生成される。
【００５７】
図６は、追加出力層生成部１０８により生成されたスモールネットワーク３Ｂの一例を示す図である。図６に示すスモールネットワーク３Ｂは、図５に示すラージネットワーク２Ｂに基づいて生成される。図６に示すように、スモールネットワーク３Ｂは、入力層３１と、中間層３２１，３２２と、出力層３３と、追加出力層３４とを備える。
【００５８】
追加出力層３４は、追加出力ノード３４ａ〜３４ｃを備える。追加出力ノード３４ａ〜３４ｃの数は、出力層３３が備える出力ノード３３ａ〜３３ｃの数と同じである。追加出力ノード３４ａは、出力ノード３３ａに対応する。追加出力ノード３４ｂは、出力ノード３３ｂに対応する。追加出力ノード３４ｃは、出力ノード３３ｃに対応する。
【００５９】
｛３．３．追加学習｝
再び、図４を参照する。追加学習部１０３は、ラージネットワーク２Ｂの追加学習を実行する（ステップＳ４）。図７は、図５に示すラージネットワーク２Ｂにおける追加学習の対象を示す図である。図７において、出力層２３の表示を省略し、中間層２２２が有するノードと、出力層２３が有するノードとの間の経路の表示を省略している。
【００６０】
図７に示すように、追加学習の対象は、ラージネットワーク２Ｂにおいて、実線で示す信号経路の重み計数である。つまり、破線で示す信号経路は、追加学習（ステップＳ４）の対象とならない。追加学習は、従来の誤差逆伝播法を用いて実行される。
【００６１】
追加学習（ステップＳ４）において、中間層２２１が有するノードと、追加出力層２４が有するノードとの間の信号経路のみが追加学習の対象となる理由を説明する。追加学習部１０３は、入力層２１が有するノードと中間層２２１が有するノードとの間の信号経路の重み係数を、追加学習の際に更新することが可能である。しかし、破線で示す信号経路の重み計数は、ラージネットワーク２Ａの学習により既に調整されている。入力層２１が有するノードと中間層２２１が有するノードとの間の信号経路の重み係数を、追加学習時に更新した場合、学習済みのラージネットワーク２Ａの識別能力が失われる可能性がある。このため、追加学習では、図７において実線で示される信号経路の重み係数のみが更新される。
【００６２】
追加学習部１０３は、追加学習の終了したラージネットワーク２Ｂを、ラージネットワーク２Ｃとして演算部１０４に出力する。
【００６３】
｛３．４．調整誤差値４５の算出）
次に、演算部１０４は、学習データ４をラージネットワーク２Ｃに入力し、ラージネットワーク２Ｃを用いた演算を実行する（ステップＳ５）。学習データ４は、本実施の形態では、スモールネットワーク３Ｃの学習に用いられる画像データであり、イヌ、ネコ及びその他の物体のいずれかを含む。演算部１０４は、演算結果として、出力ノード２３ａ〜２３ｃから通常出力値４３ａ〜４３ｃを出力し、追加出力ノード２４ａ〜２４ｃから追加出力値５３ａ〜５３ｃを出力する。
【００６４】
出力値調整部１０５は、出力ノード２３ａ〜２３ｃから出力された通常出力値４３を演算部１０４から取得する。出力値調整部１０５は、取得したされた通常出力値４３を調整して、調整通常出力値４４を生成する（ステップＳ６）。以下、通常出力値４３の調整について説明する。
【００６５】
図８は、調整誤差値４５及び出力誤差値４７の算出過程を示す図である。図８に示す通常出力値４３、調整通常出力値４４、調整誤差値４５、正解値４６及び出力誤差値４７の数値は、説明のための便宜的な値であり、機械学習装置１００の動作を限定するものではない。
【００６６】
ステップＳ６において、出力値調整部１０５は、調整通常出力値４４の分布範囲が通常出力値４３の分布範囲よりも狭くなるように、通常出力値４３を調整する。具体的には、出力値調整部１０５は、下記式（１）を用いて、通常出力値４３を調整する。
【００６７】
【数１】
2017182320.tif 000003
【００６８】
上記式（１）において、ｕｉは、出力層２３におけるｉ（ｉは１以上の自然数）番目の出力ノードから出力される通常出力値４３である。ｓｉは、出力層２３におけるｉ（ｉは１以上の自然数）番目の出力ノードに対応する調整通常出力値４４である。調整パラメータＴは、任意の値であり、例えば、３に設定される。式（１）を用いて、図８に示す通常出力値４３ａ〜４３ｂを調整した場合、調整通常出力値４４ａ、４４ｂ及び４４ｃは、それぞれ、１．３５、０．２４及び０．３７となる。
【００６９】
図９は、図８に示す通常出力値４３及び調整通常出力値４４の分布図である。図９に示すように、調整通常出力値４４の分布範囲が、通常出力値４３の分布範囲よりも狭くなっている。ここで、分布範囲は、通常出力値４３また調整通常出力値４４における最大値と最小値との差分絶対値を意味する。つまり、式（１）を用いて通常出力値４３を調整することにより、通常出力値４３を緩やかにした調整通常出力値４４を生成することができる。ここで、「通常出力値４３を緩やかにする」とは、図９に示すような通常出力値の分布図において、２つの通常出力値を結ぶ直線の傾きが小さくなるように、通常出力値４３を調整することをいう。式（１）により生成される調整通常出力値４４は、ソフトターゲット（Soft Target）と呼ばれる。
【００７０】
図８に示す通常出力値４３において、最大値が３．９であり、最小値が−１．２である。このため、通常出力値４３における最大値と最小値との差分絶対値は、５．１である。一方、図８に示す通常出力値４３において、最大値が１．３５であり、最小値が０．２４である。このため、調整通常出力値４４における最大値と最小値の差分絶対値は、１．１１である。式（１）を用いて通常出力値４３を調整することにより、調整通常出力値４４の分布範囲が、通常出力値４３の分布範囲よりも狭くなっていることがわかる。式（１）において、調整パラメータＴを大きくするほど、調整通常出力値４４の分布範囲を狭くすることが可能である。
【００７１】
出力値調整部１０５は、調整通常出力値４４の分布範囲を通常出力値４３の分布範囲よりも狭くすることができるのであれば、式（１）を用いる方法以外の方法を用いて、通常出力値４３を調整してもよい。
【００７２】
次に、出力誤差計算部１０６が、演算部１０４から通常出力値４３を取得し、出力値調整部１０５から調整通常出力値４４を取得する。出力誤差計算部１０６は、通常出力値４３と調整通常出力値４４との差分を計算することにより、調整誤差値４５を生成する（ステップＳ７）。具体的には、調整誤差値４５は、下記式（２）を用いることにより得られる。
【００７３】
【数２】
2017182320.tif 000004
【００７４】
上記式（２）において、δｉは、出力層２３におけるｉ番目の出力ノードに対応する調整誤差値４５である。ｕｉは、ｉ番目の出力ノードにおける通常出力値４３である。ｓｉは、ｉ番目の出力ノードに対応する調整通常出力値４４である。
【００７５】
次に、出力誤差計算部１０６は、学習データ４に対応する正解値４６を取得し、通常出力値４３と正解値４６との差分を取ることにより、出力誤差値４７を算出する（ステップＳ８）。図８に示すように、正解値４６は、出力層２３における出力ノード２３ａ〜２３ｃに対応する正解値４６ａ〜４６ｃを有する。出力誤差計算部１０６は、ｓｉ（調整通常出力値４４）を、出力層２３におけるｉ番目の出力ノードに対応する正解値４６に置き換えた式（２）を用いて、出力ノード２３ａ〜２３ｃに対応する出力誤差値４７ａ〜４７ｃを算出する。
【００７６】
｛３．５．追加誤差値５５の算出｝
図１０は、追加誤差値５５の算出過程を示す図である。図１０に示す通常出力値４３は、図８に示す通常出力値４３と同じである。図１０に示す通常出力値４３、追加出力値５３、追加調整値５４及び追加誤差値５５の数値は、説明のための便宜的な値であり、機械学習装置１００の動作を限定するものではない。
【００７７】
上述したように、出力値調整部１０５は、通常出力値４３から追加調整値５４を算出する（ステップＳ９）。具体的には、出力値調整部１０５は、式（１）を用いて、追加調整値５４の分布範囲が調整通常出力値４４の分布範囲よりも狭くなるように、通常出力値４３を調整する。ステップＳ９において、出力値調整部１０５は、式（１）の調整パラメータＴの値を、調整通常出力値４４の算出時に用いられる値よりも大きくする。追加調整値５４は、調整通常出力値４４と同様に、ソフトターゲットである。
【００７８】
図１０に示す追加調整値５４ａ〜５４ｃは、式（１）の調整パラメータＴを５に設定することにより、通常出力値４３ａ〜４３ｃから算出される。図９に示す分布図において、図１０に示す追加調整値５４ａ〜５４ｃがプロットされている。図９に示すように、追加調整値５４の分布範囲が、通常出力値４３の分布範囲及び調整通常出力値４４の分布範囲よりも狭くなっていることが分かる。
【００７９】
次に、追加誤差計算部１０７は、演算部１０４から追加出力値５３を取得し、出力値調整部１０５から追加調整値５４を取得する。追加誤差計算部１０７は、追加出力値５３と追加調整値５４との差分を計算することにより、追加誤差値５５を生成する（ステップＳ１０）。具体的には、追加誤差計算部１０７は、出力層２３のｉ番目の出力ノードに対応する調整出力値ｓｉを、追加出力層２４のｉ番目の追加出力ノードに対応する追加調整値５４に置換した式（２）を用いて、追加誤差値５５を算出する。
【００８０】
このように、機械学習装置１００は、通常出力値４３から２種類のソフトターゲット（調整通常出力値４４及び追加調整値５４）を算出し、これらのソフトターゲットから２種類の誤差（調整誤差値４５及び追加誤差値５５）を算出する。調整誤差値４５及び追加誤差値５５が、スモールネットワーク３Ｂの重み係数の更新に用いられる。
【００８１】
｛３．６．重み係数の更新｝
更新部１０９は、出力誤差計算部１０６から調整誤差値４５及び出力誤差値４７を取得し、追加誤差計算部１０７から追加誤差値５５を取得する。更新部１０９は、取得した調整誤差値４５、出力誤差値４７及び追加誤差値５５をスモールネットワーク３Ｂに入力し、誤差逆伝播法を用いてスモールネットワーク３Ｂの重み計数を更新する（ステップＳ１１）。
【００８２】
｛３．６．１．重み計数の更新の概略｝
図１１は、ステップＳ１１によりスモールネットワーク３Ｂの重み計数が更新される場合における誤差の伝播方向を示す図である。
【００８３】
ステップＳ１１により、スモールネットワーク３Ｂにおける重み計数３５１〜３５４が更新される。重み計数３５１は、入力層３１から中間層３２１までの区間Ａにおける各信号経路に対して設定される。ここで、「区間」は、ニューラルネットワークにおける信号経路の位置を示すための便宜的な呼称である。
【００８４】
重み計数３５２は、中間層３２１から中間層３２２までの区間Ｂにおける各信号経路に対して設定される。重み係数３５３は、中間層３２２から出力層３３までの区間Ｃにおける各信号経路に対して設定される。重み係数３５４は、中間層３２１から追加出力層３４までの区間Ｄにおける各信号経路に対して設定される。
【００８５】
図１１に示すように、更新部１０９は、調整誤差値４５に基づく重み計数の更新を行うために、スモールネットワーク３Ｂの出力層３３における出力ノード３３ａ〜３３ｃに調整誤差値４５を入力する。また、更新部１０９は、追加誤差値４７に基づく重み係数の更新を行うために、出力ノード３３ａ〜３３ｃに調整誤差値４７を入力する。調整誤差値４５ａ及び出力誤差値４７ａが、出力ノード３３ａに個別に入力され、調整誤差値４５ｂ及び出力誤差値４７ｂが、出力ノード３３ｂに個別に入力され、調整誤差値４５ｃ及び出力誤差値４７ｃが、出力ノード３３ｃに個別に入力される。
【００８６】
更新部１０９は、調整誤差値４５ａ〜４５ｃ及び出力誤差値４７ａ〜４７ｃを用いて、誤差逆伝播法により重み係数３５３を更新する。更新部１０９は、更新された重み計数３５３に基づいて、中間層３２２が有する各ノードの出力値の誤差を計算し、計算した誤差を用いて、誤差逆伝播法により重み係数３５２を更新する。
【００８７】
更新部１０９は、追加誤差値５５ａ〜５５ｃを、スモールネットワーク３Ｂにおける追加出力ノード３４ａ〜３４ｃに入力する。更新部１０９は、追加誤差値５５ａ〜５５ｃを用いて、誤差逆伝播法により重み計数３５４を更新する。
【００８８】
更新部１０９は、重み計数３５２及び３５４を更新した後に、重み計数３５１を更新する。更新部１０９は、調整誤差値４５、出力誤差値４７及び追加誤差値５５を用いて、重み計数３５１を更新する。更新部１０９は、調整誤差値４５及び出力誤差値４７を、矢印３６で示す方向に伝播させ、追加誤差値５５を、矢印３７で示す方向に沿って伝播させる。つまり、更新部１０９は、スモールネットワーク３Ｂにおいて、誤差を２つの経路で伝播させることによって、重み計数を更新する。
【００８９】
｛３．６．２．一般的な誤差逆伝播法による重み計数の更新｝
ここで、最初に、一般的な誤差逆伝播法による重み計数の更新について説明する。図１２は、一般的なニューラルネットワーク２００の構成を示す図である。図１２に示すように、ニューラルネットワーク２００は、ｍ個の層を有する。各層は、１個以上のノードを有する。第ｍ層（出力層）は、ｎ個のノードを有する。ここでは、ｍは３以上の自然数、ｎは２以上の自然数である
【００９０】
図１２において、第１層、第（ｔ−１）層、第ｔ層、第（ｔ＋１）層、第ｍ層のみを表示し、それ以外の層の表示を省略している。ここで、ｔは、２以上ｍ−１以下の自然数である。また、図１２において、各層における一部のノードの表示を省略している。各ノードの下に示す数値は、各層におけるノードの位置を示す。例えば、ノードＮ＿ｊは、第ｔ層におけるｊ番目のノードである。
【００９１】
ニューラルネットワーク２００において、重み係数ｗjiｔ−１は、下記式（３）に基づいて更新される。ここで、ｗjiｔ−１は、第（ｔ−１）層におけるｉ番目のノードＮ＿ｉと、第ｔ層におけるｊ番目のノードＮ＿ｊとの間の信号経路の重み計数を示す。
【００９２】
【数３】
2017182320.tif 000005
【００９３】
式（３）において、Ｅは、誤差関数である。学習率εは、０以上１以下の数値であり、誤差関数Ｅの偏微分量を、重み係数ｗjiｔ−１の更新にどの程度反映させるかを示すパラメータである。つまり、重み係数ｗjiｔ−１の更新量は、誤差関数Ｅを重み係数ｗjiｔ−１で偏微分し、誤差関数Ｅの偏微分量に学習率εを乗算することにより得られる。
【００９４】
誤差関数Ｅは、ニューラルネットワーク２００の出力層の各出力ノードにおける２乗誤差であり、下記式（４）により表される。
【００９５】
【数４】
2017182320.tif 000006
【００９６】
式（４）において、ｕｊｍは、ニューラルネットワーク２００の第ｍ層におけるｊ番目のノードの出力値である。ｄｊは、第ｍ層におけるｊ番目のノードにおける正解値（教師信号）である。つまり、式（４）における（ｕｊm−ｄｊm）は、第ｍ層におけるｊ番目のノードの出力誤差値４７である。
【００９７】
式（３）における誤差関数Ｅの偏微分量は、ｔ≠ｍである場合、下記式（５）により表される。
【００９８】
【数５】
2017182320.tif 000007
【００９９】
式（５）において、ｆ’（ｘ）は、活性化関数の微分である。例えば、シグモイド関数が、活性化関数として用いられる。ｕｊｔは、第ｔ層におけるｊ番目のノードＮ＿ｊの出力値である。ｕｉｔ−１は、第（ｔ−１）層におけるｉ番目のノードＮ＿ｉの出力値である。ｕｋｔ＋１は、第（ｔ＋１）層におけるｋ番目のノードＮ＿ｋの出力値である。ｄｋｔ＋１は、第（ｔ＋１）層におけるｋ番目のノードＮ＿ｋの正解値である。
【０１００】
また、式（３）における誤差関数Ｅの偏微分量は、ｔ＝ｍである場合、下記式（６）により表される。
【０１０１】
【数６】
2017182320.tif 000008
【０１０２】
式（６）において、ｕｋｍは、出力層である第ｍ層のｋ番目のノードの出力値であり、ｄｋｍは、第ｍ層のｋ番目のノードの正解値（教師信号）である。つまり、式（６）における（ｕｋｍ−ｄｋｍ）は、第ｍ層のｋ番目のノードの出力誤差値４７である。
【０１０３】
｛３．６．３．スモールネットワーク３Ｂの重み計数の更新｝
（重み計数３５３の更新）
図１１を参照しながら、重み計数３５３の更新について説明する。重み計数３５３は、区間Ｃにおける各信号経路に対して設定される。重み係数３５３は、出力ノード３３ａ〜３３ｃに入力される調整誤差値４５及び出力誤差値４７に基づいて更新される。具体的には、重み係数３５３は、下記式（７）に基づいて更新される。
【０１０４】
【数７】
2017182320.tif 000009
【０１０５】
式（７）の右辺における第１項及び第２項は、式（６）の右辺における第１項及び第２項と同じである。つまり、式（７）における右辺第２項は、出力誤差値４７に基づく重み係数の更新量を示す。
【０１０６】
式（７）における右辺第３項は、調整誤差値４５に基づく重み係数の更新量を示す。Ｅ１は、調整誤差値４５に基づく誤差関数である。誤差関数Ｅ１は、式（４）における第ｍ層における第ｋ番目のノードの出力誤差値４７である（ｕｊm−ｄｊm）を、第ｋ番目のノードの調整誤差値４５に置換することによって得られる。
【０１０７】
調整誤差値４５に基づく重み係数の更新量は、誤差関数Ｅ１を重み係数ｗｊｉｔ−１で偏微分した偏微分量に、学習率αを乗じることによって算出される。学習率ε及びαの大小関係は、特に限定されない。学習率ε及びαの大小関係は、スモールネットワーク３Ｂの学習において、調整誤差値４５に基づく学習と出力誤差値４７に基づく学習のどちらを重視するかによって決定される。
【０１０８】
式（７）における誤差関数Ｅ１の偏微分量は、上記式（６）に基づいて算出される。ただし、右辺第３項を計算する場合、式（６）における（ｕkm−ｄkm）が、出力層３３における第ｋ番目のノードの調整誤差値４５に置換される。
【０１０９】
このように、更新部１０９は、重み係数３５３を更新する場合、出力誤差値４７に基づく重み係数の更新量と、調整誤差値４５に基づく重み係数の更新量とを個別に算出する。更新部１０９は、算出した２つの更新量の合計を重み係数３５３から減算することにより、重み係数３５３を更新する。
【０１１０】
（重み計数３５２の更新）
更新部１０９は、重み係数３５３を更新した後に、重み係数３５２を更新する。図１１に示すように、重み計数３５２は、区間Ｂにおける各信号経路に対して設定される。調整誤差値４５及び出力誤差値４７が、区間Ｂにおける各信号経路を逆方向に伝播する。更新部１０９は、重み係数３５３の更新と同様に、上記式（７）を用いて重み係数を更新する。式（７）において、中間層３２２が、重み係数３５２の計算における第ｔ層に該当するため、誤差関数Ｅの偏微分量及び誤差関数Ｅ１の偏微分量は、式（５）により算出される。
【０１１１】
ただし、誤差関数Ｅ１の偏微分量は、式（５）におけるｄｋｔ＋１を、出力層３３の第ｋ番目のノードに対応する調整通常出力値４４に置換することによって得られる。この理由は、式（５）において、中間層３２２が第ｔ層に該当し、第ｔ＋１層が出力層３３に該当するためである。
【０１１２】
（重み係数３５４の更新）
図１１に示すように、重み計数３５４は、区間Ｄにおける各信号経路に対して設定される。追加出力層２４の追加出力ノード２４ａ〜２４ｃには、追加誤差値５５ａ〜５５ｃが入力されるため、追加誤差値５５が、区間Ｄにおける各信号経路を逆方向に伝播する。従って、更新部１０９は、誤差逆伝播法を用いて重み計数３５４を更新する場合、追加誤差値５５のみを用いて、重み係数３５４を更新する。
【０１１３】
具体的には、更新部１０９は、区間Ｄにおける重み係数３５４を、式（８）を用いて更新する。
【０１１４】
【数８】
2017182320.tif 000010
【０１１５】
式（８）において、重み係数ｗｊｉｔ−１は、中間層３２１のｉ番目のノードから、追加出力層３４のｊ番目のノードまでの信号経路の重み計数に相当する。Ｅ２は、追加誤差値５５の誤差関数である。誤差関数Ｅ２において、第ｍ層は、追加出力層３４に相当する。従って、誤差関数Ｅ２は、式（４）における（ｕkm−ｄkm）を追加誤差値５５に置換することにより得られる。
【０１１６】
式（８）の右辺第２項は、重み係数３５４の更新量である。重み係数３５４の更新量は、誤差関数Ｅ２を重み係数３５４で偏微分した偏微分量に、学習率βを乗じることにより得られる。学習率βと、学習率α、εとの大小関係については、後述する。誤差関数Ｅ２の偏微分量は、式（６）における（ｕkm−ｄkm）を、追加誤差値５５に置換することにより得られる。
【０１１７】
（重み計数３５１の更新）
更新部１０９は、重み係数３５２及び３５４の更新が終了した後に、区間Ａ（図１１参照）における各信号経路に対して設定される重み係数３５１を更新する。上述したように、調整誤差値４５，出力誤差値４７及び追加誤差値５５が、区間Ａにおける各信号経路を逆方向に伝播する。従って、更新部１０９は、調整誤差値４５，出力誤差値４７及び追加誤差値５５を考慮に入れた誤差逆伝播法に基づいて、重み計数３５１を更新する。
【０１１８】
具体的には、更新部１０９は、下記式（９）に基づいて、重み係数３５１を更新する。
【０１１９】
【数９】
2017182320.tif 000011
【０１２０】
上記式（９）において、右辺第２項は、出力誤差値４７に基づく更新量を示す、右辺第３項は、調整誤差値４５に基づく更新量を示し、式（７）における右辺第３項と同じである。右辺第４項は、追加誤差値５５に基づく更新量を示し、式（８）における右辺第２項と同じである。つまり、更新部１０９は、調整誤差値４５，出力誤差値４７及び追加誤差値５５が逆方向に伝播する信号経路の重み係数を更新する場合、調整誤差値４５に基づく更新量と、出力誤差値４７に基づく更新量と、追加誤差値５５に基づく更新量との合計を使用する。
【０１２１】
重み係数３５１を更新する場合、中間層３２１が、第ｔ層に該当する。このため、式（９）における誤差関数Ｅの偏微分量は、式（５）により算出される。式（９）における誤差関数Ｅ１の偏微分量は、式（５）において、第（ｔ＋１）層のｋ番目のノードにおける正解値ｄｋｔ＋１を、ｋ番目のノードの調整通常出力値４４に置換することにより得られる。更新部１０９は、上記式（２）を用いて、第（ｔ＋１）層のｋ番目のノードの出力値を調整することにより、第（ｔ＋１）層のｋ番目のノードの調整通常出力値４４を算出する。式（９）における誤差関数Ｅ２の偏微分量は、式（５）において、第（ｔ＋１）層のｋ番目のノードにおける正解値ｄｋｔ＋１を、追加出力層３４におけるｋ番目のノードの追加誤差値５５に置換することにより得られる。
【０１２２】
このように、重み計数３５１の更新を、調整誤差値４５及び出力誤差値４７だけでなく、追加誤差値５５を用いて行うことにより、重み計数３５１の更新を効率よく実行することができる。以下、その理由を説明する。
【０１２３】
一般的な誤差逆伝播法を用いて重み計数を更新する場合、重み計数は、出力層から入力層に向かって、順次更新される。一般的な誤差逆伝播法は、誤差を小さくするように重み係数を更新するため、誤差は、ニューラルネットワーク内を逆方向に伝播するにつれて減衰する。例えば、中間層３２１におけるノード３２１ａ〜３２１ｃの出力誤差値は、ノード２３ａ〜２３ｃに入力される出力誤差値４７よりも小さい。この結果、重み計数３５１の更新量は、重み計数３５３の更新量よりも小さくなる。つまり、従来の誤差逆伝播方法では、ニューラルネットワークにおいて入力層に近い下位層の学習が十分に行われない可能性がある。
【０１２４】
図１１に示すように、スモールネットワーク３Ｂにおいて、出力層２３から中間層３２１までの信号経路の距離は、追加出力層２４から中間層３２１までの信号経路の距離よりも長い。従って、追加誤差値５５が区間Ａを逆方向に伝播する場合において、追加誤差値５５の減衰量は、調整誤差値４５及び出力誤差値４７の減衰量よりも小さい。更新部１０９は、減衰の少ない追加誤差値５５を使用することにより、重み計数３５１を効率よく更新することができる。つまり、機械学習装置１００は、スモールネットワーク３Ｂの下位層における学習を効率よく実行することができる。機械学習装置１００は、従来よりも少ない量の学習データで、スモールネットワーク３Ｂの学習を精度良く実行することができる。
【０１２５】
学習率βは、学習率α及びεよりも小さくなるように設定される理由を説明する。上述のように、追加誤差値５５を用いて重み計数３５１を更新することにより、スモールネットワーク３Ｂの下位層における学習を効率よく実行することができる。しかし、区間Ａを逆方向に伝播する誤差のうち、追加誤差値５５の成分が、調整誤差値４５及び出力誤差値４７の成分よりも大きい。従って、学習率βを学習率α及びεよりも大きくした場合、重み計数３５１を更新する際に、追加誤差値５５の成分が過大に評価され、学習の精度が逆に低下する可能性がある。そこで、学習率βは、学習率α及びεよりも小さくなるように設定することにより、重み計数３５１の更新時において、追加誤差値５５の成分を適切に評価することを抑制することが可能となる。
【０１２６】
（スモールネットワーク３Ｃの出力）
更新部１０９が重み計数３５１の更新を終了することにより、図４に示す処理が終了する。機械学習装置１００は、新たな学習データ４を用いて、図４に示す処理を繰り返すことにより、スモールネットワーク３Ｂの学習を実行する。
【０１２７】
スモールネットワーク３Ｂの学習が完了した場合、更新部１０９は、中間層３２１が有するノード３２１ａ〜３２１ｃと追加出力層３４が有する追加出力ノード３４ａ〜３４ｃとの接続を解除して、スモールネットワーク３Ｂから追加出力層３４を切り離す。更新部１０９は、スモールネットワーク３Ｂから追加出力層３４を切り離したニューラルネットワークを、スモールネットワーク３Ｃとして出力する。スモールネットワーク３Ｃは、イヌ、ネコ及びその他の物体を識別するための識別器として使用される。
【０１２８】
以上説明したように、機械学習装置１００は、学習済みのラージネットワーク２Ｃに学習データ４を入力して、出力層２３の各ノードから通常出力値４３を取得し、追加出力層２４の各ノードから追加出力値５３を取得する。機械学習装置１００は、通常出力値４３を調整して調整通常出力値４４を生成する。調整誤差値４５が、通常出力値４３から調整通常出力値４４を減算することにより算出され、出力誤差値４７が、通常出力値４３から正解値４６を減算することにより算出される。機械学習装置１００は、追加出力値５３を調整して追加調整値５４を生成し、追加出力値５３から追加調整値５４を減算して追加誤差値５５を算出する。機械学習装置１００は、スモールネットワーク３Ｂの出力層３３の各ノードに、調整誤差値４５及び出力誤差値４７を入力し、追加出力層３４の各ノードに追加誤差値５５を入力する。機械学習装置１００は、スモールネットワーク３Ｂに入力された誤差値を用いて、誤差逆伝播法によりスモールネットワーク３Ｂの重み計数を更新する。
【０１２９】
これにより、スモールネットワーク３Ｂの重み計数を更新する際に、スモールネットワーク３Ｂの下位層に適切な大きさの誤差を伝播させることができるため、スモールネットワーク３Ｂの学習を効率よく行うことができる。機械学習装置１００は、スモールネットワーク３Ｂの学習を行う際に、学習データ４の量を削減することが可能となる。
【０１３０】
｛変形例｝
上記実施の形態において、ラージネットワーク２Ａ及びスモールネットワーク３Ａの層の数が４である場合を例に説明したが、これに限られない。ラージネットワーク２Ａ及びスモールネットワーク３Ａの層の数は、４以上であればよい。追加出力層生成部１０２は、ラージネットワーク２Ａに追加出力層３４を追加する場合、入力層２１から数えて２番目の中間層から（ｍ−２）番目の中間層までの少なくとも１つの中間層に追加出力層３４を接続すればよい。ここで、ｍは、層の数であり、４以上の自然数である。
【０１３１】
つまり、追加出力層生成部１０２は、追加出力層３４を入力層３１に接続しなければよい。この理由は、追加出力層３４をスモールネットワーク３Ａの入力層３１に接続した場合、追加誤差値５５を用いて、スモールネットワーク３Ａの信号経路の重み計数を更新することができないためである。
【０１３２】
また、追加出力層生成部１０２は、追加出力層３４を（ｍ−１）番目の層に接続しなければよい。この理由は、追加出力層３４をスモールネットワーク３Ａの（ｍ−１）番目の層に接続した場合、スモールネットワーク３Ｂにおける追加誤差値５５の伝播経路が、調整誤差値４５及び出力誤差値４７の伝播経路と実質的に同じになるためである。この結果、調整誤差値４５、出力誤差値４７及び追加誤差値５５の減衰量が同じとなり、スモールネットワーク３Ｂの下位層における学習を効率よく実行することができない。
【０１３３】
上記実施の形態において、更新部１０９が、出力層３３が有する出力ノード２３ａ〜２３ｃに出力誤差値４７を入力する例を説明したが、これに限られない。更新部１０９は、出力ノード２３ａ〜２３ｃに調整誤差値４５のみを入力してもよい。
【０１３４】
上記実施の形態において、追加出力層生成部１０２が、１つの追加出力層３４をラージネットワーク２Ａに追加する例を説明したが、これに限られない。追加出力層生成部１０２は、２つ以上の追加出力層２４をラージネットワーク２Ａに追加してもよい。例えば、ラージネットワーク２Ａにおける層の数が１００である場合、追加出力層生成部１０２は、追加出力層２４を接続する中間層を５つおきに選択してもよい。あるいは、追加出力層生成部１０２は、入力層２１から数えて（ｍ−１）番目の中間層を除く全ての中間層に、追加出力層３４を接続してもよい。
【０１３５】
この場合、追加出力層生成部１０８は、スモールネットワーク３Ａの中間層のうち、追加出力層２４が接続されたラージネットワーク２Ａの中間層に対応する中間層を特定し、特定した中間層に追加出力層３４を接続すればよい。各追加出力層２４における追加誤差値５５は、上記実施の形態と同様に算出される。また、更新部１０９は、各追加出力層２４の追加誤差値５５に基づく重み計数の更新量を算出し、これらの更新量を用いて重み計数を更新すればよい。
【０１３６】
また、上記実施の形態において、ラージネットワーク２Ａ及びスモールネットワーク３Ａが全結合層を形成している場合を例に説明したが、これに限られない。ラージネットワーク２Ａ及びスモールネットワーク３Ａの少なくとも一方が、畳み込み層を備えていてもよい。畳み込み層のノードに接続された信号経路の重み付け係数の更新については、基本的に上記実施の形態と同様である。畳み込み層のノードに接続された信号経路の重み付け係数を更新する場合、更新部１０９は、畳み込み層のノードに接続された信号経路のうち、畳み込みに関係しない重み計数を更新せずにゼロのままとすればよい。
【０１３７】
また、上記実施の形態における機械学習装置１００の各機能ブロック（各機能部）の処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施の形態の機械学習装置１００において、各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置（ＣＰＵ）により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ＲＯＭなどの記憶装置に格納されており、ＲＯＭにおいて、あるいはＲＡＭに読み出されて実行される。例えば、機械学習装置１００の構成を、図１３に示すような構成とすることにより、上記各実施形態の各機能ブロック（各機能部）の処理の一部または全部が実行されるものであっても良い。
【０１３８】
また、上記実施の形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【０１３９】
また、上記実施の形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０１４０】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、大容量ＤＶＤ、次世代ＤＶＤ、半導体メモリを挙げることができる。
【０１４１】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【０１４２】
また、文言「部」は、「サーキトリー（ｃｉｒｃｕｉｔｒｙ）」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【０１４３】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【符号の説明】
【０１４４】
１００  機械学習装置
１０１  ネットワーク取得部
１０２，１０８  追加出力層生成部
１０３  追加学習部
１０４  演算部
１０５  出力値調整部
１０６  出力誤差計算部
１０７  追加誤差計算部
１０９  更新部
【図１】
2017182320.tif 000012
【図２】
2017182320.tif 000013
【図３】
2017182320.tif 000014
【図４】
2017182320.tif 000015
【図５】
2017182320.tif 000016
【図６】
2017182320.tif 000017
【図７】
2017182320.tif 000018
【図８】
2017182320.tif 000019
【図９】
2017182320.tif 000020
【図１０】
2017182320.tif 000021
【図１１】
2017182320.tif 000022
【図１２】
2017182320.tif 000023
【図１３】
2017182320.tif 000024