【文献】
Tom Schaul et al.,No More Pesky Learning Rates,arXiv [online],2013年 2月18日,[2019年6月24日検索],URL,https://arxiv.org/pdf/1206.1106v2.pdf
(58)【調査した分野】(Int.Cl.,DB名)
前記大きくした学習率の値は、前記大きくした学習率の値を初期値として学習を始めた場合に、Loss値が発散してしまう値であることを特徴とする請求項1または2に記載の学習方法。
前記第1の学習工程及び前記第2の学習工程における学習は、Momentumの項を含むバックプロパゲーションの更新式により行われることを特徴とする請求項1から3のいずれかに記載の学習方法。
前記第1の学習工程及び前記第2の学習工程における学習は、バックプロパゲーションの更新式により行われることを特徴とする請求項1から3のいずれかに記載の学習方法。
【発明を実施するための形態】
【0010】
本発明を実施するための形態について、以下に説明する。尚、同じ部材等については、同一の符号を付して説明を省略する。
【0011】
(ニューラルネットワーク学習装置)
本実施の形態におけるニューラルネットワーク学習装置となる情報処理装置10の一例を
図1に示す。尚、本実施の形態におけるニューラルネットワーク学習装置は、通常の処理系、例えばPC(personal computer)等を用いることも可能である。
図1は、本実施の形態におけるニューラルネットワーク学習装置となる情報処理装置10のハードウェア構成を一例として示すものである。
【0012】
図1に示されるように、情報処理装置10は、CPU(Central Processing Unit)11、HDD(Hard Disk Drive)12、RAM(Random Access Memory)13、ROM(Read Only Memory)14、入力装置15、表示装置16、外部I/F17等を有している。これらの各々がバス20により接続されている。
【0013】
CPU11は、ROM14やHDD12等の記憶装置からプログラムやデータをRAM13上に読み出し、処理を実行することで、情報処理装置10の全体の制御や機能を実現する演算装置である。CPU11は、本実施の形態におけるニューラルネットワーク学習装置の情報処理制御部となるものであり、この情報処理制御部において、本実施の形態におけるニューラルネットワーク学習方法が行われる。
【0014】
HDD12は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、例えば、本実施の形態を実現するためのプログラム、情報処理装置10の全体を制御する基本ソフトウェアであるOS(Operating System)、OS上において各種機能を提供するアプリケーションソフトウェア等がある。HDD12は格納しているプログラムやデータを所定のファイルシステム及び/又はDB(データベース)により管理している。尚、情報処理装置10は、HDD12の代わりに又はHDD12と併せて、SSD(Solid State Drive)等を備えていてもよい。
【0015】
RAM13は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM14は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。
【0016】
入力装置15は、ユーザが各種操作信号を入力するのに用いられる装置である。入力装置15は、例えば、各種操作ボタン、タッチパネル、キーボード、マウス等である。
【0017】
表示装置16は、情報処理装置10による処理結果を表示する装置である。表示装置16は、例えば、ディスプレイ等である。
【0018】
外部I/F17は、外部装置とのインタフェースである。外部装置には、例えば、USB(Universal Serial Bus)メモリ、SDカード、CD、DVD等がある。
【0019】
本実施の形態に係る情報処理装置10は、上記ハードウェア構成を有することにより、後述する各種処理を実現することができる。
【0020】
(機械学習)
次に、本実施の形態におけるニューラルネットワーク学習装置を用いた機械学習アルゴリズムについて、
図2に基づき説明する。具体的には、機械学習アルゴリズムは、
図2に示されるように、学習時において、入力データとそれに対応する正解データである教師データを入力し、パラメータを学習する機械学習アルゴリズムを行うことにより、アルゴリズムのパラメータを最適化して学習を行う。次に、予測時において、学習が終わったパラメータを用いて、入力データより識別を行う機械学習アルゴリズムを行い、予測結果を出力する。本実施の形態は、このうち学習時における機械学習アルゴリズムに関するものであり、この学習時における機械学習アルゴリズムにおける特に多層ニューラルネットワークのパラメータ最適化について説明する。
【0021】
本実施の形態における学習方法は、後述するように、学習の途中で学習率を大きくするものであるが、説明の便宜上、最初にニューラルネットワーク学習方法に関する説明を行った後、本実施の形態における学習方法の詳細について説明する。尚、本実施の形態においては、学習となるパラメータを最適化には、バックプロパゲーション(誤差逆伝播法)を用いる。
【0022】
(多層ニューラルネットワーク)
最初に、多層ニューラルネットワークについて説明する。ニューラルネットワーク(neural network)とは、脳機能に見られるいくつかの特性を計算機上のシミュレーションによって表現することを目指した数学モデルである。多層ニューラルネットワーク(多層パーセプトロンとも呼ぶ)は、ニューラルネットワークの一種であり、複数の層にニューロンを配置させたフィードフォワード型ニューラルネットワークである。例えば、
図3に示されるように、丸で示されているニューロンが、多層(入力層、中間層、出力層)に接続されている。
【0023】
このようなニューラルネットワークにおける次元削減(次元圧縮ともいう)の方法としては、
図4に示されるように、出力が入力と同じ教師信号の数となるように学習を行うAuto-Encoderと呼ばれる構成がある。このように、中間層のニューロン数を入力の次元数よりも少なくすることで、より少ない次元数で入力データを再現するように次元削減を行うことができる。このAuto-Encoderにおいて一層ずつ学習を行い、組み合わせて多層としたStacked Auto-Encodersと呼ばれる方法を用いるとうまく次元削減ができる。
【0024】
ニューラルネットワークは多層にすることにより、表現能力が上がり識別器の性能が上がることや、次元削減ができるが知られている。そのため、次元削減を行う場合に、一層で所望の次元数まで減らすのではなく、何層かに分けて次元数を減らすことで、次元削減器の性能を上げることができる。この構成の1つとしてAuto-Encodersを積み重ねることで、次元削減器を構成するStacked Auto-Encodersという構成がある。それぞれの層で個別に学習を行った後に、それを全体に組み合わせてもう一回Fine-trainingと呼ばれる学習を行い、次元削減器の性能向上を図ることができる。
【0025】
Stacked Auto-Encodersでは単層ごとに学習が必要である上、Fine-trainingでは深い階層のニューラルネットワークを入力して学習を行う場合が多く、学習に非常に時間がかかる。しかしながら、本実施の形態を適用することにより、短時間で学習を終わらせることが可能である。また、本実施の形態を適用することにより、従来と比較して、より深い構造のニューラルネットワークで学習を行っても時間的に問題ないため、結果的に精度を向上させることができる。
【0026】
(Stacked Auto-Encoders)
次に、多層ニューラルネットワークの一種であるStacked Auto-Encodersについて説明する。この場合、Stacked Auto-Encodersにおける次元削減部及び次元復元部の学習とは、入力された学習データに基づき、Stacked Auto-Encodersの各層のネットワーク係数(これは「重み」とも称される)を調整することに相当する。尚、このようなネットワーク係数は、所定のパラメータの一例である。
【0027】
Stacked Auto-Encodersとは、Auto-Encoderと呼ばれるニューラルネットワークを積み重ねて多層とした構成のニューラルネットワークである。ここで、Auto-Encoderとは、入力層と出力層のニューロン数(ユニット数)が同数であり、かつ、中間層(隠れ層)のニューロン数(ユニット数)が入力層(出力層)より少ない構成のニューラルネットワークである。
【0028】
一例として、次元削減部及び次元復元部が、
図5に示すような5層から構成されるStacked Auto-Encodersにより実現されるものとして説明する。即ち、次元削減部は、入力された100次元のベクトルデータを、50次元のベクトルデータに次元削減した後、25次元のベクトルデータに削減する。一方、次元復元部は、入力された25次元のベクトルデータを、50次元のベクトルデータに次元復元した後、100次元のベクトルデータに次元復元する。
図5に示すStacked Auto-Encodersの学習について、
図6を用いて説明する。
【0029】
Stacked Auto-Encodersの学習は、Stacked Auto-Encodersを構成するAuto-Encoder毎に行われる。従って、
図5に示すStacked Auto-Encodersは、Stacked Auto-Encodersを構成する第1のAuto-Encoder及び第2のAuto-Encoderについて、学習を行う(
図6のS1及びS2)。そして、最後に、Fine-trainingと呼ばれる学習を行う(
図6のS3)。
【0030】
S1)まず、
図5のStacked Auto-Encodersを構成する第1のAuto-Encoderについて、学習データ1000を用いて学習を行う。即ち、第1層(入力層)のニューロン数が100、第2層(中間層、隠れ層)のニューロン数が50、第3層(出力層)のニューロン数が100の第1のAuto-Encoderについて、学習データを用いて学習を行う。
【0031】
このような学習は、各i(i=1,・・・,30)に対して、y
iを第1のAuto-Encoderの入力データ及び教師データとして誤差逆伝播法(Backpropagation)により学習を行えばよい。つまり、学習データを用いて、第1のAuto-Encoderの入力データと出力データが同じになるように、誤差逆伝播法によりネットワーク係数の調整を行う。
【0032】
S2)次に、
図5のStacked Auto-Encodersを構成する第2のAuto-Encoderについて、第1のAuto-Encoderの第2層(中間層、隠れ層)に対する入力データを用いて学習を行う。
【0033】
ここで、第1のAuto-Encoderにおいて、入力層(第1層)の各ニューロンと第2層の上からj番目のニューロンとの間のネットワーク係数をそれぞれw
1,j、・・・、w
100,jとする。この場合、第2のAuto-Encoderの入力データは、下記数1に示される式により表される。
【0034】
【数1】
従って、各i(i=1,・・・,30)に対して、z
iを第2のAuto-Encoderの入力データ及び教師データとして誤差逆伝播法により学習を行えばよい。つまり、30個の50次元のベクトルデータz
iを用いて、第2のAuto-Encoderの入力データz
iと出力データが同じになるように、誤差逆伝播法によりネットワーク係数の調整を行う。
【0035】
S3)Stacked Auto-Encodersを構成するすべてのAuto-Encoderについて学習を行った後、Fine-training(又は、Fine-Tuning)と呼ばれる学習を行う。Fine-trainingとは、学習を行ったすべてのAuto-Encoderから構成されたStacked Auto-Encodersについて学習データを用いて学習を行うことである。即ち、各i(i=1,・・・,30)に対して、y
iをStacked Auto-Encodersの入力データ及び教師データとして誤差逆伝播法により学習を行えばよい。つまり、学習データを用いて、Stacked Auto-Encodersの入力データと出力データが同じになるように、誤差逆伝播法によりネットワーク係数の調整を行う。
【0036】
このようなFine-trainingを最後に行うことで、Stacked Auto-Encodersの各ネットワーク係数が微調整され、次元削減部及び次元復元部の性能を向上させることができる。
【0037】
上記では、一例として、各層のニューロン数が100、50、25、50、100である5層のStacked Auto-Encodersを用いて説明したが、これに限られない。Stacked Auto-Encodersの各層のニューロン数、及び、ニューラルネットワークを構成する層の数は設計事項であり、任意の数を選択することができる。
【0038】
ただし、次元削減部による次元削減及び次元復元部による次元復元は、複数の層に分けて行うことが好ましい。例えば、上記のように100次元のベクトルデータを25次元のベクトルデータに削減する場合について考える。この場合、各層のニューロン数が100、25、100である3層のStacked Auto-Encodersを用いて次元削減を行うよりも、上記の例のように複数の層(上記の例では5層)に分けて順次、次元数を削減する構成とする方が好ましい。
【0039】
(Convolutional ニューラルネットワーク(CNN))
CNNは、画像系の深い層のニューラルネットワークでよく使われる手法である。学習には通常のバックプロパゲーションで行われるが、構造として重要な点は以下の二点である。
1) Convolution
Convolutionは、層と層の間を全接続するのではなく、画像上で位置的に近いところのみを接続する。また、その係数は画像上の位置によらない。定性的には、畳み込み(Convolution)により特徴抽出を行う。また接続を制限して過学習を防ぐ効果を有する。
2) Pooling
Poolingは、次の層につなげるときに、位置的な情報を削減する。定性的には位置不変性を得る。Poolingには、最大値をとるmaxpoolingや平均値を取る平均プーリングなどがある。
【0040】
CNNでは非常に大量の画像データを入力して学習を行う場合が多く、学習に非常に時間がかかるが、本実施の形態を適用することにより、短時間で学習を終わらせることが可能である。また、本実施の形態を適用することにより、従来と比較して、より深い構造のニューラルネットワークで学習を行っても時間的に問題ないため、結果的に精度を向上させることができる。
【0041】
(Recurrent ニューラルネットワーク(RNN))
RNNは、隠れ層の出力内容が、次の時刻の入力として使われるニューラルネットワークの構造である。RNNでは、出力を入力として戻すため、学習率を大きくすると容易に係数が発散してしまう。そのため、学習率を小さくして時間をかけて学習を行う必要があるが、本実施の形態を用いることにより、短時間で学習を終わらせることが可能である。また、本実施の形態を適用することにより、従来と比較して、より深い構造のニューラルネットワークで学習を行っても時間的に問題ないため、結果的に精度を向上させることができる。
【0042】
(バックプロパゲーション(学習方法))
ニューラルネットワークの学習にはバックプロパゲーション(誤差逆伝搬法とも言う)を用いる。バックプロパゲーションでは、ネットワークの出力と教師データを比較し、それを元に各出力ニューロンの誤差を計算する。出力ニューロンの誤差はそのニューロンに接続された前段のニューロンに原因があると考え、誤差が少なくなるようにニューロンの接続の重みパラメータを更新する。また、前段のニューロンについて、期待されている出力と実際の出力の差を計算する。これを局所誤差と言う。この局所誤差はさらに前段のニューロンに原因があると考え、もう一段前段のニューロンの接続の重みを更新する。こうして次々と前段のニューロンに遡って更新を行い、最終的にすべてのニューロンの接続の重みパラメータを更新していく。これがバックプロパゲーションの概要である。
【0043】
バックプロパゲーションを説明するための便宜上、
図7に示すような入力層、中間層、出力層からなるニューラルネットワークを考える。説明のための便宜上、各層における構成要素は2個としている。記号の定義は以下の通りである。
【0044】
x
i:入力データ
w
ij(1):入力層から中間層における結合係数
w
jk(2):中間層から出力層における結合係数
u
j:中間層への入力
v
k:出力層への入力
V
j:中間層からの出力
f(u
j):中間層の出力関数
g(v
k):出力層の出力関数
o
k:出力データ
t
k:教師データ
コスト関数Eを出力データと教師データの二乗誤差とすると、数2に示す式が得られる。
【0045】
【数2】
ここで、数3及び数4に示される式より、確率的勾配降下法(SGD)で最適な係数wを求めることを考えると、パラメータの更新式は数5及び数6に示される式となる。
【0049】
【数6】
数5に示される式の右辺、数6に示される式の右辺が、それぞれの更新後の係数であり、αは学習率である。
【0050】
まず、数7に示されるように、中間層と出力層の間の係数を求める。
【0051】
【数7】
ここで、数7に示される式は、数8に示される式より、数9に示される式となる。尚、ε
kは、出力層の素子kにおける誤差信号を意味している。
【0053】
【数9】
次に、入力層と中間層の間の係数を数10に示すように求める。
【0054】
【数10】
中間層の素子jの誤差信号を数11に示される式で定義すると、数12に示される式の関係となる。
【0056】
【数12】
数11に示される式について、中間層の素子数がK個の場合として、一般化すると、数13に示す式となる。
【0057】
【数13】
以上より、結合係数w
ij(1)及びw
jk(2)の更新式は、数14及び数15に示される式となり、数14及び数15に示される式より、結合係数w
ij(1)及びw
jk(2)を求めることが可能である。尚、中間層が増えた場合も同様に、1段前の誤差信号εを使用して更新式を表現する。
【0059】
【数15】
以上は、学習データが1セットとして計算してきたが、実際には複数のデータを使用する。データの数をN、n番目のデータをx
in、n番目のデータに関する各素子の誤差信号をε
kn、ε
jnとして、勾配降下法で最適化する際の更新式は、数16及び数17に示される式となる。
【0061】
【数17】
ここでのαは学習率であるが、この値が大きすぎると発散するため、入力データやネットワークの構造に応じて適切な値に設定する必要がある。尚、発散を防止するため、また、学習率は小さくすると学習に時間がかかるため、発散しない範囲で学習率αを最大に設定することが一般的に行われている。
【0062】
数5〜数17に示される式をあるステップtの学習時の更新量として記述すると、数18に示される式となる。
【0063】
【数18】
ここで、経験的に係数の収束に過去の方向を加味するようにMomentumの項を追加すると高速に学習が行われることが知られており、更新式は数19に示す式となる。
【0064】
【数19】
数19に示される式の右辺第1項がMomentumの項であり、Momentumの項のうち、数20に示される部分が、1ステップ前の更新量であり、εはMomentumの係数である。一般的にはε=0.9程度にすると有効であることが知られている。
【0065】
【数20】
(SGD)
入力データ全サンプルを評価して、更新をかけていると一回のパラメータ更新に非常に時間が掛かる。このため、ニューラルネットワークの学習では最適化問題を確率的勾配降下法(Stochastic Gradient Descent :SGD)により解くことがある。SGDは通常の勾配降下法を簡易化したものであり、オンライン学習に向いているとされる手法である。通常の勾配降下法では全データ点のコスト関数の和を最終的なコスト関数として最適化を行う。これに対して、SGDではランダムにデータ点を1つピックアップしてそのデータ点のコスト関数に対応する勾配でパラメータを更新する。更新した後、再び別のデータ点をピックアップしパラメータ更新を繰り返す。
【0066】
尚、この中間の方法として、ミニバッチと呼ばれる、全データを、複数個のデータ郡に分け、それぞれをミニバッチと呼び、そのミニバッチごとにパラメータを最適化する方法があり、多層ニューラルネットワークの学習では良く使用される。
【0067】
次に、本実施の形態における学習方法について、従来の学習方法と比較しながら説明する。
【0068】
(従来の学習方法)
従来の学習方法(通常の最適化の方法)は、最初に所定の学習率の初期値を設定し、パラメータ更新を進めるに伴い、学習率を減少させていく。これにより、最初に大きくパラメータを動かし解に近くして、その後、解に近くなったら細かい修正がかけられていくようにする。
【0069】
具体的に、従来の学習方法について、
図8に基づき説明する。
【0070】
最初に、ステップ102(S102)に示すように、学習率の初期値を設定する。学習率の初期値は、前述したように、初期においてLoss値(コスト関数値)が発散しない範囲であって、最大となる値に設定する。
【0071】
次に、ステップ104(S104)に示すように、初期値の学習率で学習を開始する。この学習では、学習が進むに伴い、即ち、パラメーラの更新が進むに伴い、学習率を減少させながら学習を進める。例えば、10万回パラメータの更新を行ったら、そこで学習率を一桁落としていきながら学習を進める。学習は、例えば、パラメータの更新回数が所定の回数となった場合等に終了する。
【0072】
(本実施の形態における学習方法)
次に、本実施の形態における学習方法について説明する。本実施の形態における学習方法は、学習率の初期値は、初期においてLoss値が発散しない範囲であって、最大となる値に設定する点は、従来と同様であるが、パラメータの更新が進んだ後に、少なくとも一回は、学習率を大きくする。これにより、初期の発散を抑えつつ、学習開始後に最初にパラメータの方向や、適切な初期値が決まった後に、パラメータの変更量が大きくなるため、学習の進みが早くなる。この際、前述のMomentumの項も併用することにより、パラメータの更新の方向も維持されるため、より学習速度を大きくすることが可能となる。尚、この場合、途中で学習率を大きくしても、Momentumの係数は、連続性が保たれていることが好ましい。
【0073】
尚、途中で大きくする学習率の値は、学習率の初期値よりも大きな値であることが好ましく、更には、この途中で大きくする学習率を学習率の初期値とした場合には、Loss値が発散してしまう値であることが好ましい。
【0074】
また、最初からどの時点で学習率を上げるかスケジュールするのではなく、学習を開始時より、一定以上Loss値(正答率など学習が進んだかに係る指標値)が下がったと判断した時点において、自動的に学習率を上げるものであってもよい。
【0075】
具体的に、本実施の形態における学習方法について、
図9に基づき説明する。
【0076】
最初に、ステップ202(S202)に示すように、学習率の初期値及び途中で大きくする学習率の値を設定する。学習率の初期値は、前述したように、初期においてLoss値が発散しない範囲であって、最大となる値に設定する。途中で大きくする学習率の値は、直前の学習率よりも大きな値、具体的には、後述する第1の学習の最後の学習率よりも大きな値に設定する。更には、途中で大きくする学習率の値は、学習率の初期値よりも大きな値、即ち、学習率の初期値をその値にした場合に、Loss値が発散してしまう値に設定してもよい。第1の学習は、学習率が初期値のままの値で学習を行ってもよく、また、学習が進むに伴い、学習率が初期値よりも減少させて学習を行ってもよい。
【0077】
次に、ステップ204(S204)に示すように、第1の学習を行う。第1の学習は、初期値の学習率で学習を開始し、学習が進むに伴い、即ち、パラメーラの更新が進むに伴い、学習率を減少させながら学習を進める。また、学習率を減少させることなく、初期値の学習率のままで学習を行ってもよい。第1の学習は、例えば、パラメータの更新回数が所定の回数となった場合や、Loss値が所定の値まで減少した場合等に終了する。
【0078】
次に、ステップ206(S206)に示すように、学習率を大きくする。具体的には、学習率の値をステップ202において設定した途中で大きくする学習率の値にする。
【0079】
次に、ステップ208(S208)に示すように、第2の学習を行う。第2の学習は、途中で大きくした学習率で学習を開始し、学習が進むに伴い、即ち、パラメーラの更新が進むに伴い、学習率を減少させながら学習を進める。尚、第2の学習では、学習が進むに伴い、学習率を単調減少させながら学習を進めてもよい。第2の学習は、例えば、パラメータの更新回数が所定の回数となった場合や、Loss値が所定の値まで減少した場合等に終了する。
【0080】
尚、第2の学習において、途中で大きくした学習率が初期値よりも大きくても、Loss値が発散しないのは、既に第1の学習をある程度行っているからである。また、第1の学習及び第2の学習は、バックプロパゲーションの更新式により行われるものであってもよく、このバックプロパゲーションの更新式は、Momentumの項を含むものであってもよい。また、本実施の形態においては、第1の学習から第2の学習に移行する際には、学習率を大きくしているが、上述したように、Momentumの項は連続性が保たれている。
【0081】
以上のように、学習率を途中で大きくすることにより、同じパラメータの更新回数であっても、Loss値を低くすることができる。言い換えるならば、所定のLoss値に至るまでのパラメータの更新回数を減らすことができ、短時間で学習を完了することができる。
【0082】
(学習結果)
次に、上記の従来の学習方法と本実施の形態における学習方法において、実際に学習を行った結果について説明する。
【0083】
学習データは約120万枚の画像データであり、入力画像を1000クラスに分類する課題に対する22層のCNNの学習における結果である。ネットワーク構成は、非特許文献2に記載されているmodelCに基づくものである。
【0084】
従来の学習方法では、Momentumは0.9、学習率の初期値はLoss値が発散しない範囲であって、最大の値となる0.001、学習率は、10000更新回数(iteration)ごとに0.8倍となるように設定した。尚、クラス識別の性能を示すLoss値を求めるLoss関数としては、softmax関数を用いた。
【0085】
また、本実施の形態における学習方法では、Momentumは0.9、学習率の初期値はLoss値が発散しない範囲であって、最大の値となる0.001、学習率は、10000iterationごとに0.8倍となるように設定した。また、学習の途中の15000iterationにおいて、学習率が大きくなるように設定した。
【0086】
本実施の形態における学習方法において、途中で大きくする学習率の大きさと学習を進めた場合におけるLoss値の発散について調べた。具体的には、途中で大きくする学習率が、直前の学習率の2倍となる0.0016、5倍となる0.004、7.5倍となる0.006、10倍となる0.008、20倍となる0.016、30倍となる0.024、40倍となる0.032場合について調べた。この結果、途中で大きくする学習率が、直前の学習率の2倍となる0.0016、5倍となる0.004、7.5倍となる0.006、10倍となる0.008、20倍となる0.016の場合はLoss値が発散しなかった。これに対し、途中で大きくする学習率が、30倍となる0.024、40倍となる0.032の場合ではLoss値が発散した。従って、本実施の形態における学習方法の1つである上記のモデルの学習方法では、途中で大きくする学習率が、直前の学習率の20倍以下であれば、学習を進めることができる。
【0087】
図10は、従来の学習方法と、本実施の形態における学習方法における更新回数とLoss値との関係を示す。Loss値は低いほど学習が進んでいることを意味する。
図10において、10Aは、従来の学習方法の場合である。10B及び10Cは、本実施の形態における学習方法であって、10Bは、途中で大きくする学習率が、直前の学習率の2倍となる0.0016の場合、10Cは、5倍となる0.004の場合を示す。
【0088】
図10の10Aに示される従来の学習方法の場合、学習率が、最初に0.001から開始し、10000iterationごとに、直前の0.8倍で減少するように設定されている。即ち、学習率が、最初に0.001から開始し、10000iterationで0.0008、20000iterationで0.00064、30000iterationで0.000512と次第に減少する。
【0089】
また、
図10の10Bに示される本実施の形態における学習方法の場合、学習率は、最初に0.001から開始し、10000iterationで0.0008と減少した後、15000iterationで学習率を直前の2倍の0.0016と大きくする。この後、20000iterationで0.00126、30000iterationで0.001024と次第に減少するように設定されている。
【0090】
また、
図10の10Cに示される本実施の形態における学習方法の場合、学習率は、最初に0.001から開始し、10000iterationで0.0008と減少した後、15000iterationで学習率を直前の5倍の0.004と大きくする。この後、20000iterationで0.0032、30000iterationで0.00256と次第に減少するように設定されている。
【0091】
このように、本実施の形態における学習方法である10B及び10Cは、15000iterationで第1の学習から、第2の学習へと切り替わる。
【0092】
この結果、10A、10B、10CのLoss値は、最初から15000iterationの直前までは同じである。しかしながら、15000iterationにおいて、学習率を大きくした本実施の形態である10B、10Cは、Loss値が一時的に大きくなる。この際、途中で直前の学習率の2倍とした10Bよりも、学習率を5倍とより大きくした10Cの方が、Loss値がより大きくなる。従って、この時点においては、Loss値は、上から順に、10C、10B、10Aとなっている。
【0093】
この後、学習を進めるに従い、10A、10B、10Cは、Loss値が減少するが、約20000iterationでほぼ同じとなる。これは、学習の途中で学習率を大きくすると、その後の学習が短時間で進行するため、Loss値の減少の度合も高くなるからである。この後、更に学習を進めると、Loss値の順序が逆転し、上から順に、10A、10B、10Cとなり、学習を進めるほど、その差が広がっていく。この結果、32000〜35000iterationにおいては、従来の学習方法である10Aは、Loss値が4.0〜4.2となり、本実施の形態である10Bは、Loss値が3.7〜4.0となり、10Cは、Loss値が3.5〜3.8となる。従って、本実施の形態における学習方法は、従来の学習方法よりも、所定の更新回数の学習を進めた際のLoss値を低くすることができるため、短時間で学習を完了させることができる。
【0094】
本実施の形態における学習方法においては、途中で大きくする学習率の倍率が、大きければ、短時間で学習を完了させることができるが、大きすぎるとLoss値が発散してしまう。このため、途中で大きくする学習率は、Loss値が発散しない範囲で最大となるように、設定すると最も短時間で学習が完了するものと推察される。
【0095】
以上、本発明の実施に係る形態について説明したが、上記内容は、発明の内容を限定するものではない。