IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-機械学習プログラム、装置、及び方法 図1
  • 特許-機械学習プログラム、装置、及び方法 図2
  • 特許-機械学習プログラム、装置、及び方法 図3
  • 特許-機械学習プログラム、装置、及び方法 図4
  • 特許-機械学習プログラム、装置、及び方法 図5
  • 特許-機械学習プログラム、装置、及び方法 図6
  • 特許-機械学習プログラム、装置、及び方法 図7
  • 特許-機械学習プログラム、装置、及び方法 図8
  • 特許-機械学習プログラム、装置、及び方法 図9
  • 特許-機械学習プログラム、装置、及び方法 図10
  • 特許-機械学習プログラム、装置、及び方法 図11
  • 特許-機械学習プログラム、装置、及び方法 図12
  • 特許-機械学習プログラム、装置、及び方法 図13
  • 特許-機械学習プログラム、装置、及び方法 図14
  • 特許-機械学習プログラム、装置、及び方法 図15
  • 特許-機械学習プログラム、装置、及び方法 図16
  • 特許-機械学習プログラム、装置、及び方法 図17
  • 特許-機械学習プログラム、装置、及び方法 図18
  • 特許-機械学習プログラム、装置、及び方法 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】機械学習プログラム、装置、及び方法
(51)【国際特許分類】
   G06N 3/08 20230101AFI20240910BHJP
