(57)【特許請求の範囲】
【請求項１】
多層ニューラルネットワークの学習を行う情報処理制御部を有する学習装置における学習方法において、
学習率の初期値により学習を開始し、学習率を前記初期値のまま、または、学習が進むにつれて前記初期値よりも学習率を減少させて学習を行う第１の学習工程と、
前記第１の学習工程の後、前記学習率を大きくする工程と、
前記大きくした学習率により学習を開始し、学習が進むにつれて学習率を減少させて学習を行う第２の学習工程と、
を有し、
前記第１の学習工程及び前記第２の学習工程は、ミニバッチを用いた勾配計算によりなされることを特徴とする学習方法。
【請求項２】
前記大きくした学習率の値は、前記学習率の初期値よりも大きいことを特徴とする請求項１に記載の学習方法。
【請求項３】
前記大きくした学習率の値は、前記大きくした学習率の値を初期値として学習を始めた場合に、Loss値が発散してしまう値であることを特徴とする請求項１または２に記載の学習方法。
【請求項４】
前記第１の学習工程及び前記第２の学習工程における学習は、Momentumの項を含むバックプロパゲーションの更新式により行われることを特徴とする請求項１から３のいずれかに記載の学習方法。
【請求項５】
前記Momentumの項は、前記第１の学習工程から前記第２の学習工程に移行する際に、連続性を保っていることを特徴とする請求項４に記載の学習方法。
【請求項６】
前記第１の学習工程及び前記第２の学習工程における学習は、バックプロパゲーションの更新式により行われることを特徴とする請求項１から３のいずれかに記載の学習方法。
【請求項７】
多層ニューラルネットワークは、Convolutional ニューラルネットワークであることを特徴とする請求項１から６のいずれかに記載の学習方法。
【請求項８】
多層ニューラルネットワークは、Stacked Auto-Encodersであることを特徴とする請求項１から６のいずれかに記載の学習方法。
【請求項９】
多層ニューラルネットワークは、Recurrent ニューラルネットワークであることを特徴とする請求項１から６のいずれかに記載の学習方法。
【請求項１０】
前記学習率の初期値は、Loss値が発散しない値であることを特徴とする請求項１から９のいずれかに記載の学習方法。
【請求項１１】
前記第２の学習工程は、学習が進むにつれて、学習率が単調減少することを特徴とする請求項１から１０のいずれかに記載の学習方法。
【請求項１２】
前記第１の学習工程及び前記第２の学習工程における学習には、確率的勾配降下法が用いられていることを特徴とする請求項１から１１のいずれかに記載の学習方法。
【請求項１３】
多層ニューラルネットワークの学習のプログラムにおいて、
学習率の初期値により学習を開始し、学習率を前記初期値のまま、または、学習が進むにつれて前記初期値よりも学習率を減少させて学習を行う第１の学習工程と、
前記第１の学習工程の後、前記学習率を大きくする工程と、
前記大きくした学習率により学習を開始し、学習が進むにつれて学習率を減少させて学
習を行う第２の学習工程と、
をコンピュータに実行させ、
前記第１の学習工程及び前記第２の学習工程は、ミニバッチを用いた勾配計算によりなされることを特徴とするプログラム。
【請求項１４】
多層ニューラルネットワークの学習を行う情報処理制御部を有する学習装置において、
前記情報処理制御部は、学習率の初期値により学習を開始し、学習率を前記初期値のまま、または、学習が進むにつれて前記初期値よりも学習率を減少させて第１の学習を行い、前記第１の学習の後、前記学習率を大きくし、前記大きくした学習率により学習を開始し、学習が進むにつれて学習率を減少させて第２の学習を行い、
前記第１の学習及び前記第２の学習は、ミニバッチを用いた勾配計算によりなされることを特徴とする学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習方法、プログラム及び学習装置に関する。
【背景技術】
【０００２】
近年、機械学習を用いて、物体の識別等を行う方法の検討が多数なされている。このような機械学習のうちの１つとして、深い階層を有するニューラルネットワークを用いた機械学習である深層学習（deep learning)は、高い識別性能を有している。
【０００３】
このようなニューラルネットワークを用いた機械学習として、ニューラルネットワーク学習の高速化を目的とするものが開示されている（例えば、特許文献１）。具体的には、共役勾配法を用いた多層型ニューラルネットワークの学習において、ニューロンの重みの初期値を与え、ニューロンの重みに対する誤差の最急降下勾配を求め、最急降下方向に前回の共役方向を足し込む割合を計算する。そして、最急降下勾配と前回の共役方向より次の共役方向を求め、直線探索の探索開始点におけるニューロンの重みのノルムの層平均と探索点における重みのノルムの層平均の差がある一定の値を越えない範囲で誤差最小点を求める。このように求めた誤差最小点に対応して重みを更新する方法が開示されている。
【０００４】
また、ニューラルネットワーク学習の停滞を避け、学習を高速化を目的とするものニューラルネットワーク学習が停滞した場合には、ユーザにその旨を伝え、回避方法の候補を提示する方法が開示されている（例えば、特許文献２）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されている方法では、共役勾配法が有効な問題に対してのみ使用が可能な方法であり、適用範囲に限界がある。また、特許文献２に開示されている方法では、停滞が発生する度にユーザが条件などを再設定する必要があり、自動的に高速に学習を行うことは困難である。
【０００６】
このため、深い階層を持つニューラルネットワーク学習方法において、学習が短時間で完了するものが求められている。
【課題を解決するための手段】
【０００７】
本実施の形態の一観点によれば、多層ニューラルネットワークの学習方法において、学習率の初期値により学習を開始し、学習率を前記初期値のまま、または、学習が進むにつれて前記初期値よりも学習率を減少させて学習を行う第１の学習工程と、前記第１の学習工程の後、前記学習率を大きくする工程と、前記大きくした学習率により学習を開始し、学習が進むにつれて学習率を減少させて学習を行う第２の学習工程と、を有することを特徴とする。
【発明の効果】
【０００８】
開示の学習方法によれば、深い階層を持つニューラルネットワーク学習方法において、学習を短時間で完了させることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態におけるニューラルネットワーク学習装置の構成図
【図２】ニューラルネットワーク学習の説明図
【図３】多層ニューラルネットワークの説明図
【図４】Auto-Encoderの説明図
【図５】Stacked Auto-Encodersの説明図
【図６】Stacked Auto-Encodersの学習方法の説明図
【図７】バックプロパゲーションの説明に用いたニューラルネットの構成図
【図８】従来の多層ニューラルネットワーク学習方法のフローチャート
【図９】本実施の形態における多層ニューラルネットワーク学習方法のフローチャート
【図１０】更新回数とLoss値との相関図
【発明を実施するための形態】
【００１０】
本発明を実施するための形態について、以下に説明する。尚、同じ部材等については、同一の符号を付して説明を省略する。
【００１１】
（ニューラルネットワーク学習装置）
本実施の形態におけるニューラルネットワーク学習装置となる情報処理装置１０の一例を図１に示す。尚、本実施の形態におけるニューラルネットワーク学習装置は、通常の処理系、例えばＰＣ（personal computer）等を用いることも可能である。図１は、本実施の形態におけるニューラルネットワーク学習装置となる情報処理装置１０のハードウェア構成を一例として示すものである。
【００１２】
図１に示されるように、情報処理装置１０は、ＣＰＵ（Central Processing Unit）１１、ＨＤＤ（Hard Disk Drive）１２、ＲＡＭ（Random Access Memory）１３、ＲＯＭ（Read Only Memory）１４、入力装置１５、表示装置１６、外部Ｉ／Ｆ１７等を有している。これらの各々がバス２０により接続されている。
【００１３】
ＣＰＵ１１は、ＲＯＭ１４やＨＤＤ１２等の記憶装置からプログラムやデータをＲＡＭ１３上に読み出し、処理を実行することで、情報処理装置１０の全体の制御や機能を実現する演算装置である。ＣＰＵ１１は、本実施の形態におけるニューラルネットワーク学習装置の情報処理制御部となるものであり、この情報処理制御部において、本実施の形態におけるニューラルネットワーク学習方法が行われる。
【００１４】
ＨＤＤ１２は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、例えば、本実施の形態を実現するためのプログラム、情報処理装置１０の全体を制御する基本ソフトウェアであるＯＳ（Operating System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。ＨＤＤ１２は格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢ（データベース）により管理している。尚、情報処理装置１０は、ＨＤＤ１２の代わりに又はＨＤＤ１２と併せて、ＳＳＤ（Solid State Drive）等を備えていてもよい。
【００１５】
ＲＡＭ１３は、プログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１４は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。
【００１６】
入力装置１５は、ユーザが各種操作信号を入力するのに用いられる装置である。入力装置１５は、例えば、各種操作ボタン、タッチパネル、キーボード、マウス等である。
【００１７】
表示装置１６は、情報処理装置１０による処理結果を表示する装置である。表示装置１６は、例えば、ディスプレイ等である。
【００１８】
外部Ｉ／Ｆ１７は、外部装置とのインタフェースである。外部装置には、例えば、ＵＳＢ（Universal Serial Bus）メモリ、ＳＤカード、ＣＤ、ＤＶＤ等がある。
【００１９】
本実施の形態に係る情報処理装置１０は、上記ハードウェア構成を有することにより、後述する各種処理を実現することができる。
【００２０】
（機械学習）
次に、本実施の形態におけるニューラルネットワーク学習装置を用いた機械学習アルゴリズムについて、図２に基づき説明する。具体的には、機械学習アルゴリズムは、図２に示されるように、学習時において、入力データとそれに対応する正解データである教師データを入力し、パラメータを学習する機械学習アルゴリズムを行うことにより、アルゴリズムのパラメータを最適化して学習を行う。次に、予測時において、学習が終わったパラメータを用いて、入力データより識別を行う機械学習アルゴリズムを行い、予測結果を出力する。本実施の形態は、このうち学習時における機械学習アルゴリズムに関するものであり、この学習時における機械学習アルゴリズムにおける特に多層ニューラルネットワークのパラメータ最適化について説明する。
【００２１】
本実施の形態における学習方法は、後述するように、学習の途中で学習率を大きくするものであるが、説明の便宜上、最初にニューラルネットワーク学習方法に関する説明を行った後、本実施の形態における学習方法の詳細について説明する。尚、本実施の形態においては、学習となるパラメータを最適化には、バックプロパゲーション（誤差逆伝播法）を用いる。
【００２２】
（多層ニューラルネットワーク）
最初に、多層ニューラルネットワークについて説明する。ニューラルネットワーク（neural network）とは、脳機能に見られるいくつかの特性を計算機上のシミュレーションによって表現することを目指した数学モデルである。多層ニューラルネットワーク（多層パーセプトロンとも呼ぶ）は、ニューラルネットワークの一種であり、複数の層にニューロンを配置させたフィードフォワード型ニューラルネットワークである。例えば、図３に示されるように、丸で示されているニューロンが、多層（入力層、中間層、出力層）に接続されている。
【００２３】
このようなニューラルネットワークにおける次元削減（次元圧縮ともいう）の方法としては、図４に示されるように、出力が入力と同じ教師信号の数となるように学習を行うAuto-Encoderと呼ばれる構成がある。このように、中間層のニューロン数を入力の次元数よりも少なくすることで、より少ない次元数で入力データを再現するように次元削減を行うことができる。このAuto-Encoderにおいて一層ずつ学習を行い、組み合わせて多層としたStacked Auto-Encodersと呼ばれる方法を用いるとうまく次元削減ができる。
【００２４】
ニューラルネットワークは多層にすることにより、表現能力が上がり識別器の性能が上がることや、次元削減ができるが知られている。そのため、次元削減を行う場合に、一層で所望の次元数まで減らすのではなく、何層かに分けて次元数を減らすことで、次元削減器の性能を上げることができる。この構成の１つとしてAuto-Encodersを積み重ねることで、次元削減器を構成するStacked Auto-Encodersという構成がある。それぞれの層で個別に学習を行った後に、それを全体に組み合わせてもう一回Fine-trainingと呼ばれる学習を行い、次元削減器の性能向上を図ることができる。
【００２５】
Stacked Auto-Encodersでは単層ごとに学習が必要である上、Fine-trainingでは深い階層のニューラルネットワークを入力して学習を行う場合が多く、学習に非常に時間がかかる。しかしながら、本実施の形態を適用することにより、短時間で学習を終わらせることが可能である。また、本実施の形態を適用することにより、従来と比較して、より深い構造のニューラルネットワークで学習を行っても時間的に問題ないため、結果的に精度を向上させることができる。
【００２６】
（Stacked Auto-Encoders）
次に、多層ニューラルネットワークの一種であるStacked Auto-Encodersについて説明する。この場合、Stacked Auto-Encodersにおける次元削減部及び次元復元部の学習とは、入力された学習データに基づき、Stacked Auto-Encodersの各層のネットワーク係数（これは「重み」とも称される）を調整することに相当する。尚、このようなネットワーク係数は、所定のパラメータの一例である。
【００２７】
Stacked Auto-Encodersとは、Auto-Encoderと呼ばれるニューラルネットワークを積み重ねて多層とした構成のニューラルネットワークである。ここで、Auto-Encoderとは、入力層と出力層のニューロン数（ユニット数）が同数であり、かつ、中間層（隠れ層）のニューロン数（ユニット数）が入力層（出力層）より少ない構成のニューラルネットワークである。
【００２８】
一例として、次元削減部及び次元復元部が、図５に示すような５層から構成されるStacked Auto-Encodersにより実現されるものとして説明する。即ち、次元削減部は、入力された１００次元のベクトルデータを、５０次元のベクトルデータに次元削減した後、２５次元のベクトルデータに削減する。一方、次元復元部は、入力された２５次元のベクトルデータを、５０次元のベクトルデータに次元復元した後、１００次元のベクトルデータに次元復元する。図５に示すStacked Auto-Encodersの学習について、図６を用いて説明する。
【００２９】
Stacked Auto-Encodersの学習は、Stacked Auto-Encodersを構成するAuto-Encoder毎に行われる。従って、図５に示すStacked Auto-Encodersは、Stacked Auto-Encodersを構成する第１のAuto-Encoder及び第２のAuto-Encoderについて、学習を行う（図６のＳ１及びＳ２）。そして、最後に、Fine-trainingと呼ばれる学習を行う（図６のＳ３）。
【００３０】
Ｓ１）まず、図５のStacked Auto-Encodersを構成する第１のAuto-Encoderについて、学習データ１０００を用いて学習を行う。即ち、第１層（入力層）のニューロン数が１００、第２層（中間層、隠れ層）のニューロン数が５０、第３層（出力層）のニューロン数が１００の第１のAuto-Encoderについて、学習データを用いて学習を行う。
【００３１】
このような学習は、各ｉ（ｉ＝１，・・・，３０）に対して、ｙｉを第１のAuto-Encoderの入力データ及び教師データとして誤差逆伝播法（Backpropagation）により学習を行えばよい。つまり、学習データを用いて、第１のAuto-Encoderの入力データと出力データが同じになるように、誤差逆伝播法によりネットワーク係数の調整を行う。
【００３２】
Ｓ２）次に、図５のStacked Auto-Encodersを構成する第２のAuto-Encoderについて、第１のAuto-Encoderの第２層（中間層、隠れ層）に対する入力データを用いて学習を行う。
【００３３】
ここで、第１のAuto-Encoderにおいて、入力層（第１層）の各ニューロンと第２層の上からｊ番目のニューロンとの間のネットワーク係数をそれぞれｗ１，ｊ、・・・、ｗ１００，ｊとする。この場合、第２のAuto-Encoderの入力データは、下記数１に示される式により表される。
【００３４】
【数１】
0006620439.tif 000002
従って、各ｉ（ｉ＝１，・・・，３０）に対して、ｚｉを第２のAuto-Encoderの入力データ及び教師データとして誤差逆伝播法により学習を行えばよい。つまり、３０個の５０次元のベクトルデータｚｉを用いて、第２のAuto-Encoderの入力データｚｉと出力データが同じになるように、誤差逆伝播法によりネットワーク係数の調整を行う。
【００３５】
Ｓ３）Stacked Auto-Encodersを構成するすべてのAuto-Encoderについて学習を行った後、Fine-training（又は、Fine-Tuning）と呼ばれる学習を行う。Fine-trainingとは、学習を行ったすべてのAuto-Encoderから構成されたStacked Auto-Encodersについて学習データを用いて学習を行うことである。即ち、各ｉ（ｉ＝１，・・・，３０）に対して、ｙｉをStacked Auto-Encodersの入力データ及び教師データとして誤差逆伝播法により学習を行えばよい。つまり、学習データを用いて、Stacked Auto-Encodersの入力データと出力データが同じになるように、誤差逆伝播法によりネットワーク係数の調整を行う。
【００３６】
このようなFine-trainingを最後に行うことで、Stacked Auto-Encodersの各ネットワーク係数が微調整され、次元削減部及び次元復元部の性能を向上させることができる。
【００３７】
上記では、一例として、各層のニューロン数が１００、５０、２５、５０、１００である５層のStacked Auto-Encodersを用いて説明したが、これに限られない。Stacked Auto-Encodersの各層のニューロン数、及び、ニューラルネットワークを構成する層の数は設計事項であり、任意の数を選択することができる。
【００３８】
ただし、次元削減部による次元削減及び次元復元部による次元復元は、複数の層に分けて行うことが好ましい。例えば、上記のように１００次元のベクトルデータを２５次元のベクトルデータに削減する場合について考える。この場合、各層のニューロン数が１００、２５、１００である３層のStacked Auto-Encodersを用いて次元削減を行うよりも、上記の例のように複数の層（上記の例では５層）に分けて順次、次元数を削減する構成とする方が好ましい。
【００３９】
（Convolutional ニューラルネットワーク（ＣＮＮ））
ＣＮＮは、画像系の深い層のニューラルネットワークでよく使われる手法である。学習には通常のバックプロパゲーションで行われるが、構造として重要な点は以下の二点である。
１）  Convolution
Convolutionは、層と層の間を全接続するのではなく、画像上で位置的に近いところのみを接続する。また、その係数は画像上の位置によらない。定性的には、畳み込み（Convolution）により特徴抽出を行う。また接続を制限して過学習を防ぐ効果を有する。
２）  Pooling
Poolingは、次の層につなげるときに、位置的な情報を削減する。定性的には位置不変性を得る。Poolingには、最大値をとるmaxpoolingや平均値を取る平均プーリングなどがある。
【００４０】
ＣＮＮでは非常に大量の画像データを入力して学習を行う場合が多く、学習に非常に時間がかかるが、本実施の形態を適用することにより、短時間で学習を終わらせることが可能である。また、本実施の形態を適用することにより、従来と比較して、より深い構造のニューラルネットワークで学習を行っても時間的に問題ないため、結果的に精度を向上させることができる。
【００４１】
（Recurrent ニューラルネットワーク（ＲＮＮ））
ＲＮＮは、隠れ層の出力内容が、次の時刻の入力として使われるニューラルネットワークの構造である。ＲＮＮでは、出力を入力として戻すため、学習率を大きくすると容易に係数が発散してしまう。そのため、学習率を小さくして時間をかけて学習を行う必要があるが、本実施の形態を用いることにより、短時間で学習を終わらせることが可能である。また、本実施の形態を適用することにより、従来と比較して、より深い構造のニューラルネットワークで学習を行っても時間的に問題ないため、結果的に精度を向上させることができる。
【００４２】
（バックプロパゲーション（学習方法））
ニューラルネットワークの学習にはバックプロパゲーション（誤差逆伝搬法とも言う）を用いる。バックプロパゲーションでは、ネットワークの出力と教師データを比較し、それを元に各出力ニューロンの誤差を計算する。出力ニューロンの誤差はそのニューロンに接続された前段のニューロンに原因があると考え、誤差が少なくなるようにニューロンの接続の重みパラメータを更新する。また、前段のニューロンについて、期待されている出力と実際の出力の差を計算する。これを局所誤差と言う。この局所誤差はさらに前段のニューロンに原因があると考え、もう一段前段のニューロンの接続の重みを更新する。こうして次々と前段のニューロンに遡って更新を行い、最終的にすべてのニューロンの接続の重みパラメータを更新していく。これがバックプロパゲーションの概要である。
【００４３】
バックプロパゲーションを説明するための便宜上、図７に示すような入力層、中間層、出力層からなるニューラルネットワークを考える。説明のための便宜上、各層における構成要素は２個としている。記号の定義は以下の通りである。
【００４４】
ｘｉ：入力データ
ｗｉｊ（１）：入力層から中間層における結合係数
ｗｊｋ（２）：中間層から出力層における結合係数
ｕｊ：中間層への入力
ｖｋ：出力層への入力
Ｖｊ：中間層からの出力
ｆ（ｕｊ）：中間層の出力関数
ｇ（ｖｋ）：出力層の出力関数
ｏｋ：出力データ
ｔｋ：教師データ
コスト関数Ｅを出力データと教師データの二乗誤差とすると、数２に示す式が得られる。
【００４５】
【数２】
0006620439.tif 000003
ここで、数３及び数４に示される式より、確率的勾配降下法（ＳＧＤ）で最適な係数ｗを求めることを考えると、パラメータの更新式は数５及び数６に示される式となる。
【００４６】
【数３】
0006620439.tif 000004
【００４７】
【数４】
0006620439.tif 000005
【００４８】
【数５】
0006620439.tif 000006
【００４９】
【数６】
0006620439.tif 000007
数５に示される式の右辺、数６に示される式の右辺が、それぞれの更新後の係数であり、αは学習率である。
【００５０】
まず、数７に示されるように、中間層と出力層の間の係数を求める。
【００５１】
【数７】
0006620439.tif 000008
ここで、数７に示される式は、数８に示される式より、数９に示される式となる。尚、εｋは、出力層の素子ｋにおける誤差信号を意味している。
【００５２】
【数８】
0006620439.tif 000009
【００５３】
【数９】
0006620439.tif 000010
次に、入力層と中間層の間の係数を数１０に示すように求める。
【００５４】
【数１０】
0006620439.tif 000011
中間層の素子ｊの誤差信号を数１１に示される式で定義すると、数１２に示される式の関係となる。
【００５５】
【数１１】
0006620439.tif 000012
【００５６】
【数１２】
0006620439.tif 000013
数１１に示される式について、中間層の素子数がＫ個の場合として、一般化すると、数１３に示す式となる。
【００５７】
【数１３】
0006620439.tif 000014
以上より、結合係数ｗｉｊ（１）及びｗｊｋ（２）の更新式は、数１４及び数１５に示される式となり、数１４及び数１５に示される式より、結合係数ｗｉｊ（１）及びｗｊｋ（２）を求めることが可能である。尚、中間層が増えた場合も同様に、１段前の誤差信号εを使用して更新式を表現する。
【００５８】
【数１４】
0006620439.tif 000015
【００５９】
【数１５】
0006620439.tif 000016
以上は、学習データが１セットとして計算してきたが、実際には複数のデータを使用する。データの数をＮ、ｎ番目のデータをｘｉｎ、ｎ番目のデータに関する各素子の誤差信号をεｋｎ、εｊｎとして、勾配降下法で最適化する際の更新式は、数１６及び数１７に示される式となる。
【００６０】
【数１６】
0006620439.tif 000017
【００６１】
【数１７】
0006620439.tif 000018
ここでのαは学習率であるが、この値が大きすぎると発散するため、入力データやネットワークの構造に応じて適切な値に設定する必要がある。尚、発散を防止するため、また、学習率は小さくすると学習に時間がかかるため、発散しない範囲で学習率αを最大に設定することが一般的に行われている。
【００６２】
数５〜数１７に示される式をあるステップｔの学習時の更新量として記述すると、数１８に示される式となる。
【００６３】
【数１８】
0006620439.tif 000019
ここで、経験的に係数の収束に過去の方向を加味するようにMomentumの項を追加すると高速に学習が行われることが知られており、更新式は数１９に示す式となる。
【００６４】
【数１９】
0006620439.tif 000020
数１９に示される式の右辺第１項がMomentumの項であり、Momentumの項のうち、数２０に示される部分が、１ステップ前の更新量であり、εはMomentumの係数である。一般的にはε＝０．９程度にすると有効であることが知られている。
【００６５】
【数２０】
0006620439.tif 000021
（ＳＧＤ）
入力データ全サンプルを評価して、更新をかけていると一回のパラメータ更新に非常に時間が掛かる。このため、ニューラルネットワークの学習では最適化問題を確率的勾配降下法（Stochastic Gradient Descent :ＳＧＤ）により解くことがある。ＳＧＤは通常の勾配降下法を簡易化したものであり、オンライン学習に向いているとされる手法である。通常の勾配降下法では全データ点のコスト関数の和を最終的なコスト関数として最適化を行う。これに対して、ＳＧＤではランダムにデータ点を１つピックアップしてそのデータ点のコスト関数に対応する勾配でパラメータを更新する。更新した後、再び別のデータ点をピックアップしパラメータ更新を繰り返す。
【００６６】
尚、この中間の方法として、ミニバッチと呼ばれる、全データを、複数個のデータ郡に分け、それぞれをミニバッチと呼び、そのミニバッチごとにパラメータを最適化する方法があり、多層ニューラルネットワークの学習では良く使用される。
【００６７】
次に、本実施の形態における学習方法について、従来の学習方法と比較しながら説明する。
【００６８】
（従来の学習方法）
従来の学習方法（通常の最適化の方法）は、最初に所定の学習率の初期値を設定し、パラメータ更新を進めるに伴い、学習率を減少させていく。これにより、最初に大きくパラメータを動かし解に近くして、その後、解に近くなったら細かい修正がかけられていくようにする。
【００６９】
具体的に、従来の学習方法について、図８に基づき説明する。
【００７０】
最初に、ステップ１０２（Ｓ１０２）に示すように、学習率の初期値を設定する。学習率の初期値は、前述したように、初期においてLoss値（コスト関数値）が発散しない範囲であって、最大となる値に設定する。
【００７１】
次に、ステップ１０４（Ｓ１０４）に示すように、初期値の学習率で学習を開始する。この学習では、学習が進むに伴い、即ち、パラメーラの更新が進むに伴い、学習率を減少させながら学習を進める。例えば、１０万回パラメータの更新を行ったら、そこで学習率を一桁落としていきながら学習を進める。学習は、例えば、パラメータの更新回数が所定の回数となった場合等に終了する。
【００７２】
（本実施の形態における学習方法）
次に、本実施の形態における学習方法について説明する。本実施の形態における学習方法は、学習率の初期値は、初期においてLoss値が発散しない範囲であって、最大となる値に設定する点は、従来と同様であるが、パラメータの更新が進んだ後に、少なくとも一回は、学習率を大きくする。これにより、初期の発散を抑えつつ、学習開始後に最初にパラメータの方向や、適切な初期値が決まった後に、パラメータの変更量が大きくなるため、学習の進みが早くなる。この際、前述のMomentumの項も併用することにより、パラメータの更新の方向も維持されるため、より学習速度を大きくすることが可能となる。尚、この場合、途中で学習率を大きくしても、Momentumの係数は、連続性が保たれていることが好ましい。
【００７３】
尚、途中で大きくする学習率の値は、学習率の初期値よりも大きな値であることが好ましく、更には、この途中で大きくする学習率を学習率の初期値とした場合には、Loss値が発散してしまう値であることが好ましい。
【００７４】
また、最初からどの時点で学習率を上げるかスケジュールするのではなく、学習を開始時より、一定以上Loss値（正答率など学習が進んだかに係る指標値）が下がったと判断した時点において、自動的に学習率を上げるものであってもよい。
【００７５】
具体的に、本実施の形態における学習方法について、図９に基づき説明する。
【００７６】
最初に、ステップ２０２（Ｓ２０２）に示すように、学習率の初期値及び途中で大きくする学習率の値を設定する。学習率の初期値は、前述したように、初期においてLoss値が発散しない範囲であって、最大となる値に設定する。途中で大きくする学習率の値は、直前の学習率よりも大きな値、具体的には、後述する第１の学習の最後の学習率よりも大きな値に設定する。更には、途中で大きくする学習率の値は、学習率の初期値よりも大きな値、即ち、学習率の初期値をその値にした場合に、Loss値が発散してしまう値に設定してもよい。第１の学習は、学習率が初期値のままの値で学習を行ってもよく、また、学習が進むに伴い、学習率が初期値よりも減少させて学習を行ってもよい。
【００７７】
次に、ステップ２０４（Ｓ２０４）に示すように、第１の学習を行う。第１の学習は、初期値の学習率で学習を開始し、学習が進むに伴い、即ち、パラメーラの更新が進むに伴い、学習率を減少させながら学習を進める。また、学習率を減少させることなく、初期値の学習率のままで学習を行ってもよい。第１の学習は、例えば、パラメータの更新回数が所定の回数となった場合や、Loss値が所定の値まで減少した場合等に終了する。
【００７８】
次に、ステップ２０６（Ｓ２０６）に示すように、学習率を大きくする。具体的には、学習率の値をステップ２０２において設定した途中で大きくする学習率の値にする。
【００７９】
次に、ステップ２０８（Ｓ２０８）に示すように、第２の学習を行う。第２の学習は、途中で大きくした学習率で学習を開始し、学習が進むに伴い、即ち、パラメーラの更新が進むに伴い、学習率を減少させながら学習を進める。尚、第２の学習では、学習が進むに伴い、学習率を単調減少させながら学習を進めてもよい。第２の学習は、例えば、パラメータの更新回数が所定の回数となった場合や、Loss値が所定の値まで減少した場合等に終了する。
【００８０】
尚、第２の学習において、途中で大きくした学習率が初期値よりも大きくても、Loss値が発散しないのは、既に第１の学習をある程度行っているからである。また、第１の学習及び第２の学習は、バックプロパゲーションの更新式により行われるものであってもよく、このバックプロパゲーションの更新式は、Momentumの項を含むものであってもよい。また、本実施の形態においては、第１の学習から第２の学習に移行する際には、学習率を大きくしているが、上述したように、Momentumの項は連続性が保たれている。
【００８１】
以上のように、学習率を途中で大きくすることにより、同じパラメータの更新回数であっても、Loss値を低くすることができる。言い換えるならば、所定のLoss値に至るまでのパラメータの更新回数を減らすことができ、短時間で学習を完了することができる。
【００８２】
（学習結果）
次に、上記の従来の学習方法と本実施の形態における学習方法において、実際に学習を行った結果について説明する。
【００８３】
学習データは約１２０万枚の画像データであり、入力画像を１０００クラスに分類する課題に対する２２層のＣＮＮの学習における結果である。ネットワーク構成は、非特許文献２に記載されているmodelCに基づくものである。
【００８４】
従来の学習方法では、Momentumは０．９、学習率の初期値はLoss値が発散しない範囲であって、最大の値となる０．００１、学習率は、１００００更新回数（iteration）ごとに０．８倍となるように設定した。尚、クラス識別の性能を示すLoss値を求めるLoss関数としては、softmax関数を用いた。
【００８５】
また、本実施の形態における学習方法では、Momentumは０．９、学習率の初期値はLoss値が発散しない範囲であって、最大の値となる０．００１、学習率は、１００００iterationごとに０．８倍となるように設定した。また、学習の途中の１５０００iterationにおいて、学習率が大きくなるように設定した。
【００８６】
本実施の形態における学習方法において、途中で大きくする学習率の大きさと学習を進めた場合におけるLoss値の発散について調べた。具体的には、途中で大きくする学習率が、直前の学習率の２倍となる０．００１６、５倍となる０．００４、７．５倍となる０．００６、１０倍となる０．００８、２０倍となる０．０１６、３０倍となる０．０２４、４０倍となる０．０３２場合について調べた。この結果、途中で大きくする学習率が、直前の学習率の２倍となる０．００１６、５倍となる０．００４、７．５倍となる０．００６、１０倍となる０．００８、２０倍となる０．０１６の場合はLoss値が発散しなかった。これに対し、途中で大きくする学習率が、３０倍となる０．０２４、４０倍となる０．０３２の場合ではLoss値が発散した。従って、本実施の形態における学習方法の１つである上記のモデルの学習方法では、途中で大きくする学習率が、直前の学習率の２０倍以下であれば、学習を進めることができる。
【００８７】
図１０は、従来の学習方法と、本実施の形態における学習方法における更新回数とLoss値との関係を示す。Loss値は低いほど学習が進んでいることを意味する。図１０において、１０Ａは、従来の学習方法の場合である。１０Ｂ及び１０Ｃは、本実施の形態における学習方法であって、１０Ｂは、途中で大きくする学習率が、直前の学習率の２倍となる０．００１６の場合、１０Ｃは、５倍となる０．００４の場合を示す。
【００８８】
図１０の１０Ａに示される従来の学習方法の場合、学習率が、最初に０．００１から開始し、１００００iterationごとに、直前の０．８倍で減少するように設定されている。即ち、学習率が、最初に０．００１から開始し、１００００iterationで０．０００８、２００００iterationで０．０００６４、３００００iterationで０．０００５１２と次第に減少する。
【００８９】
また、図１０の１０Ｂに示される本実施の形態における学習方法の場合、学習率は、最初に０．００１から開始し、１００００iterationで０．０００８と減少した後、１５０００iterationで学習率を直前の２倍の０．００１６と大きくする。この後、２００００iterationで０．００１２６、３００００iterationで０．００１０２４と次第に減少するように設定されている。
【００９０】
また、図１０の１０Ｃに示される本実施の形態における学習方法の場合、学習率は、最初に０．００１から開始し、１００００iterationで０．０００８と減少した後、１５０００iterationで学習率を直前の５倍の０．００４と大きくする。この後、２００００iterationで０．００３２、３００００iterationで０．００２５６と次第に減少するように設定されている。
【００９１】
このように、本実施の形態における学習方法である１０Ｂ及び１０Ｃは、１５０００iterationで第１の学習から、第２の学習へと切り替わる。
【００９２】
この結果、１０Ａ、１０Ｂ、１０ＣのLoss値は、最初から１５０００iterationの直前までは同じである。しかしながら、１５０００iterationにおいて、学習率を大きくした本実施の形態である１０Ｂ、１０Ｃは、Loss値が一時的に大きくなる。この際、途中で直前の学習率の２倍とした１０Ｂよりも、学習率を５倍とより大きくした１０Ｃの方が、Loss値がより大きくなる。従って、この時点においては、Loss値は、上から順に、１０Ｃ、１０Ｂ、１０Ａとなっている。
【００９３】
この後、学習を進めるに従い、１０Ａ、１０Ｂ、１０Ｃは、Loss値が減少するが、約２００００iterationでほぼ同じとなる。これは、学習の途中で学習率を大きくすると、その後の学習が短時間で進行するため、Loss値の減少の度合も高くなるからである。この後、更に学習を進めると、Loss値の順序が逆転し、上から順に、１０Ａ、１０Ｂ、１０Ｃとなり、学習を進めるほど、その差が広がっていく。この結果、３２０００〜３５０００iterationにおいては、従来の学習方法である１０Ａは、Loss値が４．０〜４．２となり、本実施の形態である１０Ｂは、Loss値が３．７〜４．０となり、１０Ｃは、Loss値が３．５〜３．８となる。従って、本実施の形態における学習方法は、従来の学習方法よりも、所定の更新回数の学習を進めた際のLoss値を低くすることができるため、短時間で学習を完了させることができる。
【００９４】
本実施の形態における学習方法においては、途中で大きくする学習率の倍率が、大きければ、短時間で学習を完了させることができるが、大きすぎるとLoss値が発散してしまう。このため、途中で大きくする学習率は、Loss値が発散しない範囲で最大となるように、設定すると最も短時間で学習が完了するものと推察される。
【００９５】
以上、本発明の実施に係る形態について説明したが、上記内容は、発明の内容を限定するものではない。
【符号の説明】
【００９６】
１０        情報処理装置
１１        ＣＰＵ
１２        ＨＤＤ
１３        ＲＡＭ
１４        ＲＯＭ
１５        入力装置
１６        表示装置
１７        外部Ｉ／Ｆ
２０        バス
【先行技術文献】
【特許文献】
【００９７】
【特許文献１】特許第３３２３８９４号明細書
【特許文献２】特開平４−２６２４５３号公報
【非特許文献】
【００９８】
【非特許文献１】Y. LeCun, B. Boser, J.S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel, "Handwritten Digit Recognition with a Back-Paopagation Network", Advances in Neural Information Processing Systems (NIPS), pp. 396-404, 1990
【非特許文献２】He, Kaiming, et al. "Delving deep into rectifiers: Surpassing human-level performance on imagenet classification." arXiv preprint arXiv:1502.01852(2015).
【図１】
0006620439.tif 000022
【図２】
0006620439.tif 000023
【図３】
0006620439.tif 000024
【図４】
0006620439.tif 000025
【図５】
0006620439.tif 000026
【図６】
0006620439.tif 000027
【図７】
0006620439.tif 000028
【図８】
0006620439.tif 000029
【図９】
0006620439.tif 000030
【図１０】
0006620439.tif 000031