(57)【要約】【課題】ＤＮＮによる学習を学習手法に依らず効果的に高速化する。【解決手段】ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得する取得部と、前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示する指示部と、を備える、情報処理装置が提供される。また、プロセッサが、ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得することと、前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示することと、を含む、情報処理方法が提供される。【選択図】図２
2020042753.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得する取得部と、
前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示する指示部と、
を備える、
情報処理装置。
【請求項２】
前記理想状態とのギャップ値は、少なくとも損失に関する値を含み、
前記取得部は、前記損失に関する値を取得し、
前記指示部は、前記損失に関する値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示する、
請求項１に記載の情報処理装置。
【請求項３】
前記損失に関する値は、前記損失のｎ回微分値（ｎは０以上の整数。以下同様）を含む、
請求項２に記載の情報処理装置。
【請求項４】
前記損失のｎ回微分値は、時間方向における前記損失の微分値である、
請求項３に記載の情報処理装置。
【請求項５】
前記取得部は、ＡＰＩを介して前記前記損失に関する値を取得し、
前記指示部は、前記損失に関する値に基づいて、自動的に前記バッチサイズの値の変更を指示する、
請求項２に記載の情報処理装置。
【請求項６】
前記指示部は、前記損失に関する値から学習の収束が推定される場合、バッチサイズの値の増加を指示する、
請求項２に記載の情報処理装置。
【請求項７】
前記指示部は、前記損失のｎ回微分値の値に基づいて、バッチサイズの値の増加を指示する、
請求項３に記載の情報処理装置。
【請求項８】
前記指示部は、前記損失の値または前記損失の傾きの少なくともいずれかが閾値を下回ることに基づいて、バッチサイズの値の増加を指示する、
請求項７に記載の情報処理装置。
【請求項９】
前記指示部は、前記損失に関する値に基づいて学習の発散が推定される場合、バッチサイズの値の減少を指示する、
請求項２に記載の情報処理装置。
【請求項１０】
前記指示部は、前記損失に関する値に基づいて学習の発散が推定される場合、過去のエポックにおけるネットワークモデルの再読み込みを指示する、
請求項９に記載の情報処理装置。
【請求項１１】
前記指示部は、前記過去のエポックにおけるネットワークモデルの再読み込みが行われた場合、前記過去のエポックで設定された値よりも小さいバッチサイズの値を設定させる、
請求項１０に記載の情報処理装置。
【請求項１２】
前記指示部は、ＧＰＵ中のモデルの作り直しによるバッチサイズの増減を指示する、
請求項１に記載の情報処理装置。
【請求項１３】
前記指示部は、学習に係る計算のループ数の増減によるバッチサイズの増減を指示する、
請求項１に記載の情報処理装置。
【請求項１４】
前記指示部は、学習に用いられるＧＰＵの数の増減によるバッチサイズの増減を指示する、
請求項１に記載の情報処理装置。
【請求項１５】
前記指示部は、追加で利用可能なＧＰＵが存在する場合、当該ＧＰＵの学習への割り当てによるバッチサイズの増加を指示する、
請求項１に記載の情報処理装置。
【請求項１６】
前記指示部は、追加で利用可能なＧＰＵが存在せず、かつ現在利用中のＧＰＵのメモリに空き容量が存在する場合、現在利用中のＧＰＵ中のモデルを作り直しによるバッチサイズの増加を指示する、
請求項１に記載の情報処理装置。
【請求項１７】
前記指示部は、現在利用中のＧＰＵのメモリに空き容量が存在しない場合、学習に係る計算のループ数の増加によるバッチサイズの増加を指示する、
請求項１に記載の情報処理装置。
【請求項１８】
前記理想状態とのギャップ値は、トレーニングエラーまたはバリデーションエラーのうち少なくともいずれかを含む、
請求項１に記載の情報処理装置。
【請求項１９】
プロセッサが、ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得することと、
前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示することと、
を含む、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
近年、脳神経系の仕組みを模した数学モデルであるニューラルネットワークが注目されている。また、ニューラルネットワークによる学習を高速化するための技術も多く提案されている。例えば、非特許文献１には、学習中にバッチサイズを変更する技術が開示されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Samuel L. Smith、外３名、「Don't Decay the Learning Rate, Increase the Batch Size」、２０１７年１１月１日、［Online］、［平成３０年９月７日検索］、インターネット<https://arxiv.org/pdf/1711.00489.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、非特許文献１に記載の技術は、特定の学習手法に依存しており、当該手法を採用しない学習には適用することが困難である。
【課題を解決するための手段】
【０００５】
本開示によれば、ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得する取得部と、前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示する指示部と、を備える、情報処理装置が提供される。
【０００６】
また、本開示によれば、プロセッサが、ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得することと、前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示することと、を含む、情報処理方法が提供される。
【図面の簡単な説明】
【０００７】
【図１】Ｓｔｅｐ  Ｌｅａｒｎｉｎｇ  ｒａｔｅ  ｄｅｃａｙを適用した場合の損失の推移の一例を示す図である。
【図２】本開示の一実施形態に係るバッチサイズ変更の概要について説明するための図である。
【図３】同実施形態に係る情報処理装置の機能構成例を示すブロック図である。
【図４】同実施形態に係る損失の傾きに基づくバッチサイズ変更をＩｍａｇｅＮｅｔ／ＲｅｓＮｅｔ−５０に適用した際の検証結果を示す図である。
【図５】同実施形態に係るトレーニングの値に基づくバッチサイズ変更をＩｍａｇｅＮｅｔ／ＲｅｓＮｅｔ−５０に適用した際の検証結果を示す図である。
【図６】同実施形態に係る損失に基づくバッチサイズ変更をＭＮＩＳＴを用いた学習に適用した際の検証結果を示す図である。
【図７】同実施形態に係る損失に基づくバッチサイズ変更をｃｉｆａｒ１０を用いた学習に適用した際の検証結果を示す図である。
【図８】同実施形態に係る損失に基づくバッチサイズ変更をｃｉｆａｒ１０を用いた学習に適用した際の検証結果を示す図である。
【図９】同実施形態に係る損失の１回微分値に基づくバッチサイズの変更を実現する訓練スクリプトおよび損失傾き計算モジュールの一例を示す図である。
【図１０】同実施形態に係るエポックごとのバッチサイズ増加をＭＮＩＳＴを用いた学習に適用した場合の検証結果を示す図である。
【図１１】同実施形態に係る損失およびエポックに基づくバッチサイズ変化をｃｉｆａｒ１０を用いた学習に適用した場合の検証結果を示す図である。
【図１２】同実施形態に係る損失とエポックに基づくバッチサイズの増減を実現する訓練スクリプトの一例を示す図である。
【図１３】同実施形態に係るバッチサイズ変更部によるＧＰＵ中モデルの作り直しについて説明するための図である。
【図１４】同実施形態に係るバッチサイズ変更部による計算ループ数の増減制御について説明するための図である。
【図１５】同実施形態に係るバッチサイズ変更部による利用ＧＰＵの増減制御について説明するための図である。
【図１６】同実施形態に係るバッチサイズ変更部による制御の流れを示すフローチャートである。
【図１７】本開示の一実施形態に係るハードウェア構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【０００９】
なお、説明は以下の順序で行うものとする。
１．実施形態
１．１．概要
１．２．情報処理装置１０の機能構成例
１．３．検証結果
１．４．バッチサイズ増減の実現手法
２．ハードウェア構成例
３．まとめ
【００１０】
＜１．実施形態＞
＜＜１．１．概要＞＞
まず、本開示の一実施形態の概要について説明する。上述したように、近年、ニューラルネットワークによる学習を高速化するための技術が多く提案されている。一般に、ＤＮＮ（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）の学習に要する時間は、パラメータの更新回数と比例関係にあることから、当該更新回数を減らすことが学習の高速化に対し有効な手段となり得る。
【００１１】
パラメータの更新回数は、例えば、バッチサイズを増加させることで減らすことが可能である。また、学習の後半においては、バッチサイズを増加させても学習が収束することが知られていることから、例えば、非特許文献１に開示されるように学習中にバッチサイズを変更し、できるだけ大きなバッチサイズを設定することで、パラメータの更新回数を削減することができ、ひいては学習を高速化させる効果が期待される。
【００１２】
しかし、非特許文献１に記載されるバッチサイズの変更手法は、特定の学習手法にのみ適用可能な技術である。ここで、上記の特定の学習手法とは、Ｓｔｅｐ  Ｌｅａｒｎｉｎｇ  ｒａｔｅ  ｄｅｃａｙと呼ばれる手法を指す。
【００１３】
図１は、Ｓｔｅｐ  Ｌｅａｒｎｉｎｇ  ｒａｔｅ  ｄｅｃａｙを適用した場合の損失（ｌｏｓｓ）の推移の一例を示す図である。Ｓｔｅｐ  Ｌｅａｒｎｉｎｇ  ｒａｔｅ  ｄｅｃａｙとは、図１に示すように、学習率を階段状に下げることで、損失を階段状に下げていく手法である。図１に示す一例を参照すると、エポック３０および６０付近において損失が大きく低下し、グラフが階段形状をなしていることがわかる。
【００１４】
非特許文献１に記載の技術によれば、損失が大きく低下するエポック３０や６０のようなタイミングでバッチサイズを変更することが可能であるが、損失の推移が上記のような階段形状を示さない学習手法には適用することができない。
【００１５】
本開示に係る技術思想は上記の点に着目して発想されたものであり、ＤＮＮによる学習を学習手法に依らず効果的に高速化することを可能とする。このために、本開示の一実施形態に係る情報処理装置１０は、ニューラルネットワークを用いた学習を行う学習部１２０を備え、学習部１２０は、ニューラルネットワークが出力する学習に係る理想状態とのギャップ値に基づいて、学習中にバッチサイズの値を動的に変更すること、を特徴の一つとする。
【００１６】
ここで、上記の理想状態とのギャップ値とは、期待される出力と実際の出力との差を定量的に表した指標であってよい。本実施形態に係る理想状態とのギャップ値には、例えば、損失が含まれる。また、本実施形態に係る理想状態とのギャップ値は、トレーニングエラーやバリデーションエラーを含みうる。
【００１７】
なお、上記ギャップ値として用いられるトレーニングエラーおよびバリエーションエラーの一例としては、例えば、損失として用いられることもある平均二乗誤差（ＭＳＥ：Ｍｅａｎ  Ｓｑｕａｒｅ  Ｅｒｒｏｒ）や平均絶対誤差（ＭＡＥ：Ｍｅａｎ  Ａｂｓｏｌｕｔｅ  Ｅｒｒｏｒ）、画像分類において用いられるＴｏｐ−ｋ−ｅｒｒｏｒ（特に、ｔｏｐ−１−ｅｒｒｏｒやｔｏｐ−５−ｅｒｒｏｒなど）、また物体検出において用いられるｍＡＰ（ｍｅａｎ  Ａｖｅｒａｇｅ  Ｐｒｅｃｉｓｉｏｎ）などが挙げられる。
【００１８】
ここで、図２を参照して、本実施形態に係るバッチサイズ変更の概要について説明する。図２には、エポックの経過に伴う損失の推移を表すグラフが示されている。なお、図２以降に示す各グラフにおいては、実線がバッチサイズ変更を伴わない損失の推移（Ｒｅｆｅｒｅｎｃｅ）を、破線が本実施形態に係るバッチサイズ変更を適用した損失の推移（Ａｐｐｒｏａｃｈ）をそれぞれ示している。
【００１９】
本実施形態に係る学習部１２０は、例えば、損失に基づいて学習の収束が推定される場合、学習中にバッチサイズの値を増加させてよい。
【００２０】
損失の値が小さくなることは、ＤＮＮが解に近づいていること、すなわち学習が収束に向かっていること（学習が安定していること）を示す。このことから、本実施形態に係る学習部１２０は、損失のｎ回微分値に基づいて、学習中にバッチサイズの値を増加させてもよい。
【００２１】
例えば、本実施形態に係る学習部１２０は、損失の１回微分値、すなわち傾きが所定の閾値を下回る場合、バッチサイズの値を増加させることができる。図２に示す一例の場合、学習部１２０は、損失の傾きが落ち着いたタイミングＴ１（エポック３０）でバッチサイズの値を３２Ｋから６４Ｋに増加させている。
【００２２】
また、例えば、本実施形態に係る学習部１２０は、損失の０回微分値、すなわち損失の値そのものが所定の閾値を下回る場合、バッチサイズの値を増加させることもできる。ここで、上記の閾値が０．３である場合、学習部１２０は、損失の値が０．３を下回ったタイミングＴ２（エポック６０）でバッチサイズの値を増加させてよい。なお、学習部１２０は、ｎ＞２以上のｎ回微分値に基づいてバッチサイズの値を増加させてもよい。
【００２３】
ここで、ＡｐｐｒｏａｃｈとＲｅｆｅｒｅｎｃｅを比較すると、本実施形態に係るバッチサイズ変更手法を適用した場合であっても、学習が発散せずに性能を保っていることがわかる。すなわち、本実施形態に係る情報処理装置１０が実現するバッチ変更手法によれば、学習性能の確保と、パラメータ更新回数の削減すなわち学習時間の短縮と、を両立することが可能となる。
【００２４】
また、本実施形態に係るバッチ変更手法によれば、図２に示すような、損失の推移が階段形状を示さない学習手法であっても、バッチサイズを増加させ、学習時間を短縮することが可能となる。このように、本実施形態に係る情報処理装置１０によれば、ＤＮＮによる学習を学習手法に依らず効果的に高速化することが可能となる。
【００２５】
＜＜１．２．情報処理装置１０の機能構成例＞＞
次に、本実施形態に係る情報処理装置１０の機能構成例について説明する。図３は、本実施形態に係る情報処理装置１０の機能構成例を示すブロック図である。図３を参照すると、本実施形態に係る情報処理装置１０は、入出力制御部１１０、学習部１２０、微分計算部１３０、およびバッチサイズ変更部１４０を備える。
【００２６】
（入出力制御部１１０）
本実施形態に係る入出力制御部１１０は、ＤＮＮの学習に係るユーザインタフェースを制御する。例えば、本実施形態に係る入出力制御部１１０は、入力装置を介して入力された各種のデータを学習部１２０に引き渡す。また、例えば、入出力制御部１１０は、学習部１２０が出力する値を出力装置に引き渡す。
【００２７】
（学習部１２０）
本実施形態に係る学習部１２０は、ＤＮＮを用いた学習を行う。上述したように、本実施形態に係る学習部１２０は、ＤＮＮが出力する学習に係る理想状態とのギャップ値に基づいて、学習中にバッチサイズの値を動的に変更すること、を特徴の一つとする。本実施形態に係る理想状態とのギャップ値は、例えば、損失、トレーニングエラー、バリデーションエラーなどを含む。
【００２８】
（微分計算部１３０）
本実施形態に係る微分計算部１３０は、学習部１２０から入力される損失にｎ回微分処理を行うことでｎ回微分値を算出し、当該ｎ回微分値を学習部１２０に出力する。
【００２９】
（バッチサイズ変更部１４０）
本実施形態に係るバッチサイズ変更部１４０は、学習部１２０が設定したバッチサイズの値に基づいて、バッチサイズの増減を制御する機能を有する。本実施形態に係るバッチサイズ変更部１４０が有する機能の詳細については、別途後述する。
【００３０】
以上、本実施形態に係る情報処理装置１０の機能構成例について説明した。なお、図３を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理装置１０の機能構成は係る例に限定されない。本実施形態に係る情報処理装置１０の機能構成は、仕様や運用に応じて柔軟に変形可能である。
【００３１】
＜＜１．３．検証結果＞＞
次に、本実施形態に係る情報処理装置１０により実現されるバッチサイズ変更手法の検証結果について述べる。
【００３２】
まず、データセットにＩｍａｇｅＮｅｔを、ＤＮＮにＲｅｓＮｅｔ−５０を用いた場合の検証結果について説明する。図４は、本実施形態に係る損失の傾きに基づくバッチサイズ変更をＩｍａｇｅＮｅｔ／ＲｅｓＮｅｔ−５０に適用した際の検証結果を示す図である。
【００３３】
ここでは、Ｒｅｆｅｒｅｎｃｅにおけるバッチサイズを３２Ｋで固定し、学習を行った。一方、Ａｐｐｒｏａｃｈにおいては、損失の１回微分値、すなわち傾きが閾値を下回ったタイミングＴ３（エポック３０）において、バッチサイズを３２Ｋから６８Ｋに増加させ学習を継続させた。
【００３４】
ＲｅｆｅｒｅｎｃｅとＡｐｐｒｏａｃｈを比較すると、本実施形態に係るバッチ変更手法によりバッチサイズを増加させた場合であっても、損失の収束に大きな影響を与えないことがわかる。
【００３５】
また、図５は、本実施形態に係るトレーニングの値に基づくバッチサイズ変更をＩｍａｇｅＮｅｔ／ＲｅｓＮｅｔ−５０に適用した際の検証結果を示す図である。
【００３６】
ここでは、トレーニングエラーの０回微分値が閾値１．８を下回ったタイミングＴ４（エポック３０）において、バッチサイズを２Ｋから２０Ｋに増加させ学習を継続させた。
【００３７】
図５を参照すると、トレーニングエラーの０回微分値に基づいてバッチサイズを増加させた場合であっても、影響なく学習が収束に向かっていることがわかる。
【００３８】
次に、データセットにＭＮＩＳＴを用いた場合の検証結果について説明する。図６は、本実施形態に係る損失に基づくバッチサイズ変更をＭＮＩＳＴを用いた学習に適用した際の検証結果を示す図である。
【００３９】
ここでは、Ｒｅｆｅｒｅｎｃｅにおけるバッチサイズを１２８で固定し、学習を行った。一方、Ａｐｐｒｏａｃｈにおいては、損失の１回微分値が閾値を下回り、かつ損失の０回微分値が閾値０．０３を下回ったタイミングＴ５（エポック１）において、バッチサイズを１２８から３０７２に増加させ学習を継続させた。
【００４０】
上記の制御の結果、パラメータの更新回数を２０００回から５６０回に削減することができ、学習時間を大幅に短縮することができた。
【００４１】
次に、データセットにｃｉｆａｒ１０を用いた場合の検証結果について説明する。図７および図８は、本実施形態に係る損失に基づくバッチサイズ変更をｃｉｆａｒ１０を用いた学習に適用した際の検証結果を示す図である。
【００４２】
図７に係る検証では、Ｒｅｆｅｒｅｎｃｅにおけるバッチサイズを６４で固定し、学習を行った。一方、Ａｐｐｒｏａｃｈにおいては、損失の１回微分値が閾値を下回り、かつ損失の０回微分値が閾値０．３５を下回ったタイミングＴ６（エポック５）において、バッチサイズを６４から１０２４に増加させ学習を継続させた。
【００４３】
上記の制御の結果、パラメータの更新回数を２００００回から５０００回に削減することができ、学習時間を大幅に短縮することができた。
【００４４】
また、図８に係る検証では、図７に係る検証と同様に、Ｒｅｆｅｒｅｎｃｅにおけるバッチサイズを６４で固定し、学習を行った。一方、Ａｐｐｒｏａｃｈにおいては、損失の０回微分値が閾値０．３５を下回ったタイミングＴ７（エポック８）において、バッチサイズを６４から１０２４に増加させ学習を継続させた。
【００４５】
上記の制御の結果、パラメータの更新回数を２００００回から７２５０回に削減することができ、学習時間を大幅に短縮することができた。
【００４６】
以上、本実施形態に係るバッチサイズ変更手法の検証結果について述べた。上述した検証結果では、本実施形態に係るバッチサイズ変更手法を適用した場合、性能にほぼ影響を与えずに、パラメータ更新回数を１／３〜１／４程度削減できることが示されている。このように、本実施形態に係る情報処理装置１０によれば、ＤＮＮによる学習を学習手法に依らず効果的に高速化することが可能となる。
【００４７】
なお、損失の１回微分値に基づくバッチサイズの変更は、例えば、図９に示すような訓練スクリプトＴＳ１および損失傾き計算モジュールＣＭにより実現することができる。なお、図９においては、コードを擬似的に示している。
【００４８】
図９に示す一例の場合、訓練スクリプトＴＳ１では、まず、損失傾き取得ＡＰＩすなわち損失傾き計算モジュールＣＭの呼び出し処理を実行し、返り値として現在のｌｏｓｓ＿ｇｒａｄの値が取得される。
【００４９】
次に、取得されたｌｏｓｓ＿ｇｒａｄの値と閾値との比較処理が実行され、ここで、ｌｏｓｓ＿ｇｒａｄの値が閾値を下回る場合、バッチサイズの増加処理が実行される。
【００５０】
訓練スクリプトＴＳ１では、学習が収束するまで、上記の各処理が繰り返し実行される。
【００５１】
また、損失傾き計算モジュールＣＭは、訓練スクリプトＴＳ１により呼び出されると、保持するｌｏｓｓの値をｌｏｓｓ＿ｐｒｅｖに退避し、新たに取得したｌｏｓｓとｌｏｓｓ＿ｐｒｅｖとの差を求めることで、ｌｏｓｓ＿ｇｒａｄを算出する。この際、損失傾き計算モジュールＣＭは、図示するように、損失の移動平均をとりノイズを除去する処理を行なってもよい。
【００５２】
なお、上記では、バッチサイズを増加させる場合を主な例に説明したが、本実施形態に係る学習部１２０は、損失に基づいて学習の発散が推定される場合には、学習中バッチサイズの値を減少させることも可能である。
【００５３】
例えば、図５に示した一例の場合、期間Ｄ１においては学習がまだ不安定であることから、学習部１２０は、初期値として与えられた小さいバッチサイズの値を維持する。一方、期間Ｄ２において学習が安定した場合、学習部１２０はバッチサイズの値を増加させてよい。
【００５４】
しかし、Ｓｔｅｐ  ｌｅａｒｎｉｎｇ  ｒａｔｅ  ｄｅｃａｙでは、一般に学習率を下げた直後に大きく損失が下がることから、学習率を下げる前と比較して学習が発散しやすくなることが想定される。このため、本実施形態に係る学習部１２０は、期間Ｄ２において一度増加させたバッチサイズの値を期間Ｄ３においては減少させることで学習の収束を図ることができる。この際、学習部１２０は、例えば期間Ｄ１および期間Ｄ２の間となるようなバッチサイズの値を設定してよい。
【００５５】
次に、本実施形態に係るエポックに基づくバッチサイズの変更について説明する。ＤＮＮによる学習では、学習率の減衰がない場合、学習が進むにつれ、すなわちエポックが重なるにつれ、学習が容易となる傾向が強く見られる。このため、本実施形態に係る学習部１２０は、エポックの経過に伴いバッチサイズの値を増加させることができる。例えば、本実施形態に係る学習部１２０は、エポックごとにバッチサイズの値を増加させてもよい。
【００５６】
図１０は、本実施形態に係るエポックごとのバッチサイズ増加をＭＮＩＳＴを用いた学習に適用した場合の検証結果を示す図である。ここでは、バッチサイズの初期値として１２８を設定し、エポック１（タイミングＴ８）でバッチサイズを２５６に、エポック２（タイミングＴ９）でバッチサイズを５１２に、エポック３（タイミングＴ１０）でバッチサイズを１０２４に、それぞれ倍増させる制御を行った。
【００５７】
上記の制御の結果、パラメータの更新回数を２０００回から９３８に削減することができた。係る検証結果によれば、エポックごとにバッチサイズを増加させた場合であっても、損失の収束に大きな影響を与えず、学習時間を大幅に削減できることがわかる。
【００５８】
また、本実施形態に係る学習部１２０は、損失やエポックに基づいてバッチサイズの値を増加させた結果、学習の発散が推定された場合には、発散前、すなわち直前のエポックにおけるネットワークモデルを再読み込みすることで、学習の収束を図ることも可能である。
【００５９】
図１１は、本実施形態に係る損失およびエポックに基づくバッチサイズ変化をｃｉｆａｒ１０を用いた学習に適用した場合の検証結果を示す図である。
【００６０】
ここでは、バッチサイズの初期値として６４を設定し、損失の０回微分値の閾値を０．３５に設定した。図１１に示す一例の場合、エポック８（タイミングＴ１１）において損失が閾値０．３５を下回ったことに基づいてバッチサイズの増加処理を開始し、その後エポックごとにバッチサイズを増加させた。
【００６１】
その後、エポック１４（タイミングＴ１２）においてバッチサイズを４Ｋに増加させたところ、学習の発散が推定された。このため、本実施形態に係る学習部１２０は、エポック１５の開始時点でバッチサイズの値の増加を停止し、エポック１４開始時点におけるモデルを再読み込みしたうえで、バッチサイズの値を２Ｋに固定し学習を継続した。
【００６２】
このように、本実施形態に係る学習部１２０は、過去のエポックにおけるネットワークモデルの再読み込みを行った場合、当該過去のエポックで設定した値よりも小さいバッチサイズの値を設定してよい。
【００６３】
本実施形態に係る学習部１２０が有する上記の機能によれば、損失やエポックに基づいて自動でバッチサイズの値を増減することができ、学習の発散を回避しながらパラメータの更新回数を効果的に削減することが可能となる。
【００６４】
なお、上記のような損失とエポックに基づくバッチサイズの増減は、例えば、図１２に示すような訓練スクリプトＴＳ２より実現することができる。なお、図１２においては、コードを擬似的に示している。
【００６５】
図１２に示す一例の場合、訓練スクリプトＴＳ２は、まず、図９に示した損失傾き計算モジュールＣＭを呼び出し返り値として取得したｌｏｓｓ＿ｇｒａｄを、閾値と比較している。ここで、ｌｏｓｓ＿ｇｒａｄが閾値を下回る場合、訓練スクリプトＴＳ２は、バッチサイズの自動増加を開始する。
【００６６】
その後、訓練スクリプトＴＳ２は、損失が前エポックよりも閾値以上大きくなったか否かを判定する。ここで、損失の増大が認められる場合、訓練スクリプトＴＳ２は、バッチサイズの自動増加を停止する。
【００６７】
また、この際、訓練スクリプトＴＳ２は、前エポックにおけるＤＮＮのネットワークモデルを再読み込みする。
【００６８】
＜＜１．４．バッチサイズ増減の実現手法＞＞
続いて、本実施形態に係るバッチサイズ増減の実現手法について詳細に説明する。本実施形態に係るバッチサイズ変更部１４０は、学習部１２０が設定したバッチサイズの値を取得し、当該値に基づいてＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を制御することで、バッチサイズの増減を実現する。
【００６９】
例えば、本実施形態に係るバッチサイズ変更部１４０は、ＧＰＵ中のモデルを作り直すことによりバッチサイズの増減を制御してもよい。
【００７０】
図１３は、本実施形態に係るバッチサイズ変更部１４０によるＧＰＵ中モデルの作り直しについて説明するための図である。この場合、まず、学習部１２０が損失の値を微分計算部１３０に入力し、当該値のｎ回部分値を取得する。また、学習部１２０は、取得したｎ回部分値に基づいて変更後のバッチサイズの値を決定し、当該バッチサイズの値をバッチサイズ変更部１４０に入力する。
【００７１】
次に、本実施形態に係るバッチサイズ変更部１４０は、入力されたバッチサイズの値に基づいて、現在学習に利用されているＧＰＵにモデルの再作成指示を行う。
【００７２】
なお、図１３では、ＧＰＵ＿０およびＧＰＵ＿１のうち、ＧＰＵ＿０が現在学習に用いられており、ＧＰＵ＿０中のモデルのバッチサイズが３２である場合において、バッチサイズ変更部１４０がＧＰＵ＿０にモデルの再作成を指示し、当該モデルのバッチサイズを６４に変更させる場合の一例が示されている。
【００７３】
本実施形態に係るバッチサイズ変更部１４０による上記の制御によれば、情報処理装置１０が有するＧＰＵの数に影響されずグローバルにバッチサイズを上げることができ、またＧＰＵの並列演算能力が活きることでさらなる高速化に繋がる効果も記載される。
【００７４】
また、例えば、本実施形態に係るバッチサイズ変更部１４０は、学習に係る計算のループ数を増減させることによりバッチサイズの増減を制御してもよい。上記のようなテクニックは、ａｃｃｕｍ−ｇｒａｄとも称される。
【００７５】
図１４は、本実施形態に係るバッチサイズ変更部１４０による計算ループ数の増減制御について説明するための図である。この場合、本実施形態に係るバッチサイズ変更部１４０は、学習部１２０から入力されたバッチサイズの値に基づいて、現在学習に利用されているＧＰＵに計算ループ数を変更するよう指示する。
【００７６】
なお、図１４では、ＧＰＵ＿０およびＧＰＵ＿１のうち、ＧＰＵ＿０が現在学習に用いられており、ＧＰＵ＿０中のモデルのバッチサイズが３２である場合において、バッチサイズ変更部１４０がＧＰＵ＿０に２回ａｃｃｕｍ−ｇｒａｄを行うよう指示し、バッチサイズ３２による学習が２回行われる場合の一例が示されている。
【００７７】
本実施形態に係るバッチサイズ変更部１４０による上記の制御によれば、ＧＰＵの数やメモリ容量に制限されることなくバッチサイズを上げることができ、また同期処理の回数が減るため、減った同期処理の回数分だけ学習を高速化することができる。
【００７８】
また、例えば、本実施形態に係るバッチサイズ変更部１４０は、学習に用いられるＧＰＵの数を増減させることによりバッチサイズの増減を制御してもよい。
【００７９】
図１５は、本実施形態に係るバッチサイズ変更部１４０による利用ＧＰＵの増減制御について説明するための図である。この場合、本実施形態に係るバッチサイズ変更部１４０は、学習部１２０から入力されたバッチサイズの値に基づいて、現在学習に利用されていないＧＰＵに稼働を指示する。
【００８０】
なお、図１５では、ＧＰＵ＿０およびＧＰＵ＿１のうち、ＧＰＵ＿０のみが現在学習に用いられている場合において、バッチサイズ変更部１４０がＧＰＵ＿１に稼働を指示する場合の一例が示されている。
【００８１】
本実施形態に係るバッチサイズ変更部１４０による上記の制御によれば、計算資源を増やすことで、その分学習を高速化することができる。
【００８２】
以上、本実施形態に係るバッチサイズ変更部１４０によるバッチサイズの変更制御手法について説明した。なお、本実施形態に係るバッチサイズ変更部１４０は、例えば、図１６に示すような優先度に基づいて、バッチサイズの変更制御手法を選択することで、バッチサイズ増加による高速化効果をより大きくすることができる。
【００８３】
図１６は、本実施形態に係るバッチサイズ変更部１４０による制御の流れを示すフローチャートである。
【００８４】
図１６を参照すると、バッチサイズ変更部１４０は、まず、追加で利用可能なＧＰＵが存在するか否かを判定する（Ｓ１１０１）。
【００８５】
ここで、追加で利用可能なＧＰＵが存在する場合（Ｓ１１０１：Ｙｅｓ）、バッチサイズ変更部１４０は、当該利用可能なＧＰＵを学習に割り当てることで、バッチサイズの増加を制御する（Ｓ１１０２）。
【００８６】
続いて、バッチサイズ変更部１４０は、ステップＳ１１０２における処理により目的のバッチサイズを達成したかを判定する（Ｓ１１０３）。
【００８７】
ここで、目的のバッチサイズが達成されている場合（Ｓ１１０３：Ｙｅｓ）、バッチサイズ変更部１４０は、バッチサイズ変更に係る処理を終了する。
【００８８】
一方、目的のバッチサイズが達成されていない場合（Ｓ１１０３：Ｎｏ）、または追加で利用可能なＧＰＵが存在しない場合（Ｓ１１０１：Ｎｏ）、バッチサイズ変更部１４０は、現在利用中のＧＰＵのメモリに空き容量が存在するか否かを判定する（Ｓ１１０４）。
【００８９】
ここで、現在利用中のＧＰＵのメモリに空き容量が存在する場合（Ｓ１１０４：Ｙｅｓ）、バッチサイズ変更部１４０は、現在利用中のＧＰＵ中のモデルを作り直すことで、バッチサイズの増加を制御する（Ｓ１１０５）。
【００９０】
続いて、バッチサイズ変更部１４０は、ステップＳ１１０５における処理により目的のバッチサイズを達成したかを判定する（Ｓ１１０６）。
【００９１】
ここで、目的のバッチサイズが達成されている場合（Ｓ１１０６：Ｙｅｓ）、バッチサイズ変更部１４０は、バッチサイズ変更に係る処理を終了する。
【００９２】
一方、目的のバッチサイズが達成されていない場合（Ｓ１１０６：Ｎｏ）、または現在利用中のＧＰＵのメモリに空き容量が存在しない場合（Ｓ１１０４：Ｎｏ）、バッチサイズ変更部１４０は、学習に係る計算のループ数を増加させることで、バッチサイズの増加を制御し（Ｓ１１０７）、バッチサイズ変更に係る処理を終了する。
【００９３】
＜２．ハードウェア構成例＞
次に、本開示の一実施形態に係る情報処理装置１０のハードウェア構成例について説明する。図１７は、本開示の一実施形態に係る情報処理装置１０のハードウェア構成例を示すブロック図である。図１７を参照すると、情報処理装置１０は、例えば、プロセッサ８７１と、ＲＯＭ８７２と、ＲＡＭ８７３と、ホストバス８７４と、ブリッジ８７５と、外部バス８７６と、インターフェース８７７と、入力装置８７８と、出力装置８７９と、ストレージ８８０と、ドライブ８８１と、接続ポート８８２と、通信装置８８３と、を有する。なお、ここで示すハードウェア構成は一例であり、構成要素の一部が省略されてもよい。また、ここで示される構成要素以外の構成要素をさらに含んでもよい。
【００９４】
（プロセッサ８７１）
プロセッサ８７１は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ８７２、ＲＡＭ８７３、ストレージ８８０、又はリムーバブル記録媒体９０１に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。プロセッサ８７１は、例えば、ＧＰＵやＣＰＵを含む。なお、本開示の一実施形態に係る情報処理装置１０は、少なくとも２つのＧＰＵを備える。
【００９５】
（ＲＯＭ８７２、ＲＡＭ８７３）
ＲＯＭ８７２は、プロセッサ８７１に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ８７３には、例えば、プロセッサ８７１に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【００９６】
（ホストバス８７４、ブリッジ８７５、外部バス８７６、インターフェース８７７）
プロセッサ８７１、ＲＯＭ８７２、ＲＡＭ８７３は、例えば、高速なデータ伝送が可能なホストバス８７４を介して相互に接続される。一方、ホストバス８７４は、例えば、ブリッジ８７５を介して比較的データ伝送速度が低速な外部バス８７６に接続される。また、外部バス８７６は、インターフェース８７７を介して種々の構成要素と接続される。
【００９７】
（入力装置８７８）
入力装置８７８には、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力装置８７８としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。また、入力装置８７８には、マイクロフォンなどの音声入力装置が含まれる。
【００９８】
（出力装置８７９）
出力装置８７９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＬＣＤ、又は有機ＥＬ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。また、本開示に係る出力装置８７９は、触覚刺激を出力することが可能な種々の振動デバイスを含む。
【００９９】
（ストレージ８８０）
ストレージ８８０は、各種のデータを格納するための装置である。ストレージ８８０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。
【０１００】
（ドライブ８８１）
ドライブ８８１は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９０１に記録された情報を読み出し、又はリムーバブル記録媒体９０１に情報を書き込む装置である。
【０１０１】
（リムーバブル記録媒体９０１）
リムーバブル記録媒体９０１は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙ（登録商標）メディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９０１は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。
【０１０２】
（接続ポート８８２）
接続ポート８８２は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９０２を接続するためのポートである。
【０１０３】
（外部接続機器９０２）
外部接続機器９０２は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。
【０１０４】
（通信装置８８３）
通信装置８８３は、ネットワークに接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、又は各種通信用のモデム等である。
【０１０５】
＜３．まとめ＞
以上説明したように、本開示の一実施形態に係る情報処理装置１０は、ニューラルネットワークを用いた学習を行う学習部１２０を備え、学習部１２０は、ニューラルネットワークが出力する学習に係る理想状態とのギャップ値に基づいて、学習中にバッチサイズの値を動的に変更すること、を特徴の一つとする。係る構成によれば、ＤＮＮによる学習を学習手法に依らず効果的に高速化することが可能となる。
【０１０６】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１０７】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１０８】
また、コンピュータに内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアに、情報処理装置１０が有する構成と同等の機能を発揮させるためのプログラムも作成可能であり、当該プログラムを記録した、コンピュータに読み取り可能な非一過性の記録媒体も提供され得る。
【０１０９】
また、本明細書の情報処理装置１０の処理に係る各ステップは、必ずしもフローチャートに記載された順序に沿って時系列に処理される必要はない。例えば、情報処理装置１０の処理に係る各ステップは、フローチャートに記載された順序と異なる順序で処理されても、並列的に処理されてもよい。
【０１１０】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得する取得部と、
前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示する指示部と、
を備える、
情報処理装置。
（２）
前記理想状態とのギャップ値は、少なくとも損失に関する値を含み、
前記取得部は、前記損失に関する値を取得し、
前記指示部は、前記損失に関する値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示する、
前記（１）に記載の情報処理装置。
（３）
前記損失に関する値は、前記損失のｎ回微分値（ｎは０以上の整数。以下同様）を含む、
前記（２）に記載の情報処理装置。
（４）
前記損失のｎ回微分値は、時間方向における前記損失の微分値である、
前記（３）に記載の情報処理装置。
（５）
前記取得部は、ＡＰＩを介して前記前記損失に関する値を取得し、
前記指示部は、前記損失に関する値に基づいて、自動的に前記バッチサイズの値の変更を指示する、
前記（２）〜（４）のいずれかに記載の情報処理装置。
（６）
前記指示部は、前記損失に関する値から学習の収束が推定される場合、バッチサイズの値の増加を指示する、
前記（２）〜（５）のいずれかに記載の情報処理装置。
（７）
前記指示部は、前記損失のｎ回微分値の値に基づいて、バッチサイズの値の増加を指示する、
前記（３）または（４）に記載の情報処理装置。
（８）
前記指示部は、前記損失の値または前記損失の傾きの少なくともいずれかが閾値を下回ることに基づいて、バッチサイズの値の増加を指示する、
前記（７）に記載の情報処理装置。
（９）
前記指示部は、前記損失に関する値に基づいて学習の発散が推定される場合、バッチサイズの値の減少を指示する、
前記（２）〜（８）のいずれかに記載の情報処理装置。
（１０）
前記指示部は、前記損失に関する値に基づいて学習の発散が推定される場合、過去のエポックにおけるネットワークモデルの再読み込みを指示する、
前記（９）に記載の情報処理装置。
（１１）
前記指示部は、前記過去のエポックにおけるネットワークモデルの再読み込みが行われた場合、前記過去のエポックで設定された値よりも小さいバッチサイズの値を設定させる、
前記（１０）に記載の情報処理装置。
（１２）
前記指示部は、ＧＰＵ中のモデルの作り直しによるバッチサイズの増減を指示する、
前記（１）〜（１１）のいずれかに記載の情報処理装置。
（１３）
前記指示部は、学習に係る計算のループ数の増減によるバッチサイズの増減を指示する、
前記（１）〜（１２）のいずれかに記載の情報処理装置。
（１４）
前記指示部は、学習に用いられるＧＰＵの数の増減によるバッチサイズの増減を指示する、
前記（１）〜（１３）のいずれかに記載の情報処理装置。
（１５）
前記指示部は、追加で利用可能なＧＰＵが存在する場合、当該ＧＰＵの学習への割り当てによるバッチサイズの増加を指示する、
前記（１）〜（１４）のいずれかに記載の情報処理装置。
（１６）
前記指示部は、追加で利用可能なＧＰＵが存在せず、かつ現在利用中のＧＰＵのメモリに空き容量が存在する場合、現在利用中のＧＰＵ中のモデルを作り直しによるバッチサイズの増加を指示する、
前記（１）〜（１５）のいずれかに記載の情報処理装置。
（１７）
前記指示部は、現在利用中のＧＰＵのメモリに空き容量が存在しない場合、学習に係る計算のループ数の増加によるバッチサイズの増加を指示する、
前記（１）〜（１６）のいずれかに記載の情報処理装置。
（１８）
前記理想状態とのギャップ値は、トレーニングエラーまたはバリデーションエラーのうち少なくともいずれかを含む、
前記（１）に記載の情報処理装置。
（１９）
プロセッサが、ニューラルネットワークによる学習に係る理想状態とのギャップ値を取得することと、
前記理想状態とのギャップ値に基づいて、前記ニューラルネットワークにおけるバッチサイズの値の動的な変更を指示することと、
を含む、
情報処理方法。
【符号の説明】
【０１１１】
１０      情報処理装置
１１０    入出力制御部
１２０    学習部
１３０    微分計算部
１４０    バッチサイズ変更部
【図１】
2020042753.tif 000003
【図２】
2020042753.tif 000004
【図３】
2020042753.tif 000005
【図４】
2020042753.tif 000006
【図５】
2020042753.tif 000007
【図６】
2020042753.tif 000008
【図７】
2020042753.tif 000009
【図８】
2020042753.tif 000010
【図９】
2020042753.tif 000011
【図１０】
2020042753.tif 000012
【図１１】
2020042753.tif 000013
【図１２】
2020042753.tif 000014
【図１３】
2020042753.tif 000015
【図１４】
2020042753.tif 000016
【図１５】
2020042753.tif 000017
【図１６】
2020042753.tif 000018
【図１７】
2020042753.tif 000019