JP2022007168A - 学習プログラム、学習方法および情報処理装置 - Google Patents

学習プログラム、学習方法および情報処理装置 Download PDF

Info

Publication number
JP2022007168A
JP2022007168A JP2020109935A JP2020109935A JP2022007168A JP 2022007168 A JP2022007168 A JP 2022007168A JP 2020109935 A JP2020109935 A JP 2020109935A JP 2020109935 A JP2020109935 A JP 2020109935A JP 2022007168 A JP2022007168 A JP 2022007168A
Authority
JP
Japan
Prior art keywords
layers
layer
skip
iteration
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2020109935A
Other languages
English (en)
Inventor
雄高 甲斐
Taketaka Kai
明彦 笠置
Akihiko Kasaoki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020109935A priority Critical patent/JP2022007168A/ja
Priority to EP21167148.2A priority patent/EP3929823A1/en
Priority to US17/226,279 priority patent/US20210406683A1/en
Priority to CN202110405415.7A priority patent/CN113850364A/zh
Publication of JP2022007168A publication Critical patent/JP2022007168A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

Figure 2022007168000001
【課題】モデルに含まれる一部の層のパラメータ更新を機械学習中に停止する場合の精度低下を抑制する。
【解決手段】それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いてモデルの出力の誤差を算出し、誤差に基づいて複数の層それぞれのパラメータの値を更新する、ことを反復的に実行する学習処理を開始する。学習処理の第1のイテレーションの実行結果に基づいて、複数の層のうちパラメータの値の更新を抑止する候補を示す2以上の候補層を選択する。第1のイテレーションまでのイテレーションの実行回数に基づいて、実行回数が多いほど大きい割合値を算出し、2以上の候補層のうち割合値に応じた個数の層に対して、第1のイテレーションより後の第2のイテレーションにおいてパラメータの値の更新を抑止することを決定する。
【選択図】図9

Description