【FI】
G06N3/08
【請求項の数】 8
(21)【出願番号】P 2021017689
(22)【出願日】2021-02-05
(65)【公開番号】P2022120651
(43)【公開日】2022-08-18
【審査請求日】2023-10-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】原 靖
【審査官】北川 純次
(56)【参考文献】
【文献】特開2019-070950(JP,A)
【文献】特開2020-191017(JP,A)
【文献】特開2019-074947(JP,A)
【文献】中国特許出願公開第112016669(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得し、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップし、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる
ことを含む処理をコンピュータに実行させるための機械学習プログラム。
【請求項2】
前記学習処理は、前記入力層から訓練データを入力して前記出力層から出力される出力値と、前記訓練データに対する正解との誤差を算出する第1の処理と、前記誤差の情報を前記出力層から前記入力層に向かって逆伝播して、層間の重みに対する誤差勾配を算出する第2の処理と、算出された前記誤差勾配を用いて、前記層間の重みを更新する第3の処理とを含み、
前記学習処理の一部をスキップする場合は、前記第2の処理及び前記第3の処理をスキップする
請求項1に記載の機械学習プログラム。
【請求項3】
前記学習処理を複数の演算器で処理させる場合、前記複数の演算器の各々で異なる訓練データを用いて前記第1の処理及び前記第2の処理を実行して算出された前記誤差勾配の各々を統合して、前記第3の処理で用いる誤差勾配とする請求項2に記載の機械学習プログラム。
【請求項4】
前記評価値は、層間の重み、誤差勾配、及びモーメンタムの少なくとも1つを用いて表される値である請求項1~請求項3のいずれか1項に記載の機械学習プログラム。
【請求項5】
前記評価値として、前記誤差勾配と前記モーメンタムとの内積を用いる請求項4に記載の機械学習プログラム。
【請求項6】
前記学習の状況を示す情報を取得する処理は、前記学習の繰り返し処理の最小単位である1イタレーション毎に前記学習の状況を示す情報を取得することを含み、
前記評価値の変化量は、現イタレーションで取得された前記学習の状況を示す情報に基づく評価値と1つ前のイタレーションで取得された前記学習の状況を示す情報に基づく評価値との変化量、又は、現イタレーションを含む第1の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値と、前記第1の期間より前の第2の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値との変化量である
請求項1~請求項5のいずれか1項に記載の機械学習プログラム。
【請求項7】
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得する取得部と、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップするように設定するスキップ設定部と、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させるように設定する再開設定部と、
を含む機械学習装置。
【請求項8】
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得し、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップし、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる
ことを含む処理をコンピュータが実行する機械学習方法。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、機械学習プログラム、機械学習装置、及び機械学習方法に関する。
【背景技術】
【0002】
ディープラーニングによって機械学習された多層ニューラルネットワーク等のモデルを使用して、画像認識、音声認識、自然言語処理等の様々な認識処理が行われる。ニューラルネットワークの層数が増えるほど、モデルによる認識精度が向上するため、モデルの大規模化が進む傾向がある。大規模なモデルでは、認識処理等の計算時間が増大する。また、大規模なモデルでは、最適化するパラメータも膨大であるため、機械学習の計算時間も増大する。このような計算時間の削減に関する技術が提案されている。
【0003】
例えば、ニューラルネットワークを使った推定装置において、膨大な回数の計算処理を行うことなく、推定結果の不確かさを表す分散値の計算を高速に行う情報推定装置が提案されている。この装置は、入力データの一部を欠損させるドロップアウト層と、重みの計算を行うFC層又はコンボリューション層との組み合わせからなる一体化層を持つニューラルネットワークに関する。また、このニューラルネットワークは、一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つ。この装置は、このニューラルネットワークにおいて、活性化層に入力される多変量分布に係るデータを参照して、活性化層における計算を経て活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断する。また、この装置は、一体化層で計算を行う際に、データ解析部で分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする。
【0004】
また、例えば、1つ以上のスキップ領域を使用して、機械学習モデルにラベルを付けたり、トレーニングしたり、評価したりするための機械学習方法が提案されている。この方法は、機械学習モデルをラベル付け、トレーニング、及び評価するために1つ以上のスキップ領域を使用し、画像に関して1つ以上のスキップ領域を指定することを含む。ここで画像の非スキップ領域は1つ以上のスキップ領域にない画像の一部である。この方法は、さらに、プロセッサによって、画像の非スキップ領域にある1つ以上の特徴のラベリングを開始し、ラベリングから1つ以上のスキップ領域を除外して、部分的にラベル付けされた画像を作成することを含む。ここで、部分的にラベル付けされた画像は、機械学習モデルをトレーニングするためのトレーニングデータセットに含まれている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2019-70950号公報
【文献】米国特許出願公開第2019/0188538号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
モデルの機械学習の計算時間を削減するために、一部の処理をスキップさせた場合、機械学習終了時に到達するモデルの予測精度が低下したり、所望の予測精度を得るために、学習時間が増加したりする場合がある。
【0007】
一つの側面として、開示の技術は、予測精度の低下や学習時間の増加を招く不適切な学習処理のスキップを回避することを目的とする。
【課題を解決するための手段】
【0008】
一つの態様として、開示の技術は、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得する。また、開示の技術は、前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップする。そして、開示の技術は、前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、以下の処理を実行する。まず、開示の技術は、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超えているか否かを判定する。そして、開示の技術は、評価値の変化量が閾値範囲を超えている場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる。
【発明の効果】
【0009】
一つの側面として、予測精度の低下や学習時間の増加を招く不適切な学習処理のスキップを回避することができる、という効果を有する。
【図面の簡単な説明】
【0010】
図1】機械学習装置の機能ブロック図である。
図2】モデルの一例を示す概略図である。
図3】学習処理を説明するための図である。
図4】評価値DBの一例を示す図である。
図5】学習の進度に応じた学習処理のスキップを説明するための図である。
図6】学習処理のスキップを説明するための図である。
図7】学習処理のスキップなしの場合、及びスキップありの場合の、所定の層におけるエポック毎の評価値を示す概略図である。
図8】評価値の変化量の算出を説明するための図ある。
図9】評価値の変化量と比較する閾値範囲を説明するための図である。
図10】評価値の変化量と比較する閾値範囲を説明するための図である。
図11】評価値の変化量が閾値範囲を超えているか否かの判定の他の方法について説明するための図である。
図12】機械学習装置として機能するコンピュータの概略構成を示すブロック図である。
図13】学習処理の一例を示すフローチャートである。
図14】スキップ設定処理の一例を示すフローチャートである。
図15】再開設定処理の一例を示すフローチャートである。
図16】再開設定処理の概略を説明するための図である。
図17】本手法についての誤差勾配の一例を示す図である。
図18】本手法と、スキップなし及び再開なしの比較手法との精度評価の比較結果の一例を示す図である。
図19】機械学習装置のハードウェア構成の他の例を示すブロック図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。
【0012】
図1に示すように、機械学習装置10は、機能的には、学習処理部12と、取得部14と、スキップ設定部16と、再開設定部18とを含む。また、機械学習装置10の所定の記憶領域には、モデル22と、訓練データDB(Database)24と、評価値DB26とが記憶される。
【0013】
モデル22は、機械学習の対象のモデルであり、ここでは、図2に概略的に示すように、入力層、隠れ層、及び出力層を含むニューラルネットワークである。モデル22の各層には、1以上のニューロン(図2中の丸)が含まれる。隠れ層及び出力層のニューロンは、内部に活性化関数を持つ。また、層間で接続されたニューロン間には、接続の強さを示す重みが設定されている。
【0014】
訓練データDB24には、モデル22の機械学習に用いられる複数の訓練データが記憶されている。訓練データは、モデル22に入力されるデータであり、その訓練データに対するモデル22の出力値の正解を示すラベルが付与されたデータである。
【0015】
学習処理部12は、訓練データを用いてモデル22の機械学習を実行し、モデル22に含まれる重みを最適化する。学習処理部12は、第1の処理、第2の処理、及び第3の処理を含む学習処理を実行する。具体的には、図3に示すように、学習処理部12は、第1の処理として、入力層から訓練データを入力して出力層から出力される出力値と、訓練データに付与されたラベルが示す正解との誤差を算出する処理を実行する(図3中の「Forward Propagation」)。より具体的には、入力層の各ニューロンに入力された訓練データの値に、次の層のニューロンとの間の重みが乗算された値が、次の層のニューロンに入力される。次の層のニューロンからは、入力された値に活性化関数を適用した値が出力され、次の層のニューロンへの入力となる。このように値が順伝播され、最終的に出力層の各ニューロンから出力値が出力される。学習処理部12は、誤差として、例えば、この出力値とラベルが示す値との二乗和誤差を算出する。
【0016】
また、学習処理部12は、第2の処理として、第1の処理で算出した誤差の情報を出力層から入力層に向かって逆伝播して、各重みに対する誤差勾配を算出する処理を実行する(図3中の「Backward Propagation」及び「誤差勾配算出」)。誤差勾配は、重みを単位量だけ更新した場合の誤差の変化量の推定値である。また、学習処理部12は、第3の処理として、第2の処理で算出した誤差勾配を用いて、層間の重みを更新する処理を実行する(図3中の「重み更新」)。
【0017】
取得部14は、学習処理部12による学習処理の繰り返し処理毎に、学習の状況を示す情報を取得する。具体的には、取得部14は、学習処理部12による学習処理の過程で得られる重み、誤差勾配、及びモーメンタムを、学習処理の繰り返し処理の最小単位である1イタレーション毎に取得し、評価値DB26に記憶する。モーメンタムは、モーメンタム法を用いた勾配降下法で用いられる係数であり、誤差勾配の移動平均である。図4に、評価値DB26の一例を示す。図4の例では、「w」は重み、「g」は誤差勾配、「m」はモーメンタムである。また、「層」は、重みがどの層間の重みであるかを識別するための情報であり、ここでは、入力層とその次の層との間を1とし、以降2、3、・・・としている。
【0018】
ここで、学習処理は繰り返し実行されることで、重みの最適化、すなわち学習が進む。学習の進度は、例えば、イタレーション間での重みの差分や誤差勾配の大きさで表すことができる。この場合、重みの差分や誤差勾配が小さいほど、学習が進んでいることを表す。図5に示すように、学習処理の初期の段階では、各層の重みの学習はまだ進んでいない状態である。学習処理のイタレーションが進むに従い、学習も進む。そして、図5の一点鎖線で示す層のように、一部の層では、重みの差分や誤差勾配が小さく、さらなる学習の必要がない場合もあり得る。
【0019】
そこで、スキップ設定部16は、評価値DB26に記憶された情報に基づいて各層の学習の進度を判定し、学習の進度が所定の条件を満たす、入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップするように設定する。ここでは、学習の進度として、イタレーション間での重みの差分を用いる場合について説明する。具体的には、スキップ設定部16は、評価値DB26から、現イタレーションでの重みと、直前のイタレーションでの重みとを取得し、両重みの差分を算出する。スキップ設定部16は、入力層から順に連続して、算出した重みの差分が所定の閾値以下となる層のうち、最も出力層側の層を特定の層として決定する。そして、スキップ設定部16は、入力層から特定の層までの第1の層群に含まれる各層に、例えば、学習処理の一部をスキップすることを示すフラグを立てるなどして、第1の層群に含まれる各層に対して、学習処理の一部をスキップするように設定する。
【0020】
スキップが設定された層は、学習処理部12による学習処理において、第2の処理がスキップされる。第2の処理がスキップされることにより、各層の誤差勾配が算出されないため、第3の処理もスキップされることになる。すなわち、第1の層群に含まれる各層については、学習処理の第1の処理のみが実行され、特定の層の出力層側の次の層から出力層までの第2の層群に含まれる各層については、第1の処理、第2の処理、及び第3の処理が実行される。
【0021】
具体的には、図6に示す例において、スキップ設定部16は、入力層側から3番目の層を特定の層(図6中のLn)として決定したとする。この場合、Ln-2、Ln-1、及びLnが第1の層群、Ln+1、Ln+2、Ln+3、及びLn+4が第2の層群となる。この場合、全層に対してForward Propagationが実行され、誤差が算出される。そして、Backward Propagationによる誤差の逆伝播は、Ln+1までしか実行されない。したがって、第2の層群に含まれる各層については、誤差勾配が算出され、重みが更新される。一方、第1の層群については、誤差勾配の算出及び重みの更新は実行されない。
【0022】
これにより、図5に示すように、各イタレーションで、第1の層群に含まれる各層の第2の処理及び第3の処理分の計算量が削減される。そして、1エポック分では、スキップが設定されて以降のイタレーションにおける削減分の積み重ね分が削減される。
【0023】
上記のように、一部の層について、学習処理の一部をスキップするように設定した場合、機械学習終了時に到達するモデルの予測精度が低下したり、所望の予測精度を得るために、学習時間が増加したりする場合がある。具体的には、スキップが適切なタイミングで設定され、かつスキップを設定する層として適切な層が選択されている場合には、早く目的の精度に到達することが可能になる。一方、スキップを設定するタイミング及び層の選択が適切ではない場合には、スキップを設定した層より後の層、すなわち第2の層群の学習処理に影響が発生する場合がある。そして、その影響の度合いが大きい場合には、最終到達精度の低下や計算時間が増加してしまう問題がある。
【0024】
図7を参照して、より具体的な例で説明する。図7は、モデル22としてResNet(Residual Network)50を用いた場合の、所定の層におけるエポック毎の評価値(詳細は後述)を示す概略図である。上段は、スキップを設定しない場合であり、下段は、10エポック目に入力層から33層目までにスキップを設定した場合である。また、上段及び下段とも、左図は、42層目(Convolution層)についての評価値、右図は、34層目(Bach Normalization層)についての評価値である。なお、詳細は後述するが、42層目については、評価値として、誤差勾配gとモーメンタムmとの内積(以下、「内積(g×m)」と表記する)を用い、34層目については、誤差勾配gのL2ノルム(以下、「g_ノルム」と表記する)を用いた例を示している。
【0025】
図7に示すように、スキップを設定した33層目の直後の34層目、及び33層目からは離れた42層目のいずれの場合も、スキップを設定した10エポック目の直後に評価値の大きな変動がみられる。このように、評価値の変化量が大きい場合には、スキップを設定しない場合に比べて、最終到達精度が低下したり、計算時間が増加したりする場合がある。
【0026】
そこで、再開設定部18は、第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、第2の層群に含まれるいずれかの層の評価値の変化量が所定の閾値範囲を超えているか否かを判定する。そして、再開設定部18は、いずれかの層の評価値の変化量が所定の閾値範囲を超えている場合に、第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる。
【0027】
具体的には、再開設定部18は、評価値DB26に記憶された情報に基づいて、イタレーション毎に、各層についての評価値を算出する。評価値は、機械学習されたモデル22の最終到達精度や、所望の精度を得るために要する学習時間を推定可能な値とする。具体的には、再開設定部18は、重みw、誤差勾配g、及びモーメンタムmの各々をそのまま評価値として用いてもよいし、重みw、誤差勾配g、及びモーメンタムmの少なくとも1つを用いて評価値を算出してもよい。例えば、再開設定部18は、内積(g×m)、g_ノルム等を評価値として算出してよい。
【0028】
また、再開設定部18は、学習処理の経過に伴う評価値の変化量を算出する。具体的には、再開設定部18は、現イタレーションを含む第1の期間の所定回数分のイタレーションについて算出した評価値の統計値と、第1の期間より前の第2の期間の所定回数分のイタレーションについて算出された評価値の統計値との変化量を算出する。すなわち、再開設定部18は、イタレーションの所定回数毎に、層毎の評価値の変化量を算出する。所定回数は、例えば、100イタレーション、1エポック分のイタレーション数等としてよい。なお、所定回数を1回とした場合は、再開設定部18は、現イタレーションについての評価値と1つ前のイタレーションについての評価値との変化量を算出することになる。また、統計値は、平均、最大値、最小値、中央値等である。以下では、統計値として平均を用いる場合について説明する。
【0029】
図8を参照して、10エポック目でスキップを設定し、評価値として内積(g×m)を用い、1エポック毎に評価値の変化量を算出する場合について説明する。例えば、再開設定部18は、各エポックの終了時点で、そのエポックに含まれる各イタレーションについて算出した評価値を平均した平均評価値を算出する。そして、再開設定部18は、例えば、n(例えば、12)エポック目に算出した平均評価値と、n-1(例えば、11)エポック目に算出した平均評価値との差を、評価値の変化量として算出する。図8のPに示す部分が、nエポック目の評価値の変化量に相当する。再開設定部18は、いずれかの層において、上記のように算出した評価値の変化量が、予め定めた閾値範囲を超える場合に、スキップの設定を解除し、第1の層群の学習処理を再開させるように設定する。例えば、再開設定部18は、スキップ設定部16により立てられた、学習処理の一部をスキップすることを示すフラグをおろすことにより、スキップの設定を解除する。
【0030】
ここで、評価値の変化量と比較する閾値範囲の適切な設定方法について、具体的な値を使った一例を示して説明する。図9を参照して、評価値として内積(g×m)を用い、100イタレーション毎に評価値の変化量を算出する場合について説明する。すなわち、図9に示す内積(g×m)は、100イタレーション分の内積(g×m)を平均した値である。図9下図は、図9上図の破線の丸で示す部分を含む一部拡大図である。図10に、図9に示すPoint1~4の各々における評価値、及び評価値の変化量を示す。例えば、Point1からPoint2への内積(g×m)の変化は、その後の学習処理の精度悪化や学習時間の増加等の影響を与えるものとする。一方、Point3からPoint4への内積(g×m)の変化は、そのような影響を与えないものとする。この場合、Point2の場合、評価値の変化量が閾値範囲を超えたと判定され、Point4の場合、評価値の変化量が閾値範囲内であると判定されることが望ましい。したがって、閾値範囲としては、例えば、0.15~0.2の値に設定してよい。
【0031】
図11を参照して、評価値の変化量が閾値範囲を超えているか否かの判定の他の方法について説明する。図11の例では、10エポック目でスキップを設定し、評価値としてg_ノルムを用い、1エポック毎に評価値の変化量が閾値範囲を超えているか否かを判定する場合について説明する。再開設定部18は、例えば、nエポック目に算出した平均評価値の微分値の符号が、n-1エポック目に算出した平均評価値の微分値の符号から反転している場合に、評価値の変化量が閾値範囲を超えたと判定してよい。図11の例では、10エポック目の平均評価値の微分値の符号はマイナスであり、11エポック目の平均評価値の微分値の符号はプラスであることを表している。この場合、再開設定部18は、11エポック目において、評価値の変化量が閾値範囲を超えたと判定する。
【0032】
また、再開設定部18は、各層について、複数種類の評価値を算出し、それぞれの評価値について、評価値の変化量が閾値範囲を超えるか否かを判定し、少なくとも1種類の評価値の変化量が閾値を超えている場合に、学習処理の再開を設定するようにしてもよい。なお、内積(g×m)は、学習処理に問題が生じていない場合には、学習が進むにつれて単純減少すると共に、学習処理に問題が生じた場合の変化量が捉え易い指標であるため、本実施形態の評価値として有用である。
【0033】
機械学習装置10は、例えば図12に示すコンピュータ40で実現することができる。コンピュータ40は、CPU(Central Processing Unit)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶部43とを備える。また、コンピュータ40は、入力部、表示部等の入出力装置44と、記憶媒体49に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)部45とを備える。また、コンピュータ40は、インターネット等のネットワークに接続される通信I/F(Interface)46を備える。CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、及び通信I/F46は、バス47を介して互いに接続される。
【0034】
記憶部43は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40を、機械学習装置10として機能させるための機械学習プログラム50が記憶される。機械学習プログラム50は、学習処理プロセス52と、取得プロセス54と、スキップ設定プロセス56と、再開設定プロセス58とを有する。また、記憶部43は、訓練データDB24、モデル22、及び評価値DB26の各々を構成する情報が記憶される情報記憶領域60を有する。
【0035】
CPU41は、機械学習プログラム50を記憶部43から読み出してメモリ42に展開し、機械学習プログラム50が有するプロセスを順次実行する。CPU41は、学習処理プロセス52を実行することで、図1に示す学習処理部12として動作する。また、CPU41は、取得プロセス54を実行することで、図1に示す取得部14として動作する。また、CPU41は、スキップ設定プロセス56を実行することで、図1に示すスキップ設定部16として動作する。また、CPU41は、再開設定プロセス58を実行することで、図1に示す再開設定部18として動作する。また、CPU41は、情報記憶領域60から情報を読み出して、訓練データDB24、モデル22、及び評価値DB26の各々をメモリ42に展開する。これにより、機械学習プログラム50を実行したコンピュータ40が、機械学習装置10として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
【0036】
なお、機械学習プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
【0037】
次に、本実施形態に係る機械学習装置10の作用について説明する。モデル22の機械学習が指示されると、機械学習装置10が、図13に示す学習処理、及び図14に示すスキップ設定処理を実行する。また、いずれかの層にスキップが設定されると、機械学習装置10が、図15に示す再開設定処理を実行する。なお、学習処理、スキップ設定処理、及び再開設定処理は、開示の技術の機械学習方法の一例である。以下、学習処理、スキップ設定処理、及び再開設定処理の各々について詳述する。
【0038】
まず、図13に示す学習処理について説明する。
【0039】
ステップS12で、学習処理部12が、イタレーションの回数を示す変数iに1を設定する。次に、ステップS14で、学習処理部12が、iイタレーション目の学習処理を開始する。
【0040】
次に、ステップS16で、学習処理部12が、モデル22に含まれる各層のうち、スキップが設定されている層が存在するか否かを判定する。スキップが設定されている層が存在する場合には、処理はステップS18へ移行し、いずれの層にもスキップが設定されていない場合には、処理はステップS20へ移行する。ステップS18では、学習処理部12が、スキップが設定されている第1の層群(図6の例では、Lnより入力側)についての、第2の処理及び第3の処理をスキップして、学習処理を実行する。すなわち、第1の層群については、Forward Propagationによる誤差の算出処理が実行され、Backward Propagationによる誤差勾配の算出処理、及び重みの更新がスキップされる。また、第2の層群(図6の例では、Ln+1より出力側)については、全ての学習処理が実行される一方、ステップS20では、学習処理部12が、全ての層について、全ての学習処理を実行する。
【0041】
次に、ステップS22で、取得部14が、上記ステップS18又はS20の処理過程で得られる各層の重みw、誤差勾配g、及びモーメンタムmを取得し、評価値DB26に記憶する。
【0042】
次に、ステップS24で、学習処理部12が、iを1インクリメントする。次に、ステップS26で、学習処理部12が、iが、イタレーション回数の上限値imaxを超えたか否かを判定する。i≦imaxの場合には、処理はステップS14に戻り、i>imaxの場合には、学習処理は終了する。
【0043】
次に、図14に示すスキップ設定処理について説明する。
【0044】
ステップS32で、スキップ設定部16が、イタレーションの回数を示す変数iに1を設定する。次に、ステップS34で、スキップ設定部16が、iが1を超えているか否かを判定する。i>1の場合には、処理はステップS36へ移行し、i≦1の場合には、処理はステップS42へ移行する。
【0045】
ステップS36では、スキップ設定部16が、評価値DB26から、各層についての、iイタレーション目及びi-1イタレーション目の重みwを取得し、学習の進度を示す指標として、重みの差分を算出する。
【0046】
次に、ステップS38で、スキップ設定部16が、上記ステップS36で算出した重みの差分が閾値TH1以上の層が存在するか否かを判定する。重みの差分が閾値TH1以上の層が存在する場合には、処理はステップS40へ移行し、存在しない場合には、処理はステップS42へ移行する。ステップS40では、スキップ設定部16が、入力層から順に連続して、算出した重みの差分が閾値TH1以下となる層のうち、最も出力層側の層を特定の層Lnとして決定する。そして、スキップ設定部16が、入力層から特定の層までの第1の層群に含まれる各層に対して、学習処理の一部をスキップするように設定する。
【0047】
次に、ステップS42で、スキップ設定部16が、iを1インクリメントする。次に、ステップS44で、スキップ設定部16が、iが、イタレーション回数の上限値imaxを超えたか否かを判定する。i≦imaxの場合には、処理はステップS34に戻り、i>imaxの場合には、スキップ設定処理は終了する。
【0048】
次に、図15に示す再開設定処理について説明する。
【0049】
ステップS52で、再開設定部18が、評価値の変化量が閾値範囲TH2を超えているか否かを判定するポイントを示す変数nにNを設定する。このポイントは、所定回数k(kは、例えば、100回、1エポック分のイタレーション数等)回分のイタレーション毎に設定される。Nは、スキップが設定された時点で終了しているポイント数である。例えば、100イタレーション毎に判定を行う場合で、500イタレーション目でスキップが設定されている場合、k=100、N=5である。
【0050】
次に、ステップS54で、再開設定部18が、評価値DB26に、i=n×kとなるiイタレーション目の重みw、誤差勾配g、及びモーメンタムmが記憶されているか否かを判定する。すなわち、再開設定部18は、nポイント目の平均評価値を算出可能なk回分のイタレーションについて、重みw、誤差勾配g、及びモーメンタムmが記憶されているか否かを判定する。各情報が評価値DB26に記憶されている場合には、処理はステップS56へ移行し、記憶されていない場合には、本ステップの判定を繰り返す。
【0051】
ステップS56では、再開設定部18が、(n-1)×kイタレーションからn×kイタレーションまでの各イタレーションについて評価値を算出し、算出した評価値を平均した平均評価値をnポイント目の評価値として算出する。そして、再開設定部18が、nポイント目に算出した評価値と、n-1ポイント目に算出した評価値との差を、評価値の変化量として算出する。
【0052】
次に、ステップS58で、再開設定部18が、上記ステップS56で算出した評価値の変化量が、予め定めた閾値範囲T2を超えているか否かを判定する。評価値の変化量が閾値範囲TH2を超えている場合には、処理はステップS60へ移行し、閾値範囲TH2内の場合には、処理はステップS62へ移行する。ステップS60では、再開設定部18が、スキップの設定を解除し、第1の層群の学習処理を再開させるように設定する。
【0053】
ステップS62では、再開設定部18が、nを1インクリメントする。次に、ステップS64で、再開設定部18が、nが、ポイントの上限値nmax(nmax=imax/k)を超えたか否かを判定する。n≦nmaxの場合には、処理はステップS54に戻り、n>nmaxの場合には、再開設定処理は終了する。
【0054】
図16に示すように、モデル22の第1の層群において、学習処理の一部がスキップされている場合に、上記再開設定処理が実行されることにより、第2の層群のいずれかの層で、評価値の変化量Pが閾値範囲TH2を超えているか否かが判定される。そして、P>TH2の場合には、第1の層群でスキップされていた学習処理の一部が再開される。
【0055】
以上説明したように、本実施形態に係る機械学習装置は、入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、例えば、重み、誤差勾配、モーメンタム等の、学習の状況を示す情報を取得する。また、機械学習装置は、学習の状況を示す情報に基づいて各層の学習の進度を判定し、学習の進度が所定の条件を満たす入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップするように設定する。具体的には、Backward Propagationによる誤差勾配の算出及び重みの更新がスキップされる。そして、学習処理部は、第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、特定の層の出力層側の次の層から出力層までの第2の層群に含まれるいずれかの層の評価値の変化量が所定の閾値範囲を超えているか否かを判定する。評価値は、学習の状況を示す情報に基づいて算出される。機械学習装置は、評価値の変化量が所定の閾値範囲を超える場合に、第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる。
【0056】
このように、本実施形態に係る機械学習装置は、評価値の変化量に基づいて、スキップが設定された層より出力側の層の学習処理において、予測精度の低下や学習時間の増加を招く状況が発生しているか否かを判定する。これにより、本実施形態に係る機械学習装置は、予測精度の低下や学習時間の増加を招く不適切な学習処理のスキップを回避することができる。
【0057】
ここで、本実施形態における手法(以下、「本手法」という)と、2つの比較例とで、精度評価を比較した結果について説明する。1つ目の比較例は、スキップの設定を行わない手法(以下、「スキップなし」という)であり、2つ目の比較例は、スキップの設定は行うが、再開の設定は行わない手法(以下、「再開なし」という)である。いずれの手法も、モデルとしてResNet50を用い、1エポック毎に評価値の変化量の判定を行った。また、本手法及び再開なしについては、40エポック目で33層目までの各層にスキップを設定した。また、本手法では、スキップを設定した1エポック後に、学習処理を再開した。図17に、本手法についての、エポック毎のg_ノルムを示す。
【0058】
図18に示すように、本手法(破線)は、スキップなし(一点鎖線)の場合には及ばないまでも、再開なし(実線)の場合に比べ、精度評価が大きく上回っている。これは、本手法が、不適切なステップを回避できたことを表す。
【0059】
なお、上記実施形態において、学習処理を複数の演算器で処理させてもよい。この場合、機械学習装置は、図19に示すようなハードウェア構成のコンピュータ210で実現することができる。コンピュータ210は、CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、通信I/F46に加え、複数(図19の例では4個)のGPU(Graphics Processing Unit)71A、71B、71C、71D、及びGPUメモリ72を含む。上記各要素は、バス47を介して互いに接続される。以下、GPU71A、71B、71C、71Dを区別なく説明する場合には、単に「GPU71」と表記する。
【0060】
この場合、CPU41は、GPUメモリ72にモデル22を記憶し、各GPU71に各々異なる訓練データを入力する。各GPU71は、入力された訓練データを用いて、第1の処理(Forward Propagationによる誤差の算出)及び第2の処理(Backward Propagationによる誤差勾配の算出)を実行する。そして、各GPU71で算出された誤差勾配の各々を、例えば、AllReduce等によりGPU71間で通信を行うことにより統合して、各GPU71が第3の処理(重みの更新)を実行する際に用いる共通の誤差勾配を演算する。
【0061】
この構成によれば、学習処理をスキップした第1の層群に含まれる各層についての、各GPU71での誤差勾配の算出及び重みの更新に関する計算量を削減することができる。また、各GPU71で計算された誤差勾配を統合するための、GPU71間の通信量を削減することができる。
【0062】
また、上記実施形態では、機械学習プログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD-ROM、DVD-ROM、USBメモリ等の記憶媒体に記憶された形態で提供することも可能である。
【0063】
以上の実施形態に関し、さらに以下の付記を開示する。
【0064】
(付記1)
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得し、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップし、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる
ことを含む処理をコンピュータに実行させるための機械学習プログラム。
【0065】
(付記2)
前記学習処理は、前記入力層から訓練データを入力して前記出力層から出力される出力値と、前記訓練データに対する正解との誤差を算出する第1の処理と、前記誤差の情報を前記出力層から前記入力層に向かって逆伝播して、層間の重みに対する誤差勾配を算出する第2の処理と、算出された前記誤差勾配を用いて、前記層間の重みを更新する第3の処理とを含み、
前記学習処理の一部をスキップする場合は、前記第2の処理及び前記第3の処理をスキップする
付記1に記載の機械学習プログラム。
【0066】
(付記3)
前記学習処理を複数の演算器で処理させる場合、前記複数の演算器の各々で異なる訓練データを用いて前記第1の処理及び前記第2の処理を実行して算出された前記誤差勾配の各々を統合して、前記第3の処理で用いる誤差勾配とする付記2に記載の機械学習プログラム。
【0067】
(付記4)
前記評価値は、層間の重み、誤差勾配、及びモーメンタムの少なくとも1つを用いて表される値である付記1~付記3のいずれか1項に記載の機械学習プログラム。
【0068】
(付記5)
前記評価値として、前記誤差勾配と前記モーメンタムとの内積を用いる付記4に記載の機械学習プログラム。
【0069】
(付記6)
前記学習の状況を示す情報を取得する処理は、前記学習の繰り返し処理の最小単位である1イタレーション毎に前記学習の状況を示す情報を取得することを含み、
前記評価値の変化量は、現イタレーションで取得された前記学習の状況を示す情報に基づく評価値と1つ前のイタレーションで取得された前記学習の状況を示す情報に基づく評価値との変化量、又は、現イタレーションを含む第1の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値と、前記第1の期間より前の第2の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値との変化量である
付記1~付記5のいずれか1項に記載の機械学習プログラム。
【0070】
(付記7)
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得する取得部と、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップするように設定するスキップ設定部と、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させるように設定する再開設定部と、
を含む機械学習装置。
【0071】
(付記8)
前記学習処理は、前記入力層から訓練データを入力して前記出力層から出力される出力値と、前記訓練データに対する正解との誤差を算出する第1の処理と、前記誤差の情報を前記出力層から前記入力層に向かって逆伝播して、層間の重みに対する誤差勾配を算出する第2の処理と、算出された前記誤差勾配を用いて、前記層間の重みを更新する第3の処理とを含み、
前記スキップ設定部は、前記第2の処理及び前記第3の処理をスキップするように設定する
付記7に記載の機械学習装置。
【0072】
(付記9)
前記学習処理を複数の演算器で処理させる場合、前記複数の演算器の各々で異なる訓練データを用いて前記第1の処理及び前記第2の処理を実行して算出された前記誤差勾配の各々を統合して、前記第3の処理で用いる誤差勾配とする付記8に記載の機械学習装置。
【0073】
(付記10)
前記評価値は、層間の重み、誤差勾配、及びモーメンタムの少なくとも1つを用いて表される値である付記7~付記9のいずれか1項に記載の機械学習装置。
【0074】
(付記11)
前記再開設定部は、前記評価値として、前記誤差勾配と前記モーメンタムとの内積を用いる付記10に記載の機械学習装置。
【0075】
(付記12)
前記取得部は、前記学習の繰り返し処理の最小単位である1イタレーション毎に前記学習の状況を示す情報を取得し、
前記再開設定部は、前記評価値の変化量として、現イタレーションで取得された前記学習の状況を示す情報に基づく評価値と1つ前のイタレーションで取得された前記学習の状況を示す情報に基づく評価値との変化量、又は、現イタレーションを含む第1の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値と、前記第1の期間より前の第2の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値との変化量を算出する
付記7~付記11のいずれか1項に記載の機械学習装置。
【0076】
(付記13)
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得し、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップし、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる
ことを含む処理をコンピュータが実行する機械学習方法。
【0077】
(付記14)
前記学習処理は、前記入力層から訓練データを入力して前記出力層から出力される出力値と、前記訓練データに対する正解との誤差を算出する第1の処理と、前記誤差の情報を前記出力層から前記入力層に向かって逆伝播して、層間の重みに対する誤差勾配を算出する第2の処理と、算出された前記誤差勾配を用いて、前記層間の重みを更新する第3の処理とを含み、
前記学習処理の一部をスキップする場合は、前記第2の処理及び前記第3の処理をスキップする
付記13に記載の機械学習方法。
【0078】
(付記15)
前記学習処理を複数の演算器で処理させる場合、前記複数の演算器の各々で異なる訓練データを用いて前記第1の処理及び前記第2の処理を実行して算出された前記誤差勾配の各々を統合して、前記第3の処理で用いる誤差勾配とする付記14に記載の機械学習方法。
【0079】
(付記16)
前記評価値は、層間の重み、誤差勾配、及びモーメンタムの少なくとも1つを用いて表される値である付記13~付記15のいずれか1項に記載の機械学習方法。
【0080】
(付記17)
前記評価値として、前記誤差勾配と前記モーメンタムとの内積を用いる付記16に記載の機械学習方法。
【0081】
(付記18)
前記学習の状況を示す情報を取得する処理は、前記学習の繰り返し処理の最小単位である1イタレーション毎に前記学習の状況を示す情報を取得することを含み、
前記評価値の変化量は、現イタレーションで取得された前記学習の状況を示す情報に基づく評価値と1つ前のイタレーションで取得された前記学習の状況を示す情報に基づく評価値との変化量、又は、現イタレーションを含む第1の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値と、前記第1の期間より前の第2の期間の所定回数分のイタレーションで取得された前記学習の状況を示す情報に基づく評価値の統計値との変化量である
付記13~付記17のいずれか1項に記載の機械学習方法。
【0082】
(付記19)
入力層及び出力層を含む複数の層を含むモデルの深層学習において、学習処理の繰り返し処理毎に、学習の状況を示す情報を取得し、
前記学習の状況を示す情報に基づいて各層の学習の進度を判定し、前記学習の進度が所定の条件を満たす前記入力層から特定の層までの第1の層群に含まれる各層の学習処理の一部をスキップし、
前記第1の層群に含まれる各層の学習処理の一部をスキップしている場合に、前記特定の層の前記出力層側の次の層から前記出力層までの第2の層群に含まれるいずれかの層の前記学習の状況を示す情報に基づく評価値の変化量が所定の閾値範囲を超える場合に、前記第1の層群に含まれる各層においてスキップしている学習処理の一部を再開させる
ことを含む処理をコンピュータに実行させるための機械学習プログラムを記憶した記憶媒体。
【符号の説明】
【0083】
10 機械学習装置
12 学習処理部
14 取得部
16 スキップ設定部
18 再開設定部
22 モデル
24 訓練データDB
26 評価値DB
40 コンピュータ
41 CPU
42 メモリ
43 記憶部
49 記憶媒体
50 機械学習プログラム
71A、71B、71C、71D GPU
72 GPUメモリ
210 コンピュータ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19