JP2021197108A - 学習プログラム、学習方法および情報処理装置 - Google Patents
学習プログラム、学習方法および情報処理装置 Download PDFInfo
- Publication number
- JP2021197108A JP2021197108A JP2020105655A JP2020105655A JP2021197108A JP 2021197108 A JP2021197108 A JP 2021197108A JP 2020105655 A JP2020105655 A JP 2020105655A JP 2020105655 A JP2020105655 A JP 2020105655A JP 2021197108 A JP2021197108 A JP 2021197108A
- Authority
- JP
- Japan
- Prior art keywords
- layer
- iteration
- error
- error gradient
- gradient
- 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
Links
- 238000000034 method Methods 0.000 title claims description 61
- 238000012545 processing Methods 0.000 claims abstract description 54
- 238000004364 calculation method Methods 0.000 claims abstract description 36
- 238000012549 training Methods 0.000 claims abstract description 30
- 230000010365 information processing Effects 0.000 claims description 51
- 230000008569 process Effects 0.000 claims description 42
- 238000013528 artificial neural network Methods 0.000 claims description 30
- 238000004891 communication Methods 0.000 claims description 21
- 230000001629 suppression Effects 0.000 claims 2
- 238000010801 machine learning Methods 0.000 description 44
- 238000011176 pooling Methods 0.000 description 16
- 230000008859 change Effects 0.000 description 13
- 238000012544 monitoring process Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/211—Selection of the most significant subset of features
- G06F18/2115—Selection of the most significant subset of features by evaluating different subsets according to an optimisation criterion, e.g. class separability, forward selection or backward elimination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
【課題】複数の層を含むモデルのパラメータ更新の計算量を削減する。【解決手段】記憶部は、それぞれパラメータを含む複数の層を含むモデルと訓練データとを記憶する。処理部は、訓練データを用いてモデルの出力の誤差を算出し、複数の層それぞれについて、パラメータに対する誤差の勾配を示す誤差勾配を算出し、誤差勾配に基づいてパラメータの値を更新する、ことを反復的に実行する学習処理を開始する。処理部は、複数の層のうちの第1の層に対して、学習処理の第1のイテレーションで算出された第1の誤差勾配と第1のイテレーションより後の第2のイテレーションで算出された第2の誤差勾配との間の差分を算出する。処理部は、差分が閾値未満である場合、第2のイテレーションより後の第3のイテレーションにおいて、第1の層の誤差勾配の算出およびパラメータの値の更新を抑止する。【選択図】図7
Description
本発明は学習プログラム、学習方法および情報処理装置に関する。
情報処理装置を利用したデータ分析として、機械学習が行われることがある。機械学習では、既知の事例を示す訓練データが収集される。情報処理装置は、訓練データを分析して、要因(説明変数や独立変数と言うことがある)と結果(目的変数や従属変数と言うことがある)との間の関係を一般化したモデルを生成する。情報処理装置は、生成されたモデルを用いて、未知の事例についての結果を予測する。例えば、画像に写った物体の種類を判定するための画像認識モデルが生成される。
情報処理装置は、複数の層を含むモデルを生成することがある。例えば、機械学習は、多層ニューラルネットワークを生成する深層学習(ディープラーニング)であることがある。このとき、情報処理装置は、イテレーションを繰り返すことで、各層に含まれるパラメータの最適値を探索することがある。各イテレーションにおいて、情報処理装置は、訓練データを用いてモデルの出力の誤差を評価し、パラメータに対する誤差の勾配である誤差勾配を算出し、誤差勾配に基づいてパラメータの値を更新することがある。例えば、パラメータ最適化に誤差逆伝播法が用いられる。
なお、訓練データに含まれる複数の説明変数のうち、一部の説明変数を自動的に機械学習から除外する特徴フィルタリング方法が提案されている。提案の特徴フィルタリング方法は、1つ前のイテレーションで算出された勾配に基づいて、説明変数の値に対するフィルタリング閾値を決定する。また、多層ニューラルネットワークを生成する機械学習において、一部の層を自動的に削除する学習装置が提案されている。提案の学習装置は、多層ニューラルネットワークの出力に対する寄与度を複数の層それぞれについて算出し、寄与度の小さい層を削除して機械学習を再度実行する。
複数の層を含むモデルを生成する機械学習では、パラメータの値の収束が全ての層で均等に進行するとは限らない。イテレーション数の増加に伴って、一部の層のパラメータの値が先に収束することがある。例えば、多層ニューラルネットワークでは、入力側の層のパラメータの値が、出力側の層のパラメータの値よりも早く収束することがある。
これに対して従来の機械学習では、各イテレーションにおいて全ての層のパラメータの値が更新される。このため、一部の層では、1回のイテレーションの前後でパラメータの値がほとんど変化しないか全く変化しないことがある。よって、結果的に無駄なパラメータ更新が発生して、機械学習の計算量が過大になっているという問題がある。
そこで、1つの側面では、本発明は、複数の層を含むモデルのパラメータ更新の計算量を削減する学習プログラム、学習方法および情報処理装置を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させる学習プログラムが提供される。それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いてモデルの出力の誤差を算出し、複数の層それぞれについて、パラメータに対する誤差の勾配を示す誤差勾配を算出し、誤差勾配に基づいてパラメータの値を更新する、ことを反復的に実行する学習処理を開始する。複数の層のうちの第1の層に対して、学習処理の第1のイテレーションで算出された第1の誤差勾配と第1のイテレーションより後の第2のイテレーションで算出された第2の誤差勾配との間の差分を算出する。差分が閾値未満である場合、第2のイテレーションより後の第3のイテレーションにおいて、第1の層の誤差勾配の算出およびパラメータの値の更新を抑止する。
また、1つの態様では、コンピュータが実行する学習方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
1つの側面では、複数の層を含むモデルのパラメータ更新の計算量が削減される。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置を説明するための図である。
情報処理装置10は、機械学習によって、訓練データから複数の層を含むモデルを生成する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10は、コンピュータや機械学習装置などと呼ばれてもよい。
情報処理装置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は、説明変数の値から目的変数の値を予測する予測モデルである。モデル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は、誤差勾配に学習率を乗じた分だけパラメータの値を変化させる。学習率は、機械学習の挙動を制御するハイパーパラメータであり、ユーザから与えられてもよい。
ここで、学習処理16の途中において、処理部12は、モデル13に含まれる複数の層のうちの一部の層について、誤差勾配の算出およびパラメータの値の更新を抑止することがある。ある層の処理の抑止は、当該層のスキップと呼ばれてもよい。以下の説明では、処理部12は、層13bの処理を抑止するか否か判定する。処理部12は、他の層に対して層13bと同様の判定を行ってもよい。また、処理部12は、イテレーション16aとその後のイテレーション16bとを実行済みであり、その後のイテレーション16cは未実行であるとする。イテレーション16bはイテレーション16aの直後であってもよく、イテレーション16cはイテレーション16bの直後であってもよい。
処理部12は、イテレーション16aで層13bに対して算出された誤差勾配17aと、イテレーション16bで層13bに対して算出された誤差勾配17bとを取得する。処理部12は、誤差勾配17aと誤差勾配17bとの間の差分17を算出する。差分17は、誤差勾配17aの絶対値から誤差勾配17bの絶対値を引いた数値でもよい。また、層13bが2以上のパラメータを含む場合、差分17は、それら2以上のパラメータに対応する2以上の誤差勾配の絶対値の平均の変化量であってもよい。
処理部12は、差分17と閾値18とを比較する。閾値18は、機械学習の開始前に指定される固定値であってもよい。また、閾値18は、誤差勾配17a,17bの少なくとも一方に基づいて算出されてもよい。また、閾値18は、学習処理16の先頭のイテレーションで層13bに対して算出された誤差勾配(初期誤差勾配)に基づいて算出されてもよい。例えば、閾値18は初期誤差勾配の5%であってもよい。
差分17が閾値18以上である場合、処理部12は、イテレーション16cにおいて、層13bの誤差勾配の算出およびパラメータ14bの値の更新を実行する。一方、差分17が閾値18未満である場合、処理部12は、イテレーション16cにおいて、層13bの誤差勾配の算出およびパラメータ14bの値の更新を抑止する。よって、イテレーション16cではパラメータ14bの値が変化しない。処理部12は、層13a,13b,13cのうち層13bのみ処理を抑止してもよい。誤差逆伝播法の場合、処理部12は、イテレーション16bで算出された誤差勾配17bを、層13bから層13aに伝播させてもよい。これにより、イテレーション16cにおける層13aの処理が可能となる。
第1の実施の形態の情報処理装置10によれば、イテレーション16aで算出された層13bの誤差勾配17aとイテレーション16bで算出された層13bの誤差勾配17bとの間の差分17が算出される。そして、差分17が閾値18未満である場合、後続のイテレーション16cでは、層13bの誤差勾配の算出およびパラメータ14bの値の更新が抑止される。これにより、パラメータ最適化が他の層よりも早く収束してパラメータの値が改善しなくなった層については、無駄なパラメータ更新が抑止される。よって、機械学習における無駄な処理が削減され、計算量が削減される。また、その結果として、モデル13を生成する機械学習の実行時間が短縮される。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第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が実行するプログラムには、機械学習用のライブラリプログラムやユーザのアプリケーションプログラムが含まれる。
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以外の出力デバイスが接続されてもよい。
画像インタフェース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は、多層ニューラルネットワークの構造例を示す図である。
第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,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は、全ての重みに対して算出される誤差勾配の絶対値の平均を示している。
前述の図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の誤差勾配を算出する。
多層ニューラルネットワーク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では、層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をスキップ対象に指定する。
エポック#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以上になることがある。
図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は、学習率が変更されたときにスキップ層の指定を解除する。
次に、情報処理装置100の機能および処理手順について説明する。
図9は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、訓練データ記憶部121、モデル記憶部122および誤差勾配記憶部123を有する。これらの記憶部は、例えば、GPUメモリ105の記憶領域を用いて実現される。ただし、RAM102の記憶領域が使用されてもよい。また、情報処理装置100は、イテレーション実行部130、スキップ制御部140および学習率制御部151を有する。これらの処理部は、例えば、GPU104−1,104−2,104−3,104−4それぞれが実行するプログラムを用いて実現される。ただし、CPU101で実行されるプログラムが使用されてもよい。
図9は、情報処理装置の機能例を示すブロック図である。
情報処理装置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を有する。誤差勾配監視部141は、BACKWARD部132から、イテレーション毎に各エッジの重みの誤差勾配を取得する。誤差勾配監視部141は、各層の誤差勾配を算出して誤差勾配記憶部123に登録する。また、誤差勾配監視部141は、層毎に誤差勾配差分を算出してスキップ層決定部143に提供する。また、誤差勾配監視部141は、各層の初期誤差勾配を閾値算出部142に提供する。
スキップ制御部140は、誤差勾配監視部141、閾値算出部142およびスキップ層決定部143を有する。誤差勾配監視部141は、BACKWARD部132から、イテレーション毎に各エッジの重みの誤差勾配を取得する。誤差勾配監視部141は、各層の誤差勾配を算出して誤差勾配記憶部123に登録する。また、誤差勾配監視部141は、層毎に誤差勾配差分を算出してスキップ層決定部143に提供する。また、誤差勾配監視部141は、各層の初期誤差勾配を閾値算出部142に提供する。
閾値算出部142は、新たな学習率が設定される毎かつ層毎に、誤差勾配監視部141から提供された初期誤差勾配に基づいて閾値を算出する。閾値は、例えば、初期誤差勾配に、ハイパーパラメータとしてユーザから指定された比率(例えば、5%)を乗じた値である。閾値算出部142は、各層の閾値をスキップ層決定部143に通知する。スキップ層決定部143は、イテレーション毎かつ層毎に、誤差勾配監視部141から提供された誤差勾配差分と閾値算出部142から通知された閾値とを比較する。スキップ層決定部143は、誤差勾配差分が閾値未満である層を特定する。
スキップ層決定部143は、COMMUNICATE部133に、誤差勾配差分が閾値未満である層の情報をGPU間で共有させる。スキップ層決定部143は、所定の投票アルゴリズムに基づいて、誤差勾配差分が閾値未満である層をスキップ層に指定する。スキップ層は、全てのGPUで誤差勾配差分が閾値未満であった層でもよいし、少なくも1つのGPUで誤差勾配差分が閾値未満であった層でもよいし、過半数のGPUで誤差勾配が閾値未満であった層でもよい。スキップ層決定部143は、スキップ層に指定した層を、BACKWARD部132、COMMUNICATE部133およびUPDATE部134に通知する。
学習率制御部151は、ハイパーパラメータとしてユーザから指定された学習率の初期値を、UPDATE部134に通知する。また、学習率制御部151は、実行済みのエポック数をカウントし、エポック数が所定数に達したときに学習率を変更する。例えば、学習率制御部151は、学習率変更の契機毎に、学習率を現在の10分の1に下げる。学習率制御部151は、変更後の学習率をUPDATE部134に通知する。
図10は、誤差勾配テーブルの例を示す図である。
誤差勾配テーブル124は、誤差勾配記憶部123に記憶される。誤差勾配テーブル124には、50個の層それぞれについて、層番号、初期誤差勾配および前回誤差勾配が登録される。層番号は、層を識別する識別番号である。初期誤差勾配は、新たな学習率(学習率の初期値または変更後の学習率)が設定された直後のイテレーションで算出された誤差勾配である。前回誤差勾配は、1つ前のイテレーションで算出された誤差勾配である。
誤差勾配テーブル124は、誤差勾配記憶部123に記憶される。誤差勾配テーブル124には、50個の層それぞれについて、層番号、初期誤差勾配および前回誤差勾配が登録される。層番号は、層を識別する識別番号である。初期誤差勾配は、新たな学習率(学習率の初期値または変更後の学習率)が設定された直後のイテレーションで算出された誤差勾配である。前回誤差勾配は、1つ前のイテレーションで算出された誤差勾配である。
イテレーションmの誤差勾配が算出される前は、誤差勾配テーブル124には、前回誤差勾配としてイテレーションm−1の誤差勾配が登録されている。イテレーションmの誤差勾配が算出されると、誤差勾配テーブル124には、前回誤差勾配としてイテレーションmの誤差勾配が上書きされる。このとき、イテレーションm−1の誤差勾配とイテレーションmの誤差勾配の差が、誤差勾配差分として算出される。なお、誤差勾配テーブル124に登録される各層の誤差勾配は、BACKWARDフェーズの結果から、その層に含まれる複数の重みに対応する複数の誤差勾配の絶対値の平均として算出される。
図11は、機械学習の手順例を示すフローチャートである。
この機械学習の手順は、例えば、複数のGPUにおいて並列に実行される。
(S10)学習率制御部151は、学習率の初期値を設定する。
この機械学習の手順は、例えば、複数のGPUにおいて並列に実行される。
(S10)学習率制御部151は、学習率の初期値を設定する。
(S11)イテレーション実行部130は、訓練データからサンプルを抽出する。FORWARD部131は、抽出されたサンプルを用いてFORWARDフェーズを実行する。FORWARDフェーズでは、FORWARD部131は、サンプルに含まれる入力データをモデルに入力し、サンプルに含まれる教師ラベルとモデルの出力との間の誤差を算出する。
(S12)BACKWARD部132は、出力に近い方から優先的に層を1つ選択する。
(S13)BACKWARD部132は、ステップS12で選択した層がスキップ層に指定されているか判断する。選択した層がスキップ層である場合はステップS15に進み、選択した層がスキップ層でない場合はステップS14に進む。
(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%を閾値と規定する。そして、ステップS22に進む。
(S19)閾値算出部142は、初期誤差勾配から閾値を算出する。例えば、閾値算出部142は、初期誤差勾配の5%を閾値と規定する。そして、ステップS22に進む。
(S20)誤差勾配監視部141は、層毎に、誤差勾配テーブル124に登録された前回誤差勾配から、ステップS16で算出した誤差勾配を引いて誤差勾配差分を算出する。また、誤差勾配監視部141は、ステップS16で算出した誤差勾配を、前回誤差勾配として誤差勾配テーブル124に上書きする。
(S21)スキップ層決定部143は、複数の層の中から、ステップS20で算出された誤差勾配差分が、閾値算出部142で算出された閾値未満である層を特定する。
図12は、機械学習の手順例を示すフローチャート(続き)である。
図12は、機械学習の手順例を示すフローチャート(続き)である。
(S22)COMMUNICATE部133は、層を1つ選択する。
(S23)COMMUNICATE部133は、ステップS22で選択した層がスキップ層に指定されているか判断する。選択した層がスキップ層である場合はステップS25に進み、選択した層がスキップ層でない場合はステップS24に進む。
(S23)COMMUNICATE部133は、ステップS22で選択した層がスキップ層に指定されているか判断する。選択した層がスキップ層である場合はステップS25に進み、選択した層がスキップ層でない場合はステップS24に進む。
(S24)COMMUNICATE部133は、選択した層に対してCOMMUNICATEフェーズの処理を実行する。ここでは、COMMUNICATE部133は、GPU間のAllReduce通信により、複数のGPUで算出された誤差勾配をエッジの重み毎に合計する。COMMUNICATE部133は、誤差勾配の合計をGPUの個数で割ることで、誤差勾配の平均を算出する。これにより、複数のGPUの間で誤差勾配が集計される。また、COMMUNICATE部133は、GPU間通信によって、誤差勾配差分が閾値未満の層の情報を収集する。
(S25)COMMUNICATE部133は、ステップS22において全ての層を選択したか判断する。全ての層を選択した場合はステップS26に進み、未選択の層がある場合はステップS22に戻る。なお、COMMUNICATE部133は、複数の層を順方向(入力から出力の方向)に選択してもよいし、逆方向(出力から入力の方向)に選択してもよい。また、COMMUNICATE部133は、複数の層のCOMMUNICATEフェーズを並列に実行してもよい。
(S26)UPDATE部134は、層を1つ選択する。
(S27)UPDATE部134は、ステップS26で選択した層がスキップ層に指定されているか判断する。選択した層がスキップ層である場合はステップS29に進み、選択した層がスキップ層でない場合はステップS28に進む。
(S27)UPDATE部134は、ステップS26で選択した層がスキップ層に指定されているか判断する。選択した層がスキップ層である場合はステップS29に進み、選択した層がスキップ層でない場合はステップS28に進む。
(S28)UPDATE部134は、選択した層に対してUPDATEフェーズの処理を実行する。ここでは、UPDATE部134は、選択した層に属するエッジの重みを、COMMUNICATEフェーズで集計された誤差勾配と現在の学習率とに基づいて更新する。例えば、UPDATE部134は、誤差勾配に学習率を乗じて減算値を算出し、現在の重みから減算値を引く。
(S29)UPDATE部134は、ステップS26において全ての層を選択したか判断する。全ての層を選択した場合はステップS30に進み、未選択の層がある場合はステップS26に戻る。なお、UPDATE部134は、複数の層を順方向(入力から出力の方向)に選択してもよいし、逆方向(出力から入力の方向)に選択してもよい。
(S30)スキップ層決定部143は、ステップS24で収集された情報に基づいて、GPU間の合意としてスキップ層を決定する。誤差勾配差分が閾値未満である層の発生状況がGPU間で一致している場合、スキップ層決定部143は、誤差勾配差分が閾値未満である層をスキップ層に指定する。誤差勾配差分が閾値未満である層の発生状況がGPU間で相違する場合、スキップ層決定部143は、所定の投票アルゴリズムに従って、各層をスキップ層に指定するか否か決定する。
(S31)イテレーション実行部130は、今回のイテレーションで全てのエポックが終了したか判断する。例えば、イテレーション実行部130は、760イテレーション×60エポックが終了したか判断する。全てのエポックが終了した場合は機械学習が停止し、それ以外の場合はステップS32に進む。
(S32)学習率制御部151は、区切りとなる所定のエポック数に到達したか判断する。所定のエポック数は、複数個あってもよい。所定のエポック数に到達した場合はステップS33に進み、それ以外の場合はステップS11に戻る。
(S33)学習率制御部151は、学習率を1段階下げる。例えば、学習率制御部151は、学習率を現在の10分の1に変更する。学習率が変更されると、スキップ層決定部143は、スキップ層の指定を解除する。これにより、次のイテレーションでは、全ての層に対してBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズが実行される。そして、ステップS11に戻る。
第2の実施の形態の情報処理装置100によれば、各層について、前回のイテレーションと今回のイテレーションとの間の誤差勾配差分が算出される。また、各層について、学習率が設定または変更された直後の初期誤差勾配から閾値が算出される。そして、誤差勾配差分が閾値未満の層がスキップ層に指定され、学習率が変更されるまで、スキップ層のBACKWARDフェーズ、COMMUNICATEフェーズおよびUPDATEフェーズの処理が省略される。
これにより、現在の学習率のもとで誤差勾配が収束して実質的に学習が行われなくなった層について、誤差勾配の計算、GPU間通信および重みの更新が停止する。よって、機械学習における無駄な処理が削減され、計算量が削減される。その結果、機械学習の実行時間が短縮される。また、学習率が変更されて誤差勾配が再び減少することが期待される場合には、各層の誤差勾配の計算、GPU間通信および重みの更新が再開される。また、学習率毎かつ層毎に、初期誤差勾配に基づいて閾値を決定することで、同一の学習率のもとでの誤差勾配のレベルに応じた適切な収束判定が可能となる。
10 情報処理装置
11 記憶部
12 処理部
13 モデル
13a,13b,13c 層
14a,14b,14c パラメータ
15 訓練データ
16 学習処理
16a,16b,16c イテレーション
17 差分
17a,17b 誤差勾配
18 閾値
11 記憶部
12 処理部
13 モデル
13a,13b,13c 層
14a,14b,14c パラメータ
15 訓練データ
16 学習処理
16a,16b,16c イテレーション
17 差分
17a,17b 誤差勾配
18 閾値
Claims (9)
- コンピュータに、
それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いて前記モデルの出力の誤差を算出し、前記複数の層それぞれについて、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、
前記複数の層のうちの第1の層に対して、前記学習処理の第1のイテレーションで算出された第1の誤差勾配と前記第1のイテレーションより後の第2のイテレーションで算出された第2の誤差勾配との間の差分を算出し、
前記差分が閾値未満である場合、前記第2のイテレーションより後の第3のイテレーションにおいて、前記第1の層の前記誤差勾配の算出および前記パラメータの値の更新を抑止する、
処理を実行させる学習プログラム。 - 前記コンピュータに更に、前記学習処理の開始時のイテレーションで算出された前記誤差勾配を示す初期誤差勾配に基づいて、前記閾値を決定する処理を実行させる、
請求項1記載の学習プログラム。 - 前記コンピュータに更に、前記パラメータの値の更新に用いる学習率を設定し、前記学習処理の実行済みのイテレーション数に応じて前記学習率を変更する、処理を実行させ、
前記閾値の決定では、前記学習率の変更時のイテレーションで算出された前記誤差勾配を示す他の初期誤差勾配に基づいて、前記閾値を変更する、
請求項2記載の学習プログラム。 - 前記学習処理の各イテレーションでは、複数の処理ノードを用いて異なる訓練データから異なる誤差を算出し、前記複数の処理ノードを用いて前記異なる誤差から異なる誤差勾配を算出し、前記複数の処理ノード間の通信によって前記異なる誤差勾配を合成し、前記合成した誤差勾配に基づいて前記パラメータの値を更新し、
前記抑止では、前記第1の層の前記異なる誤差勾配の算出、前記複数の処理ノード間の通信および前記パラメータの値の更新を抑止する、
請求項1記載の学習プログラム。 - 前記モデルは、多層ニューラルネットワークである、
請求項1記載の学習プログラム。 - 前記第2のイテレーションは前記第1のイテレーションの直後であり、前記第3のイテレーションは前記第2のイテレーションの直後である、
請求項1記載の学習プログラム。 - 前記差分の算出では、前記複数の層それぞれに対して前記差分を算出し、
前記抑止では、前記複数の層のうち前記差分が前記閾値未満である層を特定し、前記特定した層の前記誤差勾配の算出および前記パラメータの値の更新を抑止する、
請求項1記載の学習プログラム。 - コンピュータが、
それぞれパラメータを含む複数の層を含むモデルを生成する学習処理であって、訓練データを用いて前記モデルの出力の誤差を算出し、前記複数の層それぞれについて、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、
前記複数の層のうちの第1の層に対して、前記学習処理の第1のイテレーションで算出された第1の誤差勾配と前記第1のイテレーションより後の第2のイテレーションで算出された第2の誤差勾配との間の差分を算出し、
前記差分が閾値未満である場合、前記第2のイテレーションより後の第3のイテレーションにおいて、前記第1の層の前記誤差勾配の算出および前記パラメータの値の更新を抑止する、
学習方法。 - それぞれパラメータを含む複数の層を含むモデルと訓練データとを記憶する記憶部と、
前記訓練データを用いて前記モデルの出力の誤差を算出し、前記複数の層それぞれについて、前記パラメータに対する前記誤差の勾配を示す誤差勾配を算出し、前記誤差勾配に基づいて前記パラメータの値を更新する、ことを反復的に実行する学習処理を開始し、前記複数の層のうちの第1の層に対して、前記学習処理の第1のイテレーションで算出された第1の誤差勾配と前記第1のイテレーションより後の第2のイテレーションで算出された第2の誤差勾配との間の差分を算出し、前記差分が閾値未満である場合、前記第2のイテレーションより後の第3のイテレーションにおいて、前記第1の層の前記誤差勾配の算出および前記パラメータの値の更新を抑止する処理部と、
を有する情報処理装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020105655A JP2021197108A (ja) | 2020-06-18 | 2020-06-18 | 学習プログラム、学習方法および情報処理装置 |
US17/197,099 US20210397948A1 (en) | 2020-06-18 | 2021-03-10 | Learning method and information processing apparatus |
EP21162287.3A EP3926547A1 (en) | 2020-06-18 | 2021-03-12 | Program, learning method, and information processing apparatus |
CN202110356122.4A CN113822411A (zh) | 2020-06-18 | 2021-04-01 | 学习方法和信息处理设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020105655A JP2021197108A (ja) | 2020-06-18 | 2020-06-18 | 学習プログラム、学習方法および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021197108A true JP2021197108A (ja) | 2021-12-27 |
Family
ID=74873564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020105655A Withdrawn JP2021197108A (ja) | 2020-06-18 | 2020-06-18 | 学習プログラム、学習方法および情報処理装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210397948A1 (ja) |
EP (1) | EP3926547A1 (ja) |
JP (1) | JP2021197108A (ja) |
CN (1) | CN113822411A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7021132B2 (ja) * | 2019-01-22 | 2022-02-16 | 株式会社東芝 | 学習装置、学習方法およびプログラム |
WO2023200752A1 (en) * | 2022-04-15 | 2023-10-19 | Nokia Technologies Oy | Model level update skipping in compressed incremental learning |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203891A (zh) | 2016-03-17 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种自动多阀值特征过滤方法及装置 |
JP6831347B2 (ja) | 2018-04-05 | 2021-02-17 | 日本電信電話株式会社 | 学習装置、学習方法および学習プログラム |
-
2020
- 2020-06-18 JP JP2020105655A patent/JP2021197108A/ja not_active Withdrawn
-
2021
- 2021-03-10 US US17/197,099 patent/US20210397948A1/en active Pending
- 2021-03-12 EP EP21162287.3A patent/EP3926547A1/en not_active Withdrawn
- 2021-04-01 CN CN202110356122.4A patent/CN113822411A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210397948A1 (en) | 2021-12-23 |
EP3926547A1 (en) | 2021-12-22 |
CN113822411A (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11762918B2 (en) | Search method and apparatus | |
JP6697159B2 (ja) | 機械学習管理プログラム、機械学習管理装置および機械学習管理方法 | |
US20170372230A1 (en) | Machine learning management method and machine learning management apparatus | |
US11842178B2 (en) | Compiler-level general matrix multiplication configuration optimization | |
EP3929823A1 (en) | Program, learning method, and information processing apparatus | |
WO2021143883A1 (zh) | 神经网络的自适应搜索方法及装置 | |
JP2017097585A (ja) | 学習装置、プログラム及び学習方法 | |
US11538237B2 (en) | Utilizing artificial intelligence to generate and update a root cause analysis classification model | |
US20220076123A1 (en) | Neural network optimization method, electronic device and processor | |
US11599073B2 (en) | Optimization apparatus and control method for optimization apparatus using ising models | |
JP7295431B2 (ja) | 学習プログラム、学習方法および学習装置 | |
US20210397948A1 (en) | Learning method and information processing apparatus | |
JP7248907B2 (ja) | 最適化装置および最適化装置の制御方法 | |
EP4280107A1 (en) | Data processing method and apparatus, device, and medium | |
CN112990461B (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
CN113095508A (zh) | 回归模型构建优化方法、设备、介质及计算机程序产品 | |
CN111985631B (zh) | 信息处理设备、信息处理方法及计算机可读记录介质 | |
CN114003306B (zh) | 一种显存优化方法、装置、设备及存储介质 | |
JP2023061477A (ja) | プログラム、データ処理方法及びデータ処理装置 | |
JP7436830B2 (ja) | 学習プログラム、学習方法、および学習装置 | |
US20230334315A1 (en) | Information processing apparatus, control method of information processing apparatus, and storage medium | |
US20230023241A1 (en) | Computer-readable recording medium storing machine learning program, information processing device, and machine learning method | |
CN113407192B (zh) | 模型部署方法和设备 | |
US20210089885A1 (en) | Training device and training method | |
US20240028902A1 (en) | Learning apparatus and method |
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 |