本発明は学習プログラム、学習方法および情報処理装置に関する。
情報処理装置を利用したデータ分析として、機械学習が行われることがある。機械学習では、既知の事例を示す訓練データが収集される。情報処理装置は、訓練データを分析して、要因(説明変数や独立変数と言うことがある)と結果(目的変数や従属変数と言うことがある)との間の関係を一般化したモデルを生成する。情報処理装置は、生成されたモデルを用いて、未知の事例についての結果を予測する。例えば、画像に写った物体の種類を判定するための画像認識モデルが生成される。
情報処理装置は、複数の層を含むモデルを生成することがある。例えば、機械学習は、多層ニューラルネットワークを生成する深層学習(ディープラーニング)であることがある。このとき、情報処理装置は、イテレーションを繰り返すことで、各層に含まれるパラメータの最適値を探索することがある。各イテレーションにおいて、情報処理装置は、訓練データを用いてモデルの出力の誤差を評価し、誤差に基づいてパラメータの値を更新することがある。例えば、パラメータ最適化に誤差逆伝播法が用いられる。
なお、訓練データに含まれる複数の説明変数のうち、一部の説明変数を自動的に機械学習から除外する特徴フィルタリング方法が提案されている。提案の特徴フィルタリング方法は、1つ前のイテレーションで算出された勾配に基づいて、説明変数の値に対するフィルタリング閾値を決定する。また、多層ニューラルネットワークを生成する機械学習において、一部の層を自動的に削除する学習装置が提案されている。提案の学習装置は、多層ニューラルネットワークの出力に対する寄与度を複数の層それぞれについて算出し、寄与度の小さい層を削除して機械学習を再度実行する。
国際公開第2017/157183号 特開2019-185275号公報
複数の層を含むモデルを生成する機械学習では、パラメータの改善が全ての層で均等に進行するとは限らない。イテレーション数の増加に伴って、一部の層のパラメータの改善が先に収束することがある。例えば、多層ニューラルネットワークでは、入力側の層のパラメータの改善が、出力側の層のパラメータの改善よりも早く収束することがある。
そこで、直近のイテレーションの実行結果に基づいて、以降のイテレーションにおいて一部の層のパラメータ更新を抑止するという制御方法も考えられる。しかし、パラメータの改善量は、イテレーション数の増加に対して常に単調に減少するとは限らず、短期的には改善量が上下に揺れることがある。そのため、直近のイテレーションの実行結果が収束条件を満たしている全ての層について、パラメータ更新を即時に抑止してしまうと、生成されるモデルの精度が低下するおそれがあるという問題がある。
1つの側面では、本発明は、モデルに含まれる一部の層のパラメータ更新を機械学習中に停止する場合の精度低下を抑制する学習プログラム、学習方法および情報処理装置を提供することを目的とする。
1つの態様では、以下の処理をコンピュータに実行させる学習プログラムが提供される。それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いてモデルの出力の誤差を算出し、誤差に基づいて複数の層それぞれのパラメータの値を更新する、ことを反復的に実行する学習処理を開始する。学習処理の第1のイテレーションの実行結果に基づいて、複数の層のうちパラメータの値の更新を抑止する候補を示す2以上の候補層を選択する。第1のイテレーションまでのイテレーションの実行回数に基づいて、実行回数が多いほど大きい割合値を算出し、2以上の候補層のうち割合値に応じた個数の層に対して、第1のイテレーションより後の第2のイテレーションにおいてパラメータの値の更新を抑止することを決定する。
また、1つの態様では、コンピュータが実行する学習方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
1つの側面では、モデルに含まれる一部の層のパラメータ更新を機械学習中に停止する場合の精度低下が抑制される。
第1の実施の形態の情報処理装置を説明するための図である。 第2の実施の形態の情報処理装置のハードウェア例を示す図である。 多層ニューラルネットワークの構造例を示す図である。 機械学習の学習フェーズの例を示す図である。 機械学習における予測精度と誤差勾配の変化例を示すグラフである。 複数の層の間の誤差勾配のばらつきの例を示す図である。 一部の層のパラメータ更新をスキップする第1の例を示す図である。 誤差勾配差分の算出例を示すグラフである。 スキップ層の採用割合の関数例を示すグラフである。 一部の層のパラメータ更新をスキップする第2の例を示す図である。 情報処理装置の機能例を示すブロック図である。 誤差勾配テーブルの例を示す図である。 機械学習の手順例を示すフローチャートである。 機械学習の手順例を示すフローチャート(続き1)である。 機械学習の手順例を示すフローチャート(続き2)である。 第1のスキップ層抽出の手順例を示すフローチャートである。 第2のスキップ層抽出の手順例を示すフローチャートである。 第3のスキップ層抽出の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置を説明するための図である。
情報処理装置10は、機械学習によって、訓練データから複数の層を含むモデルを生成する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10は、コンピュータや機械学習装置などと呼ばれてもよい。
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合が「マルチプロセッサ」または単に「プロセッサ」と呼ばれてもよい。
記憶部11は、モデル13および訓練データ15を記憶する。
モデル13は、説明変数の値から目的変数の値を予測する予測モデルである。モデル13は、画像から物体のクラスを予測する画像認識モデルであってもよい。モデル13は、パラメータをそれぞれ含む複数の層を含む。それら複数の層は、直列に接続されていてもよい。モデル13は、多層ニューラルネットワークであってもよく、畳み込みニューラルネットワークであってもよい。各層のパラメータの値は、機械学習を通じて決定される。パラメータは、多層ニューラルネットワークのエッジの重みであってもよい。
例えば、モデル13は、層13a,13b,13cを含む。層13bは層13aの次の層であり、層13cは層13bの次の層である。層13aはパラメータ14aを含む。層13bはパラメータ14bを含む。層13cはパラメータ14cを含む。訓練データ15は、モデル13のパラメータ最適化に用いられるデータセットである。訓練データ15は、教師ラベルがそれぞれ付与された複数のサンプルを含む。訓練データ15は、物体のクラスを示すラベルがそれぞれ付与された複数の画像を含んでもよい。
処理部12は、訓練データ15を用いてモデル13のパラメータ14a,14b,14cを最適化する学習処理16を実行する。学習処理16では、処理部12は、以下に説明するイテレーションを反復的に実行する。処理部12は、モデル13に対して誤差逆伝播法を実行してもよい。各イテレーションにおいて、処理部12は、訓練データ15に含まれる入力データをモデル13に入力し、モデル13の出力と訓練データ15に含まれる教師ラベルとを比較して、モデル13の出力の誤差を算出する。
そして、処理部12は、算出した誤差に基づいて、モデル13に含まれる複数の層それぞれのパラメータの値を更新する。例えば、処理部12は、モデル13に含まれる複数の層それぞれについて、パラメータに対する誤差の勾配を示す誤差勾配を算出する。誤差勾配は、パラメータの値を微少量だけ変化させたときの誤差の変化量を表す。処理部12は、誤差勾配に基づいてパラメータの値を更新する。処理部12は、誤差勾配に学習率を乗じた分だけパラメータの値を変化させてもよい。学習率は、機械学習の挙動を制御するハイパーパラメータであり、ユーザから与えられてもよい。
ここで、学習処理16の途中において、処理部12は、モデル13に含まれる複数の層のうちの一部の層について、パラメータの値の更新を抑止することがある。ある層の処理の抑止は、誤差勾配の算出の抑止を含んでもよい。また、複数の処理部が分散処理を行う場合、ある層の処理の抑止は、複数の処理部の間の通信の抑止を含んでもよい。ある層の処理の抑止は、当該層のスキップと呼ばれてもよい。以下の説明では、処理部12は、イテレーション16aを実行済みであり、その後のイテレーション16bを未実行であるとする。イテレーション16bは、イテレーション16aの直後であってもよい。
処理部12は、イテレーション16aの実行結果に基づいて、複数の層の中から、パラメータの値の更新を抑止する候補を示す2以上の候補層を選択する。例えば、処理部12は、複数の層の中から、イテレーション16aで算出された誤差勾配とその前のイテレーションで算出された誤差勾配との差分が、閾値未満である層を選択する。誤差勾配の差分が閾値未満である層は、パラメータの学習が実質的に進行していない層である。一例として、層13a,13b,13cのうち層13b,13cが、候補層として選択される。
次に、処理部12は、イテレーション16aまでのイテレーションの実行回数に基づいて割合値17を算出する。イテレーションの実行回数が多いほど割合値17が大きい。例えば、処理部12は、学習処理16の開始からのイテレーションの実行回数をカウントし、その実行回数に基づいて割合値17を算出する。割合値17は、0以上1以下の実数でもよい。イテレーションの実行回数と割合値17との間の関係は、実行回数の増加に対して割合値17が単調に増加する関数によって規定されてもよい。例えば、実行回数と割合値17との間の関係は、シグモイド曲線によって規定されてもよい。
そして、処理部12は、上記で選択した候補層の中から、割合値17に応じた個数の層を抽出する。割合値17に応じた個数は、候補層の個数に割合値17を乗じた数であってもよい。層13b,13cが候補層であり、割合値17が0.5(50%)である場合、例えば、処理部12は、層13b,13cの何れか一方を抽出する。図1では、処理部12は、層13b,13cのうち層13bを抽出している。
処理部12は、イテレーション16aより後のイテレーション16bにおいて、抽出した層のパラメータ更新を抑止する。処理部12は、候補層のうち上記で抽出しなかった層のパラメータ更新を抑止しなくてよい。よって、割合値17は、候補層のうち実際にパラメータ更新を抑止する層の割合を表す。層13bが抽出された場合、イテレーション16bではパラメータ14bの値が変化しない。誤差逆伝播法の場合、処理部12は、イテレーション16aで算出された層13bの誤差勾配を層13aに伝播させてもよい。これにより、イテレーション16bにおいて層13aのパラメータ更新が可能となる。
候補層のうち実際にパラメータ更新を抑止する層は、様々な判定基準に従って決定されてもよい。例えば、処理部12は、直近の一定期間における誤差勾配の平均が小さい層を優先的に抽出してもよい。また、例えば、処理部12は、直近の一定期間における誤差勾配差分の平均が小さい層を優先的に抽出してもよい。また、例えば、処理部12は、モデル13の入力に近い層を優先的に抽出してもよい。また、例えば、処理部12は、モデル13に含まれる一連の層が2以上のブロックに分割されている場合、パラメータ更新を抑止する層が特定のブロックに集中しないように分散させてもよい。また、例えば、処理部12は、パラメータ更新を抑止する層の間隔を所定層数以上空けるようにしてもよい。
第1の実施の形態の情報処理装置10によれば、イテレーション16aの実行結果に基づいて、パラメータの値の更新を抑止する候補を示す2以上の候補層が選択される。イテレーション16aまでのイテレーションの実行回数に基づいて、実行回数が多いほど大きい割合値17が算出される。そして、候補層のうち割合値17に応じた個数の層に対して、イテレーション16bにおいてパラメータの値の更新を抑止することが決定される。
これにより、パラメータ最適化が他の層よりも早く収束してパラメータの値が改善しなくなった層については、無駄なパラメータ更新が抑止される。よって、機械学習における無駄な処理が削減され、計算量が削減される。また、その結果として、モデル13を生成する機械学習の実行時間が短縮される。
また、直近の実行結果からパラメータ最適化が収束したように見える候補層のうち、割合値17に応じた個数の層のみが、実際にパラメータ更新を抑止する。よって、その後にパラメータの値が再び改善する可能性が考慮され、全ての候補層が即時にパラメータ更新を抑止する場合と比べて、モデル13の精度が向上する。また、割合値17が学習処理16の進行に合わせて上昇するため、パラメータ最適化の収束した層が徐々に増加するという長期的トレンドを表現することができる。その結果、学習処理16の計算量の削減とモデル13の精度の向上のバランスを図ることができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
第2の実施の形態の情報処理装置100は、多層ニューラルネットワークを深層学習によって生成する。多層ニューラルネットワークは、例えば、画像認識に使用される。情報処理装置100は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置100は、コンピュータや機械学習装置などと呼ばれてもよい。情報処理装置100は、第1の実施の形態の情報処理装置10に対応する。
情報処理装置100は、CPU101、RAM102、HDD103、GPU104-1~104-4、GPUメモリ105、画像インタフェース106、入力インタフェース107、媒体リーダ108および通信インタフェース109を有する。CPU101またはGPU104-1~104-4は、前述の処理部12に対応する。RAM102、HDD103またはGPUメモリ105は、前述の記憶部11に対応する。
CPU101は、プログラムの命令を実行するプロセッサであって、情報処理装置100を制御するメインプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。また、CPU101は、GPU104-1~104-4にプログラムを実行させることがある。CPU101は、プログラムやデータをRAM102からGPUメモリ105に転送し、転送したプログラムをGPU104-1~104-4に実行させ、演算結果をGPUメモリ105からRAM102に読み出す。CPU101は、通信インタフェース109を介して他の情報処理装置のGPUにプログラムを実行させることもある。
RAM102は、プログラムやデータを記憶する揮発性半導体メモリである。情報処理装置100は、RAM以外の種類のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよい。CPU101が実行するプログラムには、機械学習を制御するためのプラットフォームプログラムやライブラリプログラムが含まれる。GPU104-1~104-4が実行するプログラムには、機械学習用のライブラリプログラムやユーザのアプリケーションプログラムが含まれる。
GPU104-1~104-4は、プログラムの命令を実行するプロセッサであって、特定の種類の演算を高速に実行するためのハードウェアアクセラレータである。GPU104-1~104-4は、CPU101からの指示に応じて、異なるデータに対してプログラムを並列に実行する。GPU104-1~104-4はそれぞれ、プログラムをGPUメモリ105から読み出し、自らが担当するデータをGPUメモリ105から読み出し、プログラムを実行し、演算結果をGPUメモリ105に格納する。
GPUメモリ105は、プログラムやデータを記憶する揮発性半導体メモリである。GPUメモリ105は、GPU104-1~104-4によって使用される。
画像インタフェース106は、CPU101からの命令に従って、情報処理装置100に接続された表示装置111に画像を出力する。表示装置111として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。情報処理装置100に、プリンタなど表示装置111以外の出力デバイスが接続されてもよい。
入力インタフェース107は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。情報処理装置100に複数種類の入力デバイスが接続されてもよい。
媒体リーダ108は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ108は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101などのプロセッサによって実行される。記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103は、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
通信インタフェース109は、ネットワーク114に接続され、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース109は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
なお、情報処理装置100のような情報処理装置を複数台用意することで、それら複数の情報処理装置をノードとして含むマルチノードシステムが形成されてもよい。その場合、異なるノードに含まれるGPUが、異なるデータに対してプログラムを並列に実行してもよい。例えば、それぞれ4個のGPUを含む2つのノードがネットワーク114に接続され、8個のGPUが並列にプログラムを実行してもよい。何れか1つのノードのCPUが、複数のノードのGPUを制御してもよい。
次に、モデルの構造および機械学習について説明する。
図3は、多層ニューラルネットワークの構造例を示す図である。
第2の実施の形態のモデルは、画像認識用の多層畳み込みニューラルネットワークである。図3のモデル例は、ResNet-50と呼ばれることがある。ただし、後述するスキップ制御は様々な多層ニューラルネットワークに適用可能であり、ResNet-50に限定されない。
図3のモデルは、直列に接続されたブロック210,220,230,240,250を含む。ブロック210は、入力画像を受け付ける先頭ブロックである。ブロック220はブロック210の次であり、ブロック230はブロック220の次であり、ブロック240はブロック230の次であり、ブロック250はブロック240の次である。
ブロック210は、畳み込み層211を含む。畳み込み層211は、カーネルと呼ばれるフィルタをシフトしながら積和演算を繰り返す畳み込み演算(Convolution)を行う。カーネルのサイズは、例えば、7×7である。畳み込み層211の出力は、特徴マップと呼ばれることがある。畳み込み層211は、カーネルの1回のシフト量を示すストライドが2に設定されている。このため、畳み込み層211が出力する特徴マップの高さおよび幅は、それぞれ入力の高さおよび幅の2分の1になる。
ブロック220は、直列に接続されたプーリング層221およびボトルネックブロック222,223,224を含む。プーリング層221は、隣接する所定個の要素を1つの要素に合成するプーリング演算を行う。プーリング層221は、例えば、3×3の正方領域から1つの要素を算出する。プーリング層221のプーリング演算は、例えば、3×3個の要素の中から最大値を選択する最大プーリングである。プーリング層221は、ストライドが2に設定されている。このため、プーリング層221の出力の高さおよび幅は、それぞれ入力の高さおよび幅の2分の1になる。
ボトルネックブロック222,223,224はそれぞれ、入力に対して複数回の畳み込み演算を連続的に行い、畳み込み演算の結果と元の入力とを合成して出力する。ボトルネックブロック222,223,224はそれぞれ、直列に接続された畳み込み層271,272,273を含む。畳み込み層271,272,273はそれぞれ、畳み込み演算を行う。畳み込み層272,273のストライドは1である。よって、畳み込み層272,273では、出力の高さおよび幅は、それぞれ入力の高さおよび幅と同一である。
一方、畳み込み層271のストライドは、1であることもあるし2であることもある。ストライドが1の場合、畳み込み層271の出力の高さおよび幅は、それぞれ入力の高さおよび幅と同一である。ストライドが2の場合、畳み込み層271の出力の高さおよび幅は、それぞれ入力の高さおよび幅の2分の1である。なお、ボトルネックブロック222,223,224では、各畳み込み層のストライドが1に設定され、入力の高さおよび幅は変化しない。最後に、畳み込み層273の出力に元の入力が加算される。
ブロック230は、直列に接続されたボトルネックブロック231,232,233,234を含む。ボトルネックブロック231,232,233,234の構造は、ブロック220と同様である。ただし、ボトルネックブロック231の畳み込み層271のストライドが2に設定され、他の畳み込み層のストライドが1に設定される。よって、ブロック230の出力の高さおよび幅は、それぞれ入力の高さおよび幅の2分の1である。
ブロック240は、直列に接続されたボトルネックブロック241,242,243,244,245,246を含む。ボトルネックブロック241,242,243,244,245,246の構造は、ブロック220,230と同様である。ただし、ボトルネックブロック241の畳み込み層271のストライドが2に設定され、他の畳み込み層のストライドが1に設定される。よって、ブロック240の出力の高さおよび幅は、それぞれ入力の高さおよび幅の2分の1である。
ブロック250は、直列に接続されたボトルネックブロック251,252,253を含む。ボトルネックブロック251,252,253の構造は、ブロック220,230,240と同様である。ただし、ボトルネックブロック251の畳み込み層271のストライドが2に設定され、他の畳み込み層のストライドが1に設定される。よって、ブロック250の出力の高さおよび幅は、それぞれ入力の高さおよび幅の2分の1である。
このように、ブロック210,220,230,240,250の集合は、16個のボトルネックブロックと2個のその他の層を含み、全体として50個の主要層を含む。ブロック250の後段に、直列にプーリング層261および全結合層262が接続される。
プーリング層261は、プーリング演算を行う。プーリング層261のプーリング演算は、例えば、隣接する所定個の要素の平均値を算出する平均プーリングである。全結合層262は、要素間の隣接関係を保存せずに、プーリング層261が出力する要素全体から数値を算出する全結合演算を行う。全結合層262は、認識可能な物体のクラス(例えば、1000個のクラス)それぞれに対するスコアを算出する。あるクラスのスコアは、入力画像に写った物体が当該クラスに属する確率を表す。
図4は、機械学習の学習フェーズの例を示す図である。
ここでは、説明を簡単にするため、GPU104-1,104-2の2個のGPUを用いて機械学習を並列化していると仮定する。情報処理装置100は、更に多数のGPUを用いて機械学習を並列化することが可能である。
GPU104-1は、多層ニューラルネットワーク310を保持する。GPU104-2は、多層ニューラルネットワーク310と同一の多層ニューラルネットワーク320を保持する。多層ニューラルネットワーク310,320は、例えば、図3に示した多層畳み込みニューラルネットワークである。
多層ニューラルネットワーク310,320はそれぞれ、複数の層を含む。各層には、複数のノードが並べられている。ノード数は層によって異なってもよい。ある層の前方に他の層がある場合、当該層のノードは1つ前の層のノードとの間にエッジをもつ。ある層の後方に他の層がある場合、当該層のノードは1つ後の層のノードとの間にエッジをもつ。エッジには重みが付与される。重みは、機械学習を通じて値が決定されるパラメータである。なお、ある層のノードが1つ前の層のノードとの間にもつエッジの重みを、当該層に含まれるパラメータと解釈してもよい。または、ある層のノードが1つ後の層のノードとの間にもつエッジの重みを、当該層に含まれるパラメータと解釈してもよい。
画像認識モデルを生成する機械学習には、画像と物体のクラスを示す教師ラベルとをそれぞれ対応付けた複数のサンプルを含む訓練データが使用される。GPU104-1,104-2は、異なるサンプルを並列に処理することで、機械学習を高速化する。
機械学習は、所定回数のエポック(Epoch)を含む。例えば、図3の多層畳み込みニューラルネットワークを生成する機械学習は、50回~60回のエポックを含む。各エポックは、所定回数のイテレーション(Iteration)を含む。例えば、各エポックは、760回のイテレーションを含む。エポック間では、その時点の多層ニューラルネットワーク310,320の予測精度を評価するための検証(バリデーション)が行われる。予測精度の指標として、正答率(Accuracy)が用いられてもよい。正答率は、テスト用のサンプルの個数に対する予測が成功したサンプルの個数の割合である。
同一エポックの異なるイテレーションは、通常、訓練データの中の異なるサンプルを使用する。異なるエポックのイテレーションは、同一のサンプルを再度使用することがある。同一イテレーションにおいて、異なるGPUは異なるサンプルを使用する。第2の実施の形態のサンプル使用方法は、オンライン学習またはミニバッチ学習である。オンライン学習では、1つのGPUが1回のイテレーションで1つのサンプルを使用する。ミニバッチ学習では、1つのGPUが1回のイテレーションで所定個数のサンプルを使用する。所定個数は、例えば、数十個程度である。
並列化された機械学習の各イテレーションは、FORWARDフェーズ、BACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズの4つのフェーズを含む。FORWARDフェーズでは、GPU104-1は、多層ニューラルネットワーク310の先頭の層(入力層)に対して画像を入力する。すると、入力層から多層ニューラルネットワーク310の末尾の層(出力層)に向かって連続的に数値計算が行われ、出力層から予測結果が出力される。GPU104-1は、予測結果と教師ラベルとの間の誤差を算出する。例えば、GPU104-1は、複数のクラスのスコアを列挙した予測ベクトルと、正解のクラスに対応する値が1であり他のクラスに対応する値が0である正解ベクトルとを比較し、2つのベクトルの差の二乗和平方根を誤差として算出する。ミニバッチ学習では、GPU104-1は、所定個数のサンプルの誤差の平均を算出する。
1つのノードに着目すると、GPU104-1は、そのノードの前段の層に属する複数のノードの出力値にそれぞれエッジの重みを乗じて合算することで、前段の層の出力値の重み付き和を算出する。GPU104-1は、この重み付き和を活性化関数に入力することで、そのノードの出力値を算出する。活性化関数の例として、シグモイド関数、ランプ関数、ソフトマックス関数などが挙げられる。活性化関数は、ハイパーパラメータとしてユーザから指定されてもよい。GPU104-1は、そのノードの出力値を、後段の層に属する複数のノードに対して提供する。このようにして、FORWARDフェーズでは、入力層から出力層に向かって数値が伝播する。GPU104-2は、GPU104-1と並列に、多層ニューラルネットワーク320に対してFORWARDフェーズを実行する。
BACKWARDフェーズでは、GPU104-1は、多層ニューラルネットワーク310の出力層から入力層に向かって逆順に、各エッジの重みの誤差勾配を算出する。誤差勾配は、誤差を重みの関数とみなした場合に、誤差を重みで偏微分した値に相当する。誤差勾配は、エッジの重みを微少量だけ変化させたときの誤差の変化量を表す。誤差勾配は、誤差が小さくなるように各エッジの重みを更新するために用いられる。誤差勾配を算出するアルゴリズムとして、誤差逆伝播法が用いられる。
ノード#1とその後段のノード#2との間のエッジに着目すると、GPU104-1は、そのエッジの重みの誤差勾配を次の情報を利用して算出する。すなわち、誤差勾配が、ノード#2とその後段のノードとの間のエッジの現在の重みおよび誤差勾配、FORWARDフェーズで算出されたノード#2の出力値、FORWARDフェーズで算出されたノード#1の出力値、活性化関数などに基づいて算出される。誤差勾配は、出力層に近い方から順に算出される。GPU104-2は、GPU104-1と並列に、多層ニューラルネットワーク320に対してBACKWARDフェーズを実行する。
COMMUNICATEフェーズでは、GPU104-1,104-2は、相互に通信を行い、BACKWARDフェーズで算出された誤差勾配をエッジ毎に合算する。そして、GPU104-1,104-2は、異なるサンプルから算出された同一エッジに対する誤差勾配の合計を、GPUの個数で割って、誤差勾配の平均を算出する。GPU104-1,104-2によって算出される誤差勾配の平均は同一である。GPU104-1,104-2の間の通信には、MPI(Message Passing Interface)の集団通信(コレクティブ通信)が用いられてもよい。例えば、AllReduce通信が用いられる。
なお、COMMUNICATEフェーズは、入力層から出力層に向かう順で実行されてもよいし、出力層から入力層に向かう順で実行されてもよい。また、BACKWARDフェーズは出力層から入力層に向かって一方向に進行するため、BACKWARDフェーズが完了する前に、誤差勾配を算出済みの層に対してCOMMUNICATEフェーズが開始されてもよい。
UPDATEフェーズでは、GPU104-1は、COMMUNICATEフェーズで算出された誤差勾配を用いて、多層ニューラルネットワーク310の各エッジの重みを更新する。このとき、GPU104-1は、現在の重みから誤差勾配そのものを減じる代わりに、誤差勾配を減算値に変換して現在の重みから減算値を減じる。GPU104-1は、誤差勾配から減算値への変換に、ハイパーパラメータである学習率を使用する。
学習率は、ブロック210,220,230,240,250に共通に設定されてもよいし、ブロック210,220,230,240,250それぞれに対して個別に設定されてもよい。第2の実施の形態では、後述するように、実行済みのエポック数が閾値に達したタイミングで、学習率が自動的に減少する。学習率が大きいほど、直近のサンプルの影響が重みに強く反映され、学習率が小さいほど、直近のサンプルの影響が重みに弱く反映される。GPU104-1は、例えば、誤差勾配に学習率を乗じた値を減算値として使用する。この場合、更新前の重みをw、更新後の重みをw’、誤差勾配をΔw、学習率をηと表記すると、w’=w-η×Δwと定義される。
GPU104-2は、GPU104-1と並列に、多層ニューラルネットワーク320に対してUPDATEフェーズを実行する。なお、UPDATEフェーズは、入力層から出力層に向かう順で実行されてもよいし、出力層から入力層に向かう順で実行されてもよい。
図5は、機械学習における予測精度と誤差勾配の変化例を示すグラフである。
前述の図4で説明した機械学習が実行されると、モデルの予測精度は曲線41のように変化することがある。曲線41は、エポック間の検証で算出される予測精度を示している。ここでは、予測精度の指標は正答率である。また、図4で説明した機械学習が実行されると、誤差勾配は曲線42のように変化することがある。曲線42は、全ての重みに対して算出される誤差勾配の絶対値の平均を示している。
情報処理装置100は、最初に学習率(LR:Learning Rate)を5.0に設定する。学習率が5.0に設定されてから初期の期間は、エポック数の増大に応じて、予測精度が大きく向上し誤差勾配が大きく低下する。しかし、学習率が固定のまま重みの更新が繰り返されると、重みが最適値からある程度離れた領域を巡回するようになり、それ以上最適値に近付かなくなることがある。このため、予測精度の向上や誤差勾配の低下には限界がある。その結果、予測精度は単調増加かつ上に凸の曲線に従って変化することがあり、誤差勾配は単調減少かつ下に凸の曲線に従って変化することがある。
そこで、情報処理装置100は、実行済みのエポック数が所定回数に達すると、学習率を減少させる。例えば、情報処理装置100は、エポックを30回実行し終えたときに、学習率を初期値の10分の1である0.5に変更する。学習率が0.5に変更されると、エポック数の増大に応じて、再び予測精度が大きく向上し誤差勾配が大きく低下する。これは、重みの1回の更新量が小さくなることで、学習率が5.0のときよりも重みが最適値に近付きやすくなるためである。ただし、学習率が5.0のときと同様、学習率が0.5のままでは予測精度の向上や誤差勾配の低下には限界がある。
そこで、情報処理装置100は、実行済みのエポック数が所定回数に達すると、再び学習率を減少させる。例えば、情報処理装置100は、学習率を更に10分の1に減らして0.05に変更する。同様に、情報処理装置100は、実行済みのエポック数が所定回数に達すると、学習率を更に10分の1に減らして0.005に変更する。このように、情報処理装置100は、エポック数に応じて段階的に学習率を引き下げる。
次に、機械学習の効率化について説明する。曲線42は、モデルに含まれる全ての層の誤差勾配の平均が単調減少することを表している。しかし、全ての層の誤差勾配が均等に収束するとは限らず、異なる層の間で誤差勾配の収束にばらつきが生じることがある。
図6は、複数の層の間の誤差勾配のばらつきの例を示す図である。
多層ニューラルネットワーク310は、層311,312,313,314,315,316を含む。前述の図4の説明では、GPU104-1は、各イテレーションにおいて全ての層に対してBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを実行している。そこで、GPU104-1は、エポック#1のイテレーション#1において、層311,312,313,314,315,316の誤差勾配を算出する。また、GPU104-1は、エポック#1のイテレーション#760でも、層311,312,313,314,315,316の誤差勾配を算出する。
ここで、図6に示す「層の誤差勾配」は、その層に含まれる複数の重みに対応する複数の誤差勾配の絶対値の平均である。エポック#1のイテレーション#1では、層311,312,313,314,315,316の何れの誤差勾配も大きい。これに対して、エポック#1のイテレーション#760では、層311,312,316の誤差勾配がまだ大きい一方、層313,314,315の誤差勾配が小さい。
このように、新たな学習率が設定されてからイテレーションが進むと、モデルに含まれる複数の層のうちの一部の層のみで誤差勾配が先行して収束することがある。多層畳み込みニューラルネットワークの場合、入力層に近い層(前方の層)の誤差勾配が、出力層に近い層(後方の層)よりも早く収束することがある。誤差勾配が収束した層の重みは、同じ学習率で更にイテレーションを実行しても、それ以上最適値に近付かないことがある。よって、誤差勾配が収束した層は、実質的に学習されていない層であると言える。
各イテレーションにおいて、誤差勾配が収束した層を含む全ての層に対してBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズが実行されると、予測精度の向上に寄与しない無駄な処理が発生して計算量が過大になることがある。そこで、情報処理装置100は、一部の層の処理をスキップすることがある。スキップされる処理は、BACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズである。
図7は、一部の層のパラメータ更新をスキップする第1の例を示す図である。
エポック#1のイテレーション#1では、層311,312,313,314,315,316の何れもスキップ対象に指定されていない。そこで、GPU104-1は、層311,312,313,314,315,316に対して、FORWARDフェーズ、BACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを実行する。その後、GPU104-1は、層311,312,313,314,315,316の誤差勾配を監視し、誤差勾配が収束した層を検出する。ここでは、層311,312,316の誤差勾配が収束しておらず、層313,314,315の誤差勾配が収束したと仮定する。そこで、GPU104-1は、層313,314,315をスキップ対象に指定する。
このとき、GPU104-1は、BACKWARDフェーズで算出された誤差勾配に基づいて、誤差勾配が収束した層を検出する。GPU104-2は、GPU104-1と並列に、BACKWARDフェーズで算出された誤差勾配に基づいて、誤差勾配が収束した層を検出する。GPU104-1,104-2は、COMMUNICATEフェーズにおいて、誤差勾配の収束の検出結果を相互に通知することで、スキップ対象の層(スキップ層)の決定を統一する。
決定されるスキップ層は、少なくとも1つのGPUで誤差勾配が収束した層であってもよいし、全てのGPUで誤差勾配が収束した層であってもよい。また、スキップ層は、誤差勾配が収束したGPUの個数または割合が閾値以上である層であってもよい。なお、GPU104-1,104-2は、COMMUNICATEフェーズで算出される誤差勾配の平均に基づいて、スキップ層を統一的に決定してもよい。
エポック#1のイテレーション#760では、GPU104-1は、層311,312,313,314,315,316に対してFORWARDフェーズを実行する。また、GPU104-1は、層311,312,316に対して、BACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを実行する。一方、GPU104-1は、層313,314,315のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを省略する。
一部の層のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズが省略されることで、1つのイテレーションの計算量および通信量が削減される。その結果、そのイテレーションの実行時間が短縮される。なお、層312の誤差勾配の計算には、後段の層313の誤差勾配が使用される。層313がスキップ層である場合、GPU104-1は、層312の誤差勾配の計算に、層313に対して最後に算出された誤差勾配を使用する。そこで、GPU104-1は、層313をスキップ層に指定するとき、最後に算出された層313の各重みの誤差勾配を保存しておく。
次に、誤差勾配の収束の判定の一例について説明する。
図8は、誤差勾配差分の算出例を示すグラフである。
曲線43は、多層ニューラルネットワーク310の第n番目の層(n層)の誤差勾配の変化を示す。曲線44は、第n-1番目の層(n-1層)の誤差勾配の時間変化を示す。図8の横軸は、イテレーション数を表す。ただし、図8においてイテレーション数=0は、新しい学習率が設定された直後のイテレーションに相当する。エポックが変わっても、学習率が変化しない限り、図8の横軸のイテレーション数はリセットされない。よって、図8の横軸のイテレーション数は、760以上になることがある。
ここで、GPU104-1が、イテレーションmの時点でn層をスキップ層に指定するか否か判断することを考える。GPU104-1は、イテレーションm-1において、n層の誤差勾配Δwn,m-1を記録しておく。GPU104-1は、イテレーションmにおいて、n層の誤差勾配Δwn,mを算出し、イテレーションm-1の誤差勾配からイテレーションmの誤差勾配を引いた誤差勾配差分ΔAn,m=Δwn,m-1-Δwn,mを算出する。
また、GPU104-1は、新しい学習率が設定された直後のイテレーション0において、n層の誤差勾配Δwn,0(初期誤差勾配)を記録しておく。GPU104-1は、誤差勾配Δwn,0に基づいて閾値を算出する。例えば、GPU104-1は、初期誤差勾配の5%、すなわち、0.05×Δwn,0を閾値として算出する。初期誤差勾配に対する倍率は、ユーザから指定されるハイパーパラメータであってもよい。
GPU104-1は、誤差勾配差分ΔAn,mが閾値未満であるか判断する。誤差勾配差分ΔAn,mが閾値以上である場合、GPU104-1は、n層をスキップ層に指定せず、イテレーションm+1でもn層のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを実行する。一方、誤差勾配差分ΔAn,mが閾値未満である場合、GPU104-1は、n層をスキップ層に指定し、イテレーションm+1以降のn層のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを省略する。
GPU104-1は、n層と同様にn-1層についてもスキップ層に指定するか否か判断する。曲線43,44が示すように、n層よりもn-1層の方が誤差勾配の収束が早いことがある。よって、n層よりもn-1層の方が先にスキップ層に指定されることがある。GPU104-1は、学習率が変更されたときにスキップ層の指定を解除する。
なお、図8で説明した方法は、実質的に学習が行われていない層を判定する方法の一例である。情報処理装置100は、他の方法によって、実質的に学習が行われていない層を判定することも可能である。例えば、情報処理装置100は、最新の誤差勾配差分が固定の閾値(例えば、ユーザから指定された閾値)未満である層を選択してもよい。また、例えば、情報処理装置100は、最新の誤差勾配が閾値未満である層を選択してもよい。
次に、一部の層のパラメータ更新を省略することがモデル精度に与える影響について説明する。図8の曲線43,44は、説明を簡単にするため、イテレーション数の増加に対して誤差勾配が単調に減少することを示している。しかし、短期的には、誤差勾配が増減を繰り返すことがあり、常に単調に減少するとは限らない。よって、ある層の誤差勾配の減少が一時的に停滞して収束条件を満たしたとしても、その後、その層の誤差勾配が再び減少に転じて収束条件を満たさなくなる可能性がある。
このため、直近のイテレーションの実行結果が収束条件を満たす全ての層について、パラメータ更新を即時に停止してしまうと、停止タイミングが早すぎてしまい、パラメータの値が最適値に近付く機会を失ってしまう可能性がある。その結果、モデルの予測精度が低下するおそれがある。一方で、長期的観点からは、機械学習が進行するほど、実質的に学習が行われていない層は増加する。
そこで、情報処理装置100は、直近のイテレーションの実行結果が収束条件を満たす層を、スキップ候補として選択する。そして、情報処理装置100は、スキップ候補のうち一定割合の層をスキップ層に指定し、それ以外のスキップ候補をスキップ層に指定せずに猶予する。また、情報処理装置100は、スキップ候補のうちスキップ層として採用する採用割合を、機械学習が進行するほど増加する可変割合として算出する。
図9は、スキップ層の採用割合の関数例を示すグラフである。
曲線45は、イテレーション数に対する採用割合の変化を示す。採用割合Pは、スキップ候補数Nに対するスキップ層数xの比率であり、P=x/Nである。採用割合Pは、0以上1以下の実数である。曲線46は、イテレーション数に対する残留割合の変化を示す。残留割合は、1から採用割合Pを引いた値である。残留割合1-Pは、スキップ候補数Nに対する残留層数(スキップ層以外の層数)N-xの比率であり、1-P=(N-x)/Nである。残留割合1-Pは、0以上1以下の実数である。
曲線45,46の横軸は、機械学習の開始からの総イテレーション数を表す。よって、曲線45,46の横軸のイテレーション数は、エポックが変わってもリセットされず、学習率が変化してもリセットされない。エポック数が60かつ各エポックのイテレーション数が760の場合、イテレーション数の最大は60×760-1である。
曲線45は、イテレーション数に対して採用割合が単調に増加することを示している。曲線46は、イテレーション数に対して残留割合が単調に減少することを示している。曲線45は、シグモイド曲線(いわゆるS字曲線)であってもよい。その場合、機械学習の序盤には採用割合が緩やかに増加し、機械学習の中盤には採用割合が大きく増加し、機械学習の終盤には採用割合が緩やかに増加する。イテレーション数が0のときP=0でもよく、イテレーション数が最大のときP=1でもよく、イテレーション数が中間のときP=0.5でもよい。なお、曲線45が他の曲線であってもよく、直線でもよい。また、採用割合を算出するための関数が、ハイパーパラメータとしてユーザから指定されてもよい。
情報処理装置100は、あるイテレーションでN個のスキップ候補を選択すると、そのイテレーションに対応する採用割合Pを曲線45から特定する。情報処理装置100は、スキップ候補数Nに採用割合Pを乗じてスキップ層数xを決定する。P=0.5である場合、情報処理装置100は、スキップ候補の半数をスキップ層として採用する。なお、イテレーション数の増加に伴ってスキップ候補数Nも増加することが期待される。よって、スキップ候補数Nと採用割合Pの増加により、スキップ層数xは増加する。
図10は、一部の層のパラメータ更新をスキップする第2の例を示す図である。
エポック#1のイテレーション#1では、層311,312,313,314,315,316の何れもスキップ対象に指定されていない。そこで、GPU104-1は、層311,312,313,314,315,316に対して、FORWARDフェーズ、BACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを実行する。その後、GPU104-1は、層311,312,313,314,315,316の誤差勾配を監視し、収束条件を満たす層を検出する。ここでは、層311,312,316が収束条件を満たしておらず、層313,314,315が収束条件を満たしたと仮定する。そこで、GPU104-1は、層313,314,315をスキップ候補として選択する。
このとき、GPU104-1は、現在のイテレーションに対応する採用割合を2/3と算出したと仮定する。すると、GPU104-1は、スキップ候補である層313,314,315のうち2つの層をスキップ層に指定する。ここでは、GPU104-1は、層313,315をスキップ層に指定し、層314をスキップ層に指定しない。
すると、エポック#1のイテレーション#760では、GPU104-1は、層311,312,313,314,315,316に対してFORWARDフェーズを実行する。また、GPU104-1は、層311,312,314,316に対して、BACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを実行する。一方、GPU104-1は、層313,315のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズを省略する。このように、機械学習の途中では収束条件を満たすスキップ候補の一部のみがスキップ層として採用され、採用割合は機械学習の進行に伴って増加する。よって、パラメータ更新の停止が早すぎることによるモデルの精度低下を抑制できる。
次に、N個のスキップ候補からx個のスキップ層を抽出する方法について説明する。情報処理装置100は、N個のスキップ候補の中からx個のスキップ層をランダムに抽出することも可能である。ただし、情報処理装置100は、以下に説明する5つの判定基準のうちの何れか1つを用いてもよく、2以上の判定基準を組み合わせて用いてもよい。
(D1)情報処理装置100は、層毎に、直近の所定イテレーション数の間の誤差勾配の時間平均(平均誤差勾配)を算出する。直近の所定イテレーション数は、1エポック分である760イテレーションであってもよい。また、平均誤差勾配は、新たなエポックの開始によってリセットされてもよく、学習率の変更によってリセットされてもよい。情報処理装置100は、スキップ候補のうち平均誤差勾配が小さい層を優先的に抽出してもよい。また、情報処理装置100は、平均誤差勾配が閾値未満の層を抽出してもよい。
(D2)情報処理装置100は、層毎に、直近の所定イテレーション数の間の誤差勾配差分の時間平均(平均差分)を算出する。直近の所定イテレーション数は、1エポック分である760イテレーションであってもよい。また、平均差分は、新たなエポックの開始によってリセットされてもよく、学習率の変更によってリセットされてもよい。情報処理装置100は、スキップ候補のうち平均差分が小さい層を優先的に抽出してもよい。また、情報処理装置100は、平均差分が閾値未満の層を抽出してもよい。
(D3)情報処理装置100は、図3に示す多層ニューラルネットワークのブロック210,220,230,240,250の構造に基づいて、スキップ層を決定する。スキップ層は、同一のブロックに集中しないことが好ましい。例えば、情報処理装置100は、スキップ候補のうちブロック210,220,230,240,250それぞれにつき1個または所定個数以下の層を抽出し、残ったスキップ候補を採用しない。
また、スキップ層は、同一のボトルネックブロックに集中しないことが好ましい。例えば、情報処理装置100は、スキップ候補のうちボトルネックブロック毎に高々1個の層を抽出し、残ったスキップ候補を採用しない。同一のブロックまたはボトルネックブロックから2以上のスキップ候補が選択されている場合、情報処理装置100は、それら2以上のスキップ候補の中からランダムにスキップ層を抽出してもよいし、入力に近い層を抽出してもよい。また、情報処理装置100は、畳み込み層のみをスキップ層に採用し、畳み込み層以外の層をスキップ層に採用しない。
(D4)情報処理装置100は、多層ニューラルネットワークにおけるスキップ候補間の間隔に基づいて、スキップ層を決定する。スキップ層は、連続しないことが好ましく、多層ニューラルネットワーク全体に分散することが好ましい。例えば、情報処理装置100は、スキップ候補の中から、間隔を所定層(例えば、2層)以上空けてスキップ層を抽出する。2以上のスキップ候補が密集している場合、情報処理装置100は、一部のスキップ候補を間引いてスキップ層の間隔を空ける。
(D5)情報処理装置100は、入力に近い層を優先的に抽出する。
第2の実施の形態では、これら判定基準の好適な組み合わせとして、判定基準D1,D4,D5の組み合わせ、判定基準D2,D4,D5の組み合わせ、および、判定基準D3,D1,D2,D5の組み合わせを例示する。好適な組み合わせの詳細は後述する。
次に、情報処理装置100の機能および処理手順について説明する。
図11は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、訓練データ記憶部121、モデル記憶部122および誤差勾配記憶部123を有する。これらの記憶部は、例えば、GPUメモリ105の記憶領域を用いて実現される。ただし、RAM102の記憶領域が使用されてもよい。また、情報処理装置100は、イテレーション実行部130、スキップ制御部140および学習率制御部151を有する。これらの処理部は、例えば、GPU104-1,104-2,104-3,104-4それぞれが実行するプログラムを用いて実現される。ただし、CPU101で実行されるプログラムが使用されてもよい。
訓練データ記憶部121は、訓練データを記憶する。訓練データは、複数のサンプルを含む。各サンプルは、入力データと教師ラベルとを含む。入力データは、例えば、画像である。教師ラベルは、例えば、画像に写った物体のクラスを示すラベルである。モデル記憶部122は、多層ニューラルネットワークを記憶する。多層ニューラルネットワークは、例えば、図3の多層畳み込みニューラルネットワークである。誤差勾配記憶部123は、機械学習の途中で算出された各層の誤差勾配の情報を記憶する。
イテレーション実行部130は、イテレーションを反復実行して、モデル記憶部122に記憶された多層ニューラルネットワークの重みを更新する。イテレーション実行部130は、実行済みのイテレーション数をカウントし、訓練データ記憶部121に記憶された訓練データの中から適切なサンプルを抽出する。また、イテレーション実行部130は、エポック数をカウントし、イテレーションの停止を判断する。
イテレーション実行部130は、FORWARD部131、BACKWARD部132、COMMUNICATE部133およびUPDATE部134を有する。FORWARD部131は、前述のFORWARDフェーズを実行する。FORWARDフェーズは、異なるサンプルに対して異なるGPUが並列に実行できる。BACKWARD部132は、FORWARDフェーズに続いて前述のBACKWARDフェーズを実行する。BACKWARDフェーズは、複数のGPUが並列に実行できる。ただし、スキップ制御部140からの指示により、一部の層の処理がスキップされることがある。
COMMUNICATE部133は、BACKWARDフェーズに続いて前述のCOMMUNICATEフェーズを実行する。BACKWARDフェーズでは、複数のGPUがAllReduce通信などの集団通信を行う。ただし、スキップ制御部140からの指示により、一部の層の処理がスキップされることがある。UPDATE部134は、COMMUNICATEフェーズに続いて前述のUPDATEフェーズを実行する。UPDATEフェーズに使用する学習率は、学習率制御部151から指定される。UPDATEフェーズは、複数のGPUが並列に実行できる。ただし、スキップ制御部140からの指示により、一部の層の処理がスキップされることがある。
スキップ制御部140は、実質的に学習が行われていない層をスキップ層に指定し、BACKWARD部132、COMMUNICATE部133およびUPDATE部134にスキップ層を通知する。
スキップ制御部140は、誤差勾配監視部141、閾値算出部142、スキップ候補選択部143およびスキップ層決定部144を有する。誤差勾配監視部141は、BACKWARD部132から、イテレーション毎に各エッジの重みの誤差勾配を取得する。誤差勾配監視部141は、各層の誤差勾配を算出して誤差勾配記憶部123に登録する。また、誤差勾配監視部141は、層毎に誤差勾配差分を算出してスキップ候補選択部143に提供する。また、誤差勾配監視部141は、各層の初期誤差勾配を閾値算出部142に提供する。また、誤差勾配監視部141は、スキップ候補の中からスキップ層を抽出するための情報(例えば、平均誤差勾配や平均差分)を、スキップ層決定部144に提供する。
閾値算出部142は、新たな学習率が設定される毎かつ層毎に、誤差勾配監視部141から提供された初期誤差勾配に基づいて閾値を算出する。閾値は、例えば、初期誤差勾配に、ハイパーパラメータとしてユーザから指定された比率(例えば、5%)を乗じた値である。閾値算出部142は、各層の閾値をスキップ候補選択部143に通知する。
スキップ候補選択部143は、イテレーション毎かつ層毎に、誤差勾配監視部141から提供された誤差勾配差分と閾値算出部142から通知された閾値とを比較する。スキップ候補選択部143は、誤差勾配差分が閾値未満の層をスキップ候補に選択する。なお、閾値算出部142およびスキップ候補選択部143の上記説明は、スキップ候補を選択する処理の一例である。スキップ候補選択部143は、他の方法でスキップ候補を選択してもよい。例えば、誤差勾配差分の閾値が固定値であってもよい。また、例えば、スキップ候補選択部143は、誤差勾配が所定値未満の層をスキップ候補に選択してもよい。スキップ候補選択部143は、選択したスキップ候補をスキップ層決定部144に通知する。
スキップ層決定部144は、スキップ候補選択部143が選択したスキップ候補の中からスキップ層を決定する。スキップ層決定部144は、シグモイド関数などの所定の関数に基づいて、機械学習の開始からの総イテレーション数に対応する採用割合を算出する。スキップ層決定部144は、スキップ候補数に採用割合を乗じてスキップ層数を算出し、スキップ候補の中からスキップ層数だけ層を抽出する。抽出する層の決定には、前述の5つの判定基準のうちの1つ以上が使用される。スキップ層決定部144は、決定したスキップ層をBACKWARD部132、COMMUNICATE部133およびUPDATE部134に通知する。
学習率制御部151は、ハイパーパラメータとしてユーザから指定された学習率の初期値を、UPDATE部134に通知する。また、学習率制御部151は、実行済みのエポック数をカウントし、エポック数が所定数に達したときに学習率を変更する。例えば、学習率制御部151は、学習率変更の契機毎に、学習率を現在の10分の1に下げる。学習率制御部151は、変更後の学習率をUPDATE部134に通知する。
図12は、誤差勾配テーブルの例を示す図である。
誤差勾配テーブル124は、誤差勾配記憶部123に記憶される。誤差勾配テーブル124には、複数の層それぞれについて、層番号、初期誤差勾配、前回誤差勾配、平均誤差勾配および平均差分が登録される。層番号は、層を識別する識別番号である。初期誤差勾配は、新たな学習率が設定された直後のイテレーションの誤差勾配である。前回誤差勾配は、1つ前のイテレーションの誤差勾配である。
イテレーションmの誤差勾配が算出される前は、誤差勾配テーブル124には、前回誤差勾配としてイテレーションm-1の誤差勾配が登録されている。イテレーションmの誤差勾配が算出されると、誤差勾配テーブル124には、前回誤差勾配としてイテレーションmの誤差勾配が上書きされる。このとき、イテレーションm-1の誤差勾配とイテレーションmの誤差勾配の差が、誤差勾配差分として算出される。なお、誤差勾配テーブル124に登録される各層の誤差勾配は、BACKWARDフェーズの結果から、その層に含まれる複数の重みに対応する複数の誤差勾配の絶対値の平均として算出される。
平均誤差勾配は、現在のイテレーションから所定数前までのイテレーションの間の誤差勾配の移動平均である。平均差分は、現在のイテレーションから所定数前までのイテレーションの間の誤差勾配差分の移動平均である。平均誤差勾配および平均差分は、新たなイテレーションの誤差勾配が算出される毎に更新される。なお、平均誤差勾配および平均差分の算出に、所定数前までの各イテレーションの誤差勾配を使用する場合、情報処理装置100は、各イテレーションの誤差勾配を誤差勾配テーブル124に登録してもよい。
図13は、機械学習の手順例を示すフローチャートである。
この機械学習の手順は、例えば、複数のGPUにおいて並列に実行される。
(S10)学習率制御部151は、学習率の初期値を設定する。
(S11)イテレーション実行部130は、訓練データからサンプルを抽出する。FORWARD部131は、抽出されたサンプルを用いてFORWARDフェーズを実行する。FORWARDフェーズでは、FORWARD部131は、サンプルに含まれる入力データをモデルに入力し、サンプルに含まれる教師ラベルとモデルの出力との間の誤差を算出する。
(S12)BACKWARD部132は、出力に近い方から優先的に層を1つ選択する。
(S13)BACKWARD部132は、ステップS12で選択した層がスキップ層に指定されているか判断する。選択した層がスキップ層である場合はステップS15に進み、選択した層がスキップ層でない場合はステップS14に進む。
(S14)BACKWARD部132は、選択した層に対してBACKWARDフェーズの処理を実行する。ここでは、BACKWARD部132は、誤差逆伝播法によって、選択した層に属するエッジの重みの誤差勾配を算出する。後段の層がスキップ層である場合、後段の層に属するエッジの重みの誤差勾配が今回のイテレーションで算出されていない。その場合、BACKWARD部132は、後段の層に対して最後に算出された誤差勾配を読み出して使用する。
(S15)BACKWARD部132は、ステップS12において全ての層を選択したか、すなわち、モデルの中の先頭の層に到達したか判断する。全ての層を選択した場合はステップS16に進み、未選択の層がある場合はステップS12に戻る。
(S16)誤差勾配監視部141は、BACKWARD部132で算出された各エッジの重みの誤差勾配を取得する。誤差勾配監視部141は、取得した誤差勾配を層毎に分類し、各層の誤差勾配の絶対値の平均を、その層の誤差勾配として算出する。
(S17)誤差勾配監視部141は、今回のイテレーションが新たな学習率の設定直後のイテレーション(イテレーション0)であるか判断する。イテレーション0の場合はステップS18に進み、イテレーション0でない場合はステップS20に進む。
(S18)誤差勾配監視部141は、ステップS16で算出した各層の誤差勾配を、初期誤差勾配および前回誤差勾配として誤差勾配テーブル124に登録する。
(S19)閾値算出部142は、初期誤差勾配から閾値を算出する。例えば、閾値算出部142は、初期誤差勾配の5%を閾値と規定する。そして、ステップS25に進む。
図14は、機械学習の手順例を示すフローチャート(続き1)である。
(S20)誤差勾配監視部141は、層毎に、誤差勾配テーブル124に登録された前回誤差勾配から、ステップS16で算出した誤差勾配を引いて誤差勾配差分を算出する。また、誤差勾配監視部141は、ステップS16で算出した誤差勾配を、前回誤差勾配として誤差勾配テーブル124に上書きする。
(S21)誤差勾配監視部141は、層毎に、誤差勾配テーブル124に登録された情報とステップS16で算出した誤差勾配から、平均誤差勾配を算出する。また、誤差勾配監視部141は、層毎に、誤差勾配テーブル124に登録された情報とステップS20で算出した誤差勾配差分から、平均差分を算出する。誤差勾配監視部141は、算出した平均誤差勾配および平均差分を誤差勾配テーブル124に上書きする。
(S22)スキップ候補選択部143は、ステップS20で算出された誤差勾配差分が、ステップS19で算出された閾値未満である層を、スキップ候補として選択する。なお、この選択方法は一例であり、他の方法によってスキップ候補が選択されてもよい。
(S23)スキップ層決定部144は、機械学習の開始からの総イテレーション数に対応する採用割合Pを算出する。例えば、スキップ層決定部144は、機械学習の間に不変なシグモイド曲線に基づいて採用割合Pを算出する。また、スキップ層決定部144は、スキップ候補数Nをカウントする。そして、スキップ層決定部144は、スキップ候補数Nに採用割合Pを乗じて、スキップ層数xを算出する。
なお、同一の学習率のもとでイテレーションが繰り返されると、スキップ制御部140は、あるイテレーションで1以上の層をスキップ層に指定し、その後のイテレーションで追加的に1以上のスキップ候補を選択する可能性がある。そこで、上記のスキップ候補数Nは、追加的に選択されたスキップ候補の個数であってもよい。その場合、スキップ層数xには、指定済みのスキップ層の個数は含まれない。一方、上記のスキップ候補数Nは、収束条件を満たすと判断された層の総数、すなわち、指定済みのスキップ層の個数と追加的に選択されたスキップ候補の個数の合計であってもよい。その場合、スキップ層数xには、指定済みのスキップ層の個数が含まれる。
(S24)スキップ層決定部144は、ステップS22で選択されたN個のスキップ候補の中から、x個のスキップ層を抽出する。スキップ層抽出には、前述の5つの判定基準のうちの1つ以上が用いられる。スキップ層抽出の例については後述する。
(S25)COMMUNICATE部133は、層を1つ選択する。
(S26)COMMUNICATE部133は、ステップS25で選択した層が、前イテレーションまでにスキップ層に指定済みか判断する。選択した層がスキップ層の場合はステップS28に進み、選択した層がスキップ層でない場合はステップS27に進む。
(S27)COMMUNICATE部133は、選択した層に対してCOMMUNICATEフェーズの処理を実行する。ここでは、COMMUNICATE部133は、GPU間のAllReduce通信により、複数のGPUで算出された誤差勾配をエッジの重み毎に合計する。COMMUNICATE部133は、誤差勾配の合計をGPUの個数で割ることで、誤差勾配の平均を算出する。これにより、複数のGPUの間で誤差勾配が集計される。また、COMMUNICATE部133は、GPU間通信によって、スキップ層として抽出された層の情報を収集する。
(S28)COMMUNICATE部133は、ステップS25において全ての層を選択したか判断する。全ての層を選択した場合はステップS29に進み、未選択の層がある場合はステップS25に戻る。なお、COMMUNICATE部133は、複数の層を順方向(入力から出力の方向)に選択してもよいし、逆方向(出力から入力の方向)に選択してもよい。また、COMMUNICATE部133は、複数の層のCOMMUNICATEフェーズを並列に実行してもよい。
図15は、機械学習の手順例を示すフローチャート(続き2)である。
(S29)UPDATE部134は、層を1つ選択する。
(S30)UPDATE部134は、ステップS29で選択した層が、前イテレーションまでにスキップ層に指定済みか判断する。選択した層がスキップ層の場合はステップS32に進み、選択した層がスキップ層でない場合はステップS31に進む。
(S31)UPDATE部134は、選択した層に対してUPDATEフェーズの処理を実行する。ここでは、UPDATE部134は、選択した層に属するエッジの重みを、COMMUNICATEフェーズで集計された誤差勾配と現在の学習率とに基づいて更新する。例えば、UPDATE部134は、誤差勾配に学習率を乗じて減算値を算出し、現在の重みから減算値を引く。
(S32)UPDATE部134は、ステップS29において全ての層を選択したか判断する。全ての層を選択した場合はステップS33に進み、未選択の層がある場合はステップS29に戻る。なお、UPDATE部134は、複数の層を順方向(入力から出力の方向)に選択してもよいし、逆方向(出力から入力の方向)に選択してもよい。
(S33)スキップ層決定部144は、ステップS27で収集された情報に基づいて、GPU間の合意としてスキップ層を決定する。スキップ候補の中から抽出された層がGPU間で一致している場合、スキップ層決定部144は、抽出された層をスキップ層に決定する。抽出された層がGPU間で相違する場合、スキップ層決定部144は、予め定めた投票アルゴリズムに従って、各層をスキップ層に指定するか否か決定する。
(S34)イテレーション実行部130は、今回のイテレーションで全てのエポックが終了したか判断する。例えば、イテレーション実行部130は、760イテレーション×60エポックが終了したか判断する。全てのエポックが終了した場合は機械学習が停止し、それ以外の場合はステップS35に進む。
(S35)学習率制御部151は、区切りとなる所定のエポック数に到達したか判断する。所定のエポック数は、複数個あってもよい。所定のエポック数に到達した場合はステップS36に進み、それ以外の場合はステップS11に戻る。
(S36)学習率制御部151は、学習率を1段階下げる。例えば、学習率制御部151は、学習率を現在の10分の1に変更する。学習率が変更されると、スキップ層決定部144は、スキップ層の指定を解除する。これにより、次のイテレーションでは、全ての層に対してBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズが実行されることになる。そして、ステップS11に戻る。
次に、前述のステップS24で実行されるスキップ層抽出の例を説明する。以下では、前述の5つの判定基準の一部を組み合わせる方法として3通りの例を挙げる。
なお、前述のように、算出されたスキップ層数xに、既存のスキップ層の個数が含まれていないことがある。その場合、スキップ層決定部144は、あるスキップ候補と他のスキップ候補との間の関係だけでなく、あるスキップ候補と既存のスキップ層との間の関係も考慮して、当該スキップ候補を抽出するか否か決定してもよい。また、スキップ層決定部144は、スキップ候補と既存のスキップ層との間の関係を考慮しなくてもよい。
また、前述のように、算出されたスキップ層数xに、既存のスキップ層の個数が含まれていることがある。その場合、スキップ層決定部144は、既存のスキップ層を優先的にスキップ層に指定し、スキップ層数xのうち既存のスキップ層の個数を超える部分をスキップ候補の中から補充してもよい。また、スキップ層決定部144は、既存のスキップ層も含めて、x個のスキップ層を決定し直すようにしてもよい。
図16は、第1のスキップ層抽出の手順例を示すフローチャートである。
(S40)スキップ層決定部144は、誤差勾配テーブル124から、各スキップ候補の平均誤差勾配を読み出す。スキップ層決定部144は、平均誤差勾配が閾値未満のスキップ候補を抽出する。閾値は、ユーザから指定されるハイパーパラメータでもよい。
(S41)スキップ層決定部144は、ステップS40で抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S42)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS43に進む。
(S43)スキップ層決定部144は、同一ブロックにスキップ層が集中しないように、ブロック1個当たりのスキップ層数の上限を設定する。スキップ層決定部144は、上限を超えないように、異なるブロックからスキップ候補を抽出する。
(S44)スキップ層決定部144は、ステップS43で抽出したスキップ候補から畳み込み層以外の層を除去して、抽出するスキップ候補を畳み込み層に限定する。
(S45)スキップ層決定部144は、ステップS43,S44を通じて抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S46)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS47に進む。
(S47)スキップ層決定部144は、入力に近い方から優先的に、スキップ層数がxに到達するまでスキップ候補を抽出し、スキップ層の集合に追加する。
このように、第1のスキップ層抽出では、前述の判定基準D1,D4,D5が順に使用される。判定基準D1が優先的に使用され、スキップ層が不足する場合は次に判定基準D4が使用され、更にスキップ層が不足する場合は判定基準D5が使用される。
図17は、第2のスキップ層抽出の手順例を示すフローチャートである。
(S50)スキップ層決定部144は、誤差勾配テーブル124から、各スキップ候補の平均差分を読み出す。スキップ層決定部144は、平均差分が閾値未満のスキップ候補を抽出する。閾値は、ユーザから指定されるハイパーパラメータでもよい。
(S51)スキップ層決定部144は、ステップS50で抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S52)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS53に進む。
(S53)スキップ層決定部144は、同一ブロックにスキップ層が集中しないように、ブロック1個当たりのスキップ層数の上限を設定する。スキップ層決定部144は、上限を超えないように、異なるブロックからスキップ候補を抽出する。
(S54)スキップ層決定部144は、ステップS53で抽出したスキップ候補から畳み込み層以外の層を除去して、抽出するスキップ候補を畳み込み層に限定する。
(S55)スキップ層決定部144は、ステップS53,S54を通じて抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S56)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS57に進む。
(S57)スキップ層決定部144は、入力に近い方から優先的に、スキップ層数がxに到達するまでスキップ候補を抽出し、スキップ層の集合に追加する。
このように、第2のスキップ層抽出では、前述の判定基準D2,D4,D5が順に使用される。判定基準D2が優先的に使用され、スキップ層が不足する場合は次に判定基準D4が使用され、更にスキップ層が不足する場合は判定基準D5が使用される。
図18は、第3のスキップ層抽出の手順例を示すフローチャートである。
(S60)スキップ層決定部144は、スキップ層が連続して出現しないように、スキップ層の間隔の下限(例えば、2層)を設定する。スキップ層決定部144は、スキップ層の間隔が下限未満にならないように、間欠的にスキップ候補を抽出する。
(S61)スキップ層決定部144は、ステップS60で抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S62)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS63に進む。
(S63)スキップ層決定部144は、誤差勾配テーブル124から、各スキップ候補の平均誤差勾配を読み出す。スキップ層決定部144は、平均誤差勾配が閾値未満のスキップ候補を抽出する。閾値は、ユーザから指定されるハイパーパラメータでもよい。
(S64)スキップ層決定部144は、ステップS63で抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S65)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS66に進む。
(S66)スキップ層決定部144は、誤差勾配テーブル124から、各スキップ候補の平均差分を読み出す。スキップ層決定部144は、平均差分が閾値未満のスキップ候補を抽出する。閾値は、ユーザから指定されるハイパーパラメータでもよい。
(S67)スキップ層決定部144は、ステップS66で抽出したスキップ候補を、スキップ層の集合に追加する。なお、抽出したスキップ候補の全てを集合に追加するとスキップ層数がxを超える場合、スキップ層決定部144は、スキップ層数がxになるように、抽出したスキップ候補の一部を集合に追加する。
(S68)スキップ層決定部144は、スキップ層数がxに到達したか判断する。到達した場合はスキップ層抽出が終了し、それ以外の場合はステップS69に進む。
(S69)スキップ層決定部144は、入力に近い方から優先的に、スキップ層数がxに到達するまでスキップ候補を抽出し、スキップ層の集合に追加する。
このように、第3のスキップ層抽出では、前述の判定基準D3,D1,D2,D5が順に使用される。判定基準D3が優先的に使用され、スキップ層が不足する場合は次に判定基準D1が使用され、更にスキップ層が不足する場合は次に判定基準D2が使用され、更にスキップ層が不足する場合は判定基準D5が使用される。
第2の実施の形態の情報処理装置100によれば、各層の誤差勾配が監視され、直近のイテレーションの誤差勾配が収束条件を満たした層がスキップ候補として選択される。スキップ候補のうち、機械学習の進行に伴って単調に増加する採用割合だけ、スキップ層に指定される。そして、学習率が変更されるまで、スキップ層のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズの処理が省略される。
これにより、現在の学習率のもとで誤差勾配が収束して実質的に学習が行われなくなった層の少なくとも一部について、誤差勾配の計算、GPU間通信および重みの更新が停止する。よって、無駄な処理が削減されて計算量が削減される。その結果、機械学習の実行時間が短縮される。また、収束条件を満たすスキップ候補の全てが即時にスキップ層に指定されるわけではなく、スキップ層の指定が遅延する。よって、一時的に誤差勾配の減少が停滞した後に、再び誤差勾配が大きく減少する可能性を考慮することができる。そのため、パラメータ改善の機会を失うリスクを低減でき、モデルの予測精度が向上する。
また、採用割合が機械学習の進行に伴って単調に増加するため、実質的に学習が行われなくなった層が徐々に増加するという機械学習の長期的トレンドを、スキップ制御に反映させることができる。よって、計算量の削減とモデル精度の向上のバランスを図ることができる。また、スキップ候補は、学習率が設定または変更された直後の初期誤差勾配に応じた閾値を、誤差勾配差分が超えるという収束条件に基づいて、選択することが可能である。これにより、同一の学習率のもとでの誤差勾配のレベルに応じた適切な収束判定が可能となる。また、学習率が変更されて誤差勾配が再び減少することが期待される場合には、各層の誤差勾配の計算、GPU間通信および重みの更新が再開される。
以上の第1、第2の実施の形態を含む実施の形態に関し、更に以下の付記を開示する。
(付記1) コンピュータに、
それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いて前記モデルの出力の誤差を算出し、前記誤差に基づいて前記複数の層それぞれの前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、
前記学習処理の第1のイテレーションの実行結果に基づいて、前記複数の層のうち前記パラメータの値の更新を抑止する候補を示す2以上の候補層を選択し、
前記第1のイテレーションまでのイテレーションの実行回数に基づいて、前記実行回数が多いほど大きい割合値を算出し、前記2以上の候補層のうち前記割合値に応じた個数の層に対して、前記第1のイテレーションより後の第2のイテレーションにおいて前記パラメータの値の更新を抑止することを決定する、
処理を実行させる学習プログラム。
(付記2) 前記割合値に応じた個数は、候補層の個数に前記割合値を乗じて算出される、
付記1記載の学習プログラム。
(付記3) 前記実行回数に対応する前記割合値は、シグモイド曲線に基づいて算出される、
付記1記載の学習プログラム。
(付記4) 前記2以上の候補層のうち前記割合値に応じた個数の層以外の残りの層に対しては、前記第2のイテレーションにおいて前記パラメータの値の更新が実行される、
付記1記載の学習プログラム。
(付記5) 前記学習処理は、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新することを含み、
前記2以上の候補層の選択では、前記複数の層それぞれに対してイテレーション間の前記誤差勾配の変化量を監視し、前記変化量が閾値未満の層を選択する、
付記1記載の学習プログラム。
(付記6) 前記モデルは、多層ニューラルネットワークである、
付記1記載の学習プログラム。
(付記7) 前記学習処理は、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新することを含み、
前記コンピュータに更に、前記複数の層それぞれに対して、前記第1のイテレーションまでのイテレーションにおける前記誤差勾配の平均を算出する処理を実行させ、
前記割合値に応じた個数の層は、前記誤差勾配の平均に基づいて決定される、
付記1記載の学習プログラム。
(付記8) 前記学習処理は、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新することを含み、
前記コンピュータに更に、前記複数の層それぞれに対して、イテレーション間の前記誤差勾配の変化量を監視し、前記第1のイテレーションまでの前記変化量の平均を算出する処理を実行させ、
前記割合値に応じた個数の層は、前記変化量の平均に基づいて決定される、
付記1記載の学習プログラム。
(付記9) 前記複数の層は、それぞれ2以上の層を含む複数のブロックに分類されており、
前記割合値に応じた個数の層は、属するブロックの同一性に基づいて決定される、
付記1記載の学習プログラム。
(付記10) 前記割合値に応じた個数の層は、層間の間隔に基づいて決定される、
付記1記載の学習プログラム。
(付記11) 前記割合値に応じた個数の層は、前記モデルの入力からの近さに基づいて決定される、
付記1記載の学習プログラム。
(付記12) コンピュータが、
それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いて前記モデルの出力の誤差を算出し、前記誤差に基づいて前記複数の層それぞれの前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、
前記学習処理の第1のイテレーションの実行結果に基づいて、前記複数の層のうち前記パラメータの値の更新を抑止する候補を示す2以上の候補層を選択し、
前記第1のイテレーションまでのイテレーションの実行回数に基づいて、前記実行回数が多いほど大きい割合値を算出し、前記2以上の候補層のうち前記割合値に応じた個数の層に対して、前記第1のイテレーションより後の第2のイテレーションにおいて前記パラメータの値の更新を抑止することを決定する、
学習方法。
(付記13) それぞれパラメータを含む複数の層を含むモデルと訓練データとを記憶する記憶部と、
前記訓練データを用いて前記モデルの出力の誤差を算出し、前記誤差に基づいて前記複数の層それぞれの前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、前記学習処理の第1のイテレーションの実行結果に基づいて、前記複数の層のうち前記パラメータの値の更新を抑止する候補を示す2以上の候補層を選択し、前記第1のイテレーションまでのイテレーションの実行回数に基づいて、前記実行回数が多いほど大きい割合値を算出し、前記2以上の候補層のうち前記割合値に応じた個数の層に対して、前記第1のイテレーションより後の第2のイテレーションにおいて前記パラメータの値の更新を抑止することを決定する処理部と、
を有する情報処理装置。
10 情報処理装置
11 記憶部
12 処理部
13 モデル
13a,13b,13c 層
14a,14b,14c パラメータ
15 訓練データ
16 学習処理
16a,16b イテレーション
17 割合値

