(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】演算処理プログラム、演算処理方法および情報処理装置
(51)【国際特許分類】
G06N 3/084 20230101AFI20240611BHJP
G06N 3/098 20230101ALI20240611BHJP
【FI】
G06N3/084
G06N3/098
(21)【出願番号】P 2020185813
(22)【出願日】2020-11-06
【審査請求日】2023-07-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】甲斐 雄高
(72)【発明者】
【氏名】笠置 明彦
(72)【発明者】
【氏名】原 靖
(72)【発明者】
【氏名】檀上 匠
【審査官】北川 純次
(56)【参考文献】
【文献】特開2019-74947(JP,A)
【文献】特開2020-77392(JP,A)
【文献】特開2020-42753(JP,A)
【文献】特開2018-160200(JP,A)
【文献】米国特許出願公開第2016/0307098(US,A1)
【文献】米国特許出願公開第2020/0252301(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02 - 3/10
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
機械学習モデルの機械学習時に、前記機械学習モデルの入力層を含む、前記機械学習モデルが有する複数の層について誤差勾配を算出し、
前記誤差勾配が閾値未満である層を、前記機械学習の抑制対象に選択し、
前記抑制対象に選択された層について、前記機械学習を抑制させるまでの一定期間の間、学習率を制御して前記機械学習を実行する
処理を実行させることを特徴とする演算処理プログラム。
【請求項2】
前記実行する処理は、前記抑制対象に選択された層について、イテレーションごとに、制御開始時の学習率と前記一定期間とイテレーション数とを用いて前記学習率を算出し、算出された前記学習率を用いて前記機械学習を実行することを特徴とする請求項1に記載の演算処理プログラム。
【請求項3】
前記実行する処理は、前記一定期間の経過時に収束させるように、前記イテレーションごとに前記学習率を低下させることを特徴とする請求項2に記載の演算処理プログラム。
【請求項4】
前記選択する処理は、
前記複数の層を前記入力層からの順で複数のブロックに分割し、
前記複数のブロックに属する各層の前記誤差勾配を用いて、前記機械学習の抑制対象とするブロックを選択し、
前記実行する処理は、
前記抑制対象に選択された前記ブロックに属する各層について、前記学習率を制御して前記機械学習を実行する、ことを特徴とする請求項2に記載の演算処理プログラム。
【請求項5】
前記選択する処理は、前記入力層に近い順で、前記機械学習の抑制対象とするブロックを選択することを特徴とする請求項4に記載の演算処理プログラム。
【請求項6】
前記実行する処理は、前記複数のブロックのうち、前記入力層に近いほど長い前記一定期間を用いて、前記イテレーションごとに前記学習率を算出することを特徴とする請求項4または5に記載の演算処理プログラム。
【請求項7】
前記実行する処理は、前記複数のブロックについて、前記一定期間内に収束させる学習率を変更し、前記一定期間の経過時に収束させるように前記イテレーションごとに前記学習率を低下させることを特徴とする請求項4から6のいずれか一つに記載の演算処理プログラム。
【請求項8】
コンピュータが、
機械学習モデルの機械学習時に、前記機械学習モデルの入力層を含む、前記機械学習モデルが有する複数の層について誤差勾配を算出し、
前記誤差勾配が閾値未満である層を、前記機械学習の抑制対象に選択し、
前記抑制対象に選択された層について、前記機械学習を抑制させるまでの一定期間の間、学習率を制御して前記機械学習を実行する
処理を実行させることを特徴とする演算処理方法。
【請求項9】
機械学習モデルの機械学習時に、前記機械学習モデルの入力層を含む、前記機械学習モデルが有する複数の層について誤差勾配を算出する算出部と、
前記誤差勾配が閾値未満である層を、前記機械学習の抑制対象に選択する選択部と、
前記抑制対象に選択された層について、前記機械学習を抑制させるまでの一定期間の間、学習率を制御して前記機械学習を実行する実行部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理プログラム、演算処理方法および情報処理装置に関する。
【背景技術】
【0002】
機械学習モデルの機械学習を高速化するために、GPU(Graphics Processing Unit)の利用が有効であり、さらに複数のGPUで処理を分散させることも有効である。これまでに、情報処理装置であるノード内に複数のGPUを実装し、ノード内で並列に機械学習処理を実行することで高速化が行われてきたが、GPU間での勾配情報の集約処理や反映処理に時間を要していた。
【0003】
このような機械学習モデルの機械学習では、新規学習部分は学習するたびに頻繁に更新が必要なために、更新頻度を決定する学習率(Learning Rate:LR)を高めに設定する必要がある。一方で、すでに機械学習が完了している既存学習部分は入力側に近いほど学習率は低く、極端な場合は学習率が0となる場合も多い。学習率が0の部分は、機械学習処理を行わなくてもよいのにもかかわらず、新規学習部分と同じ頻度で勾配情報の集約処理や反映処理や、重みの計算処理を行っており、無駄な処理が多い。
【0004】
このようなことから、近年では、機械学習を必要としていない層を見極め、勾配情報(Δw)の計算や集約処理(Allreduce処理)を行わずに、スキップさせるGradient Skip技術が利用されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2019-212206号公報
【文献】国際公開第2019/239821号
【文献】特開平11-126199号公報
【文献】米国特許出願公開第2019/0378014号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記技術では、機械学習をスキップさせることで高速化が図れるものの、スキップさせる層やタイミングによっては、機械学習の精度が劣化し、目標精度に到達せずに、機械学習が終了することがある。
【0007】
一つの側面では、学習収束までの時間短縮と精度向上の両立を実現することができる演算処理プログラム、演算処理方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
第1の案では、演算処理プログラムは、コンピュータに、機械学習モデルの機械学習時に、前記機械学習モデルの入力層を含む、前記機械学習モデルが有する複数の層について誤差勾配を算出する処理を実行させる。演算処理プログラムは、コンピュータに、前記誤差勾配が閾値未満である層を、前記機械学習の抑制対象に選択し、前記抑制対象に選択された層について、前記機械学習を抑制させるまでの一定期間の間、学習率を制御して前記機械学習を実行する処理を実行させる。
【発明の効果】
【0009】
一実施形態によれば、学習収束までの時間短縮と精度向上の両立を実現することができる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施例1にかかる情報処理装置の分散学習を説明する図である。
【
図2】
図2は、機械学習の参考技術を説明する図である。
【
図3】
図3は、実施例1にかかる情報処理装置の機械学習を説明する図である。
【
図4】
図4は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。
【
図5】
図5は、分散処理部の詳細を説明する図である。
【
図6】
図6は、スキップ候補の検出を説明する図である。
【
図7】
図7は、機械学習モデルのブロック分割を説明する図である。
【
図8】
図8は、減衰率の低下と制動距離との関係を説明する図である。
【
図9】
図9は、学習スキップまでの学習率の制御を説明する図である。
【
図10】
図10は、機械学習モデル全体の学習スキップを説明する図である。
【
図11】
図11は、実施例1にかかる機械学習処理の流れを示すフローチャートである。
【
図12】
図12は、学習率の制動距離を制御したときの効果を説明する図である。
【
図13】
図13は、学習率の制動距離を制御したときの精度向上を説明する図である。
【
図14】
図14は、POW2以外のスケジューラを用いた場合の機械学習結果を説明する図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示する演算処理プログラム、演算処理方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例1】
【0012】
[全体構成]
実施例1にかかる情報処理装置10は、機械学習処理の高速化を実現するために、複数のGPUを用いた分散処理により、機械学習モデルの生成を実行する。
図1は、実施例1にかかる情報処理装置10の分散学習を説明する図である。
図1に示すように、情報処理装置10は、CPU(Central Processing Unit)と複数のGPUとを有するコンピュータの一例である。CPUは、情報処理装置10全体を司る制御を実行し、機械学習モデルの生成を統合的に管理する。各GPUは、CPUからの指示に応じて、機械学習モデルの機械学習を実行する。なお、分散処理の手法は、公知の手法を採用することができる。
【0013】
近年では、各層の学習率を用いて機械学習を必要としていない層を見極め、勾配情報(Δw)の計算や集約処理(Allreduce処理)を行わずに、学習を抑制する(スキップさせる)Gradient Skip技術が利用されている。
【0014】
ここで、学習スキップの参考技術について説明する。
図2は、機械学習の参考技術を説明する図である。
図2に示す参考技術は、深層学習(DL:Deep Learning)などにより機械学習モデルを生成する技術であり、DLの誤差勾配から学習状況を取得して誤差勾配の算出をスキップすることで、学習時間を短縮する技術である。
【0015】
具体的には、参考技術は、学習の進捗状況を示す学習率が低下した層を検出して、当該層に対する学習を省略することで、学習時間を短縮する。例えば、今回のイテレーション時の誤差勾配と直前のイテレーション時の誤差勾配との差分が閾値以上である各層については、次回のイテレーション時にも通常通りに学習が実行され、差分が未満である各層については次回のイテレーション時に学習のスキップが実行される。すなわち、学習率が低下した層については以後の誤差勾配の算出などの機械学習処理が抑制される。
【0016】
ただし、参考技術では、完全に機械学習をスキップさせた場合の精度劣化の影響が未知な部分もある。すなわち、DNN(Deep Neural Network)などの機械学習モデルにおいて、複数の層の誤差逆伝播(バックワード・プロパゲーション)処理をL、学習率(Learning Rate:LR)等を基準に判断し、一気に停止した場合に精度が落ちやすい。また、止めるタイミング(エポック数、イテレーション数)が悪いと、精度が落ちて、最終精度が目標に到達しない場合がある。
【0017】
そこで、実施例1にかかる情報処理装置10は、誤差勾配の算出や誤差逆伝播の各処理を抑制する学習スキップ対象と判定された層(レイヤー)について、いきなり学習スキップさせるのではなく、学習を停止させる層の学習率を段階的に小さくしていき、ある程度の学習処理を行ってから、学習スキップさせる。
【0018】
ここで、実施例1で用いる学習スキップの一例を説明する。
図3は、実施例1にかかる情報処理装置10の機械学習を説明する図である。
図3に示すように、機械学習モデルの深層学習では、順伝播による機械学習(計算処理)と誤差逆伝播による重み等の更新処理とが実行される。そこで、情報処理装置10は、誤差逆伝播による更新時に、学習がある程度進んだイテレーションから重み情報の更新を停止させていくが、その際に、停止させる層を入力側から停止させる。これは、出力側を停止させると、学習精度が目標精度に到達しないことがあるが、入力側は精度への影響が低いためである。
【0019】
このようにすることで、情報処理装置10は、誤差勾配の算出だけでなく、誤差逆伝播の計算も削減することができ、学習収束までの時間短縮と精度向上の両立を実現できる。
【0020】
[機能構成]
図4は、実施例1にかかる情報処理装置10の機能構成を示す機能ブロック図である。
図4に示すように、情報処理装置10は、通信部11、記憶部12、統合処理部20、複数の分散処理部30を有する。
【0021】
通信部11は、他の装置との間の通信を制御する処理部であり、例えば通信インタフェースなどにより実現される。例えば、通信部11は、管理者端末との間で、各種データや各種指示などを送受信する。
【0022】
記憶部12は、各種データや各種プログラムなどを記憶する処理部であり、例えばメモリやハードディスクなどにより実現される。この記憶部12は、訓練データDB13と機械学習モデル14を記憶する。
【0023】
訓練データDB13は、機械学習モデル14の機械学習に利用される訓練データを記憶するデータセットの一例ある。例えば、訓練データDB13に記憶される各訓練データは、画像データと教師ラベルとから構成される。なお、訓練データのデータセットは、任意の単位でサブセット(バッチサイズ)に分割することができる。
【0024】
機械学習モデル14は、DLなどの機械学習により生成されるモデルであり、複数の層から構成される多層ニューラルネットワークを用いたモデルの一例ある。例えば、機械学習モデル14は、画像データが入力された場合に、写っている動物の分類を実行する。なお、機械学習モデル14には、DNNやCNN(Convolutional Neural Network)などを採用することができる。
【0025】
統合処理部20は、情報処理装置10全体を司る処理部であり、例えばCPUにより実現される。例えば、統合処理部20は、機械学習の分散処理、機械学習の開始や終了などを各分散処理部30に指示し、機械学習に関する全体的な制御を実行する。
【0026】
各分散処理部30は、機械学習の分散処理を実行する処理部であり、例えばGPUにより実現される。例えば、各分散処理部30は、統合処理部20からの指示により、訓練データDB13に記憶される各訓練データを用いた機械学習により、機械学習モデル14の生成を実行する。
【0027】
[分散処理部の詳細]
次に、各分散処理部30の詳細について説明する。なお、各分散処理部30は、同様の構成を有する。
図5は、分散処理部30の詳細を説明する図である。
図5に示すように、分散処理部30は、順伝播処理部31、誤差逆伝播処理部32、候補抽出部35、スキップ制御部36を有する。
【0028】
順伝播処理部31は、機械学習モデル14の各層に対する順伝播処理を実行する処理部である。具体的には、順伝播処理部31は、いわゆるForward Propagationを実行するので、詳細な説明は省略する。簡単に説明すると、例えば、順伝播処理部31は、機械学習モデル14の先頭の層(入力層)に訓練データである画像データを入力し、入力層から機械学習モデル14の末尾の層(出力層)に向かって連続的に数値計算が行われた結果である予測結果(分類結果)を、出力層から取得する。そして、順伝播処理部31は、二乗誤差などを用いて、予測結果と教師レベルとの誤差を算出して誤差関数を算出して、誤差逆伝播処理部32に出力する。
【0029】
誤差逆伝播処理部32は、誤差勾配算出部33と通信制御部34とを有し、順伝播処理部31から入力される誤差関数を用いて、誤差逆伝播法により機械学習モデル14の各パラメータの誤差を計算し、パラメータ更新を実行する処理部である。すなわち、誤差逆伝播処理部32は、いわゆるBackward propagationを実行する。
【0030】
例えば、誤差逆伝播処理部32は、機械学習モデル14の出力層から入力層に向かう順番(逆順)に、ニューラルネットワークの各ノード間のエッジの重みの誤差勾配を算出する。誤差勾配は、誤差を重みの関数とみなした場合に、誤差を重みで偏微分した値に相当し、誤エッジの重みを微少量だけ変化させたときの誤差の変化量を表す。そして、誤差逆伝播処理部32は、誤差勾配を用いて、誤差が小さくなるように各エッジの重みなどの各パラメータの更新を実行する。
【0031】
誤差勾配算出部33は、機械学習モデル14に含まれる複数の層それぞれについて、機械学習モデル14の各パラメータに対する誤差の勾配を示す誤差勾配を算出する処理部である。例えば、誤差勾配算出部33は、イテレーションごとに、機械学習モデル14が有する各層に対して誤差勾配を算出して、誤差勾配に関する誤差勾配情報を候補抽出部35に出力する。
【0032】
ここで、誤差勾配算出時に、誤差勾配算出部33は、学習を抑制すると決定された層(学習スキップ層)については、誤差勾配の算出を抑制する。また、誤差勾配算出部33は、後述する各ブロックにおける入力層から最も遠い位置にある最後の層のみを誤差勾配の算出対象とすることもできる。なお、誤差勾配の算出手法は、公知の様々な手法を採用することができる。
【0033】
通信制御部34は、GPU間のAllReduce通信を実行する処理部である。例えば、通信制御部34は、各GPU間で誤差勾配を送受信することで、複数のGPUで算出された誤差勾配をエッジの重み毎に合計し、複数のGPUの間で誤差勾配が集計される。このように集計された誤差勾配に関する情報を用いて、誤差逆伝播処理部32による機械学習モデル14の各種パラメータの更新が実行される。
【0034】
また、通信制御部34は、後述するスキップ制御部36により制御指示にしたがって、スキップ対象の層への通信を停止する。また、通信制御部34は、機械学習モデル14の各層の中から、学習を止めずに誤差勾配計算および通信(Allreduce)を継続する層と、学習を止める層を特定し、通信を制御する。
【0035】
候補抽出部35は、誤差勾配算出部33により算出された誤差情報を用いて、学習を停止させるスキップ対象の候補となる層を抽出する処理部である。具体的には、候補抽出部35は、各層のうち、イテレーション間の誤差勾配の変位が小さい層を、スキップ候補として抽出する。
【0036】
図6は、スキップ候補の検出を説明する図である。
図6では、ある層について説明するが、
図6に示される処理は各層について実行される。
図6に示すように、候補抽出部35は、各エポック内のイテレーションが完了するたびに、スキップ候補の抽出を実行する。
【0037】
例えば、候補抽出部35は、エポック1のイテレーション1が終了したタイミングで誤差勾配#1を算出して保持する。その後、エポック1のイテレーション2が終了すると、候補抽出部35は、誤差勾配#2を算出して保持するとともに、誤差勾配#1と誤差勾配#2の差分である差分#2(例えば絶対値の差)を算出し、この差分#2と閾値とを比較する。
【0038】
ここで、候補抽出部35は、差分#2が閾値未満である場合、十分に学習が進んだ層と判定し、当該層を特定する情報をスキップ候補としてスキップ制御部36に通知する。一方、候補抽出部35は、差分#2が閾値以上である場合、学習が不十分と判定し、当該層をスキップ候補とはせずに、通常学習を維持する。
【0039】
また、候補抽出部35は、機械学習モデル14が有する複数の層をブロックに分割し、ブロックごとにスキップ候補か否かを判定することもできる。
図7は、機械学習モデル14のブロック分割を説明する図である。
図7に示すように、候補抽出部35は、機械学習モデル14の入力層から出力層までの各層を、入力層からの順番で所定数に区切って複数のブロックを生成する。例えば、候補抽出部35は、第1ブロック、第2ブロック、第3ブロック、第4ブロック、第5ブロックを生成する。このとき、候補抽出部35は、出力層、全結合層、全結合層から2つ前の層を、ブロック化の対象外とすることもできる。
【0040】
この場合、候補抽出部35は、各ブロックについて、ブロックに属する層の誤差勾配を算出し、その平均値を用いた上記閾値の比較により、該当ブロックがスキップ候補か否かを判定することもできる。別例としては、候補抽出部35は、各ブロックについて、ブロックに属する層のうち最後の層(出力層に最も近い層)の誤差勾配を算出し、その誤差勾配を用いた上記閾値の比較により、該当ブロックがスキップ候補か否かを判定することもできる。
【0041】
スキップ制御部36は、候補抽出部35によりスキップ候補と判定された層またはブロックに属する各層について、学習スキップさせるための学習率の制御を実行する処理部である。なお、以下では、ブロック単位を例にして説明する。
【0042】
具体的には、最終的な到達精度は、学習を抑制(停止)させる層(レイヤー)の学習率がある程度小さくなってから、学習を抑制(学習スキップ)させた方が最終到達精度の低下が小さい傾向がある。このため、スキップ制御部36は、学習率の制動距離(BD:BRAKING_DISTANCE)を導入し、スキップ候補のブロックに属する各層に対して、段階的に学習を抑制する。なお、BDは、ハイパーパラメータである。
【0043】
例えば、スキップ制御部36は、スキップ候補のブロックに属する各層の学習を突然止めるのではなく、学習を止める命令を与えた際に、イテレーションに依存するBDを用いて学習率を下げてから抑制させる。より詳細には、スキップ制御部36は、機械学習モデル14の学習で使用するLRスケジューラがPOW2の場合、式(1)を用いて、POW2と同じように、BDを減少させる。
【0044】
【0045】
図8は、減衰率の低下と制動距離との関係を説明する図である。
図8に示すように、スキップ制御部36は、LRの制動距離であるBDを、式(1)に示す減衰率を乗算することで、設定したイテレーション数である7700まで、イテレーションごとに徐々に小さくしていき、学習率を低下させていく。なお、式(1)におけるBDは、予め定める設定値であり、iteration(イテレーション)は算出時点のイテレーション数である。
図8は、BD=7700とした例である。
【0046】
ここで、スキップ候補と判定されたブロックに属する各層について、上記減衰率を用いて学習スキップを実行する例について説明する。
図9は、学習スキップまでの学習率の制御を説明する図である。
図9に示すように、スキップ制御部36は、ウォームアップ(3850イテレーション)が完了すると、LR=5で機械学習を実行させる。そして、スキップ制御部36は、イテレーションが7980のときにスキップ候補と判定されると、式(2)を用いて、そのイテレーション時のLRを計算し、計算されたLRを用いて機械学習を実行させる。このように、スキップ制御部36は、イテレーションごとにLRを算出し、算出したLRを用いて機械学習を実行させる。
【0047】
【0048】
なお、式(2)における「LR」は、学習に使用される算出対象の学習率である。「End LR」は、学習スキップさせると判定するときのLRであり、この「End LR」になるまで、学習率の減衰(低下)が繰り返される。「BD開始時のLR」は、初期設定時のLRである。「Iter.」は、算出時のイテレーション数であり、スキップ候補と判定されたあとは、イテレーションごとに「LR」が算出されるので、そのイテレーション数となる。「BD開始時のiter.」は、学習率の減衰を開始するときのイテレーション数である。
図9の例では、BD=7700イテレーション、ウォームアップ=3850イテレーション、「BD開始時のLR」に対応する初期値(Base LR)=5、最終LR(End LR)=0.0001、「BD開始時のiter.」=7980イテレーションとなる。
【0049】
上述したように、スキップ制御部36は、スキップ候補のブロックに属する各層の学習を突然止めるのではなく、イテレーションに依存するBDを用いて学習率を徐々にさげていき、目標の学習率になった以降を学習スキップさせる。このとき、スキップ制御部36は、入力層に近いブロックから順番に学習スキップを行うことで、学習精度の向上および最終的なエポック数の削減を行うこともできる。
【0050】
つまり、スキップ制御部36は、あるブロックBがスキップ候補と判定された場合に、そのブロックBよりも前のブロックAについて上記BDを用いた学習スキップの制御処理が実行されているか否かを判定する。ここで、スキップ制御部36は、ブロックAについて学習スキップの制御処理が実行されている場合は、ブロックBについても学習スキップの制御処理を実行する。一方、スキップ制御部36は、ブロックAについて学習スキップの制御処理が実行されていない場合は、ブロックBについても学習スキップの制御処理を開始しない。
【0051】
図10は、機械学習モデル14全体の学習スキップを説明する図である。
図10に示すように、スキップ制御部36は、入力側から順に、第1ブロック、第2ブロック、第3ブロック、第4ブロック、第5ブロックに分割する。そして、スキップ制御部36は、ウォームアップ終了後、一般的な機械学習と同様、学習率を制御していく。
【0052】
そして、スキップ制御部36は、第1ブロックが学習スキップ対象と判定されると、式(2)によりイテレーションごとに学習率を、通常学習よりも大幅に低下させた機械学習を実行させる。その後、スキップ制御部36は、第2ブロックが学習スキップ対象と判定されると、式(2)によりイテレーションごとに学習率を、通常学習よりも大幅に低下させた機械学習を実行させる。このようにして、スキップ制御部36は、入力層に近いブロックからの順番で、学習スキップを実行する。
【0053】
[処理の流れ]
図11は、実施例1にかかる機械学習処理の流れを示すフローチャートである。
図11に示すように、機械学習が開始されると(S101:Yes)、順伝播処理部31は、訓練データを読み込み(S102)、順伝播処理を実行する(S103)。
【0054】
続いて、誤差逆伝播処理部32は、各ブロックについて誤差勾配を算出する(S104)。そして、候補抽出部35は、ブロックを1つ選択し(S105)、すでに学習率の制御対象となっているか否かを判定する(S106)。
【0055】
ここで、候補抽出部35は、まだ学習率の制御対象ではない場合(S106:No)、スキップ条件を満たすか否かを判定する(S107)。例えば、候補抽出部35は、入力側から段階的にスキップさせるために、現処理対象のブロックよりも前のブロックが学習スキップの対象か否かを判定する。
【0056】
そして、対象ブロックがスキップ条件を満たなさない場合(S107:No)、スキップ制御部36が通常学習を判定することで、誤差逆伝播処理部32が対象ブロックを通常通りに学習する(S108)。
【0057】
一方、対象ブロックがスキップ条件を満たす場合(S107:Yes)、または、すでに学習率の制御対象である場合(S106:Yes)、スキップ制御部36は、学習率を算出する(S109)。
【0058】
ここで、スキップ制御部36は、算出された学習率に基づき学習スキップを判定する(S110)。例えば、スキップ制御部36は、学習率が閾値(設定値)以下である場合に、学習スキップを判定し、学習率が閾値(設定値)より大きい場合に、学習スキップではなく学習率を下げた機械学習と判定する。
【0059】
そして、スキップ制御部36は、学習スキップと判定した場合(S110:Yes)、誤差逆伝播処理部32に対して、学習スキップを指示することで、対象ブロックに対する機械学習が抑制される(S111)。
【0060】
一方、スキップ制御部36は、学習スキップではないと判定した場合(S110:No)、誤差逆伝播処理部32に対して、学習率の変更を指示することで、対象ブロックに対して学習率を変更した機械学習が実行される(S112)。
【0061】
その後、候補抽出部35は、未処理のブロックがある場合(S113:Yes)、S105以降を繰り返し、未処理の層がない場合(S113:No)、順伝播処理部31は、機械学習を終了するか否かを判定する(S114)。例えば、順伝播処理部31は、精度が目標精度に到達したか否かや指定数のエポックを実行したか否かなど、任意の終了基準に到達したか否かを判定する。
【0062】
ここで、順伝播処理部31は、機械学習を継続する場合(S114:No)、S102以降を繰り返し、機械学習を終了する場合(S114:Yes)、機械学習を終了し、学習結果などを表示したりする。
【0063】
[効果]
上述したように、情報処理装置10は、機械学習モデル14内の各ブロックにおいて、機械学習が終了した層の重み更新処理やバックプロパゲーション(誤差逆伝搬)処理をスキップさせることにより、無駄な計算および更新処理を大幅に削減することができる。また、情報処理装置10は、学習率の制動距離(BD)の適用により、精度劣化を抑え、精度を保ちつつ、機械学習モデル14全体の高速化を実現することができる。
【0064】
また、情報処理装置10は、学習率の制動距離(BD)の適用により、単純に学習スキップさせる場合や全く学習スキップさせない場合と比較して、機械学習モデル14の精度向上を図ることができる。複数のGPUを搭載した情報処理装置10(ノード)を使用する場合や、複数の情報処理装置10で構成された並列処理を行う場合は、GPU間通信、ノード間通信、集約処理、反映処理に費やす割合が大きくなるので、無駄な計算および更新処理を削減することによる高速化の効果は、より大きくなる。
【0065】
図12は、学習率の制動距離を制御したときの効果を説明する図である。
図12の縦軸は精度を示し、
図12の横軸はエポック数を示す。
図12に示す例の学習条件は、施行回数を90エポック数、LRスケジューラをPOW2、学習スキップの開始タイミングを25、35、45、55、65の各学習エポック、5つのブロック分割([0-5層]、[6-35層]、[36-74層]、[75-131層]、[132-158層])とする。
【0066】
また、このような条件において、学習スキップを適用しなかった機械学習の場合(Grad Skipなし)、学習スキップはさせるものの、いきなりスキップさせる機械学習の場合(BRAKING_DISTANCEなし)、BRAKING_DISTANCEを変更した各機械学習の場合(BD=100、400、1540、3850、5390、7700、15400)を示している。なお、学習スキップを適用しなかった機械学習の場合を
図12の(a)に示し、BRAKING_DISTANCEなしの機械学習の場合を
図12の(b)に示す。
【0067】
図12に示すように、
図12の(a)に示す学習スキップさせない場合の方が、
図12の(b)に示すBRAKING_DISTANCEなしの機械学習の場合に比べて、学習精度が高い。これは、全部の層について機械学習するためである。一方、BRAKING_DISTANCEを変更した各機械学習は、BRAKING_DISTANCEなしの機械学習の場合に比べて、学習精度が高い。
【0068】
また、
図12に示すように、BRAKING_DISTANCEを長くするほど、機械学習が続行されるので最終的な精度劣化は防げる。また、学習スキップの開始時期と制動距離を適切に設定すると、学習スキップなしの通常の機械学習と同等精度を達成できる。つまり、制動距離を0にして学習停止を突然実行するより、適当な局所解に落として徐々に学習停止させた方が精度の劣化を防止することができる。
【0069】
次に、条件によっては、学習率の制動距離を制御した方が通常の機械学習よりも精度がよくない場合を説明する。
図13は、学習率の制動距離を制御したときの精度向上を説明する図である。
図13の縦軸は精度を示し、
図13の横軸はエポック数を示す。
図13に示す例の学習条件は、施行回数を180エポック数、LRスケジューラをPOW2、学習スキップの開始タイミングを50、70、90、110、130の各学習エポック、5つのブロック分割([0-5層]、[6-35層]、[36-74層]、[75-131層]、[132-158層])とする。なお、学習スキップを適用しなかった機械学習の場合を
図13の(a)に示し、BRAKING_DISTANCEなしの機械学習の場合を
図13の(b)に示す。
【0070】
図13に示すように、BRAKING_DISTANCEを変更した各機械学習は、
図13の(b)に示すBRAKING_DISTANCEなしの機械学習の場合に比べて、学習精度が高い。さらに、制動距離を一定値(
図13の場合は7700イテレーション)以上で設定すれば、
図13の(a)に示す通常の機械学習と同等以上の精度を達成することができる。つまり、制動距離を設けて学習を途中で停止させたほうが、何もしないより到達精度が良くなる可能性もあり、学習スキップとは関係なく、精度向上策としても有効である。
【0071】
また、上記例では、BDの制御についてLRスケジューラと同じPOW2を利用した場合を示したが、これに限定されるものではない。
図14は、POW2以外のスケジューラを用いた場合の機械学習結果を説明する図である。
図14の縦軸は精度を示し、
図14の横軸はエポック数を示す。
図14に示す例の学習条件は、施行回数を90エポック数、LRスケジューラを40と80、学習スキップの開始タイミングを10、20、30、40、50の各学習エポック、5つのブロック分割([0-5層]、[6-35層]、[36-74層]、[75-131層]、[132-158層])とする。
【0072】
なお、学習スキップを適用しなかった機械学習を
図14の(a)に示し、BD=0の各グラフがBRAKING_DISTANCEを適用せずに学習スキップをさせた学習結果であり、BD=34650等の各グラフがBRAKING_DISTANCEを適用した学習スキップによる学習結果である。
図14に示すように、LRスケジューラを変更した場合であっても、
図13に示すPOW2と比較して、同等以上の到達精度にて機械学習を収束させることができる。したがって、LRスケジューラに依存することなく、BDの設定が有効であることがわかる。
【実施例2】
【0073】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【0074】
[数値等]
上記実施例で用いたブロック数、層数、各種閾値、数値、GPU数等は、あくまで一例であり、任意に変更することができる。また、学習率は、低下させるだけではなく、増加させることもできる。また、学習スキップの判定は、イテレーションごとに限らず、エポックごとに判定することもできる。なお、LRスケジューラと学習率を制御するスケジューラは、同じスケジューラを使用する方が好ましい。
【0075】
[ブロックの制御等]
例えば、上記例では、ブロックに属する層のうち、最後の層の誤差勾配やブロックに属する各層の誤差勾配の平均値が閾値未満か否かにより、スキップ対象と判定することもできる。また、上記実施例では、ブロック単位でスキップ制御やBD設定を行う例を説明したが、これに限定されるものではなく、層単位で制御することもできる。例えば、情報処理装置10は、誤差勾配の差が閾値未満である層を複数検出した場合、入力層から近い順に所定数の層をスキップ対象と判定することもできる。
【0076】
[BDの設定例]
上記実施例では、各ブロックについて同じBD値を設定する例を説明したが、これに限定されるものではなく、各ブロックについて異なるBD値を設定することもできる。例えば、機械学習が進んだ状態で機械学習を停止させる出力層に近いブロックについては、比較的早い機械学習を段階で停止させる入力層に近いブロックよりも短いBD値を設定することができる。
【0077】
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0078】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0079】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0080】
[ハードウェア]
次に、上記実施例で説明した情報処理装置10のハードウェア構成例を説明する。
図15は、ハードウェア構成例を説明する図である。
図15に示すように、情報処理装置10、通信装置10a、HDD(Hard Disk Drive)10b、メモリ10c、CPU10d、複数のGPU10eを有する。また、
図15に示した各部は、バス等で相互に接続される。
【0081】
通信装置10aは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。HDD10bは、
図4や
図5等に示した機能を動作させるプログラムやDBを記憶する。
【0082】
CPU10dは、情報処理装置10全体の制御を実行し、例えば機械学習に関するプログラムをHDD10b等から読み出してメモリ10cに展開することで、機械学習の各プロセスを動作させる各GPU10eは、
図5等に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、
図3等で説明した各機能を実行するプロセスを動作させる。例えば、各GPU10eは、順伝播処理部31、誤差逆伝播処理部32、候補抽出部35、スキップ制御部36等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、各GPU10eは、順伝播処理部31、誤差逆伝播処理部32、候補抽出部35、スキップ制御部36等と同様の処理を実行するプロセスを実行する。
【0083】
このように、情報処理装置10は、プログラムを読み出して実行することで各種処理方法を実行する情報処理装置として動作する。また、情報処理装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【0084】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【0085】
10 情報処理装置
11 通信部
12 記憶部
13 訓練データDB
14 機械学習モデル
20 統合処理部
30 分散処理部
31 順伝播処理部
32 誤差逆伝播処理部
33 誤差勾配算出部
34 通信制御部
35 候補抽出部
36 スキップ制御部