以下に添付図面を参照して、この発明にかかる学習装置、学習システム、および学習方法の実施形態を詳細に説明する。
図1は、本実施形態の学習装置10の機能的構成の一例を示す機能ブロック図である。本実施形態の学習装置10は、ニューラルネットワークモデル32および目標制約条件30を用いて、深層学習モデルであるニューラルネットワークモデル33を設計する。
学習装置10は、構造探索部12と、パラメータ探索部14と、プルーニング部16と、モーフィング部18と、記憶部20と、を備える。
構造探索部12、パラメータ探索部14、プルーニング部16、およびモーフィング部18は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU(Central Processing Unit)などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のICなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
記憶部20は、各種のデータを記憶する。本実施形態では、記憶部20は、モデル設計情報22などの各種データを記憶する。
モデル設計情報22は、ニューラルネットワークモデル33の学習に用いる情報である。ニューラルネットワークモデル33は、学習装置10によって学習(設計)された後のニューラルネットワークモデルである。ニューラルネットワークモデル32は、学習装置10による学習(設計)前のニューラルネットワークモデルである。
モデル設計情報22は、学習データセット24と、ベースモデル構造26と、学習パラメータ28と、目標制約条件30と、を含む。ベースモデル構造26および学習パラメータ28は、学習装置10による学習前、すなわち、設計前のニューラルネットワークモデル32に相当する。ベースモデル構造26および学習パラメータ28は、後述する構造探索部12、パラメータ探索部14、プルーニング部16、およびモーフィング部18の処理によって更新され、ニューラルネットワークモデル33が設計される(詳細後述)。
学習データセット24は、ニューラルネットワークモデル32の教師データの群である。
教師データは、学習用データと、評価用データと、正解ラベルと、の組合せからなる教師データの群である。例えば、ニューラルネットワークモデル32が画像識別のための学習モデルであると想定する。この場合、学習データセット24は、学習に用いる画像、評価に用いる画像と正解ラベルとの組合せからなる教師データの群である。詳細には、例えば、ニューラルネットワークモデル32が手書き数字文字認識のための学習モデルであると想定する。この場合、学習データセット24は、手書き数字を含む学習用の画像と、評価用の画像と、予め人手などでその数字の正解を付した正解ラベルと、の組合せからなる教師データの群である。評価用データは、学習された後のニューラルネットワークモデル33を評価するためのデータである。
なお、ニューラルネットワークモデル32は、画像識別ための学習モデルに限定されない。例えば、ニューラルネットワークモデル32は、クラスタリングタスク、レジストレーションタスク、セグメンテーションタスク、生成タスク、回帰タスク、強化タスク、などの他のタスクのための学習モデルであってもよい。また、学習データセット24の入力データは、音声データ、時系列データ、言語・テキストデータ、などの画像以外のデータであってもよいし、点群データ、ボクセルデータ、レーダー信号などのデータであってもよい。
ニューラルネットワークモデル32は、画像識別、クラスタリングタスク、などの上記の様々なタスク、および、画像や画像以外のデータなどの様々な入力データに対して、汎用的に利用可能な深層学習モデルである。本実施形態では、ニューラルネットワークモデル32が、画像から物体などの目標物を検出する物体検出タスクのための学習モデルである場合を、一例として説明する。
このため、本実施形態では、学習データセット24は、入力データである学習用の画像と、評価用の画像と、出力データである物体検出の正解ラベルと、の組合せからなる教師データの群である場合を、一例として説明する。
図2Aおよび図2Bは、学習データセット24における、入力画像34と正解ラベル36との組合せの一例を示す図である。図2Aは、入力画像34の一例を示す図である。図2Bは、図2Aの入力画像34に対する正解ラベル36の一例を示す図である。正解ラベル36は、例えば、歩行者36A、車36B、自転車、等の物体ごとに異なる輝度値が正解ラベル36として与えられる。なお、学習データセット24は、図2Aおよび図2Bに示す例に限定されない。
図1に戻り説明を続ける。物体検出の技術として、SSD(Single Shot Detection)が知られている(W. Liu, et. al. “SSD: Single Shot MultiBox Detector,”ArXiv preprint, https://arxiv.org/abs/1512.02325)。
本実施形態では、ニューラルネットワークモデル32として、上記SSDの前段の特徴抽出部分にResNet−Nを利用した例を説明する。ResNetは、近年様々なタスクに利用されるネットワーク構造であり、ResBlockを複数組み合わせてニューラルネットワークを深くすることで学習モデルの表現能力および性能を向上させる、深層学習モデルである。また、ResNetは、ネットワークを深くしても安定して学習が可能な深層学習モデルである。上記NはResNetの深さを表している。ResNetとしては、例えばResNet−34、ResNet−50などの様々な構造が知られている。本実施形態では、ニューラルネットワークモデル32の構造が、ResNet−34相当である場合を一例として説明する。
ベースモデル構造26は、ニューラルネットワークモデル32の構造部分(アーキテクチャ)を示す情報である。ベースモデル構造26は、複数の畳み込み処理ブロックを有する。
図3は、ベースモデル構造26の一例を示す模式図である。図3には、ResNet構造である、ニューラルネットワークモデル32のベースモデル構造26の一例を示した。
ベースモデル構造26は、複数の畳み込み処理ブロック26Bを含む。畳み込み処理ブロック26Bは、例えば、ResBlockのような処理ブロックの塊である。図3には、一例として、16個の畳み込み処理ブロック26Bと、出力層26Cと、を示した。しかし、畳み込み処理ブロック26Bの数は、16個に限定されない。
また、図3には、複数の畳み込み処理ブロック26Bの各々の出力が、何れの他の畳み込み処理ブロック26Bまたは出力層26Cに接続されるかを示す矢印を示した。
図3中、畳み込み処理ブロック26Bの各々の幅(矢印X方向の長さ)は、畳み込み処理ブロック26Bの各々におけるユニットの数に相当する。ユニットの数とは、畳み込み処理ブロック26Bの演算ユニットの数である。ユニットは、畳み込み処理ブロック26Bが全結合層である場合にはノード、畳み込み処理ブロック26Bが畳み込み層である場合には畳み込みフィルタ、と称される場合がある。以下では、ユニットの数を、単に、ユニット数と称して説明する場合がある。
ベースモデル構造26では、ユニット数が増えるタイミングで、空間的な幅をサンプリングする単位であるstride幅を広げたり、空間的なサブサンプリング手法の1つであるpooling処理を用いたりして、画像の解像度を縦横共に1/2にするのが一般的である。畳み込み処理ブロック26Bの幅が長いほど、その畳み込み処理ブロック26Bで保持するフィルタ数が多いことを意味する。
図1に戻り説明を続ける。本実施形態では、記憶部20は、ニューラルネットワークモデル32のベースモデル構造26と、該学習パラメータ28と、を、予め記憶する。例えば、記憶部20は、別のモデル設計装置などで学習データセット24を用いて予め学習された大規模なサイズのニューラルネットワークモデル32の、ベースモデル構造26および学習パラメータ28を予め記憶する。
次に、目標制約条件30について説明する。目標制約条件30は、目標ハードウェアでニューラルネットワークモデル32を動作させるための制約条件を示す情報である。
目標ハードウェアとは、学習装置10で学習したニューラルネットワークモデル33を動作させる対象のハードウェアである。言い換えると、目標ハードウェアとは、ニューラルネットワークモデル33を用いた各種処理を実行するハードウェアである。目標ハードウェアは、CPU、FPGA(Field−Programmable Gate Array)、または、ASIC(Application Specific Integrated Circuit)などのプロセッサを備えたコンピュータである。例えば、目標ハードウェアは、モバイル端末、車載端末、などに搭載されるプロセッサである。また、目標ハードウェアは、演算性能が所定性能以下のプロセッサであってもよい。
目標制約条件30は、言い換えると、目標ハードウェアのスペックによって定まる指標である。
図4は、目標制約条件30の一例を示す図である。目標制約条件30は、目標ハードウェアの識別情報であるハードウェアIDに対応付けて記憶される。図4には、目標制約条件30がハードウェアIDを含む場合を一例として示した。ハードウェアIDは、目標ハードウェアの識別情報である。目標制約条件30は、例えば、モデルサイズ、モデルの演算量、レイテンシ、消費電力、推論速度、使用メモリ量、ニューラルネットワークモデルのメモリサイズ、および、メモリバンド幅、の少なくとも1つの項目と、各項目に対応する目標値と、を含む。
モデルサイズは、ニューラルネットワークモデル32のサイズである。モデルサイズの目標値は、例えば、ニューラルネットワークモデル32が有するパラメータ数によって表される。モデルの演算量は、ニューラルネットワークモデル32の演算量である。モデルの演算量の目標値は、例えば、ニューラルネットワークモデル32を推論する際の演算量で表される。
消費電力は、ニューラルネットワークモデル32の推論時の消費電力である。推論速度は、ニューラルネットワークモデル32の推論速度である。推論速度(レイテンシ)は、ニューラルネットワークモデル32の推論速度である。使用メモリ量は、ニューラルネットワークモデル32の使用メモリ量である。メモリバンド幅は、ニューラルネットワークモデル32のメモリバンド幅である。なお、消費電力、推論速度、メモリ量、およびメモリ幅は、例えば、対応するハードウェアIDによって識別される目標ハードウェア上でニューラルネットワークモデル32を動作させる、もしくは同等の動作をシミュレートすることによって、予め測定すればよい。
目標制約条件30に含まれる各項目の目標値は、対応する項目の評価指標の上限値を示す。
例えば、ニューラルネットワークモデル32がセグメンテーションタスクのための学習モデルである場合、評価指標には、Precision/recallなどや、IoU(Intersection over Union)などの様々な評価指標が含まれる。
図1に戻り説明を続ける。
構造探索部12は、ベースモデル構造26に含まれる複数の畳み込み処理ブロック26Bの各々に、目標ハードウェアの目標制約条件30に応じた探索空間情報を選定した、第1学習済モデル構造27Aを探索する。すなわち、構造探索部12によって、モデル設計情報22に含まれるベースモデル構造26が第1学習済モデル構造27Aに更新される。
構造探索部12は、互いに演算方法の異なる複数の探索空間情報から、目標ハードウェアの目標制約条件に応じた探索空間情報を、畳み込み処理ブロック26Bの各々に選定する。
図5は、構造探索部12の機能的構成の一例を示す機能ブロック図である。構造探索部12は、ベイズ探索部12Aと、探索空間設定部12Bと、評価部12Cと、を含む。
構造探索部12にモデル設計情報22が入力されると、探索空間設定部12Bは、互いに演算方法の異なる複数の探索空間情報38を、ベイズ探索部12Aへ出力する。
図6は、探索空間情報38の一例を示す説明図である。探索空間情報38は、例えば、Plain構造38A、Bottleneck構造38B、ResNeXt構造38C、MobileNetV1構造38D、MobileNetV2構造38E、ShuffleNet構造38F、およびSkip構造38Gの少なくとも1つである。これらの探索空間情報38(Plain構造38A〜Skip構造38G)は、互い演算量が異なる。なお、ここでは畳み込み処理で一般的に利用される構造を示しているが、これらの構造に限定されない。
Plain構造38Aは、最も一般的な畳み込み構造である。Bottleneck構造38B〜Skip構造38Gは、Plain構造38Aより畳み込み処理の演算量が少ない探索空間情報38である。
例えば、Plain構造38Aは、空間方向とチャネル方向からなり、畳み込み処理の演算量が極めて多い構造である。Bottleneck構造38Bは、空間方向とチャネル方向を分離し、最初にチャネル方向で畳み込み処理を行った後、空間方向で畳み込み処理を行い、最後に再度チャネル方向の畳み込み処理を行う、分離型の畳み込み構造である。ResNeXt構造38Cは、Bottleneck構造38Bの派生であり、チャネルをグループに分けて畳み込み処理を行う構造である。MobileNetV1構造38Dは、DepthwiseとPointwiseで畳み込み処理を行う構造である。MobileNetV2構造38Eは、Bottleneck構造38BとMobileNetV1構造38Dを組み合わせて、空間方向の畳み込み処理をDepthwiseとした構造である。ShuffleNet構造38Fは、ノードをグループに分けてチャネル方向に畳み込み処理を行った後に、グループ間を混ぜて畳み込み処理を行う構造である。
Skip構造38Gは、畳み込み処理を行わない構造である。すなわち、Skip構造38Gは、入力データをそのまま出力する構造である。Skip構造38Gを畳み込み処理ブロック26Bの探索空間情報38として選定した場合、該畳み込み処理ブロック26Bは畳み込み処理を行わない処理ブロック(層)となる。図6には、他の探索空間情報38(Plain構造38A〜MobileNetV2構造38E)との差を明確にするために、Skip構造38Gについて、各チャネルに独立して定数を掛けた図を示した。しかし、上述したように、Skip構造38Gは、入力データをそのまま出力する構造を含む。このため、Skip構造38Gを畳み込み処理ブロック26Bの探索空間情報38として選定した場合、ベースモデル構造26を構成する畳み込み処理ブロック26Bの数を削減することができ、ニューラルネットワークモデル32の深さ方向の演算量の削減を図ることができる。
図5に戻り説明を続ける。ベイズ探索部12Aは、探索空間設定部12Bから入力された複数の探索空間情報38に従って、モデル設計情報22に含まれるベースモデル構造26を構成する複数の畳み込み処理ブロック26Bの各々に選定する探索空間情報38を探索する。ベイズ探索部12Aは、目標制約条件30下で好適となる探索空間情報38を、複数の畳み込み処理ブロック26Bの各々で探索する。
ベイズ探索部12Aは、例えば、ランダムサーチ、グリッドサーチ、ベイズ探索、等の公知の方法を用いて探索空間情報38を探索すればよい。
グリッドサーチは、与えられた探索空間のパラメータを実験計画的に実行し、評価指標がもっとも高いパラメータを選定する探索方法である。
ベイズ探索は、試行したパラメータと評価指標との関係から、評価指標が最も高くなるようにパラメータ候補を推定して探索していく探索方法である。一般的には、観測点から確率的に良質な解を予測する手法で、ガウシアン過程を用いる手法が使われる。ガウシアン過程では、探索空間内の平均値と分散を今までの観測点から決定し、その時点で、評価指標がその平均と分散に従った正規分布に従うという過程の中で、評価関数の値が良いものを選択し、探索する。例えば、Tree−structured Parzen Estimatorなどが一般的である。
また、ベイズ探索部12Aは、強化学習または進化学習などの学習型の探索方法を用いて、探索空間情報38を探索してもよい。
本実施形態では、ベイズ探索部12Aは、ベイズ探索により探索空間情報38を探索する場合を一例として説明する。なお、ベイズ探索部12Aの探索方法は、ベイズ探索に限定されない。
ベイズ探索部12Aは、ベイズ探索によって、ベースモデル構造26の畳み込み処理ブロック26Bの各々に複数の探索空間情報38の内の何れかを選定した探索済みモデル構造27A’を、評価部12Cへ出力する。
評価部12Cは、モデル設計情報22に含まれる目標制約条件30に従って評価指標の目標値を定義し、探索済みモデル構造27A’を評価する。例えば、評価部12Cは、評価関数を用いて、探索済みモデル構造27A’を評価する。評価関数は、例えば、以下の式(A)で表される。
評価関数:max(P)subject to S<T ・・・式(A)
式(A)中、Pは、評価指標(例えば認識率)を示す。式(A)中、Tは、現在設定している目標制約条件30、Sは、現在評価している探索候補の目標制約条件30で設定された指標の実値(制約値)を示す。
例えば、評価部12Cは、目標制約条件30に含まれる項目の内の1または複数を、制約値の項目として選択する。例えば、評価部12Cは、目標ハードウェアでニューラルネットワークモデル33を動作させるときの、動作上の制約に最も寄与する項目を、制約値の項目として定義する。そして、評価部12Cは、定義した項目の目標値を、制約値の目標値“T”として設定する。
具体的には、例えば、評価部12Cが、モデルの演算量を評価指標の項目として定義したと想定する。この場合、評価部12Cは、図4中の目標制約条件30における「500TFLOPS」を、評価指標の目標値“T”として設定する。
そして、評価部12Cは、目標制約条件30と上記式(A)に示す評価関数とを用いて、探索済みモデル構造27A’を評価し、評価情報40を算出する。評価情報40は、評価結果を示す情報であり、評価コスト、または、コストと称される場合がある。評価情報40は、式(A)の評価指標“P”の解に相当する。詳細には、例えば、評価部12Cは、探索済みモデル構造27A’と、目標制約条件30に応じて目標値を設定した上記式(A)と、を用いて、過去に探索した候補の評価情報と、現在の探索候補で得られた評価情報とを比較し、評価指標が大きい方を選択することによって、評価情報40を更新する。
評価部12Cは、上記の通り評価情報40(評価指標“P”)を評価し、その情報をベイズ探索部12Aへ出力する。
評価部12Cから評価情報40を入力されたベイズ探索部12Aは、再度、ベースモデル構造26に探索空間情報38を選定する探索処理を実行する。ベイズ探索部12Aは、探索した新たな探索済みモデル構造27A’を、評価部12Cへ出力する。
そして、ベイズ探索部12Aおよび評価部12Cは、ベイズ探索部12Aおよび評価部12Cによる一連の処理の繰返し数が規定回数を超えたと判断するまで、該一連の処理を繰返す。規定回数は、予め定めればよい。
評価部12Cは、ベイズ探索部12Aおよび評価部12Cによる一連の処理の繰返し数が規定回数を超えたと判断した場合に、制約値の目標値“T”未満であり、且つ、最も評価指標“P”の高い探索済みモデル構造27A’を、第1学習済モデル構造27Aとしてパラメータ探索部14へ出力する。
すなわち、構造探索部12は、上記式(A)を満たす探索済みモデル構造27A’を、第1学習済モデル構造27Aとしてパラメータ探索部14へ出力する。
図7は、第1学習済モデル構造27Aの一例を示す模式図である。第1学習済モデル構造27Aは、ベースモデル構造26(図3参照)の畳み込み処理ブロック26Bの各々に、探索空間情報38を選定したものである。
一般的には、図6に示す複数の探索空間情報38の内、Plain構造38A以外の探索空間情報38(Bottleneck構造38B〜Skip構造38G)は、Plain構造38Aに比べて演算量が少ない。このため、構造探索部12から出力される第1学習済モデル構造27Aは、ベースモデル構造26と同等またはベースモデル構造26未満の演算量となる。
なお、演算量は、ResNet−Nの構造にも依存する。このため、Bottleneck構造38Bの構造を初期構造として有するResNet−50などをベースモデル構造26として用いる場合は、必ずしもベースモデル構造26より第1学習済モデル構造27Aの演算量が少なくなる保証はない。一方、ResNet−34と、Bottleneck構造38Bを有するResNet−50とは、演算量がほぼ同等に設計されている。
構造探索部12は、複数の探索空間情報38の間で目標制約条件30に差が生じやすいように、探索空間情報38内の内部パラメータを予め定めておいてもよい。例えば、構造探索部12は、Bottleneck構造38Bの中間層のチャネル数を1/Nにするなどの処理を予め行ってもよい(Nは1より大きい数字)。
図1に戻り説明を続ける。次に、パラメータ探索部14について説明する。パラメータ探索部14は、ニューラルネットワークモデル32の学習パラメータ28を、目標制約条件30に応じて更新する。
パラメータ探索部14は、第1学習済モデル構造27Aを受付けると、第1学習済モデル構造27Aの学習に用いる学習パラメータ群の中から、目標制約条件30に基づいた好適な学習パラメータを探索する。そして、パラメータ探索部14は、探索した学習パラメータを、探索後の学習パラメータである探索済学習パラメータ29とする。そして、パラメータ探索部14は、第1学習済モデル構造27Aと探索済学習パラメータ29を、プルーニング部16へ出力する。
図8は、パラメータ探索部14の機能的構成の一例を示す機能ブロック図である。パラメータ探索部14は、ベイズ探索部14Aと、探索空間設定部14Bと、評価部14Cと、を含む。
パラメータ探索部14に第1学習済モデル構造27Aが入力されると、探索空間設定部14Bは、互いに異なるパラメータの群からなる探索空間情報42を、ベイズ探索部14Aへ出力する。
図9は、探索空間情報42の一例を示す説明図である。探索空間情報42は、1または複数のパラメータ(ハイパーパラメータ)の探索空間を示す情報である。図9には、探索空間情報42が、複数のハイパーパラメータの各々の複数の探索範囲を示す情報である場合を一例として示した。
探索空間情報42は、最適化手法、学習率、L2正則化の強度、L1正則化の強度、活性関数、Dropout率、レイヤーのユニット数、ユニットのカーネルサイズ、などの機械学習に一般的に用いられるハイパーパラメータと、各ハイパーパラメータの各々の探索範囲と、を対応づけた情報である。
最適化手法は、重み係数を更新する際のハイパーパラメータであり、例えば、一般的に利用される確率的勾配法(Stochastic Gradient Descent)、Adam(Adaptive Moment Estimation)などの探索範囲が選択できる。学習率は、学習の1つの期間で重み係数をどの程度更新するかを示すハイパーパラメータである。Weight decayは、損失関数に導入される正則化関数の1つであり、重み係数が大きくなりすぎないようなL2正則を用い、この正則化強度を調整するためのハイパーパラメータである。
図8に戻り説明を続ける。ベイズ探索部14Aは、探索空間設定部14Bから入力された探索空間情報42に従って、探索済パラメータ29’を探索する。すなわち、ベイズ探索部14Aは、探索空間情報42に含まれるハイパーパラメータ毎に、対応する探索範囲の内の何れかを選定する(図9参照)。
ここで、最適化手法としてAdam、ベースモデルの活性関数としてReLU、正則化関数としてL2正則化、の組み合わせのハイパーパラメータを、探索済パラメータ29’として選定したと想定する。この場合、学習装置10による学習後のニューラルネットワークモデル33がグループスパース化する。このため、ベイズ探索部14Aは、最適化手法としてAdam、ベースモデルの活性関数としてReLU、正則化関数としてL2正則化、の組み合わせのハイパーパラメータを含む探索空間情報42を探索することが好ましい。そして、ベイズ探索部14Aが、L2正則化の強度パラメータの値域を探索することで探索済パラメータ29’を得る。これにより、後述するプルーニング部16では、学習後の第1学習済モデル構造27Aを、よりコンパクト化することが可能となる。
ベイズ探索部14Aは、ベイズ探索部12Aと同様に、例えば、ランダムサーチ、グリッドサーチ、ベイズ探索、等の公知の方法を用いて探索空間情報42を探索すればよい。
ベイズ探索部14Aは、探索済パラメータ29’を評価部14Cへ出力する。
評価部14Cは、モデル設計情報22に含まれる目標制約条件30に従って制約値の目標値を定義し、探索済パラメータ29’を評価する。例えば、評価部14Cは、上記評価関数(A)を用いて、探索済パラメータ29’を評価する。
例えば、評価部14Cは、目標制約条件30に含まれる項目の内の1または複数を、制約値の項目として選択する。例えば、評価部14Cは、目標ハードウェアでニューラルネットワークモデル33を動作させるときの、動作の制約に最も寄与する項目を、制約値の項目として定義する。そして、評価部14Cは、定義した項目の目標値を、制約値の目標値“T”として設定する。
具体的には、例えば、評価部14Cが、モデルの演算量を評価指標の項目として定義したと想定する。この場合、評価部14Cは、図4中の目標制約条件30における「500TFLOPS」を、制約値の目標値“T”として規定する。
なお、評価部14Cは、評価部12Cと同じ項目を定義してもよいし、異なる項目を定義してもよい。
そして、評価部14Cは、目標制約条件30と上記式(A)に示す評価関数とを用いて、探索済パラメータ29’を評価し、評価情報44を算出する。評価情報44は、評価結果を示す情報であり、評価コスト、または、コストと称される場合がある。評価情報44は、式(A)の評価指標“P”の解に相当する。詳細には、例えば、評価部14Cは、探索済パラメータ29’と、目標制約条件30に応じて目標値を設定した上記式(A)と、を用いて、過去に探索した候補の評価情報と、現在の探索候補で得られた評価情報とを比較し、評価指標が大きい方を選択することによって、評価情報44を更新する。
評価部14Cは、評価情報40(評価指標“P”)を評価し、その情報をベイズ探索部14Aへ出力する。
評価部14Cから評価情報44を入力されたベイズ探索部14Aは、再度、探索済パラメータ29’の探索処理を実行する。ベイズ探索部14Aは、探索した新たな探索済パラメータ29’を、評価部14Cへ出力する。
そして、ベイズ探索部14Aおよび評価部14Cは、ベイズ探索部14Aおよび評価部14Cによる一連の処理の繰返し数が規定回数を超えたと判断するまで、該一連の処理を繰返す。規定回数は、予め定めればよい。
評価部14Cは、ベイズ探索部14Aおよび評価部14Cによる一連の処理の繰返し数が規定回数を超えたと判断した場合に、制約値の目標値“T”未満であり、且つ、最も評価指標“P”の高い探索済パラメータ29’を、探索済学習パラメータ29としてパラメータ探索部14へ出力する。
図10は、探索済学習パラメータ29の一例を示す模式図である。図10に示すように、探索済学習パラメータ29には、ハイパーパラメータごとに、探索後の値が規定された状態となる。このように、パラメータ探索部14は、探索済学習パラメータ29を探索する。
図8に戻り説明を続ける。なお、パラメータ探索部14に含まれるベイズ探索部14A、探索空間設定部14B、および評価部14Cの機能は、構造探索部12に含まれるベイズ探索部12A、探索空間設定部12B、および評価部12Cの機能と同様である(図5参照)。
このため、学習装置10は、構造探索部12およびパラメータ探索部14のこれらの機能の少なくとも一部を、共通化したモジュールとしてもよい。具体的には、例えば、ベイズ探索部12Aとベイズ探索部14Aとを共通化したモジュールとし、探索空間設定部12Bと探索空間設定部14Bとを共通化したモジュールとし、評価部12Cと評価部14Cとを共通化したモジュールとしてもよい。このように、構造探索部12およびパラメータ探索部14の対応する機能を共通化したモジュールとすることで、例えば、構造探索部12およびパラメータ探索部14をプログラムで実行する際の、モジュール間の冗長性を排除することができる。また、この場合、これらの構造探索部12およびパラメータ探索部14をハードウェアとして構成した場合に、回路規模の削減を図ることができる。
なお、上記では、構造探索部12およびパラメータ探索部14は、上記式(A)によって表される評価関数を用いて評価を行う形態を一例として示した。しかし、構造探索部12およびパラメータ探索部14は、互いに異なる評価関数を用いて評価を行ってもよい。
また、構造探索部12およびパラメータ探索部14の少なくとも一方は、上記式(A)とは異なる評価関数を用いて、評価を行ってもよい。
例えば、ニューラルネットワークモデル33を動作させる目標ハードウェアをシミュレートする、評価環境が利用できる場合を想定する。この場合、学習装置10では、探索時のモデル構造(ベースモデル構造26または第1学習済モデル構造27A)および学習パラメータ(学習データセット24または探索済学習パラメータ29)を用いて該目標ハードウェアの動作をシミュレートする。この処理により、学習装置10は、ニューラルネットワークモデル33の推論速度、実行時のメモリ量、実行時の消費電力、メモリバンド幅などの、目標制約条件30に示される各項目の値をシミュレートする。そして、構造探索部12およびパラメータ探索部14は、シミュレートしたこれらの値が、目標制約条件30の各項目に対応する目標値以下となる評価関数を用いて、評価を行ってもよい。
また、例えば、構造探索部12およびパラメータ探索部14は、目標制約条件30に示される複数の項目の値を用いて、コスト評価を行ってもよい。この場合、構造探索部12およびパラメータ探索部14は、例えば、各々の項目に対応する制約値の目標値の重み付き和を用いることで、各々の制約値の項目(目標制約条件30の項目)の軸における評価関数を設定すればよい。なお、この例は一例であり、構造探索部12及びパラメータ探索部14は、複数の制約値の項目の軸を最適化する、複雑な評価関数を設定してもよい。
また、探索空間設定部14Bは、探索空間設定部12Bより探索空間の制約条件を厳しく設定してもよい。例えば、探索空間設定部14Bより先に処理を実行する上位のモジュールである探索空間設定部12Bで疎探索を行い、探索空間設定部12Bより後に処理を実行する下位のモジュールである探索空間設定部14Bで、より狭い探索空間を探索してもよい。この場合、上位側のモジュールである探索空間設定部12Bで疎探索を行って良質な解の空間を大雑把に見積もった後に、下位側のモジュールである探索空間設定部14Bで認識性能が高くなるように厳しい制約条件の探索空間を探索することができる。このため、この場合、学習装置10は、複数の制約条件下で好適な解を探索することが可能となる。
なお、構造探索部12およびパラメータ探索部14による第1学習済モデル構造27Aおよび探索済学習パラメータ29の各々の探索時には、学習データセット24に含まれる入力画像や教師ラベルのサイズを縦横縮小するデータサイズの削減、データ水増し処理の削減、および、学習反復回数の削減、の少なくとも1つの削減処理を組み合わせて探索することで、高速に行ってもよい。一般的には、ニューラルネットワークモデル33の繰り返し再学習は演算量が膨大となるため、入力画像のサイズの縮小や水増し方法の縮小、学習回数の削減などの簡略化が有効である。
図1に戻り説明を続ける。次に、プルーニング部16について説明する。
プルーニング部16は、探索済学習パラメータ29および第1学習済モデル構造27Aをパラメータ探索部14から受付ける。また、プルーニング部16は、記憶部20からモデル設計情報22を取得する。
プルーニング部16は、探索済学習パラメータ29および第1学習済モデル構造27Aをパラメータ探索部14から受付けると、第1学習済モデル構造27Aの畳み込み処理ブロック26Bのユニットを目標制約条件30に基づいて削除し、第2学習済モデル構造27Bを生成する。
詳細には、プルーニング部16は、第1学習済モデル構造27Aに含まれる疎結合のユニットを、学習パラメータ28または探索済学習パラメータ29から設定した判定情報を用いて削除し、第2学習済モデル構造27Bを生成する。疎結合のユニットとは、第1学習済モデル構造27Aのニューラルネットワークモデル33における推論時の出力にほとんど寄与しないユニットを意味する。より具体的には、重み係数のノルムがほとんどゼロ(例えば1×10−15以下)となる場合、そのノードに入力されて畳み込み処理された出力値もほぼゼロとなる。このようなノードは不活性ノードと呼ばれ、その後の計算に寄与しない。
図11は、プルーニング部16の機能的構成の一例を示す機能ブロック図である。
プルーニング部16は、疎結合判定部16Aと、判定条件設定部16Bと、再学習部16Cと、を含む。
プルーニング部16に第1学習済モデル構造27Aおよび探索済学習パラメータ29が入力されると、判定条件設定部16Bは、モデル設計情報22に含まれる学習パラメータ28から、重み係数を保持するユニットが疎結合かどうかを判定するための判定情報46を設定する。判定情報46は、疎結合の判定条件となる重み係数のノルムの閾値である。
詳細には、判定条件設定部16Bは、学習パラメータ28に含まれる重み係数のノルムの閾値であり、例えば1×10−15などの値を、判定情報46として設定する。なお、判定条件設定部16Bは、学習パラメータ28に代えて探索済学習パラメータ29を用いて、判定情報46を設定してもよい。
判定条件設定部16Bは、設定した判定情報46を疎結合判定部16Aへ出力する。
疎結合判定部16Aは、第1学習済モデル構造27Aから、第1学習済モデル構造27Aに含まれる複数の畳み込み処理ブロック26Bの各々の各ユニットの重み係数のノルムを計算する。疎結合判定部16Aは、計算したノルムが判定情報46より小さい場合に、該ノルムのユニットを疎結合であると判定する。そして、疎結合判定部16Aは、第1学習済モデル構造27Aに含まれる全てのユニットの内、疎結合と判定したユニットを第1学習済モデル構造27Aから削除する。このユニットの削除は、枝刈り(プルーニング)と称される場合がある。
疎結合判定部16Aは、疎結合のユニットを削除した後の第1学習済モデル構造27Aを、探索済モデル構造27B’として再学習部16Cへ出力する。
再学習部16Cは、探索済モデル構造27B’を、探索済学習パラメータ29を用いて再学習する。そして、再学習部16Cは、再学習後の探索済モデル構造27B’である第2学習済モデル構造27Bと、探索済学習パラメータ29と、をモーフィング部18へ出力する。
なお、判定情報46である閾値は、1×10−15等のごく小さい値である。このため、この判定情報46を用いて疎結合と判定され、削除されたユニットは、プルーニング部16から最終的に出力される第2学習済モデル構造27Bに影響を与えないため、再学習が不要である。このため、プルーニング部16は、再学習部16Cを備えない構成であってもよい。
この場合、疎結合判定部16Aは、探索済モデル構造27B’を第2学習済モデル構造27Bとしてモーフィング部18へ出力すればよい。
なお、判定情報46である閾値として、第2学習済モデル構造27Bに影響を与える程度の大きな値が設定される場合がある。このため、本実施形態では、プルーニング部16は、再学習部16Cを備えた形態を一例として説明する。
なお、プルーニング部16では、再学習部16Cで再学習された第2学習済モデル構造27Bを疎結合判定部16Aへ出力してもよい。そして、疎結合判定部16Aでは、再学習部16Cから受付けた第2学習済モデル構造27Bから、判定情報46を用いて疎結合のユニットを削除し、再度探索済モデル構造27B’として再学習部16Cへ出力してもよい。この場合、再学習部16Cは、予め定められた規定回数、疎結合判定部16Aおよび再学習部16Cの一連の処理を繰り返し実行したと判定したときに、再学習によって得られた第2学習済モデル構造27Bをモーフィング部18へ出力すればよい。
図12は、第1学習済モデル構造27Aと、第2学習済モデル構造27Bと、の一例を示す模式図である。プルーニング部16によるユニットの削除によって、第2学習済モデル構造27Bに含まれる複数の畳み込み処理ブロック26Bの内、少なくとも一部の畳み込み処理ブロック26Bのユニット数が減少する。このため、ユニット数の現象した畳み込み処理ブロック26Bの幅(矢印X方向の長さ)が削減される(矢印Aで示される畳み込み処理ブロック26B参照)。
プルーニング部16が疎結合のユニットを第1学習済モデル構造27Aから削除することで、第2学習済モデル構造27Bの性能を維持しつつ、不要なユニットを好適に削除することができる。
図1に戻り説明を続ける。次に、モーフィング部18について説明する。
モーフィング部18は、目標制約条件30に応じて、第2学習済モデル構造27Bを拡大または縮小する。モーフィング部18は、第2学習済モデル構造27Bに含まれる複数の畳み込み処理ブロック26B間のユニット数の比率を維持した状態で、第2学習済モデル構造27Bに含まれる畳み込み処理ブロック26Bを拡大または縮小することが好ましい。
図13は、モーフィング部18の機能的構成の一例を示す機能ブロック図である。モーフィング部18は、幅調整部18Aと、幅条件設定部18Bと、再学習部18Cと、を有する。
モーフィング部18は、プルーニング部16から第2学習済モデル構造27B及び探索済学習パラメータ29を受付けると、第2学習済モデル構造27Bから、目標制約条件30(図4参照)の各項目の目標値を計算し、モデル設計情報22に含まれる目標制約条件30に規定された各項目の目標値との差分を算出する。そして、モーフィング部18は、算出した差分を用いて、第2学習済モデル構造27Bを拡張または縮小することで、第3学習済モデル構造27Cを生成する。
詳細には、モーフィング部18に第2学習済モデル構造27Bおよび探索済学習パラメータ29が入力されると、幅条件設定部18Bは、モデル設計情報22から目標制約条件30およびベースモデル構造26を取得する。そして、幅条件設定部18Bは、取得した目標制約条件30を厳守するために必要となる、ベースモデル構造26の畳み込み処理ブロック26Bの幅の最大サイズを規定する幅情報48を設定する。
幅条件設定部18Bは、目標制約条件30を用いて幅情報48を計算することで、幅情報48を設定する。
目標制約条件30に規定されている項目であるモデルサイズおよびモデルの演算量の各々の目標値は、畳み込み処理ブロック26Bの幅、すなわち、各畳み込み処理ブロック26Bのユニット数が定まれば計算できる。このため、幅条件設定部18Bは、目標制約条件30およびベースモデル構造26を用いることで、幅情報48を計算することができる。なお、目標制約条件30に含まれる項目には、該目標制約条件30に対応する目標ハードウェア上でシミュレートしないと計算できない項目が含まれる。この場合、幅条件設定部18Bは、ベースモデル構造26に含まれる畳み込み処理ブロック26Bの各々の幅から、目標ハードウェア上で該ベースモデル構造26のニューラルネットワークモデル32を動作させた場合の値の上限をシミュレートし、幅情報48の計算に用いればよい。
幅条件設定部18Bは、設定した幅情報48を幅調整部18Aへ出力する。
幅調整部18Aは、幅情報48に応じて、第2学習済モデル構造27Bを拡大または縮小する。幅調整部18Aは、第2学習済モデル構造27Bに含まれる複数の畳み込み処理ブロック26B間のユニット数の比率を維持した状態で、第2学習済モデル構造27Bを拡大または縮小する。
詳細には、幅調整部18Aは、第2学習済モデル構造27Bのニューラルネットワークモデル33を目標ハードウェアで動作させた場合の、目標制約条件30に規定されている項目であるモデルサイズおよびモデルの演算量の各々の値を計算する。そして、幅調整部18Aは、目標制約条件30に規定されている項目の各々について、幅条件設定部18Bにおいてベースモデル構造26から計算した目標値と、幅調整部18Aで第2学習済モデル構造27Bから計算した値と、の差分を計算する。
そして、幅調整部18Aは、この差分ができるだけゼロに近づくように、第2学習済モデル構造27Bを拡大または縮小する。このとき、上述したように、幅調整部18Aは、第2学習済モデル構造27Bに含まれる複数の畳み込み処理ブロック26B間のユニット数の比率を維持した状態で、畳み込み処理ブロック26Bの拡大または縮小を行う。また、このとき、幅調整部18Aは、畳み込み処理ブロック26Bの幅が幅条件設定部18Bから受付けた幅情報48以下となるように、畳み込み処理ブロック26Bの拡大または縮小を行う。
幅調整部18Aは、第2学習済モデル構造27Bを拡大または縮小することで得られた、調整済みモデル構造27C’を、再学習部18Cへ出力する。
再学習部18Cは、探索済学習パラメータ29を用いて調整済みモデル構造27C’を再学習する。そして、再学習部18Cは、再学習した後の調整済みモデル構造27C’である第3学習済モデル構造27Cと、探索済学習パラメータ29と、を記憶部20へ記憶する。
このため、記憶部20のニューラルネットワークモデル32を構成するベースモデル構造26および学習パラメータ28は、第3学習済モデル構造27Cおよび探索済学習パラメータ29に更新される。すなわち、学習装置10によって、記憶部20に記憶されていたニューラルネットワークモデル32は目標制約条件30に応じて最適化され、第3学習済モデル構造27Cおよび探索済学習パラメータ29のニューラルネットワークモデル33に設計(再学習)される。
なお、再学習部18Cは、再学習後の第3学習済モデル構造27Cが目標制約条件30を満たすか否かを判断し、満たすと判定した場合に、第3学習済モデル構造27Cおよび学習パラメータ28を記憶部20へ記憶してもよい。再学習部18Cは、目標制約条件30を満たさないと判断した場合には、第3学習済モデル構造27Cを幅調整部18Aへ出力してもよい。
この場合、再学習部18Cは、再学習部18Cから受付けた第3学習済モデル構造27Cについて、上記と同様にして幅の調整を行えばよい。この場合、再学習部18Cは、予め定めた規定回数、疎結合判定部16Aおよび再学習部16Cの一連の処理を繰り返し実行したと判断した場合、または、再学習した第3学習済モデル構造27Cが目標制約条件30を満たすと判断した場合に、該第3学習済モデル構造27Cを記憶部20へ記憶すればよい。
例えば、多軸での最適化を行う場合、軸の優先度を変えることにより、最適解も変わる場合が考えられる。また、深層学習では、乱数や浮動小数点演算の観点で、学習結果が変動することが一般的である。このため、幅調整部18Aおよび再学習部18Cの一連の処理を繰返すことで、第3学習済モデル構造27Cの性能改善を図ることができる。
図14は、第2学習済モデル構造27Bと第3学習済モデル構造27Cの一例を示す模式図である。
図14には、第2学習済モデル構造27Bを縮小した第3学習済モデル構造27Cの一例を示した。
図14に示すように、モーフィング部18による処理前の第2学習済モデル構造27Bに比べて、幅条件設定部18Bによる処理後の第3学習済モデル構造27Cは、畳み込み処理ブロック26Bの幅(X方向の長さ、すなわちユニット数)が調整された構造となっている。詳細には、第3学習済モデル構造27Cは、第2学習済モデル構造27Bにおける複数の畳み込み処理ブロック26B間のユニット数の比率、すなわち幅の比率を維持したまま縮小された構造となっている。また、第3学習済モデル構造27Cは、含まれる複数の畳み込み処理ブロック26Bの各々のユニット数が、目標制約条件30以下となるように削減されている。すなわち、第3学習済モデル構造27Cは、目標制約条件30に示される各項目の目標値と、第3学習済モデル構造27Cのニューラルネットワークモデル33を目標ハードウェアで動作させた場合の各項目の値と、の差分がゼロになるように、ユニット数が削減されている。
一方、モーフィング部18が、第2学習済モデル構造27Bを拡張した第3学習済モデル構造27Cを生成した場合には、該第3学習済モデル構造27Cは、第2学習済モデル構造27Bに含まれる複数の畳み込み処理ブロック26B間のユニット数の比率を維持した状態で拡大した構造となる。
なお、プルーニング部16で削除(枝刈り)されたユニットは、ベースモデル構造26全体のユニットの中から不要と判定されたユニットである。このため、プルーニング部16から出力される第2学習済モデル構造27Bは、畳み込み処理ブロック26B間の幅の比率が最適化された構造である。このため、モーフィング部18は、目標ハードウェアのスペックに余裕がある場合には、第2学習済モデル構造27Bを拡張した第3学習済モデル構造27Cとし、余裕が無い場合には第2学習済モデル構造27Bを縮小した第3学習済モデル構造27Cとしてもよい。
この場合、モーフィング部18は、目標ハードウェアの性能を加味したモーフィング処理を実行することができる。詳細には、第2学習済モデル構造27Bを拡張した第3学習済モデル構造27Cとする場合、第2学習済モデル構造27Bに含まれる複数の畳み込み処理ブロック26B間の幅の比率が最適化されていることから、複数の畳み込み処理ブロック26Bの各々の幅を均等に拡張することとなる。このため、この場合、該第3学習済モデル構造27Cのニューラルネットワークモデル33を目標ハードウェアで動作させることで、目標ハードウェアの汎化性を維持しつつ性能改善を図れる。
また、第2学習済モデル構造27Bを縮小した第3学習済モデル構造27Cとする場合、モーフィング部18は、特定の畳み込み処理ブロック26Bがボトルネックにならないように汎化性を維持しつつ、該第3学習済モデル構造27Cのニューラルネットワークモデル33を目標ハードウェアのスペックの最小限まで縮小することができる。
次に、本実施形態の学習装置10で実行する学習処理の流れの一例を説明する。
図15は、学習装置10で実行する学習処理の流れの一例を示すフローチャートである。
まず、構造探索部12が記憶部20からモデル設計情報22をロードする(ステップS100)。
構造探索部12は、モデル設計情報22に含まれるベースモデル構造26の畳み込み処理ブロック26Bの各々に、目標ハードウェアの目標制約条件30に応じた探索空間情報を選定した、第1学習済モデル構造27Aを探索する(ステップS102)。
次に、パラメータ探索部14が、第1学習済モデル構造27Aおよびモデル設計情報22を用いて、第1学習済モデル構造27Aに最適なパラメータ探索を実行し、探索済学習パラメータ29を出力する(ステップS04)。
次に、プルーニング部16が、モデル設計情報22を用いて第1学習済モデル構造27Aに含まれる疎結合のユニットの枝刈りを実行し、第2学習済モデル構造27Bを生成する(ステップS106)。
次に、モーフィング部18が、モデル設計情報22を用いて第2学習済モデル構造27Bを拡大または縮小した第3学習済モデル構造27Cを生成し、探索済学習パラメータ29および第3学習済モデル構造27Cを記憶部20へ記憶する(ステップS108)。そして、本ルーチンを終了する。
探索済学習パラメータ29および第3学習済モデル構造27Cのニューラルネットワークモデル33が、目標ハードウェアに応じて学習されたニューラルネットワークモデル33として利用されることとなる。
次に、ステップS102〜ステップS108の各々の処理について詳細に説明する。
図16は、構造探索部12が実行する探索処理の流れの一例を示すフローチャートである。すなわち、図16は、上記図15のステップ102の処理の詳細な流れを示すフローチャートである。
構造探索部12にモデル設計情報22が入力されると(ステップS200)、探索空間設定部12Bが、互いに演算方法の異なる複数の探索空間情報38を、ベイズ探索部12Aへ出力する(ステップS202)。
ベイズ探索部12Aは、ステップS202で探索空間設定部12Bから入力された複数の探索空間情報38に従ってベイズ探索を行い、モデル設計情報22に含まれるベースモデル構造26を構成する複数の畳み込み処理ブロック26Bの各々に選定する探索空間情報38を探索する。そして、ベイズ探索部12Aは、ベイズ探索によって生成した探索済みモデル構造27A’を評価部12Cへ出力する(ステップS204)。
評価部12Cは、モデル設計情報22に含まれる目標制約条件30に基づいて、ステップS204でベイズ探索部12Aから受付けた探索済みモデル構造27A’を評価する(ステップS206)。
そして、評価部12Cは、ステップS204およびステップS206の一連の処理の回数が規定回数を超えたか否かを判断する(ステップS208)。
ステップS208で否定判断すると(ステップS208:No)、上記ステップS024へ戻る。一方、ステップS208で肯定判断すると(ステップS208:Yes)、ステップS210へ進む。
ステップS210では、評価部12Cは、ステップS204〜ステップS208の処理によって得られた探索済みモデル構造27A’の内、制約値の目標値“T”未満であり、且つ、最も評価指標“P”の高い探索済みモデル構造27A’を、第1学習済モデル構造27Aとしてパラメータ探索部14へ出力する(ステップS210)。そして、本ルーチンを終了する。
図17は、パラメータ探索部14が実行する探索処理の流れの一例を示すフローチャートである。すなわち、図17は、上記図15のステップ104の処理の詳細な流れを示すフローチャートである。
パラメータ探索部14に第1学習済モデル構造27Aが入力されると(ステップS300)、探索空間設定部14Bは、互いに異なるパラメータの群からなる探索空間情報42を、ベイズ探索部14Aへ出力する(ステップS302)。
ベイズ探索部14Aは、ステップS302で探索空間設定部14Bから入力された探索空間情報42に従って探索済パラメータ29’を探索する(ステップS302)。
評価部14Cは、モデル設計情報22に含まれる目標制約条件30に基づいて、ステップS302で探索された探索済パラメータ29’を評価する(ステップS304)。
評価部14Cは、ステップS304〜ステップS306の一連の処理の回数が規定回数を超えたか否かを判断する(ステップS308)。
ステップS308で否定判断すると(ステップS308:No)、上記ステップS304へ戻る。一方、ステップS308で肯定判断すると(ステップS308:Yes)、ステップS310へ進む。
ステップS310では、評価部14Cは、ステップS304〜ステップS308の処理によって得られた探索済パラメータの内、制約値の目標値“T”未満であり、且つ、最も評価指標“P”の高い探索済パラメータ29’を、探索済学習パラメータ29としてパラメータ探索部14へ出力する(ステップS310)。そして、本ルーチンを終了する。
図18は、プルーニング部16が実行するプルーニング処理の流れの一例を示すフローチャートである。すなわち、図18は、上記図15のステップ106の処理の詳細な流れを示すフローチャートである。
プルーニング部16に第1学習済モデル構造27Aおよび探索済学習パラメータ29が入力されると(ステップS400)、判定条件設定部16Bは、モデル設計情報22に含まれる学習パラメータ28から判定情報46を設定する(ステップS402)。
疎結合判定部16Aは、第1学習済モデル構造27Aに含まれる疎結合のユニットを、判定情報46を用いて判断し、該疎結合のユニットを削除する。そして、疎結合判定部16Aは、疎結合のユニットを削除した後の第1学習済モデル構造27Aを、探索済モデル構造27B’として再学習部16Cへ出力する(ステップS404)。
再学習部16Cは、探索済モデル構造27B’を、探索済学習パラメータ29を用いて再学習する。そして、再学習部16Cは、再学習後の探索済モデル構造27B’である第2学習済モデル構造27Bと、探索済学習パラメータ29と、をモーフィング部18へ出力する(ステップS406)。そして、本ルーチンを終了する。
図19は、モーフィング部18が実行するモーフィング処理の流れの一例を示すフローチャートである。すなわち、図19は、上記図15のステップ108の処理の詳細な流れを示すフローチャートである。
モーフィング部18にプルーニング部16から第2学習済モデル構造27B及び探索済学習パラメータ29が入力されると(ステップS500)、幅条件設定部18Bは、目標制約条件30を用いて幅情報48を設定する(ステップS502)。
幅調整部18Aは、ステップS502で設定された幅情報48に応じて、第2学習済モデル構造27Bを拡大または縮小する(ステップS504)。
再学習部18Cは、探索済学習パラメータ29を用いて調整済みモデル構造27C’を再学習する。そして、再学習部18Cは、再学習した後の調整済みモデル構造27C’である第3学習済モデル構造27Cと、探索済学習パラメータ29と、を記憶部20へ記憶する(ステップS506)。そして、本ルーチンを終了する。
以上説明したように、本実施形態の学習装置10は、構造探索部12を備える。構造探索部12は、ニューラルネットワークモデル32におけるベースモデル構造26に含まれる複数の畳み込み処理ブロック26Bの各々に、目標ハードウェアの目標制約条件30に応じた探索空間情報38を選定した、第1学習済モデル構造27Aを探索する。
このように、本実施形態の学習装置10は、目標制約条件30に応じて、第1学習済モデル構造27Aを探索する。
このため、第1学習済モデル構造27Aのニューラルネットワークモデル33を、目標ハードウェアで動作させるためのニューラルネットワークモデル33として用いることで、該目標ハードウェアに好適なニューラルネットワークモデル33を設計することができる。
従って、本実施形態の学習装置10は、目標ハードウェアに好適なニューラルネットワークモデル33を設計することができる。
また、本実施形態の学習装置10では、パラメータ探索部14が、構造探索部12が第1学習済モデル構造27Aを探索した後に、ニューラルネットワークモデル32の学習パラメータ28を目標制約条件30に応じて探索する。また、本実施形態の学習装置10では、プルーニング部16が、パラメータ探索部14が探索済学習パラメータ29を探索した後に、第1学習済モデル構造27Aの畳み込み処理ブロック26Bのユニットを目標制約条件30に基づいて削除し、第2学習済モデル構造27Bを生成する。そして、モーフィング部18は、プルーニング部16から出力された第2学習済モデル構造27Bを拡大または縮小することで、第3学習済モデル構造27Cを生成する。
このように、本実施形態に係る学習装置10では、ニューラルネットワークモデル32の上位構造から下位構造に向かって順に最適化を行い、ニューラルネットワークモデル33を設計(学習)する。上位構造とは、ニューラルネットワークモデル32のアーキテクチャそのものを示す。中位構造は、学習パラメータ28を示す。下位構造とは、アーキテクチャや学習パラメータ28などの上位から中位までのハイパーパラメータを決めた後の、重み係数を学習する構造である。
本実施形態では、構造探索部12が上位構造を処理し、パラメータ探索部14、プルーニング部16およびモーフィング部18が中位構造を処理する。なお、ニューラルネットワークモデル33の学習または再学習を行う機能部は、ベイズ探索部12A、ベイズ探索部14A、再学習部16C、および再学習部18Cである。これらの機能部では、下位構造である重み係数の学習まで実行する。
すなわち、本実施形態の学習装置10では、上位構造から中位構造に向かって順に最適化処理を行い、最後に下位構造の最適化を行う。このため、本実施形態の学習装置10は、例えば、モデルサイズや演算量など制約に縛られない最も性能の高い大規模なニューラルネットワークモデル32を、エッジデバイスなどの目標ハードウェアの制約下で動作するコンパクトなニューラルネットワークモデル33に設計(再学習)することができる。また、本実施形態の学習装置10は、この設計(再学習)の際に、設計前のニューラルネットワークモデル32の汎化性能を維持しつつ、目標ハードウェアの性能低下を抑制し、且つ、目標ハードウェアのスペックに対して好適なモデルサイズに圧縮した、ニューラルネットワークモデル33を設計することが可能となる。
なお、本実施形態では、構造探索部12から、パラメータ探索部14およびプルーニング部16を介してモーフィング部18に到るまでの処理を、カスケード処理としてシークエンシャルに処理する例を示した。しかし、構造探索部12、パラメータ探索部14、プルーニング部16、およびモーフィング部18の内の特定の機能部の処理をスキップしてもよい。
例えば、目標ハードウェア向けにアーキテクチャ(モデル構造)を予め調整したモデルをニューラルネットワークモデル32として用意し、該ニューラルネットワークモデル32からニューラルネットワークモデル33を設計する場合を想定する。この場合、学習装置10は、構造探索部12の処理をスキップし、パラメータ探索部14、プルーニング部16、およびモーフィング部18が上記処理を実行してもよい。
また、例えば、最適化手法にAdam、活性化関数にReLU、L2正則化のいずれかの条件を利用する、グループスパース化を発生させる条件を利用できない場合がある。この場合には、学習装置10は、パラメータ探索部14に適切な学習パラメータの値域を設定した後に、プルーニング部16を介さずに、モーフィング部18の処理を実行してもよい。
また、グループスパース化を発現する別の条件の組み合わせとして、畳み込み処理ブロック26Bに含まれる正則化処理のロス関数にL1正則化を導入し、これらの正則化強度をパラメータ探索部14で探索することで、疎結合を発生させることも可能である。
また、ベースモデル構造26を得るためのロス関数に、グループスパース化を発現させる正則化項(グループラッソを用いる正則化)などを予め導入してもよい。
(変形例)
上記実施形態で説明した構造探索部12およびパラメータ探索部14に含まれる、ベイズ探索部12Aおよびベイズ探索部14Aは、一般的なニューラルネットワークの学習機能を有していてもよい。
例えば、ベイズ探索部12Aは、最初に設定した畳み込み構造で学習を行い、学習後の性能とモデルサイズを用いて評価関数の評価を行う。ベイズ探索部12Aは、ここでの評価結果に従って次の探索候補を探すというアプローチを繰り返してもよい。
また、例えば、ベイズ探索部14Aは、最初に設定した学習パラメータで学習を行い、学習後の性能とモデルサイズとを用いて評価関数の評価を行う。ベイズ探索部14Aは、ここでの評価結果に従って次の探索候補を探すというアプローチを繰り返してもよい。
この場合、これらのアプローチを繰返す機能を共通化したモジュールとして構成し、該モジュールをベイズ探索部12Aとベイズ探索部14Aとで共通して利用してもよい。
また、プルーニング部16およびモーフィング部18に含まれる再学習部16Cおよび再学習部18Cは、同一の機能を有する。このため、これら同一の機能を共通化したモジュールとして構成し、該モジュールを再学習部16Cと再学習部18Cとで共通して利用してもよい。
また、上記実施形態では、プルーニング部16およびモーフィング部18に含まれる再学習部16Cおよび再学習部18Cは、学習済のベースモデル構造26である第1学習済モデル構造27Aおよび第2学習済モデル構造27Bの各々を再学習する機能として説明した。再学習部16Cおよび再学習部18Cは、この再学習する際のアプローチとして、蒸留学習を用いてもよい。蒸留学習は、一般的な教示ラベル(ハードターゲットと称される)による学習ではなく、元となる教師モデルに対して、入力データを推論させた場合の出力値(ソフトターゲットと称される)を再現するように、生徒モデルを学習するテクニックである。蒸留学習を用いることにより、大規模モデルであるニューラルネットワークモデル32の推論性能を大きく損なうことなく、生徒モデルであるニューラルネットワークモデル33を学習することができる。
なお、上記実施形態では、学習装置10は、ニューラルネットワークモデル32を再学習(ファインチューニング)することでニューラルネットワークモデル33を設定(再学習)するものとして説明した。しかし、再学習に代えて、スクラッチ学習を行ってもよい。この場合、学習装置10は、学習パラメータや畳み込み構造はそのままであるが、重み係数を乱数で初期化し、最初からニューラルネットワークモデル32を学習しなおすことになる。一般的には、学習済みのモデルであるニューラルネットワークモデル32をファインチューニング(再学習)するより、スクラッチ学習した方が一部のモデルでは性能が改善する例が報告されている。また、学習装置10は、最初に与えた重み行列を数回学習した後に重み行列のノルムを計算し、ノルムの閾値があらかじめ定義した値よりも大きいもののみを残して、最初に与えた重み初期値をロードして再学習してもよい。深層学習では、最初に与えた重みの初期値やその重みのユニット配置が重要であり、ある程度学習した結果重要と判断される重み初期値を再設定して再学習することで、性能が大幅に改善する場合がある。
(ハードウェア構成)
図20は、実施形態および変形例に係る学習装置10を含む学習システム1のハードウェア構成の一例を示す図である。本実施形態に係る学習システム1は、例えば、図15に示すようなハードウェア構成により実現される。
学習システム1は、学習装置10と、目標ハードウェア60と、を備える。目標ハードウェア60は、学習装置10で学習されたニューラルネットワークモデル33を動作させる対象となるハードウェアである。学習装置10と目標ハードウェア60とは、データを授受可能に直接または他の機構(例えば、記憶媒体)などを介して接続されている。なお、目標ハードウェア60内に、学習装置10を備えた構成であってもよい。
学習装置10は、制御装置70、主記憶装置72、補助記憶装置74、表示装置76、入力装置78及び通信装置80を備える。制御装置70、主記憶装置72、補助記憶装置74、表示装置76、入力装置78及び通信装置80は、バス82を介して接続されている。
制御装置70は、例えばCPU(Central Processing Unit)である。制御装置70は、補助記憶装置74から主記憶装置72に読み出されたプログラムを実行する。主記憶装置72は、ROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。一般的にはDRAMなどで実現される。補助記憶装置74は、HDD(Hard Disk Drive)、SSD(Solid State Drive)及び、メモリカード等である。
表示装置76は表示情報を表示する。表示装置76は、例えばGPU(Graphic Processing Unit)である。ここでは外部に表示する機能として、液晶ディスプレイ等と接続されていても良い。入力装置78は、学習装置10を操作するための入力インタフェースである。入力装置78は、例えばキーボードやマウス等である。学習装置10がスマートフォン及びタブレット型端末等のスマートデバイスの場合、表示装置76及び入力装置78は、例えばタッチパネルである。通信装置80は、他の装置と通信するためのインタフェースである。
上記実施形態および変形例の学習装置10で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R及びDVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
また上記実施形態および変形例の学習装置10で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また上記実施形態および変形例の学習装置10で実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
また上記実施形態および変形例の学習装置10のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
上記実施形態および変形例の学習装置10で実行されるプログラムは、上述した機能ブロックのうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置70が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置72上にロードされる。すなわち上記各機能ブロックは主記憶装置72上に生成される。
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC等のハードウェアにより実現してもよい。また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2以上を実現してもよい。
また上記実施形態および変形例の学習装置10の動作形態は任意でよい。上記実施形態および変形例の学習装置10HS、例えばネットワーク上のクラウドシステムとして動作させてもよい。
本発明の実施形態および変形例を説明したが、これらの実施形態および変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態および変形例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態および変形例は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。