Claims (9)

  1. コンピュータに、
    それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いて前記モデルの出力の誤差を算出し、前記誤差に基づいて前記複数の層それぞれの前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、
    前記学習処理の第1のイテレーションの実行結果に基づいて、前記複数の層のうち前記パラメータの値の更新を抑止する候補を示す2以上の候補層を選択し、
    前記第1のイテレーションまでのイテレーションの実行回数に基づいて、前記実行回数が多いほど大きい割合値を算出し、前記2以上の候補層のうち前記割合値に応じた個数の層に対して、前記第1のイテレーションより後の第2のイテレーションにおいて前記パラメータの値の更新を抑止することを決定する、
    処理を実行させる学習プログラム。
  2. 前記割合値に応じた個数は、候補層の個数に前記割合値を乗じて算出される、
    請求項1記載の学習プログラム。
  3. 前記実行回数に対応する前記割合値は、シグモイド曲線に基づいて算出される、
    請求項1記載の学習プログラム。
  4. 前記2以上の候補層のうち前記割合値に応じた個数の層以外の残りの層に対しては、前記第2のイテレーションにおいて前記パラメータの値の更新が実行される、
    請求項1記載の学習プログラム。
  5. 前記学習処理は、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新することを含み、
    前記2以上の候補層の選択では、前記複数の層それぞれに対してイテレーション間の前記誤差勾配の変化量を監視し、前記変化量が閾値未満の層を選択する、
    請求項1記載の学習プログラム。
  6. 前記学習処理は、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新することを含み、
    前記コンピュータに更に、前記複数の層それぞれに対して、前記第1のイテレーションまでのイテレーションにおける前記誤差勾配の平均を算出する処理を実行させ、
    前記割合値に応じた個数の層は、前記誤差勾配の平均に基づいて決定される、
    請求項1記載の学習プログラム。
  7. 前記学習処理は、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新することを含み、
    前記コンピュータに更に、前記複数の層それぞれに対して、イテレーション間の前記誤差勾配の変化量を監視し、前記第1のイテレーションまでの前記変化量の平均を算出する処理を実行させ、
    前記割合値に応じた個数の層は、前記変化量の平均に基づいて決定される、
    請求項1記載の学習プログラム。
  8. コンピュータが、
    それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いて前記モデルの出力の誤差を算出し、前記誤差に基づいて前記複数の層それぞれの前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、
    前記学習処理の第1のイテレーションの実行結果に基づいて、前記複数の層のうち前記パラメータの値の更新を抑止する候補を示す2以上の候補層を選択し、
    前記第1のイテレーションまでのイテレーションの実行回数に基づいて、前記実行回数が多いほど大きい割合値を算出し、前記2以上の候補層のうち前記割合値に応じた個数の層に対して、前記第1のイテレーションより後の第2のイテレーションにおいて前記パラメータの値の更新を抑止することを決定する、
    学習方法。
  9. それぞれパラメータを含む複数の層を含むモデルと訓練データとを記憶する記憶部と、
    前記訓練データを用いて前記モデルの出力の誤差を算出し、前記誤差に基づいて前記複数の層それぞれの前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、前記学習処理の第1のイテレーションの実行結果に基づいて、前記複数の層のうち前記パラメータの値の更新を抑止する候補を示す2以上の候補層を選択し、前記第1のイテレーションまでのイテレーションの実行回数に基づいて、前記実行回数が多いほど大きい割合値を算出し、前記2以上の候補層のうち前記割合値に応じた個数の層に対して、前記第1のイテレーションより後の第2のイテレーションにおいて前記パラメータの値の更新を抑止することを決定する処理部と、
    を有する情報処理装置。
