(57)【要約】【課題】適切な規模のニューラルネットワークを作成することができる機械学習装置を提供することを課題とする。【解決手段】中間層選択部１２は、学習済みのニューラルネットワーク３Ａに含まれる中間層２２〜２５の中から、中間層２２及び２３を選択する。仮出力層追加部１３は、中間層２２と接続された仮出力層３２と、中間層２３と接続された仮出力層３３とをニューラルネットワーク３Ａに追加して、ニューラルネットワーク３Ｂを生成する。演算部１５は、ニューラルネットワーク３Ｂを用いた演算を実行し、仮出力層３２及び３３の各々から出力される仮出力値を取得する。削除判断部１６は、演算部１５により取得された仮出力値を用いて類似度を計算し、計算した類似度に基づいて中間層２２及び２３のうち、いずれか一方の中間層を削除するかことを決定する。再構成部１７は、ニューラルネットワーク３Ａからいずれか一方の中間層を削除する。【選択図】図１
2017182319.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つの中間層を備える学習済みのニューラルネットワークを取得する取得部と、
前記少なくとも２つの中間層の中から、第１中間層及び第２中間層を選択する中間層選択部と、
前記第１中間層が有するノードと接続された仮出力ノードを有する第１仮出力層と、前記第２中間層が有するノードと接続された仮出力ノードを有する第２仮出力層とを前記ニューラルネットワークに追加して、仮ネットワークを生成する仮出力層追加部と、
テストデータを前記仮ネットワークに入力して前記仮ネットワークを用いた演算を実行し、前記第１仮出力層が有する仮出力ノードから出力される第１仮出力値と、前記第２仮出力層が有する仮出力ノードから出力される第２仮出力値とを取得する演算部と、
前記第１仮出力値と前記第２仮出力値とを用いて前記第１中間層の機能が第２中間層の機能に類似する度合いを示す類似度を計算し、計算した類似度に基づいて前記１中間層を削除するか否かを判断する削除判断部と、
前記削除判断部が前記第１中間層を削除すると判断した場合、前記ニューラルネットワークから前記第１中間層を削除する再構成部と、
を備える機械学習装置。
【請求項２】
請求項１に記載の機械学習装置であって、
前記第１中間層は、前記第２中間層よりも前記ニューラルネットワークが備える入力層に近い位置に配置される機械学習装置。
【請求項３】
請求項１又は請求項２に記載の機械学習装置であって、
前記第１仮出力層が有する仮出力ノードの数は、前記第２仮出力層が有する仮出力ノードと同じである機械学習装置。
【請求項４】
請求項３に記載の機械学習装置であって、
前記第１仮出力層が有する仮出力ノードの数は、前記ニューラルネットワークにおける出力層が有する出力ノードの数と同じである機械学習装置。
【請求項５】
請求項１ないし請求項４のいずれかに記載の機械学習装置であって、
前記仮出力層追加部は、前記第２中間層が有するノードが前記ニューラルネットワークにおける出力層が有するノードと接続されている場合、前記第２仮出力層として、前記出力層を使用することを決定する機械学習装置。
【請求項６】
請求項１ないし請求項５のいずれかに記載の機械学習装置であって、さらに、
前記第１中間層が有するノードと前記第１仮出力層が有するノードとの間の信号経路に設定される重み係数と、前記第２中間層が有するノードと前記第２仮出力層が有するノードとの間の信号経路に設定される重み係数とを更新するための学習を実行する追加学習部、
を備える機械学習装置。
【請求項７】
請求項１ないし請求項６のいずれかに記載の機械学習装置であって、さらに、
前記再構成部は、前記第１中間層が前記ニューラルネットワークの入力層から数えてｋ（ｋは２以上ｍ−１以下の自然）番目の層である場合、（ｋ−１）番目の層が有するノードと（ｋ＋１）番目の層が有するノードとを新たに接続し、（ｋ−１）番目の層が有するノードと、（ｋ＋１）番目の層が有するノードの間の信号経路に設定される重み係数を更新するための学習を実行する機械学習装置。
【請求項８】
少なくとも２つの中間層を備える学習済みのニューラルネットワークを取得するステップと、
前記少なくとも２つの中間層の中から、第１中間層及び第２中間層を選択するステップと、
前記第１中間層が有するノードと接続された仮出力ノードを有する第１仮出力層と、前記第２中間層が有するノードと接続された仮出力ノードを有する第２仮出力層とを前記ニューラルネットワークに追加して、仮ネットワークを生成するステップと、
テストデータを前記仮ネットワークに入力して前記仮ネットワークを用いた演算を実行し、前記第１仮出力層が有する仮出力ノードから出力される第１仮出力値と、前記第２仮出力層が有する仮出力ノードから出力される第２仮出力値とを取得するステップと、
前記第１仮出力値と前記第２仮出力値とを用いて前記第１中間層の機能が第２中間層の機能に類似する度合いを示す類似度を計算し、計算した類似度に基づいて前記１中間層を削除するか否かを判断するステップと、
前記第１中間層を削除すると判断された場合、前記ニューラルネットワークから前記第１中間層を削除するステップと、
を備える機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークの学習を行う機械学習装置に関する。
【背景技術】
【０００２】
ニューラルネットワークは、カメラにより撮影された画像から人物などの所定の物体を検出する物体検出装置や、センサにより計測されたデータを解析する解析装置などに採用されている。例えば、ニューラルネットワークを物体検出装置に用いる場合、機械学習装置が、画像に含まれる所定の物体の特徴をニューラルネットワークに学習させる。学習を終了したニューラルネットワークをコンピュータなどに実装することにより、物体検出装置が作成される。
【０００３】
ニューラルネットワークは、その規模が大きくなるほど学習精度が高くなる傾向にある。しかし、ニューラルネットワークの規模が大きくなるにつれて、ニューラルネットワークの演算量が増大する。ニューラルネットワークを物体検出装置や、データ解析装置に適用するためには、ニューラルネットワークの演算量はできるだけ少ないことが望ましい。このため、高精度で、演算量の少ないニューラルネットネットワークを作成する技術の開発が望まれている。
【０００４】
非特許得文献１には、学習済みの大規模なニューラルネットワークの出力結果を利用して、小規模なニューラルネットワークの学習を行う技術が開示されている。小規模なニューラルネットワークの学習には、誤差逆伝播法（バックプロパゲーション）が用いられる。誤差逆伝播法は、教師あり学習のアルゴリズムである。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】”Distilling the Knowledge in a Neural Network”, [online], [平成28年2月9日検索], インターネット<URL: https://www.cs.toronto.edu/~hinton/absps/distillation.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ニューラルネットワークを物体検出装置や、データ解析装置などに使用する場合、ニューラルネットワークの規模を予め決定する必要がある。ニューラルネットワークの規模は、具体的には、ニューラルネットワークが有する層の数や、各層が有するノードの数により決定される。上述のように、ニューラルネットワークの規模を大きくすることにより、ニューラルネットワークの学習精度を向上させることができる。そのため、ニューラルネットワークの規模は、予め要求される学習精度に基づいて決定される。
【０００７】
しかし、要求される学習精度を実現するために、ニューラルネットワークの規模に余裕を持たせる場合がある。つまり、ニューラルネットワークの規模が、要求される学習精度に比べて過大に設定される。ニューラルネットワークの規模が過大である場合、学習済みのニューラルネットワークが、同じ計算を繰り返し行っている可能性がある。この場合、学習済みのニューラルネットワークを、要求される学習精度に応じた適切な規模にまで小さくすることにより、演算量を削減することが望ましい。しかし、学習済みのニューラルネットワークの規模を縮小する技術は開発されていない。
【０００８】
本発明の目的は、適切な規模のニューラルネットワークを作成することができる機械学習装置を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、請求項１記載の発明は、機械学習装置であって、少なくとも２つの中間層を備える学習済みのニューラルネットワークを取得する取得部と、前記少なくとも２つの中間層の中から、第１中間層及び第２中間層を選択する中間層選択部と、前記第１中間層が有するノードと接続された仮出力ノードを有する第１仮出力層と、前記第２中間層が有するノードと接続された仮出力ノードを有する第２仮出力層とを前記ニューラルネットワークに追加して、仮ネットワークを生成する仮出力層追加部と、テストデータを前記仮ネットワークに入力して前記仮ネットワークを用いた演算を実行し、前記第１仮出力層が有する仮出力ノードから出力される第１仮出力値と、前記第２仮出力層が有する仮出力ノードから出力される第２仮出力値とを取得する演算部と、前記第１仮出力値と前記第２仮出力値とを用いて前記第１中間層の機能が第２中間層の機能に類似する度合いを示す類似度を計算し、計算した類似度に基づいて前記１中間層を削除するか否かを判断する削除判断部と、前記削除判断部が前記第１中間層を削除すると判断した場合、前記ニューラルネットワークから前記第１中間層を削除する再構成部と、を備える。
【００１０】
請求項２記載の発明は、請求項１に記載の機械学習装置であって、前記第１中間層は、前記第２中間層よりも前記ニューラルネットワークが備える入力層に近い位置に配置される。
【００１１】
請求項３記載の発明は、請求項１又は請求項２に記載の機械学習装置であって、前記第１仮出力層が有する仮出力ノードの数は、前記第２仮出力層が有する仮出力ノードと同じである。
【００１２】
請求項４記載の発明は、請求項３に記載の機械学習装置であって、前記第１仮出力層が有する仮出力ノードの数は、前記ニューラルネットワークにおける出力層が有する出力ノードの数と同じである。
【００１３】
請求項５記載の発明は、請求項１ないし請求項４のいずれかに記載の機械学習装置であって、前記仮出力層追加部は、前記第２中間層が有するノードが前記ニューラルネットワークにおける出力層が有するノードと接続されている場合、前記第２仮出力層として、前記出力層を使用することを決定する。
【００１４】
請求項６記載の発明は、請求項１ないし請求項５のいずれかに記載の機械学習装置であって、さらに、前記第１中間層が有するノードと前記第１仮出力層が有するノードとの間の信号経路に設定される重み係数と、前記第２中間層が有するノードと前記第２仮出力層が有するノードとの間の信号経路に設定される重み係数とを更新するための学習を実行する追加学習部、を備える。
【００１５】
請求項７記載の発明は、請求項１ないし請求項６のいずれかに記載の機械学習装置であって、さらに、前記再構成部は、前記第１中間層が前記ニューラルネットワークの入力層から数えてｋ（ｋは２以上ｍ−１以下の自然）番目の層である場合、（ｋ−１）番目の層が有するノードと（ｋ＋１）番目の層が有するノードとを新たに接続し、（ｋ−１）番目の層が有するノードと、（ｋ＋１）番目の層が有するノードの間の信号経路に設定される重み係数を更新するための学習を実行する。
【００１６】
請求項８記載の発明は、機械学習方法であって、少なくとも２つの中間層を備える学習済みのニューラルネットワークを取得するステップと、前記少なくとも２つの中間層の中から、第１中間層及び第２中間層を選択するステップと、前記第１中間層が有するノードと接続された仮出力ノードを有する第１仮出力層と、前記第２中間層が有するノードと接続された仮出力ノードを有する第２仮出力層とを前記ニューラルネットワークに追加して、仮ネットワークを生成するステップと、テストデータを前記仮ネットワークに入力して前記仮ネットワークを用いた演算を実行し、前記第１仮出力層が有する仮出力ノードから出力される第１仮出力値と、前記第２仮出力層が有する仮出力ノードから出力される第２仮出力値とを取得するステップと、前記第１仮出力値と前記第２仮出力値とを用いて前記第１中間層の機能が第２中間層の機能に類似する度合いを示す類似度を計算し、計算した類似度に基づいて前記１中間層を削除するか否かを判断するステップと、前記第１中間層を削除すると判断された場合、前記ニューラルネットワークから前記第１中間層を削除するステップと、を備える。
【発明の効果】
【００１７】
本発明に係る機械学習装置は、学習済みのニューラルネットワークを取得する。中間層選択部は、取得したニューラルネットワークに含まれる２つの中間層を選択する。仮出力層追加部は、選択した２つの中間層の各々に接続される仮出力層をニューラルネットワークに追加して、仮ネットワークを生成する。仮ネットワークを用いた演算により、仮出力値が、仮出力層から出力される。削除判断部は、仮出力値に基づいて２つの中間層の類似度を算出し、算出した類似度に基づいて２つの中間層のうちいずれか一方の中間層を削除することができるか否かを判断する。再構成部は、いずれか一方の中間層を削除できると判断された場合、ニューラルネットワークからいずれか一方の中間層を削除する。これにより、機械学習装置は、要求される学習精度に応じた適切な規模のニューラルネットワークを生成することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係る機械学習装置の構成を示す機能ブロック図である。
【図２】図１に示す機械学習装置に入力されるニューラルネットワークの構成の一例を示す図である。
【図３】図１に示す機械学習装置の動作を示すフローチャートである。
【図４】図１に示す中間層選択部により選択された２つの中間層に接続される仮出力層を示す図である。
【図５】図２に示すニューラルネットワークから中間層を削除したネットワークを示す図である。
【図６】図５に示すニューラルネットワークに追加された仮出力層を示す図である。
【図７】図５に示すニューラルネットワークから中間層を削除したネットワークを示す図である。
【図８】図１に示す機械学習装置の変形例の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２０】
｛１．機械学習装置１００の概略｝
図１は、本発明の実施の形態に係る機械学習装置１００の構成を示す機能ブロック図である。図１に示すように、機械学習装置１００は、学習済みのニューラルネットワーク３Ａを入力する。機械学習装置１００は、ニューラルネットワーク３Ａが有する中間層のうち、削除することが可能な中間層を特定する。機械学習装置１００は、ニューラルネットワーク３Ａから特定した中間層を削除したニューラルネットワークを出力する。
【００２１】
図２は、機械学習装置１００に入力されるニューラルネットワーク３Ａの構成の一例を示す図である。図２に示すように、ニューラルネットワーク３Ａは、６層のパーセプトロンであり、入力層２１と、中間層２２〜２５と、出力層２６とを備える。入力層２１は、入力ノード２１ａ〜２１ｄを備える。中間層２２は、ノード２２ａ〜２２ｄを備える。中間層２３は、ノード２３ａ〜２３ｄを備える。中間層２４は、ノード２４ａ〜２４ｄを備える。中間層２５は、ノード２５ａ〜２５ｄを備える。出力層２６は、出力ノード２６ａ〜２６ｃを備える。出力ノード２６ａ〜２６ｃは、通常出力値４６ａ〜４６ｃを出力する。以下、通常出力値４６ａ〜４６ｃを総称する場合、通常出力値４６と記載する。
【００２２】
ニューラルネットワーク３Ａは、上述のように学習済みであり、例えば、カメラにより撮影された画像から、複数種類の物体を検出するために用いられる。複数種類の物体は、例えば、イヌ、ネコ及びその他の物体である。ニューラルネットワーク３Ａの学習アルゴリズムは特に限定されない。ニューラルネットワーク３Ａの学習において、転移学習を用いてもよい。
【００２３】
機械学習装置１００は、図２に示すニューラルネットワーク３Ａが入力された場合、中間層２２〜２５から２つの中間層を選択する。機械学習装置１００は、選択した２つの中間層の類似度に基づいて、選択した２つの中間層のうちいずれか一方を削除することができるか否かを判断する。類似度の算出方法については、後述する。
【００２４】
例えば、機械学習装置１００は、ニューラルネットワーク３Ａにおいて中間層２２及び２３を選択し、中間層２２及び２３の類似度を算出する。機械学習装置１００は、算出した類似度に基づいて、中間層２２及び２３のうち中間層２２を削除することを決定する。機械学習装置１００は、ニューラルネットワーク３Ａから中間層２２を削除したネットワークを、ニューラルネットワーク３Ｄとして生成する。ニューラルネットワーク３Ｄは、ニューラルネットワーク３Ａと同等の学習精度を有し、かつ、ニューラルネットワーク３Ａの規模よりも小さい。このように、機械学習装置１００は、求められる学習精度に応じた適切な規模のニューラルネットワーク３Ｄを作成することができる。
【００２５】
｛２．機械学習装置１００の構成｝
図１に示すように、機械学習装置１００は、ネットワーク取得部１１と、中間層選択部１２と、仮出力層追加部１３と、追加学習部１４と、演算部１５と、削除判断部１６と、再構成部１７と、終了判断部１８とを備える。
【００２６】
ネットワーク取得部１１は、学習済みのニューラルネットワーク３Ａを取得する。ネットワーク取得部１１は、ＬＡＮ（Local Area Network）を介して他のコンピュータからニューラルネットワーク３Ａを受信してもよいし、Ｂｌｕ−ｒａｙディスクなどの不揮発性記録媒体から取得してもよい。あるいは、ネットワーク取得部１１は、学習済みのニューラルネットワーク３Ａを自ら生成してもよい。
【００２７】
中間層選択部１２は、ネットワーク取得部１１により取得されたニューラルネットワーク３Ａに含まれる中間層２２〜２５の中から、２つの中間層を選択する。
【００２８】
仮出力層追加部１３は、選択された２つの中間層の各々と接続される仮出力層を、ニューラルネットワーク３Ａに追加する。仮出力層追加部１３は、ニューラルネットワーク３Ａに仮出力層を追加したネットワークを、ニューラルネットワーク３Ｂとして出力する。例えば、中間層選択部１２が中間層２２及び２３を選択した場合、仮出力層追加部１３は、中間層２２が有する各ノードと接続されたノードを有する仮出力層と、中間層２３が有する各ノードと接続されたノードを有する仮出力層とを、ニューラルネットワーク３Ａに追加する。
【００２９】
追加学習部１４は、学習データ４を用いて、ニューラルネットワーク３Ｂの追加学習を行う。学習データ４は、例えば、イヌ、ネコ及びその他の物体のいずれか１つが撮影された画像である。追加学習部１４は、ニューラルネットワーク３Ｂにおける信号経路のうち、仮出力層の追加により新たに設けられた信号経路の重み計数を更新する。重み計数の更新には、誤差逆伝播法（バックプロパゲーション）が用いられる。追加学習部１４は、ニューラルネットワーク３Ｂにおける信号経路の重み計数を更新したネットワークを、ニューラルネットワーク３Ｃとして出力する。
【００３０】
演算部１５は、ニューラルネットワーク３Ｃにテストデータ５を入力して、ニューラルネットワーク３Ｃを用いた演算を実行する。テストデータ５は、学習データ４と同様に、イヌ、ネコ及びその他の物体のいずれかが撮影された画像である。ニューラルネットワーク３Ｃは、演算結果として、出力層２６が有する出力ノード２６ａ〜２６ｃから通常出力値４６を出力する。また、ニューラルネットワーク３Ｃは、一方の仮出力層から仮出力値を出力し、他方の仮出力層から仮出力値を出力する。
【００３１】
削除判断部１６は、仮出力値に基づいて、中間層選択部１２により選択された２つの中間層の類似度を算出する。類似度の算出方法については、後述する。削除判断部１６は、算出した類似度に基づいて、中間層選択部１２により選択された２つの中間層のうちいずれか一方を削除することができるか否かを判断する。
【００３２】
再構成部１７は、削除判断部１６が２つの中間層のうちいずれか一方の中間層を削除することができると判断した場合、いずれか一方の中間層をニューラルネットワーク３Ａから削除することにより、ニューラルネットワーク３Ｄを生成する。再構成部１７は、生成したニューラルネットワーク３Ｄの再学習を行う。ニューラルネットワーク３Ｄの再学習において、再構成部１７は、ニューラルネットワーク３Ａの学習に用いられたアルゴリズムを使用する。
【００３３】
終了判断部１８は、学習済みのニューラルネットワーク３Ｄから中間層をさらに削除するか否かを判断する。具体的には、終了判断部１８は、ニューラルネットワーク３Ａが有する中間層の数から、ニューラルネットワーク３Ｄが有する中間層の数を減算することにより、ニューラルネットワーク３Ａから削除された中間層の数を決定する。
【００３４】
削除された中間層の数が予め設定された終了基準値に達していない場合、終了判断部１８は、ニューラルネットワーク３Ｄから中間層をさらに削除することができると判断する。終了判断部１８は、ニューラルネットワーク３Ｄを中間層選択部１２及び仮出力層追加部１３に出力する。これにより、機械学習装置１００は、ニューラルネットワーク３Ｄから中間層を削除することができるか否かを判断する処理を繰り返す。
【００３５】
削除された中間層の数が終了基準値に達している場合、終了判断部１８は、ニューラルネットワーク３Ｄから中間層をさらに削除することができないと判断する。この場合、終了判断部１８は、ニューラルネットワーク３Ｄを機械学習装置１００の外部に出力する。機械学習装置１００の外部に出力されたニューラルネットワーク３Ｄは、イヌ、ネコ及びその他の物体を識別する物体検出装置（図示省略）に用いられる。
【００３６】
｛３．機械学習装置１００の動作｝
以下、図２に示すニューラルネットワーク３Ａが機械学習装置１００に入力される場合を例にして、機械学習装置１００の動作について詳しく説明する。図３は、機械学習装置１００の動作を示すフローチャートである。
【００３７】
｛３．１．中間層２２の削除｝
最初に、図２に示すニューラルネットワーク３Ａから中間層２２を削除する場合を例として、機械学習装置１００の動作を説明する。
【００３８】
｛３．１．１．ニューラルネットワーク３Ａの取得｝
図３に示すように、ネットワーク取得部１１は、機械学習装置１００に入力されるニューラルネットワーク３Ａを取得する（ステップＳ１）。
【００３９】
ニューラルネットワーク３Ａは、各層に含まれるノードを定義するデータと、２つのノードを接続する信号経路の重み計数とを含むデータである。信号経路は、２つの層が互いに隣接している場合において、一方の層が有する１つのノードと、他方の層が有するノードとを接続する。ニューラルネットワーク３Ａが学習済みであるため、ニューラルネットワーク３Ａに含まれる重み計数は、イヌ、ネコ及びその他の物体を識別するために既に調整されている。
【００４０】
図２に示すニューラルネットワーク３Ａは、６層のパーセプトロンであるが、ニューラルネットワーク３Ａの構成は、これに限定されない。ニューラルネットワーク３Ａは、少なくとも２つの中間層を備えていればよい。つまり、ニューラルネットワーク３Ａが備える層の数は、４以上であればよい。ニューラルネットワーク３Ａの各層が備えるノードの数は、特に限定されない。
【００４１】
図２に示すニューラルネットワーク３Ａにおいて、重み計数が設定される信号経路の「区間」を定義する。ここで、「区間」は、ニューラルネットワーク３Ａにおける信号経路の位置を示すための便宜的な呼称である。具体的には、区間Ａ１は、入力層２１から中間層２２までの区間である。区間Ｂ１は、中間層２２から中間層２３までの区間である。区間Ｃ１は、中間層２３から中間層２４までの区間である。区間Ｄ１は、中間層２４から中間層２５までの区間である。区間Ｅ１は、中間層２５から出力層２６までの区間である。次に、ニューラルネットワーク３Ａにおける方向を定義する。ニューラルネットワーク３Ａに含まれる任意の中間層に着目する、着目した中間層を基準にして、入力層２１が位置する方向を「下方向」と定義し、出力層２６が位置する方向を「上方向」と定義する。
【００４２】
｛３．１．２．中間層の選択｝
中間層選択部１２は、ニューラルネットワーク３Ａが有する中間層２２〜２５の中から、２つの中間層を選択する（ステップＳ２）。例えば、中間層選択部１２は、中間層２２及び２３を選択する
中間層選択部１２は、互いに隣接する２つの中間層を選択することが望ましい。以下、その理由を説明する。上述のように、機械学習装置１００は、ニューラルネットワーク３Ａが有する中間層２２〜２５の中で、類似する機能を有する２つの中間層を特定することができた場合、この２つの中間層のいずれか一方をニューラルネットワーク３Ａから削除する。
【００４３】
ニューラルネットワーク３Ａにおいて、２つの中間層の距離が近いほど、この２つの中間層の機能が近づくと考えられる。ニューラルネットワーク３Ａの用途によって、各中間層の機能も変化するが、入力層２１に近い中間層は、抽象的な概念を分類する機能を有し、出力層２６に近い中間層は、具体的な概念を分類する機能を有すると理解することができる。
【００４４】
例えば、ニューラルネットワーク３Ａが、撮影された画像から、イヌ、ネコ及びその他の物体のいずれかを検出する機能を有する場合を考える。この場合、入力層２１に近い中間層は、画像中の物体が動物であるか否かを判別し、出力層２６に近い中間層は、画像中の動物がイヌであるかネコであるかを判別すると解釈することができる。
【００４５】
従って、ニューラルネットワーク３Ａにおいて、隣接する２つの中間層は、互いに類似する機能を有していると予想される。このため、中間層選択部１２は、隣接する２つの中間層を選択することが望ましい。ただし、選択される２つの中間層は、互いに隣接していなくてもよい。
【００４６】
｛３．１．３．仮出力層の追加｝
中間層選択部１２は、ステップＳ２において選択した２つの中間層を特定する中間層選択データを、仮出力層追加部１３に出力する。仮出力層追加部１３は、中間層選択データに基づいて、ニューラルネットワーク３Ａに２つの仮出力層を追加する（ステップＳ３）。
【００４７】
図４は、仮出力層を備えるニューラルネットワーク３Ｂを示す図である。図４に示すニューラルネットワーク３Ｂは、図２に示すニューラルネットワーク３Ａに仮出力層３２及び３３を追加することにより生成される。図４において、中間層２４及び２５と出力層２６の表示を省略している。
【００４８】
以下、ステップＳ２（図３参照）において、中間層２２及び２３が選択された場合を例にして、仮出力層の追加（ステップＳ３）について詳しく説明する。最初に、仮出力層追加部１３は、選択された中間層２２及び２３の中で、上方向に位置する中間層２３を特定する。仮出力層追加部１３は、特定した中間層２３に対応する仮出力層３３を、ニューラルネットワーク３Ａに追加する。
【００４９】
具体的には、仮出力層追加部１３は、仮出力ノード３３ａ〜３３ｃを有する仮出力層３３を生成する。仮出力層追加部１３は、仮出力ノード３３ａ〜３３ｃの各々を、中間層２３が有するノード２３ａ〜２３ｄと接続することにより、仮出力層３３をニューラルネットワーク３Ａに追加する。仮出力層３３が有する仮出力ノードの数は、出力層２６が有する出力ノードの数と同じとなるように設定される。この理由については、後述する。
【００５０】
仮出力層追加部１３は、仮出力層３３の追加に伴って、中間層２３と仮出力層３３との間の区間Ｇ１における各信号経路の重み計数の初期値を設定する。重み計数の初期値は、例えば、予め定められた分散の範囲内に収まるようにランダムに設定される。
【００５１】
次に、仮出力層追加部１３は、選択された中間層２２及び２３の中で、下方向に位置する中間層２２を特定する。仮出力層追加部１３は、特定した中間層２２に対応する仮出力層３２を、ニューラルネットワーク３Ａに追加する。
【００５２】
具体的には、仮出力層追加部１３は、仮出力ノード３２ａ〜３２ｃを有する仮出力層３２を生成する。仮出力層追加部１３は、仮出力ノード３２ａ〜３２ｃの各々を、中間層２２が有するノード２２ａ〜２２ｄと接続することにより、仮出力層３２をニューラルネットワーク３Ａに追加する。仮出力層３２が有する仮出力ノードの数は、出力層２６が有する出力ノードの数に一致する。
【００５３】
仮出力層追加部１３は、仮出力層３２の追加に伴って、中間層２２と仮出力層３２との間の区間Ｆ１における各信号経路の重み計数の初期値を設定する。重み計数の初期値は、予め定められた分散の範囲内に収まるようにランダムに設定される。
【００５４】
仮出力層３２が有する仮出力ノード３２ａ〜３２ｃの各々は、出力ノード２６ａ〜２６ｃのいずれか１つに対応する。仮出力層３３が有する仮出力ノード３３ａ〜３３ｃについても同様である。具体的には、仮出力ノード３２ａ及び３３ａは、出力ノード２６ａに対応する。仮出力ノード３２ｂ及び３３ｂは、出力ノード２６ｂに対応する。仮出力ノード３２ｃ及び３３ｃは、出力ノード２６ｃに対応する。
【００５５】
このようにして、仮出力層３２及び３３が、ニューラルネットワーク３Ａに追加される。仮出力層追加部１３は、ニューラルネットワーク３Ａに仮出力層３２及び３３を追加したネットワークを、ニューラルネットワーク３Ｂとして出力する。
【００５６】
｛３．１．４．追加学習｝
再び、図３を参照する。追加学習部１４は、仮出力層追加部１３が出力したニューラルネットワーク３Ｂを入力する。追加学習部１４は、ニューラルネットワーク３Ｂの追加学習を実行する（ステップＳ４）。
【００５７】
図４を参照しながら、追加学習（ステップＳ４）について詳しく説明する。追加学習部１４は、区間Ｆ１及びＧ１における信号経路の重み計数のみを更新する。区間Ａ１、Ｂ１、Ｃ１、Ｄ１及びＥ１における信号経路の重み計数は、更新されない。つまり、追加学習（ステップＳ４）は、ステップＳ２で選択された中間層と、選択された中間層と接続された仮出力層との間の区間における信号経路の重み計数を更新する処理である。
【００５８】
追加学習は、誤差逆伝播法を用いて実行される。具体的には、追加学習部１４は、学習データ４をニューラルネットワーク３Ｂに入力し、ニューラルネットワーク３Ｂを用いた演算を実行する。学習データ４は、例えば、イヌ、ネコ、及びその他物体のいずれかが撮影された画像データである。
【００５９】
追加学習部１４は、学習データ４を入力としたニューラルネットワーク３Ｂの演算により、仮出力値４２ａ〜４２ｃ及び４３ａ〜４３ｃを取得する。
【００６０】
仮出力値４２ａ〜４２ｃは、学習データ４又は後述するテストデータ５をニューラルネットワーク３Ｂに入力した場合において、ニューラルネットワーク３Ｂの演算により仮出力ノード３２ａ〜３２ｃから出力される出力値である。以下、仮出力値４２ａ〜４２ｃを総称する場合、仮出力値４２と記載する。仮出力値４３ａ〜４３ｃは、ニューラルネットワーク３Ｂの演算により仮出力ノード３３ａ〜３３ｃから出力される出力値である。以下、仮出力値４３ａ〜４３ｃを総称する場合、仮出力値４２と記載する。以下、学習データ４をニューラルネットワーク３Ｂに入力することにより得られる仮出力値４２及び４３を、追加学習用の仮出力値と記載する。
【００６１】
追加学習部１４は、正解値から追加学習用の仮出力値４２を減算することにより、仮出力ノード３２ａ〜３２ｃの各々に対応する誤差値を算出する。正解値（教師信号）は、学習データ４をニューラルネットワーク３Ｂに入力した場合において、出力ノード２６ａ〜２６ｃの各々が出力すべき値として予め決定された値である。
【００６２】
例えば、仮出力ノード３２ａに対応する誤差値は、出力ノード２６ａの正解値から、追加学習用の仮出力値４２ａを減算することにより得られる。追加学習部１４は、仮出力ノード３２ａ〜３２ｃの各々に対応する誤差値を仮出力ノード３２ａ〜３２ｃに入力し、入力した誤差値に基づいて区間Ｆ１における信号経路の重み計数を更新する。
【００６３】
追加学習部１４は、同様に、正解値から追加学習用の仮出力値４３を減算することにより、仮出力ノード３３ａ〜３３ｃの各々に対応する誤差値を算出する。追加学習部１４は、仮出力ノード３３ａ〜３３ｃの各々に対応する誤差値を仮出力ノード３３ａ〜３３ｃに入力し、入力した誤差値に基づいて区間Ｇ１における信号経路の重み計数を更新する。
【００６４】
区間Ｆ１及びＧ１における信号経路の重み計数のみが、追加学習において更新される理由を説明する。追加学習部１４は、追加学習（ステップＳ４）を実行する際に、仮出力ノード３２ａ〜３２ｃの各々に入力される誤差値に基づいて、区間Ａ１における信号経路の重み計数を更新することが可能である。また、追加学習部１４は、仮出力ノード３３ａ〜３３ｃの各々に入力される誤差値に基づいて、区間Ａ１及びＢ１の各々における信号経路の重み計数を更新することが可能である。
【００６５】
しかし、ニューラルネットワーク３Ａは、学習済みであるため、区間Ａ１及びＢ１の各々における信号経路の重み計数は、既に調整されている。追加学習（ステップＳ４）において、区間Ａ１及びＢ１の各々における信号経路の重み計数を更新した場合、ニューラルネットワーク３Ａの学習精度が低下する可能性がある。このため、追加学習部１４は、仮出力層３２及び３３の追加により設けられた区間Ｆ１及びＧ１における信号経路の重み計数のみを更新する。追加学習の完了したニューラルネットワーク３Ｂは、ニューラルネットワーク３Ｃとして演算部１５に出力される。
【００６６】
｛３．１．５．類似度の算出｝
演算部１５は、追加学習部１４が出力したニューラルネットワーク３Ｃを入力する。演算部１５は、テストデータ５をニューラルネットワーク３Ｃに入力し、ニューラルネットワーク３Ｃを用いた演算を実行する（ステップＳ５）。テストデータ５は、本実施の形態では、イヌ、ネコ及びその他物体のいずれかが撮影された画像データである。図４に示すように、ニューラルネットワーク３Ｃは、テストデータ５を用いた演算結果として、仮出力ノード３２ａ〜３２ｃから仮出力値４２を出力し、仮出力ノード３３ａ〜３３ｃから仮出力値４３を出力する。
【００６７】
削除判断部１６は、仮出力値４２及び４３を演算部１５から取得する。削除判断部１６は、取得した仮出力値４２及び４３を用いて、中間層２２と中間層２３との類似度を算出する（ステップＳ６）。類似度は、２つの確率密度分布の類似性を示すパラメータである、バタチャリヤ距離を計算することにより得られる。具体的には、類似度は、下記式（１）を用いて算出される。
【００６８】
【数１】
2017182319.tif 000003
【００６９】
式（１）において、Ｓは、類似度である。ｐ（ｉ）は、２つの仮出力層のうち、一方の仮出力層における仮出力ノードから出力される仮出力値の確率密度分布である。ｑ（ｉ）は、他方の仮出力層における仮出力ノードから出力される仮出力値の確率密度分布である。ｉは、各仮出力層におけるｉ番目のノードを示す。
【００７０】
図４に示す例の場合、ｐ（ｉ）を、仮出力値４２の確率密度分布に割り当て、ｑ（ｉ）を、仮出力値４３の確率密度分布に割り当てることができる。削除判断部１６は、仮出力値４２ａ〜４２ｃの各々の値を、０以上１以下の数値に正規化し、正規化された仮出力値４２ａ〜４２ｃを用いて確率密度分布ｐ（ｉ）を作成する。仮出力値４３の確率密度分布ｑ（ｉ）も、同様に作成される。
【００７１】
式（１）により算出される類似度は、０以上１以下の数値である。仮出力値４２と仮出力値４３との差が小さくなるにつれて、類似度は、１に近づく。１つのテストデータ５に対して、１つの類似度が算出される。機械学習装置１００は、ステップＳ５及びＳ６を繰り返すことにより、複数のテストデータ５の各々に対応する類似度を算出する。
【００７２】
なお、ステップＳ５において、ニューラルネットワーク３Ｃは、テストデータ５の演算結果として、通常出力値４６を出力する。しかし、中間層２２及び２３がステップＳ２において選択されている場合、通常出力値４６は、類似度の算出に用いられない。通常出力値４６が類似度の算出に用いられる例については、後述する。
【００７３】
｛３．１．６．削除判断｝
上述のように、演算部１５が、所定数のテストデータ５をニューラルネットワーク３Ｃに入力して、ニューラルネットワーク３Ｃを演算することにより、削除判断部１６は、所定数の類似度を算出する（ステップＳ５及びＳ６）。
【００７４】
所定数のテストデータ５を用いたニューラルネットワーク３Ｃの演算が終了した場合、削除判断部１６は、所定数の類似度の平均値を算出する。削除判断部１６は、算出した平均値を予め設定された類似基準値と比較することにより、中間層２２及び２３のいずれか一方を削除することができるか否かを判断する（ステップＳ７）。
【００７５】
上述のように、仮出力値４２と仮出力値４３との差が小さくなるにつれて、類似度は、１に近づく。類似度の平均値が１に近づくにつれて、ニューラルネットワーク３Ａにおける中間層２２及び２３の機能が類似していると判断される。
【００７６】
削除判断部１６は、類似度の平均値が類似基準値よりも大きい場合、中間層２２の機能が中間層２３の機能に類似していると判断する。この場合、削除判断部１６は、中間層２２及び２３のいずれか一方を削除することができると判断する（ステップＳ７においてＹｅｓ）。削除判断部１６は、中間層２２及び２３のうち、下方向に位置する中間層２２を削除することを決定する。中間層２２は、中間層２３よりも出力層２６から遠い位置にある。このため、中間層２２は、中間層２３よりも、出力層２６が有する出力ノード２６ａ〜２６ｃから出力される通常出力値４６に対して与える影響が小さい。このため、選択された２つの中間層２２及び２３のうち、下方向に位置する中間層２２が削除される。
【００７７】
ここで、機械学習装置１００が、２つの仮出力層から出力される仮出力値から類似度を算出し、算出した類似度を使用して２つの中間層が類似しているか否かを判断する理由を説明する。２つの中間層が類似しているか否かを判断する際に、一方の中間層からの出力値を、他方の中間層からの出力値と比較することが考えられる。しかし、一方の中間層からの出力値を、他方の中間層からの出力値と比較しても、２つの中間層が類似しているか否かを判断することは困難である。困難である理由として、２つの理由が挙げられる。
【００７８】
第１の理由は、選択した２つの中間層の各々が有するノード数が同じであるとは限らないためである。図４に示す例では、ステップＳ２で選択された中間層２２及び３３の各々が有する数が同じとなっている。しかし、選択した２つの中間層の各々が有するノード数が異なる場合、一方の中間層が有するノードからの出力値を、他方の中間層が有するノードからの出力値と単純に比較することができない。
【００７９】
第２の理由は、選択した２つの中間層の機能が類似しており、２つの中間層が有するノードの数が同じである場合であっても、一方の中間層が有するノードからの出力値が、他方の中間層が有するノードからの出力値と類似する値となるとは限らないためである。以下、詳しく説明する。
【００８０】
図４に示すニューラルネットワーク３Ａの学習時に誤差逆伝播法を用いる場合、区間Ａ１及びＢ１における信号経路の重み係数の初期値は、それぞれ所定の分散の範囲内に収まるようにランダムに設定される。また、区間Ａ１を下方向に伝播する誤差は、区間Ｂ１を下方向に伝播する誤差よりも小さいため、区間Ａ１における信号経路の重み係数の更新量は、区間Ｂ１における信号経路の重み係数の更新量と異なる。
【００８１】
この結果、中間層２２及び２３が類似する機能を有する場合であっても、区間Ａ１及びＢ１において対応関係にある２つの信号経路の重み係数は、同じとはならない。例えば、図４において、区間Ａ１におけるノード２１ｂとノード２２ａとの間の信号経路は、区間Ｂ１におけるノード２２ｂとノード２３ａとの信号経路に対応する。しかし、これら２つの信号経路の重み係数は、同じとはならない。ノード２２ａから出力される値と、ノード２２ａに対応するノード２３ａから出力される値とが一致したとしても、選択された中間層２２及び２３の機能が類似していると判断することはできない。
【００８２】
そこで、機械学習装置１００は、選択した２つの中間層の各々に仮出力層を接続し、２つの仮出力層からの出力値の類似度に基づいて、選択した２つの中間層の機能が類似するか否かを判断する。
【００８３】
一方の中間層に接続される仮出力層が有するノードの数を、他方の中間層に接続される仮出力層が有するノードの数と一致させる。また、２つの仮出力層が有する各々のノードを、出力層が有するノードに一対一に対応させる。これにより、一方の中間層に接続される仮出力層が有するノードと、他方の中間層に接続される仮出力層が有するノードとの対応関係を明確にすることができる。
【００８４】
一方の中間層と、一方の中間層に接続された仮出力層との間の信号経路における重み計数は、追加学習（ステップＳ４）により更新される。追加学習では、仮出力ノードに入力される誤差が、出力ノード２６ａ〜２６ｃから出力すべき正解値から算出される。従って、ニューラルネットワーク３Ｂにテストデータ５を入力した場合、仮出力層から出力される仮出力値は、一方の中間層が有する各ノードから出力される出力値と、出力ノードから出力される通常出力値４６との関係を示すパラメータに相当する。つまり、仮出力層が有するノードから出力される仮出力値を、仮出力層が接続された中間層の機能を反映したパラメータとして使用することが可能である。
【００８５】
具体的には、仮出力値４２は、中間層２２の出力値に基づいて算出されるため、中間層２２の機能を反映したパラメータである。仮出力値４３は、中間層２３の出力値に基づいて算出されるため、中間層２３の機能を反映したパラメータである。また、仮出力層３２が有する仮出力ノード２３ａ〜２３ｃと、仮出力層３３が有する仮出力ノード３３ａ〜３３ｃとの対応関係が明確となっているため、仮出力値４２ａ〜４２ｃと、仮出力値４３ａ〜４３ｃとの対応関係も明確である。従って、仮出力値４２の確率密度分布と、仮出力値４３の確率密度分布とから算出された類似度を用いることにより、選択された２つの中間層２２及び２３が類似しているか否かを判断することが可能となる。
【００８６】
｛３．１．７．ニューラルネットワーク３Ｃの再構成｝
再構成部１７は、削除判断部１６が２つの中間層のうち下方向に位置する中間層の削除を決定した場合、ニューラルネットワーク３Ａを再構成する(ステップＳ８)。
【００８７】
例えば、中間層２２及び２３のうち中間層２２の削除が決定された場合、再構成部１７は、ニューラルネットワーク３Ａにおいて、入力層２１が有するノードと中間層２２が有するノードとの接続を解除し、中間層２２が有するノードと中間層２３が有するノードとの接続を解除する。そして、再構成部１７は、入力層２１が有するノードと、中間層２３が有するノードとを接続することにより、新たな信号経路を設定する。これにより、再構成部１７は、ニューラルネットワーク３Ａから中間層２２を削除したネットワークとして、ニューラルネットワーク３Ｄを生成する。
【００８８】
図５は、ステップＳ８において生成されるニューラルネットワーク３Ｄの構成を示す図である。図５に示すように、ニューラルネットワーク３Ｄは、図２に示すニューラルネットワーク３Ａと異なり、中間層２２を備えていない。ニューラルネットワーク３Ｄにおいて、入力層２１が有する入力ノード２１ａ〜２１ｄが、中間層２３が有するノード２３ａ〜２３ｄと直接接続されている。以下、入力層２１と中間層２３との間の区間を、区間Ａ２と呼ぶ。
【００８９】
区間Ａ２における信号経路は、再構成部１７により新たに設定される。再構成部１７は、区間Ａ２における信号経路の重み係数の初期値を、予め定められた分散の範囲内に収まるように設定する。その後、再構成部１７は、ニューラルネットワーク３Ｄの再学習を実行する（ステップＳ９）。
【００９０】
再学習には、ニューラルネットワーク３Ａの学習の際に用いられた学習データが使用される。再学習のアルゴリズムは、ニューラルネットワーク３Ａの学習に用いられたアルゴリズムと同じである。再学習により、ニューラルネットワーク３Ｄにおいて、区間Ａ２における信号経路の重み係数だけでなく、区間Ｃ１、Ｄ１及びＥ１における信号経路の重み計数も更新される。これにより、ニューラルネットワーク３Ｄは、ニューラルネットワーク３Ａと同等の学習精度を有することが可能となる。
【００９１】
｛３．１．８．終了判断｝
再構成部１７によるニューラルネットワーク３Ｄの再学習が終了した場合、終了判断部１８は、中間層を削除する処理を終了するか否かを判断する（ステップＳ１０）。
【００９２】
終了判断部１８は、ニューラルネットワーク３Ａから削除した中間層の数が予め設定された終了基準値となった場合、中間層を削除する処理を終了すると判断する。削除された中間層の数は、ニューラルネットワーク３Ａが有する中間層の数からニューラルネットワーク３Ｂが有する中間層の数を削除することにより得られる。終了基準値を超える数の中間層がニューラルネットワーク３Ａから削除されている場合、ニューラルネットワーク３Ｄの規模が、機械学習装置１００に入力されるニューラルネットワーク３Ａの規模より大幅に小さくなる。この結果、ニューラルネットワーク３Ｄの学習精度に悪影響を与える可能性がある。終了判断部１８は、ニューラルネットワーク３Ｄの学習精度の低下を防ぐために、削除された中間層の数に基づいて、中間層の削除を継続するか否かを判断する。
【００９３】
現時点において、中間層２２のみがニューラルネットワーク３Ａから削除されており、削除された中間層の数は、１である。終了基準値が２に設定されている場合、削除された中間層の数は、終了基準値に達していない（ステップＳ１０においてＮｏ）。このため、終了判断部１８は、ニューラルネットワーク３Ａから中間層を削除する処理を継続する。具体的には、終了判断部１８は、再学習済みのニューラルネットワーク３Ｄを、中間層選択部１２及び仮出力層追加部１３に出力する。機械学習装置１００は、再びステップＳ２に戻り、ニューラルネットワーク３Ｄから中間層を削除する処理を実行する。
【００９４】
｛３．２．中間層２４の削除｝
｛３．２．１．中間層の選択及び仮出力層の追加｝
中間層選択部１２及び仮出力層追加部１３は、終了判断部１８からニューラルネットワーク３Ｄを取得する。中間層選択部１２は、ニューラルネットワーク３Ｄにおいて、前回の選択時において選択しなかった中間層の中から、２つの中間層を選択する（ステップＳ２）。具体的には、前回の選択時において、中間層２２及び２３が選択されている。中間層選択部１２は、ニューラルネットワーク３Ｄが有する中間層２３〜２５のうち、中間層２４及び２５を選択する。
【００９５】
仮出力層追加部１３は、中間層選択部１２の選択に基づいて、ニューラルネットワーク３Ｄに新たな仮出力層を追加する（ステップＳ３）。図６は、ニューラルネットワーク３Ｄに仮出力層を追加したネットワークであるニューラルネットワーク３Ｅを示す図である。図６に示すニューラルネットワーク３Ｅにおいて、入力層２１及び中間層２２の表示を省略している。
【００９６】
図６に示すように、仮出力層追加部１３は、中間層選択部１２により選択された中間層２４及び２５のうち、中間層２４のみに仮出力層３４を接続する。仮出力層追加部１３は、中間層２５に仮出力層を接続しない。中間層選択部１２により選択された中間層２５は、出力層２６に隣接している。このため、中間層２５に接続された仮出力層として、出力層２６を使用することが可能であると判断し、中間層２５に仮出力層を接続しない。
【００９７】
図６に示すように、仮出力層３４は、出力層２６が有するノードと同じ数のノードを備える。仮出力層３４は、仮出力ノード３４ａ〜３４ｃを有する。仮出力ノード３４ａは、出力ノード２６ａに対応する。仮出力ノード３４ｂは、出力ノード２６ｂに対応する。仮出力ノード３４ｃは、出力ノード２６ｃに対応する。
【００９８】
仮出力ノード３４ａ〜３４の各々は、中間層２４が有するノード２４ａ〜２４ｄと接続される。仮出力層追加部１３は、仮出力層３４の追加に伴って、中間層２４と仮出力層３４との間の区間Ｈ１における信号経路の重み計数の初期値を設定する。重み計数の初期値は、仮出力層３２及び３３の追加と同様に、予め設定された分散の範囲内に収まるように、ランダムに設定される。
【００９９】
｛３．２．２．追加学習｝
追加学習部１４は、仮出力層追加部１３から出力されたニューラルネットワーク３Ｅを入力する。追加学習部１４は、ニューラルネットワーク３Ｅの追加学習を実行する（ステップＳ４）。ニューラルネットワーク３Ｅの追加学習により、区間Ｈ１における信号経路の重み計数が更新される。ニューラルネットワーク３Ｅの追加学習では、区間Ａ１、Ｃ１、Ｄ１及びＥ１における信号経路の重み計数は更新されない。ニューラルネットワーク３Ｅの追加学習は、ニューラルネットワーク３Ｂの追加学習と同様であるため、その詳細な説明を省略する。
【０１００】
｛３．２．３．類似度の算出｝
演算部１５は、追加学習部１４から出力されたニューラルネットワーク３Ｅを入力する。演算部１５は、取得したニューラルネットワーク３Ｅにテストデータ５を入力して、ニューラルネットワーク３Ｅを用いた演算を実行する（ステップＳ５）。
【０１０１】
ニューラルネットワーク３Ｅは、演算結果として、仮出力ノード３４ａ〜３４ｃから仮出力値４４ａ〜４４ｃを出力し、出力ノード２６ａ〜２６ｃから通常出力値４６ａ〜４６ｃを出力する。以下、仮出力値４４ａ〜４４ｃを総称する場合、仮出力値４４と記載する。
【０１０２】
削除判断部１６は、演算部１５から仮出力値４４及び通常出力値４６を取得する。削除判断部１６は、取得した仮出力値４４及び通常出力値４６を用いて、中間層選択部１２により選択された中間層２４及び２５の類似度を算出する（ステップＳ６）。上記式（１）において、ｐ（ｉ）を仮出力値４４の確率密度分布に割り当て、ｑ（ｉ）を通常出力値４６の確率密度分布に割り当てることにより、中間層２４及び２５の類似度を算出することができる。
【０１０３】
演算部１５は、所定数のテストデータ５をニューラルネットワーク３Ｅに入力し、ニューラルネットワーク３Ｅを用いた演算を実行する（ステップＳ５）。削除判断部１６は、各テストデータ５に対応する仮出力値４４及び通常出力値４６を取得し、各テストデータ５に対応する類似度を算出する（ステップＳ６）。
【０１０４】
｛３．２．４．削除判断｝
所定数のテストデータ５を用いたニューラルネットワーク３Ｅの演算が終了した場合、削除判断部１６は、算出した複数の類似度の平均値を算出し、算出した類似度を削除基準値と比較する。ここで、中間層２４及び２５の類似度が削除基準値よりも大きいと仮定する。この場合、削除判断部１６は、中間層２４及び２５のいずれか一方を削除することができると判断する（ステップＳ７においてＹｅｓ）。削除判断部１６は、中間層２４及び２５のうち下方向に位置する中間層２４を削除することを決定する。
【０１０５】
｛３．２．５．ニューラルネットワークの再構成｝
再構成部１７は、削除判断部１６による中間層２４の削除の決定に基づいて、ニューラルネットワーク３Ｄを再構成する（ステップＳ８）。具体的には、再構成部１７は、ニューラルネットワーク３Ｄにおいて、中間層２３が有するノード２３ａ〜２３ｄと、中間層２４が有するノード２４ａ〜２４ｄとの接続を解除し、中間層２４が有するノード２４ａ〜２４ｄと、中間層２５が有するノード２５ａ〜２５ｄとの接続を解除する。再構成部１７は、中間層２３が有するノード２３ａ〜２３ｄの各々を、中間層２５が有するノード２５ａ〜２５ｄと接続する。これにより、中間層２４がニューラルネットワーク３Ｄから削除される。
【０１０６】
図７は、図６に示すニューラルネットワーク３Ｄから中間層２４を削除したネットワークであるニューラルネットワーク３Ｆを示す図である。図７に示すように、ニューラルネットワーク３Ｆは、図５に示すニューラルネットワーク３Ｄと異なり、中間層２４を備えていない。ニューラルネットワーク３Ｆにおいて、中間層２３が有するノード２３ａ〜２３ｄの各々が、中間層２５が有するノード２５ａ〜２５ｄと直接接続されている。以下、ニューラルネットワーク３Ｆにおける中間層２３と中間層２５との間の区間を、区間Ｃ２と呼ぶ。
【０１０７】
区間Ｃ２における信号経路は、再構成部１７により新たに設定される。再構成部１７は、区間Ｃ２における信号経路の重み係数の初期値を、予め定められた分散の範囲内に収まるように設定する。その後、再構成部１７は、ニューラルネットワーク３Ｆの再学習を実行する（ステップＳ９）。再学習により、ニューラルネットワーク３Ｆにおいて、区間Ｃ２における信号経路の重み係数だけでなく、区間Ａ２及びＥ１における信号経路の重み計数も更新される。ニューラルネットワーク３Ｆの再学習は、ニューラルネットワーク３Ｄの再学習と同様であるため、その詳細な説明を省略する。
【０１０８】
再構成部１７によるニューラルネットワーク３Ｆの再学習が終了した場合、終了判断部１８は、ニューラルネットワーク３Ａから中間層を削除する処理を終了するか否かを判断する（ステップＳ１０）。
【０１０９】
現時点において、中間層２２及び２４がニューラルネットワーク３Ａから削除されているため、削除された中間層の数は、２である。終了基準値が２に設定されている場合、削除された中間層の数が基準値に達している（ステップＳ１０においてＹｅｓ）。この場合、終了判断部１８は、ニューラルネットワーク３Ａから中間層を削除する処理を終了すべきであると判断する。機械学習装置１００は、再学習済みのニューラルネットワーク３Ｆを出力する。
【０１１０】
また、終了判断部１８は、ニューラルネットワーク３Ａが有する全ての中間層を選択した場合、ニューラルネットワーク３Ａから中間層を削除する処理を終了する。全ての中間層が選択された場合、機械学習装置１００は、削除可能な中間層を新たに特定することができないためである。
【０１１１】
このように、機械学習装置１００は、入力されたニューラルネットワーク３Ａにおいて２つの中間層を選択し、選択された２つの中間層の各々に仮出力層を接続する。機械学習装置１００は、選択された２つの中間層のうち、一方の中間層に接続された仮出力層から出力される仮出力値と、他方に接続された仮出力層から出力される仮出力値とに基づいて、選択された２つの中間層のうち一方の中間層を削除することができるか否かを判断する。機械学習装置は、削除することができると判断した場合、ニューラルネットワーク３Ａから、選択された２つの中間層のうち１つを削除したネットワークを生成する。これにより、機械学習装置１００は、ニューラルネットワーク３Ａと同等の学習精度を有し、ニューラルネットワーク３Ａよりも規模の小さいニューラルネットワーク３Ｅを作成することができる。つまり、機械学習装置１００は、予め要求された学習精度を有し、かつ、適切な規模のニューラルネットワークを作成することができる。
【０１１２】
｛変形例｝
上記実施の形態において、中間層選択部１２が、ニューラルネットワーク３Ｄ（図５参照）から中間層２４及び２５を選択する例を説明したが、これに限られない。中間層選択部１２は、ニューラルネットワーク３Ｄにおいて、中間層２３を再度選択してもよい。具体的には、中間層選択部１２は、ニューラルネットワーク３Ｄを入力した場合、中間層２３及び２４を選択してもよい。中間層２３及び２４の類似度が削除基準値を超えている場合、中間層２３が、ニューラルネットワーク３Ｄから削除される。
【０１１３】
上記実施の形態において、中間層選択部１２が、下方向に位置する中間層から順に選択する例を説明したが，これに限られない。中間層選択部１２が、中間層を選択する順序は特に限定されず、上方向に位置する中間層から順に選択してもよい。
【０１１４】
上記実施の形態において、終了判断部１８が、削除された中間層の数が終了基準値に達しているか否かに基づいて、ニューラルネットワーク３Ａから中間層を削除する処理を終了するか否かを判断する例を説明したが、これに限られない。終了判断部１８は、再構成部１７から出力されたニューラルネットワークにおける中間層の数が、予め設定された基準値に達した場合、中間層を削除する処理を終了すると判断してもよい。例えば、基準値が３に設定されている場合を考える。この場合、図６に示すニューラルネットワーク３Ｄが有する中間層の数が３であるため、終了判断部１８は、ニューラルネットワーク３Ｄから中間層２４を削除する処理を実行しない。終了判断部１８は、ニューラルネットワーク３Ｄを機械学習装置１００の外部に出力する。
【０１１５】
上記実施の形態において、削除判断部１６が、式（１）を用いて、２つの中間層の類似度を算出する例を説明したが、これに限られない。削除判断部１６は、仮出力値４２ａ〜４２ｃの各々の値を、０以上１以下の数値に正規化し、仮出力値４３ａ〜４３ｃの各々の値を同様に正規化する。そして、削除判断部は、対応する２つの仮出力値の差分絶対値を計算し、差分絶対値の合計を類似度として算出してもよい。この場合、類似度は、０に近づくほど、２つの中間層の機能が類似していることを示す。
【０１１６】
また、上記実施の形態における機械学習装置１００の各機能ブロック（各機能部）の処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施の形態の機械学習装置１００において、各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置（ＣＰＵ）により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ＲＯＭなどの記憶装置に格納されており、ＲＯＭにおいて、あるいはＲＡＭに読み出されて実行される。例えば、機械学習装置１００の構成を、図１３に示すような構成とすることにより、上記各実施形態の各機能ブロック（各機能部）の処理の一部または全部が実行されるものであっても良い。
【０１１７】
また、上記実施の形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【０１１８】
また、上記実施の形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０１１９】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、大容量ＤＶＤ、次世代ＤＶＤ、半導体メモリを挙げることができる。
【０１２０】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【０１２１】
また、文言「部」は、「サーキトリー（ｃｉｒｃｕｉｔｒｙ）」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【０１２２】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【符号の説明】
【０１２３】
１００  機械学習装置
１１  ネットワーク取得部
１２  中間層選択部
１３  仮出力層追加部
１４  追加学習部
１５  演算部
１６  削除判断部
１７  再構成部
１８  終了判断部
【図１】
2017182319.tif 000004
【図２】
2017182319.tif 000005
【図３】
2017182319.tif 000006
【図４】
2017182319.tif 000007
【図５】
2017182319.tif 000008
【図６】
2017182319.tif 000009
【図７】
2017182319.tif 000010
【図８】
2017182319.tif 000011