(57)【特許請求の範囲】
【請求項１】
複数のタスクを実行する複数の多層ニューラルネットワークを学習する学習手段と、
前記複数の多層ニューラルネットワーク間で所定の階層の共用層候補を生成する生成手段と、
前記共用層候補を用いた構造で、前記複数の多層ニューラルネットワークを再学習する第１の再学習手段と、
前記再学習の評価に基づいて、前記複数のタスクのそれぞれについて、前記共用層候補を前記所定の階層で共用するかを判定する判定手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記所定の階層は、前記多層ニューラルネットワークの少なくとも１つの階層であり、当該少なくとも１つの階層の各階層ごとに生成される前記共用層候補についての前記判定手段による判定の結果に基づいて、前記複数の多層ニューラルネットワークの最終的な構造を決定する決定手段をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段は、前記所定の階層の学習パラメータを複数のクラスタにクラスタリングし、当該複数のクラスタから代表学習パラメータを選出することによって前記共用層候補を生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記生成手段は、前記所定の階層の前後の階層の学習パラメータを含めた学習パラメータを複数のクラスタにクラスタリングし、当該複数のクラスタから前記代表学習パラメータを選出することによって前記共用層候補を生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成手段は類似度に基づいて前記クラスタリングを行い、当該類似度は、
前記学習パラメータを画像フィルタとみなした画像類似度、
前記画像フィルタを所定の画像に適用した出力結果の類似度、
前記画像フィルタを所定の画像に適用した出力結果の類似度に、所定の非線形処理を適
用した結果の類似度、および
前記所定の非線形処理を適用した結果の類似度に、所定のプーリング処理を行った結果
の類似度、
のいずれかであることを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記生成手段は、前記所定の階層の学習パラメータをランダムサンプリングすることによって前記共用層候補を生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項７】
前記生成手段は、前記所定の階層の学習パラメータをデータ圧縮することによって前記共用層候補を生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項８】
前記決定手段によって決定された前記複数の多層ニューラルネットワークの構造で再学習を行う、第２の再学習手段をさらに有することを特徴とする請求項２に記載の情報処理装置。
【請求項９】
前記所定の階層が複数ある場合、前記判定手段が前記共用層候補を共用すると判定するたびに、当該共用層候補を用いた前記複数の多層ニューラルネットワークの構造で再学習を行う、第３の再学習手段をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記決定手段によって決定された前記複数の多層ニューラルネットワークの構造を出力する第１の出力手段をさらに有することを特徴とする請求項２または８に記載の情報処理装置。
【請求項１１】
前記第２の再学習手段によって再学習された各タスクの性能を評価する第１の評価手段と、当該評価を出力する第２の出力手段と、をさらに有することを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記第３の再学習手段によって再学習された各タスクの性能を評価する第２の評価手段と、当該評価を出力する第３の出力手段と、をさらに有することを特徴とする請求項９に記載の情報処理装置。
【請求項１３】
前記再学習の評価は、前記共用層候補を用いた場合の前記多層ニューラルネットワークの精度が許容範囲内であるか否かであることを特徴とする請求項１〜１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記複数の多層ニューラルネットワークが、すでに所定の階層範囲で共用層候補を有している場合、前記生成手段は、前記所定の階層範囲の最後の共用層候補の次の階層について共用層候補を生成することを特徴とする請求項１〜１３のいずれか１項に記載の情報処理装置。
【請求項１５】
複数のタスクを実行する複数の多層ニューラルネットワークを学習するステップと、
前記複数の多層ニューラルネットワーク間で所定の階層の共用層候補を生成するステップと、
前記共用層候補を用いた構造で、前記複数の多層ニューラルネットワークを再学習し、当該再学習の評価に基づいて、前記複数のタスクのそれぞれについて、前記共用層候補を前記所定の階層で共用するかを判定するステップと、
を有することを特徴とする情報処理方法。
【請求項１６】
コンピュータを請求項１〜１４のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
画像・音声などのデータの内容を学習し認識を行なう技術がある。本明細書では、認識処理の目的を認識タスクと称する。たとえば、画像中から人間の顔の領域を検出する顔認識タスク、画像中にある物体(被写体)のカテゴリ(猫、車、建物など)を判別する物体カテゴリ認識タスク、シーンの種別(都市、山間、海岸など)を判別するシーン種別認識タスクなどの認識タスクがある。
【０００３】
上記のような認識タスクを学習・実行する技術としては、ニューラルネットワーク(以下、「ＮＮ」と記す。)が知られている。ＮＮはＮｅｕｒａｌ  Ｎｅｔｗｏｒｋｓの略である。深い(層の数が多い)多層ＮＮは、ディープＮＮ（ＤＮＮ）と称される。ＤＮＮは、Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓの略である。特に、深い畳みこみＮＮは、ディープコンボリューショナルＮＮ（ＤＣＮＮ）と称される。ＤＣＮＮは、Ｄｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓの略である。ＤＣＮＮは性能（認識精度、認識性能）が高いことで近年注目されている。
【０００４】
ＤＣＮＮは、各層において、前層からの出力に対して畳みこみ処理を行い次層に出力するようなネットワーク構造を有する。最終層は認識結果を表す出力層となる。各層には畳みこみ演算用のフィルタ（カーネル）が複数用意される。出力層に近い層では畳みこみによる結合ではなく通常のＮＮのような全結合の構造とするのが一般的である。畳みこみ演算用のフィルタは、以下の記載では畳みこみフィルタと称する。
ＤＣＮＮの学習フェーズにおいては、畳みこみフィルタの値や全結合層の結合重み（両者をあわせて「学習パラメータ」と称する。）を誤差逆伝搬法(バックプロパゲーション:ＢＰ)などの方法を用いて教師付きデータから学習する。ＢＰはＢａｃｋ  Ｐｒｏｐａｇａｔｉｏｎの略である。
ＤＣＮＮの認識フェーズにおいては、学習済ＤＣＮＮにデータを入力し、各層において学習済みの学習パラメータによってデータを順次処理し、出力層から認識結果を得る。
【０００５】
また、複数の認識タスクを１つの学習手段（学習器）で学習・実行するような、マルチタスク学習と呼ばれる手法が存在する。たとえば、非特許文献１には、複数の認識タスク用の複数の出力ユニットを設けた１つの多層ＮＮを用いて、複数の認識タスクを学習する方法が記載されている。非特許文献１では中間層はどの認識タスクも同じものを利用するとしており、中間層はすべての認識タスクのデータによって学習される。
非特許文献１のマルチタスク学習で扱う複数の認識タスクは、認識処理の内容にある程度の類似性があることを前提としている。類似した認識タスクを１つの学習器で学習することにより、それぞれの認識タスクのデータに含まれる共通的な知識を認識タスク間で相互に利用しあって学習し、認識性能が向上する場合があるとされている。共通性が薄い認識タスクの場合は、１つの学習器で同時に学習すると、個々に学習するよりも認識の性能が悪くなってしまう可能性もある。性能が悪くなるかどうかは、実際に学習・評価を行うまで分からない。
【０００６】
また、画像認識の認識タスクを学習するＤＣＮＮにおいては、入力に近い層で学習される学習パラメータは、認識タスクの差異(最終的に出力したい認識結果の違い)によらず、ある程度類似のパラメータが学習される。すなわち、異なる認識タスクで学習されたパラメータを相互に入れ替えて使用しても性能があまり落ちない場合がある。たとえば、２つの異なる認識タスク間で学習パラメータを入れ替えた場合、入力に近い層では性能低下が少ないが、出力に近い層では性能低下が大きくなることもある。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｃａｒｕａｎａ，Ｒ．（１９９７）“Ｍｕｌｔｉｔａｓｋ  ｌｅａｒｎｉｎｇ，Ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ”２８（１），４１−７５
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献１のマルチタスク学習では、認識タスクのデータに含まれる共通的な知識を認識タスク間で相互に利用しあって学習することができるが、性能が悪くなるかどうかは実際に学習・評価を行うまで分からない。つまり、最適なＮＮ構造を探索するためには網羅的（総当り的）な探索を行う必要がある。しかし、ＤＣＮＮは学習に要する時間が長いため、最適なＮＮ構造を網羅的に探索することは難しい。
また、マルチタスク学習では、学習パラメータの数が膨大であるため、認識処理実行時（認識フェーズ）には大量の学習パラメータを保持するための大量のメモリが必要である。
さらに、学習パラメータを用いて多数回の畳みこみ計算処理をするために、認識フェーズの処理時間が長くなる。
【０００９】
１つの計算環境(ＰＣなど)上で同一の画像データに対する複数の認識タスクを同時に実行したい場合もある。たとえば、ユーザがカメラで撮影するたびに、顔認識、シーン種別認識、領域分割、構図良否判定などを実行し、その結果を、オートフォーカス、露出補正、構図ガイドなどに利用する場合、複数の認識タスクを同時に実行することになる。複数の認識タスクを同時に実行すると、認識タスクごとにそれぞれ学習した学習パラメータが必要になり、認識処理実行時の課題（学習時間の長さ、大量のメモリなど）はさらに大きくなる。
本発明は、上記した課題を解決すべく、複数のタスクを実行する複数の多層ＮＮにおいて好適なＮＮ構造を効率的に探索できる学習装置（情報処理装置）を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の１つの態様による情報処理装置は、複数のタスクを実行する複数の多層ニューラルネットワークを学習する学習手段と、前記複数の多層ニューラルネットワーク間で所定の階層の共用層候補を生成する生成手段と、前記共用層候補を用いた構造で、前記複数の多層ニューラルネットワークを再学習する第１の再学習手段と、前記再学習の評価に基づいて、前記複数のタスクのそれぞれについて、前記共用層候補を前記所定の階層で共用するかを判定する判定手段と、を有する。
【発明の効果】
【００１１】
本発明の情報処理装置によれば、複数のタスクを実行する複数の多層ＮＮにおいて好適なＮＮ構造を効率的に探索することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態１に係る学習装置（情報処理装置）の構成を示す図。
【図２】マルチタスク多層ＮＮの初期構造を説明する図。
【図３】実施形態１の学習装置が実行する処理のフローチャート。
【図４】初期構造のマルチタスクＤＣＮＮに対する精度評価部の処理を説明する図。
【図５】１層目に対する共用層候補生成部の処理を説明する図。
【図６】候補マルチタスクＤＣＮＮを説明する図。
【図７】候補マルチタスクＤＣＮＮに対する精度評価部の処理を説明する図。
【図８】２層目に対する共用層候補生成部の処理を説明する図。
【図９】共用構造決定部によって決定されるマルチタスクＤＣＮＮの構造を示す図。
【図１０】最終的に決定されるマルチタスクＤＣＮＮの構造を説明する図。
【図１１】共用層候補生成部の処理を説明するためのフローチャート。
【図１２】共用層候補採否判定部の処理を説明するためのフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を説明する。以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施形態に限定されるものではない。
（実施形態の概略）
背景技術で説明したように、ＤＣＮＮは、最適（好適）なネットワーク構造を網羅的に探索することが難しい、大量の学習パラメータを保持するための大量のメモリが必要である、認識フェーズの処理時間が長くなるという課題を有する。このような課題を緩和または解消するためには、認識タスク実行時に必要な学習パラメータ数を少なくすることが考えられる。
【００１４】
もし１つの認識タスクを実行する単独のＤＣＮＮで複数の認識処理を実行すると、各認識タスクの認識性能を維持するのに十分な学習パラメータ数がそれぞれのＤＣＮＮで必要になってしまう。しかし、類似する認識タスク同士であれば、性能を維持したまま、入力に近い層の学習パラメータを認識タスク間で共用できる可能性がある。すなわち、入力に近い数層では認識タスク間で学習パラメータを共用し、それより上層では認識タスクごとに異なる学習パラメータを有する層に分岐して最終的に認識タスクごとの出力ユニット（出力層）を有するようなＤＣＮＮの構造を構築すればよい。そして、このＤＣＮＮの構造を、複数の認識タスクのデータを用いて学習すればよい。本明細書では、このようなＤＣＮＮの構造をマルチタスクＤＣＮＮ(ＭＴＤＣＮＮ)構造と称する。ＭＴはＭｕｌｔｉ−Ｔａｓｋの略である。
【００１５】
マルチタスクＤＣＮＮ構造を採用すれば、入力に近い層においては、学習済みパラメータやそれを使った計算の結果が複数の認識タスク間で共用されることになり、認識処理時に要するメモリ量や計算時間を縮小することができる。しかし、複数の認識タスクのうちどの認識タスク間でどの層まで学習パラメータを共用させた構造が最も好適なマルチタスクＤＣＮＮ構造であるかは、実際に学習処理を実行して性能評価するまでわからない。
【００１６】
入力に近い層を複数の認識タスク間で共用するようなマルチタスクＤＣＮＮの構造のバリエーション数を考えると、複数の認識タスクのすべての組み合わせについて、それぞれ何層目まで共用するかというバリエーションがあり、そのバリエーション数は多い。また、前述のように、ＤＣＮＮの学習は一般的に長い時間を要する。よって、マルチタスクＤＣＮＮの構造のバリエーションすべてに対して実際に学習処理・性能評価をして好適なマルチタスクＤＣＮＮ構造を決定するという総当り的な方法では、非常に時間がかかってしまう。
【００１７】
以下に説明する本発明の実施形態では、上記した問題点を解決または緩和することができる学習装置を説明する。この学習装置は、限定的な数の共有層候補を生成して、当該共有層候補を用いて好適なマルチタスクＤＣＮＮの構造を決定する。この学習装置は、マルチタスク多層ＮＮ学習装置と称することもできる。また、この学習装置を用いて認識処理を行うこともできるので、この学習装置は情報処理装置と称することもできる。
【００１８】
実施形態１
（学習装置の構成）
図１は実施形態１の学習装置１０の構成を説明するためのブロック図である。学習装置１０は、ＣＰＵ１１と、入力装置１２と、出力装置１３と、第１のメモリ１４と、第２のメモリ１５とを有する。ＣＰＵ１１、入力装置１２、出力装置１３、第１のメモリ１４および第２のメモリ１５は、計算機バス１６により相互接続されている。
ＣＰＵ１１は、入力装置１２、出力装置１３、第１のメモリ１４および第２のメモリ１５の動作を制御する。たとえば、ＣＰＵ１１は、第２のメモリ１５に格納されているデータを用いて、第１のメモリ１４の機能（第１のメモリ１４に記憶されているプログラム）を実行することにより、所定の処理を行う。
【００１９】
入力装置１２は、たとえばマウスやキーボードである。学習装置１０のユーザは、入力装置１２を用いて、所望のデータや指示を第１のメモリ１４や第２のメモリ１５に入力することができる。出力装置１３は、たとえば液晶ディスプレイやプリンタである。出力装置１３は、音声出力部を有してもよい。
第１のメモリ１４は、学習部２０、精度評価部２１、共用層候補生成部２２、再学習部２３、共用層候補採否判定部２４、マルチタスク多層ＮＮ再学習部２５、性能評価結果出力部２６、ＮＮ構造出力部２７および共用構造決定部２８を有する。図１において、第１のメモリ１４の各部は、機能ブロックで表わされている。
【００２０】
学習部２０は、ＤＣＮＮの学習手段であり、従来から知られている学習手段を使用することができる。
精度評価部２１は、各認識タスクに対する精度評価を行う。具体的には、精度評価部２１は、認識タスクの種別ごとに定義された精度を算出する。たとえば、認識タスクがシーン種別認識タスクであれば、精度評価部２１は正解率（精度）などを算出する。また、認識タスクが顔の位置検出タスクであれば、精度評価部２１は推定位置誤差の画像座標上のユークリッド距離などを算出する。本実施形態では、説明を簡単にするため、各認識タスクの精度の算出方法は、精度の値が大きいほど認識性能が良くなるように定義するものとする。
【００２１】
共用層候補生成部２２は、ｉ層の共用層候補を生成し、第２のメモリ１５に共用層候補３６として格納する。
再学習部２３は、学習部２０と同じ学習機能を有するが、学習の設定が異なる。再学習部２３は、候補マルチタスクＤＣＮＮ３７のうち、層共用タスクリスト３５（後述）に記録されている認識タスクについて学習する。候補マルチタスクＤＣＮＮ３７とは、層共用タスクリスト３５に記録されている認識タスクのi層目を共用層候補３６で共用するような構造をもつマルチタスクＤＣＮＮ構造のことである。
【００２２】
共用層候補採否判定部２４は、認識タスクごとに共用層候補ＳＬiを採用するか否かを判定する。
マルチタスク多層ＮＮ再学習部２５は、最終的に決定されたマルチタスク多層ＮＮ（学習済ＤＣＮＮ３３の全体）を再学習する。
性能評価結果出力部２６は、精度評価部２１を用いて算出された各認識タスクの精度評価値を出力装置１３に表示する。
ＮＮ構造出力部２７は、ＤＣＮＮの構造（たとえば、図１０の共用構造図）を出力装置１３に表示する。
共用構造決定部２８は、共用層候補の採否判定結果に基づいて、マルチタスクＤＣＮＮ構造を決定する。
【００２３】
第２のメモリ１５は、学習データ３０、ベリファイデータ３１、許容劣化度３２、学習済ＤＣＮＮ３３、初期精度３４、層共用タスクリスト３５および共用層候補３６を保持（格納）する。また、第２のメモリ１５は、候補マルチタスクＤＣＮＮ３７、候補マルチタスクＤＣＮＮ精度３８、共用層候補母集団３９、フィルタクラスタ４０、許容精度４１および共用層候補採否判定結果４２を保持する。
【００２４】
学習データ３０は、第２のメモリ１５に予め格納されているものとする。本実施形態では認識対象のデータは画像であるとして説明するが、音声や文字列などのデータが認識対象であってもよい。学習データ３０には、画像データ（学習画像）とそれに対する教師データ(ＧＴ、真値)の組が多数格納されている。つまり、画像データと教師データの組（ペア）が所定数格納されるというのが、学習データ３０のフォーマットである。ＧＴは、Ｇｒｏｕｎｄ  Ｔｒｕｔｈの略である。本実施形態では、認識タスクは複数あるものとし、１つの画像データに対して複数の認識タスクのＧＴが対応付けられているものとする。この対応付けは、具体的には、画像のファイル名と複数の認識タスクのＧＴとを羅列した表のようなテキストファイルで表せばよい。ＧＴの表現は、たとえば、シーン種別認識タスクであれば答えとなるシーン種別を表すＩＤ(整数値)をＧＴとし、顔認識タスクで顔の位置を答えとする場合には顔位置を示す２次元画像座標値(２次元実数値)をＧＴとすればよい。
【００２５】
なお、１つの画像データに対してすべての認識タスクのＧＴが対応していなくてもよい。たとえば、ある画像には１つの認識タスクのＧＴのみが対応付けられており、他の認識タスクのＧＴは空欄であってもよい。その場合、ある認識タスクを単独で学習する際には、当該認識タスクのＧＴが記載されている学習データのみを学習・検証に用いればよい。
複数の認識タスクを同時に学習するマルチタスク学習を行う場合は、マルチタスク（複数の認識タスク）に含まれるすべての認識タスクのＧＴがすべて対応している学習データだけを使ってもよい。あるいは、１つ以上の認識タスクのＧＴが対応している学習データを使ってもよい。後者の場合で学習する際には、たとえば、学習に使用するデータにＧＴが対応付けられている出力ユニットのみから誤差を算出してバックプロパゲーションして学習する。
【００２６】
ベリファイデータ（ベリフィケーションデータ）３１は、第２のメモリ１５に予め格納されているものとする。ベリファイデータ３１は、学習されたＤＣＮＮの性能を検証するためのデータ（画像）である。ベリファイデータ３１は学習データ３０とは重複しないデータ内容を持つ。ベリファイデータ３１のフォーマット（構造）は、学習データ３０のフォーマットと同様である。つまり、本実施形態では、ベリファイデータ３１は、画像と各認識タスクのＧＴを含む。ベリファイデータは、検証データまたは照合データと称することもできる。
【００２７】
許容劣化度３２は各認識タスクに対する許容劣化度であり、ユーザにより入力装置１２を介して設定されて、第２のメモリ１５に予め格納されているものとする。許容劣化度３２は、ある認識タスクを個別に学習したシングルタスクＤＣＮＮの精度に比べて、下層部の学習パラメータを他の認識タスクと共用したマルチタスクＤＣＮＮ（におけるその認識タスク）の精度が、どの程度劣化しても許容できるかを示す値である。本実施形態では、許容劣化度３２は、認識タスクごとに、シングルタスクＤＣＮＮの精度に対するマルチタスクＤＣＮＮの精度の比率として、０．０以上１．０以下の実数値で設定される。この実数値は、予めユーザが設定しておく。つまり、ユーザが要求する精度の許容限界は、許容劣化度として表現・設定されている。
【００２８】
なお、ユーザが要求する精度の許容限界は、許容劣化度３２として表現・設定しなくてもよい。たとえば、ユーザが要求する精度の許容限界は、精度評価部２１によって算出される精度評価値の絶対値（許容精度値）で指定してもよい。その場合、共用層候補採否判定部２４の判定は、シングルタスクＤＣＮＮの精度に許容劣化度３２をかけたものを基準にして行われるのでなく、絶対値で指定した許容精度値を基準にして行われる。
学習済ＤＣＮＮ３３は、たとえばバックプロパゲーションにより学習したＤＣＮＮである。初期精度３４は、学習した初期構造のＤＣＮＮにおける各認識タスクの精度である。層共用タスクリスト３５には、ｉ層目で層を共用する可能性がある認識タスクのＩＤのリストが記載（記録）される。共用層候補３６は、共用層候補生成部２２により生成されたｉ層の共用層候補である。
【００２９】
候補マルチタスクＤＣＮＮ３７は、層共用タスクリスト３５に記録されている認識タスクのi層目を共用層候補３６で共用する構造をもつマルチタスクＤＣＮＮである。候補マルチタスクＤＣＮＮ精度３８は、再学習した候補マルチタスクＤＣＮＮのそれぞれの認識タスクの精度である。共用層候補母集団３９は、層共用タスクリスト３５に記録されているすべての認識タスクのｉ層目に含まれるすべての畳みこみフィルタの集団である。フィルタクラスタ４０には、共用層候補母集団３９を所定の数のクラスタにクラスタリングしたものが格納される。許容精度４１は、認識タスクに対する許容精度である。共用層候補採否判定結果４２は、認識タスクごとに共用層候補ＳＬiを採用するかどうかを判定した結果である。
第１のメモリ１４内に示されている各部（各機能ブロック）は、プログラムとして第１のメモリ１４に記憶され、ＣＰＵ１１により実行される。
【００３０】
（ハードウェア構成）
図１に示す機能ブロックの少なくとも一部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、たとえば、所定のコンパイラを用いることで、各ステップを実現するためのプログラムからＦＰＧＡ上に自動的に専用回路を生成すればよい。ＦＰＧＡは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウェアとして実現するようにしてもよい。さらに、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により実現するようにしてもよい。
また、第１のメモリ１４と第２のメモリ１５は、それぞれプログラムを格納するメモリとデータを格納するメモリとを区別しているだけであり、１つのメモリとしてもよい。
【００３１】
（マルチタスクＤＣＮＮの初期構造）
本実施形態の学習装置１０は、初期構造を有するマルチタスクＤＣＮＮから、最終的に、複数の認識タスクに対して好適（または最適）であるような１つのマルチタスクＤＣＮＮ構造を決定する。まずマルチタスクＤＣＮＮの初期構造について、図２を用いて説明する。
図２は、複数の認識タスクを個別に学習するように構成されたＤＣＮＮ構造を説明する図である。このＤＣＮＮ構造で処理する認識タスクの数をＮとする。図２ではＮ＝４である。
図２のＤＣＮＮ構造（初期構造）では、各認識タスクのＮＮ（ニューラルネットワーク）はすべての層において独自の層(学習パラメータ)をもっており、共用される中間層はない。図２のＤＣＮＮ構造で学習するということは、各認識タスクを独立した個別のＤＣＮＮで学習することと事実上同じである。
【００３２】
なお、以下の説明をわかりやすくするため、図２では複数の認識タスクが入力画像３０１で連結して１つのネットワークのように図示されているが、実際には各認識タスクで独立したシングルタスク学習を行う。すなわち、入力画像３０１のブロックをそれぞれの認識タスクごとに分けて図示して、４つの独立した複数のＤＣＮＮとして表現しても同じである。図２において画像はＩＭＧと記されている。
本処理を適用する状況としては、独立に学習された複数のＤＣＮＮが既に存在しており、それらから１つの好適なマルチタスクＤＣＮＮ構造を生成する場合もある。
後述する本実施形態の全体の処理の流れ（図３）によって、図２で示した事実上独立している複数のＤＣＮＮ初期構造を、１つの好適なマルチタスクＤＣＮＮ構造に最適化（好適化）していく。このマルチタスクＤＣＮＮ構造は、複数の認識タスクを実行可能であり、中間層の一部が認識タスク間で共用されているＤＣＮＮ構造である。
【００３３】
なお、図２は、学習フェーズにおける例を示している。すなわち、出力層３０２の後にＧＴ３０３を教師値として与えて学習する場合を示している。評価処理や認識処理を行う際には、ＧＴ３０３は与えず、出力層３０２の値をそのまま認識結果とすればよい。つまり、学習装置１０によって学習されたマルチタスク多層ニューラルネットワークによって認識処理を実行すると、学習装置１０は認識処理装置として機能することになる。
本実施形態では、学習するＤＣＮＮの畳みこみ層の数をＭと表記する。図２ではＭ＝４である。Ｍの数は認識タスクごとに異なってもよいが、本実施形態では説明を簡単にするため、Ｎ種類すべての認識タスクに対して同じＭ層のＤＣＮＮを学習するとして説明する。
また、Ｍ個の畳みこみ層の後には、全結合のＮＮによる層が数層つづくものとする。全結合は、図２ではＦＣと記してある(ＦＣ:Ｆｕｌｌ  Ｃｏｎｎｅｃｔ)。全結合層は複数層あってもよい。図２では、何層であってもまとめて１つのブロックで示してある。
【００３４】
図２のＲ１、Ｒ２、Ｒ３およびＲ４は認識タスクの種別を示し、ＲＴと表したときの添え字Ｔは、認識タスクのＩＤ番号(１〜Ｎ)である。本実施形態では、上記したようにＮ＝４である。畳みこみ層はＣＬＴＬと表す(ＣＬ:Ｃｏｎｖｏｌｕｔｉｏｎ  Ｌａｙｅｒ)。下添え字Ｔは認識タスクのＩＤ番号であり、Ｌは層の階層番号(１〜Ｍ)である。上記したように、本実施形態ではＭ＝４であり、階層番号は入力に近いほうから順に大きくなる。学習前の畳みこみ層はすべて適当な値で初期化されているものとする。
なお、各認識タスクの各層での畳みこみフィルタの数は事前に設定されているものとする。畳みこみフィルタの数は、認識タスク種別ごとに異なっていてもよい。以下の説明において、各認識タスクの各層の畳みこみフィルタの数をＮＣＬＴＬで表す。添え字ＴとＬは前述のとおりである。
【００３５】
（学習装置の処理フロー）
以下、図３を参照して本実施形態の学習装置１０の処理の流れを説明する。
はじめに、Ｓ１において、学習部２０を用いて図２に示した初期構造のＤＣＮＮを学習し、学習されたＤＣＮＮを、学習済ＤＣＮＮ３３として第２のメモリ１５に格納する。
前述のように、図２は学習フェーズ（学習時）のＤＣＮＮを示している。図２における入力画像３０１と各認識タスクのＧＴ３０３として、第２のメモリ１５に格納されている学習データ３０を用いる。入力画像３０１は学習画像であり、ＧＴＴはＴ番タスクに対するＧＴデータである。なお、上記したように、必ずしもすべての学習画像にすべての認識タスクのＧＴが対応付けられている必要はない。
【００３６】
以下の記載において、学習された層ＣＬＴＬはＣＬＴＬ[ｊ]と表記する。ｊはその層を学習し直した累積学習回数である。すべての認識タスクのすべての層はＳ１で１回学習された状態なので、ＣＬＴＬ[１]となる。
Ｓ２において、第１のメモリ１４の精度評価部２１を用いて、Ｓ１で学習した初期構造のＤＣＮＮにおける各認識タスクの精度をそれぞれ算出し、初期精度３４として第２のメモリ１５に格納する。精度評価部２１は、第２のメモリ１５のベリファイデータ３１を用いて学習済ＤＣＮＮ３３の精度を算出すればよい。精度算出の定義が認識タスクごとに定義されていることは、前述したとおりである。
【００３７】
図４はＳ２の処理の詳細を説明する図である。Ｓ２で精度算出される（つまり精度評価される）学習済ＤＣＮＮ３３は、すべての認識タスクのすべての層においてＳ１で１回学習されている状態なので、ＣＬＴＬ[１]と表記してある。第２のメモリ１５のベリファイデータ３１から画像を読み出して、当該画像をベリファイ画像４０１として学習済みＤＣＮＮ３３に入力し認識処理を行う。そして、各認識タスクの出力層ＯＵＴＴに現れる出力値４０２を、ベリファイデータ３１から読み出した各認識タスクのＧＴ４０３と比較し、各認識タスクの精度４０４を算出する。図４において、認識タスクＲ１〜Ｒ４の精度４０４は、それぞれ精度Ｒ１〜精度Ｒ４と記されている。
【００３８】
図３に戻ると、Ｓ３以降では、共用層候補の生成処理と、当該共用層候補の採用を認識タスクごとに判定する処理とを繰り返し行う。
Ｓ３において、共用対象とする層を示すインデックス（ループインデックス）ｉを１に初期化する。また、ｉ層目で層を共用する可能性がある認識タスクのＩＤのリストを格納するメモリ（記憶部）として、第２のメモリ１５の層共用タスクリスト３５を初期化する。初期状態ではすべての認識タスクが層を共用できる可能性があるため、層共用タスクリスト３５にはすべての認識タスクのＩＤを記録しておく。
【００３９】
Ｓ４において、共用層候補生成部２２によりｉ層の共用層候補を生成し、第２のメモリ１５に共用層候補３６として格納する。ｉ層の共用層候補は、ＳＬiと記す。ＳＬはＳｈａｒｅｄ  Ｌａｙｅｒの略である。
共用層候補生成部２２が行う処理の概要は以下のようなものである（詳細は図５参照）。層共用タスクリスト３５に記録されているすべての認識タスクの所定の層(ここではｉ層目)に含まれるすべての畳みこみフィルタを共用層候補母集団と称することにする。共用層候補生成部２２は、共用層候補母集団から代表的な畳みこみフィルタを選出（選択）して共用層候補を生成する。畳みこみ層に含まれる畳みこみフィルタの内容は複数の認識タスクのＤＣＮＮにおいて類似することがあり、互いに入れ替え可能なこともある。したがって、複数の認識タスクの畳みこみフィルタ(共用層候補母集団)から代表的なものを選んで共用層候補とすれば、当該共用層候補は、ある認識タスクの畳みこみ層と入れ替えても精度劣化が少ないことが期待できる。
【００４０】
図５は共用層候補生成部２２が行う処理を説明する図である。図５において、共用層候補母集団は符号５０１で示されている。共用層候補母集団５０１は、すべての認識タスクのｉ層目全体に含まれるすべての畳みこみフィルタからなる。共用層候補母集団５０１から共用層候補生成部２２により生成（算出）された共用層候補５０２は、図５においてＳＬiと記されている。添え字ｉは層の番号(１≦ｉ≦Ｍ)である。図５のＳＬ１は、１層目に対して生成された共用層候補であることを示す。
図３に戻ると、Ｓ４の次にＳ５が実行される。Ｓ５において、層共用タスクリスト３５に記録されている認識タスクのｉ層目をＳ４で生成された共用層候補３６(ＳＬｉ)で共用するような構造をもつマルチタスクＤＣＮＮ（ＭＴＤＣＮＮ）構造を生成する。生成したマルチタスクＤＣＮＮ構造を、第２のメモリ１５に候補マルチタスクＤＣＮＮ３７として格納する。
【００４１】
図６はＳ５で生成された候補マルチタスクＤＣＮＮ３７を説明する図である。
ｉ＝１の場合は層共用タスクリスト３５には全部の認識タスクが記録されているため、全部の認識タスクで１層目は共用層候補ＳＬ１を共用するような構造が候補マルチタスクＤＣＮＮ３７になる。
ｉ＞１の場合は、層共用タスクリスト３５に記録されていない認識タスク(タスクＩＤをｔとする)については共用層候補ＳＬiを共用させず、ｉ−１回目のループにおいて再学習してあった当該タスクｔのｉ層目以上(ＦＣ層まで)を使用するように構成する。このように、ｉ＞１で層共用タスクリスト３５に全認識タスクが記載（記録）されていない場合の処理の詳細については、ｉ＝２のループの際の処理を用いて後述する（図９）。
【００４２】
次に、Ｓ６において、候補マルチタスクＤＣＮＮ３７のうち、層共用タスクリスト３５に記録されている認識タスクについて、再学習部２３によって学習する。再学習部２３は学習の機能としては学習部２０と同様のものであるが、学習の設定が異なる。再学習部２３では、入れ替えた共用層候補ＳＬi以下の層は更新せず、ｉ＋１層目以上の層だけを再学習する。このような設定にするには、たとえば、学習部２０の学習率設定において共用層候補ＳＬiより下の層や層共用タスクリスト３５に記載（記録）がない認識タスクの層に関する学習率を０に設定すればよい。
ｉ＝１のループでは、はじめに図２の構造ですべての層が学習され(累積学習回数＝１)、つづいてＳ６で２層目以上の層が再学習されるので(累積学習回数＝２)、２層目以上の層はＣＬＴＬ[２]となる(Ｌ≧ｉ＋１)。
【００４３】
Ｓ７において、第１のメモリ１４の精度評価部２１を用いて、再学習した候補マルチタスクＤＣＮＮのそれぞれの認識タスクの精度を算出（評価）し、候補マルチタスクＤＣＮＮ精度３８として第２のメモリ１５に格納する。
図７はＳ７の処理を説明する図である。図４における説明と同様に、第２のメモリ１５のベリファイデータ３１から画像を読み出してベリファイ画像７０１として認識処理を行う。そして、各認識タスクの出力層ＯＵＴＴに現れる出力値７０２を、ベリファイデータ３１から読み出した各認識タスクのＧＴ７０３と比較し、各認識タスクの精度７０４を算出する。図７において、認識タスクＲ１〜Ｒ４についてそれぞれ算出された精度７０４は、精度Ｒ１’〜 精度Ｒ４’と記されている。
この際、図１の第１のメモリ１４の性能評価結果出力部２６を用いて、Ｓ７で算出された各認識タスクの精度（性能）７０４を出力装置１３に表示させてもよい。つまり、性能評価結果出力部２６は、精度評価部２１を用いて算出された各認識タスクの精度評価値(図７の精度７０４)を出力装置１３に表示させてもよい。
【００４４】
さらに、図１の第１のメモリ１４のＮＮ構造出力部２７を用いて、精度評価を行ったＤＣＮＮの構造を出力装置１３に表示させてもよい。つまり、ＮＮ構造出力部２７は、ＤＣＮＮの構造を出力装置１３に表示させてもよい。たとえば図１０のような最終的な共用構造図を出力装置１３のディスプレイに出力（表示）させる。ディスプレイが共用構造図を表示することにより、共用構造図（層共用状態）をユーザに提示することができる。
このように、認識タスクごとの精度や層共用状態をユーザに提示することにより、ユーザは、どの認識タスク同士の処理をどの程度まで共用した構造において各認識タスクの精度がどうなるかを把握することができる。当該把握により、ユーザは、認識タスクごとの各層のフィルタ数や学習データ数を調整するなどの人為的調整のための指針を得ることができる。
【００４５】
次に、Ｓ８において、第１のメモリ１４の共用層候補採否判定部２４を用いて、認識タスクごとに共用層候補ＳＬiを採用するかどうかを判定する。共用層候補採否判定部２４の処理の詳細については図１２のフローチャートを用いて後述する。共用層候補採否判定部２４の判定結果は、共用層候補採否判定結果４２として第２のメモリ１５に格納される。共用層候補採否判定結果４２（または当該共用層候補ＳＬｉ）に記載されているタスクＩＤが共用層候補ＳＬiを採用するタスクＩＤである。
【００４６】
Ｓ９において、第１のメモリ１４の共用構造決定部２８によって、Ｓ８の判定結果（共用層候補採否判定結果４２）に基づいて、マルチタスクＤＣＮＮ構造を決定し、決定後のＤＣＮＮ構造を学習済ＤＣＮＮ３３に上書きする。共用構造決定部２８によるマルチタスクＤＣＮＮの構造の決定方法は以下のとおりである。Ｓ８で共用層候補を採用すると判定された認識タスクＲＴでは、i層目で共用層候補ＳＬiを共用し、ｉ＋１層目以上のｋ層(ｋ≧ｉ＋１)では候補マルチタスクＤＣＮＮ３７のＣＬＴｋを使用する。Ｓ８で共用層を採用しないと判定された認識タスクＲＴでは、i層目以上のｊ層(ｊ≧ｉ)で学習済ＤＣＮＮ３３のＣＬＴｊを使用する。すなわち、採用しないと判定された認識タスクがあった場合には、その層でマルチタスクＤＣＮＮの構造に分岐が起こることになる。その具体的な様子は、図９および図１０を用いて後述する。
【００４７】
Ｓ１０において、Ｓ８の判定結果に基づいて、第２のメモリ１５の層共用タスクリスト３５を更新する。すなわち、共用層候補ＳＬiを採用しないと判定された認識タスクのＩＤを層共用タスクリスト３５から削除する。
Ｓ１１において、すべての畳みこみ層での処理が完了したか、または、層共用タスクリスト３５に記録されている認識タスクの数が１以下になったかを判定することで、層共用の可能性がある認識タスクがなくなったかどうかを判定する。図３のＳ１１では、層共用の可能性がある認識タスクがなくなることを「完了」と記している。層共用の可能性がある認識タスクがなくなっていれば（Ｓ１１：Ｙｅｓ）、Ｓ１３に進む。つまり、Ｓ１１がＹｅｓの場合、Ｓ４〜Ｓ１１〜Ｓ１２〜Ｓ４のループを抜けＳ１３に進む。層共用の可能性がある認識タスクが残っていれば、Ｓ１２に進む。Ｓ１２において、ｉを１加算し、Ｓ４に戻る。
【００４８】
Ｓ１３において、第１のメモリ１４のマルチタスク多層ＮＮ再学習部２５によって、学習済ＤＣＮＮ３３を学習部２０によって（学習部２０と同じように）再学習し、再学習したＤＣＮＮを学習済ＤＣＮＮ３３に上書き格納する。つまり、マルチタスク多層ＮＮ再学習部２５は、最終的に得られた学習済ＤＣＮＮ３３の全体を学習部２０によって再学習する。Ｓ６では共用層候補ＳＬiよりも上の層(ｉ＋１層)のみを再学習しているが、Ｓ１３では学習済ＤＣＮＮの全体を再学習している。
マルチタスク多層ＮＮ再学習部２５で再学習を行う場合、再学習の初期値としては上記のループを抜けた際に学習済ＤＣＮＮ３３に格納されているＤＣＮＮのパラメータを初期値とすればよい。
【００４９】
Ｓ１３において、最終的に得られた学習済ＤＣＮＮ３３の再学習を行う理由は以下のとおりである。
Ｓ１３に至る前のループで生成された学習済ＤＣＮＮ３３の共用層候補ＳＬiは、各認識タスクを個別に最適に学習した層ＣＬＴｉから代表的な畳みこみフィルタを集めたものである。そして、複数の認識タスクを個別に学習したＤＣＮＮの下層部は、ある程度入れ替えが可能である。共用層候補ＳＬiは複数の認識タスクのｉ層から代表的なフィルタを選出したものなので、複数の認識タスクのｉ層としておおむね適合した畳みこみフィルタを含んでいることが期待できる。しかし、共用層候補ＳＬiは最終的に決定されたマルチタスクＤＣＮＮ構造について（最終的に決定されたマルチタスクＤＣＮＮ構造の中で）学習データ３０に対して最適になるよう学習されたものではない。したがって、Ｓ１３において学習済ＤＣＮＮ３３を入力から出力まで全体的に学習し直す（再学習する）ことにより、Ｓ１０までの処理で決定されたマルチタスクＤＣＮＮ構造に対して学習データ３０がより適合するようなマルチタスクＤＣＮＮが学習される。
【００５０】
また、前述のように、再学習の初期値としてＳ１０で得られた学習済ＤＣＮＮ３３の結果を用いれば、ランダムな初期値から開始するよりも再学習が安定する。
なお、Ｓ１３の再学習が終わった後に得られた学習済ＤＣＮＮ３３（これを最終的に得られた学習済ＤＣＮＮと称してもよい。）に対して精度評価部２１によって精度評価をしてもよい。また、当該精度評価の結果を、性能評価結果出力部２６やＮＮ構造出力部２７によって出力装置１３に表示してもよい。このような表示により、ユーザは、最終的に学習装置１０により得られたマルチタスクＤＣＮＮの精度や共用構造を把握することができる。また、このような表示により、データの追加や畳みこみフィルタ数の変更などの人為的な調整のための指針が得られる。
【００５１】
また、Ｓ１３で行ったようなマルチタスク多層ＮＮ再学習部２５による処理を、Ｓ６における再学習処理でも毎ループごとに行ってもよい。そのために、上記した２つの再学習部（２３と２５）とは別の第３の再学習部を設けてもよい。ループごとに再学習を行うと、学習処理の回数が増えるが、ループごとにマルチタスク多層ＮＮを最適化（好適化）できるので、学習の精度が向上することが期待できる。学習時間（学習処理の回数）と学習精度はトレードオフの関係にあるので、たとえば、与えられた条件等に応じて、学習時間と学習精度のいずれを重要視するかを決める。
Ｓ１３の再学習が終わると、第２のメモリ１５の学習済ＤＣＮＮ３３には、好適な共用構造を持ったＤＣＮＮが学習済みの状態で格納され、学習処理が終了する。
【００５２】
（本実施形態で構築されるマルチタスクＤＣＮＮの構造）
以下の記載では、Ｓ４からＳ１０までの処理の繰り返しによって決定されるマルチタスクＤＣＮＮ構造がどのようになるかを具体的に説明する。この説明のために、以下のような１つの例を用いる。
まず、ｉ＝１のループにおいて、Ｓ８の共用層候補採否判定の結果に基づいて、Ｓ９では共用構造決定部２８によって認識タスクＲ１からＲ４のすべてが共用層候補(ＳＬｉ)を採用すると決定されたとする。
この場合にＳ９の共用構造決定部２８で決定されるＤＣＮＮは、図７と同じ構造である。したがって、Ｓ９では、Ｓ６で再学習された候補マルチタスクＤＣＮＮ３７と同じものが学習済ＤＣＮＮ３３に格納されることになる。
この場合、各認識タスクの２層目以降のＣＬＴｉ(ｉ≧２)はＳ６で再学習されたものであり、図７に示すように各ＣＬに対する累積学習回数は２である。
【００５３】
ｉ＝２のループにおいては、Ｓ４で、共用層候補生成部２２により第２層についての共用層候補(ＳＬ２)が生成される。
図８は共用層候補の生成の様子を示す図である。この例では層共用タスクリスト３５にはまだすべての認識タスクが記載されているので、各認識タスクの第２層目に含まれるすべての畳みこみフィルタが共用層候補母集団３９に格納される。この共用層候補母集団３９から共用層候補生成部２２によって代表的な畳みこみフィルタが選出され、共用層候補３６が生成される。図５の場合と同様に、図８においても共用層候補母集団８０１から共用層候補８０２が生成される。ｉ＝２なので、図８では共用層候補８０２はＳＬ２と記されている。
【００５４】
ここで、ｉ＝２のときのＳ８では、認識タスクＲ４のみが共用層候補ＳＬ２を採用しないと判定されたとして、Ｓ９の共用構造決定部２８の動作を図９を用いて説明する。
図９は、この場合にＳ９で共用構造決定部２８によって決定されるマルチタスクＤＣＮＮの構造を説明する図である。認識タスクＲ４は共用層候補ＳＬ１までは他の認識タスクと層を共用するが、２層目以上(ＣＬ４ｋ、ｋ≧２)は前ループで格納されている学習済ＤＣＮＮ３３のＣＬ４ｋ（ｋ≧２)を使用するように決定される。図９では、認識タスクＲ４については、ＳＬ１からＣＬ４２に矢印が伸びている。なお、認識タスクＲ１〜Ｒ３については、ＳＬ１からＳＬ２に矢印が伸びている。
すなわち、認識タスクＲ４の２層目以降については、Ｓ６で再学習した候補マルチタスクＤＣＮＮ３７の共用層候補ＳＬ１に、学習済ＤＣＮＮ３３に格納されているＤＣＮＮの認識タスクＲ４の２層目以降を接続したマルチタスクＤＣＮＮ構造を作る。それを学習済ＤＣＮＮ３３に上書き格納する。共用層候補ＳＬ１は、１回前のループで生成された共用層である。
【００５５】
図９では、共用層候補ＳＬ２を共用しないと判定された認識タスクＲ４の２層目(ＣＬ４２)以降の層は累積学習回数が２であり、前回のループで学習された学習パラメータを保持していることが示されている。認識タスクＲ１〜Ｒ３のＣＬＴ２以降の層は本ループで学習された学習パラメータを保持しており、累積学習回数は３である。
認識タスクＲ４のＩＤは、Ｓ１０において層共用タスクリスト３５から削除されるので、これ以降のループ（Ｓ４〜Ｓ１１〜Ｓ１２〜Ｓ４）で認識タスクＲ４が再学習の対象になることはない。よって、認識タスクＲ４は、ループを抜けた後にＳ１３において再学習されるのみである。
【００５６】
次のループ（ｉ＝３のループ）のＳ８において、認識タスクＲ３が共用層候補ＳＬ３を採用しないと判定された場合を図１０を用いて説明する。
図１０は、この場合にＳ９で共用構造決定部２８によって決定されるマルチタスクＤＣＮＮの構造を説明する図である。認識タスクＲ３のＣＬ３３以降の層の累積学習回数は３であり、認識タスクＲ１およびＲ２の累積学習回数は４である。図１０では、認識タスクＲ３については、ＳＬ２からＣＬ３３に矢印が伸びており、認識タスクＲ１およびＲ２についてはＳＬ２からＳＬ３に矢印が伸びている。
【００５７】
次のｉ＝４のループでは、層共用タスクリスト３５には認識タスクＲ１とＲ２のＩＤが残っている。たとえばｉ＝４のループにおけるＳ８では認識タスクＲ２が共用層候補ＳＬ４を採用しないと判定されたとする(認識タスクＲ２でなくＲ１が採用されないと判定された場合や認識タスクＲ１とＲ２の両方が採用されないと判定された場合も同様)。
この場合は、認識タスクＲ１とＲ２で共用層候補ＳＬ４を共用しない構造が最終的なマルチタスクＤＣＮＮの構造となり、このＤＣＮＮが学習済ＤＣＮＮ３３に格納される。その構造が図１０に示されている。認識タスクＲ１およびＲ２のＣＬＴ４(Ｔ＝１または２)層の累積学習回数は４のままであり、前回のループで学習された学習パラメータを保持していることが示されている。ｉ＝４のループで４層目の共用層候補母集団から生成された共用層候補ＳＬ４は破棄され、図１０に現れていない。
以上のように、各認識タスクのｉ層目を共用層候補ＳＬiとして共用した場合の精度の劣化具合が許容範囲であるかどうかにしたがって、認識タスクごとに共用層候補ＳＬiを使うかどうかが判定される。そして、当該判定の結果に応じて、各認識タスクに対して好適なマルチタスクＤＣＮＮの構造が決定される。
【００５８】
（共用層候補生成部２２の処理）
以下、本実施形態１の共用層候補生成部２２が実行する処理を、図１１のフローチャートに基づいて説明する。これは図３のＳ４で行われる処理である。
共用層候補生成部２２は、層共用タスクリスト３５に記録されているすべての認識タスクの所定の階層に含まれるすべての畳みこみフィルタ(共用層候補母集団)から代表的な畳みこみフィルタを選出して共用層候補を生成する。本実施形態では、所定の階層はｉ層目であるとするが、ｉ層目の前後をも含んでもよい。インデックスｉは、図３のＳ４〜Ｓ１１で使われているインデックスｉと同じである。
【００５９】
Ｓ２１において、層共用タスクリスト３５に記録されている認識タスクの所定の階層(ｉ階層目)からすべての畳みこみフィルタをコピー（収集）し、第２のメモリ１５の共用層候補母集団３９に格納する。層共用タスクリスト３５に記録されていない認識タスクの畳みこみフィルタはコピーしない。
Ｓ２２において、共用層候補母集団３９を所定の数のクラスタにクラスタリングし、第２のメモリ１５のフィルタクラスタ４０に格納する。以下の説明において、前記所定の数をＣＫと表記する。フィルタクラスタ４０は、クラスタごとに共用層候補母集団３９の畳みこみフィルタを分別して格納したものである。
【００６０】
所定の数ＣＫは、ユーザが設定してもよいし、各認識タスクのｉ層におけるフィルタ数ＮＣＬＴｉの平均値としてもよし、当該平均値にユーザが別途指定する係数をかけた値としてもよい。
所定の数ＣＫを各認識タスクのｉ層におけるフィルタ数ＮＣＬＴｉの平均値とした場合、所定の数ＣＫは式１で示される数となる。
ＣＫ＝（ΣＴＮＣＬＴｉ）／ＮＳ    (Ｔ ∈ 層共用タスクリスト)    （式１）
ただし、式１のＴはすべての認識タスクのタスクＩＤではなく層共用タスクリスト３５に記録されているタスクＩＤとする。また、式１のＮＳは層共用タスクリスト３５に記録されている認識タスクの数とする。
【００６１】
クラスタリングはｋ平均法（ｋ−ｍｅａｎｓ）などの方法で実施すればよい。本実施形態で採用するクラスタリングは、特定の手法に限定されない。クラスタリングの評価基準となる距離・類似度の定義には以下のようないくつかのバリエーションが考えられる。
（１）畳みこみフィルタ自体のユークリッド距離
（２）畳みこみフィルタで学習画像を畳みこんだ結果でのユークリッド距離
（３）（２）の結果に活性化関数をかけた結果でのユークリッド距離
（１）では、単純に畳みこみフィルタのパラメータ間のユークリッド距離を算出する。（１）の場合、共用層候補母集団３９は、畳みこみフィルタのパラメータ自体の類似度でクラスタリングされると言うこともできる。なお、畳みこみフィルタのパラメータ間のユークリッド距離は、学習パラメータのユークリッド距離としてもよい。また、（１）の場合、共用層候補母集団３９は、前記学習パラメータを画像フィルタとみなした画像類似度でクラスタリングされるとも言える。
【００６２】
（２）のクラスタリングを類似度で表現すると、共用層候補母集団３９は、畳みこみフィルタに実際に入力され得る画像サンプルである学習画像の分布に対して畳みこみフィルタがどのように反応するかという性質の類似度でクラスタリングされると言える。ここで使用する学習画像（画像データ）は、学習データ３０の画像データ全体である必要はなく、学習データ３０から適当な数だけランダムに選択した学習画像からなるサブセットでもよい。なお、（２）の類似度は、画像フィルタを所定の画像に適用した出力結果の類似度であるとも言える。
【００６３】
（３）のクラスタリングを類似度で表現すると、共用層候補母集団３９は、（２）に加えてＮＮで用いられる活性化関数の性質も反映した類似度でクラスタリングされると言える。この類似度は、前記画像フィルタを所定の画像に適用した出力結果の類似度に、所定の非線形処理を適用した結果の類似度であるとも言える。
なお、上記した距離および類似度の定義は例示であり、上記以外の定義を用いてもよい。たとえば、類似度として、（３）の前記所定の非線形処理を適用した結果の類似度に、所定のプーリング処理を行った結果の類似度を用いてもよい。
【００６４】
Ｓ２３において、フィルタクラスタ４０の各クラスタから代表畳みこみフィルタを選出する。代表畳みこみフィルタは各クラスタに含まれる畳みこみフィルタの平均フィルタとしてよいし、クラスタのセントロイドでもよいし、各クラスタに含まれる畳みこみフィルタからランダムに１つずつサンプリングしたものでもよい。なお、代表畳みこみフィルタを選出する方法は、上記したものに限定されない。
Ｓ２４において、Ｓ２３でクラスタごとに選出されたＣＫ個の代表畳みこみフィルタを共用層候補３６に格納し、処理を終える。
【００６５】
上記の例のようにクラスタリングを行って代表畳みこみフィルタを選出（選抜）する方法では、類似する畳みこみフィルタが複数選ばれないので、傾向が類似しない畳みこみフィルタがまんべんなく選ばれる。その結果、画像の様々な特徴を抽出することができ、なるべく多くの認識タスクから共用され得る共用層候補が生成される。なお、畳みこみフィルタは学習パラメータに含まれているので、上記のクラスタリングによる代表畳みこみフィルタの選出は、クラスタリングによる代表学習パラメータの選出であると言うこともできる。
【００６６】
なお、代表畳みこみフィルタを選出する方法として、クラスタリングに依る方法を採用しなくてもよい。たとえば、共用層候補母集団３９から代表畳みこみフィルタをランダムに選んで（ランダムサンプリングして）共用層候補としてもよい。この場合は類似する畳みこみフィルタが代表畳みこみフィルタとして選ばれてしまう可能性があるが、元々の共用層候補母集団の傾向のままに代表畳みこみフィルタを選ぶことができる。このようにすることによって、傾向が類似する多数派の認識タスクに適合した中間層候補が生成され、それと類似しない認識タスクにはあまり適合しない中間層候補が生成される。したがって、他の認識タスク群と類似しない認識タスクが入力に近い層で分岐するようなマルチタスクＤＣＮＮ構造を誘導（生成）することができる。
【００６７】
また、上記の説明では、Ｓ２１において共用層候補母集団３９に格納する畳みこみフィルタは層共用タスクリスト３５に記載されている認識タスクのｉ層目に含まれるすべての畳みこみフィルタとしたが、Ｓ２１の処理は、これに限定されない。たとえば、ｉ層目およびｉ層目の前後のｎ層に含まれるすべての畳みこみフィルタを共用層候補母集団３９に格納してもよい。ｎは、たとえば、ユーザが決めるパラメータである。
このようにすることで、ある特定の認識タスクのｊ層(ｊ≠ｉ)の畳みこみフィルタが別の認識タスクのｉ層の畳みこみフィルタとして有効であるような場合に、当該畳みこみフィルタを共用層候補に取り込めるようになる。
【００６８】
（共用層候補採否判定部２４の処理）
次に、本実施形態１における共用層候補採否判定部２４が実行する処理を、図１２に基づいて説明する。この処理は図３のＳ８で行われる処理である。
はじめに、Ｓ３１において、図１の第２のメモリ１５の初期精度３４に許容劣化度３２を積算した結果を許容精度４１として保持する。図１を用いて説明したように、許容劣化度３２は、認識タスクごとに０．０以上１．０以下の実数値で設定されており、事前に第２のメモリ１５に格納されている。初期精度３４も許容劣化度３２もすべての認識タスクに対する値が第２のメモリ１５に格納されているので、許容精度４１もすべての認識タスクに対して算出される。
【００６９】
処理対象の認識タスクのタスクＩＤを、以下の記載においてｔと記する。
Ｓ３２において、層共用タスクリスト３５の先頭に記載されているタスクＩＤを変数ｔにセットする。Ｓ３２の後、層共用タスクリスト３５に記載されている認識タスクについて、以下の処理を順次繰り返す。
Ｓ３３において、タスクＩＤがｔである認識タスクについて、第２のメモリ１５の候補マルチタスクＤＣＮＮ精度３８とＳ３１で取得した許容精度４１とを比較する。タスクＩＤがｔである認識タスクについて、候補マルチタスクＤＣＮＮ精度３８が許容精度４１より高ければ（Ｓ３３：Ｙｅｓ）、Ｓ３４に進む。Ｓ３４において、タスクＩＤがｔである認識タスクについては共用層候補を採用すると判定される。この判定結果は、第２のメモリ１５の共用層候補採否判定結果４２に格納される。この格納は、たとえば、採用すると判定した認識タスクのタスクＩＤのリストを記載すればよい。Ｓ３４の後に、Ｓ３５に進む。なお、Ｓ３３の判定は、再学習の評価のための判定であり、再学習の評価は、共用層候補を用いた場合の多層ニューラルネットワークの精度が許容範囲内であるか否かであるで行われていると言うこともできる。
【００７０】
一方、候補マルチタスクＤＣＮＮ精度３８が許容精度４１よりも低いか、候補マルチタスクＤＣＮＮ精度３８が許容精度４１と同じであれ（Ｓ３３：Ｎｏ）ば、Ｓ３５に進む。
Ｓ３５において、層共用タスクリスト３５に記載されているすべての認識タスクに対して上記の処理が完了したかどうか判定する。たとえば、現在のｔ（タスクＩＤ）が層共用タスクリスト３５に記載されている最後のタスクＩＤかどうかを判定すればよい。Ｓ３５で完了と判定されれば、ここで処理を終える。Ｓ３５で未完了と判定されれば、Ｓ３６に進む。
【００７１】
Ｓ３６において処理対象タスクを指す変数ｔを変更（更新）する。Ｓ３６の後、Ｓ３３に戻って次の認識タスクについて同様の処理をする。Ｓ３６でのｔの更新処理は、層共用タスクリスト３５で現在のｔの次に記載されているタスクＩＤにｔを更新すればよい。  
以上で、本実施形態における学習時（学習フェーズ）の処理の流れについての説明を終える。
なお、未知の入力画像に対して認識処理を行う場合は、学習済ＤＣＮＮ３３に画像データ（入力画像）を入力すれば、各認識タスクの出力ノードに出力値が現れるので、それを認識結果として利用すればよい。これは学習済ＮＮに対して認識時に（認識フェーズで）一般的に行われている手法である。
【００７２】
上記の記載では、複数のシングルタスクＤＣＮＮとみなせる図２のような初期構造から始め、所定の階層ごとに共用化していく方法を説明したが、元々部分的に共用構造をもつマルチタスクＤＣＮＮ構造を初期構造としてもよい。たとえば、図９に示すような構造のマルチタスクＤＣＮＮが別途学習済みであり、これを初期構造として本実施形態を適用してもよい。その場合には、それ以降に分岐がないような共用層を特定し（見つけ）、当該共用層以降の部分構造について本実施形態で説明したような処理を行えばよい。図９のＤＣＮＮ構造を初期構造とすると、共用層候補ＳＬ２以降の部分構造に対して本処理を適用すればよい。つまり、マルチタスクＤＣＮＮがすでに所定の階層範囲で共用層候補（ＳＬ１、ＳＬ２）を有している場合、所定の階層範囲の最後の共用層候補（ＳＬ２）の次の階層について共用層候補を生成すればよい。
また、図１では学習装置１０は入力装置１２と出力装置１３を含むとしたが、入力装置１２および出力装置１３の一方または両方を学習装置１０の外に設けてもよい。
【００７３】
（実施形態１の効果）
実施形態１の学習装置１０は、以下の効果を有する。
図３の制御フローに基づいて処理を行うことにより、複数の認識タスクに対して好適なマルチタスクＤＣＮＮの構造を自動的に決定することができる。
好適なマルチタスクＤＣＮＮの構造を見つける（決定する）際に、あり得るすべての構造の組み合わせの数だけ網羅的に探索する必要がなく、おおむね層の数程度の学習回数で好適なマルチタスクＤＣＮＮ構造を決定することができる。
【００７４】
認識タスクを個々に学習したＤＣＮＮの所定の階層の畳みこみフィルタ全体(共用層候補母集団３９)から共用層候補を生成（取得）し、当該共用層候補を使ったマルチタスクＤＣＮＮにおける各認識タスクの精度を評価するだけで共用可能性を判定している。よって、好適なマルチタスクＤＣＮＮの構造を見つける（決定する）際の探索範囲を大幅に限定（縮小）することができる。
各認識タスク用に学習された畳みこみ層の畳みこみフィルタからなる共用層母集団３９から共用層候補を生成することで、各認識タスクに適合すると期待できる共用層候補を生成することができる。
複数の認識処理を実行する際に要するメモリ量を、個々の認識タスクに対して個別のＤＣＮＮを保持するよりも少なくすることができ、処理速度も短縮することができる。
【００７５】
従来のマルチタスク学習においては、たとえば、与えられた複数の認識タスクに対して最も性能が良くなるように１つの識別器を学習することがある。このような場合、識別器の構造は与えられた１つのものであり、その構造の上でどのように最適に学習するかということが目的になる。そして、このような場合、どの認識タスク間でどの部分までをマルチタスク化するべきなのかということは全く考慮されない。つまり、ネットワーク（ＮＮ）構造自体を好適に決定するというようなことは全く考えていない。これに対し、実施形態１による学習装置１０によれば、ネットワーク構造自体（どの認識タスク間でどの部分までをマルチタスク化するべきなのか）を好適に決定することができる。
【００７６】
また、従来のマルチタスク学習においては、マルチタスク化しない方が認識性能が良いような認識タスクの組み合わせを発見して、当該認識タスクをマルチタスク学習から外して学習するように自動的に決定するということも提案されていない。よって、従来のマルチタスク学習においては、好適なマルチタスクＤＣＮＮ構造を得るためには網羅的な探索が必要になり、時間がかかる。これに対し、実施形態１の学習装置１０によれば、マルチタスク化しない方がよい認識タスクをマルチタスク学習から自動的に外すことができる。したがって、実施形態１の学習装置１０によれば、好適なマルチタスクＤＣＮＮ構造を得る際に網羅的な探索を行わないので、従来のマルチタスク学習と比較して、処理時間を短縮することができる。
【００７７】
非特許文献１では、２つの認識タスク間でどの層までが共用可能かを実験的（トライアルアンドエラー的）に確かめているが、与えられた複数の認識タスクに対して好適なマルチタスクＤＣＮＮ構造を決定する方法は提案していない。非特許文献１のような性能評価実験をすべてのマルチタスクＤＣＮＮ構造の候補に対して繰り返すことで好適な構造を網羅的に探索することも可能であるが、網羅的な探索は時間がかかる。これに対し、実施形態１の学習装置１０によれば、好適なマルチタスクＤＣＮＮ構造を得る際に網羅的な探索を行わないので、処理時間を短縮することができる。
【００７８】
実施形態１の学習装置１０によれば、複数の認識タスクをそれぞれ学習した複数の多層ＮＮ間で、処理内容を共有しても性能が落ちない処理層を探索している（共有層候補の生成と評価を繰り返す）。よって、単独学習時と同等の性能を維持したまま、より少ないメモリで高速処理可能なマルチタスク多層ＮＮの構成を算出することができる。つまり、複数の認識タスクを同時実行するマルチタスクＤＣＮＮの好適な構造を効率的に探索する学習を行っている。このように、認識タスクの精度を落とさずにＤＣＮＮの中間層を認識タスク間で共用することを可能にしているので、認識処理時のメモリ使用量を削減することができ、処理速度を高速化することができる。
【００７９】
実施形態２
共用層候補生成部２２の処理および構造を実施形態１とは異なったものにした場合を、実施形態２として説明する。なお、以下の記載では実施形態１との相違点を中心に説明し、実施形態１と同じものには同じ参照符号を用いる。
実施形態１の共用層候補生成部２２は、共用層候補母集団３９をクラスタリングによりＣＫ個のクラスタに分け、各クラスタから代表畳みこみフィルタを選出することにより、共用層候補となるべき畳みこみフィルタを選出している。つまり、実施形態１では、層共用タスクリスト３５に記載されている全認識タスクのｉ階層目の畳みこみ層ＣＬＴｉに含まれる全畳みこみフィルタ（共用層候補母集団３９）から、クラスタリングという手法によって共用層候補を選出・生成している。このような共用層候補の選出・生成により、共用層候補となるべき畳みこみフィルタの数を制御（削減）している。実施形態２においては、共用層候補母集団３９に含まれる畳みこみフィルタのパラメータ（学習パラメータ）をデータ圧縮の手法で削減することによって共用層候補を生成する。そのため、実施形態２の共用層候補生成部２２は、パラメータをデータ圧縮するデータ圧縮部を有する。
【００８０】
本実施形態において、データ圧縮とは、大量のパラメータを持つ畳みこみフィルタを、より少ないパラメータの畳みこみフィルタで近似して代替する処理のことである。ＤＣＮＮにおいては、いったん学習した畳みこみフィルタに対して行列分解などの手法を用いてより少ないパラメータで近似する方法がある。実施形態１ではクラスタ数ＣＫによって共用層候補に含まれる畳みこみフィルタのパラメータ数を制御していたが、実施形態２ではデータ圧縮処理の設定によってパラメータ数を制御する。
【００８１】
一般的に、パラメータ数の設定を少なく限定すれば近似精度が悪くなる。そして、性能（認識精度、認識性能）の劣化度合いとデータ圧縮によるパラメータ数の削減度合いはトレードオフの関係にある。しかし、共用層候補母集団３９に含まれる畳みこみフィルタに類似のものが多い場合は、ある程度パラメータ数が削減されても性能に大きな影響が出ないことが期待できる。これは実施形態１でクラスタリングによってフィルタを選出しても性能があまり劣化しないことが期待できるのと同じである。
【００８２】
このような畳みこみフィルタに対するデータ圧縮は、たとえば、次の文献に記載されている。
Ｊａｄｅｒｂｅｒｇ，Ｍ．，Ｖｅｄａｌｄｉ，Ａ．，＆  Ｚｉｓｓｅｒｍａｎ，Ａ．（２０１４）“Ｓｐｅｅｄｉｎｇ  ｕｐ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ  ｗｉｔｈ  ｌｏｗ  ｒａｎｋ  ｅｘｐａｎｓｉｏｎｓ．”ａｒＸｉｖ  ｐｒｅｐｒｉｎｔ  ａｒＸｉｖ：１４０５．３８６６．
この文献では、もともとのＤＣＮＮのＮ個のｄ*ｄサイズの畳みこみフィルタを、それぞれＭ個(Ｍ＜Ｎ)のｄ*１*１および１*ｄ*１ベクトルとＮ個の１*１*Ｍベクトルに分解することで近似し、パラメータを削減している。また、Ｋ個(Ｋ＜Ｎ)のｄ*１*１ベクトルとＮ個のｄ*１*Ｋベクトルに分解して近似する場合もある。
【００８３】
畳みこみフィルタに対するデータ圧縮は、次の文献にも記載されている。
Ｚｈａｎｇ，Ｘ．，Ｚｏｕ，Ｊ．，Ｍｉｎｇ，Ｘ．，Ｈｅ，Ｋ．，＆  Ｓｕｎ，Ｊ．（２０１４）“Ｅｆｆｉｃｉｅｎｔ  ａｎｄ  ａｃｃｕｒａｔｅ  ａｐｐｒｏｘｉｍａｔｉｏｎｓ  ｏｆ  ｎｏｎｌｉｎｅａｒ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｔｗｏｒｋｓ．”ａｒＸｉｖ  ｐｒｅｐｒｉｎｔ  ａｒＸｉｖ：１４１１．４２９９．
この文献では、もともとのＮ個の畳みこみフィルタを、同サイズのＭ個（Ｍ＜Ｎ）の畳みこみフィルタとＮ個の１*１*Ｍベクトルによって近似し、パラメータを削減している。
上記で例として挙げた各手法における設定パラメータはユーザが適宜決めるなどすればよい。
【００８４】
実施形態２の共用層候補生成部２２は、データ圧縮手法によって近似された畳みこみフィルタを算出し、これを共用層候補３６として第２のメモリ１５に格納する。精度評価時などでＮＮをフィードフォワードするときには、それぞれのデータ圧縮手法に基づいて近似畳みこみフィルタを使った畳みこみ演算を実施すればよい。
マルチタスク多層ＮＮ再学習部２５が共用層候補ＳＬiを再学習する際には、近似された畳みこみフィルタから所定数の畳みこみフィルタを逆に生成し、これを初期値として学習を始めればよい。前記所定数は、実施形態１と同様に式１などによって決めてもよいし、その層の共用層候補母集団に含まれるフィルタ数と同程度にしてもよい。再学習した後に再びデータ圧縮部によってその層を圧縮して近似された畳みこみフィルタで置き換えてもよい。
【００８５】
実施形態２の構成では、実施形態１のように共用層候補母集団３９にある畳みこみフィルタから代表畳みこみフィルタを選ぶ（共有層候補を生成する）のではなく、共用層候補母集団３９の全体を最適・好適に近似したフィルタ群（共用層候補）を生成する。これによって、生成された共用層候補がより多くの認識タスクに対して適合するようになるという効果が期待できる。
なお、上記の説明においてデータ圧縮とは、大量のパラメータを持つ畳みこみフィルタを、より少ないパラメータの畳みこみフィルタで近似して代替する処理であるとしたが、他の手法でデータ圧縮をしてもよい。たとえば、データ圧縮により、複数のフィルタを１つのフィルタにまとめるような処理を行ってもよい。当該１つのフィルタは、共用層候補母集団３９には存在していない形のフィルタであってよい。複数のフィルタを１つのフィルタにまとめるという処理を複数回行うことにより、共用層候補母集団３９のフィルタの数を削減し、共用層候補母集団３９の全体を最適・好適に近似したフィルタ群（共用層候補）を生成することができる。
【００８６】
（他の実施形態）
本発明は、上述の実施形態の第１のメモリ１５の１以上の機能を実現するプログラム（コンピュータプログラム）を、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（たとえば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８７】
２０…学習部、２２…共有層候補生成部、２３…再学習部、２４…共有層候補採否判定部
【図１】
0006750854.tif 000002
【図２】
0006750854.tif 000003
【図３】
0006750854.tif 000004
【図４】
0006750854.tif 000005
【図５】
0006750854.tif 000006
【図６】
0006750854.tif 000007
【図７】
0006750854.tif 000008
【図８】
0006750854.tif 000009
【図９】
0006750854.tif 000010
【図１０】
0006750854.tif 000011
【図１１】
0006750854.tif 000012
【図１２】
0006750854.tif 000013