(57)【要約】【課題】学習工程を効率的に完了する。【解決手段】教師データを使用してニューラルネットワーク（以下NN）のNNパラメータを最適化するNNの学習方法であって、第1のNNパラメータが設定されたNNに前記教師データを入力したときの、NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を第1のNNパラメータから減じて得た第２のNNパラメータに、NNパラメータを更新する学習工程と、第２のNNパラメータが設定されたNNに評価データを入力し、NNの出力の精度（正答率、Loss）を求める評価工程と、NNの出力の精度が最良値の場合、第２のNNパラメータ（ｗ）を記憶する工程と、更に、NNの出力の精度が改善されない第１状態になった場合、NNパラメータを前記記憶したNNパラメータに戻すと共に、学習率を低下させる工程とを有し、第１状態になった場合、戻したNNパラメータを設定したNNで、低下させた学習率で、学習工程を再開する、NNの学習方法。【選択図】図７
2018160200.tif 000002
【特許請求の範囲】
【請求項１】
教師データを使用してニューラルネットワーク（以下NN）のNNパラメータを最適化するNNの学習方法であって、
第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第２のNNパラメータに、前記NNパラメータを更新する学習工程と、
前記第２のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、
前記NNの出力の精度が最良値の場合、前記第２のNNパラメータを記憶する工程と、
更に、前記NNの出力の精度が改善されない第１状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、
前記第１状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、NNの学習方法。
【請求項２】
前記第１状態は、前記NNの出力の精度が前記最良値より基準値以上悪化した状態である、請求項１に記載のNNの学習方法。
【請求項３】
前記第１状態は、第１の所定回数の学習サイクルの間前記NNの出力の精度が前記最良値より基準値以上悪化した状態である、請求項１に記載の学習方法。
【請求項４】
前記第１状態は、前記NNの出力の精度が徐々に悪化した結果前記最良値より基準値以上悪化した状態である、請求項１に記載の学習方法。
【請求項５】
１回の学習サイクルで、前記学習工程と前記評価工程とを第２の所定回数繰り返し、前記第２の所定回数での前記NNの出力の精度の中央値または平均値を、前記学習サイクルでの出力の精度とする、請求項１に記載の学習方法。
【請求項６】
前記出力の精度は、前記出力が正解した回数の前記評価工程の回数に対する比率である正解率である、請求項１に記載の学習方法。
【請求項７】
前記出力の精度は、前記出力と正解値との間の誤差である、請求項１に記載の学習方法。
【請求項８】
前記第２のNNパラメータを記憶する工程では、前記NNの出力の精度が従前の最良値の近傍値の場合も、前記第２のNNパラメータを記憶する、請求項１に記載の学習方法。
【請求項９】
前記出力の精度が学習終了条件を満たした場合、学習を終了する、請求項１に記載の学習方法。
【請求項１０】
教師データを使用してニューラルネットワーク（以下NN）のNNパラメータを最適化する処理をコンピュータに実行させるNNの学習プログラムであって、
前記処理は、
第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第２のNNパラメータに、前記NNパラメータを更新する学習工程と、
前記第２のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、
前記NNの出力の精度が最良値の場合、前記第２のNNパラメータを記憶する工程と、
更に、前記NNの出力の精度が改善されない第１状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、
前記第１状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、
処理を、コンピュータに実行させるNNの学習プログラム。
【請求項１１】
教師データを使用してニューラルネットワーク（以下NN）のNNパラメータを最適化するNNの学習装置であって、
メモリと、
前記メモリに接続されたプロセッサとを有し、
前記プロセッサは、
第1のNNパラメータが設定されたNNに前記教師データを入力したときの、前記NNの出力と正解値との誤差関数の勾配に学習率を乗じた値を前記第1のNNパラメータから減じて得た第２のNNパラメータに、前記NNパラメータを更新する学習工程と、
前記第２のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、
前記NNの出力の精度が最良値の場合、前記第２のNNパラメータを記憶する工程と、
更に、前記NNの出力の精度が改善されない第１状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、
前記第１状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、NNの学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ニューラルネットワークの学習方法、ニューラルネットワークの学習プログラム及びニューラルネットワークの学習装置に関する。
【背景技術】
【０００２】
機械学習のモデルであるニューラルネットワーク（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パラメータから減じて得た第２のNNパラメータに、前記NNパラメータを更新する学習工程と、前記第２のNNパラメータが設定されたNNに評価データを入力し、前記NNの出力の精度を求める評価工程と、前記NNの出力の精度が最良値の場合、前記第２のNNパラメータを記憶する工程と、更に、前記NNの出力の精度が改善されない第１状態になった場合、前記NNパラメータを前記記憶したNNパラメータに戻すと共に、前記学習率を低下させる工程とを有し、前記第１状態になった場合、前記戻したNNパラメータを設定したNNを、前記低下させた学習率で、前記学習工程を再開する、NNの学習方法である。
【発明の効果】
【０００９】
第１の実施の形態によれば，ニューラルネットワークの学習工程を効率的に完了することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態におけるDNN学習装置であるDNN装置の構成を示す図である。
【図２】DNNの構成例を示す図である。
【図３】DNN内に含まれる３層構造のネットワークの例を示す図である。
【図４】ＤＮＮの学習方法の概略を示すフローチャート図である。
【図５】勾配降下法を説明する図である。
【図６】勾配降下法の問題点について説明する図である。
【図７】本実施の形態におけるDNNの第1の学習処理のフローチャート図である。
【図８】本実施の形態におけるDNNの第２の学習処理のフローチャート図である。
【図９】本実施の形態におけるDNNの第３の学習処理のフローチャート図である。
【図１０】正解率及び誤差（損失関数、LOSS）と学習回数との関係を示す図である。
【発明を実施するための形態】
【００１１】
本実施の形態の学習方法は、ニューラルネットワーク（NN）とディープニューラルネットワーク（DNN）のいずれにも適用可能である。但し、以下の説明では、DNNを例にして説明するが、NNにも適用可能である。
【００１２】
図１は、本実施の形態におけるDNN学習装置であるDNN装置の構成を示す図である。DNN装置１は、コンピュータやサーバのような情報処理装置である。DNN装置１は、プロセッサ１０と、メインメモリ１２と、ネットワークインタフェース１４と、大容量の補助記憶装置１６とを有する。
【００１３】
補助記憶装置１６には、ＤＮＮプログラム２０と、ＤＮＮに設定されるＤＮＮのパラメータ２２と、ＤＮＮ学習プログラム２４と、ＤＮＮの学習に使用する教師データ及び評価データ２６とが記憶される。教師データと評価データは、ＤＮＮに入力する入力と、その時のＤＮＮの正しい出力である正解値とを有する。つまり、教師データと評価データは同じであり、但し、学習工程では教師データとして、評価工程では評価データとして使用される。そして、ＤＮＮプログラム２０と、ＤＮＮに設定されるＤＮＮのパラメータ２２と、ＤＮＮ学習プログラム２４と、ＤＮＮの学習に使用する教師データ及び評価データ２６とが、メインメモリ１２内に展開され、プロセッサが各プログラムを実行する。
【００１４】
ネットワークインタフェース１４がネットワークＮＷに接続され、ＤＮＮ装置１は、外部の端末装置３０，３２とネットワークＮＷを介して通信可能に接続される。
【００１５】
ＤＮＮ装置１は、ディープラーニングのモデルとして、ディープニューラルネットワーク（ＤＮＮ）を採用する。ＤＮＮ装置１は、ＤＮＮへの入力データとその正解データとを有する教師データ及び評価データ２６を提供される。そして、プロセッサ１０は、ＤＮＮ学習プログラム２４を実行し、教師データを使用してＤＮＮの学習を実行し、ＤＮＮの最適なパラメータ（例えば重み）を決定する。また、プロセッサは、ＤＮＮ学習プログラムを実行し、評価データを使用してＤＮＮの出力の精度を評価する。さらに、プロセッサは、学習処理で抽出した最適のパラメータをＤＮＮプログラム２０に設定し、ＤＮＮプログラム２０を実行して、処理対象の画像等からのＤＮＮモデルの所期の推定処理を行う。
【００１６】
ＤＮＮプログラム２０は、モデルのＤＮＮの各種演算処理を実行するプログラムである。ＤＮＮ学習プログラム２４は、モデルのＤＮＮの学習や評価に伴うＤＮＮの各種演算処理と、最適なパラメータを抽出する処理とを実行するプログラムである。ＤＮＮ学習プログラムは、ＤＮＮの演算処理をＤＮＮプログラム２０をコールすることで実行する。ＤＮＮは教師データを使用して学習することでパラメータを最適化するので、ＤＮＮプログラム２０には、ＤＮＮ学習プログラム２４が必ず添付または内蔵される。
【００１７】
図２は、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ユニットの数は適切にチューニングされる。
【００１８】
図３は、DNN内に含まれる３層構造のネットワークの例を示す図である。図３の例は、入力X1〜Xnが入力される入力層INPUT_Lと、中間層（または隠れ層）IM_Lと、出力Z1〜Znが出力される複数の出力ノードを有する出力層OUTPUT_Lとを有する。このネットワークでは、入力層の入力X1〜Xnにそれぞれの重みw11〜w16が乗算され累積した値が中間層IM_Lに伝播する。この重みはネットワークのパラメータである。中間層IM_Lには前述の活性化関数ｆ１が配置され、中間層の各ノードの値Y1〜Ynは、以下の通りになる。
Ｙｋ ＝ ｆ１（Σ（ｗ＊Ｘｋ）−θ１）
ここで、θ１はシグモイド関数ｆ１の閾値、ｋは入力層のノード番号及び出力層のノード番号であり、ｋ＝１〜ｎである。
【００１９】
さらに、中間層の値Y1〜Ynも同様に、それぞれの重みw21〜w26が乗算され累積した値が出力層OUTPUT_Lに伝播する。そして、出力層には別の活性化関数ｆ２が配置され、出力層の値Z1〜Znは、以下の通りになる。
Ｚｋ  ＝  ｆ２（Σ（ｗ＊Ｙｋ）−θ２）
よって、出力層の出力Ｚｋは、２つの関数ｆ１、ｆ２の合成関数であり、パラメータである複数の重みを変数とする多変数関数である。
【００２０】
図４は、ＤＮＮの学習方法の概略を示すフローチャート図である。図４の学習方法は、勾配降下法の１つであるミニバッチ法と呼ばれる方法である。この学習法では、プロセッサは、DNNのパラメータをランダムに選択した初期値に設定する（S40）。そして、多数の教師データから少数（例えば１０個）の教師データをランダムに選択し（S41）、選択した少数の教師データの入力を、パラメータの初期値を設定したDNNに入力し、DNNの演算を実行して出力を得る（S42）。そして、プロセッサは、選択した少数の教師データ全てについて、DNNの出力と正解値との差分の二乗和の総和Ｅを算出する（S43）。ここで、差分の二乗和は一つの教師データに対する各出力ノードの出力とその正解値との差分の二乗を累積したものであり、その総和は、１０個の教師データそれぞれの差分の二乗和を累積したものである。
【００２１】
プロセッサは、この二乗和の総和が基準値未満に収束したか否か判定し（S44）、基準値未満でなければ（S44のNO）、二乗和の総和の勾配ΔＥに基づいて、DNNの新たなパラメータ（重み）を求め、DNNに設定する（S45）。プロセッサは、DNN内の複数の重みを更新するために、誤差逆伝播法により出力層の出力値と正解値との差分である誤差を、DNNの入力層側に伝播させて、各層間の重みを勾配に基づいて更新する。
【００２２】
そして、プロセッサは、工程S44の判定がYESになるまで、工程S41からS44の処理を、それぞれ別の少数の教師データを使用して繰り返す。工程S44の判定がYESになると、その時のパラメータをDNNの最適化されたパラメータとして出力する。
【００２３】
ミニバッチ法は、少数の教師データについての誤差の二乗和の総和に基づいて、勾配降下法でパラメータを更新する。したがって、教師データに通常の入力と正解値から遠くかけ離れたアブノーマルなものが含まれていても、そのアブノーマルな教師データによる悪影響を抑制できるという利点があるといわれている。
【００２４】
ミニバッチ法ではない逐次更新学習法では、１つの教師データについて出力層の複数のノードの誤差の二乗和に基づいて、勾配降下法でパラメータを更新する。逐次更新学習法を採用した場合も、本実施の形態を適用することができる。
【００２５】
図５は、勾配降下法を説明する図である。横軸は、DNNのパラメータである重みｗを、縦軸は、誤差の二乗和の総和である誤差関数Eを示す。図５では、説明を簡単にするために、単一の重みｗの軸しか示していない。但し、前述のとおりDNNの重みｗは複数であり、したがって、誤差関数Eは多変数関数である。
【００２６】
誤差関数Eは、図３のネットワークの例では、例えば以下のとおりである。
Ｅ  ＝  1/2＊Σk（Zk−tk）2
ここで、ｋ＝１〜ｎ、Zkは、図３に示したとおり、出力層の複数のノードそれぞれの出力値であり、tkは教師データの正解値である。出力値Ｚｋは、複数の重みを変数とする多変数関数であるので、誤差関数Ｅも同様に複数の重みを変数とする多変数関数である。
【００２７】
ミニバッチ法の場合は、少数の複数の教師データに対する誤差の総和が誤差Ｅとなるので、次のとおりとなる。
Ｅ  ＝  1/2＊Σl{Σk（Zk−tk）2}
ここで、ｌ＝１〜Ｌ、Ｌは複数の教師データの数である。
【００２８】
図５を参照して勾配降下法を説明すると、プロセッサは、パラメータである重みｗを初期値ｗ１に設定したDNNに教師データの入力を入力して得られた出力Ｚと教師データの正解値ｔとの差分である誤差の二乗和の総和Ｅを求める。これは図４の工程Ｓ４１−４３に対応する。そして、工程Ｓ４５のとおり、プロセッサは、誤差の二乗和の総和Ｅの勾配ΔＥと学習率ηに基づいて、次の式により重みｗを更新する。
wnew = wold - η*(ΔＥ)
ここで、woldは更新前の重み、wnewは更新後の重みである。ΔＥは、誤差関数Ｅを各変数（重み）で偏微分した値であり、ΔＥ＝∂E/∂wである。学習率ηは、多くの場合０≦η≦１であり、例えば０．０００１から０．１など小さな値を取ることが多い。
【００２９】
勾配が負であれば更新後の変数は図５の右方向に移動し、勾配が正であれば更新後の変数は左方向に移動する。図５の例では、変数がｗ１の場合の勾配が負であり、更新後の変数ｗ２は右方向に移動している。DNNの複数の層の間にそれぞれ変数が設定される。そのため、DNNの出力層の出力と正解値との差分である誤差を、誤差逆伝播法によりDNNの入力層側に伝播し、各層の変数を上記の演算式により更新する。
【００３０】
図５の例では、プロセッサは、変数ｗ２が設定されたDNNに別の教師データの入力を入力して出力Ｚを求め、正解値tとの誤差の二乗和の総和Ｚを求める。そして、プロセッサは、誤差の二乗和の総和の勾配ΔEと学習率ηに基づいて、前述の式により新たな重みを計算する。図５の例では、変数ｗ２での勾配ΔＥも負である。
【００３１】
以下同様にして、プロセッサは、新たな重みで更新されたDNNについて教師データを使用して誤差の二乗和の総和Ｚを求め、その勾配と学習率に基づいて上記の式により新たな重みを計算することを繰り返す。図５の例では、重みｗ３，ｗ４，ｗ５で続けて勾配が負となるが、次の重みｗ６では勾配が正となり、プロセッサは、その後学習率を小さくすることで、誤差の二乗和Ｚが最小値となる重みｗｍｉｎを検出する。
【００３２】
[本実施の形態]
[勾配降下法の問題点]
勾配降下法の問題点の一つは、学習率の選択の困難性である。学習率を低く選択すると、DNNの精度（正解率や誤差）がなかなか改善されず、学習工程が長時間になる。一方で、学習率を高く選択すると、初期の学習の進捗は早くなりある程度の精度になるまでの時間は短くできるが、途中で学習が破綻し、精度が逆に大きく低下（悪化）したまま改善されなくなることもある。
【００３３】
NN、とりわけDNNの学習は非常に時間がかかる。画像認識コンテストで使われるDNNと教師データでは、GPU（Grafic Processor Unit）のようなハードウエアセラレータを用いても、学習工程が１週間以上かかるものがある。そのため、学習率を高くして学習工程を短縮化しようとすると、学習が破綻して最初からやり直しが必要となり、逆に学習工程が長期化することがある。
【００３４】
また、学習中にDNNの精度が当初は大きく改善した後、徐々に悪化することもある。このような場合も学習率を選びなおすことで徐々に悪化することを回避できる場合がある。
【００３５】
図６は、勾配降下法の問題点について説明する図である。図６の誤差Ｅの曲線は図５と同じであるが、図６の例では、学習率ηが図５よりも高く設定され且つ一定とする。図中、ｔは学習サイクルの時を示し、各ｔでのＷは時間ｔにおける重みを示す。図６の誤差Ｅの曲線は、誤差Ｅが最小になる点（重みＷmin）と、最小ではないが極小点（重みＷlocal）とを有する。目標は誤差Ｅを最小化する重みＷminであり、重みＷlocalは誤差Ｅを局所解に落とし込む重みである。誤差Ｅが最小化することはDNNの出力の精度が最良になることである。
【００３６】
時間ｔ＝１の、初期値の重みＷ1が設定されたDNNでは、勾配∂E/∂wは負で絶対値が大きいため、更新後の重みＷ2は正の方向（右方向）に大きく移動し、また、誤差関数Ｅ（Ｗ2）も大きく減少している。
【００３７】
時間ｔ＝２の、重みＷ2が設定されたDNNでは、勾配∂E/∂wは負で絶対値が中で、更新後の重みＷ3は正の方向（右方向）に時間ｔ＝１よりは小さいが比較的大きく移動している。但し、誤差関数Ｅ（Ｗ3）はむしろ増加している。
【００３８】
次に、時間ｔ＝３の、重みＷ3が設定されたDNNでは、勾配∂E/∂wは負で絶対値が小であるため、更新後の重みＷ4はさらに正の方向（右方向）に少し移動している。勾配の絶対値が小さいため、更新後の誤差関数Ｅ（Ｗ4）はＥ（Ｗ3）とほとんど同じで増減しない。
【００３９】
次に、時間ｔ＝４の、重みＷ4が設定されたDNNでは、勾配∂E/∂wは正で絶対値が小であるため、更新後の重みＷ5（＝Ｗ3）は逆に負の方向（左方向）に少し移動し、更新後の誤差関数Ｅ（Ｗ5）はＥ（Ｗ4）とほとんど同じで増減しない。
【００４０】
その後、時間ｔが奇数ではｔ＝３での誤差Ｅの付近を、偶数ではｔ＝４での誤差Ｅの付近を超えないように左右に振動し、最終的に局所解Ｗlocal付近に留まる。一般には、プロセッサは、学習が停滞したとみなし、学習率ηを下げていくため、左右の振れ幅は徐々に小さくなり、最終的に局所解Ｗlocalに収束する。
【００４１】
上記において、時間ｔ＝２と時間ｔ＝３での誤差関数Ｅの値の差分ｄＥは非常に大きく、学習が破綻したともいえる。しかし、上記のとおり、図６の例では最終的に局所解に収束している。
【００４２】
[DNNの学習工程]
図７は、本実施の形態におけるDNNの第1の学習処理のフローチャート図である。まず、プロセッサは、DNNのパラメータ（重み、シグモイド関数の閾値等）、学習処理のパラメータ（学習率η、正解率の瞬間値Anと最大値Amax等）を初期化する（S1）。
【００４３】
次に、プロセッサは、学習工程S100を実行する。学習工程S100では、プロセッサが、複数の教師データを使用する学習を所定回数（Ｍ回）実行する(S11)。ここでの複数の教師データを使用する学習とは、例えば、図４の工程S41〜S45（但しS44は除く）である。工程S11についての具体例は後述する。プロセッサは、複数の教師データを使用する学習工程それぞれで、図４の勾配降下法により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の回数を学習サイクル数ｎとしてカウントする（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より所定の学習サイクル数過去に遡った状態に戻し、学習率ηを低下させて、学習を再開するので、その後の学習工程で学習が破綻する状態を回避することができる。また、学習を最初からやり直すよりも、全体の学習工程を短くできる。
【００５４】
図８は、本実施の形態におけるDNNの第２の学習処理のフローチャート図である。図８の第２の学習処理は、破綻判定工程S200が図７と異なる。初期化工程S1と、学習工程S100と、工程S31,S32は、図７と同じである。但し、第２の学習工程では、学習の破綻を判定する正解率の大幅低下回数ｕをカウントする。そのため、初期化工程S1では、プロセッサは正解率の大幅低下回数ｕをｕ＝０と初期化する。
【００５５】
図８の破綻判定工程S200では、プロセッサは、その時の正解率Anがそれまでの正解率の最大値Amaxより破綻閾値である基準値Kより大きく低下したか否か（An＜Amax-K?）を判定し（S231）、大きく低下した場合、大幅低下回数をｕ＝ｕ＋１とインクリメントする（S232）。そして、プロセッサは、正解率Anが大きく低下することが連続Ｕ回発生すると、つまり大幅低下回数ｕがＵ回に達すると（S233のYES）、学習が破綻したと判定する。
【００５６】
学習の破綻を判定すると、プロセッサは、DNNを過去の状態Smaxに変更し、学習率ηを減少させ、大幅低下回数ｕを初期化（ｕ＝０）する（S24B）。図８の工程24Bは、図７の工程S24と異なり、大幅低下回数ｕの初期化を行う。また、プロセッサは、その時の正解率AnがAmax-K以上の場合（S21のYES、S231のNO）、大幅低下回数ｕを初期化（ｕ＝０）する（S234）。つまり、プロセッサは、その時の正解率AnがAmax-K未満になることが連続してＵ回に達すると学習の破綻を判定する（S233）。したがって、プロセッサは、その時の正解率AnがAmax-K以上になると（S231のNO）、大幅低下回数ｕをリセットする（S234）。
【００５７】
上記の破綻の判定方法によれば、DNNの出力の精度が長期にわたり改善されない場合や、精度が大きく悪化した場合に、学習が破綻したと判定することができる。
【００５８】
図８に示した破綻判定工程S200は、一例である。例えば、プロセッサは、その時の正解率Anが最大値Amaxの所定比率L（０＜L＜１．０）倍未満になることが連続してＵ回に達すると学習の破綻を判定するようにしてもよい。
【００５９】
または、別の例では、最大値Amaxが高くなるにしたがって、上記の破綻閾値である基準値Kを小さく、または比率Lを高くするようにしてもよい。通常、学習工程を繰り返すと正解率の最大値は上昇するので、学習の開始期間では、基準値Kを大きくまたは比率Lを低くして学習の破綻程度を大きくし、学習の最終期間では、基準値Kを小さくまたは比率Lを高くして、学習の破綻程度を小さくするようにする。
【００６０】
図９は、本実施の形態におけるDNNの第３の学習処理のフローチャート図である。図９には、図７または図８の学習工程S100の変形例が示される。第３の学習処理では、初期化工程S1と学習の破綻判定工程S200と、工程S31,S32は、図７または図８と同じである。
【００６１】
図９に示した第３の学習処理での学習工程S100では、プロセッサは、複数（N個）の教師データでDNNの演算を実行し（S111）、各教師データで演算したDNNの出力ykと教師データの正解値tkとの差分の二乗和を、N個の教師データ分累積した、二乗和の総和である誤差関数Ｅの値を算出する(S112)。前述のとおり、DNNの出力層が複数の出力ノードを有する場合、教師データの入力に対して演算したDNNの出力値は複数生成されるので、各教師データでの出力ykと正解値tkとの差分の二乗和は、複数のノードの出力とその正解値との差分の二乗和である。そして、工程S112では、プロセッサは、教師データそれぞれに対する二乗和を、N個の教師データ分加算した総和Ｅを算出する。
【００６２】
そして、プロセッサは、誤差関数Ｅの傾きΔＥを求め、勾配降下法によりDNNのパラメータ（複数の重みW）を更新する（S113）。上記の工程S111〜S113はミニバッチ法と呼ばれる学習である。そして、プロセッサは、上記の工程S111〜S113を、所定回数（M回）繰り返す（S114）。
【００６３】
上記の工程S111〜S114は、図７、図８の工程S11に対応する。このように、プロセッサは、工程S111〜S113の学習を所定回数（M回）繰り返す。
【００６４】
さらに、学習工程S100では、プロセッサは、所定回数（M回）繰り返したDNNのパラメータ（重みW）を設定したDNNで、認識テストを複数回実行する（S121）。そして、プロセッサは、複数回の認識テストで得られた正解率An（DNNの出力が正解値と一致する回数を認識テストの回数で除した比率）を算出する（S122）。上記の工程S121とS122が、図８、図９の工程S12に該当する。
【００６５】
第３の学習処理での学習工程S100では、上記の工程S111〜S114とS121〜S122を、統計回数繰り返す（S123のNO）。この統計回数とは、次のような意味である。すなわち、認識テストで使用した教師データのばらつきに対して出力の精度（正解率や誤差）がばらつくことが経験上知られている。そこで、プロセッサは、学習工程S100を出力の精度（正解率や誤差）のばらつきを適切に抑制できる程度の統計回数だけ繰り返す。そして、プロセッサは、統計回数の学習工程S100が完了すると（S123のYES）、学習サイクル数ｎをｎ＝ｎ＋１とインクリメントすると共に、Ｍ回の学習工程で取得したＭ個の正解率の中央値を学習サイクルｎでの正解率Anとして生成する（S131）。
【００６６】
工程S131は、図８、図９の工程S13に対応し、工程S13と異なり、正解率AnはＭ個の正解率の中央値である。正解率Anは、例えば、Ｍ個の正解率の最小二乗法により求めた値でもよい。
【００６７】
図１０は、正解率及び誤差（損失関数、LOSS）と学習回数との関係を示す図である。左側のグラフでは、縦軸が正解率、横軸が学習回数であり、右側のグラフでは、縦軸が誤差（LOSS）、横軸が学習回数である。図１０の（１）は、学習毎（つまり学習に含まれる認識テスト毎）にばらつく正解率と誤差（LOSS）の一例を示す。それに対して、図１０の（２）は、所定回数の正解率と誤差（LOSS）の中央値（黒点）を示す。
【００６８】
図１０の（１）に示されるとおり、学習毎に認識テストの教師データのばらつきに応じて、正解率や誤差（LOSS）も大きくばらつく。そこで、第３の学習処理の学習工程S100では、プロセッサは、Ｍ回の学習で取得したＭ個の正解率やＭ個の誤差(LOSS)の中央値を、その時の正解率Anまたは誤差（LOSS）として記憶する。
【００６９】
図６に戻り、本実施の形態の図７、図８、図９の学習処理を適用した場合の学習処理について説明する。図６では縦軸が誤差(LOSS)に対応付けられているのに対して、図７、図８、図９は正解率An、最大正解率Amaxで説明が行われている。そこで、正解率Anの代わりに誤差（LOSS）E、最大正解率Amaxの代わりに誤差（LOSS）の最良値として、説明する。
【００７０】
まず、プロセッサは、時間ｔ＝２で重みＷ2のDNNの誤差（LOSS）を最良値として記憶し（S22）、次の時間ｔ＝３で重みＷ3のDNNの誤差（LOSS）と最良値との差ｄＥが破綻閾値Kを超えることを検出する。更に、プロセッサは、時間ｔ＝４以降のDNNの誤差（LOSS）と最良値との差ｄＥも破綻閾値Kを超えることが連続して発生することを検出する。その結果、プロセッサは、学習の破綻を検出し（S23、S233）、時間ｔ＝２の時に記憶したパラメータと学習サイクルｎの状態Smaxに戻し、学習率ηを減少させ（S24,S24B）、その状態のDNNで学習を再開する。
【００７１】
したがって、再開後の次のパラメータＷは、図６中のパラメータＷ3よりも左側に位置する。この時、勾配が正になると、次のパラメータＷは負の方向に進み、最良値Ｗminに近づいていく。学習率ηは小さくしたままであるので、次のパラメータＷが最良値Ｗminの谷から外れることがなく、プロセッサは、最良値Ｗminを検出することができる。
【００７２】
図６の誤差（LOSS）は、時間ｔ＝２からｔ＝３に移る時大きく（ｄＥ）悪化する。しかし、誤差（LOSS）が時間ｔ＝２後徐々に悪化する方向に進んでいった場合も、図８の処理によれば、最良値Ｗminの時の最小誤差（LOSS）から誤差(LOSS)が徐々に上昇していった結果、プロセッサは、やがて最良値Ｗminの時の最小誤差との差分ｄＥが破綻閾値Ｋを超えることを検出し、且つ、その状態がＴ回連続して発生することを検出し、状態SmaxにDNNを戻し、学習率を低減し、DNNの学習を再開することができる。
【００７３】
以上のとおり、本実施の形態によれば、プロセッサは、DNNの学習の破綻を検出したとき、保存していた数世代前の状態にDNNのパラメータを戻し、学習率を下げて、DNNの学習を再開することができ、学習の破綻が発生しても、全体の学習工程を短くすることができる。
【符号の説明】
【００７４】
ＮＮ：ニューラルネットワーク
ＤＮＮ：ディープニューラルネットワーク
An：正解率
Amax：最良の正解率
ｎ：学習サイクル
Smax：状態
W：重み、DNNのパラメータ
１：ディープニューラルネットワーク装置
２０：DNNプログラム
２２：DNNのパラメータ
２４：DNNの学習プログラム
２６：教師データ、評価データ
Ｅ：誤差関数、差分の二乗和、差分の二乗和の総和
【図１】
2018160200.tif 000003
【図２】
2018160200.tif 000004
【図３】
2018160200.tif 000005
【図４】
2018160200.tif 000006
【図５】
2018160200.tif 000007
【図６】
2018160200.tif 000008
【図７】
2018160200.tif 000009
【図８】
2018160200.tif 000010
【図９】
2018160200.tif 000011
【図１０】
2018160200.tif 000012