(57)【要約】      （修正有）【課題】識別精度の高いニューラルネットワークを学習するために、ニューラルネットワークの中間層を効率よく学習する。【解決手段】ニューラルネットワークを学習する学習手段と、学習されたニューラルネットワークの中間層の識別精度を評価する評価手段と、中間層の識別精度に対する評価結果に基づいて、中間層それぞれの重要度を決定する決定手段とを有する。学習手段は、中間層それぞれの重要度に基づいて、ニューラルネットワークを再学習する。【選択図】図８
2018205858.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを学習する学習手段と、
前記学習されたニューラルネットワークの少なくとも１つの中間層の識別精度を評価する評価手段と、
前記少なくとも１つの中間層の識別精度に対する評価結果に基づいて、前記少なくとも１つの中間層それぞれの重要度を決定する決定手段と、
を有し、
前記学習手段は、前記少なくとも１つの中間層それぞれの重要度に基づいて、前記ニューラルネットワークを再学習することを特徴とする学習装置。
【請求項２】
前記評価手段は、前記少なくとも１つの中間層が識別するクラスカテゴリの識別精度に基づいて、前記重要度を決定することを特徴とする請求項１に記載の学習装置。
【請求項３】
ユーザが選択するクラスカテゴリの情報を受け付ける受付手段を更に有し、
前記決定手段は、更に前記受け付けたクラスカテゴリの情報に基づいて、前記重要度を決定することを特徴とする請求項１または２に記載の学習装置。
【請求項４】
前記学習手段は、前記重要度に基づいて前記少なくとも１つの中間層のパラメータの更新の程度または更新の回数を異ならせて、前記ニューラルネットワークを再学習することを特徴とする請求項１から３のいずれか１項に記載の学習装置。
【請求項５】
前記学習手段は、前記重要度に基づいて前記ニューラルネットワークの構造を異ならせて、前記ニューラルネットワークを再学習することを特徴とする請求項１から４のいずれか１項に記載の学習装置。
【請求項６】
前記学習手段は、前記重要度に基づいて前記少なくとも１つの中間層のニューロンの数を異ならせて、前記ニューラルネットワークを再学習することを特徴とする請求項５に記載の学習装置。
【請求項７】
前記学習手段は、前記重要度に基づいて、前記少なくとも１つの中間層に対する学習データ、学習データの教師値、学習データのクラスカテゴリとの誤差のうちの少なくとも１つを変更することを特徴とする請求項１から６のいずれか１項に記載の学習装置。
【請求項８】
前記学習手段は、前記再学習されたニューラルネットワークの少なくとも１つの中間層および最終層の出力、前記少なくとも１つの中間層に対して決定された重要度、前記少なくとも１つの中間層の識別精度に対する評価結果のうちの１つを入力とする識別器を学習することを特徴とする請求項１から７のいずれか１項に記載の学習装置。
【請求項９】
対象のデータを入力する入力手段と、
請求項１から７のいずれか１項に記載の学習装置により再学習されたニューラルネットワークを用いて、前記入力されたデータを認識する認識手段と、
を有することを特徴とする認識装置。
【請求項１０】
対象のデータを入力する入力手段と、
請求項８に記載の学習装置により学習された識別器を用いて、前記入力されたデータを認識する認識手段と、
を有することを特徴とする認識装置。
【請求項１１】
ニューラルネットワークを学習するステップと、
前記学習されたニューラルネットワークの少なくとも１つの中間層の識別精度を評価するステップと、
前記少なくとも１つの中間層の識別精度に対する評価結果に基づいて、前記少なくとも１つの中間層それぞれの重要度を決定するステップと、
前記少なくとも１つの中間層それぞれの重要度に基づいて、前記ニューラルネットワークを再学習ステップと、
を有することを特徴とする学習方法。
【請求項１２】
コンピュータを、請求項１から８のいずれか１項に記載の学習装置として機能させるためのプログラム。
【請求項１３】
コンピュータを、請求項９または１０に記載の認識装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを学習する技術に関する。
【背景技術】
【０００２】
画像、音声などのデータの内容を学習し認識を行う技術が存在する。ある対象を認識する処理を、ここでは認識タスクと呼ぶ。画像中から人間の顔の領域を検出する顔認識タスクや、画像中にある物体（被写体）カテゴリ（猫、車、建物など）を判別する物体カテゴリ認識タスク、シーンのカテゴリ（都市、山間、海岸など）を判別するシーン種別認識タスクなど多様な認識タスクがある。
【０００３】
上記のような認識タスクを学習、実行する技術としては、ニューラルネットワーク（ＮＮ）の技術が知られている。深い（層の数が多い）多層ニューラルネットワークはＤｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（ＤＮＮ）と呼ばれる。特に、非特許文献１に開示されているように深い畳みこみニューラルネットワークをＤｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（ＤＣＮＮ）と呼ぶ。ＤＣＮＮは、性能が高いことで近年注目されている。ＤＣＮＮとは、各層において、前層からの出力結果に対して畳みこみ処理を行い次層に出力するようなネットワーク構造をもつものである。最終層は、認識結果を表す出力層となる。各層には、畳みこみ演算用のフィルタ（カーネル）が複数用意される。出力層に近い層では畳みこみによる結合ではなく、通常のニューラルネットワーク（ＮＮ）のような全結合（ｆｕｌｌｃｏｎｎｅｃｔ）の構造とするのが一般的である。また、非特許文献２に開示されているように、全結合層の代わりに畳みこみ演算層の出力結果を線形識別器に入力し識別を行う手法も注目されている。さらに、非特許文献３では、畳みこみ演算層の出力結果を入力画像サイズにリサイズして、各画素のクラスカテゴリを識別する技術が開示されている。
【０００４】
ＤＣＮＮの学習フェーズにおいては、畳みこみフィルタの値や全結合層の結合重み（両者をあわせて学習パラメータと呼ぶ）を、誤差逆伝搬法（バックプロパゲーション：ＢＰ）などの方法を用いて教師付きデータから学習する。認識フェーズでは、学習済ＤＣＮＮにデータを入力し、各層において学習済みの学習パラメータによってデータを順次処理し、出力層から認識結果を得るか、もしくは中間層の出力結果を集計し、識別器に入力することで認識結果を得る。
【０００５】
識別精度の高いニューラルネットワーク（ＮＮ）を学習するためには、中間層を効率よく学習することが必要になる。特に、非特許文献２や３のように、各中間層からの出力結果を識別器に特徴ベクトルとして入力して識別するような場合には、各中間層の出力結果の識別精度も重要になる。そこで、非特許文献４に開示されているＧｏｏｇｌｅＮｅｔでは、中間層の学習が促進されているように識別層からだけではなく、予め決められた中間層に対しても識別層を接続して誤差を逆伝播する。これにより、識別層から遠い入力層に近い中間層の勾配消失問題（Ｖａｎｉｓｈｉｎｇ  Ｇｒａｄｉｅｎｔ）を解決している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５‐１９７８２１号公報
【非特許文献】
【０００７】
【非特許文献１】Ｋｒｉｚｈｅｖｓｋｙ，Ａ．，Ｓｕｔｓｋｅｖｅｒ，Ｉ．，＆Ｈｉｎｔｏｎ，Ｇ．Ｅ．，“Ｉｍａｇｅｎｅｔ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｅｐ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ．”，Ｉｎ  Ａｄｖａｎｃｅｓ  ｉｎ  ｎｅｕｒａｌ  ｉｎｆｏｒｍａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍｓ（ｐｐ．１０９７−１１０５），２０１２．
【非特許文献２】Ｊｅｆｆ  Ｄｏｎａｈｕｅ，  Ｙａｎｇｑｉｎｇ  Ｊｉａ，  Ｊｕｄｙ  Ｈｏｆｆｍａｎ，  Ｔｒｅｖｏｒ  Ｄａｒｒｅｌｌ，“ＤｅＣＡＦ：Ａ  Ｄｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ａｃｔｉｖａｔｉｏｎ  Ｆｅａｔｕｒｅ  ｆｏｒ  Ｇｅｎｅｒｉｃ  Ｖｉｓｕａｌ  Ｒｅｃｏｇｎｉｔｉｏｎ”，ａｒｘｉｖ  ２０１３．
【非特許文献３】Ｂｈａｒａｔｈ  Ｈａｒｉｈａｒａｎ，  Ｐａｂｌｏ  Ａｒｂｅｌａｅｚ，  Ｒｏｓｓ  Ｇｉｒｓｈｉｃｋ，  Ｊｉｔｅｎｄｒａ  Ｍａｌｉｋ，“Ｈｙｐｅｒｃｏｌｕｍｎｓ  Ｆｏｒ  Ｏｂｊｅｃｔ  Ｓｅｇｍｅｎｔａｔｉｏｎ  ａｎｄ  Ｆｉｎｅ−ｇｒａｉｎｅｄ  Ｌｏｃａｌｉｚａｔｉｏｎ“，  ＩＥＥＥ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ  ２０１５．
【非特許文献４】Ｃｈｒｉｓｔｉａｎ  Ｓｚｅｇｅｄｙ，Ｗｅｉ  Ｌｉｕ，Ｙａｎｇｑｉｎｇ  Ｊｉａ，ｅｔ  ａｌ，“Ｇｏｉｎｇ  Ｄｅｅｐｅｒ  ｗｉｔｈ  Ｃｏｎｖｏｌｕｔｉｏｎｓ”，  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ  ２０１５．
【非特許文献５】Ｒｏｓｓ  Ｇｉｒｓｈｉｃｋ，“Ｆａｓｔ  Ｒ−ＣＮＮ”，Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｖｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ２０１５．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献４の技術では、識別層と接続される中間層は予め決められているために、学習されるニューラルネットワークの識別精度が不十分な場合がある。そこで、本発明は、識別精度の高いニューラルネットワークを学習することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、ニューラルネットワークを学習する学習手段と、前記学習されたニューラルネットワークの少なくとも１つの中間層の識別精度を評価する評価手段と、前記少なくとも１つの中間層の識別精度に対する評価結果に基づいて、前記少なくとも１つの中間層それぞれの重要度を決定する決定手段と、を有し、前記学習手段は、前記少なくとも１つの中間層それぞれの重要度に基づいて、前記ニューラルネットワークを再学習することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、識別精度の高いニューラルネットワークを学習することが可能になる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に係る情報処理システムを示すブロック図。
【図２】第１の実施形態において画像分類の例を示す図。
【図３】第１の実施形態に係る認識装置のハードウェア構成を示す図。
【図４】第１の実施形態に係るＤＣＮＮの構造を説明する図。
【図５】各実施形態における認識装置の機能構成を示すブロック図。
【図６】実施形態における学習装置の機能構成を示すブロック図。
【図７】各実施形態における認識装置における認識処理のフローチャート。
【図８】各実施形態における学習装置における学習処理のフローチャート。
【図９】第１の実施形態の学習工程におけるＮＮの最終層の一例を示す図。
【図１０】第１の実施形態の学習工程におけるＮＮの最終層の別の一例を示す図。
【図１１】第１の実施形態に係る中間層プローブ工程の処理を説明する図。
【図１２】第１の実施形態において各中間層の評価データの識別精度の例を示す図。
【図１３】第１の実施形態において各中間層の重要度の例を示す図。
【図１４】第１の実施形態においてクラスカテゴリごとに学習率を設定した例を示す図。
【図１５】第３の実施形態においてユーザがクラスカテゴリを選択する様子を示す図。
【図１６】第５の実施形態に係る再学習ＮＮ構造設定工程おけるＮＮの構成を示す図。
【図１７】第５の実施形態に係る再学習ＮＮ構造設定工程おけるＮＮの構成を示す図。
【発明を実施するための形態】
【００１２】
［第１の実施形態］
以下、本発明の第１の実施形態の詳細について図面を参照しつつ説明する。図１は、本実施形態に係る情報処理システムを示すブロック図である。本実施形態の情報処理システムでは、カメラ１０と認識装置２０とがネットワーク１５を介して接続されている。なお、認識装置２０とカメラ１０とは一体に構成されていてもよい。また、認識装置２０と、学習装置５０とがネットワーク１５を介して接続されている。なお、認識装置２０と学習装置５０とが一体に構成されていてもよい。
【００１３】
カメラ１０は、認識装置２０による画像認識処理の対象となる画像を撮影する。図１は、カメラ１０が、シーン３０における、ある撮影範囲（画角）の画像を撮影する様子を示している。この撮影される画像には、被写体として木（ｔｒｅｅ）３０ａ、自動車（ｃａｒ）３０ｂ、建物（ｂｕｉｌｄｉｎｇ）３０ｃ、空（ｓｋｙ）３０ｄ、道（ｒｏａｄ）３０ｅ、人体（ｂｏｄｙ）３０ｆ等が存在している。認識装置２０は、カメラ１０で撮影（撮像）されたシーン３０における各被写体が画像内に存在するかどうか（画像分類）を判定する。本実施形態においては、認識タスクが画像分類（ｃｌａｓｓｉｆｉｃａｔｉｏｎ）タスクである場合を例に説明するが、被写体の位置を検出し、被写体領域を抽出するタスクや他のタスクでもよい。他のタスクの場合の説明も後述する。
【００１４】
図２は、画像分類の例を示す図である。図２（ａ）は建物、図２（ｂ）は木（林・森）、図２（ｃ）は車、として画像分類される例を示している。
【００１５】
図３は、認識装置２０のハードウェア構成を示すブロック図である。ＣＰＵ４０１は、認識装置２０全体を制御する。ＣＰＵ４０１がＲＯＭ４０３やＨＤ４０４等に格納されたプログラムを実行することにより、後述する認識装置２０の機能構成及び認識装置２０に係るフローチャートの処理が実現される。ＲＡＭ４０２は、ＣＰＵ４０１がプログラムを展開して実行するワークエリアとして機能する記憶領域である。ＲＯＭ４０３は、ＣＰＵ４０１が実行するプログラム等を格納する記憶領域である。ＨＤ４０４は、ＣＰＵ４０１が処理を実行する際に要する各種のプログラム、閾値に関するデータ等を含む各種のデータを格納する記憶領域である。操作部４０５は、ユーザによる入力操作を受け付ける。表示部４０６は、認識装置２０の情報を表示する。ネットワークＩ／Ｆ４０７は、認識装置２０と、外部の機器とを接続する。なお、学習装置５０についても、同様のハードウェア構成を備えており、それにより、後述する学習装置５０の機能構成及びフローチャートの処理が実現される。
【００１６】
次に、認識装置２０において、ニューラルネットワークを用いて画像を識別する際の処理について説明する。本実施形態では、画像を識別するためのニューラルネットワークとして、Ｄｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  （ＤＣＮＮ）を用いるものとする。ＤＣＮＮは畳みこみ演算を多く行うニューラルネットワークであり、非特許文献１や非特許文献４に開示されているように畳みこみ（ｃｏｎｖｏｌｕｔｉｏｎ）と非線形処理（ｒｅｌｕやｍａｘｐｏｏｌｉｎｇなど）の組み合わせで特徴層が実現される。その後、全結合層（ｆｕｌｌｃｏｎｅｃｔ）を経て画像分類結果（各クラスに対する尤度）を出力する。
【００１７】
図４は本実施形態に係るＤＣＮＮの構造を説明する図であり、図４（ａ）には、その一例を示す。図４（ａ）では、入力画像Ｉｍｇ１０００を入力すると、ｃｏｎｖｏｌｕｔｉｏｎ１００１，ｒｅｌｕ１００２，ｃｏｎｖｏｌｕｔｉｏｎ１００３，ｒｅｌｕ１００４，ｐｏｏｌｉｎｇ１００５の各処理を実行する例を示している。それを所定回数繰り返した後、全結合層１０１１、ｒｅｌｕ１０１２、全結合層１０１３、ｒｅｌｕ１０１４、全結合層１０１５の各処理を行って、最終層の出力結果を出力している。図４では、畳みこみ（ｃｏｎｖｏｌｕｔｉｏｎ）を行う層をｃｏｎｖ，ｍａｘｐｏｏｌｉｎｇを行う層をｐｏｏｌ、全結合層をｆｃ、出力結果をＯｕｔｐｕｔ１０５０と示している。ｒｅｌｕとは非線形処理の１つで、前層のｃｏｎｖ層の出力結果のうち負の値を０とする処理である。非線形処理は、その他の方式の非線形処理でもよい。なお、入力画像Ｉｍｇ１０００はＤＣＮＮに入力する際に、所定画像サイズで画像をクロップもしくはリサイズするのが一般的である。
【００１８】
また、その他の例としては、非特許文献２に開示されているように、ニューラルネットワークの中間層の出力結果を特徴ベクトルとして、識別器に入力することで識別を行うこともできる。例えば、図４（ｂ）に示すように、中間層のｒｅｌｕ処理１００９の出力結果を特徴ベクトルｆｅａｔｕｒｅ１０１６として、Ｓｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）１０１７に入力することで識別を行う。ここでは、途中のｒｅｌｕ処理１００９の出力結果を利用したが、その前のｃｏｎｖｏｌｕｔｉｏｎ１００８や後のｐｏｏｌｉｎｇ処理１０１０の出力結果を利用してもよいし、他の中間層の出力結果、またそれらの組み合わせを利用してもよい。また、ここでは識別器としてＳＶＭを利用したが、他の識別器を用いてもよい。
【００１９】
また、図４（ｂ）の場合は、入力画像に対して識別結果を一意に出力するが、物体領域を識別する場合などで画素や小領域ごとに識別する必要がある場合には、図４（ｃ）のような構成を用いればよい。この構成では、所定の中間層の出力結果に対しリサイズ１０１８の処理を行う。リサイズとは、中間層の出力結果を入力画像サイズと同サイズにリサイズする処理である。リサイズ処理後に、注目している画素もしくは小領域における所定の中間層の出力結果１０１９を特徴ベクトルとして、先と同様にＳｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）１０２１に入力することで識別を行う。一般的にＤＣＮＮを用いる場合、中間層の出力結果は入力画像サイズに比べて小さくなるため、中間層の出力結果を入力画像サイズにリサイズする必要がある。リサイズ方法は最近傍法（Ｎｅａｒｅｓｔ−Ｎｅｉｇｈｂｏｒ−Ａｌｇｏｒｉｔｈｍ）などの補間手法であれば、どのような方法でも構わない。なお、ここでは、Ｓｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）を用いたが、それ以外の識別器でもよい。
【００２０】
さらに、非特許文献５に開示されているように物体領域候補をＲｅｇｉｏｎ−Ｏｆ−Ｉｎｔｅｒｅｓｔ（ＲＯＩ）として推定して、対象物体領域のＢｏｕｎｄｉｎｇＢｏｘおよびスコアを出力するニューラルネットワークを用いてもよい。その場合は図４（ｄ）の１０２２で示すように、途中の中間層の出力結果を所定の方法で推定したＲＯＩ領域内でｐｏｏｌｉｎｇ処理（ＲＯＩｐｏｏｌｉｎｇ）する。ＲＯＩｐｏｏｌｉｎｇした出力結果を複数の全結合層に接続して、ＢｏｕｎｄｉｎｇＢｏｘの位置、サイズおよびその対象物体のスコアなどを出力する。
【００２１】
図５は、各実施形態における認識装置２０の機能構成を示すブロック図であり、図５（ａ）が本実施形態に係るブロック図である。なお、図５では、認識装置２０の機能部を示す機能ブロックの他に、カメラ１０に相当する撮影部２００も示している。撮影部２００は、識別対象画像を取得する。本実施形態の認識装置２０は、入力部２０１、ＮＮ出力部２０２、ＮＮパラメータ保持部５１２を有している。なお、ＮＮパラメータ保持部５１２は、不揮発性の記憶装置として認識装置２０と接続された構成としてもよい。認識装置２０が有するこれらの各機能部の詳細については後述する。
【００２２】
図７は、各実施形態における認識装置２０における認識処理のフローチャートであり、図７（ａ）が本実施形態に係るフローチャートである。図７（ａ）において、入力工程Ｔ１１０では、入力部２０１が撮影部２００によって撮影された識別対象画像を入力データとして受信、入力する。そして、入力された識別対象画像はＮＮ出力部２０２に送信される。次に、出力工程Ｔ１２０では、ＮＮ出力部２０２は、受信した識別対象画像をＮＮパラメータ保持部５１２に保持されたニューラルネットワークを用いて識別をして、その識別結果を出力する。本実施形態における認識タスクは画像分類タスクであるため、画像のクラス名およびそのスコアが出力される。ここで、用いるニューラルネットワークの構造などについては後述する。また、ニューラルネットワークの他に、非特許文献２や日特許文献３のようにニューラルネットワークの出力結果を特徴ベクトルとして用いる識別手段を用いる場合もあるが、そのような認識装置２０の構成およびフローについては第２の実施形態で説明する。
【００２３】
次に、図７（ａ）に示したフローチャートの各処理のより具体的な流れを説明する。入力工程Ｔ１１０では、撮影部２００が図１で示したようなシーン３０を撮影した画像を、入力部２０１が識別対象画像１００として取得する。なお、識別対象画像は、図示しない外部装置に格納されている画像であってもよい。その場合、入力部２０１は外部装置から読み出された画像を識別対象画像として取得する。外部装置に格納されている画像は、例えば撮影部２００等で予め撮影された画像であってもよいし、ネットワーク等を経由するなどの他の方法で取得されてから格納された画像であってもよい。入力部２０１で取得された識別対象画像１００はＮＮ出力部２０２に送信される。出力工程Ｔ１２０では、ＮＮ出力部２０２が入力工程Ｔ１１０で入力された識別対象画像１００を予め学習されたネットワークに入力して最終層の出力結果を識別結果として出力する。ここで用いるネットワークは、例えば先の図４（ａ）に示したようなネットワークである。ネットワークの構造およびパラメータはＮＮパラメータ保持部５１２に保持されている。
【００２４】
次に、本実施形態において用いられるニューラルネットワークを学習する際の学習処理について説明する。本実施形態では、学習処理の中でニューラルネットワークの各中間層の出力結果の識別精度を評価して各中間層の重要度を決定し、ニューラルネットワークの再学習を行う。
【００２５】
図６は、各実施形態における学習装置５０の機能構成を示すブロック図であり、図６（ａ）が本実施形態に係るブロック図である。本実施形態の学習装置５０は、ＮＮパラメータ設定部５００、ＮＮ学習制御部５０１、ＮＮ中間層プローブ部５０２、中間層重要度決定部５０３を有している。また、学習データ保持部５１０、ＮＮ中間層プローブデータ保持部５１１、ＮＮパラメータ保持部５１２を保持している。学習データ保持部５１０、ＮＮ中間層プローブデータ保持部５１１およびＮＮパラメータ保持部５１２は、不揮発性の記憶装置として学習装置５０と接続された構成としてもよい。学習装置５０が有するこれらの各機能部の詳細については後述する。
【００２６】
図８は、各実施形態における学習装置５０における学習処理のフローチャートであり、図８（ａ）が本実施形態に係るフローチャートである。図８（ａ）のにおいて、ＮＮ学習工程Ｓ１１０では、ＮＮ学習制御部５０１がＮＮパラメータ設定部５００で設定したニューラルネットワークパラメータで、学習データ保持部５１０に保持されている学習データを用いてニューラルネットワークを学習する。本実施形態では、先に説明したＤｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（ＤＣＮＮ）を用いる。設定されるパラメータとは、層の数や層の処理内容（構造）およびフィルタサイズや出力チャンネル数などである。学習されたニューラルネットワークは、ＮＮ中間層プローブ部５０２に送信される。
【００２７】
次に、ＮＮ中間層プローブ工程Ｓ１２０では、ＮＮ中間層プローブ部５０２がＮＮ学習工程Ｓ１１０において学習されたニューラルネットワークの各中間層の識別精度をＮＮ中間層プローブデータ保持部５１１に保持されている評価データを用いて評価する。評価の方法に関しては、後で詳しく説明する。各中間層の評価結果は、中間層重要度決定部５０３に送信される。次に、中間層重要度決定工程Ｓ１３０では、中間層重要度決定部５０３がＮＮ中間層プローブ工程Ｓ１２０において評価された各中間層の評価結果に基づいて各中間層の重要度を決定する。重要度の決定方法については、後で詳しく説明する。決定した各中間層の重要度は、ＮＮ学習制御部５０１に送信される。
【００２８】
次に、ＮＮ再学習工程Ｓ１４０では、ＮＮ学習制御部５０１が学習データ保持部５１０に保持されている学習データおよび中間層重要度決定工程Ｓ１３０において決定された各中間層の重要度を用いて、ニューラルネットワークを再学習する。再学習されたニューラルネットワークの構造やパラメータはＮＮパラメータ保持部５１２に送信され、保持される。ＮＮパラメータ保持部５１２に保持されたニューラルネットワークの構造やパラメータは、先に説明した認識装置２０において識別対象画像の識別時に用いられる。最後に、Ｓ１５０において学習終了するかを判定して、学習処理が終了する。終了判定は所定の回数で終了してもよいし、再度中間層プローブ工程Ｓ１２０の処理を行って、所定精度かどうかを判定して終了してもよい。
【００２９】
次に、図８（ａ）のフローチャートにおける各工程のより具体的な処理内容について説明する。まず、ＮＮ学習工程Ｓ１１０では、ＮＮ学習制御部５０１がＮＮパラメータ設定部５００で設定したニューラルネットワークのパラメータで学習データ保持部５１０に保持されている学習データを用いてニューラルネットワークを学習する。ここでは、図４（ａ）のように、入力画像に対してｃｏｎｖｏｌｕｔｉｏｎ（畳みこみ）、ｒｅｌｕ処理、およびｐｏｏｌｉｎｇ処理を数回行った後の出力結果に、全結合層（ｆｕｌｌｃｏｎｎｅｃｔ層）を三層接続して結果を出力するネットワークを学習する。例えば、画像分類タスクの学習で一般的に用いられるＩＬＳＶＲＣの１０００クラス画像分類データを学習する場合には、図９に示すように全結合層の最終層１０１５の出力ノード１０５０のノード数を１０００個にする。そして、それぞれの出力１０４３が各画像に割り振られている画像分類クラスにおける尤度とすればよい。学習時には、学習データ保持部５１０に保持されている学習データに対する各出力結果１０４３と教師値との誤差をニューラルネットワークに対して逆伝播する。そして、各ｃｏｎｖｏｌｕｔｉｏｎ層のフィルタ値（重み）を確率的勾配降下法（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＳＧＤ法）などで更新すればよい。
【００３０】
また、非特許文献４に開示されているように、中間層の出力結果に対して全結合層などの識別層を接続して、その出力結果と教師値とを比較して誤差を逆伝播してもよい。その一例を図１０に示す。図１０では、途中のＲｅｌｕ処理後の出力結果を全結合層に接続して同様に１０００個の尤度を出力している。また図１０において、各出力部は、Ｏｕｔｐｕｔ１０２４、Ｏｕｔｐｕｔ１０２６で表している。Ｏｕｔｐｕｔ１０２４、Ｏｕｔｐｕｔ１０２６、Ｏｕｔｐｕｔ１０５０それぞれの出力結果と教師値とを比較して誤差を逆伝播する。通常の最終層からの誤差での学習と比較して、このような構成により中間層の学習が促進される。図１０の例では、途中の２つのｒｅｌｕ処理（１００７、１００９）後の出力を全結合層（１０２３、１０２５）にそれぞれ１層接続しているが、複数の中間層に全結合層を接続してもよいし、全結合層も１層ではなく複数接続してもよい。
【００３１】
次に、中間層プローブ工程Ｓ１２０で、ＮＮ中間層プローブ部５０２は、ＮＮ学習工程Ｓ１１０において学習したニューラルネットワークの各中間層の識別精度を評価する。本実施形態では、ＮＮ中間層プローブデータ保持部５１１に保持されている評価データを用いて各中間層の識別精度を評価するが、学習データ保持部５１０に保持されているデータを用いてもよい。ただし、どちらのデータを用いる場合でも、各評価データに対して教師値（正解値）は予め設定されていなければならない。本実施形態においては、画像分類クラスが付与されているとする。
【００３２】
具体的な評価方法は、ＮＮ学習工程Ｓ１１０において学習したニューラルネットワークに評価データを入力し各中間層の出力結果を取得する。図１１は、本実施形態に係る中間層プローブ工程の処理を説明する図である。本実施形態では、図１１（ａ）に示すように全結合層１０２７、１０２９、１０３１、１０３３に各中間層の出力結果を入力する。もしくは、図１１（ｂ）に示すように、識別器１０３５、１０３７、１０３９、１０４１に各中間層の出力結果を入力することで識別を行う。図１１において、識別結果はそれぞれ１０２８、１０３０、１０３２、１０３４、１０３６、１０３８、１０４０、１０４２であり、この識別結果の識別精度をそれぞれ評価する。ここで用いる全結合層および識別器は、予め学習しておく。なお、ここで学習するクラスカテゴリはＮＮ学習工程Ｓ１１０において学習したクラスカテゴリと同様でなくてもよいし、認識タスクも同じでなくてもよい。また、学習データに関しては、ＮＮ中間層プローブデータ保持部５１１に保持されているデータを学習データと評価データとに分割することを何回か行いクロスバリデーション（交差判定）を行ってもよいし、別途学習データを用意してもよい。
【００３３】
中間層を評価するための全結合層を学習する場合には、各中間層と全結合層を結合して、各中間層におけるｃｏｎｖｏｌｕｔｉｏｎ層の学習率を０（フリーズ）として、全結合層部分のパラメータのみ学習を行えばよい。中間層を評価するための識別器を学習する場合には、中間層の出力結果を特徴ベクトルとする識別器を学習すればよい。識別器はＳｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）などでよい。例えば、図１１（ｂ）に示した中間層１００７の出力が識別器１０３９に入力される例で説明する。中間層１００７の出力結果のサイズ（次元）はＸ×Ｙ×Ｃｈで表され、それぞれ、出力結果に関する横方向のサイズ、縦方向のサイズ、出力チャンネル数を表している。例えば、通常ｃｏｎｖｏｌｕｔｉｏｎ層ではフィルタサイズが３の場合には、画像端は周辺１画素を画素値０で埋めて、ｃｏｎｖｏｌｕｔｉｏｎ層への入力の横方向、縦方向サイズと出力の横方向、縦方向サイズが同じになるようにする（ｐａｄｄｉｎｇ処理）。途中に入るｐｏｏｌｉｎｇ処理が２×２の範囲の最大値を取得する処理で、ストライド数が２の場合、出力サイズはＸ方向、Ｙ方向ともに１／２になる。例えば、図１１（ｂ）における中間層１００６のｃｏｎｖｏｌｕｔｉｏｎ層の出力Ｃｈ数が１２８の場合、２５６×２５６の画像を入力すると中間層１００７の出力は２回のｐｏｏｌｉｎｇ処理が行われるので、６４×６４×１２８次元の出力結果が得られる。それらをすべて識別器に入力してもよいし、選択して入力してもよい。
【００３４】
また、中間層の評価時にニューラルネットワークの学習時と違う認識タスクで評価してもよい。例えば、先に説明した様に中間層の出力結果を入力画像サイズにアップサンプルして、画素ごとに特徴ベクトルを取得して識別することで各画素のクラスカテゴリを判定してもよい。ただし、その場合には中間層プローブデータの各画素の教師値が設定されているとする。また、先の例では画素ごとに１２８次元の特徴ベクトルが取得できることになる。また、ＲＯＩの位置を別途求めてＲＯＩＰｏｏｌｉｎｇしたのちに識別器に入力してもよい。なお、ここではｃｏｎｖｏｌｕｔｉｏｎ層の後のｒｅｌｕ処理後の出力結果を識別器に入力したが、ｒｅｌｕ処理の前の出力結果などいずれの中間層の出力結果でもよい。以上の方法は識別器ではなく、全結合層の場合も同様である。
【００３５】
なお、以下の場合には、ＮＮ学習工程Ｓ１１０で用いた全結合層を中間層の評価時にそのまま用いることもできる。すなわち、ＮＮ学習工程Ｓ１１０において、図１０で説明したように各中間層の出力結果に対して全結合層を接続して学習を行い、かつ中間層プローブ工程Ｓ１２０における評価データおよびクラスカテゴリがニューラルネットワークの学習時と同じ場合である。
【００３６】
いずれの方法でも、図１２に示す表のように各中間層におけるＮＮ中間層プローブデータの各クラスカテゴリに対する識別精度が得られる。図１２では、中間層を１０層選択して、各中間層の評価データの各クラスカテゴリＡ〜Ｄの識別精度を示している。各中間層におけるＮＮ中間層プローブデータの各クラスカテゴリに対する識別精度に基づいて、次の中間層重要度決定工程で各中間層の重要度が決定される。なお、本実施形態ではＮＮ学習部５０１が学習したニューラルネットワークの中間層の出力結果の識別精度を評価しているが、予め学習されたニューラルネットワークを外部から入力してもよい。
【００３７】
次に、中間層重要度決定工程Ｓ１３０では、中間層重要度決定部５０３が、中間層プローブ工程Ｓ１２０によって得られた中間層の識別精度に基づいて、各中間層の重要度を決定する。ここでは、図１２のように各中間層に対して各クラスカテゴリの識別精度が得られているとする。また、各中間層の各クラスカテゴリの識別精度をＡｃ（ｉ，ｊ）で表すとする。ｉはどの中間層の出力結果であるかを示すインデックスであり、ｊはどのクラスカテゴリであるかを示すインデックスである。各中間層の重要度をＩｍ（ｉ，ｊ）もしくはＩｍ（ｉ）と表せば、Ｉｍ（ｉ，ｊ）やＩｍ（ｉ）は数式１や数式２で示すように算出される。
【００３８】
Ｉｍ（ｉ，ｊ）＝ｆ（Ａｃ（ｉ，ｊ））…（数式１）
Ｉｍ（ｉ）＝ｆ（Ａｃ（ｉ，１），Ａｃ（ｉ，２），・・・，Ａｃ（ｉ，ｊ），・・・，Ａｃ（ｉ，Ｃ））…（数式２）
数式１では、クラスカテゴリごとに重要度を算出しており、各中間層の注目するクラスカテゴリの識別精度を重要度算出関数ｆに入力している。数式２では、各中間層で得られたすべてのクラスカテゴリの識別精度を重要度算出関数ｆに入力している。数式２におけるＣは、総クラスカテゴリ数を表している。
【００３９】
図１３は、図１２のように得られた各中間層の各クラスカテゴリの識別精度に基づいて得られた各中間層の重要度の例を示す。図１３（ａ）は、数式３のように各中間層の各クラスカテゴリの識別精度と最終層の同カテゴリの識別精度に基づいて重要度を算出している例である。また、図１３（ｂ）は、数式４のように算出している例である。
【００４０】
Ｉｍ（ｉ，ｊ）＝Ａｃ（ｉ，ｊ）／Ａｃ（ｉ，Ｃ）…（数式３）
Ｉｍ（ｉ，ｊ）＝Ａｃ（ｉ，Ｃ）／Ａｃ（ｉ，ｊ）…（数式４）
数式３のように重要度を設定すれば、各クラスカテゴリに対して識別精度が高い中間層の重要度を高く設定することができ、より学習を促進することができる。一方、数式４のように重要度を設定すれば、各クラスカテゴリに対して識別精度の低い中間層の学習を促進することができる。それぞれ、平均は各中間層での全てのカテゴリの重要度の平均値を表している。学習時の重要度の利用方法に関しては、次のＮＮ再学習工程Ｓ１４０の処理内容を説明する際にふれる。また、重要度の算出方法はここで説明する方法に限定されるものではない。
【００４１】
次に、ＮＮ再学習工程Ｓ１４０では、ＮＮ学習制御部５０１が、中間層重要度決定工程Ｓ１３０によって得られた中間層の重要度に基づいてニューラルネットワークを再学習する。具体的には各中間層の重要度に基づいて、学習率を変更すればよい。重要度が高い中間層に対しては学習率を高くしてｃｏｎｖｏｌｕｔｉｏｎ層の重みの更新が大きくされるように（更新の程度が大きくなるように）学習すればよい。さらに、学習するクラスごとに誤差に対する学習率を変更してもよい。学習率とは、学習データをニューラルネットワークに与えたときの出力結果と該当する教師値との誤差に対して各中間層のパラメータを更新する値を決定するパラメータである。学習率を大きく設定すると、中間層のパラメータは大きく更新される。本実施形態においては、その学習率を中間層ごとに決定する。学習率を大きく設定した中間層は大きく更新される。逆に、学習率を小さく設定した中間層はあまり更新されない。
【００４２】
図１４は、図１３（ａ）、（ｂ）のように各中間層の重要度が得られている場合に、それぞれの中間層のクラスカテゴリごとに学習率を設定した例を示している。図１４（ａ）は図１３（ａ）のように重要度が得られた場合の各中間層の学習率であり、図１４（ｂ）は図１３（ｂ）のように重要度が得られた場合の各中間層の学習率である。図１４において、元の学習率として記載しているのは、ＮＮ学習工程Ｓ１１０においてニューラルネットワークを学習した際の各中間層の学習率で、最終層から入力層に近い中間層に向かって学習率を小さく設定している例である。
【００４３】
ここで学習率をｌｒ（ｉ，ｊ）で表すとする。ｉ，ｊについては先と同様に、ｉはどの中間層であるかを表すインデックスで、ｊはどのクラスカテゴリであるかを表すインデックスである。もしくはｌｒ（ｉ）で表して、中間層ごとには学習率を変更するが、クラス間では同じ学習率としてもよい。学習率ｌｒ（ｉ，ｊ）は中間層重要度決定工程Ｓ１３０によって得られた重要度Ｉｍ（ｉ，ｊ）を用いて数式５のように表される。
【００４４】
ｌｒ（ｉ，ｊ）＝ｌｒ（ｉ）・Ｆ（Ｉｍ（ｉ，ｊ））…（数式５）
数式５におけるｌｒ（ｉ）は、各中間層の学習率であり、図１４では元の学習率として示している。図１４では中間層ごとに違う値となっているが、同じ値（１）でもよい。図１４（ａ）、図１４（ｂ）ともに以下の数式６のように学習率を算出している。
【００４５】
ｌｒ（ｉ，ｊ）＝ｌｒ（ｉ）・Ｉｍ（ｉ，ｊ）…（数式６）
ニューラルネットワークの学習時に、誤差が学習率に応じて重みづけされて逆伝播されることで、高い学習率を設定した中間層およびクラスカテゴリの学習を促進することができる。もしくは、重要度が所定値以上の中間層に対して、図１０に示したように中間層にも全結合層などの識別層を接続して、誤差を逆伝播する方法もある。例えば、図１３（ａ）で示したように各中間層の重要度の平均値に着目して、所定値以上の中間層に識別層を接続する。例えば、重要度の値が０．９以上の中間層の出力結果を全結合層に接続して学習を行う。もしくは、全ての中間層に対して識別層を接続して、図１３に示した重要度に応じて各識別層に対して学習率を設定してもよい。学習率を大きくした識別層に接続されている中間層の学習が促進されることになる。
【００４６】
本実施形態では、上記した学習率を変更する構成について説明したが、本実施形態はこのような構成に限定されるものではない。本実施形態は、中間層重要度決定工程Ｓ１３０によって得られた中間層の重要度に基づいて、学習にかかわるパラメータを変更する構成に広く適用できる。例えば、上述の説明では最終層から入力層に向かって徐々に学習率が減衰していくように設定されていたが、その減衰率を重要度に応じて変更してもよい。他には、重要度の高い中間層は重みの更新回数を増やすように設定することもできる。具体的には、各中間層で更新回数を設定して、更新回数が過ぎた中間層は学習率が０（フリーズ）になるように設定すればよい。他には、重要度が高い中間層のニューロンの数を増やすこともできる。このようにして再学習されたニューラルネットワークのパラメータは、ＮＮパラメータ保持部５１３に保持される。なお、本実施形態ではＤＣＮＮの例で説明したが、その他のニューラルネットワークにも適用できる。
【００４７】
以上のように、本実施形態の学習装置５０は、学習したニューラルネットワークの中間層の出力結果の識別精度を評価し、各中間層の重要度を決定し、その重要度に基づいてニューラルネットワークを再学習する。このように、本実施形態では、中間層の重要度に基づいてニューラルネットワークを再学習することで、識別精度の高いニューラルネットワークを学習することができる。
【００４８】
［第２の実施形態］
次に、本発明の第２の実施形態について説明する。本実施形態では、第１の実施形態で説明した処理により中間層の重要度に基づいてニューラルネットワークを再学習した後、１つ以上の中間層の出力結果を特徴量とする識別器を学習する。そして、そのニューラルネットワークおよび識別器を識別時の処理時に用いる。以下、第１の実施形態において既に説明をした構成については同一の符号を付し、その説明は省略する。
【００４９】
図５（ｂ）は、本実施形態における認識装置２０の機能構成を示すブロック図である。なお、図５（ｂ）においても、図５（ａ）と同様、認識装置２０の機能部を示す機能ブロックの他に、カメラ１０に相当する撮影部２００も示している。本実施形態の認識装置２０が、第１の実施形態と相違する点は、識別部２０３、識別器保持部５１３が追加されている点である。また、出力部２０２の処理内容が異なる。なお、識別器保持部５１３も、ＮＮパラメータ保持部５０６と同じように不揮発性の記憶装置として認識装置２０と接続された構成としてもよい。
【００５０】
図７（ｂ）は、本実施形態における認識装置２０における認識処理のフローチャートである。図７（ｂ）において、入力工程Ｔ２１０の処理内容は、第１の実施形態と同様の処理であるため説明を省略する。出力工程Ｔ２２０では、入力工程Ｔ２１０で入力された識別対象画像１００を予め学習されたネットワークに入力して、図４（ｂ）、（ｃ）で示したように中間層の出力結果を出力する。出力された中間層の出力結果は、識別部２０３に送信される。次に、識別工程Ｔ２３０では、識別部２０３が、出力工程Ｔ２２０で取得された中間層の出力結果を識別器に入力して、識別結果を出力する。識別器は予め学習されており、識別器保持部５１３に保持されている。
【００５１】
次に、識別工程Ｔ２３０で用いる識別器の学習方法について説明する。本実施形態でも、第１の実施形態と同様に学習したニューラルネットワークの各中間層の出力結果の識別精度を評価して、各中間層の重要度を決定しニューラルネットワークの再学習を行う。本実施形態では、その後、再学習したニューラルネットワークを用いて学習データを入力した際に得られる中間層の出力結果を特徴ベクトルとして識別器を学習する。
【００５２】
図６（ｂ）は、本実施形態の学習装置５０の機能構成を示すブロック図である。本実施形態の学習装置５０は、第１の実施形態の構成に加えて、識別器学習部５０８が追加されている。
【００５３】
図８（ｂ）は、本実施形態における学習装置５０における学習処理のフローチャートである。図８（ｂ）において、ＮＮ学習工程Ｓ１１０、中間層プローブ工程Ｓ１２０、中間層重要度決定工程Ｓ１３０、ＮＮ再学習工程Ｓ１４０の処理は第１の実施形態と同様であるため、その説明を省略する。ただし、ＮＮ再学習工程Ｓ１４０において学習されたニューラルネットワークは、ＮＮ学習制御部５０１からＮＮパラメータ保持部５１２だけではなく、識別器学習部５０８にも送信される。なお、本実施形態の学習処理でも、Ｓ１５０において学習を終了するかの判定を行っているが、以下に説明する識別器学習工程Ｓ１６０の後に判定してもよい。
【００５４】
次に、識別器学習工程Ｓ１６０の処理について説明する。識別器学習工程Ｓ１６０では、識別器学習部５０８が、ＮＮ再学習工程Ｓ１４０において学習されたニューラルネットワークおよび学習データ保持部５１０に保持されている学習データを用いて、識別器を学習する。学習された識別器のパラメータは、識別器パラメータ保持部５１３に保持される。なお、識別器学習時は、ニューラルネットワークの学習時と違う学習データを用いてもよい。一般的に、ニューラルネットワーク特にＤＣＮＮの場合には、多くの学習データが必要であることが知られている。そのため、ニューラルネットワークの学習は大量データで行い、中間層の識別精度評価および識別器の学習では、それよりも少ない（ある程度の）学習画像で行うことも可能である。
【００５５】
また、識別器学習時に学習する認識タスクおよびクラスカテゴリは、ニューラルネットワーク学習時と違っていてもよい。例えば、ニューラルネットワークは画像分類タスクで学習した後、中間層の識別精度評価および識別器の学習時には領域分割タスクで学習してもよい。ただし、識別器には中間層の出力結果を特徴ベクトルとして入力するため、中間層の識別精度評価時と識別器の学習時の認識タスクは同じである方が望ましい。
【００５６】
次に、識別器学習工程Ｓ１６０の具体的な処理内容について説明する。本実施形態では、図４（ｂ）、（ｃ）で示したように中間層の出力結果を特徴ベクトルとして用いる識別器を学習する。より識別精度の高い識別器を学習するためには、複数の中間層の出力結果を統合して用いる方がよい。識別器には、Ｓｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）などを用いればよい。また、複数の中間層の出力結果を統合して全結合層のみを学習してもよい。その場合には、全結合層のパラメータを識別器のパラメータとする。識別器学習工程Ｓ１６０において学習された識別器のパラメータは識別器パラメータ保持部５１３に保持され、識別時に利用される。
【００５７】
以上のように、本実施形態の学習装置５０は、学習したニューラルネットワークの中間層の出力結果の識別精度を評価し、各中間層の重要度を決定し、その重要度に基づいてニューラルネットワークを再学習する。さらに、本実施形態では、再学習したニューラルネットワークの中間層の出力結果を特徴ベクトルとする識別器を学習する。このような構成により、中間層の重要度に基づいてニューラルネットワークを再学習することで、識別精度の高いニューラルネットワークおよび識別器を学習することができる。
【００５８】
［第３の実施形態］
次に、本発明の第３の実施形態について説明する。本実施形態では、ユーザーインターフェース上でユーザが識別精度を向上する対象（クラスカテゴリ）を選択することで、その対象（クラスカテゴリ）が向上するように中間層の重要度を決定し、ニューラルネットワークを再学習する。なお、第１、第２の実施形態において既に説明をした構成については同一の符号を付し、その説明は省略する。
【００５９】
図６（ｃ）は、本実施形態の学習装置５０の機能構成を示すブロック図である。本実施形態の学習装置５０は、第１の実施形態の構成に加えて、ユーザ設定部５０４が追加されている。ユーザ設定部５０４は、後述するように、ユーザが設定したクラスカテゴリに係る情報を取得、受付ける機能を有する。
【００６０】
図８（ｃ）は、本実施形態における学習装置５０における学習処理のフローチャートである。図８（ｃ）において、ＮＮ学習工程Ｓ２１０は第１の実施形態と同様の処理であるため、説明を省略する。次に、ユーザ設定工程Ｓ２２０では、図１５に示すようにユーザ６０が表示装置２１の上に表示されているＵＩ２２上で選択（設定）した、識別精度を向上したいクラスカテゴリに係る情報をユーザ設定部５０４が取得する。ここで選択可能なクラスカテゴリは、ＮＮ学習工程Ｓ２１０において学習するクラスカテゴリ定義と同様でなくてもよい。また、クラスカテゴリを選択するのではなく、そのクラスカテゴリに属する対象が選択できるようになっていてもよい。
【００６１】
次に、中間層プローブ工程Ｓ２２０では、ＮＮ学習工程Ｓ２１０で学習されたニューラルネットワークの各中間層の識別精度を評価する。本実施形態においては、ユーザ設定工程Ｓ２２０において設定されたクラスカテゴリもしくは対象の識別精度を評価する。
【００６２】
中間層重要度決定工程Ｓ２４０、ＮＮ再学習工程Ｓ２５０、学習終了判定Ｓ２６０の処理は、第１の実施形態における各処理と同様であるため、説明を省略する。
【００６３】
以上のように、本実施形態の学習装置５０は、学習したニューラルネットワークにおいて、ユーザが設定したクラスカテゴリの中間層の出力の識別精度を評価する。そして、評価結果に基づいて各中間層の重要度を決定し、その重要度に基づいてニューラルネットワークを再学習する。このような構成により、本実施形態では、中間層の重要度に基づいてニューラルネットワークを再学習することで、ユーザが設定したクラスについて識別精度の高いニューラルネットワークを学習することができる。
【００６４】
［第４の実施形態］
次に、本発明の第４の実施形態について説明する。本実施形態では、ニューラルネットワークを再学習する際に与える学習データまたはその教師値を変更するか、学習する際の各クラスカテゴリに対する誤差に対する重みを変更することで、ニューラルネットワークの識別精度を向上する。なお、第１〜第３の実施形態において既に説明をした構成については同一の符号を付し、その説明は省略する。
【００６５】
本実施形態の学習装置５０の機能構成は、図６（ａ）で示す第１の実施形態と同様であるが、ニューラルネットワークを再学習する際のＮＮ学習制御部５０１の処理内容が第１の実施形態とは異なる。これについては、後述する。
【００６６】
図８（ｄ）は、本実施形態における学習装置５０における学習処理のフローチャートである。図８（ｄ）において、ＮＮ学習工程Ｓ３１０、中間層プローブ工程Ｓ３２０および中間層重要度決定工程Ｓ３３０の処理内容は第１の実施形態と同様の処理であるため説明を省略する。再学習ＮＮ教師値設定工程Ｓ３４０では、ＮＮ学習制御部５０１が中間層プローブ工程Ｓ３２０における評価結果および中間層重要度決定工程Ｓ３３０における重要度に基づいて再学習するニューラルネットワークの学習データおよび教師値を設定する。
【００６７】
次に、ＮＮ再学習工程Ｓ３５０では、ＮＮ学習制御部５０１が、再学習ＮＮ教師値設定工程Ｓ３４０において設定された学習データおよび教師値を用いて、ニューラルネットワークを再学習する。再学習されたニューラルネットワークの構造およびパラメータはＮＮパラメータ保持部５１２に送信され、保持される。
【００６８】
次に、再学習ＮＮ教師値設定工程Ｓ３４０の具体的な処理内容について説明する。図１０で説明した様に、途中の中間層にも識別層である全結合層を接続してニューラルネットワークの学習をする場合には、図１０の１０５０、１０２４、１０２６で表される出力に対して与える教師値を変更してもよい。例えば、先に説明したＩＬＳＶＲＣの１０００クラス画像分類の場合で説明する。図１０に示したニューラルネットワークの最終層である１０５０の出力ノードは１０００クラスに対応させてノード数を１０００として各クラスに対応する尤度を出力するとして、１０２４、１０２６で示される出力はそれぞれ設計することができる。例えば、クラスカテゴリＡにとって中間層１００７の出力結果の重要度が高いと判定された場合には、１０２４の出力をクラスカテゴリＡに属するかどうかの判定結果を尤度として出力するようにする。この構成により、よりクラスカテゴリＡを識別するために有効な中間層の学習を促進する。
【００６９】
その際、学習データを例えば次の２つに限定することもできる。１つは、ＮＮ学習工程Ｓ３１０で学習したニューラルネットワークでクラスカテゴリＡに属するデータのうちクラスカテゴリＡと識別できなかったデータ（未検出データ）である。もう１つは、クラスカテゴリＡに属さないデータのうち、クラスカテゴリＡと識別されたデータ（誤検出データ）である。学習時には全ての学習データを与えてニューラルネットワークの各中間層の学習を行うステップと、上記のように限定された学習データを与えて所定の中間層の学習のみを行うステップを所定回数ずつ繰り返すなどの処理を行えばよい。
【００７０】
図１０のように、中間層に識別層を接続してニューラルネットワークの再学習を行う場合でも、出力クラス数や定義を変更するのではなく、クラスカテゴリＡに対する誤差に他のクラスカテゴリに対する誤差よりも大きな重みづけをする。そして、重みづけした誤差を伝播するように設計することで、所定のクラスカテゴリに対する学習を促進する。さらに、中間層ごとにその重みづけを変更してもよい。また、それぞれの識別層で別の認識タスクを識別するように設計してもよい。
【００７１】
なお、本実施形態においても、第３の実施形態と同様に識別精度を向上したいクラスカテゴリ、対象をユーザが設定することも可能であり、その場合には学習装置５０において図８（ｄ）で説明したユーザ設定工程を実行できるようにすればよい。また、第２の実施形態と同様にニューラルネットワークを再学習した後に、ニューラルネットワークの中間層の出力結果を特徴ベクトルとする識別器を学習してもよい。
【００７２】
以上のように、本実施形態の学習装置５０は、学習したニューラルネットワークの中間層の出力結果の識別精度を評価し、各中間層の重要度を決定し、その重要度に基づいてニューラルネットワークを再学習する。さらに、本実施形態では、再学習時に与える学習データおよび教師値を再設定することで、より識別精度の高いニューラルネットワークを学習する。このような構成により、識別精度の高いニューラルネットワークを学習することができる。
【００７３】
［第５の実施形態］
次に、本発明の第５の実施形態について説明する。本実施形態では、再学習する際にニューラルネットワークの構造も変更する。また、第４の実施形態と同様に再学習する際に与える学習データまたはその教師値を変更する、もしくは学習する際に学習する各クラスに対する誤差に対する重み設定を変更することもできる。なお、第１〜第４の実施形態において既に説明をした構成については同一の符号を付し、その説明は省略する。
【００７４】
まず、再学習する際のニューラルネットワークの構造のみを変更する場合の処理内容を説明する。この構成では、画像を識別する際の処理は、第１、第２の実施形態と同様であるが、ニューラルネットワークの構成を変更してニューラルネットワークを再学習した後、識別のための全結合層もしくは識別器を再学習し、識別時に用いる。
【００７５】
本実施形態の学習装置は、第１、第２の実施形態と同様に、図６（ａ）、（ｂ）で説明した学習装置５０を用いる。第１、第２の実施形態との相違点は、ニューラルネットワークを再学習する際のＮＮパラメータ設定部５００およびＮＮ学習制御部５０１の処理内容が異なる点である。また、ニューラルネットワークを再学習した後、識別器を学習する場合には識別器学習部５０８の処理内容も異なる。
【００７６】
図８（ｅ）は、本実施形態における学習装置５０における学習処理のフローチャートである。図８（ｅ）において、ＮＮ学習工程Ｓ４１０、中間層プローブ工程Ｓ４２０および中間層重要度決定工程Ｓ４３０の処理内容は、第１の実施形態と同様の処理であるため説明を省略する。再学習ＮＮ構造設定工程Ｓ４４０では、ＮＮパラメータ設定部５００が、中間層プローブ工程Ｓ４２０における評価結果および中間層重要度決定工程Ｓ４３０における重要度に基づいて、再学習するニューラルネットワークの構造を設定する。設定されたニューラルネットワークの構造は、ＮＮ学習制御部５０１に送信される。
【００７７】
次に、ＮＮ再学習工程Ｓ４５０で、ＮＮ学習制御部５０１は、再学習ＮＮ構造設定工程Ｓ４４０において設定されたニューラルネットワークを学習データ保持部５１０に保持されている学習データを用いて再学習する。再学習されたニューラルネットワークの構造およびパラメータは、ＮＮパラメータ保持部５１２に送信され、保持される。
【００７８】
次に、再学習ＮＮ構造設定工程Ｓ４４０およびＮＮ再学習工程Ｓ４５０の具体的な処理内容について説明する。再学習ＮＮ構造設定工程Ｓ４４０では、中間層重要度決定工程Ｓ４３０によって得られた重要度が高い中間層からいくつかの中間層を選択して、その中間層からニューラルネットワークを分岐する。図１６は、本実施形態の再学習ＮＮ構造設定工程Ｓ４４０におけるニューラルネットワークの構成を示す図である。同図において、中間層１００７の出力結果は、次のｃｏｎｖｏｌｕｔｉｏｎ層１００８だけではなく、ｃｏｎｖｏｌｕｔｉｏｎ層１０５１およびｃｏｎｖｏｌｕｔｉｏｎ層１０５５に入力される。
【００７９】
ＮＮ再学習工程Ｓ４５０では、再学習ＮＮ構造設定工程Ｓ４４０において設定されたニューラルネットワークの再学習を行う。再学習の際は、再学習ＮＮ構造設定工程Ｓ４４０において追加した層以外の学習率を０（フリーズ）にして、追加した中間層のみを学習してもよいし、全てのネットワークを再学習してもよい。本実施形態においても、第４の実施形態で説明したように再学習するニューラルネットワークに与える学習データおよび教師値を設定してもよい。例えば、ＮＮ学習工程Ｓ４１０において学習したニューラルネットワークで学習データ保持部５１０に保持されている学習データを識別して、誤検出した学習データに重みづけをしたり、選択したりする。これにより、分岐されたニューラルネットワークは、ＮＮ学習工程Ｓ４１０において学習したニューラルネットワークが識別困難な学習データをより学習するニューラルネットワークとなる。また、第４の実施形態と同様に学習するクラスカテゴリを限定したり重みづけをしたりすることもできる。
【００８０】
ニューラルネットワークの再学習の後、さらに識別層を学習する。図１７は、ＮＮ再学習工程Ｓ４５０におけるニューラルネットワークの構成を示している。図１７（ａ）に示したように、各分岐した構造の最終層１０６０、１０６２、１０６４の出力結果を全結合層１０６５で統合する。統合された後は、複数層の全結合層を経て出力結果１０５０が出力される。そして、分岐されたニューラルネットワークを再学習した後、統合する全結合層のみを学習する。この際に与える学習データは、ＮＮ学習工程Ｓ４１０において与えた学習データと同じでよい。また、第２の実施形態と同様に中間層の出力結果を統合して特徴ベクトルとして識別器を学習することもできる。学習方法は、第２の実施形態で説明した処理内容とほぼ同様である。ただし、図１７（ｂ）に示したように分岐されたニューラルネットワークの中間層の出力結果も統合する。例えば、図１７（ｂ）における中間層１０７２、１０７８、１０８４の出力結果を統合して特徴ベクトル（図中のｆｅａｔｕｒｅ１０８８）として、ＳＶＭ１０８９に入力して出力結果（Ｏｕｔｐｕｔ１０９０）を出力している。
【００８１】
なお、本実施形態においても、第３の実施形態と同様に識別精度を向上したいクラスカテゴリ、対象をユーザが設定することも可能であり、その場合には学習装置５０において図８（ｄ）で説明したユーザ設定工程を実行できるようにすればよい。
【００８２】
以上のように、本実施形態の学習装置５０は、学習したニューラルネットワークの中間層の出力結果の識別精度を評価し、各中間層の重要度を決定し、その重要度に基づいてニューラルネットワークを再学習する。さらに、本実施形態では、再学習時のニューラルネットワークの構造を再設定することで、より識別精度の高いニューラルネットワークを学習することができる。
【００８３】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８４】
５０      学習装置
５００    ＮＮパラメータ設定部
５０１    ＮＮ学習制御部
５０２    ＮＮ中間層プローブ部
５０３    中間層重要度決定部
５１０    学習データ保持部
５１１    ＮＮ中間層プローブデータ保持部
５１２    ＮＮパラメータ保持部
【図１】
2018205858.tif 000003
【図２】
2018205858.tif 000004
【図３】
2018205858.tif 000005
【図４】
2018205858.tif 000006
【図５】
2018205858.tif 000007
【図６】
2018205858.tif 000008
【図７】
2018205858.tif 000009
【図８】
2018205858.tif 000010
【図９】
2018205858.tif 000011
【図１０】
2018205858.tif 000012
【図１１】
2018205858.tif 000013
【図１２】
2018205858.tif 000014
【図１３】
2018205858.tif 000015
【図１４】
2018205858.tif 000016
【図１５】
2018205858.tif 000017
【図１６】
2018205858.tif 000018
【図１７】
2018205858.tif 000019