JP7295431B2 - 学習プログラム、学習方法および学習装置 - Google Patents

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

Info

Publication number
JP7295431B2
JP7295431B2 JP2019214496A JP2019214496A JP7295431B2 JP 7295431 B2 JP7295431 B2 JP 7295431B2 JP 2019214496 A JP2019214496 A JP 2019214496A JP 2019214496 A JP2019214496 A JP 2019214496A JP 7295431 B2 JP7295431 B2 JP 7295431B2
Authority
JP
Japan
Prior art keywords
block
learning
learning rate
parameter
model
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.)
Active
Application number
JP2019214496A
Other languages
English (en)
Other versions
JP2021086371A (ja
Inventor
雄高 甲斐
明彦 笠置
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 JP2019214496A priority Critical patent/JP7295431B2/ja
Priority to US17/065,554 priority patent/US20210158212A1/en
Priority to EP20202259.6A priority patent/EP3828776A1/en
Priority to CN202011202775.9A priority patent/CN112862087A/zh
Publication of JP2021086371A publication Critical patent/JP2021086371A/ja
Application granted granted Critical
Publication of JP7295431B2 publication Critical patent/JP7295431B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

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

Description

本発明は学習プログラム、学習方法および学習装置に関する。
コンピュータを利用したデータ分析の1つとして、機械学習が行われることがある。機械学習では、既知の事例を示す訓練データをコンピュータに入力する。コンピュータは、訓練データを分析して、要因(説明変数や独立変数と言うことがある)と結果(目的変数や従属変数と言うことがある)との間の関係を一般化したモデルを学習する。学習されたモデルを用いることで、未知の事例についての結果を予測することができる。例えば、手書き文字を認識する文字認識モデルが学習される。
モデルの予測精度を向上させるため、深層学習(ディープラーニング)によって学習される多層ニューラルネットワークなど、機械学習によって学習されるモデルは大規模化する傾向がある。大規模なモデルのパラメータを一から最適化することは、訓練データのサイズが大きくなると共に学習時間が長くなり非効率である。
そこで、パラメータが学習済みである既存モデルを取り込み、既存部分に追加部分を接続して拡張したモデルを生成する方法が考えられる。例えば、汎用的な画像認識モデルを取り込んで、手書き文字の認識に特化した文字認識モデルを生成する方法が考えられる。既存モデルを利用する機械学習では、追加部分のパラメータは一から最適化する一方、既存部分のパラメータは既存値から微修正する程度でよいことがある。
一例として、学習済みの既存ニューラルネットワークの後段に新規ニューラルネットワークを接続して機械学習を行う機械学習装置が提案されている。提案の機械学習装置は、訓練データを既存ニューラルネットワークに入力し、既存ニューラルネットワークの演算結果を新規ニューラルネットワークに入力して、新規ニューラルネットワークを学習する。機械学習装置は、機械学習の結果として新規ニューラルネットワークを出力する。
特開2017-182320号公報
機械学習では、一定単位の訓練データをモデルに入力し、モデルの出力の予測誤差を算出し、予測誤差が小さくなるようにモデルのパラメータを更新することを、異なる訓練データを用いて繰り返すことがある。このとき、モデルのパラメータの一回の更新量を調整するための「学習率」が、外部からハイパーパラメータとして与えられる。学習率が大きいほどパラメータの一回の更新量が大きくなり、学習率が小さいほどパラメータの一回の更新量が小さくなる。学習率は、機械学習の収束速度や最終的な精度に影響を与える。
学習するモデルが複数のブロックを含む場合、ブロックによって異なる学習率を設定することも可能である。例えば、モデルが既存部分と新規部分とを含む場合、既存部分に小さい学習率を設定し、新規部分に大きい学習率を設定することが考えられる。しかし、従来の機械学習では、複数のブロックにおいてパラメータの更新処理が同様に実行される。そのため、小さい学習率が設定されたブロックでは、更新前後でパラメータがほとんど変化しないことがあり、結果的に無駄な更新処理が生じているという問題がある。例えば、モデルの既存部分について更新処理を行っても、パラメータが変化しないことがある。
1つの側面では、本発明は、機械学習の計算量を削減する学習プログラム、学習方法および学習装置を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させる学習プログラムが提供される。第1のパラメータを含む第1のブロックおよび第2のパラメータを含む第2のブロックを含むモデルにおいて、第1のブロックに対して第1の学習率を設定し、第2のブロックに対して第1の学習率より小さい第2の学習率を設定する。訓練データを用いて算出されたモデルの予測誤差と第1の学習率とに基づいて第1のパラメータを更新し、予測誤差と第2の学習率とに基づいて第2のパラメータを更新する、ことを反復的に実行する学習処理を開始する。第1の学習率と第2の学習率との間の関係に応じて、学習処理において、第2のパラメータの更新を間欠的に省略することで、第2のパラメータの更新頻度が第1のパラメータより低くなるよう制御する。
また、1つの態様では、コンピュータが実行する学習方法が提供される。また、1つの態様では、記憶部と処理部とを有する学習装置が提供される。
1つの側面では、機械学習の計算量を削減できる。
第1の実施の形態の学習装置の例を説明する図である。 第2の実施の形態の学習装置のハードウェア例を示すブロック図である。 既存モデルと新規モデルの組み合わせ例を示す図である。 既存モデルおよび新規モデルの内容例を示すブロック図である。 ニューラルネットワークの学習例を示す図である。 誤差勾配および学習率に応じた重みの更新例を示す図である。 学習率および学習フェーズの例を示す図である。 複数のGPUによる並列処理の例を示す図である。 イテレーションに応じた学習率の変化例を示す図である。 学習率に応じた更新頻度の制御例を示す図である。 更新頻度テーブルの例を示す図である。 学習装置の機能例を示すブロック図である。 機械学習の手順例を示すフローチャートである。 機械学習の手順例を示すフローチャート(続き)である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の学習装置の例を説明する図である。
第1の実施の形態の学習装置10は、機械学習により訓練データ16を用いてモデル13を学習する。学習装置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および訓練データ16を記憶する。
モデル13は、機械学習によって学習されるモデルである。モデル13は、例えば、ニューラルネットワークである。モデル13は、ブロック14,15を含む。ブロック14,15はそれぞれ、モデル13の中のひとまとまりの要素集合であり、それ自体を「モデル」と言うこともある。ブロック14,15は、例えば、それぞれニューラルネットワークである。ブロック14,15は、モデル13の入力から出力までの間にデータが通過する経路上に位置する。例えば、ブロック14はブロック15よりもモデル13の入力に近く、ブロック15はブロック14よりもモデル13の出力に近い。モデル13の中で、ブロック14とブロック15とが接続されていてもよい。
ブロック14(ブロックA)は、機械学習によって学習されるパラメータ14aを含む。ブロック15(ブロックB)は、機械学習によって学習されるパラメータ15aを含む。パラメータ14aは、ブロック14の入力と出力との間の関係を規定する定数であり、パラメータ15aは、ブロック15の入力と出力との間の関係を規定する定数である。パラメータ14a,15aは、例えば、ニューラルネットワークの中のエッジ(シナプス)の重みである。
ここで、ブロック14が、学習済みの既存モデルに含まれるブロックを流用したものであってもよく、ブロック15が、今回の機械学習によって追加的に学習されるものであってもよい。すなわち、今回の機械学習が、既存モデルを拡張してモデル13を生成するものであってもよい。その場合、今回の機械学習の開始時点で、パラメータ14aは学習済みのものが使用され、パラメータ15aは所定値に初期化されることになる。ただし、学習済みのパラメータも今回の機械学習を通じて修正され得る。
訓練データ16は、モデル13の学習に使用される。訓練データ16は、モデル13の入力に相当する説明変数の値と、モデル13の出力に相当する目的変数の値とをそれぞれ対応付けた複数のレコードを含む。訓練データ16に含まれる目的変数の値は、モデル13の出力の正解を示す教師ラベルである。例えば、モデル13として、手書き文字の画像を入力として受け付け、認識された文字を出力する手書き文字認識モデルが考えられる。その場合、訓練データ16は、手書き文字の画像と正解の文字とを対応付けたデータである。なお、手書き文字認識モデルは、学習済みの汎用的な画像認識モデルに含まれるブロックの後段に、追加のブロックを接続することで生成することが可能である。
処理部12は、モデル13のブロック14に対して学習率14bを設定し、モデル13のブロック15に対して学習率15bを設定する。学習率14bは、パラメータ14aを更新する際の一回の更新量(更新前後の変化量)を調整するハイパーパラメータであり、学習率15bは、パラメータ15aを更新する際の一回の更新量を調整するハイパーパラメータである。学習率14bが大きいほどパラメータ14aの一回の更新量が大きくなり、学習率14bが小さいほどパラメータ14aの一回の更新量が小さくなる。また、学習率15bが大きいほどパラメータ15aの一回の更新量が大きくなり、学習率15bが小さいほどパラメータ15aの一回の更新量が小さくなる。
学習率は、モデル13の精度や機械学習の収束速度に影響を与える。学習率が大きすぎるとパラメータが最適解から乖離するリスクが高くなり、学習率が小さすぎるとパラメータが最適解に到達するまでの所要時間が長くなる。ここで、学習率14bを学習率15bより小さくする。多くの場合、モデル13の出力に近いブロックほど学習率を大きくすることが好ましく、モデル13の入力に近いブロックほど学習率を小さくすることが好ましい。また、今回の機械学習で追加する新規ブロックの学習率を大きくすることが好ましく、学習済みの既存ブロックの学習率を小さくすることが好ましい。学習率14b,15bは、ユーザによって指定されてもよい。また、後述する学習処理の途中で、学習率14b,15bを段階的に引き下げることも可能である。
学習率14b,15bが設定されると、処理部12は学習処理を開始する。学習処理では、訓練データ16を用いてパラメータ14a,15aを更新することを反復的に実行する。処理部12は、訓練データ16に含まれる説明変数の値をモデル13に入力し、モデル13の出力と訓練データ16に含まれる教師ラベルとの間の予測誤差を算出する。予測誤差は、出力と教師ラベルとの間の残差二乗和であってもよい。処理部12は、予測誤差が小さくなるように、予測誤差と学習率15bとに基づいてパラメータ15aを更新し、予測誤差と学習率14bとに基づいてパラメータ14aを更新する。
例えば、処理部12は、誤差逆伝播法によって、モデル13の出力から入力に向かって誤差情報を伝播し、パラメータ14a,15aそれぞれに対する誤差勾配を算出する。誤差勾配は、パラメータを単位量だけ変化させた場合の予測誤差の変化量の推定値である。処理部12は、例えば、パラメータ15aに対する誤差勾配に学習率15bを乗じた量だけパラメータ15aを変化させ、パラメータ14aに対する誤差勾配に学習率14bを乗じた量だけパラメータ14aを変化させる。学習率14bが十分に小さい場合、一回の更新ではパラメータ14aがほとんど変化しないこともあり、パラメータ14aが全く変化しないこともある。また、学習率14bが0の場合、パラメータ14aが全く変化しない。
学習処理の中で、処理部12は、パラメータ14a,15aの更新頻度を制御する。具体的には、処理部12は、学習率14bと学習率15bとの間の関係を判定する。例えば、処理部12は、学習率14bと学習率15bとの間の比率を算出する。処理部12は、学習率14bと学習率15bとの間の関係に応じて、小さい学習率をもつブロック14のパラメータ14aの更新を間欠的に省略し、パラメータ14aの更新頻度がパラメータ15aより低くなるよう制御する。学習率が小さいブロックほどパラメータの更新頻度を低くする。例えば、処理部12は、パラメータ14aとパラメータ15aの更新頻度の比率を、学習率14bと学習率15bとの間の比率に一致させる。
例えば、学習率15bと学習率14bの比率が2:1であるとする。この場合、処理部12は、パラメータ15aの更新2回につきパラメータ14aの更新を1回省略することで、パラメータ15aとパラメータ14aの更新頻度の比率を2:1にする。パラメータ14aの更新を省略する場合、ブロック14について、誤差逆伝播法のBackwardフェーズやUpdateフェーズを省略することが可能である。Backwardフェーズでは、誤差情報をニューラルネットワークの出力側から入力側に伝播する。Updateフェーズでは、誤差勾配と学習率からエッジの重みを更新する。
例えば、処理部12は、ブロック15について、誤差情報を出力側から入力側に伝播させて各エッジの誤差勾配を算出する。また、処理部12は、ブロック14について、2回に1回は誤差情報を出力側から入力側に伝播させて各エッジの誤差勾配を算出し、残りの2回に1回は誤差情報の伝播を省略する。処理部12は、ブロック15について、誤差勾配と学習率15bとから各エッジの重みを更新する。また、処理部12は、ブロック14について、2回に1回は誤差勾配と学習率14bとから各エッジの重みを更新し、残りの2回に1回は各エッジの重みの更新を省略する。パラメータ14aの更新を省略した場合、後続の入力データに対して古いパラメータ14aが引き続き使用されることになる。
第1の実施の形態の学習装置10によれば、モデル13のブロック15に対して学習率15bが設定され、モデル13のブロック14に対して学習率15bより小さい学習率14bが設定される。学習処理の中で、学習率14bと学習率15bとの違いに応じて、パラメータ14aの更新が間欠的に省略され、パラメータ14aの更新頻度がパラメータ15aより低くなる。例えば、ブロック14においてニューラルネットワークの逆誤差伝播およびエッジの重みの更新が間引かれて、ブロック15よりも更新頻度が低くなる。
これにより、学習率14bが小さい場合に、パラメータ14aがほとんど変化しないにもかかわらずパラメータ14aの更新処理が毎回行われることを抑制できる。よって、パラメータ14aの無駄な更新処理を抑制して機械学習の計算量を削減することができる。また、モデル13の出力に近いブロックに対して大きい学習率を設定し、モデル13の入力に近いブロックに対して小さい学習率を設定することで、効率的に更新処理を間引くことができる。また、モデル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を制御するようにしてもよい。
次に、学習装置100が学習するモデルの構造について説明する。
図3は、既存モデルと新規モデルの組み合わせ例を示す図である。
第2の実施の形態では、モデルとして多層ニューラルネットワークを使用し、機械学習アルゴリズムとして深層学習を使用する。学習装置100は、学習済みの既存モデルと新規モデルとを組み合わせることで、所望の機能をもつモデルを効率的に学習する。例えば、学習装置100は、学習済みの汎用的な画像認識モデルの後段に、新規モデルを接続することで、手書き文字の認識に特化した手書き文字認識モデルを生成する。
学習装置100が生成するモデルは、ブロック131~135を含む。ブロック131~135はそれぞれ、ひとまとまりのニューラルネットワークである。ブロック131~134は既存モデルに属し、ブロック135は新規モデルに属する。
ブロック131(ブロックA)は、入力に最も近い先頭のブロックである。ブロック131は、縦256画素×横192画素の画像データを受け付け、64行×48列の特徴マップと呼ばれる特徴情報を出力する。ブロック132(ブロックB)は、ブロック131の次段のブロックである。ブロック132は、ブロック131が出力した特徴マップを受け付け、32行×24列の特徴マップを出力する。ブロック133(ブロックC)は、ブロック132の次段のブロックである。ブロック133は、ブロック132が出力した特徴マップを受け付け、16行×12列の特徴マップを出力する。ブロック134(ブロックD)は、ブロック133の次段のブロックである。ブロック134は、ブロック133が出力した特徴マップを受け付け、8行×6列の特徴マップを出力する。
ブロック131は、縦のサイズを4分の1に圧縮し、横のサイズを4分の1に圧縮している。ブロック132~134はそれぞれ、縦のサイズを2分の1に圧縮し、横のサイズを2分の1に圧縮している。入力された画像データから段階的に特徴量を抽出していると言える。ブロック135(ブロックE)は、出力に最も近い末尾のブロックである。ブロック135は、ブロック131~134が出力した特徴マップを受け付けて合成する。ブロック135が出力する特徴マップに基づいて、目的変数に相当する予測結果が生成される。例えば、ブロック135が出力する特徴マップから、複数の文字候補それぞれの確率が算出され、最も高い確率をもつ文字候補が文字認識結果として出力される。
図4は、既存モデルおよび新規モデルの内容例を示すブロック図である。
ブロック131は、小ブロック131-1~131-5を含む。小ブロック131-1は、フィルタをシフトしながら積和演算を繰り返す畳み込み演算(Convolution)を行う。小ブロック131-1では、横のサイズが2分の1に圧縮され、縦のサイズが2分の1に圧縮される。小ブロック131-2は、小ブロック131-1の次段にあり、隣接する所定個の要素を1つの要素に合成するプーリング演算を行う。小ブロック131-2では、横のサイズが2分の1に圧縮され、縦のサイズが2分の1に圧縮される。
小ブロック131-3は、小ブロック131-2の次段にあり、いわゆるボトルネックブロックである。ボトルネックブロックは、入力データに対して畳み込み演算を連続的に3回行い、畳み込み演算の結果に対して元の入力データを加算して出力する。小ブロック131-4は、小ブロック131-3の次段にあるボトルネックブロックである。小ブロック131-5は、小ブロック131-4の次段にあるボトルネックブロックである。
ブロック132は、小ブロック132-1~132-4を含む。小ブロック132-1は、先頭のボトルネックブロックである。小ブロック132-1では、横のサイズが2分の1に圧縮され、縦のサイズが2分の1に圧縮される。小ブロック132-2は、小ブロック132-1の次段にあるボトルネックブロックである。小ブロック132-3は、小ブロック132-2の次段にあるボトルネックブロックである。小ブロック132-4は、小ブロック132-3の次段にあるボトルネックブロックである。
ブロック133は、小ブロック133-1~133-6を含む。小ブロック133-1は、先頭のボトルネックブロックである。小ブロック133-1では、横のサイズが2分の1に圧縮され、縦のサイズが2分の1に圧縮される。小ブロック133-2は、小ブロック133-1の次段にあるボトルネックブロックである。小ブロック133-3は、小ブロック133-2の次段にあるボトルネックブロックである。小ブロック133-4は、小ブロック133-3の次段にあるボトルネックブロックである。小ブロック133-5は、小ブロック133-4の次段にあるボトルネックブロックである。小ブロック133-6は、小ブロック133-5の次段にあるボトルネックブロックである。
ブロック134は、小ブロック134-1~134-3を含む。小ブロック134-1は、先頭のボトルネックブロックである。小ブロック134-1では、横のサイズが2分の1に圧縮され、縦のサイズが2分の1に圧縮される。小ブロック134-2は、小ブロック134-1の次段にあるボトルネックブロックである。小ブロック134-3は、小ブロック134-2の次段にあるボトルネックブロックである。
ブロック135は、小ブロック135-1~135-22を含む。
小ブロック135-1は、ブロック134の最終段にある小ブロック134-3の出力を受け付け、畳み込み演算を行う。小ブロック135-2は、小ブロック135-1の出力を受け付け、縦のサイズを2倍に拡大すると共に横のサイズを2倍に拡大するリサイズ演算を行う。このリサイズ演算によって、データサイズが16×12になる。リサイズ演算には双線形補間(Bilinear Interpolation)を用いる。小ブロック135-3は、小ブロック135-2の出力を受け付け、畳み込み演算を行う。
小ブロック135-4は、ブロック133の最終段にある小ブロック133-6の出力を受け付け、畳み込み演算を行う。小ブロック135-3の出力と小ブロック135-4の出力とが加算される(加算結果#1)。小ブロック135-5は、加算結果#1を受け付け、縦のサイズを2倍に拡大すると共に横のサイズを2倍に拡大するリサイズ演算を行う。このリサイズ演算によって、データサイズが32×24になる。小ブロック135-6は、小ブロック135-5の出力を受け付け、畳み込み演算を行う。
小ブロック135-7は、ブロック132の最終段にある小ブロック132-4の出力を受け付け、畳み込み演算を行う。小ブロック135-6の出力と小ブロック135-7の出力とが加算される(加算結果#2)。小ブロック135-8は、加算結果#2を受け付け、縦のサイズを2倍に拡大すると共に横のサイズを2倍に拡大するリサイズ演算を行う。このリサイズ演算によって、データサイズが64×48になる。小ブロック135-9は、小ブロック135-8の出力を受け付け、畳み込み演算を行う。
小ブロック135-10は、ブロック131の最終段にある小ブロック131-5の出力を受け付け、畳み込み演算を行う。小ブロック135-9の出力と小ブロック135-10の出力とが加算される(加算結果#3)。
小ブロック135-11は、小ブロック135-1の出力を受け付けるボトルネックブロックである。小ブロック135-12は、小ブロック135-11の次段にあるボトルネックブロックである。小ブロック135-13は、小ブロック135-12の次段にあるボトルネックブロックである。小ブロック135-14は、小ブロック135-13の出力を受け付け、縦のサイズを8倍に拡大すると共に横のサイズを8倍に拡大するリサイズ演算を行う。このリサイズ演算によって、データサイズが64×48になる。
小ブロック135-15は、加算結果#1を受け付けるボトルネックブロックである。小ブロック135-16は、小ブロック135-15の次段にあるボトルネックブロックである。小ブロック135-17は、小ブロック135-16の出力を受け付け、縦のサイズを4倍に拡大すると共に横のサイズを4倍に拡大するリサイズ演算を行う。このリサイズ演算によって、データサイズが64×48になる。
小ブロック135-18は、加算結果#2を受け付けるボトルネックブロックである。小ブロック135-19は、小ブロック135-18の出力を受け付け、縦のサイズを2倍に拡大すると共に横のサイズを2倍に拡大するリサイズ演算を行う。このリサイズ演算によって、データサイズが64×48になる。
小ブロック135-20は、加算結果#3および小ブロック135-14,135-17,135-19の出力を結合する。加算結果#3および小ブロック135-14,135-17,135-19の出力のデータサイズは、全て64×48である。ここでは、64×48のデータサイズを変えずに、複数チャネルのデータとしてまとめる。小ブロック135-21は、小ブロック135-20の次段にあるボトルネックブロックである。小ブロック135-22は、小ブロック135-21の出力を受け付け、畳み込み演算を行う。小ブロック135-22の出力のデータサイズは64×48である。
上記の小ブロック135-1の出力、加算結果#1,#2,#3および小ブロック135-22の出力を合成して、予測結果が生成される。例えば、小ブロック135-1の出力、加算結果#1,#2,#3および小ブロック135-22の出力から、複数の文字候補それぞれの確率が算出され、確率が最大の文字候補が文字認識結果として出力される。
次に、モデルの学習方法について説明する。
図5は、ニューラルネットワークの学習例を示す図である。
学習装置100が学習する多層ニューラルネットワークは、入力層と1以上の中間層と出力層とを含む。各層は、ニューロンに相当する複数のノードを含む。隣接する2つの層に属するノードの間に、シナプスに相当するエッジが形成される。各エッジは、機械学習を通じて決定されるパラメータとして重みをもっている。また、各ノードは、入力値の重み付き和を出力値に変換するための活性化関数をもっている。活性化関数には、シグモイド関数、ランプ関数、ソフトマックス関数などの種類がある。活性化関数は、ハイパーパラメータとしてユーザから指定される。活性化関数は、層毎に設定してもよいし、小ブロック毎に設定してもよいし、ブロック毎に設定してもよい。
一例として、ニューラルネットワーク140を考える。ニューラルネットワーク140は、ノード141~145を含む。ノード141(ノードj)は、ある中間層に属している。ノード142(ノードi0)およびノード143(ノードi1)は、ノード141の1つ前の層に属している。ノード144(ノードk0)およびノード145(ノードk1)は、ノード141の1つ後の層に属している。ノード142とノード141の間のエッジには、重みwi0jが付与される。ノード143とノード141の間のエッジには、重みwi1jが付与される。ノード141とノード144の間のエッジには、重みwjk0が付与される。ノード141とノード145の間のエッジには、重みwjk1が付与されている。
ニューラルネットワーク140の重みは、一般的には、Forward、BackwardおよびUpdateを含む複数のフェーズを繰り返すことで学習される。
Forwardフェーズでは、訓練データに含まれる説明変数の値が入力データとしてニューラルネットワーク140の入力層に対して入力され、入力データに対応する予測結果がニューラルネットワーク140の出力層から出力される。そして、予測結果と訓練データに含まれる教師ラベルとの間の予測誤差が算出される。例えば、複数の文字候補の確率を列挙した予測ベクトルと、正解の文字に対応する数値が「1」でありそれ以外の文字に対応する数値が「0」である正解ベクトルとが比較され、2つのベクトルの差の二乗和平方根が算出される。これは、L2ノルムとして表現した予測誤差である。
ここで、訓練データの使用方法として、第2の実施の形態ではミニバッチ学習を想定する。ミニバッチ学習では、1回に使用される入力データが数十個程度のレコード(サンプル)を含んでいる。各レコードは、説明変数の値と目的変数の値である教師ラベルとのペアである。入力層に対してレコード毎に説明変数の値が入力され、出力層からはレコード毎に予測結果が出力される。1回の入力データに対する予測誤差は、複数のレコードで算出された予測誤差の平均を表す。ただし、第2の実施の形態の機械学習は、1回に1つのレコードを使用するオンライン学習に応用することもできる。
ノード141に着目すると、ノード142の出力値に重みwi0jを乗じ、ノード143の出力値に重みwi1jを乗じ、これらを合算することで、1つ前の層の出力値の重み付き和が算出される。この重み付き和を活性化関数に入力することで、ノード141の出力値が算出される。ノード141の出力値は、ノード144,145に提供される。このようにして、入力層から1以上の中間層を介して出力層に向かって数値が伝播する。
Backwardフェーズでは、予測誤差に応じた誤差情報が、ニューラルネットワーク140の出力層から入力層に向かって伝播する。これにより、ニューラルネットワーク140に含まれる複数の重みそれぞれに対して誤差勾配が算出される。誤差勾配は、予測誤差を重みの関数とみなした場合に、予測誤差を重みで偏微分したものに相当する。誤差勾配は、予測誤差が小さくなるように重みを更新するために用いられる。
Backwardフェーズでは、誤差逆伝播法により、誤差勾配が出力層から入力層に向かって逆方向に伝播する。例えば、ノード141と前の層との間の重みwi0j,wi1jに対する誤差勾配は、後の層との間の重みwjk0,wjk1、それに対する誤差勾配、Forwardフェーズにおけるノード141の出力値、前の層のノード142,143の出力値などから算出される。出力層に近い方の重みから順に誤差勾配が決定される。
Updateフェーズでは、Backwardフェーズで算出された誤差勾配が重みに反映されて、ニューラルネットワーク140の重みが更新される。例えば、重みwi0j,wi1j,wjk0,wjk1が、重みw’i0j,w’i1j,w’jk0,w’jk1に変わる。
誤差勾配を重みに反映させる際には、現在の重みから誤差勾配そのものを減算する代わりに、今回の入力データの影響を緩和するように誤差勾配が減算値に変換され、現在の重みから当該減算値が減算される。その際、ハイパーパラメータの1つである学習率が使用される。学習率は、ブロック毎に設定することができる。学習率が大きいと、直近の入力データの影響が重みに強く反映され、学習率が小さいと、直近の入力データの影響が重みに弱く反映されることになる。学習率は、ニューラルネットワーク140の最終的な精度や重みの収束速度に影響を与えるという点で重要である。
一例として、更新前の重みをw、更新後の重みをw’、誤差勾配を∇E、学習率をηとすると、誤差勾配に学習率を乗じた数値を減算値とし、w’=w-η×∇Eと算出するようにしてもよい。ここで、誤差勾配の重みへの反映には加法性が成立する。ある入力データから算出された誤差勾配と別の入力データから算出された誤差勾配とを順に重みに反映させることは、2つの誤差勾配を合算して重みに反映させることと等価である。この加法性を利用して、ニューラルネットワークの学習を並列化することができる。
図6は、誤差勾配および学習率に応じた重みの更新例を示す図である。
ニューラルネットワークの予測誤差Eは、グラフ151に示すように、重みwの関数とみなすことができる。誤差逆伝播法では、予測誤差Eが最小になる重みwが探索される。現在の重みwにおける予測誤差Eの誤差勾配に応じて、誤差勾配とは逆方向に重みwが変化する。誤差勾配が正の場合は重みwが小さくなり、誤差勾配が負の場合は重みwが大きくなる。重みwの1回の変化量が、0以上の実数である学習率によって調整される。
1回の変化量が大きすぎると重みwが最適解に到達しないリスクが生じ、1回の変化量が小さすぎると最適解に到達するまでの所要時間が長くなる。重みwが最適解に近付くほど、1回の変化量を小さくすることが好ましい。そこで、後述するように、機械学習の進行に応じて、学習率が段階的に引き下げられる。機械学習の進行度は、例えば、重み更新の繰り返し(イテレーション)の回数や学習時間などによって評価される。
図7は、学習率および学習フェーズの例を示す図である。
前述のように、異なる入力データに対するForwardフェーズやBackwardフェーズを並列化することで、多層ニューラルネットワークの学習を高速化できる。そこで、学習装置100は、GPU104-1~104-4を用いて並列処理を行う。多層ニューラルネットワークの学習の並列処理は、Forward、Backward、Communicate、Updateの4つのフェーズを含む。
機械学習の開始時点で、GPU104-1~104-4は同一のモデルを保持する。
Forwardフェーズでは、GPU104-1~104-4は、互いに異なる入力データを選択してブロック131に入力する。すると、ブロック131からブロック132,133,134を通ってブロック135にデータが伝播し、モデルから予測結果が出力される。GPU104-1~104-4はそれぞれ、予測誤差を算出する。入力データが異なるため、GPU104-1~104-4の間で異なる予測誤差が算出され得る。
Backwardフェーズでは、GPU104-1~104-4はそれぞれ、予測誤差に基づいて、ブロック135からブロック131に向かって誤差情報を伝播し、各ブロックに含まれる重みに対して誤差勾配を算出する。出力に近いブロックから順に誤差勾配が算出されることになる。入力データが異なるため、同じ重みに対しても、GPU104-1~104-4の間で異なる誤差勾配が算出され得る。
Communicateフェーズでは、GPU104-1~104-4が相互通信により、同じ重みに対して算出された4個の誤差勾配を合算する。誤差勾配の合算には、MPI(Message Passing Interface)に規定されるAllReduce通信を利用する。MPIライブラリを利用することで、Communicateフェーズを実装することができる。ただし、ブロードキャスト通信やAllGather通信など、MPIに規定される他の種類の集団通信を利用することも可能である。GPU104-1~104-4は、これによって同一の誤差勾配の合算値を共有することになる。
Updateフェーズでは、GPU104-1~104-4はそれぞれ、誤差勾配の合算値をノード数で割って誤差勾配の平均を算出する。ここでは、誤差勾配の合算値を、GPUの台数である4で割る。そして、GPU104-1~104-4は、誤差勾配の平均と予め規定された学習率とから重みを更新する。GPU104-1~104-4の間で、ここで算出される誤差勾配の平均は同一であり、更新後の重みも同一となる。
学習率の初期値は、ブロック131~135それぞれに対してユーザから指定される。モデルの出力に近いブロックほど学習率が大きく設定され、モデルの入力に近いブロックほど学習率が小さく設定される。よって、ブロック135の学習率が最も大きく、ブロック131の学習率が最も小さい。ブロック134の学習率は、ブロック133の学習率以上かつブロック135の学習率以下である。ブロック133の学習率は、ブロック132の学習率以上かつブロック134の学習率以下である。ブロック132の学習率は、ブロック131の学習率以上かつブロック133の学習率以下である。これは、既存モデルの学習率が小さく設定され、新規モデルの学習率が大きく設定されているとも言える。
上記の条件を満たさない場合、学習装置100はユーザに対して警告を行い、学習率の変更を促してもよい。ブロック131~135の学習率は、機械学習の進行に応じて初期値から段階的に引き下げられる。学習率の引き下げは、ブロック131~135の間の比率が維持されるような方法で行ってもよいし、維持されないような方法で行ってもよい。ただし、ブロック131~135の間の学習率の大小関係は、変更後も逆転しないことが好ましい。例えば、学習装置100は、イテレーション回数が所定数に達した時点で、ブロック131~135それぞれの学習率を現在の半分にする。引き下げ後の学習率が所定の下限以下になった場合、その学習率を0とみなすようにしてもよい。
一例として、ブロック135の学習率を1xと仮定して、ブロック134の学習率がブロック135の2分の1である0.5xに設定され、ブロック133の学習率がブロック135の10分の1である0.1xに設定される。また、ブロック132の学習率がブロック135の100分の1である0.01xに設定され、ブロック131の学習率がブロック135の1000分の1である0.001xに設定される。
図8は、複数のGPUによる並列処理の例を示す図である。
ここでは、GPU104-1~104-4によるCommunicateフェーズおよびUpdateフェーズの並列処理の例を説明する。特定の重みwに対して、GPU104-1は、入力データ1から誤差勾配∇E1を算出する。GPU104-2は、入力データ2から誤差勾配∇E2を算出する。GPU104-3は、入力データ3から誤差勾配∇E3を算出する。GPU104-4は、入力データ4から誤差勾配∇E4を算出する。
GPU104-1~104-4は、AllReduce通信により、誤差勾配∇E1,∇E2,∇E3,∇E4を合算した誤差勾配∇Eを共有する。GPU104-1~104-4の間の通信手順は、MPIライブラリの実装に依存する。
例えば、GPU104-1とGPU104-2とが相互に誤差勾配を送信し、誤差勾配∇E1+∇E2を共有する。また、GPU104-3とGPU104-4とが相互に誤差勾配を送信し、誤差勾配∇E3+∇E4を共有する。その後、GPU104-1とGPU104-3とが相互に途中の計算値を送信し、誤差勾配∇E1+∇E2+∇E3+∇E4を共有する。また、GPU104-2とGPU104-4とが相互に途中の計算値を送信し、誤差勾配∇E1+∇E2+∇E3+∇E4を共有する。
GPU104-1~104-4はそれぞれ、合算された誤差勾配∇Eをノード数である4で割って平均の誤差勾配∇E/4を算出する。GPU104-1~104-4はそれぞれ、誤差勾配∇E/4を学習率に応じて重みwに反映させる。
図9は、イテレーションに応じた学習率の変化例を示す図である。
前述のように、ブロック131~135に対して異なる学習率が設定され、機械学習の進行に応じてそれら学習率が段階的に引き下げられる。ユーザの指定した初期値から学習率を引き下げることは、機械学習のプラットフォームによって自動的に行われる。
学習装置100は、ブロック135に大きい初期値を設定し、ブロック134にブロック135以下の初期値を設定し、ブロック133にブロック134以下の初期値を設定する。また、学習装置100は、ブロック132にブロック133以下の初期値を設定し、ブロック131にブロック132以下の初期値を設定する。
学習装置100は、例えば、イテレーション回数が第1段階の所定数に達すると、ブロック131~135の学習率を初期値の2分の1に引き下げる。ブロック131~135の学習率の変更は、一斉に行うことが好ましい。その後、学習装置100は、イテレーション回数が第2段階の所定数に達すると、ブロック131~135の学習率を現在の2分の1、すなわち、初期値の4分の1に引き下げる。その後、学習装置100は、イテレーション回数が第3段階の所定数に達すると、ブロック131~135の学習率を現在の2分の1、すなわち、初期値の8分の1に引き下げる。
初期値が小さい学習率を引き下げると、有効桁数の都合により、引き下げ後の学習率が0として取り扱われることがあり得る。また、モデルの入力に近いブロックに対して、ユーザが学習率の初期値を0に指定することも可能である。よって、あるブロックの学習率が0になることもある。例えば、ブロック131の学習率が、3回の引き下げ後に0になる。学習率が0であるブロックの重みはそれ以降は更新されない。学習率が0のブロックは、モデルの入力に近い方から先に発生するようにする。また、学習率が変更されても、ブロック131~135の間の大小関係は初期値から変化しないようにする。
次に、深層学習の計算量の削減について説明する。
上記のように、学習率が0であるブロックでは、Updateフェーズを実行しても重みが変化しない。また、学習率が0ではないが十分に小さいブロックでは、誤差勾配に学習率を乗じた数値が有効桁数より小さくなることがあり、Updateフェーズを実行しても重みが変化しないことがある。また、誤差勾配に学習率を乗じた数値が有効桁数の範囲内であっても、その数値が微小であり重みがほとんど変化しないこともある。
このようなブロックにおいて、全てのイテレーションでBackward、Communicate、Updateなどの重み更新のためのフェーズを実行することは、モデル精度の向上に寄与しない無駄な計算になってしまう可能性がある。そこで、学習装置100は、学習率が小さいブロックでは、重みの更新頻度を下げて、一部のイテレーションのBackward、CommunicateおよびUpdateのフェーズを省略する。これにより、深層学習の計算量を削減する。ブロック131~135の重みの更新頻度は、ブロック131~135の学習率に比例するようにする。
図10は、学習率に応じた更新頻度の制御例を示す図である。
学習装置100は、最も大きい学習率を基準にして、ブロック131~135の間の学習率の比率を算出する。ここでは、ブロック135の学習率を1とすると、ブロック134の学習率が2分の1、ブロック133の学習率が10分の1、ブロック132の学習率が100分の1、ブロック131の学習率が1000分の1である。学習装置100は、ブロック131~135の学習率の比率を、ブロック131~135の更新頻度と定義する。よって、ブロック135の重みの更新との関係で、ブロック134の更新頻度は2分の1、ブロック133の更新頻度は10分の1、ブロック132の更新頻度は100分の1、ブロック131の更新頻度は1000分の1となる。
ブロック131~135は、全てのイテレーションでForwardフェーズを実行する。よって、全てのイテレーションでブロック131からブロック135までデータが伝播し、モデルの予測誤差が算出される。また、ブロック135は、全てのイテレーションでBackward、CommunicateおよびUpdateの3つのフェーズも実行する。よって、全てのイテレーションでブロック135の重みが更新される。
これに対して、ブロック131~134は、一部のイテレーションでBackward、CommunicateおよびUpdateの3つのフェーズを実行しない。よって、一部のイテレーションでブロック131~134の重みが更新されない。あるブロックでそれら3つのフェーズを通じた更新処理が実行されない場合、誤差情報が伝播しないため、それより入力に近い上流のブロックでも更新処理が実行されないことになる。よって、更新処理を抑止するパターンとして、ブロック131~134が実行しないパターンと、ブロック131~133が実行しないパターンと、ブロック131,132が実行しないパターンと、ブロック131のみ実行しないパターンとがある。
例えば、学習装置100は、ブロック131~134それぞれについて、イテレーション番号を更新頻度の分母で割った余りが0であるイテレーションでのみ更新処理を実行するようにする。この場合、ブロック135は、全てのイテレーションで重みを更新する。ブロック134は、イテレーション#0,#2,#4,・・・で重みを更新する。ブロック133は、イテレーション#0,#10,#20,・・・で重みを更新する。ブロック132は、イテレーション#0,#100,#200,・・・で重みを更新する。ブロック131は、イテレーション#0,#1000,#2000,・・・で重みを更新する。
例えば、イテレーション#0では、ブロック135からブロック131までBackwardフェーズが実行される。イテレーション#1では、ブロック135のみBackwardフェーズが実行され、ブロック131~134に誤差情報が伝播しない。誤差情報が伝播しないブロック131~134では、それ以降のCommunicateフェーズおよびUpdateフェーズも実行されない。イテレーション#2では、ブロック135からブロック134までBackwardフェーズが実行され、ブロック131~133に誤差情報が伝播しない。イテレーション#3では、ブロック135のみBackwardフェーズが実行され、ブロック131~134に誤差情報が伝播しない。
イテレーション#10では、ブロック135からブロック133までBackwardフェーズが実行され、ブロック131,132に誤差情報が伝播しない。イテレーション#11では、ブロック135のみBackwardフェーズが実行され、ブロック131~134に誤差情報が伝播しない。イテレーション#100では、ブロック135からブロック132までBackwardフェーズが実行され、ブロック131に誤差情報が伝播しない。イテレーション#101では、ブロック135のみBackwardフェーズが実行され、ブロック131~134に誤差情報が伝播しない。
イテレーション#1000では、ブロック135からブロック131までBackwardフェーズが実行される。イテレーション#1001では、ブロック135のみBackwardフェーズが実行され、ブロック131~134に誤差情報が伝播しない。このように、ブロック131は、重みを1000回に1回更新する。ブロック132は、重みを1000回に10回更新する。ブロック133は、重みを1000回に100回更新する。ブロック134は、重みを1000回に500回更新する。
図11は、更新頻度テーブルの例を示す図である。
更新頻度テーブル127は、ブロック131~135の更新頻度を示す。学習装置100は、更新頻度の管理のために更新頻度テーブル127を生成してもよい。更新頻度テーブル127は、モデル種類、ブロック名、学習率、更新頻度および削減率の項目を含む。
モデル種類は、過去に学習された重みを初期値として流用する既存モデルと、まだ重みが学習されたことのない新規モデルとの区別を示す。ブロック131~134は既存モデルに属し、ブロック135は新規モデルに属する。ブロック名は、ブロック131~135を識別する識別名である。学習率は、ブロック131~135の最新の学習率である。最新の学習率は、ユーザが指定した初期値よりも低下していることがある。更新頻度テーブル127には、ブロック131~135の学習率の比率を記載してもよい。
更新頻度は、連続する所定数のイテレーションの中で、ブロック131~135が重みを更新するイテレーションの回数の割合を示す。削減率は、重みの更新を省略することによる計算量の減少率である。ブロック131の更新頻度は1000分の1であり、削減率は99.9%である。ブロック132の更新頻度は1000分の10であり、削減率は99%である。ブロック133の更新頻度は1000分の100であり、削減率は90%である。ブロック134の更新頻度は1000分の500であり、削減率は50%である。ブロック135の更新頻度は1000分の1000であり、削減率は0%である。
次に、学習装置100の機能および処理手順について説明する。
図12は、学習装置の機能例を示すブロック図である。
学習装置100は、既存モデル記憶部121、訓練データ記憶部122、モデル記憶部123、機械学習部124、学習率設定部125および更新頻度制御部126を有する。
既存モデル記憶部121、訓練データ記憶部122およびモデル記憶部123は、例えば、RAM102またはHDD103の記憶領域を用いて実現される。機械学習部124、学習率設定部125および更新頻度制御部126は、例えば、CPU101が実行するプログラムを用いて実現される。機械学習部124、学習率設定部125および更新頻度制御部126は、複数のノードを用いた機械学習の並列処理を制御するプラットフォームプログラムとして実装することが可能である。プラットフォームプログラムは、RAM102に記憶されてCPU101により実行される。なお、各フェーズの具体的な処理は、ユーザプログラムやライブラリプログラムとして実装することが可能である。ユーザプログラムやライブラリプログラムは、GPU104-1~104-4により実行される。
既存モデル記憶部121は、ブロック131~134を含む既存モデルを記憶する。既存モデルは、例えば、VGG-16やResNet50など、学習済みの重みを含む既知の多層ニューラルネットワークである。訓練データ記憶部122は、今回の深層学習に使用する訓練データを記憶する。訓練データは、それぞれ説明変数の値と教師ラベルとを対応付けた複数のレコードを含む。例えば、説明変数の値が手書き文字の画像データであり、教師ラベルが正解の文字である。モデル記憶部123は、今回の深層学習によって学習されたモデルを記憶する。学習されたモデルは、既存モデルに属するブロック131~134と新規モデルに属するブロック135とを含む。ブロック131~134の重みも、既存モデル記憶部121に記憶されたものから修正されていることがある。
機械学習部124は、深層学習を制御する。機械学習部124は、既存モデルに含まれるブロック131~134の後段に、重みを初期化した新規モデルのブロック135を接続して、モデルの原型を生成する。機械学習部124は、モデルの原型と訓練データをGPUメモリ105に転送し、GPU104-1~104-4に深層学習を実行させる。深層学習が終了すると、機械学習部124は、学習されたモデルをGPU105から読み出し、モデル記憶部123に保存する。機械学習部124は、学習したモデルの情報を表示装置111に表示してもよく、他の情報処理装置に送信してもよい。
深層学習の実行にあたり、機械学習部124は、ブロック131~135に対して設定された学習率を学習率設定部125から取得し、学習率を示す制御データをGPUメモリ105に転送する。また、機械学習部124は、ブロック131~135に対して決定された更新頻度を学習率設定部125から取得し、次のイテレーションでのブロック131~135それぞれの更新の有無を判定する。機械学習部124は、更新の有無を示す制御データをGPUメモリ105に転送する。ブロック131~135それぞれの更新の有無は、例えば、更新処理を行う場合にON(1)の値をとり、更新処理を行わない場合にOFF(0)の値をとる制御フラグによって表現することができる。
学習率設定部125は、ブロック131~135それぞれの学習率の初期値の入力をユーザから受け付ける。学習率設定部125は、学習率の初期値を機械学習部124に提供する。また、学習率設定部125は、深層学習の途中で、学習率を変更するタイミングを検出する。学習率を変更するタイミングは、例えば、イテレーション回数が所定数に達したタイミングである。学習率を変更するタイミングを検出すると、学習率設定部125は、所定の計算式に従って、ブロック131~135それぞれの学習率を現在よりも低下させる。例えば、学習率設定部125は、ブロック131~135それぞれの学習率を現在の半分にする。学習率設定部125は、変更後の学習率を機械学習部124に提供する。
更新頻度制御部126は、学習率設定部125によって学習率の初期値が設定されたこと、または、深層学習の途中で学習率が変更されたことを検出する。すると、更新頻度制御部126は、ブロック131~135の学習率の比率を算出し、学習率の比率をブロック131~135の更新頻度の比率とみなす。更新頻度制御部126は、ブロック131~135の更新頻度を機械学習部124に提供する。
図13は、機械学習の手順例を示すフローチャートである。
(S10)学習率設定部125は、モデルに含まれるブロック131~135それぞれに対して学習率の初期値を設定する。学習率の初期値はユーザから指定される。
(S11)更新頻度制御部126は、ブロック131~135の学習率が設定または変更されたか判断する。学習率が設定または変更された場合、ステップS12に進む。学習率が設定も変更もされていない場合、ステップS14に進む。
(S12)更新頻度制御部126は、ブロック131~135の現在の学習率の比率を算出し、学習率の比率からブロック131~135の重みの更新頻度を決定する。
(S13)更新頻度制御部126は、ブロック131~135の中から現在の学習率が0のブロックを検索する。学習率が0のブロックがある場合、更新頻度制御部126は、そのブロックの更新頻度を0にして、そのブロックの重みの更新を停止する。
(S14)機械学習部124は、ブロック131~135の最新の更新頻度に基づいて、今回のイテレーションでのブロック131~135それぞれの更新の有無を決定する。例えば、更新頻度が10分の1のブロックは、イテレーション10回につき1回だけ更新処理が行われる。その場合、例えば、機械学習部124は、イテレーション番号を10で割った余りが0である場合のみ、更新処理を行うと決定する。機械学習部124は、例えば、ブロック131~135それぞれの更新の有無を示す制御フラグを生成する。制御フラグ=ON(1)は更新ありを表し、制御フラグ=OFF(0)は更新なしを表す。
(S15)GPU104-1~104-4は、今回のイテレーションで使用する訓練データをGPUメモリ105から読み出す。訓練データはRAM102からGPUメモリ105に予め転送されている。訓練データの読み出しにあたり、GPU104-1~104-4は、互いに異なるレコードを選択することが好ましい。GPU104-1~104-4は、例えば、所定のアルゴリズムに従って、今回使用するレコードの位置を特定する。
(S16)GPU104-1~104-4は、読み出した訓練データを用いてForwardフェーズの処理を並列に実行する。Forwardフェーズでは、GPU104-1~104-4は、訓練データに含まれる説明変数の値をモデルに入力し、ブロック131からブロック135までデータを伝播させて予測結果を生成する。GPU104-1~104-4は、訓練データに含まれる教師ラベルと予測結果の間の予測誤差を算出する。
(S17)GPU104-1~104-4は、モデルの出力に近い方から優先的にブロックを1つ選択する。よって、ブロック135、ブロック134、ブロック133、ブロック132、ブロック131の順に選択されることになる。なお、ForwardフェーズからBackwardフェーズに進むにあたり、GPU104-1~104-4は、バリア同期などによって同期をとるようにしてもよい。
(S18)GPU104-1~104-4は、選択したブロックが、今回のイテレーションで更新有りのブロックであるか判断する。例えば、GPU104-1~104-4は、選択したブロックに対応する制御フラグがONであるか判断する。更新有りのブロックの場合はステップS19に進み、更新無しのブロックの場合はステップS20に進む。
(S19)GPU104-1~104-4は、選択したブロックのBackwardフェーズの処理を並列に実行する。Backwardフェーズでは、GPU104-1~104-4は、選択したブロックの出力から入力に向かって誤差情報を伝播し、選択したブロックに含まれる重みそれぞれの誤差勾配を算出する。選択したブロックの後段に別のブロックがある場合、当該別のブロックから誤差情報が伝播している。その場合、その誤差情報を出力から入力に向かって伝播することになる。
(S20)GPU104-1~104-4は、ステップS17においてモデルに含まれる全てのブロックを選択したか判断する。全てのブロックを選択した場合はステップS21に進み、未選択のブロックがある場合はステップS17に戻る。
図14は、機械学習の手順例を示すフローチャート(続き)である。
(S21)GPU104-1~104-4は、モデルの入力に近い方から優先的にブロックを1つ選択する。よって、ブロック131、ブロック132、ブロック133、ブロック134、ブロック135の順に選択されることになる。なお、BackwardフェーズからCommunicateフェーズに進むにあたり、GPU104-1~104-4は、バリア同期などによって同期をとるようにしてもよい。
(S22)GPU104-1~104-4は、選択したブロックが、今回のイテレーションで更新有りのブロックであるか判断する。例えば、GPU104-1~104-4は、選択したブロックに対応する制御フラグがONであるか判断する。更新有りのブロックの場合はステップS23に進み、更新無しのブロックの場合はステップS24に進む。
(S23)GPU104-1~104-4は、AllReduce通信により、選択したブロックに含まれる重みに対して算出された誤差勾配を合算する。なお、選択したブロックが更新無しのブロックの場合、GPU104-1~104-4は、AllReduce通信を行わずに、誤差勾配の合算値を0とみなす。
(S24)GPU104-1~104-4は、ステップS21においてモデルに含まれる全てのブロックを選択したか判断する。全てのブロックを選択した場合はステップS25に進み、未選択のブロックがある場合はステップS21に戻る。なお、第2の実施の形態では、Backwardフェーズの完了後にCommunicateフェーズを開始している。これに対して、モデルの出力から入力に向かって、誤差勾配の算出が完了したブロックから順次、AllReduce通信を開始するようにしてもよい。すなわち、BackwardフェーズとCommunicateフェーズを並列に実行してもよい。
(S25)GPU104-1~104-4は、モデルの入力に近い方から優先的にブロックを1つ選択する。よって、ブロック131、ブロック132、ブロック133、ブロック134、ブロック135の順に選択されることになる。なお、CommunicateフェーズからUpdateフェーズに進むにあたり、GPU104-1~104-4は、バリア同期などによって同期をとるようにしてもよい。
(S26)GPU104-1~104-4は、選択したブロックが、今回のイテレーションで更新有りのブロックであるか判断する。例えば、GPU104-1~104-4は、選択したブロックに対応する制御フラグがONであるか判断する。更新有りのブロックの場合はステップS27に進み、更新無しのブロックの場合はステップS28に進む。
(S27)GPU104-1~104-4は、誤差勾配の合算値をノード数で割って、誤差勾配の平均を算出する。GPU104-1~104-4は、選択したブロックの現在の学習率と誤差勾配の平均とから、選択したブロックに含まれる重みを更新する。例えば、誤差勾配の平均に学習率を乗じた数値を、重みから減じる。なお、選択したブロックが更新無しのブロックの場合、選択したブロックに含まれる重みは変化しない。
(S28)GPU104-1~104-4は、ステップS25においてモデルに含まれる全てのブロックを選択したか判断する。全てのブロックを選択した場合はステップS29に進み、未選択のブロックがある場合はステップS25に戻る。
(S29)機械学習部124は、イテレーション回数が上限に達したか判断する。イテレーション回数の上限は、例えば、ユーザから指定される。上限に達した場合は機械学習が終了し、上限に達していない場合はステップS30に進む。
(S30)学習率設定部125は、イテレーション回数が所定条件を満たすか判断する。例えば、学習率設定部125は、イテレーション回数が、学習率の変更タイミングを示す所定数であるか判断する。学習率の変更タイミングは、深層学習の途中で2回以上設定されてもよい。所定条件を満たす場合はステップS31に進み、所定条件を満たさない場合はステップS11に戻る。なお、イテレーション回数が所定条件を満たさない場合、ブロック131~135の現在の学習率および更新頻度が維持される。
(S31)学習率設定部125は、所定の計算方法に従って、ブロック131~135それぞれの学習率を下げる。例えば、学習率設定部125は、ブロック131~135それぞれの学習率を、現在の2分の1に変更する。学習率の変更によって、ブロック131~135のうちの一部のブロックの学習率が0になることもある。例えば、有効桁数より小さい小数となった学習率が0とみなされる。また、変更後の学習率が所定の下限以下となった場合、学習率を0とみなしてもよい。そして、ステップS11に戻る。
第2の実施の形態の学習装置100によれば、同一または異なるノードが備える複数のGPUを用いて、多層ニューラルネットワークの深層学習が並列化される。よって、深層学習を高速化することができる。また、深層学習によって学習されるモデルが、既存モデルの後段に新規モデルを追加したものとなる。よって、モデル全体を新規に学習する場合と比べて、短時間で高精度のモデルを学習することができる。また、訓練データのサイズを小さくすることができ、訓練データの収集コストを削減できる。
また、モデルの中のブロック単位で、ハイパーパラメータの1つである学習率を設定することができる。そこで、出力に近い追加部分のブロックに対しては大きい学習率が設定され、入力に近い既存部分のブロックに対しては小さい学習率が設定される。よって、既存モデルの重みを活用しつつモデル全体を効率的に学習することができる。
また、複数のブロックの間の学習率の比率に応じて各ブロックの重みの更新頻度が決定され、学習率が小さいブロックでは重みの更新頻度が低くなる。よって、一部のブロックではBackward、Communicate、Updateのフェーズを間欠的に省略することが可能となり、無駄な更新処理を抑制して計算量を削減できる。特に、学習率が0であるか0に近いブロックでは、更新処理を行っても重みがほとんど変化しないか全く変化しないことが多い。よって、更新処理を間引いても次回の予測結果への影響が小さく、モデル精度への影響を抑制しつつ計算量を削減できる。また、学習率の比率を更新頻度の比率として採用することで、モデル精度と計算量のバランスを図ることができる。このように、深層学習を高速化することができる。
10 学習装置
11 記憶部
12 処理部
13 モデル
14,15 ブロック
14a,15a パラメータ
14b,15b 学習率
16 訓練データ

Claims (8)

  1. コンピュータに、
    第1のパラメータを含む第1のブロックおよび第2のパラメータを含む第2のブロックを含むモデルにおいて、前記第1のブロックに対して第1の学習率を設定し、前記第2のブロックに対して前記第1の学習率より小さい第2の学習率を設定し、
    訓練データを用いて算出された前記モデルの予測誤差と前記第1の学習率とに基づいて前記第1のパラメータを更新し、前記予測誤差と前記第2の学習率とに基づいて前記第2のパラメータを更新する、ことを反復的に実行する学習処理を開始し、
    前記第1の学習率と前記第2の学習率との間の関係に応じて、前記学習処理において、前記第2のパラメータの更新を間欠的に省略することで、前記第2のパラメータの更新頻度が前記第1のパラメータより低くなるよう制御する、
    処理を実行させる学習プログラム。
  2. 前記制御では、前記第1の学習率と前記第2の学習率との比に応じて、前記学習処理における前記第2のパラメータの更新頻度を決定する、
    請求項1記載の学習プログラム。
  3. 前記制御では、前記第1の学習率および前記第2の学習率の少なくとも一方が前記学習処理の途中で変更されたことを検出し、変更後の前記第1の学習率と前記第2の学習率との間の関係に応じて、前記第2のパラメータの更新頻度を変更する、
    請求項1記載の学習プログラム。
  4. 前記制御では、前記第2の学習率が閾値以下であるか判定し、前記第2の学習率が前記閾値以下である場合は前記第2のパラメータの更新を停止する、
    請求項1記載の学習プログラム。
  5. 前記第1のブロックは、前記学習処理の開始の際に前記第1のパラメータが初期化される新規ブロックであり、前記第2のブロックは、他の訓練データを用いて学習された前記第2のパラメータが前記学習処理の開始の際に引き継がれる既存ブロックであり、
    前記第2のブロックの位置は、前記第1のブロックよりも前記モデルの入力に近い、
    請求項1記載の学習プログラム。
  6. 前記学習処理は、前記訓練データから前記予測誤差を算出する第1のフェーズと、前記予測誤差の情報を前記モデルの出力から入力に向かって逆伝播する第2のフェーズと、並列処理に用いる複数の演算器の間で前記逆伝播の結果を合成する第3のフェーズと、合成した前記逆伝播の結果に基づいてパラメータを更新する第4のフェーズとを含み、
    前記制御では、前記第2のブロックにおいて、前記第2のフェーズと前記第3のフェーズと前記第4のフェーズとを間欠的に省略する、
    請求項1記載の学習プログラム。
  7. コンピュータが、
    第1のパラメータを含む第1のブロックおよび第2のパラメータを含む第2のブロックを含むモデルにおいて、前記第1のブロックに対して第1の学習率を設定し、前記第2のブロックに対して前記第1の学習率より小さい第2の学習率を設定し、
    訓練データを用いて算出された前記モデルの予測誤差と前記第1の学習率とに基づいて前記第1のパラメータを更新し、前記予測誤差と前記第2の学習率とに基づいて前記第2のパラメータを更新する、ことを反復的に実行する学習処理を開始し、
    前記第1の学習率と前記第2の学習率との間の関係に応じて、前記学習処理において、前記第2のパラメータの更新を間欠的に省略することで、前記第2のパラメータの更新頻度が前記第1のパラメータより低くなるよう制御する、
    学習方法。
  8. 訓練データと、第1のパラメータを含む第1のブロックおよび第2のパラメータを含む第2のブロックを含むモデルと、を記憶する記憶部と、
    前記第1のブロックに対して第1の学習率を設定し、前記第2のブロックに対して前記第1の学習率より小さい第2の学習率を設定し、前記訓練データを用いて算出された前記モデルの予測誤差と前記第1の学習率とに基づいて前記第1のパラメータを更新し、前記予測誤差と前記第2の学習率とに基づいて前記第2のパラメータを更新する、ことを反復的に実行する学習処理を開始し、前記第1の学習率と前記第2の学習率との間の関係に応じて、前記第2のパラメータの更新を間欠的に省略することで、前記第2のパラメータの更新頻度が前記第1のパラメータより低くなるよう制御する処理部と、
    を有する学習装置。
JP2019214496A 2019-11-27 2019-11-27 学習プログラム、学習方法および学習装置 Active JP7295431B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019214496A JP7295431B2 (ja) 2019-11-27 2019-11-27 学習プログラム、学習方法および学習装置
US17/065,554 US20210158212A1 (en) 2019-11-27 2020-10-08 Learning method and learning apparatus
EP20202259.6A EP3828776A1 (en) 2019-11-27 2020-10-16 Program, learning method, and learning apparatus
CN202011202775.9A CN112862087A (zh) 2019-11-27 2020-11-02 学习方法、学习设备及非暂态计算机可读记录介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019214496A JP7295431B2 (ja) 2019-11-27 2019-11-27 学習プログラム、学習方法および学習装置

Publications (2)

Publication Number Publication Date
JP2021086371A JP2021086371A (ja) 2021-06-03
JP7295431B2 true JP7295431B2 (ja) 2023-06-21

Family

ID=73005300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019214496A Active JP7295431B2 (ja) 2019-11-27 2019-11-27 学習プログラム、学習方法および学習装置

Country Status (4)

Country Link
US (1) US20210158212A1 (ja)
EP (1) EP3828776A1 (ja)
JP (1) JP7295431B2 (ja)
CN (1) CN112862087A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922314B1 (en) * 2018-11-30 2024-03-05 Ansys, Inc. Systems and methods for building dynamic reduced order physical models
JP2023046868A (ja) * 2021-09-24 2023-04-05 富士通株式会社 機械学習プログラム、機械学習方法および情報処理装置
JP7262654B1 (ja) 2022-07-11 2023-04-21 アクタピオ,インコーポレイテッド 情報処理方法、情報処理装置および情報処理プログラム
WO2024054646A2 (en) * 2022-09-08 2024-03-14 University Of Florida Research Foundation, Incorporated Techniques for predicting and treating post-operative outcomes in surgery patients

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180174040A1 (en) 2016-12-20 2018-06-21 Michael I. Davies Trace-based neuromorphic architecture for advanced learning
JP2018205858A (ja) 2017-05-31 2018-12-27 キヤノン株式会社 学習装置、認識装置、学習方法及びプログラム
WO2019126535A1 (en) 2017-12-21 2019-06-27 The University Of Chicago Combined learned and dynamic control system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269351B1 (en) * 1999-03-31 2001-07-31 Dryken Technologies, Inc. Method and system for training an artificial neural network
JP2017182320A (ja) 2016-03-29 2017-10-05 株式会社メガチップス 機械学習装置
CN106600059B (zh) * 2016-12-13 2020-07-24 北京邮电大学 基于改进rbf神经网络的智能电网短期负荷预测方法
US20190095794A1 (en) * 2017-09-26 2019-03-28 Intel Corporation Methods and apparatus for training a neural network
US11003992B2 (en) * 2017-10-16 2021-05-11 Facebook, Inc. Distributed training and prediction using elastic resources
US10515296B2 (en) * 2017-11-14 2019-12-24 Adobe Inc. Font recognition by dynamically weighting multiple deep learning neural networks
CN110033019B (zh) * 2019-03-06 2021-07-27 腾讯科技(深圳)有限公司 人体部位的异常检测方法、装置和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180174040A1 (en) 2016-12-20 2018-06-21 Michael I. Davies Trace-based neuromorphic architecture for advanced learning
JP2018205858A (ja) 2017-05-31 2018-12-27 キヤノン株式会社 学習装置、認識装置、学習方法及びプログラム
WO2019126535A1 (en) 2017-12-21 2019-06-27 The University Of Chicago Combined learned and dynamic control system

Also Published As

Publication number Publication date
EP3828776A1 (en) 2021-06-02
CN112862087A (zh) 2021-05-28
US20210158212A1 (en) 2021-05-27
JP2021086371A (ja) 2021-06-03

Similar Documents

Publication Publication Date Title
JP7295431B2 (ja) 学習プログラム、学習方法および学習装置
CN109313720B (zh) 具有稀疏访问的外部存储器的增强神经网络
US8761496B2 (en) Image processing apparatus for calculating a degree of similarity between images, method of image processing, processing apparatus for calculating a degree of approximation between data sets, method of processing, computer program product, and computer readable medium
US20220301288A1 (en) Control method and information processing apparatus
US20220067940A1 (en) Robust machine learning for imperfect labeled image segmentation
US20210357740A1 (en) Second-order optimization methods for avoiding saddle points during the training of deep neural networks
CN111985631B (zh) 信息处理设备、信息处理方法及计算机可读记录介质
WO2023284770A1 (zh) 张量程序优化方法及装置
CN109858615A (zh) 具有记忆的低通递归神经网络系统
US20230268035A1 (en) Method and apparatus for generating chemical structure using neural network
CN113850364A (zh) 非暂态计算机可读记录介质、学习方法和信息处理设备
JP7444235B2 (ja) 注意機構、画像認識システム、特徴変換方法およびプログラム
JP2019204214A (ja) 学習装置、学習方法、プログラム及び推定装置
US20210397948A1 (en) Learning method and information processing apparatus
JP2023044336A (ja) 学習装置、学習方法およびプログラム
EP4348507A1 (en) Scaling deep graph learning in distributed setting
US20230334315A1 (en) Information processing apparatus, control method of information processing apparatus, and storage medium
CN113095328A (zh) 一种基尼指数引导的基于自训练的语义分割方法
JP6810365B2 (ja) 学習済みモデル、プログラム
JP7436830B2 (ja) 学習プログラム、学習方法、および学習装置
WO2022190301A1 (ja) 学習装置、学習方法、及びコンピュータ可読媒体
US20230316731A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
Duran-Dominguez et al. Improving the accuracy of prediction applications by efficient tuning of gradient descent using genetic algorithms
JP2021120825A (ja) 学習装置、学習方法、及び学習プログラム
JP2023073825A (ja) 画像処理装置およびその制御方法、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220809

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230428

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230522

R150 Certificate of patent or registration of utility model

Ref document number: 7295431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150