JP2020109935A 2020-06-25 2020-06-25 学習プログラム、学習方法および情報処理装置 Withdrawn JP2022007168A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020109935A JP2022007168A (ja) 2020-06-25 2020-06-25 学習プログラム、学習方法および情報処理装置
EP21167148.2A EP3929823A1 (en) 2020-06-25 2021-04-07 Program, learning method, and information processing apparatus
US17/226,279 US20210406683A1 (en) 2020-06-25 2021-04-09 Learning method and information processing apparatus
CN202110405415.7A CN113850364A (zh) 2020-06-25 2021-04-15 非暂态计算机可读记录介质、学习方法和信息处理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020109935A JP2022007168A (ja) 2020-06-25 2020-06-25 学習プログラム、学習方法および情報処理装置

Publications (1)

Publication Number Publication Date
JP2022007168A true JP2022007168A (ja) 2022-01-13

Family

ID=75426446

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020109935A Withdrawn JP2022007168A (ja) 2020-06-25 2020-06-25 学習プログラム、学習方法および情報処理装置

Country Status (4)

Country Link
US (1) US20210406683A1 (ja)
EP (1) EP3929823A1 (ja)
JP (1) JP2022007168A (ja)
CN (1) CN113850364A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6753442B2 (ja) * 2018-09-10 2020-09-09 日本電気株式会社 モデル生成装置、モデル生成方法、及びプログラム
US11922314B1 (en) * 2018-11-30 2024-03-05 Ansys, Inc. Systems and methods for building dynamic reduced order physical models
CN111935179B (zh) * 2020-09-23 2021-01-12 支付宝(杭州)信息技术有限公司 一种基于可信执行环境的模型训练方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107203891A (zh) 2016-03-17 2017-09-26 阿里巴巴集团控股有限公司 一种自动多阀值特征过滤方法及装置
JP6831347B2 (ja) 2018-04-05 2021-02-17 日本電信電話株式会社 学習装置、学習方法および学習プログラム

