(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024120338
(43)【公開日】2024-09-05
(54)【発明の名称】機械学習装置、方法及びプログラム
(51)【国際特許分類】
G06N 3/084 20230101AFI20240829BHJP
G06N 3/0985 20230101ALI20240829BHJP
【FI】
G06N3/084
G06N3/0985
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023027070
(22)【出願日】2023-02-24
(71)【出願人】
【識別番号】000237592
【氏名又は名称】株式会社デンソーテン
(74)【代理人】
【識別番号】110001933
【氏名又は名称】弁理士法人 佐野特許事務所
(72)【発明者】
【氏名】関 竜介
(72)【発明者】
【氏名】岡田 康貴
(72)【発明者】
【氏名】山埜 啓輔
(57)【要約】
【課題】勾配クリッピングにおける閾値を適正化する。
【解決手段】入力データから出力データを生成するモデルのパラメータを教師あり機械学習により調整する機械学習装置であって、訓練データ(TD[i])を順次取得し、訓練データごとに訓練データに基づきモデルにおける損失関数(L[i])の勾配(g[i])の導出を通じてパラメータを更新する。訓練データごとに勾配のノルムである勾配ノルム(||g[i]||)を導出して勾配ノルムを閾値(u)と比較する。勾配ノルムが閾値を超えるとき、閾値を用いて勾配を修正する勾配クリッピングを実行してから修正後の勾配を用いてパラメータを更新する。訓練データごとに勾配ノルムをメモリに格納してゆくことでメモリに勾配ノルム群を保持させ、勾配ノルム群に基づいて閾値を設定する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
入力データから出力データを生成するモデルのパラメータを教師あり機械学習により調整する機械学習装置であって、
訓練データを順次取得し、前記訓練データごとに前記訓練データに基づき前記モデルにおける損失関数の勾配の導出を通じて前記パラメータを更新する演算処理部と、
メモリと、備え、
前記演算処理部は、前記訓練データごとに前記勾配のノルムである勾配ノルムを導出して前記勾配ノルムを閾値と比較し、前記勾配ノルムが前記閾値を超えるとき、前記閾値を用いて前記勾配を修正し、前記修正後の前記勾配を用いて前記パラメータを更新し、
前記演算処理部は、前記訓練データごとに前記勾配ノルムを前記メモリに格納してゆくことで前記メモリに勾配ノルム群を保持させ、前記勾配ノルム群に基づいて前記閾値を設定する
、機械学習装置。
【請求項2】
前記演算処理部は、前記勾配ノルム群に含まれる複数の勾配ノルムから、勾配ノルムの値が小さい方から予め定めた所定の割合に対応する勾配ノルムを抽出し、前記抽出した勾配ノルムを前記閾値に設定する
、請求項1に記載の機械学習装置。
【請求項3】
前記演算処理部は、前記勾配ノルム群に含まれる複数の勾配ノルムから、勾配ノルムの値が小さい方から予め定めた所定の割合内に属する2以上の勾配ノルムを抽出し、前記抽出した2以上の勾配ノルムの平均を前記閾値に設定する
、請求項1に記載の機械学習装置。
【請求項4】
前記演算処理部は、前記訓練データごとに前記訓練データに基づき前記勾配及び前記勾配ノルムを導出する導出処理を実行し、前記訓練データごと前記勾配ノルムと前記閾値とを比較し、
前記勾配ノルムが前記閾値以下であるとき、前記導出処理にて導出された前記勾配である原勾配を用いて前記パラメータを更新し、
前記勾配ノルムが前記閾値を超えるとき、前記閾値を用いて前記原勾配を修正することで修正勾配を導出し、前記修正勾配を用いて前記パラメータを更新する
、請求項1~3の何れかに記載の機械学習装置。
【請求項5】
前記演算処理部は、単位処理を繰り返し実行し、
前記演算処理部は、各単位処理において、
ミニバッチとして前記訓練データを取得して、取得した前記訓練データに基づき前記勾配及び前記勾配ノルムの導出を経て前記勾配ノルムを前記メモリに格納し、前記勾配ノルムと前記閾値との比較結果に基づき、前記原勾配又は前記修正勾配を用いて前記パラメータを更新する
、請求項4に記載の機械学習装置。
【請求項6】
前記演算処理部は、前記閾値を用いた前記原勾配の修正において、前記原勾配と前記閾値との積を前記勾配ノルムで除することで前記修正勾配を導出する
、請求項4に記載の機械学習装置。
【請求項7】
前記演算処理部は、前記メモリに格納される前記勾配ノルムの個数が基準数より少ないとき、予め定められた初期値を前記閾値に設定する
、請求項2又は3に記載の機械学習装置。
【請求項8】
前記演算処理部は、前記メモリに格納される前記勾配ノルムの個数が2以上であって且つ基準数より少ないとき、前記メモリに格納される前記勾配ノルムの平均を前記閾値に設定する
、請求項2又は3に記載の機械学習装置。
【請求項9】
入力データから出力データを生成するモデルのパラメータを教師あり機械学習により調整する機械学習方法であって、
訓練データを順次取得し、前記訓練データごとに前記訓練データに基づき前記モデルにおける損失関数の勾配の導出を通じて前記パラメータを更新し、
前記訓練データごとに前記勾配のノルムである勾配ノルムを導出して前記勾配ノルムを閾値と比較し、前記勾配ノルムが前記閾値を超えるとき、前記閾値を用いて前記勾配を修正し、前記修正後の前記勾配を用いて前記パラメータを更新し、
前記訓練データごとに前記勾配ノルムをメモリに格納してゆくことで前記メモリに勾配ノルム群を保持させ、前記勾配ノルム群に基づいて前記閾値を設定する
、機械学習方法。
【請求項10】
請求項9に記載の機械学習方法をコンピュータ装置に実行させるための機械学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習装置、方法及びプログラムに関する。
【背景技術】
【0002】
ニューラルネットワークによるモデルの機械学習において、勾配爆発と呼ばれる、損失関数の勾配の値が非常に大きくなる現象が知られている。勾配爆発が発生すると、モデルのパラメータ(ニューラルネットワークの重み及びバイアスのパラメータ)が大きく変動するため、損失関数が発散し、学習が不安定になる。
【0003】
勾配爆発の対処方法として勾配クリッピングと称される方法が知られている。勾配クリッピングでは、損失関数の勾配のノルムに対して上限値に相当する閾値を設定しておき、損失関数の勾配のノルムが閾値を超える場合に、閾値を用いて勾配が小さくなるよう修正する。勾配クリッピングの利用により学習を安定化させることができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
勾配クリッピングにおいて閾値は基本的にハイパーパラメータである。このため、モデルの構造及び学習に使用するデータセットに応じて閾値を実験的又は探索的に決定する必要がある。このため、最適な閾値を得るためには、閾値に対して様々な学習及び評価を繰り返す必要がある。モデル又はデータセットが大規模である場合、学習プロセスの計算コストも大きいため、閾値を最適化することは困難である。
【0006】
閾値が小さいほど学習は安定化するが、一方で学習に有益な勾配情報が失われ易くなるため、モデルの性能の低下や、学習にかかる時間が増大する可能性がある。逆に、閾値が必要以上に大きいと勾配が0に収束できない(学習が収束しない)場合等が発生するため、学習が不安定になる。このように、勾配クリッピングを利用した機械学習では、学習の安定性と、学習を経て得られるモデルの性能と、がトレードオフの関係にある。勾配クリッピングにおける閾値を適正化することができれば、学習の安定性確保とモデルの性能向上とを両立させ、また学習時間を適度なものとすることができる。
【0007】
本発明は、勾配クリッピングにおける閾値の適正化に寄与する機械学習装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る機械学習装置は、入力データから出力データを生成するモデルのパラメータを教師あり機械学習により調整する機械学習装置であって、訓練データを順次取得し、前記訓練データごとに前記訓練データに基づき前記モデルにおける損失関数の勾配の導出を通じて前記パラメータを更新する演算処理部と、メモリと、備え、前記演算処理部は、前記訓練データごとに前記勾配のノルムである勾配ノルムを導出して前記勾配ノルムを閾値と比較し、前記勾配ノルムが前記閾値を超えるとき、前記閾値を用いて前記勾配を修正し、前記修正後の前記勾配を用いて前記パラメータを更新し、前記演算処理部は、前記訓練データごとに前記勾配ノルムを前記メモリに格納してゆくことで前記メモリに勾配ノルム群を保持させ、前記勾配ノルム群に基づいて前記閾値を設定する。
【発明の効果】
【0009】
本発明によれば、勾配クリッピングにおける閾値の適正化に寄与する機械学習装置、方法及びプログラムを提供することが可能となる。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施形態に係る機械学習システムの全体構成図である。
【
図2】本発明の実施形態に係り、機械学習が適用されるモデルの構成及び入出力データを示す図である。
【
図3】本発明の実施形態に係り、学習用データとしての画像データセットの構成図である。
【
図4】本発明の実施形態に係り、機械学習工程のフローチャートである。
【
図5】本発明の実施形態に係り、勾配ノルム格納部に勾配ノルム群が格納される様子を示す図である。
【
図6】本発明の実施形態に係り、勾配ノルム格納部に勾配ノルム群が格納される様子を示す図である。
【
図7】本発明の実施形態に係り、勾配ノルム群の昇順ソート配列を示す図である。
【
図8】本発明の実施形態に係り、勾配ノルム群の昇順ソート配列に基づく閾値設定方法の概念図である。
【
図9】本発明の実施形態に係り、勾配ノルム群の昇順ソート配列に基づく他の閾値設定方法の概念図である。
【
図10】本発明の実施形態に係る演算処理部の機能ブロック図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、機能部、回路、素子又は部品等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、機能部、回路、素子又は部品等の名称を省略又は略記することがある。
【0012】
図1に本発明の実施形態に係る機械学習システムの全体構成を示す。
図1の機械学習システムは、機械学習装置1とデータベース2とを備える。機械学習装置1は1又は複数のコンピュータ装置にて構成される。クラウトコンピューティングを用いて機械学習装置1を実現しても良い。
【0013】
機械学習装置1はハードウェア資源として演算処理部10及びメモリ20を備える。演算処理部10は、MPU(Micro Processing Unit)及びGPU(Graphics Processing Unit)等を含み、所望の演算を実行する。演算処理部10は、メモリ20、データベース2又は他の任意の記録媒体(不図示)に記録されたプログラムを実行することで、演算処理部10にて実現されるべき以下の各機能を実現して良い。メモリ20は、ROM(Read only memory)及びフラッシュメモリ等の不揮発性記録媒体、及び、RAM(Random access memory)等の揮発性記録媒体を含む。演算処理部10はメモリ20に対して任意のデータを書き込むことができると共にメモリ20に記録されたデータを任意に読み出すことができる。メモリ20には揮発性記録媒体にて構成される勾配ノルム格納部21が設けられる。
【0014】
データベース2は学習用データDSを保持する大容量記録媒体である。機械学習装置1に対してデータベース2が有線又は無線にて接続される。演算処理部10はデータベース2に保持された学習用データDSを自由に読み込み可能である。データベース2は、物理的に分離した複数の記録媒体の集合体であっても良く、この場合、複数の記録媒体にて学習用データDSが保持される。データベース2の一部又は全部は機械学習装置1に備えられていても良い。
【0015】
演算処理部10において
図2に示すモデル11が構築される。モデル11は入力データDinから出力データDoutを生成するアルゴリズムである。モデル11はニューラルネットワークであるNN12を有する。NN12はディープニューラルネットワークであって良い。演算処理部10は学習用データDSを用いてモデル11の機械学習を実行する。尚、モデル11の機械学習はNN12の機械学習とも言える。演算処理部10にて行われる機械学習は教師あり機械学習である。
【0016】
機械学習を経たモデル11は所定の推論を行う学習済みモデルである。学習済みモデルは、例えば、推論として物体検出を行う物体検出器であって良い。物体検出では、モデル11に入力された二次元画像内における物体の像の存在領域及び当該物体の種類が推定(換言すれば検出)される。推論として物体検出が行われる場合、学習用データDSは
図3に示す画像データセットDS1である。
【0017】
画像データセットDS1は、大量の学習用画像の画像データとアノテーション情報とを含む。画像データセットDS1において、アノテーション情報は学習用画像ごとに学習用画像に対して付加される。画像データセットDS1における各学習用画像は、様々な種類の物体の像を含む二次元画像である。或る学習用画像に対するアノテーション情報は、当該学習用画像内に存在する物体の種類を示す情報と、当該学習用画像において物体の像が存在する領域の位置及び形状を特定する情報と、を含む。演算処理部10は、画像データセットDS1を用いてモデル11の機械学習を実行することにより推論として物体検出を行うモデル11を構築できる。
【0018】
機械学習が行われる工程を機械学習工程と称する。物体検出を行うモデル11を機械学習により構築する場合の機械学習工程について説明する。説明の具体化のため、注目された学習用画像を注目画像とする。機械学習工程において、演算処理部10は、注目画像の画像データを入力データDinとしてモデル11に入力する。すると、モデル11は、入力データDinに基づき注目画像内における物体の像の存在領域及び当該物体の種類を推定し、その推定結果を示す出力データDoutを生成する。注目画像に対するアノテーション情報は、出力データDoutに対する正解データ(モデル11にて推定されるべき内容の正解を示すデータ)に相当する。
【0019】
機械学習工程において、演算処理部10は、モデル11の出力データDoutと注目画像に対するアノテーション情報との誤差を表す損失関数を導出する。そして、演算処理部10は、損失関数の値が低減されるよう誤差逆伝搬法を用いてモデル11のパラメータを調整する。モデル11のパラメータとはNN12のパラメータであり、NN12における重み及びバイアスのパラメータを含む。上記の調整が所定の学習終了条件が満たされるまで繰り返され、学習終了条件が満たされると機械学習工程を終える。機械学習工程を経た後のモデル11は、推論として物体検出を行う物体検出器(推論モデル)として機能する。
【0020】
物体検出は画像認識の一種である。モデル11にて行われる推論の例として物体検出を挙げたが、モデル11にて行われる推論の内容は任意である。例えば、モデル11にて行われる推論は画像分類であっても良い。また例えば、モデル11にて行われる推論は任意のクラス識別、値予測又はクラスタリングであっても良い。但し、以下では、説明の具体化のため、特に記述なき限り、学習用データDSが画像データセットDS1であって、機械学習を経てモデル11を物体検出器として機能させることを想定する。
【0021】
図4に機械学習工程のフローチャートを示す。
図4に示されるステップS10~S25の各処理は演算処理部10により実行される。演算処理部10は、作業者による機械学習開始操作等をトリガとして、機械学習プログラムを実行することでステップS10~S25の各処理を実現する。機械学習プログラムは、メモリ20、データベース2又は他の任意の記録媒体(不図示)に記録されたプログラムであって良い。機械学習プログラムは複数のプログラムにて構成されていても良く、当該複数のプログラムが実行されることで、
図4に示されるステップS10~S25の各処理が演算処理部10にて実現されても良い。
【0022】
機械学習工程では、まずステップS10において演算処理部10がモデル11を初期化すると共に勾配ノルム格納部21(以下、格納部21と表記され得る)を初期化する。モデル11の初期化によりモデル11の状態が所定の初期状態に設定される。初期状態におけるモデル11のパラメータは、予め定められた初期パラメータ値を持つ。後述の説明から明らかとなるよう、機械学習の中で格納部21に勾配ノルムが順次格納されてゆく。格納部21の初期化により、格納部21に勾配ノルムが1つも格納されていない状態が実現される。ステップS10の後、ステップS11に進む。
【0023】
機械学習工程にて調整されるべきモデル11のパラメータはM個存在する。Mは2以上の任意の整数である。M個のパラメータを特に区別するとき、M個のパラメータを第1~第Mパラメータと称する。
【0024】
ステップS11では、演算処理部10にて管理される変数iに対し1が代入される。ステップS11の後、ステップS12に進む。ステップS12~S23の処理から成るループ処理は、繰り返し実行される。第1回目のループ処理は“i=1”の状態で実行され、第2回目のループ処理は“i=2”の状態で実行される。第3回目以降のループ処理についても同様である。
【0025】
ステップS12において演算処理部10は学習用データDSの中からミニバッチをサンプリングする。演算処理部10における機械学習ではミニバッチ学習が利用される。ミニバッチは、学習用データDSの内、所定のミニバッチサイズを有するデータである。データ取得処理にてサンプリングされたミニバッチを、以下では訓練データと称する。このため、ステップS12では上記サンプリングにより演算処理部10にて訓練データが取得される。第i回目のループ処理にて取得される訓練データを特に記号“TD[i]”にて参照する。取得された訓練データTD[i]はメモリ20に対して一時的に保存され、後段の処理に供される。訓練データTD[i]は学習用データDSの一部である。例えば、学習用データDSが100000枚の学習用画像の画像データを含む場合、訓練データTD[i]は、その内の10枚分の学習用画像の画像データを含み、且つ、当該10枚分の学習用画像に対するアノテーション情報を含む。ステップS12の後、ステップS13に進む。
【0026】
ステップS13において演算処理部10は、訓練データに基づきモデル11の損失関数を導出する。訓練データTD[i]に基づく損失関数を特に記号“L[i]”にて参照する。より具体的には、ステップS13において演算処理部10は、訓練データTD[i]に含まれる学習用画像の画像データを入力データDinとしてモデル11に入力する。これにより、モデル11は現時点のパラメータに基づき出力データDoutを生成する。訓練データTD[i]に含まれるアノテーション情報は、出力データDoutに対する正解データに相当する。演算処理部10は、訓練データTD[i]に基づく出力データDoutと訓練データTD[i]に含まれるアノテーション情報との誤差を表す損失関数L[i]を導出する。ステップS13の後、ステップS14に進む。
【0027】
ステップS14において演算処理部10は、誤差逆伝搬法により損失関数の勾配を導出する。損失関数L[i]の勾配を特に記号“g[i]”にて参照する。損失関数L[i]はモデル11の第1~第Mパラメータに依存する関数である。即ち、第1~第Mパラメータは夫々に損失関数L[i]の変数である。損失関数L[i]の勾配g[i]はM次元のベクトル量であり、第1成分~第M成分からなる。勾配g[i]の第j成分は、損失関数L[i]の偏微分であって、損失関数L[i]の第jパラメータに関する偏微分である。ここで、jは1以上且つM以下の整数を表す。ステップS14の後、ステップS15に進む。
【0028】
ステップS15において演算処理部10は、ステップS14にて導出された勾配のノルムを導出する。勾配のノルムの定義方法は任意である。例えば勾配のL2ノルムが導出されて良い。勾配のノルムは、以下では勾配ノルムと表記され得る。勾配g[i]のノルムを特に記号“||g[i]||”にて参照する。勾配ノルム||g[i]||は、勾配g[i]の第1成分~第M成分に基づくスカラー量である。ステップS15の後、ステップS16に進む。
【0029】
ステップS16において演算処理部10は、勾配ノルム||g[i]||をメモリ20に格納する(記憶させる)。この際、勾配ノルム||g[i]||は格納部21に格納されて保持される。ステップS12~S23の処理から成るループ処理が繰り返される中で、格納部21に格納される勾配ノルムの個数が増大してゆく。
図5には、格納部21に複数の勾配ノルムが格納される様子が示される。以下では、格納部21に格納される勾配ノルムの集まりを勾配ノルム群と称する。格納部21に格納済みの勾配ノルムの個数を記号“NUM”にて表す。故に勾配ノルム群はNUM個の勾配ノルムから成る。ステップS16の後、ステップS17に進む。
【0030】
ステップS17において演算処理部10は、勾配ノルムの個数NUMが所定の基準数NUMREF以上であるかを確認する。基準数NUMREFは予め定められた正の整数値を有し、例えば50又は100である。個数NUMが基準数NUMREF以上である場合には(ステップS17のYes)、ステップS18に進む。個数NUMが基準数NUMREFより少ない場合には(ステップS17のNo)、ステップS19に進む。ステップS17において、個数NUMは変数iの値と一致するので、実際には“i≧NUMREF”の成否に基づきステップS18又はS19への分岐を行えば良い。
【0031】
ステップS18において演算処理部10は閾値設定処理Aにより閾値uを設定する。ステップS19において演算処理部10は閾値設定処理Bにより閾値uを設定する。閾値設定処理A及びBについては後述される。ステップS18又はS19の後、ステップS20に進む。
【0032】
ステップS20において演算処理部10は、ステップS15にて導出された勾配ノルム||g[i]||を現在の閾値uと比較することで、“||g[i]||>n”が成立しているかを判断する。。勾配ノルム||g[i]||が閾値uより大きければ(ステップS20のYes)、ステップS21に進み、勾配ノルム||g[i]||が閾値u以下であれば(ステップS20のNo)、ステップS23に進む。
【0033】
ステップS21において演算処理部10は、ステップS15にて導出された勾配g[i]を勾配クリッピングにより修正することで修正勾配gC[i]を生成する。ステップS15にて導出された勾配そのものと修正勾配とを明確に区別するべく、前者を、以下、適宜、原勾配と称する。修正勾配の算出式は、“gC[i]=g[i]・u/||g[i]||”である。即ち、ステップS21において演算処理部10は、原勾配g[i]と閾値uとの積を勾配ノルム||g[i]||で除することで修正勾配gC[i]を導出する。修正勾配gC[i]は原勾配g[i]と同様にM次元のベクトル量である。ステップS21の勾配クリッピングでは、原勾配g[i]の各成分が閾値uにて乗じられ且つ勾配ノルム||g[i]||で除される。即ち、原勾配g[i]の第j成分と閾値uとの積を勾配ノルム||g[i]||で除することで得られる値が、修正勾配gC[i]の第j成分の値となる。ステップS21の後、ステップS22に進む。
【0034】
ステップS22において演算処理部10は、修正勾配gC[i]に基づき勾配降下法によりモデル11のパラメータを更新する。ステップS23において演算処理部10は、原勾配g[i]に基づき勾配降下法によりモデル11のパラメータを更新する。勾配降下法は周知であるため、その詳細な説明を省略する。ステップS22又はS23の後、ステップS24に進む。
【0035】
ステップS24において演算処理部10は所定の学習終了条件が成立したかを判断する。学習が収束したとき、学習終了条件が成立する。損失関数L[i]の値が所定の微小値以下になったとき、学習が収束したと判断される。或いは、変数iの値が所定の反復上限回数(例えば10000回)に達したとき、学習終了条件が成立しても良い。ステップS24において学習終了条件が成立している場合には(ステップS24のYes)、
図4に示す機械学習を終了する。
図4の機械学習を経た後のパラメータを有するモデル11(即ち学習終了条件の成立後のモデル11)は学習済みモデルであり、良好な推論を行い得る物体検出器として機能する。
【0036】
ステップS24において学習終了条件が成立していない場合には(ステップS24のNo)、ステップS25に進む。ステップS25において演算処理部10は変数iに1を加算し、その後、ステップS12に戻ってステップS12から始まるループ処理を再度実行する。尚、訓練データTD[iA]における各学習用画像と訓練データTD[iB]における各学習用画像とは互いに相違するものとする。iA及びiBは互いに異なる任意の2つの自然数を表す。
【0037】
[閾値設定処理A]
ステップS18で実行される閾値設定処理Aを説明する。今、“i=K”であるときに閾値設定処理Aが実行されることを考える。Kは“K≧NUM
REF”を満たす整数値を持つ。“i=K”の状態で閾値設定処理Aが実行されるとき、
図6に示す如く格納部21には、計K個の勾配ノルム||g[1]||~||g[K]||から成る勾配ノルム群610が格納されている。尚、
図6には各勾配ノルムの具体的数値も各勾配ノルムに対応付けて付記されている(後述の
図7も同様)。勾配降下法の利用により、基本的には上記ループ処理の実行回数が増加するにつれて勾配ノルムが低下してゆくが、例外もある。
【0038】
閾値設定処理Aにおいて演算処理部10は、勾配ノルム群610に含まれる勾配ノルム||g[1]||~||g[K]||を昇順にソートする。
図7に、昇順にソートされた勾配ノルム||g[1]||~||g[K]||の配列620(以下、昇順ソート配列620と称する)を示す。昇順ソート配列620では、より小さな値を持つ勾配ノルムが、より大きな値を持つ勾配ノルムよりも上位に配置される。故に昇順ソート配列620において、最上位に位置する勾配ノルムは、勾配ノルム||g[1]||~||g[K]||の内、最小の値を持つ勾配ノルムである。昇順ソート配列620において、最下位に位置する勾配ノルムは、勾配ノルム||g[1]||~||g[K]||の内、最大の値を持つ勾配ノルムである。同一の値を持つ2以上の勾配ノルムが勾配ノルム群610に含まれる場合、その2以上の勾配ノルムは昇順ソート配列620において上位及び下位の区別なく配列される。ここでは、説明の便宜上、勾配ノルム||g[1]||~||g[K]||は全て互いに異なる値を持つものとする。
【0039】
昇順ソート配列620において、最上位から見てN%の位置に対応する勾配ノルムを、対象勾配ノルムと称する。
図7の例においては、最上位から見てN%の位置に配置される勾配ノルム||g[k
X]||が対象勾配ノルム621である。k
Xは1以上K以下の整数値を持つ。演算処理部10は昇順ソート配列620から対象勾配ノルム621を抽出する(換言すれば昇順ソート配列620に基づき勾配ノルム群610から対象勾配ノルム621を抽出する)。Nは0より大きく且つ100未満の所定値を持つ。望ましくはNは50未満の正の値を持ち、機械学習工程が開始される前に予めハイパーパラメータとして定められる。例えば“N=10”又は“N=20”である。尚、以下に示す変数Jは“J=K×N/100”を満たす。
【0040】
値(K×N)が100にて割り切れる場合、即ち変数Jが整数である場合、演算処理部10は、勾配ノルム||g[1]||~||g[K]||の内、J番目に小さな値を持つ勾配ノルムを対象勾配ノルム621に設定する。例えば、“K=300”且つ“N=20”である場合、“J=K×N/100=300×20/100=60”より、勾配ノルム||g[1]||~||g[300]||の内、60番目に小さな値を持つ勾配ノルムが対象勾配ノルム621に設定される。
【0041】
値(K×N)が100にて割り切れない場合、即ち変数Jが整数でない場合、演算処理部10は、小数点以下切捨てにより変数Jの整数部分の値を特定値J’として求める。その上で、演算処理部10は、勾配ノルム||g[1]||~||g[K]||の内、J’番目に小さな値を持つ勾配ノルムを対象勾配ノルム621に設定する。例えば、“K=304”且つ“N=20”である場合、“J=K×N/100=304×20/100=60.8”より“J’=60”となる。このため、勾配ノルム||g[1]||~||g[300]||の内、60番目に小さな値を持つ勾配ノルムが対象勾配ノルム621に設定される。
【0042】
或いは、値(K×N)が100にて割り切れない場合、演算処理部10は、四捨五入により変数Jに最も近い整数値を特定値J’として求めても良い。この場合も演算処理部10は、勾配ノルム||g[1]||~||g[K]||の内、J’番目に小さな値を持つ勾配ノルムを対象勾配ノルム621に設定する。例えば、“K=304”且つ“N=20”である場合において四捨五入を利用する場合、“J=K×N/100=304×20/100=60.8”より“J’=61”となる。そうすると、勾配ノルム||g[1]||~||g[300]||の内、61番目に小さな値を持つ勾配ノルムが対象勾配ノルム621に設定される。
【0043】
演算処理部10は昇順ソート配列620に基づき対象勾配ノルム621を設定及び抽出する。その上で、演算処理部10は閾値設定処理Aとして閾値設定処理A1又はA2を用いることができる。閾値設定処理A1及びA2の何れが採用される場合においても、対象勾配ノルム621が設定及び抽出されるまでの動作は同様である。
【0044】
閾値設定処理A1に係る演算処理部10は、
図8に示す如く、抽出した対象勾配ノルム621を閾値uに設定する。即ち、対象勾配ノルム621の値そのものを閾値uに設定する。
【0045】
閾値設定処理A2に係る演算処理部10は、
図9に示す如く、対象勾配ノルム621の抽出に加え、昇順ソート配列620において対象勾配ノルム621よりも上位に位置する各勾配ノルムも抽出する。そして、閾値設定処理A2に係る演算処理部10は、抽出した全ての勾配ノルムの平均を閾値uに設定する。例えば、勾配ノルム||g[1]||~||g[300]||の内、60番目に小さな値を持つ勾配ノルムが対象勾配ノルム621に設定された場合を考える。この場合、閾値設定処理A2では、勾配ノルム||g[1]||~||g[300]||の内、1番目~60番目に小さな値を持つ計60個の勾配ノルムが抽出される。そして、抽出された計60個の勾配ノルムの平均が閾値uに設定される。ここにおける平均は単純平均でも良いし、加重平均でも良い。加重平均が利用される場合、加重平均における重みはハイパーパラメータとして予め定められる。
【0046】
[閾値設定処理B]
ステップS19で実行される閾値設定処理Bを説明する。尚、学習終了条件が成立するときの変数iの値(例えば10000)は、基本的に、上記の基準数NUMREF(例えば100)よりも遥かに大きい。このため、ステップS12~S23から成るループ処理の繰り返しにおいて、最初の方の短時間だけステップS19の閾値設定処理Bが選択実行され、その後はステップS18の閾値設定処理Aが選択実行される。つまり、格納部21に格納された勾配ノルムの総数NUMが対象勾配ノルム621を設定し難い程度に小さい状態に限って、閾値設定処理Bが選択実行される。
【0047】
演算処理部10は、閾値設定処理Bとして閾値設定処理B1又はB2を行うことができる。
【0048】
演算処理部10は、閾値設定処理B1において所定の初期値を閾値uに設定する。ここにおける初期値はハイパーパラメータとして予め定められる。
【0049】
閾値設定処理B2は格納部21に2以上の勾配ノルムが格納されていることを条件に実行される。従って閾値設定処理B2が採用される場合であっても、格納部21に格納された勾配ノルムが勾配ノルム||g[1]||のみである場合には、閾値設定処理B1に従い初期値が閾値uに設定される。尚、格納部21に格納された勾配ノルムが勾配ノルム||g[1]||のみである場合、初期値と勾配ノルム||g[1]||との平均を閾値uに設定しても良い。演算処理部10は、閾値設定処理B2において格納部21に格納された全ての勾配ノルムの平均を閾値uに設定する。ここにおける平均は単純平均でも良いし、加重平均でも良い。加重平均が利用される場合、加重平均における重みはハイパーパラメータとして予め定められる。
【0050】
[機能ブロック図]
図10に演算処理部10の機能ブロック図を示す。演算処理部10には機能ブロックF1~F8が設けられる。
【0051】
機能ブロックF1は、ステップS12の処理を行うデータ取得部であって、データベース2から訓練データTD[i]を取得する。
機能ブロックF2はステップS13の処理を行う損失関数導出部であって、訓練データTD[i]に基づき上述の損失関数L[i]を導出する。
機能ブロックF3はステップS14の処理を行う勾配導出部であって、損失関数L[i]の勾配g[i]を導出する。
機能ブロックF4はステップS15の処理を行う勾配ノルム導出部であって、勾配g[i]のノルム(即ち勾配ノルム||g[i]||)を導出する。
機能ブロックF5はステップS16の処理を行う格納処理部であって、導出された勾配ノルム||g[i]||を格納部21に格納させる(換言すれば記憶させる)。
【0052】
訓練データTD[i]はミニバッチ単位で順次取得される。損失関数L[i]、勾配g[i]及び勾配ノルム||g[i]||の導出、並びに、勾配ノルム||g[i]||の格納部21への格納は、訓練データが取得されるたびに実行される。
【0053】
機能ブロックF6はステップS17~S19の処理を行う閾値設定部である。閾値設定部F6は、格納部21に格納済みの勾配ノルムの個数NUMに応じて閾値設定処理A又はBにより閾値uを設定する。
【0054】
機能ブロックF7はステップS20~S23の処理を行うパラメータ更新部である。パラメータ更新部F7は、訓練データごとに勾配ノルム||g[i]||と閾値uを比較し、比較結果に基づき勾配クリッピングによる修正の実行有無を決定する。パラメータ更新部F7は、“||g[i]||≦u”であれば勾配導出部F3にて導出された勾配である原勾配g[i]を用いてモデル11のパラメータを更新する(ステップS23)。パラメータ更新部F7は、“||g[i]||>u”であれば原勾配g[i]に対し勾配クリッピングによる修正を施すことで修正勾配gC[i]を導出し、修正勾配gC[i]を用いてモデル11のパラメータを更新する(ステップS22)。
【0055】
機能ブロックF8はステップS24の処理を行う終了判定部であって、上述の学習終了条件の成否を判定する。
【0056】
[参考方法との比較]
ここで、参考方法との比較において、本実施形態に係る機械学習装置1の有益性を説明する。上述したように、勾配爆発の対処方法として勾配クリッピングがある。参考方法では勾配クリッピングにおける閾値を予め定めて固定するが、閾値の最適化は難しい。参考方法において、小さな閾値を設定しておけば学習は安定化するが、一方で学習に有益な勾配情報が失われ易くなるため、モデルの性能が低下する可能性がある。逆に、閾値が必要以上に大きいと学習が不安定になる。
【0057】
他方、学習の初期段階ではモデルのパラメータが最適値から大きくずれていることが多いがために、損失関数の勾配は比較的大きい。学習が進行するとモデルのパラメータが最適値へと近づくため、損失関数の勾配は比較的小さくなる。
【0058】
これらを考慮し、本実施形態に係る機械学習装置1では、ミニバッチ学習の繰り返しの中で、導出される勾配ノルムを蓄積してゆき、勾配ノルムの蓄積データ(勾配ノルム群)を保持する。そして、勾配ノルムの蓄積データ(勾配ノルム群)に基づき閾値uを動的に設定する。これにより、学習の進行度合いに応じて閾値uを適正化することが可能となる。勾配ノルムの蓄積データには、学習がどの程度進行しているかの情報(モデル11のパラメータが最適値に対してどの程度近づいているかの情報)が含まれるからである。学習の初期段階など、比較的大きな勾配ノルムのみが勾配ノルム群に含まれる状態では、比較的大きな閾値uを設定することで学習に有益な勾配情報の逸失を回避できる。学習が進行することで比較的小さな勾配ノルムが勾配ノルム群に含まれる状態では、比較的小さな閾値uを設定することで学習の安定化が図られる。
【0059】
尚、参考方法において閾値が小さな値にて固定されていると、ミニバッチ学習1回あたりにおけるパラメータの更新量が小さくなるため、学習の収束までにかかる時間(以下、学習の収束時間と称する)が比較的長くなる。逆に参考方法において閾値が大きな値にて固定されていると、ミニバッチ学習1回あたりにおけるパラメータの更新量が大きくなる。但し、その分、学習が不安定になりやすく、結果として、学習の収束時間が長くなる可能性がある。例えば、閾値が常に大きい場合、モデルのパラメータが適正値にかなり近づいてきたとしても、学習に不適正な訓練データが入力されたならばモデルのパラメータが大きく変動して収束状態から離れることがある。機械学習装置1による学習の進行度合いに応じた閾値uの適正化は、学習の収束時間の短縮化にも寄与する。
【0060】
具体的には上述の閾値設定処理A(ステップS18)により、勾配ノルムの昇順ソートを通じて閾値uを設定する。閾値設定処理Aにより、学習の初期段階など、比較的大きな勾配ノルムのみが勾配ノルム群に含まれる状態では、比較的大きな閾値uが設定されるため学習に有益な勾配情報の逸失を回避できる。学習が進行することで比較的小さな勾配ノルムが勾配ノルム群に含まれる状態では、比較的小さな閾値uが設定されるので学習の安定化が図られる。
【0061】
但し、閾値設定処理Aの実行には、格納部21に対して勾配ノルムの情報が一定量以上、蓄積されていることが必要である。このため、閾値設定処理B(ステップS19)を用意する。これにより、勾配ノルムの情報の蓄積量が小さい状態でも適正に勾配クリッピングを利用できる。
【0062】
演算処理部10は、訓練データごとに訓練データに基づき損失関数の勾配及び勾配ノルムを導出する導出処理(ステップS14及びS15)を実行する。そして演算処理部10は、訓練データごとに勾配ノルムと閾値との比較結果に基づき勾配クリッピングによる修正の実行有無を決定する(ステップS20の分岐処理に対応)。この決定結果に従い、勾配の修正を経ずに(即ち原勾配を用いて)パラメータの更新を行う、又は、勾配の修正を経て(即ち修正勾配を用いて)パラメータの更新を行う(ステップS21~S23)。このような勾配クリッピングの実行制御により、勾配爆発をもたらすことなく、安定した学習を実現できる。
【0063】
より具体的には、演算処理部10は単位処理を繰り返し実行する。単位処理は、ステップS12~S23の処理から成るループ処理に相当する。各単位処理において、演算処理部10は、ミニバッチとして訓練データを取得して(ステップS12)、取得した訓練データに基づき損失関数の勾配及び勾配ノルムを導出する(ステップS13~S15)。各単位処理において、演算処理部10は、導出した勾配ノルムを格納部21に格納する(ステップS16)。各単位処理において、演算処理部10は、勾配ノルムを閾値と比較し、勾配ノルムと閾値との比較結果に基づき勾配クリッピングによる修正の実行有無を決定する(ステップS20)。各単位処理において、演算処理部10は、その決定結果に基づき原勾配又は修正勾配を用いてモデル11のパラメータを更新する(ステップS21~S23)。このような勾配クリッピングの実行制御により、勾配爆発をもたらすことなく、安定した学習を実現できる。
【0064】
[付記]
学習済みモデル(即ち機械学習を経た後のモデル11)を車載装置(不図示)に適用して良い。車載装置は自動車等の車両に搭載される電子機器の一種である。車載装置において学習済みモデルにより所定の推論を行わせ、推論結果を車両で実施され得る自動運転又は運転支援等に利用して良い。尚、機械学習装置1自体が車載装置であっても構わない。車両(例えば放送中継車)によっては、豊富な計算資源を有する車載装置が設置されることもあり、この場合においては特に機械学習装置1自体を車載装置とすることも可能である。
【0065】
学習用データにおける各学習用画像は、車載カメラにて撮影された画像であって良い。車載カメラは任意の車両に設置されたカメラであり、ドライブレコーダを構成するカメラ又はドライブレコーダに接続されるカメラであって良い。学習用データにおけるアノテーション情報は既存の物体検出器(不図示)を用いて生成されても良いし、人間の手作業を介して生成されても良い。本実施形態に係る機械学習を実行する段階で現存する機械学習用のデータセットを、学習用データとして用いても良い。
【0066】
機械学習装置1及び機械学習装置1にて具体化された本発明を、車載用途とは異なる任意の用途に適用することも可能である。
【0067】
本発明の実施形態にて述べた任意の方法をコンピュータに実行させるプログラム、及び、そのプログラムを記録した記録媒体であって且つコンピュータ読み取り可能な不揮発性の記録媒体は、本発明の実施形態の範囲に含まれる。本発明の実施形態における任意の処理は、半導体集積回路等のハードウェア、上記プログラムに相当するソフトウェア、又は、ハードウェアとソフトウェアの組み合わせによって実現されて良い。
【0068】
本発明の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本発明の実施形態の例であって、本発明ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
【符号の説明】
【0069】
1 機械学習装置
2 データベース
10 演算処理部
11 モデル
12 ニューラルネットワーク
20 メモリ
21 勾配ノルム格納部
DS 学習用データ
DS1 画像データセット
F1 データ取得部
F2 損失関数導出部
F3 勾配導出部
F4 勾配ノルム導出部
F5 格納処理部
F6 閾値設定部
F7 パラメータ更新部
F8 終了判定部