(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-17
(45)【発行日】2025-03-26
(54)【発明の名称】学習装置および学習方法
(51)【国際特許分類】
G06N 3/096 20230101AFI20250318BHJP
【FI】
G06N3/096
(21)【出願番号】P 2021133805
(22)【出願日】2021-08-19
【審査請求日】2024-06-26
(73)【特許権者】
【識別番号】000237592
【氏名又は名称】株式会社デンソーテン
(74)【代理人】
【識別番号】110001933
【氏名又は名称】弁理士法人 佐野特許事務所
(72)【発明者】
【氏名】関 竜介
(72)【発明者】
【氏名】岡田 康貴
(72)【発明者】
【氏名】片山 雄喜
(72)【発明者】
【氏名】広見 怜
(72)【発明者】
【氏名】荻島 葵
【審査官】今城 朋彬
(56)【参考文献】
【文献】中国特許出願公開第112183718(CN,A)
【文献】Seyed Iman Mirzadeh et al.,Improved Knowledge Distillation via Teacher Assistant,arXiv [online],2019年12月17日,pp.1-11,https://arxiv.org/abs/1902.03393
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/096
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
教師モデルを用いて生徒モデルを訓練する学習装置であって、
プロセッサを備え、
前記プロセッサは、
前記教師モデルと前記生徒モデルとの性能差を求め
、
前記性能差が所定の閾値よりも小さくなった場合に、前記生徒モデルの訓練に使用する前記教師モデルを、使用中の教師モデルよりも性能の高い教師モデルに変更する、学習装置。
【請求項2】
教師モデルを用いて生徒モデルを訓練する学習装置であって、プロセッサを備え、
前記プロセッサは、
前記生徒モデルの損失を、学習データに対する損失と、前記教師モデルに対する損失とを用いて求め、
前記学習データに対する損失と、前記教師モデルに対する損失とのバランスを調整する重み係数を、所定のタイミングで変更して前記生徒モデルを訓練する、学習装置。
【請求項3】
前記教師モデルに対する損失は、前記教師モデルと前記生徒モデルとの間の、推論結果の誤差、或いは、中間層の特徴マップの誤差である、請求項
2に記載の学習装置。
【請求項4】
前記性能とは、物体検出の性能である、請求項
1に記載の学習装置。
【請求項5】
教師モデルを用いて生徒モデルを訓練する学習方法であって、
前記教師モデルと前記生徒モデルとの性能差
を求め、
前記性能差が所定の閾値よりも小さくなった場合に、前記生徒モデルの訓練に使用する前記教師モデルを、使用中の教師モデルよりも性能の高い教師モデルに変更する、学習方法。
【請求項6】
教師モデルを用いて生徒モデルを訓練する学習方法であって、
前記生徒モデルの損失を、学習データに対する損失と、前記教師モデルに対する損失とを用いて求め、
前記学習データに対する損失と、前記教師モデルに対する損失とのバランスを調整する重み係数を、所定のタイミングで変更して前記生徒モデルを訓練する、学習方法。
【請求項7】
前記所定のタイミングは、前記教師モデルと前記生徒モデルとの性能差が所定の閾値よりも小さくなった場合である、請求項
6に記載の学習方法。
【請求項8】
前記所定のタイミングは、所定エポック数ごとである、請求項
6に記載の学習方法。
【請求項9】
教師モデルを用いて生徒モデルを訓練する学習方法をコンピュータに実行させるプログラムであって、
前記コンピュータを、
前記教師モデルと前記生徒モデルとの性能差を求めることと、
前記性能差が所定の閾値よりも小さくなった場合に、前記生徒モデルの訓練に使用する前記教師モデルを、使用中の教師モデルよりも性能の高い教師モデルに変更することと、
を実行する手段として機能させる、プログラム。
【請求項10】
教師モデルを用いて生徒モデルを訓練する学習方法をコンピュータに実行させるプログラムであって、
前記コンピュータを、
前記生徒モデルの損失を、学習データに対する損失と、前記教師モデルに対する損失とを用いて求めることと、
前記学習データに対する損失と、前記教師モデルに対する損失とのバランスを調整する重み係数を、所定のタイミングで変更して前記生徒モデルを訓練することと、
を実行する手段として機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習装置および学習方法に関する。
【背景技術】
【0002】
従来、ディープラーニング(深層学習)の学習手法の一つとして、知識蒸留(Knowledge Distillation)と呼ばれる手法が知られている(例えば特許文献1参照)。知識蒸留においては、パラメータ数の多い大規模な教師モデルを用いて、パラメータ数の少ない生徒モデルの訓練が行われる。知識蒸留により、モデルのサイズを小さくしつつ、モデルの性能の低下を抑制することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
知識蒸留を利用した学習手法では、生徒モデルの性能が教師モデルの性能に近づく学習の後半において、生徒モデルの性能が飽和し、知識蒸留による性能の向上効果が十分に得られないことがある。また、使用する教師モデルの性能が高すぎる場合に、生徒モデルの性能を十分に向上させることができないことがある。
【0005】
また、知識蒸留を利用した学習手法では、学習の終盤において、教師モデルと生徒モデルとの特徴空間の違いのために、例えば教師モデルの特徴マップに生徒モデルの特徴マップを近づけることが、生徒モデルの学習に悪影響を及ぼすことが懸念される。当該悪影響により、生徒モデルの性能を悪化させることが懸念される。
【0006】
本発明は、上記の点に鑑み、知識蒸留を利用した深層学習において、生徒モデルの性能を適切に向上することができる技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
例示的な本発明の学習装置は、教師モデルを用いて生徒モデルを訓練する学習装置であって、前記教師モデルと前記生徒モデルとの性能差を求める評価部と、前記性能差に基づいて、前記教師モデルの変更を行うか、或いは、前記生徒モデルの損失の算出時における重み係数の変更を行う変更部と、を備える。
【0008】
例示的な本発明の学習方法は、教師モデルを用いて生徒モデルを訓練する学習方法であって、前記教師モデルと前記生徒モデルとの性能差に基づいて、前記教師モデルの変更を行う。
【0009】
例示的な本発明の学習方法は、教師モデルを用いて生徒モデルを訓練する学習方法であって、前記生徒モデルの損失を、学習データに対する損失と、前記教師モデルに対する損失とを用いて求め、前記学習データに対する損失と、前記教師モデルに対する損失とのバランスを調整する重み係数を、所定のタイミングで変更して前記生徒モデルを訓練する。
【発明の効果】
【0010】
例示的な本発明によれば、知識蒸留を利用した深層学習において、生徒モデルの性能を適切に向上することができる。
【図面の簡単な説明】
【0011】
【
図1】学習装置のハードウェア構成を示すブロック図
【
図2】学習装置が備えるプロセッサの機能構成を示すブロック図
【
図3】教師モデルを変更する構成について説明するための模式図
【
図4】第1実施形態の学習装置を用いて生徒モデルの訓練を行う場合における生徒モデルの性能変化の様子を示す模式図
【
図5】第1実施形態に係る学習装置における生徒モデルの訓練の流れを示すフローチャート
【
図6】第2実施形態に係る学習装置における生徒モデルの訓練の流れを示すフローチャート
【
図7】複数エポックごとに重み係数λが減衰される例を示す図
【
図8】1エポックごとに重み係数λが減衰される例を示す図
【発明を実施するための形態】
【0012】
以下、本発明の例示的な実施形態について、図面を参照しながら詳細に説明する。
【0013】
<1.第1実施形態>
図1は、本発明の第1実施形態に係る学習装置10のハードウェア構成を示すブロック図である。学習装置10は、機械学習用の学習装置であり、学習手法として知識蒸留を利用する。以下、知識蒸留を、単に「蒸留」と記載することがある。学習装置10は、教師モデルを用いて生徒モデルを訓練する学習装置である。学習装置10は、教師モデルを用いて生徒モデルを訓練する学習方法を実行する。詳細には、学習装置10は、学習データおよび教師モデルを用いて生徒モデルに学習させる。なお、本実施形態では、学習装置10は複数の教師モデルを用いて生徒モデルの訓練を行う。
【0014】
本実施形態においては、学習データは、正解ラベル付きの学習データである。教師モデルは、パラメータ数の多い大規模なディープニューラルネットワークであり、既に学習済みのモデルである。生徒モデルは、教師モデルに比べてパラメータ数の少ない小規模のディープニューラルネットワークである。生徒モデルは、これから学習(訓練)を行わせるモデルである。
【0015】
図1に示すように、学習装置10は、プロセッサ11と記憶部12とを備える。記憶部12は、教師モデルおよび生徒モデルを記憶する。教師モデルは、学習済みパラメータを含む。生徒モデルは、学習により更新されるパラメータを含む。本実施形態では、教師モデルは複数であり、記憶部12には、複数の教師モデルが記憶されている。
【0016】
プロセッサ11は、記憶部12に記憶されている教師モデルを用いた学習データに対する推論、および、生徒モデルを用いた学習データに対する推論を行う機能を発揮する。プロセッサ11は、教師モデルの推論結果と、生徒モデルの訓練結果との誤差が小さくなるように、生徒モデルのパラメータを更新する機能を発揮する。なお、推論結果の代わりに、中間層の特徴マップが利用されてもよい。
【0017】
図2は、本発明の第1実施形態に係る学習装置10が備えるプロセッサ11の機能構成を示すブロック図である。プロセッサ11の機能は、記憶部12に記憶されるプログラムにしたがった演算処理の実行により発揮される。
図2に示すように、本実施形態のプロセッサ11は、その機能として、取得部110と、第1推論部111と、第2推論部112と、学習部113と、評価部114と、変更部115とを備える。換言すると、学習装置10は、取得部110と、第1推論部111と、第2推論部112と、学習部113と、評価部114と、変更部115とを備える。取得部110は、学習データを取得する。
【0018】
第1推論部111は、学習済みの教師モデルを利用して、入力された学習データに対する推論を行う。第1推論部111の機能は、プロセッサ11によって記憶部12に記憶される教師モデルが読み込まれることにより実現される。推論により、推論の最終的な結果である推論結果や、中間出力である特徴マップ等が得られる。本実施形態では、学習データは画像データであり、第1推論部111は、入力された画像データに対する物体検出を行う。第1推論部111の推論結果には、物体の種類および位置の特定が含まれる。物体の種類は、例えば、歩行者、自転車、自動車、信号機等である。位置の特定には、バウンディングボックスが利用される。
【0019】
第2推論部112は、教師モデルによる訓練の対象である生徒モデルを利用して、入力された学習データに対する推論を行う。第2推論部112の機能は、プロセッサ11によって記憶部12に記憶されている生徒モデルが読み込まれることにより実現される。推論により、推論の最終的な結果である推論結果や、中間出力である特徴マップ等が得られる。なお、生徒モデルのパラメータは、学習により逐次更新される。本実施形態では、上述のように学習データは画像データであり、第2推論部112は、入力された画像データに対する物体検出を行う。第2推論部112の推論結果には、第1推論部111と同様に、物体の種類と位置の特定が含まれる。
【0020】
学習部113は、生徒モデルの教師モデルに対する損失(蒸留損失Ldstl)を求める。教師モデルに対する損失(蒸留損失Ldstl)は、教師モデルと生徒モデルとの間の、推論結果の誤差、或いは、中間層の特徴マップ(中間出力)の誤差である。これにより、従来の技術を利用して損失関数を容易に求めることができる。
【0021】
本実施形態では、蒸留損失Ldstlは、教師モデルの特徴マップと、生徒モデルの特徴マップとの間の誤差である。蒸留損失Ldstlは、例えば、以下の式(1)で表されるL2損失であってよい。ただし、蒸留損失Ldstlは、L2損失以外であってもよく、例えば、教師モデルと生徒モデルの出力の分布間の損失を表すKLダイバージェンス等であってもよい。
【0022】
【数1】
式(1)において、nはサンプル(データ)の総数を示す。f
xi
sは、サンプルxiの生徒モデルの出力を示す。f
xi
tは、サンプルxiの教師モデルの出力を示す。
【0023】
また、学習部113は、生徒モデルの学習データに対する損失を求める。詳細には、学習部113は、生徒モデルの、学習データの正解ラベルに対する学習タスク特有の誤差(損失)を求める。本実施形態では、学習タスクは物体検出であり、学習タスク特有の損失Luqには、例えば、クラス分類損失Lclsと、バウンディングボックス回帰損失Lbboxとが含まれる。本実施形態の学習タスク特有の損失Luqは、例えば、以下の式(2)により求められる。
【0024】
なお、以下の式(2)は、物体検出アルゴリズムの一例であるYOLOを利用する場合を想定したものである。YOLOでは、入力画像をS×Sのグリッドに区切り、グリッド毎に、ある一定のアスペクト比を持つB個の矩形領域の中心座標(x、y)、幅と高さのスケール(w、h)、および、矩形領域内に物体が存在する確率(C)を予測する。さらに、各矩形領域に何らかの物体が存在するとき、その物体がどのクラスに属するかを示す事後確率p(c)も予測する。YOLOでは、矩形領域、物体の存在確率、クラスの事後確率の予測を、1つの損失関数に統合している。
【0025】
【数2】
添え字がない変数は予測値、添え字「truth」が付与された変数が正解を示す。λcoord、λnoobjは係数である。式(2)において、第1項および第2項は、矩形領域の中心座標と大きさに関する損失関数を示す。式(2)において、第3項および第4項は、存在確率に関する損失関数を示す。式(2)において、第5項はクラスの事後確率に関する損失関数を示す。
【0026】
学習部113は、生徒モデルの教師モデルに対する損失(蒸留損失Ldstl)と、生徒モデルの学習データに対する損失(学習タスク特有の損失Luq)とを用いて算出される損失Lを最小化するように生徒モデルを学習する。詳細には、学習部113は、誤差逆伝播法を用いて生徒モデルのパラメータの更新を行う。
【0027】
なお、教師モデルに対する損失と、学習データに対する損失とを用いて算出される損失Lは、例えば以下の式(3)で算出されてよい。式(3)において、λは重み係数である。重み係数λは、学習データに対する損失と、教師モデルに対する損失とのバランスを調整する係数である。本実施形態では、重み係数λは定数である。
L = Luq + λ・Ldstl (3)
【0028】
評価部114は、教師モデルと生徒モデルとの性能の差(性能差)を求める。上述のように、本実施形態において、性能とは、物体検出の性能である。本実施形態によれば、物体検出処理を高速で行うことができる高性能の学習済みモデルを、知識蒸留を用いて生成することができる。
【0029】
詳細には、評価部114は、物体検出タスクに対する評価指標であるmAP(mean Average Precision)を用いて性能差を算出する。すなわち、評価部114は、生徒モデルのmAPを求めて、教師モデルのmAPとの差を算出する。なお、教師モデルのmAPは、毎回算出する構成としても、予め記憶部12に記憶されている構成としてもよい。学習タスクが物体検出でない場合には、mAPとは異なる性能の評価指標が用いられればよい。例えば、学習タスクが画像のセグメンテーションである場合には、性能の評価指標としてmIoU(mean Intersection over Union)が用いられてよい。
【0030】
変更部115は、教師モデルと生徒モデルとの性能差に基づいて教師モデルの変更を行う。
図3は、教師モデルを変更する構成について説明するための模式図である。
図3に示すように、本実施形態では、予め準備される教師モデルの数は1つではなく複数である。
図3において、N>1である。複数の教師モデルは、互いに性能が異なる。生徒モデルを訓練するために使用される教師モデルは、教師モデルと生徒モデルとの性能性に応じて順次変更される。
【0031】
このような構成とすると、生徒モデルの性能が教師モデルの性能に近づいた場合に、より性能の高い教師モデルに変更して生徒モデルの訓練を行うことができる。このために、教師モデルを1つのみとして生徒モデルを訓練する場合に比べて生徒モデルの性能を向上させることができる。また、生徒モデルの性能に応じて教師モデルの性能を徐々に変化させることができ、生徒モデルの訓練を適切に行うことができる。
【0032】
図3において、教師モデルの番号が大きくなるにつれて、教師モデルの性能は高くなる。すなわち、
図3に示す例では、変更部115は、教師モデルと生徒モデルとの性能差が所定の閾値よりも小さくなった場合に、生徒モデルの訓練に使用する教師モデルを、使用中の教師モデルよりも性能の高い教師モデルに変更する。所定の閾値は、例えば試行錯誤により決定される任意の値である。
【0033】
図4は、本発明の第1実施形態に係る学習装置10を用いて訓練を行う場合における、生徒モデルの性能変化の様子を示す模式図である。
図4の横軸はイタレーションであり、詳細には、生徒モデルのパラメータの更新回数を示す。
図4の縦軸は性能であり、例えば検出対象物体の検出率である。
【0034】
図4に示すように、最初の教師モデルである教師モデル1を用いた訓練により、生徒モデルの性能が教師モデル1の性能に近づくと、教師モデルが教師モデル1から教師モデル1よりも性能が高い教師モデル2に変更されて訓練が行われる。そして、生徒モデルの性能が教師モデル2に近づくと、教師モデルが教師モデル2から教師モデル2よりも性能が高い教師モデル3に変更されて訓練が行われる。このような繰り返しが予め準備された教師モデルの数(N個)だけ行われる。
【0035】
このように、本構成では、生徒モデルの性能に応じた性能を有する教師モデルを用いて生徒モデルの訓練を開始し、生徒モデルの性能の向上に合わせて訓練に用いる教師モデルの性能を徐々に上げる構成となっている。このために、最初から高性能の教師モデルを使用して生徒モデルを訓練する場合に比べて、生徒モデルの性能を適切に向上させることができる。また、本構成によれば、効率良く生徒モデルの訓練を行うことができる。
【0036】
図5は、本発明の第1実施形態に係る学習装置10における生徒モデルの訓練の流れを示すフローチャートである。なお、
図5に示すフローチャートの開始前に、N(N>1)個の学習済みの教師モデルが作成されている。教師モデルを学習させる学習手法は公知の手法が利用されてよい。
【0037】
ステップS1では、学習に用いる教師モデルの番号に対応する変数「i」がゼロに設定される。なお、N個の教師モデルには、性能の低い方から高い方に向けて順番に、0、1、・・・N-1の番号が割り当てられている。ステップS1の処理が完了すると、次のステップS2に処理が進められる。
【0038】
ステップS2では、エポック数を表す変数「epoch」がゼロに設定される。なお、エポック数の最大値はMに設定されている。Mエポックは、例えば100エポック等である。ステップS2の処理が完了すると、次のステップS3に処理が進められる。
【0039】
ステップS3では、i番目の教師モデルを用いて生徒モデルの学習が行われる。当該学習は、上述した知識蒸留を用いた学習である。ここでは、1エポック分の学習が行われる。詳細には、学習データのセットをバッチサイズにしたがって複数のサブセットに分け、サブセット毎(1イタレーション毎)に知識蒸留を用いた学習が行われる。サブセット毎に、i番目の教師モデルによる推論と、生徒モデルによる推論とが行われる。そして、サブセット毎に、i番目の教師モデル、および、生徒モデルを用いた推論により得られる損失関数(式(3)参照)を用いて、生徒モデルのパラメータ更新が行われる。全てのサブセットの学習が完了することで、1エポック分の学習が完了したことになる。ステップS3の処理が完了すると、次のステップS4に処理が進められる。
【0040】
ステップS4では、ステップS3で学習が行われた生徒モデルの性能の評価が行われる。本実施形態では、ステップS3における学習後の生徒モデルについて、物体検出タスクの評価指標であるmAPを求める。mAPを求めると、次のステップS5に処理が進められる。
【0041】
ステップS5では、教師モデルと生徒モデルの性能差が閾値未満であるか否かが判定される。具体的には、教師モデルのmAPと、生徒モデルのmAPとの差が閾値未満であるか否かが判定される。閾値は、予め記憶部12に記憶された一定値である。性能差が閾値以上である場合(ステップS5でNo)、次のステップS6に処理が進められる。性能差が閾値未満である場合(ステップS5でYes)、ステップS8に処理が進められる。すなわち、ステップS6およびステップS7の処理がとばされる。
【0042】
ステップS6では、変数「epoch」に1が加算される。この時点で変数「epoch」がゼロであった場合には、変数「epoch」が1となる。すなわち、i番目の教師モデルを用いた学習(知識蒸留)が1エポック完了したことになる。また、変数「epoch」が50であった場合には、変数「epoch」が51となる。すなわち、i番目の教師モデルを用いた学習が51エポック完了したことになる。ステップS6の処理が完了すると、次のステップS7に処理が進められる。
【0043】
ステップS7では、変数「epoch」が最大エポック数Mより小さいか否かが確認される。変数「epoch」が最大エポック数Mより小さい場合(ステップS7でYes)、ステップS3に処理が戻される。すなわち、i番目の教師モデルを用いた学習が繰り返されることになる。変数「epoch」が最大エポック数Mに到達している場合(ステップS7でNo)、次のステップS8に処理が進められる。
【0044】
ステップS8では、変数「i」に1が加算される。すなわち、学習に使用する教師モデルが、i番目の教師モデルからi+1番目の教師モデルとされる。例えば、i=0であれば、i=1となり、教師モデル0から教師モデル1に変更されることになる。ステップS8の処理が完了すると、次のステップS9に処理が進められる。
【0045】
ステップS9では、変数「i」がNより小さいか否かが確認される。すなわち、予め準備された全ての教師モデルが生徒モデルの訓練に用いられたか否かが確認される。変数「i」がNより小さい場合(ステップS9でYes)、未だ全ての教師モデルが生徒モデルの訓練に使用されていないために、ステップS2に処理が戻される。これにより、直前の学習で使用された教師モデルより性能の高い新たな教師モデルを使った、知識蒸留による生徒モデルの訓練が開始される。なお、教師モデルの変更に合わせて、ステップS5の処理における閾値も変更されてよい。変数「i」がNに到達している場合(ステップS9でNo)、
図5に示す生徒モデルの訓練(学習)が完了し、新たな学習済み(訓練済み)モデルが完成する。
【0046】
図5の処理により得られた学習済みの生徒モデルは、予め準備された教師モデルのうちの最も高性能な教師モデルに近い性能を獲得することができる。また、当該学習済みモデルは、教師モデルに比べてパラメータの数が少なく、処理を迅速に行うことができる。
【0047】
<2.第2実施形態>
次に、第2実施形態の学習装置について説明する。第2実施形態の学習装置も、第1実施形態と同様に、教師モデルを用いた知識蒸留により、生徒モデルの訓練を行う。第2実施形態の学習装置のハードウェア構成は、
図1に示す第1実施形態の学習装置10のハードウェア構成と同様である。また、第2実施形態の学習装置が備えるプロセッサの機能構成も、
図2に示す第1実施形態の学習装置10が備えるプロセッサ11の機能構成と同様である。ただし、プロセッサが備える学習部113および変更部115の機能の詳細について、第2実施形態は第1実施形態と異なる。以下、この異なる部分を中心に説明を行う。第1実施形態と重複する内容については、特に説明の必要がある場合を除いて説明を省略する。
【0048】
学習部113は、第1実施形態と同様に、式(3)に示される損失Lを最小化するように生徒モデルを学習する。ただし、第1実施形態では式(3)に示す重み係数λが一定とされたが、第2実施形態では重み係数λは一定でない。この点、第1実施形態と異なる。
【0049】
変更部115は、教師モデルと生徒モデルとの性能差に基づいて、生徒モデルの損失の算出時における重み係数の変更を行う。このような構成とすることで、例えば生徒モデルの性能が教師モデルの性能に近づいた段階で重み係数λを変更して、生徒モデルが教師モデルの影響を受け難い状態として学習させることができる。
【0050】
詳細には、生徒モデルにおける損失Lは、上述のように式(3)で算出される。すなわち、本実施形態では、重み係数は、学習データに対する損失Luqと、教師モデルに対する損失Ldstlとのバランスを調整する係数λである。生徒モデルの性能が教師モデルの性能に近づいた場合にλの値を小さくすることにより、教師モデルの影響を受け難くして学習させることができる。これにより、教師モデルが生徒モデルの学習に悪影響を及ぼす可能性を低減することができる。
【0051】
図6は、本発明の第2実施形態に係る学習装置における生徒モデルの訓練の流れを示すフローチャートである。なお、
図6に示すフローチャートの開始前に、公知の手法により学習が行われた学習済みの教師モデルが作成されている。本実施形態では、第1実施形態と異なり、教師モデルの数は1つである。
【0052】
ステップS11では、エポック数を表す変数「epoch」がゼロに設定される。なお、学習予定のエポック数はMに設定されている。エポック数Mは、例えば100エポック等である。ステップS11の処理が完了すると、次のステップS12に処理が進められる。
【0053】
ステップS12では、教師モデルを用いて生徒モデルの学習が行われる。当該学習は、上述した知識蒸留を用いた学習である。ここでは、1エポック分の学習が行われる。詳細には、学習データのセットをバッチサイズにしたがって複数のサブセットに分け、サブセット毎(1イタレーション毎)に知識蒸留を用いた学習が行われる。サブセット毎に、教師モデルによる推論と、生徒モデルによる推論とが行われる。そして、サブセット毎に、教師モデルおよび生徒モデルを用いた推論により得られる損失関数(式(3)参照)を用いて、生徒モデルのパラメータ更新が行われる。全てのサブセットの学習が完了することで、1エポック分の学習が完了したことになる。ステップS12の処理が完了すると、次のステップS13に処理が進められる。
【0054】
ステップS13では、ステップS12で学習が行われた生徒モデルの性能の評価が行われる。本実施形態では、ステップS12における学習後の生徒モデルについて、物体検出タスクの評価指標であるmAPを求める。mAPを求めると、次のステップS14に処理が進められる。
【0055】
ステップS14では、教師モデルと生徒モデルの性能差が閾値未満であるか否かが判定される。具体的には、教師モデルのmAPと、生徒モデルのmAPとの差が閾値未満であるか否かが判定される。閾値は、予め記憶部12に記憶された一定値である。性能差が閾値未満である場合(ステップS14でYes)、次のステップS15に処理が進められる。性能差が閾値以上である場合(ステップS14でNo)、ステップS16に処理が進められる。すなわち、ステップS15の処理がとばされる。
【0056】
ステップS15では、式(3)に含まれる重み係数λが変更される。詳細には、重み係数λの値は小さくされる。例えば、現在のλの値に対して1よりも小さい定数(例えば0.5等)が乗じられる。すなわち、式(3)において、λ×Ldstlで表される項の重みが小さくなる。この結果、生徒モデルの損失Lにおける教師モデルに対する損失Ldstlの重みが小さくなり、教師モデルの影響を小さくして生徒モデルを学習させることができる。ステップS15の処理が完了すると、次のステップS16に処理が進められる。
【0057】
なお、ステップS15で重み係数λが変更された場合、当該変更に合わせてステップS14の閾値も変更される構成としてよい。また、重み係数λが変更された後も、閾値を一定としてもよい。この場合には、最初に重み係数λが変更された後は、1エポック毎に重み係数λが徐々に小さくなることになる。また、一度重み係数λが変更された後は、その後は重み係数λが変更されない構成としてもよい。
【0058】
ステップS16では、変数「epoch」に1が加算される。この時点で変数「epoch」がゼロであった場合には、変数「epoch」が1となる。すなわち、教師モデルを用いた学習(知識蒸留)が1エポック完了したことになる。また、変数「epoch」が50であった場合には、変数「epoch」が51となる。すなわち、教師モデルを用いた学習が51エポック完了したことになる。ステップS16の処理が完了すると、次のステップS17に処理が進められる。
【0059】
ステップS17では、変数「epoch」が学習予定のエポック数Mより小さいか否かが確認される。変数「epoch」がエポック数Mより小さい場合(ステップS17でYes)、ステップS12に処理が戻され、学習が繰り返されることになる。変数「epoch」がエポック数Mに到達している場合(ステップS17でNo)、
図6に示す生徒モデルの訓練(学習)が完了し、新たな学習済みモデルが完成する。
【0060】
図6の処理により得られた学習済みの生徒モデルは、教師モデルから悪影響を受ける可能性が低く、知識蒸留を用いることで適切に性能を向上させることができる。また、当該学習済みモデルは、教師モデルに比べてパラメータの数が少なく、処理を迅速に行うことができる。
【0061】
以上からわかるように、第2実施形態の学習方法においても、生徒モデルの損失Lは、学習データに対する損失Luqと、教師モデルに対する損失Ldstlとを用いて求められる。また、第2実施形態の学習方法においては、学習データに対する損失Luqと、教師モデルに対する損失Ldstlとのバランスを調整する重み係数λを、所定のタイミングで変更して生徒モデルが訓練される。このような構成とすることで、生徒モデルの訓練時における教師モデルの影響を調整しながら生徒モデルの訓練を行うことができる。
【0062】
上述のように、本実施形態では、所定のタイミングは、教師モデルと生徒モデルとの性能差が所定の閾値よりも小さくなった場合である。これにより、生徒モデルの性能が教師モデルの性能に近づいた段階で重み係数λを変更して、生徒モデルが教師モデルの影響を受け難い状態として学習させることができる。
【0063】
ただし、別の例として、所定のタイミングは、所定エポック数ごとであってもよい。このように構成すると、所定エポック数ごとに重み係数λを減衰させることができ、知識蒸留を用いた学習の進行に合わせて教師モデルの影響を徐々に減らすことができる。
【0064】
所定エポック数ごとは、例えば複数エポックごとであっても、1エポックごとであってもよい。
図7は、複数エポックごとに重み係数λが減衰される例を示す図である。
図7において、横軸はエポック数であり、縦軸はλの値である。
図7に示す例においては、エポック数に対するλの値は、以下の式(4)で表すことができる。
λ = λ_int*(0.9^(epoch mod 50)) (4)
λ_intは、λの初期値である。epochは、現在のエポック数を示す。式(4)に示す例では、重み係数λが、50エポックごとに0.9倍される。0.9倍は一例であり、1より小さい他の数であってよい。
【0065】
図8は、1エポックごとに重み係数λが減衰される例を示す図である。
図8において、横軸はエポック数であり、縦軸はλの値である。
図8に示す例においては、エポック数に対するλの値は、以下の式(5)で表すことができる。
λ = λ_int*(cos(π*epoch/M) + 1)/ 2 (5)
λ_intは、λの初期値である。epochは、現在のエポック数を示す。Mは学習予定のエポック数である。
図8に示す例では、λは、いわゆるCosine Anneslingが施されて連続的(1エポックごと)に減衰される。
【0066】
<3.留意事項等>
本明細書中に開示されている種々の技術的特徴は、上記実施形態のほか、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって、制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。また、本明細書中に示される複数の実施形態及び変形例は可能な範囲で適宜組み合わせて実施されてよい。
【符号の説明】
【0067】
10・・・学習装置
114・・・評価部
115・・・変更部