Also Published As

Publication number Publication date
US20210406683A1 (en) 2021-12-30
CN113850364A (zh) 2021-12-28
EP3929823A1 (en) 2021-12-29

Similar Documents

Publication Publication Date Title
JP6697159B2 (ja) 機械学習管理プログラム、機械学習管理装置および機械学習管理方法
JP2022007168A (ja) 学習プログラム、学習方法および情報処理装置
JP6703264B2 (ja) 機械学習管理プログラム、機械学習管理方法および機械学習管理装置
US11538237B2 (en) Utilizing artificial intelligence to generate and update a root cause analysis classification model
JP2017097585A (ja) 学習装置、プログラム及び学習方法
WO2020050886A1 (en) Compiler-level general matrix multiplication configuration optimization
JP7295431B2 (ja) 学習プログラム、学習方法および学習装置
US20210397948A1 (en) Learning method and information processing apparatus
WO2021105313A1 (en) Parallelised training of machine learning models
EP3973712A1 (en) Small and fast video processing networks via neural architecture search
CN112990461B (zh) 构建神经网络模型的方法、装置、计算机设备和存储介质
JP7283320B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP2023061477A (ja) プログラム、データ処理方法及びデータ処理装置
JP7208528B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
CN113761783A (zh) 信息处理设备、信息处理方法以及计算机可读存储介质
CN117009092B (zh) 基于多重多臂老虎机的编译时间资源动态分配方法及系统
JP7436830B2 (ja) 学習プログラム、学習方法、および学習装置
KR102538475B1 (ko) 사전 정의 작업 기반 데이터 선별 방법, 이를 이용한 능동 학습 방법, 그리고 이를 구현한 컴퓨팅 장치
US20230023241A1 (en) Computer-readable recording medium storing machine learning program, information processing device, and machine learning method
CN116974729B (zh) 大数据作业的任务调度方法、装置及电子设备和存储介质
US20210089885A1 (en) Training device and training method
US20230334315A1 (en) Information processing apparatus, control method of information processing apparatus, and storage medium
US20240028902A1 (en) Learning apparatus and method
US20230168873A1 (en) Scheduling apparatus, training apparatus, scheduler and generation method
JP2023040492A (ja) 高速化プログラム、高速化方法および情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230309

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240129