JP2018160200A - ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置 - Google Patents
ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置 Download PDFInfo
- Publication number
- JP2018160200A JP2018160200A JP2017058352A JP2017058352A JP2018160200A JP 2018160200 A JP2018160200 A JP 2018160200A JP 2017058352 A JP2017058352 A JP 2017058352A JP 2017058352 A JP2017058352 A JP 2017058352A JP 2018160200 A JP2018160200 A JP 2018160200A
- Authority
- JP
- Japan
- Prior art keywords
- learning
- parameter
- output
- accuracy
- value
- 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.)
- Pending
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
【課題】学習工程を効率的に完了する。【解決手段】教師データを使用してニューラルネットワーク(以下NN)のNNパラメータを最適化するNNの学習方法であって、第1のNNパラメータが設定されたNNに前記教師データを入力したときの、NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を第1のNNパラメータから減じて得た第2のNNパラメータに、NNパラメータを更新する学習工程と、第2のNNパラメータが設定されたNNに評価データを入力し、NNの出力の精度(正答率、Loss)を求める評価工程と、NNの出力の精度が最良値の場合、第2のNNパラメータ(w)を記憶する工程と、更に、NNの出力の精度が改善されない第1状態になった場合、NNパラメータを前記記憶したNNパラメータに戻すと共に、学習率を低下させる工程とを有し、第1状態になった場合、戻したNNパラメータを設定したNNで、低下させた学習率で、学習工程を再開する、NNの学習方法。【選択図】図7
Description
本発明は,ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置に関する。
機械学習のモデルであるニューラルネットワーク(Neural network: 以下NNと称する)や、ディープニューラルネットワーク(Deep Neural Network: 以下DNNと称する。)は、教師データを与えられて学習を行う。NNまたはDNN(以下簡単のためにまとめてNNと称する)の学習では、NNに教師データを入力し、NNの演算を実行して出力を得る。そして、出力と教師データの正解値との誤差が少なくようにNNのパラメータを更新する。誤差が許容値未満になるまで収束すれば、学習を終了し、更新されたパラメータをNNに設定する。学習によって最適化されたNNは、処理対象の入力(画像、音声、テキストなど)を与えられると、NNの演算を実行し、出力を算出または推定する。
NNの学習方法について、以下の特許文献に記載されている。
NN,特に近年注目されているDNNは、学習工程が非常に長時間を要する。例えば、画像認識コンテストで使用されるDNNと教師データのセットでは、グラフィックプロセッサなどの汎用プロセッサのアクセレータを使用して演算したとしても、1週間以上を要することが報告されている。
一般に、学習工程を短縮する方法として、学習率を初期値は大きくし、誤差関数値が収束するにつれて、徐々に小さくすることが提案される。しかし、単に学習率を徐々に低下させても、正解率や誤差が急に悪化したり学習工程を継続しても改善せず収束できない場合がしばしば発生する。
そこで,第1の実施の形態の目的は,学習工程を効率的に完了するニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置を提供することにある。
第1の実施の形態は,教師データを使用してニューラルネットワーク(以下NN)のNNパラメータを最適化するNNの学習方法であって、第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第2のNNパラメータに、前記NNパラメータを更新する学習工程と、前記第2のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、前記NNの出力の精度が最良値の場合、前記第2のNNパラメータを記憶する工程と、更に、前記NNの出力の精度が改善されない第1状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、前記第1状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、NNの学習方法である。
第1の実施の形態によれば,ニューラルネットワークの学習工程を効率的に完了することができる。
本実施の形態の学習方法は、ニューラルネットワーク(NN)とディープニューラルネットワーク(DNN)のいずれにも適用可能である。但し、以下の説明では、DNNを例にして説明するが、NNにも適用可能である。
図1は、本実施の形態におけるDNN学習装置であるDNN装置の構成を示す図である。DNN装置1は、コンピュータやサーバのような情報処理装置である。DNN装置1は、プロセッサ10と、メインメモリ12と、ネットワークインタフェース14と、大容量の補助記憶装置16とを有する。
補助記憶装置16には、DNNプログラム20と、DNNに設定されるDNNのパラメータ22と、DNN学習プログラム24と、DNNの学習に使用する教師データ及び評価データ26とが記憶される。教師データと評価データは、DNNに入力する入力と、その時のDNNの正しい出力である正解値とを有する。つまり、教師データと評価データは同じであり、但し、学習工程では教師データとして、評価工程では評価データとして使用される。そして、DNNプログラム20と、DNNに設定されるDNNのパラメータ22と、DNN学習プログラム24と、DNNの学習に使用する教師データ及び評価データ26とが、メインメモリ12内に展開され、プロセッサが各プログラムを実行する。
ネットワークインタフェース14がネットワークNWに接続され、DNN装置1は、外部の端末装置30,32とネットワークNWを介して通信可能に接続される。
DNN装置1は、ディープラーニングのモデルとして、ディープニューラルネットワーク(DNN)を採用する。DNN装置1は、DNNへの入力データとその正解データとを有する教師データ及び評価データ26を提供される。そして、プロセッサ10は、DNN学習プログラム24を実行し、教師データを使用してDNNの学習を実行し、DNNの最適なパラメータ(例えば重み)を決定する。また、プロセッサは、DNN学習プログラムを実行し、評価データを使用してDNNの出力の精度を評価する。さらに、プロセッサは、学習処理で抽出した最適のパラメータをDNNプログラム20に設定し、DNNプログラム20を実行して、処理対象の画像等からのDNNモデルの所期の推定処理を行う。
DNNプログラム20は、モデルのDNNの各種演算処理を実行するプログラムである。DNN学習プログラム24は、モデルのDNNの学習や評価に伴うDNNの各種演算処理と、最適なパラメータを抽出する処理とを実行するプログラムである。DNN学習プログラムは、DNNの演算処理をDNNプログラム20をコールすることで実行する。DNNは教師データを使用して学習することでパラメータを最適化するので、DNNプログラム20には、DNN学習プログラム24が必ず添付または内蔵される。
図2は、DNNの構成例を示す図である。DNNは、例えば、入力層INPUT_Lと、複数のDNNユニットDNN_U1〜DNN_Unと、全結合層FULCON_Lと、出力層OUTPUT_Lとを有する。各DNNユニットDNN_U1〜DNN_Unは、入力層の画像データなどをフィルタを構成する重みWで畳込み演算する畳込み層CONV_Lと、畳込み層の演算結果を活性化関数(例えばシグモイド関数)で判定する活性化関数層ACTF_Lと、例えば局所的な演算結果の最大値を抽出するプーリング層POOL_Lとを有する。DNNユニットの数は適切にチューニングされる。
図3は、DNN内に含まれる3層構造のネットワークの例を示す図である。図3の例は、入力X1〜Xnが入力される入力層INPUT_Lと、中間層(または隠れ層)IM_Lと、出力Z1〜Znが出力される複数の出力ノードを有する出力層OUTPUT_Lとを有する。このネットワークでは、入力層の入力X1〜Xnにそれぞれの重みw11〜w16が乗算され累積した値が中間層IM_Lに伝播する。この重みはネットワークのパラメータである。中間層IM_Lには前述の活性化関数f1が配置され、中間層の各ノードの値Y1〜Ynは、以下の通りになる。
Yk = f1(Σ(w*Xk)−θ1)
ここで、θ1はシグモイド関数f1の閾値、kは入力層のノード番号及び出力層のノード番号であり、k=1〜nである。
Yk = f1(Σ(w*Xk)−θ1)
ここで、θ1はシグモイド関数f1の閾値、kは入力層のノード番号及び出力層のノード番号であり、k=1〜nである。
さらに、中間層の値Y1〜Ynも同様に、それぞれの重みw21〜w26が乗算され累積した値が出力層OUTPUT_Lに伝播する。そして、出力層には別の活性化関数f2が配置され、出力層の値Z1〜Znは、以下の通りになる。
Zk = f2(Σ(w*Yk)−θ2)
よって、出力層の出力Zkは、2つの関数f1、f2の合成関数であり、パラメータである複数の重みを変数とする多変数関数である。
Zk = f2(Σ(w*Yk)−θ2)
よって、出力層の出力Zkは、2つの関数f1、f2の合成関数であり、パラメータである複数の重みを変数とする多変数関数である。
図4は、DNNの学習方法の概略を示すフローチャート図である。図4の学習方法は、勾配降下法の1つであるミニバッチ法と呼ばれる方法である。この学習法では、プロセッサは、DNNのパラメータをランダムに選択した初期値に設定する(S40)。そして、多数の教師データから少数(例えば10個)の教師データをランダムに選択し(S41)、選択した少数の教師データの入力を、パラメータの初期値を設定したDNNに入力し、DNNの演算を実行して出力を得る(S42)。そして、プロセッサは、選択した少数の教師データ全てについて、DNNの出力と正解値との差分の二乗和の総和Eを算出する(S43)。ここで、差分の二乗和は一つの教師データに対する各出力ノードの出力とその正解値との差分の二乗を累積したものであり、その総和は、10個の教師データそれぞれの差分の二乗和を累積したものである。
プロセッサは、この二乗和の総和が基準値未満に収束したか否か判定し(S44)、基準値未満でなければ(S44のNO)、二乗和の総和の勾配ΔEに基づいて、DNNの新たなパラメータ(重み)を求め、DNNに設定する(S45)。プロセッサは、DNN内の複数の重みを更新するために、誤差逆伝播法により出力層の出力値と正解値との差分である誤差を、DNNの入力層側に伝播させて、各層間の重みを勾配に基づいて更新する。
そして、プロセッサは、工程S44の判定がYESになるまで、工程S41からS44の処理を、それぞれ別の少数の教師データを使用して繰り返す。工程S44の判定がYESになると、その時のパラメータをDNNの最適化されたパラメータとして出力する。
ミニバッチ法は、少数の教師データについての誤差の二乗和の総和に基づいて、勾配降下法でパラメータを更新する。したがって、教師データに通常の入力と正解値から遠くかけ離れたアブノーマルなものが含まれていても、そのアブノーマルな教師データによる悪影響を抑制できるという利点があるといわれている。
ミニバッチ法ではない逐次更新学習法では、1つの教師データについて出力層の複数のノードの誤差の二乗和に基づいて、勾配降下法でパラメータを更新する。逐次更新学習法を採用した場合も、本実施の形態を適用することができる。
図5は、勾配降下法を説明する図である。横軸は、DNNのパラメータである重みwを、縦軸は、誤差の二乗和の総和である誤差関数Eを示す。図5では、説明を簡単にするために、単一の重みwの軸しか示していない。但し、前述のとおりDNNの重みwは複数であり、したがって、誤差関数Eは多変数関数である。
誤差関数Eは、図3のネットワークの例では、例えば以下のとおりである。
E = 1/2*Σk(Zk−tk)2
ここで、k=1〜n、Zkは、図3に示したとおり、出力層の複数のノードそれぞれの出力値であり、tkは教師データの正解値である。出力値Zkは、複数の重みを変数とする多変数関数であるので、誤差関数Eも同様に複数の重みを変数とする多変数関数である。
E = 1/2*Σk(Zk−tk)2
ここで、k=1〜n、Zkは、図3に示したとおり、出力層の複数のノードそれぞれの出力値であり、tkは教師データの正解値である。出力値Zkは、複数の重みを変数とする多変数関数であるので、誤差関数Eも同様に複数の重みを変数とする多変数関数である。
ミニバッチ法の場合は、少数の複数の教師データに対する誤差の総和が誤差Eとなるので、次のとおりとなる。
E = 1/2*Σl{Σk(Zk−tk)2}
ここで、l=1〜L、Lは複数の教師データの数である。
E = 1/2*Σl{Σk(Zk−tk)2}
ここで、l=1〜L、Lは複数の教師データの数である。
図5を参照して勾配降下法を説明すると、プロセッサは、パラメータである重みwを初期値w1に設定したDNNに教師データの入力を入力して得られた出力Zと教師データの正解値tとの差分である誤差の二乗和の総和Eを求める。これは図4の工程S41−43に対応する。そして、工程S45のとおり、プロセッサは、誤差の二乗和の総和Eの勾配ΔEと学習率ηに基づいて、次の式により重みwを更新する。
wnew = wold - η*(ΔE)
ここで、woldは更新前の重み、wnewは更新後の重みである。ΔEは、誤差関数Eを各変数(重み)で偏微分した値であり、ΔE=∂E/∂wである。学習率ηは、多くの場合0≦η≦1であり、例えば0.0001から0.1など小さな値を取ることが多い。
wnew = wold - η*(ΔE)
ここで、woldは更新前の重み、wnewは更新後の重みである。ΔEは、誤差関数Eを各変数(重み)で偏微分した値であり、ΔE=∂E/∂wである。学習率ηは、多くの場合0≦η≦1であり、例えば0.0001から0.1など小さな値を取ることが多い。
勾配が負であれば更新後の変数は図5の右方向に移動し、勾配が正であれば更新後の変数は左方向に移動する。図5の例では、変数がw1の場合の勾配が負であり、更新後の変数w2は右方向に移動している。DNNの複数の層の間にそれぞれ変数が設定される。そのため、DNNの出力層の出力と正解値との差分である誤差を、誤差逆伝播法によりDNNの入力層側に伝播し、各層の変数を上記の演算式により更新する。
図5の例では、プロセッサは、変数w2が設定されたDNNに別の教師データの入力を入力して出力Zを求め、正解値tとの誤差の二乗和の総和Zを求める。そして、プロセッサは、誤差の二乗和の総和の勾配ΔEと学習率ηに基づいて、前述の式により新たな重みを計算する。図5の例では、変数w2での勾配ΔEも負である。
以下同様にして、プロセッサは、新たな重みで更新されたDNNについて教師データを使用して誤差の二乗和の総和Zを求め、その勾配と学習率に基づいて上記の式により新たな重みを計算することを繰り返す。図5の例では、重みw3,w4,w5で続けて勾配が負となるが、次の重みw6では勾配が正となり、プロセッサは、その後学習率を小さくすることで、誤差の二乗和Zが最小値となる重みwminを検出する。
[本実施の形態]
[勾配降下法の問題点]
勾配降下法の問題点の一つは、学習率の選択の困難性である。学習率を低く選択すると、DNNの精度(正解率や誤差)がなかなか改善されず、学習工程が長時間になる。一方で、学習率を高く選択すると、初期の学習の進捗は早くなりある程度の精度になるまでの時間は短くできるが、途中で学習が破綻し、精度が逆に大きく低下(悪化)したまま改善されなくなることもある。
[勾配降下法の問題点]
勾配降下法の問題点の一つは、学習率の選択の困難性である。学習率を低く選択すると、DNNの精度(正解率や誤差)がなかなか改善されず、学習工程が長時間になる。一方で、学習率を高く選択すると、初期の学習の進捗は早くなりある程度の精度になるまでの時間は短くできるが、途中で学習が破綻し、精度が逆に大きく低下(悪化)したまま改善されなくなることもある。
NN、とりわけDNNの学習は非常に時間がかかる。画像認識コンテストで使われるDNNと教師データでは、GPU(Grafic Processor Unit)のようなハードウエアセラレータを用いても、学習工程が1週間以上かかるものがある。そのため、学習率を高くして学習工程を短縮化しようとすると、学習が破綻して最初からやり直しが必要となり、逆に学習工程が長期化することがある。
また、学習中にDNNの精度が当初は大きく改善した後、徐々に悪化することもある。このような場合も学習率を選びなおすことで徐々に悪化することを回避できる場合がある。
図6は、勾配降下法の問題点について説明する図である。図6の誤差Eの曲線は図5と同じであるが、図6の例では、学習率ηが図5よりも高く設定され且つ一定とする。図中、tは学習サイクルの時を示し、各tでのWは時間tにおける重みを示す。図6の誤差Eの曲線は、誤差Eが最小になる点(重みWmin)と、最小ではないが極小点(重みWlocal)とを有する。目標は誤差Eを最小化する重みWminであり、重みWlocalは誤差Eを局所解に落とし込む重みである。誤差Eが最小化することはDNNの出力の精度が最良になることである。
時間t=1の、初期値の重みW1が設定されたDNNでは、勾配∂E/∂wは負で絶対値が大きいため、更新後の重みW2は正の方向(右方向)に大きく移動し、また、誤差関数E(W2)も大きく減少している。
時間t=2の、重みW2が設定されたDNNでは、勾配∂E/∂wは負で絶対値が中で、更新後の重みW3は正の方向(右方向)に時間t=1よりは小さいが比較的大きく移動している。但し、誤差関数E(W3)はむしろ増加している。
次に、時間t=3の、重みW3が設定されたDNNでは、勾配∂E/∂wは負で絶対値が小であるため、更新後の重みW4はさらに正の方向(右方向)に少し移動している。勾配の絶対値が小さいため、更新後の誤差関数E(W4)はE(W3)とほとんど同じで増減しない。
次に、時間t=4の、重みW4が設定されたDNNでは、勾配∂E/∂wは正で絶対値が小であるため、更新後の重みW5(=W3)は逆に負の方向(左方向)に少し移動し、更新後の誤差関数E(W5)はE(W4)とほとんど同じで増減しない。
その後、時間tが奇数ではt=3での誤差Eの付近を、偶数ではt=4での誤差Eの付近を超えないように左右に振動し、最終的に局所解Wlocal付近に留まる。一般には、プロセッサは、学習が停滞したとみなし、学習率ηを下げていくため、左右の振れ幅は徐々に小さくなり、最終的に局所解Wlocalに収束する。
上記において、時間t=2と時間t=3での誤差関数Eの値の差分dEは非常に大きく、学習が破綻したともいえる。しかし、上記のとおり、図6の例では最終的に局所解に収束している。
[DNNの学習工程]
図7は、本実施の形態におけるDNNの第1の学習処理のフローチャート図である。まず、プロセッサは、DNNのパラメータ(重み、シグモイド関数の閾値等)、学習処理のパラメータ(学習率η、正解率の瞬間値Anと最大値Amax等)を初期化する(S1)。
図7は、本実施の形態におけるDNNの第1の学習処理のフローチャート図である。まず、プロセッサは、DNNのパラメータ(重み、シグモイド関数の閾値等)、学習処理のパラメータ(学習率η、正解率の瞬間値Anと最大値Amax等)を初期化する(S1)。
次に、プロセッサは、学習工程S100を実行する。学習工程S100では、プロセッサが、複数の教師データを使用する学習を所定回数(M回)実行する(S11)。ここでの複数の教師データを使用する学習とは、例えば、図4の工程S41〜S45(但しS44は除く)である。工程S11についての具体例は後述する。プロセッサは、複数の教師データを使用する学習工程それぞれで、図4の勾配降下法によりDNNのパラメータ(重み等)を更新する。
そして、学習工程S100では、プロセッサが、工程S11で更新されたパラメータを設定したDNNで、認識テストを実行し、DNNの正解率Anを取得する。認識テストとは、工程S11で使用したのとは別の教師データまたは評価データの入力でDNNの演算(推定)を実行し、DNNの出力が教師データまたは評価データの正解値と一致(正解)するか、不一致(非正解)かを判定する。したがって、認識テストは、DNNの出力と正解値との誤差に基づいてDNNのパラメータを更新する工程を行わないことを除くと、工程S11での学習と同等である。つまり、工程S11で最後の教師データの入力についてDNNの出力を演算し、そのDNNの出力が正解値と一致するか否かを判定することと同等である。
上記の正解率Anは、DNNの精度の1つである。DNNの精度の別の例は、教師データまたは評価データの入力でDNNの演算を実行して得た出力と、教師データまたは評価データの正解値との誤差(損失関数、LOSS)でもよい。この誤差は、学習工程と同様に出力と正解値との差分の二乗和でよい。DNNの出力層が複数の出力ノードを有する場合、その複数の出力ノードそれぞれの出力と、複数の出力ノードそれぞれの正解値とのそれぞれの差分の二乗和である。
正解率は、例えば、複数回認識テストを実行し、出力が正解値と一致した正解の回数を認識テストの回数で除した比率である。逆に誤差(損失関数、LOSS)は、例えば、複数回認識テストを実行し、それぞれの誤差(E=(1/2)*Σk(yk-tk)2)を合計した値または平均した値である。
上記の学習工程S100を1回の学習サイクルと称する。そして、プロセッサは、学習工程S100の回数を学習サイクル数nとしてカウントする(S13)。
次に、プロセッサは、学習工程の状態の記憶工程と、学習工程の破綻判定を含む破綻判定工程S200を実行する。破綻判定工程S200では、プロセッサは、その時の正解率Anがそれまでの正解率の最良値(最大値)Amaxより良いか否か(大きいか否か)の判定(S21)と、良い場合(大きい場合)にその時の正解率Anを正解率の最良値(最大値)Amaxに、DNNのパラメータと学習サイクルを状態Smaxに記憶する工程(S22)とを実行する。これらの工程S21,S22が、学習工程の状態の記憶工程に該当する。
さらに、プロセッサは、その時の正解率Anがそれまでの正解率の最大値Amaxと比較して破綻しているか否かの判定工程(S23)と、破綻と判定した場合(S23のYES)にDNNのパラメータと学習サイクルを過去の状態Smaxに戻し、学習率ηを減少させる。この工程S23とS24が学習工程の破綻判定に該当する。判定工程S23では、例えば、その時の正解率Anが最大値Amaxと比較して大きく悪化した場合や、大きく悪化した状態が何回も継続して起こった場合に、学習が破綻していると判定する。
この破綻判定工程S200では、プロセッサは、DNNの学習を繰り返す工程中に、更新されたパラメータのDNNの精度(正解率や誤差)が最良値から長期にわたり改善されない場合や、大きくかけ離れた状態に陥った場合、学習が破綻したと判定する。そして、破綻したと判定した場合、DNNを過去に正解率が最大値Amaxとなった時の状態Smaxに戻して、学習率ηを低下させて、学習を再開する。プロセッサは、過去に正解率が最大値Amaxとなった時の状態Smaxよりも所定の学習サイクル数だけ過去の状態にDNNを戻すようにしても良い。
そして、プロセッサは、学習工程S100と破綻判定工程S200とを所定のサイクル完了するまで(S31のYES)、またはDNNの正解率Amaxが期待値より高くなるまたは高い値に収束するまで(S31のYES)、学習工程S100と破綻判定工程S200とを繰り返す。工程S31でYESになると、プロセッサは、DNNのパラメータ(重みとシグモイド関数の閾値)を保存し(S32)、DNNの学習を終了する。
上記のように、プロセッサは、DNNのパラメータや学習率などを定期的に保存し、DNNの精度が長期にわたり改善されない場合や精度が発散した場合などに学習が破綻したと判断し、過去に保存していた数世代前の状態にDNNを戻し、学習率を下げ、DNNの学習を再開する。
より具体的には、プロセッサは、学習が破綻したことを検出すると、DNNを過去の状態Smaxまたは状態Smaxより所定の学習サイクル数過去に遡った状態に戻し、学習率ηを低下させて、学習を再開するので、その後の学習工程で学習が破綻する状態を回避することができる。また、学習を最初からやり直すよりも、全体の学習工程を短くできる。
図8は、本実施の形態におけるDNNの第2の学習処理のフローチャート図である。図8の第2の学習処理は、破綻判定工程S200が図7と異なる。初期化工程S1と、学習工程S100と、工程S31,S32は、図7と同じである。但し、第2の学習工程では、学習の破綻を判定する正解率の大幅低下回数uをカウントする。そのため、初期化工程S1では、プロセッサは正解率の大幅低下回数uをu=0と初期化する。
図8の破綻判定工程S200では、プロセッサは、その時の正解率Anがそれまでの正解率の最大値Amaxより破綻閾値である基準値Kより大きく低下したか否か(An<Amax-K?)を判定し(S231)、大きく低下した場合、大幅低下回数をu=u+1とインクリメントする(S232)。そして、プロセッサは、正解率Anが大きく低下することが連続U回発生すると、つまり大幅低下回数uがU回に達すると(S233のYES)、学習が破綻したと判定する。
学習の破綻を判定すると、プロセッサは、DNNを過去の状態Smaxに変更し、学習率ηを減少させ、大幅低下回数uを初期化(u=0)する(S24B)。図8の工程24Bは、図7の工程S24と異なり、大幅低下回数uの初期化を行う。また、プロセッサは、その時の正解率AnがAmax-K以上の場合(S21のYES、S231のNO)、大幅低下回数uを初期化(u=0)する(S234)。つまり、プロセッサは、その時の正解率AnがAmax-K未満になることが連続してU回に達すると学習の破綻を判定する(S233)。したがって、プロセッサは、その時の正解率AnがAmax-K以上になると(S231のNO)、大幅低下回数uをリセットする(S234)。
上記の破綻の判定方法によれば、DNNの出力の精度が長期にわたり改善されない場合や、精度が大きく悪化した場合に、学習が破綻したと判定することができる。
図8に示した破綻判定工程S200は、一例である。例えば、プロセッサは、その時の正解率Anが最大値Amaxの所定比率L(0<L<1.0)倍未満になることが連続してU回に達すると学習の破綻を判定するようにしてもよい。
または、別の例では、最大値Amaxが高くなるにしたがって、上記の破綻閾値である基準値Kを小さく、または比率Lを高くするようにしてもよい。通常、学習工程を繰り返すと正解率の最大値は上昇するので、学習の開始期間では、基準値Kを大きくまたは比率Lを低くして学習の破綻程度を大きくし、学習の最終期間では、基準値Kを小さくまたは比率Lを高くして、学習の破綻程度を小さくするようにする。
図9は、本実施の形態におけるDNNの第3の学習処理のフローチャート図である。図9には、図7または図8の学習工程S100の変形例が示される。第3の学習処理では、初期化工程S1と学習の破綻判定工程S200と、工程S31,S32は、図7または図8と同じである。
図9に示した第3の学習処理での学習工程S100では、プロセッサは、複数(N個)の教師データでDNNの演算を実行し(S111)、各教師データで演算したDNNの出力ykと教師データの正解値tkとの差分の二乗和を、N個の教師データ分累積した、二乗和の総和である誤差関数Eの値を算出する(S112)。前述のとおり、DNNの出力層が複数の出力ノードを有する場合、教師データの入力に対して演算したDNNの出力値は複数生成されるので、各教師データでの出力ykと正解値tkとの差分の二乗和は、複数のノードの出力とその正解値との差分の二乗和である。そして、工程S112では、プロセッサは、教師データそれぞれに対する二乗和を、N個の教師データ分加算した総和Eを算出する。
そして、プロセッサは、誤差関数Eの傾きΔEを求め、勾配降下法によりDNNのパラメータ(複数の重みW)を更新する(S113)。上記の工程S111〜S113はミニバッチ法と呼ばれる学習である。そして、プロセッサは、上記の工程S111〜S113を、所定回数(M回)繰り返す(S114)。
上記の工程S111〜S114は、図7、図8の工程S11に対応する。このように、プロセッサは、工程S111〜S113の学習を所定回数(M回)繰り返す。
さらに、学習工程S100では、プロセッサは、所定回数(M回)繰り返したDNNのパラメータ(重みW)を設定したDNNで、認識テストを複数回実行する(S121)。そして、プロセッサは、複数回の認識テストで得られた正解率An(DNNの出力が正解値と一致する回数を認識テストの回数で除した比率)を算出する(S122)。上記の工程S121とS122が、図8、図9の工程S12に該当する。
第3の学習処理での学習工程S100では、上記の工程S111〜S114とS121〜S122を、統計回数繰り返す(S123のNO)。この統計回数とは、次のような意味である。すなわち、認識テストで使用した教師データのばらつきに対して出力の精度(正解率や誤差)がばらつくことが経験上知られている。そこで、プロセッサは、学習工程S100を出力の精度(正解率や誤差)のばらつきを適切に抑制できる程度の統計回数だけ繰り返す。そして、プロセッサは、統計回数の学習工程S100が完了すると(S123のYES)、学習サイクル数nをn=n+1とインクリメントすると共に、M回の学習工程で取得したM個の正解率の中央値を学習サイクルnでの正解率Anとして生成する(S131)。
工程S131は、図8、図9の工程S13に対応し、工程S13と異なり、正解率AnはM個の正解率の中央値である。正解率Anは、例えば、M個の正解率の最小二乗法により求めた値でもよい。
図10は、正解率及び誤差(損失関数、LOSS)と学習回数との関係を示す図である。左側のグラフでは、縦軸が正解率、横軸が学習回数であり、右側のグラフでは、縦軸が誤差(LOSS)、横軸が学習回数である。図10の(1)は、学習毎(つまり学習に含まれる認識テスト毎)にばらつく正解率と誤差(LOSS)の一例を示す。それに対して、図10の(2)は、所定回数の正解率と誤差(LOSS)の中央値(黒点)を示す。
図10の(1)に示されるとおり、学習毎に認識テストの教師データのばらつきに応じて、正解率や誤差(LOSS)も大きくばらつく。そこで、第3の学習処理の学習工程S100では、プロセッサは、M回の学習で取得したM個の正解率やM個の誤差(LOSS)の中央値を、その時の正解率Anまたは誤差(LOSS)として記憶する。
図6に戻り、本実施の形態の図7、図8、図9の学習処理を適用した場合の学習処理について説明する。図6では縦軸が誤差(LOSS)に対応付けられているのに対して、図7、図8、図9は正解率An、最大正解率Amaxで説明が行われている。そこで、正解率Anの代わりに誤差(LOSS)E、最大正解率Amaxの代わりに誤差(LOSS)の最良値として、説明する。
まず、プロセッサは、時間t=2で重みW2のDNNの誤差(LOSS)を最良値として記憶し(S22)、次の時間t=3で重みW3のDNNの誤差(LOSS)と最良値との差dEが破綻閾値Kを超えることを検出する。更に、プロセッサは、時間t=4以降のDNNの誤差(LOSS)と最良値との差dEも破綻閾値Kを超えることが連続して発生することを検出する。その結果、プロセッサは、学習の破綻を検出し(S23、S233)、時間t=2の時に記憶したパラメータと学習サイクルnの状態Smaxに戻し、学習率ηを減少させ(S24,S24B)、その状態のDNNで学習を再開する。
したがって、再開後の次のパラメータWは、図6中のパラメータW3よりも左側に位置する。この時、勾配が正になると、次のパラメータWは負の方向に進み、最良値Wminに近づいていく。学習率ηは小さくしたままであるので、次のパラメータWが最良値Wminの谷から外れることがなく、プロセッサは、最良値Wminを検出することができる。
図6の誤差(LOSS)は、時間t=2からt=3に移る時大きく(dE)悪化する。しかし、誤差(LOSS)が時間t=2後徐々に悪化する方向に進んでいった場合も、図8の処理によれば、最良値Wminの時の最小誤差(LOSS)から誤差(LOSS)が徐々に上昇していった結果、プロセッサは、やがて最良値Wminの時の最小誤差との差分dEが破綻閾値Kを超えることを検出し、且つ、その状態がT回連続して発生することを検出し、状態SmaxにDNNを戻し、学習率を低減し、DNNの学習を再開することができる。
以上のとおり、本実施の形態によれば、プロセッサは、DNNの学習の破綻を検出したとき、保存していた数世代前の状態にDNNのパラメータを戻し、学習率を下げて、DNNの学習を再開することができ、学習の破綻が発生しても、全体の学習工程を短くすることができる。
NN:ニューラルネットワーク
DNN:ディープニューラルネットワーク
An:正解率
Amax:最良の正解率
n:学習サイクル
Smax:状態
W:重み、DNNのパラメータ
1:ディープニューラルネットワーク装置
20:DNNプログラム
22:DNNのパラメータ
24:DNNの学習プログラム
26:教師データ、評価データ
E:誤差関数、差分の二乗和、差分の二乗和の総和
DNN:ディープニューラルネットワーク
An:正解率
Amax:最良の正解率
n:学習サイクル
Smax:状態
W:重み、DNNのパラメータ
1:ディープニューラルネットワーク装置
20:DNNプログラム
22:DNNのパラメータ
24:DNNの学習プログラム
26:教師データ、評価データ
E:誤差関数、差分の二乗和、差分の二乗和の総和
Claims (11)
- 教師データを使用してニューラルネットワーク(以下NN)のNNパラメータを最適化するNNの学習方法であって、
第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第2のNNパラメータに、前記NNパラメータを更新する学習工程と、
前記第2のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、
前記NNの出力の精度が最良値の場合、前記第2のNNパラメータを記憶する工程と、
更に、前記NNの出力の精度が改善されない第1状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、
前記第1状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、NNの学習方法。 - 前記第1状態は、前記NNの出力の精度が前記最良値より基準値以上悪化した状態である、請求項1に記載のNNの学習方法。
- 前記第1状態は、第1の所定回数の学習サイクルの間前記NNの出力の精度が前記最良値より基準値以上悪化した状態である、請求項1に記載の学習方法。
- 前記第1状態は、前記NNの出力の精度が徐々に悪化した結果前記最良値より基準値以上悪化した状態である、請求項1に記載の学習方法。
- 1回の学習サイクルで、前記学習工程と前記評価工程とを第2の所定回数繰り返し、前記第2の所定回数での前記NNの出力の精度の中央値または平均値を、前記学習サイクルでの出力の精度とする、請求項1に記載の学習方法。
- 前記出力の精度は、前記出力が正解した回数の前記評価工程の回数に対する比率である正解率である、請求項1に記載の学習方法。
- 前記出力の精度は、前記出力と正解値との間の誤差である、請求項1に記載の学習方法。
- 前記第2のNNパラメータを記憶する工程では、前記NNの出力の精度が従前の最良値の近傍値の場合も、前記第2のNNパラメータを記憶する、請求項1に記載の学習方法。
- 前記出力の精度が学習終了条件を満たした場合、学習を終了する、請求項1に記載の学習方法。
- 教師データを使用してニューラルネットワーク(以下NN)のNNパラメータを最適化する処理をコンピュータに実行させるNNの学習プログラムであって、
前記処理は、
第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第2のNNパラメータに、前記NNパラメータを更新する学習工程と、
前記第2のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、
前記NNの出力の精度が最良値の場合、前記第2のNNパラメータを記憶する工程と、
更に、前記NNの出力の精度が改善されない第1状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、
前記第1状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、
処理を、コンピュータに実行させるNNの学習プログラム。 - 教師データを使用してニューラルネットワーク(以下NN)のNNパラメータを最適化するNNの学習装置であって、
メモリと、
前記メモリに接続されたプロセッサとを有し、
前記プロセッサは、
第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第2のNNパラメータに、前記NNパラメータを更新する学習工程と、
前記第2のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、
前記NNの出力の精度が最良値の場合、前記第2のNNパラメータを記憶する工程と、
更に、前記NNの出力の精度が改善されない第1状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、
前記第1状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、NNの学習装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017058352A JP2018160200A (ja) | 2017-03-24 | 2017-03-24 | ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017058352A JP2018160200A (ja) | 2017-03-24 | 2017-03-24 | ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2018160200A true JP2018160200A (ja) | 2018-10-11 |
Family
ID=63796667
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017058352A Pending JP2018160200A (ja) | 2017-03-24 | 2017-03-24 | ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2018160200A (ja) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109819167A (zh) * | 2019-01-31 | 2019-05-28 | 维沃移动通信有限公司 | 一种图像处理方法、装置和移动终端 |
| JP2020079980A (ja) * | 2018-11-12 | 2020-05-28 | 日本電信電話株式会社 | 光偏微分演算装置および光ニューラルネットワーク |
| JP2021015526A (ja) * | 2019-07-12 | 2021-02-12 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置 |
| JP2021117969A (ja) * | 2020-01-23 | 2021-08-10 | 同▲済▼大学 | ランダムバッチマスクとマルチスケール表現学習を融合した人物再同定方法 |
| JP2022075190A (ja) * | 2020-11-06 | 2022-05-18 | 富士通株式会社 | 演算処理プログラム、演算処理方法および情報処理装置 |
| JP2022113712A (ja) * | 2018-10-17 | 2022-08-04 | オムロン株式会社 | センサシステム |
| US11562250B2 (en) | 2019-02-13 | 2023-01-24 | Kioxia Corporation | Information processing apparatus and method |
| US12314858B2 (en) | 2018-12-28 | 2025-05-27 | Nec Corporation | Neural network learning device, method, and program |
-
2017
- 2017-03-24 JP JP2017058352A patent/JP2018160200A/ja active Pending
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7372607B2 (ja) | 2018-10-17 | 2023-11-01 | オムロン株式会社 | センサシステム |
| JP2022113712A (ja) * | 2018-10-17 | 2022-08-04 | オムロン株式会社 | センサシステム |
| JP2020079980A (ja) * | 2018-11-12 | 2020-05-28 | 日本電信電話株式会社 | 光偏微分演算装置および光ニューラルネットワーク |
| JP7103602B2 (ja) | 2018-11-12 | 2022-07-20 | 日本電信電話株式会社 | 光偏微分演算装置および光ニューラルネットワーク |
| US12314858B2 (en) | 2018-12-28 | 2025-05-27 | Nec Corporation | Neural network learning device, method, and program |
| CN109819167B (zh) * | 2019-01-31 | 2020-11-03 | 维沃移动通信有限公司 | 一种图像处理方法、装置和移动终端 |
| CN109819167A (zh) * | 2019-01-31 | 2019-05-28 | 维沃移动通信有限公司 | 一种图像处理方法、装置和移动终端 |
| US11562250B2 (en) | 2019-02-13 | 2023-01-24 | Kioxia Corporation | Information processing apparatus and method |
| JP2021015526A (ja) * | 2019-07-12 | 2021-02-12 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置 |
| JP7360595B2 (ja) | 2019-07-12 | 2023-10-13 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置 |
| JP2021117969A (ja) * | 2020-01-23 | 2021-08-10 | 同▲済▼大学 | ランダムバッチマスクとマルチスケール表現学習を融合した人物再同定方法 |
| JP2022075190A (ja) * | 2020-11-06 | 2022-05-18 | 富士通株式会社 | 演算処理プログラム、演算処理方法および情報処理装置 |
| JP7501315B2 (ja) | 2020-11-06 | 2024-06-18 | 富士通株式会社 | 演算処理プログラム、演算処理方法および情報処理装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2018160200A (ja) | ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置 | |
| Lubana et al. | A gradient flow framework for analyzing network pruning | |
| Tesauro | Extending Q-learning to general adaptive multi-agent systems | |
| CN109919313B (zh) | 一种梯度传输的方法及分布式训练系统 | |
| JP2018005739A (ja) | ニューラルネットワークの強化学習方法及び強化学習装置 | |
| JP2003508835A (ja) | 進化アルゴリズムを用いたニューラルネットワークのアーキテクチャの改良方法 | |
| CN117808120A (zh) | 用于大语言模型的强化学习的方法和装置 | |
| CN110809771A (zh) | 用于机器学习模型的压缩和分发的系统和方法 | |
| CN111257934A (zh) | 基于二阶神经元深度神经网络的地震动峰值加速度预测方法 | |
| JP2017097807A (ja) | 学習方法、学習プログラムおよび情報処理装置 | |
| CN112612671A (zh) | 系统监控方法、装置、设备及存储介质 | |
| CN112085074A (zh) | 一种模型参数更新系统、方法及装置 | |
| JP2019074947A (ja) | 学習装置、学習方法及び学習プログラム | |
| KR102460485B1 (ko) | 정책 벡터 기반 인공신경망 탐색 장치 및 방법 | |
| CN118567807A (zh) | 边缘服务器任务缓存模型训练、缓存方法及装置 | |
| Kobayashi | Consolidated adaptive t-soft update for deep reinforcement learning | |
| JP7777964B2 (ja) | 機械学習装置およびプルーニング方法 | |
| CN110302539A (zh) | 一种游戏策略计算方法、装置、系统及可读存储介质 | |
| US11651282B2 (en) | Learning method for learning action of agent using model-based reinforcement learning | |
| CN119417693A (zh) | 用于gpu的图神经网络加速训练方法、存储介质及电子装置 | |
| CN111412795A (zh) | 测试点设置方案生成方法及装置 | |
| KR20210135799A (ko) | 뉴럴 네트워크 구조 탐색 장치 및 방법 | |
| JP4478769B2 (ja) | 情報処理装置、情報処理方法 | |
| CN112598109A (zh) | 信息处理设备、非暂态计算机可读存储介质及信息处理方法 | |
| CN114218500A (zh) | 用户挖掘方法、系统、装置及存储介质 |