(57)【特許請求の範囲】
【請求項１】
学習モデルに学習させる教師データを取得する取得手段と、
前記教師データに基づいて、前記学習モデルの学習処理を繰り返し実行する学習手段と、
を含み、
前記学習手段は、前記学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを量子化して前記学習処理を実行し、
前記学習手段は、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択し、複数の前記学習モデルを作成し、
各学習モデルの精度に基づいて、前記複数の学習モデルのうちの少なくとも１つを選択する選択手段を更に含む、
ことを特徴とする学習システム。
【請求項２】
前記学習手段は、前記学習モデルの全てのレイヤのパラメータが量子化されるまで、前記学習処理を繰り返し実行する、
ことを特徴とする請求項１に記載の学習システム。
【請求項３】
前記学習手段は、前記学習モデルのレイヤを１つずつ量子化する、
ことを特徴とする請求項１又は２に記載の学習システム。
【請求項４】
前記学習手段は、前記学習モデルの中から、量子化するレイヤを所定の順序で次々と選択する、
ことを特徴とする請求項１〜３の何れかに記載の学習システム。
【請求項５】
前記学習手段は、前記学習モデルの中から、量子化するレイヤをランダムに次々と選択する、
ことを特徴とする請求項１〜４の何れかに記載の学習システム。
【請求項６】
前記学習手段は、前記一部のレイヤのパラメータを量子化して前記学習処理を所定回数繰り返した後に、前記他のレイヤのパラメータを量子化して前記学習処理を所定回数繰り返す、
ことを特徴とする請求項１〜５の何れかに記載の学習システム。
【請求項７】
前記学習システムは、前記選択手段により選択された学習モデルに対応する順序に基づいて、他の学習モデルの学習処理を実行する他モデル学習手段、
を更に含むことを特徴とする請求項１〜６の何れかに記載の学習システム。
【請求項８】
各レイヤのパラメータには、重み係数が含まれており、
前記学習手段は、前記一部のレイヤの重み係数を量子化して前記学習処理を実行した後に、前記他のレイヤの重み係数を量子化して前記学習処理を実行する、
ことを特徴とする請求項１〜７の何れかに記載の学習システム。
【請求項９】
前記学習手段は、前記学習モデルの一部のレイヤのパラメータを二値化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを二値化して前記学習処理を実行する、
ことを特徴とする請求項１〜８の何れかに記載の学習システム。
【請求項１０】
学習モデルに学習させる教師データを取得する取得ステップと、
前記教師データに基づいて、前記学習モデルの学習処理を繰り返し実行する学習ステップと、
を含み、
前記学習ステップは、前記学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを量子化して前記学習処理を実行し、
前記学習ステップは、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択し、複数の前記学習モデルを作成し、
各学習モデルの精度に基づいて、前記複数の学習モデルのうちの少なくとも１つを選択する選択ステップを更に含む、
ことを特徴とする学習方法。
【請求項１１】
学習モデルに学習させる教師データを取得する取得手段、
前記教師データに基づいて、前記学習モデルの学習処理を繰り返し実行する学習手段、
としてコンピュータを機能させるためのプログラムであって、
前記学習手段は、前記学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを量子化して前記学習処理を実行し、
前記学習手段は、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択し、複数の前記学習モデルを作成し、
各学習モデルの精度に基づいて、前記複数の学習モデルのうちの少なくとも１つを選択する選択手段として前記コンピュータを更に機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習システム、学習方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、教師データに基づいて、学習モデルの学習処理を繰り返し実行する技術が知られている。例えば、特許文献１には、教師データに基づいて、エポック数と呼ばれる回数だけ学習処理を繰り返す学習システムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１９−０７４９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような技術では、学習モデルのレイヤ数が増えると、学習モデル全体のパラメータの数も増えるので、学習モデルのデータサイズが大きくなる。この点、パラメータを量子化して個々のパラメータの情報量を少なくし、データサイズを小さくすることも考えられるが、本発明の発明者が極秘に行った研究によると、全てのパラメータを一度に量子化して学習処理を実行すると、学習モデルの精度が大幅に低下することが発見された。【０００５】
本発明は上記課題に鑑みてなされたものであって、その目的は、学習モデルの精度の低下を抑えつつ、学習モデルのデータサイズを小さくすることが可能な学習システム、学習方法、及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係る学習システムは、学習モデルに学習させる教師データを取得する取得手段と、前記教師データに基づいて、前記学習モデルの学習処理を繰り返し実行する学習手段と、を含み、前記学習手段は、前記学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを量子化して前記学習処理を実行する、ことを特徴とする。【０００７】
本発明に係る学習方法は、学習モデルに学習させる教師データを取得する取得ステップと、前記教師データに基づいて、前記学習モデルの学習処理を繰り返し実行する学習ステップと、を含み、前記学習ステップは、前記学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを量子化して前記学習処理を実行する、を含むことを特徴とする。【０００８】
本発明に係るプログラムは、学習モデルに学習させる教師データを取得する取得手段、前記教師データに基づいて、前記学習モデルの学習処理を繰り返し実行する学習手段、としてコンピュータを機能させるためのプログラムであって、前記学習手段は、前記学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを量子化して前記学習処理を実行する。【０００９】
本発明の一態様によれば、前記学習手段は、前記学習モデルの全てのレイヤのパラメータが量子化されるまで、前記学習処理を繰り返し実行する、ことを特徴とする。【００１０】
本発明の一態様によれば、前記学習手段は、前記学習モデルのレイヤを１つずつ量子化する、ことを特徴とする。【００１１】
本発明の一態様によれば、前記学習手段は、前記学習モデルの中から、量子化するレイヤを所定の順序で次々と選択する、ことを特徴とする。【００１２】
本発明の一態様によれば、前記学習手段は、前記学習モデルの中から、量子化するレイヤをランダムに次々と選択する、ことを特徴とする。【００１３】
本発明の一態様によれば、前記学習手段は、前記一部のレイヤのパラメータを量子化して前記学習処理を所定回数繰り返した後に、前記他のレイヤのパラメータを量子化して前記学習処理を所定回数繰り返す、ことを特徴とする。【００１４】
本発明の一態様によれば、前記学習手段は、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択し、複数の前記学習モデルを作成し、前記学習システムは、各学習モデルの精度に基づいて、前記複数の学習モデルのうちの少なくとも１つを選択する選択手段、を更に含むことを特徴とする。【００１５】
本発明の一態様によれば、前記学習システムは、前記選択手段により選択された学習モデルに対応する順序に基づいて、他の学習モデルの学習処理を実行する他モデル学習手段、を更に含むことを特徴とする。【００１６】
本発明の一態様によれば、各レイヤのパラメータには、重み係数が含まれており、前記学習手段は、前記一部のレイヤの重み係数を量子化して前記学習処理を実行した後に、前記他のレイヤの重み係数を量子化して前記学習処理を実行する、ことを特徴とする。【００１７】
本発明の一態様によれば、前記学習手段は、前記学習モデルの一部のレイヤのパラメータを二値化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを二値化して前記学習処理を実行する、ことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、学習モデルの精度の低下を抑えつつ、学習モデルのデータサイズを小さくすることができる。
【図面の簡単な説明】
【００１９】
【図１】学習システムの全体構成を示す図である。
【図２】一般的な学習モデルの学習方法を示す図である。
【図３】重み係数が量子化される学習処理の一例を示す図である。
【図４】レイヤを１つずつ量子化する学習処理の一例を示す図である。
【図５】最後のレイヤから順番に量子化する学習処理の一例を示す図である。
【図６】学習モデルの精度を示す図である。
【図７】学習システムで実現される機能の一例を示す機能ブロック図である。
【図８】教師データセットのデータ格納例を示す図である。
【図９】学習システムにおいて実行される処理の一例を示すフロー図である。
【図１０】変形例の機能ブロック図である。
【発明を実施するための形態】
【００２０】
［１．学習システムの全体構成］
以下、本発明に係る学習システムの実施形態の例を説明する。図１は、学習システムの全体構成を示す図である。図１に示すように、学習システムＳは、学習装置１０を含む。なお、学習システムＳには、互いに通信可能な複数台のコンピュータが含まれていてもよい。
【００２１】
学習装置１０は、本実施形態で説明する処理を実行するコンピュータである。例えば、学習装置１０は、パーソナルコンピュータ、サーバコンピュータ、携帯情報端末（タブレット型コンピュータを含む）、又は携帯電話機（スマートフォンを含む）等である。学習装置１０は、制御部１１、記憶部１２、通信部１３、操作部１４、及び表示部１５を含む。
【００２２】
制御部１１は、少なくとも１つのプロセッサを含む。制御部１１は、記憶部１２に記憶されたプログラムやデータに従って処理を実行する。記憶部１２は、主記憶部及び補助記憶部を含む。例えば、主記憶部はＲＡＭなどの揮発性メモリであり、補助記憶部は、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、又はハードディスクなどの不揮発性メモリである。通信部１３は、有線通信又は無線通信用の通信インタフェースであり、インターネットなどのネットワークを介してデータ通信を行う。
【００２３】
操作部１４は、入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイス、キーボード、又はボタン等である。操作部１４は、ユーザによる操作内容を制御部１１に伝達する。表示部１５は、例えば、液晶表示部又は有機ＥＬ表示部等である。表示部１５は、制御部１１の指示に従って画像を表示する。
【００２４】
なお、記憶部１２に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、上記説明した各コンピュータのハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部（例えば、光ディスクドライブやメモリカードスロット）や外部機器とデータの入出力をするための入出力部（例えば、ＵＳＢポート）が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して、各コンピュータに供給されるようにしてもよい。
【００２５】
［２．学習システムの概要］
本実施形態の学習システムＳは、教師データに基づいて、学習モデルの学習処理を実行する。
【００２６】
教師データは、学習モデルに学習させるデータである。教師データは、学習データ又は訓練データと呼ばれることもある。例えば、教師データは、学習モデルに対する入力（設問）と、学習モデルの出力（回答）と、のペアである。例えば、分類学習器の場合、教師データは、学習モデルに入力される入力データと同じ形式のデータと、入力データの分類を示すラベルと、がペアになったデータである。
【００２７】
例えば、入力データが画像又は動画であれば、教師データは、画像又は動画と、画像又は動画に示されたオブジェクト（被写体又はＣＧで描かれた物体）の分類を示すラベルと、がペアになったデータである。また例えば、入力データがテキスト又は文書であれば、教師データは、テキスト又は文書と、記述された内容の分類を示すラベルと、がペアになったデータである。また例えば、入力データが音声であれば、音声と、音声の内容又は発話者の分類を示すラベルと、がペアになったデータである。
【００２８】
なお、機械学習では、複数の教師データを利用して学習処理が実行されるので、本実施形態では、複数の教師データの集まりを教師データセットと記載し、教師データセットに含まれる１つ１つのデータを教師データと記載する。本実施形態で教師データと記載した箇所は、上記説明したペアを意味し、教師データセットは、ペアの集まりを意味する。
【００２９】
学習モデルは、教師あり学習のモデルである。学習モデルは、任意の処理を実行可能であり、例えば、画像認識、文字認識、音声認識、人間の行動パターンの認識、又は自然界の現象の認識を行う。機械学習自体は、公知の種々の手法を適用可能であり、例えば、ＤＮＮ（Deep Neural Network）、ＣＮＮ（Convolutional Neural Network）、ＲｅｓＮｅｔ（Residual Network）、又はＲＮＮ（Recurrent Neural Network）を利用可能である。
【００３０】
学習モデルは、複数のレイヤを含み、各レイヤには、パラメータが設定されている。例えば、レイヤとしては、Ａｆｆｉｎｅ、ＲｅＬＵ、Ｓｉｇｍｏｉｄ、Ｔａｎｈ、又はＳｏｆｔｍａｘといった名前で呼ばれるレイヤが含まれていてよい。学習モデルに含まれるレイヤの数は、任意であってよく、例えば、数個程度であってもよいし、１０個以上であってもよい。また、各レイヤには、複数のパラメータが設定されていてもよい。
【００３１】
学習処理は、教師データを学習モデルに学習させる処理である。別の言い方をすれば、学習処理は、教師データの入力と出力の関係が得られるように、学習モデルのパラメータを調整する処理である。学習処理自体は、公知の機械学習で利用される処理を適用可能であり、例えば、ＤＮＮ、ＣＮＮ、ＲｅｓＮｅｔ、又はＲＮＮの学習処理を利用可能である。学習処理は、所定の学習アルゴリズム（学習プログラム）により実行される。
【００３２】
本実施形態では、学習モデルとして、画像認識をするＤＮＮを例に挙げて、学習システムＳの処理を説明する。学習済みの学習モデルに未知の画像が入力されると、学習モデルは、画像の特徴量を計算し、特徴量に基づいて、画像内のオブジェクトの種類を示すラベルを出力する。このような学習モデルに学習させる教師データは、画像と、画像に示されたオブジェクトのラベルと、のペアとなる。
【００３３】
図２は、一般的な学習モデルの学習方法を示す図である。図２に示すように、学習モデルは、複数のレイヤを含み、各レイヤにはパラメータが設定されている。本実施形態では、学習モデルのレイヤ数をＬ（Ｌ：自然数）とする。Ｌ個のレイヤは、所定の順序で並べられている。本実施形態では、ｉ番目（ｉ：１〜Ｌの自然数）のレイヤのパラメータをｐｉと記載する。図２に示すように、各レイヤのパラメータｐｉには、重み係数ｗｉとバイアスｂｉが含まれている。
【００３４】
一般的なＤＮＮの学習方法によれば、同じ教師データに基づいて、エポック数と呼ばれる回数だけ学習処理が繰り返される。図２の例では、エポック数をＮ（Ｎ：自然数）とし、Ｎ回の学習処理の各々において、各レイヤの重み係数ｗｉが調整される。学習処理が繰り返されることにより、教師データが示す入力と出力の関係が得られるように、各レイヤの重み係数ｗｉが徐々に調整される。
【００３５】
例えば、１回目の学習処理により、各レイヤの初期値の重み係数ｗｉが調整される。図２では、１回目の学習処理により調整された重み係数を、ｗｉ１と記載する。１回目の学習処理が完了すると、２回目の学習処理が実行される。２回目の学習処理により、各レイヤの重み係数ｗｉ１が調整される。図２では、１回目の学習処理により調整された重み係数を、ｗｉ２と記載する。以降同様にして、学習処理がＮ回繰り返される。図２では、Ｎ回目の学習処理により調整された重み係数を、ｗｉＮと記載する。ｗｉＮは、学習モデルに最終的に設定される重み係数ｗｉとなる。
【００３６】
従来技術で説明したように、学習モデルのレイヤ数が増えると、パラメータｐｉの数も増えるので、学習モデルのデータサイズが大きくなる。そこで、学習システムＳは、重み係数ｗｉを量子化することによって、データサイズを小さくするようにしている。本実施形態では、一般的には浮動小数点数で表現される重み係数ｗｉを二値化することによって、重み係数ｗｉの情報量を圧縮し、学習モデルのデータサイズを小さくする場合を例に挙げて説明する。
【００３７】
図３は、重み係数ｗｉが量子化される学習処理の一例を示す図である。図３に示すＱ（ｘ）は、変数ｘを量子化する関数であり、例えば、「ｘ≦０」の場合は「−１」となり、「ｘ＞０」の場合は「１」となる。なお、量子化は、二値化に限られず、２段階以上の量子化が行われてもよい。例えば、Ｑ（ｘ）は、「−１」、「０」、「１」の３段階の量子化をする関数であってもよいし、「−２ｎ」〜「２ｎ」（ｎ：自然数）の間で量子化をする関数であってもよい。量子化の段階数や閾値は、任意のものを採用可能である。
【００３８】
図３に示す例では、１回目の学習処理により、各レイヤの初期値の重み係数ｗｉが調整されて量子化される。図３では、１回目の学習処理により調整された重み係数を、Ｑ（ｗｉ１）と記載する。図３の例では、１回目の学習処理において、全てのレイヤの重み係数ｗｉが量子化され、「−１」又は「１」で表現されることになる。
【００３９】
１回目の学習処理が完了すると、２回目の学習処理が実行される。２回目の学習処理により、量子化された重み係数Ｑ（ｗｉ２）が取得される。以降同様にして、学習処理がＮ回繰り返される。図２では、Ｎ回目の学習処理により量子化された重み係数を、Ｑ（ｗｉＮ）と記載する。Ｑ（ｗｉＮ）は、学習モデルに最終的に設定される重み係数ｗｉとなる。
【００４０】
上記のようにして、各レイヤの重み係数ｗｉを量子化すると、浮動小数点数等に比べて情報量を圧縮できるので、学習モデルのデータサイズを小さくすることができる。しかしながら、発明者の独自の研究によると、全てのレイヤを一度に量子化すると、学習モデルの精度が大きく低下することが発見された。そこで、本実施形態の学習システムＳは、レイヤを１つずつ量子化することによって、学習モデルの精度低下を抑えるようにしている。
【００４１】
図４は、レイヤを１つずつ量子化する学習処理の一例を示す図である。図４に示すように、１回目の学習処理では、１番目のレイヤの重み係数ｗ１だけが量子化されて学習処理が実行される。このため、２番目以降のレイヤの重み係数ｗ２〜ｗＬは、量子化されずに浮動小数点数のままとなる。このため、１回目の学習処理により、１番目のレイヤの重み係数はＱ（ｗ１１）となり、２番目以降のレイヤの重み係数はｗ２１〜ｗＬ１となる。
【００４２】
１回目の学習処理が完了すると、２回目の学習処理が実行される。２回目の学習処理においても、１番目のレイヤの重み係数ｗ１だけが量子化される。このため、２回目の学習処理により、１番目のレイヤの重み係数はＱ（ｗ１２）となり、２番目以降のレイヤの重み係数はｗ２２〜ｗＬ２となる。以降、１番目のレイヤの重み係数ｗ１だけを量子化した学習処理がＫ回（Ｋ：自然数）繰り返される。Ｋ回目の学習処理により、１番目のレイヤの重み係数はＱ（ｗ１Ｋ）となり、２番目以降のレイヤの重み係数はｗ２Ｋ〜ｗＬＫとなる。
【００４３】
Ｋ回目の学習処理が完了すると、Ｋ＋１回目の学習処理が実行され、２番目のレイヤの重み係数ｗ２が量子化される。１番目のレイヤの重み係数ｗ１は、既に量子化されているので、Ｋ＋１回目以降の学習処理においても引き続き量子化される。一方、３番目以降のレイヤの重み係数ｗ３〜ｗＬは、量子化されずに浮動小数点数のままとなる。このため、Ｋ＋１回目の学習処理により、１番目と２番目のレイヤの重み係数は、それぞれＱ（ｗ１Ｋ＋１），Ｑ（ｗ２Ｋ＋１）となり、３番目以降のレイヤの重み係数はｗ３Ｋ＋１〜ｗＬＫ＋１となる。
【００４４】
Ｋ＋１回目の学習処理が完了すると、Ｋ＋２回目の学習処理が実行される。Ｋ＋２回目の学習処理においても、１番目と２番目のレイヤの重み係数ｗ１，ｗ２だけが量子化される。このため、Ｋ＋２回目の学習処理により、１番目と２番目のレイヤの重み係数は、それぞれＱ（ｗ１Ｋ＋２），Ｑ（ｗ２Ｋ＋２）となり、３番目以降のレイヤの重み係数はｗ３Ｋ＋２〜ｗＬＫ＋２となる。以降、１番目と２番目のレイヤの重み係数ｗ１，ｗ２だけを量子化した学習処理がＫ回繰り返される。２Ｋ回目の学習処理により、１番目と２番目のレイヤの重み係数は、それぞれＱ（ｗ１２Ｋ），Ｑ（ｗ２２Ｋ）となり、３番目以降のレイヤの重み係数はｗ３２Ｋ〜ｗＬ２Ｋとなる。
【００４５】
以降同様にして、３番目以降のレイヤが１つずつ順番に量子化されて学習処理が実行される。図４の例では、レイヤ数がＬであり、個々のエポック数がＫ回なので、学習処理の合計回数はＬＫ回となり、最終的には全てのレイヤの重み係数ｗｉが量子化される。ＬＫ回目の学習処理により量子化された各レイヤの重み係数Ｑ（ｗｉＬＫ）は、学習モデルに最終的に設定される重み係数となる。
【００４６】
なお、図４では、１番目のレイヤからＬ番目のレイヤに向けて、レイヤの並び順の順方向（昇順）に量子化が行われる場合を説明したが、各レイヤの量子化は、任意の順序で行われるようにすればよい。例えば、Ｌ番目のレイヤから１番目のレイヤに向けて、レイヤの並び順の逆方向（降順）に量子化が行われてもよい。
【００４７】
図５は、最後のレイヤから順番に量子化する学習処理の一例を示す図である。図５に示すように、１回目の学習処理では、Ｌ番目のレイヤの重み係数ｗＬだけが量子化されて学習処理が実行される。このため、１番目〜Ｌ−１番目のレイヤの重み係数ｗ１〜ｗＬ−１は、量子化されずに浮動小数点数のままとなる。１回目の学習処理により、Ｌ番目のレイヤの重み係数はＱ（ｗＬ１）となり、１番目〜Ｌ−１番目のレイヤの重み係数はｗ１１〜ｗＬ−１１となる。
【００４８】
１回目の学習処理が完了すると、２回目の学習処理が実行される。２回目の学習処理においても、Ｌ番目のレイヤの重み係数ｗＬだけが量子化される。このため、２回目の学習処理により、Ｌ番目のレイヤの重み係数はＱ（ｗＬ２）となり、１番目〜Ｌ−１番目のレイヤの重み係数はｗ１２〜ｗＬ−１２となる。以降、Ｌ番目のレイヤの重み係数ｗＬだけを量子化した学習処理がＫ回（Ｋ：自然数）繰り返される。Ｋ回目の学習処理により、Ｌ番目のレイヤの重み係数はＱ（ｗＬＫ）となり、１番目〜Ｌ−１番目のレイヤの重み係数はｗ１Ｋ〜ｗＬ−１Ｋとなる。
【００４９】
Ｋ回目の学習処理が完了すると、Ｋ＋１回目の学習処理が実行され、Ｌ−１番目のレイヤの重み係数ｗＬ−１が量子化される。Ｌ番目のレイヤの重み係数ｗＬは、既に量子化されているので、Ｋ＋１回目以降の学習処理においても引き続き量子化される。一方、１番目〜Ｌ−２番目のレイヤの重み係数ｗ１〜ｗＬ−２は、量子化されずに浮動小数点数のままとなる。このため、Ｋ＋１回目の学習処理により、Ｌ−１番目とＬ番目のレイヤの重み係数は、それぞれＱ（ｗＬ−１Ｋ＋１），Ｑ（ｗＬＫ＋１）となり、１番目〜Ｌ−２番目のレイヤの重み係数はｗ１Ｋ＋１〜ｗＬ−２Ｋ＋１となる。
【００５０】
Ｋ＋１回目の学習処理が完了すると、Ｋ＋２回目の学習処理が実行される。Ｋ＋２回目の学習処理においても、Ｌ−１番目とＬ番目のレイヤの重み係数ｗＬ−１，ｗＬだけが量子化される。このため、Ｋ＋２回目の学習処理により、Ｌ−１番目とＬ番目のレイヤの重み係数は、それぞれＱ（ｗＬ−１Ｋ＋２），Ｑ（ｗＬＫ＋２）となり、１番目〜Ｌ−２番目のレイヤの重み係数はｗ１Ｋ＋２〜ｗＬ−２Ｋ＋２となる。以降、Ｌ−１番目とＬ番目のレイヤの重み係数ｗＬ−１，ｗＬだけを量子化した学習処理がＫ回繰り返される。２Ｋ回目の学習処理により、Ｌ−１番目とＬ番目のレイヤの重み係数は、それぞれＱ（ｗＬ−１２Ｋ），Ｑ（ｗＬ２Ｋ）となり、１番目〜Ｌ−２番目のレイヤの重み係数はｗ１２Ｋ〜ｗＬ−２２Ｋとなる。
【００５１】
以降同様にして、レイヤの並び順の逆方向に１つずつ順番に量子化されて学習処理が実行される。このように、レイヤの並び順の順方向ではなく、逆方向に向けて量子化が行われてもよい。更に、レイヤの並び順の順方向又は逆方向以外の順序で量子化が行われてもよい。例えば、「１番目のレイヤ→５番目のレイヤ→３番目のレイヤ→２番目のレイヤ・・・」といったような順序で量子化が行われてもよい。
【００５２】
図６は、学習モデルの精度を示す図である。図６の例では、教師データに対するエラー率（不正解率）を精度として利用する場合を説明する。（１）重み係数ｗｉを量子化しない学習モデル（図２の学習モデル）、（２）全てのレイヤを一度に量子化した学習モデル（図３の学習モデル）、（３）レイヤの順方向に１つずつ量子化した学習モデル（図４の学習モデル）、及び（４）レイヤの逆方向に１つずつ量子化した学習モデル（図５の学習モデル）の４つの学習モデルを示している。
【００５３】
図６に示すように、（１）の学習モデルは、量子化しておらず重み係数ｗｉが詳細に示されるので、最も精度が高い。しかし、先述したように、（１）の学習モデルは、重み係数ｗｉを浮動小数点数等で表現する必要があるので、最もデータサイズが大きい。一方、（２）の学習モデルは、重み係数ｗｉを量子化しているためデータサイズは小さくなるが、全てのレイヤを一度に量子化しているので精度が最も低くなる。
【００５４】
（３）の学習モデルと（４）の学習モデルは、重み係数ｗｉを量子化しているためデータサイズは小さくなり、（２）の学習モデルと同じ又は略同じデータサイズとなる。しかし、全てのレイヤを一度に量子化するのではなく、各レイヤを徐々に量子化することにより、学習モデルの精度の低下を抑えることができる。量子化によるデータサイズの低減と学習モデルの精度はトレードオフの関係にあり、本実施形態では、各レイヤを徐々に量子化することにより、学習モデルの精度の低下を最低限に抑えるようにしている。
【００５５】
なお、図６の例では、（４）の学習モデルの方が、（３）の学習モデルよりも精度が高くなるが、教師データの内容やレイヤ数等の条件によっては、（３）の学習モデルの方が、（４）の学習モデルよりも精度が高くなることもある。他にも例えば、順方向又は逆方向に量子化する学習モデルよりも、他の順序で量子化する学習モデルの方が、精度が高くなることもある。ただし、どの順序であったとしても、１つずつ量子化する学習モデルの方が、全てのレイヤを一度に量子化する（２）の学習モデルよりも精度が高くなる。
【００５６】
以上のように、本実施形態の学習システムＳは、全てのレイヤを一度に量子化するのではなく、レイヤを１つずつ量子化して学習処理を実行することにより、学習モデルの精度の低下を最低限に抑えつつ、学習モデルのデータサイズを小さくするようにしている。以降、学習システムＳの詳細を説明する。なお、以降の説明では、特に図面を参照する必要のないときは、パラメータや重み係数の符号を省略する。
【００５７】
［３．学習システムにおいて実現される機能］
図７は、学習システムＳで実現される機能の一例を示す機能ブロック図である。図７に示すように、学習システムＳでは、データ記憶部１００、取得部１０１、及び学習部１０２が実現される。本実施形態では、これら各機能が学習装置１０によって実現される場合を説明する。
【００５８】
[データ記憶部]
データ記憶部１００は、記憶部１２を主として実現される。データ記憶部１００は、本実施形態で説明する処理を実行するために必要なデータを記憶する。ここでは、データ記憶部１００が記憶するデータの一例として、教師データセットＤＳと、学習モデルＭと、について説明する。
【００５９】
図８は、教師データセットＤＳのデータ格納例を示す図である。図８に示すように、教師データセットＤＳには、入力データとラベルのペアである教師データが複数個格納されている。図８では、教師データセットＤＳをテーブル形式で示しており、個々のレコードが教師データに相当する。なお、図８では、ラベルを「犬」や「猫」などの文字で示しているが、これらを識別するための記号又は数値によって示されるようにしてもよい。入力データは、学習モデルＭに対する設問に相当し、ラベルは回答に相当する。
【００６０】
また、データ記憶部１００は、学習モデルＭのプログラム（アルゴリズム）やパラメータなどを記憶する。ここでは、教師データセットＤＳによって学習済み（パラメータの調整済み）の学習モデルＭがデータ記憶部１００に記憶される場合を説明するが、学習前（パラメータの調整前）の学習モデルＭがデータ記憶部１００に記憶されていてもよい。以降の説明では、学習モデルＭの符号を省略する。
【００６１】
なお、データ記憶部１００に記憶されるデータは、上記の例に限られない。例えば、データ記憶部１００は、学習処理のアルゴリズム（プログラム）を記憶してもよい。また例えば、データ記憶部１００は、量子化するレイヤの順序やエポック数などの設定情報を記憶してもよい。
【００６２】
［取得部］
取得部１０１は、制御部１１を主として実現される。取得部１０１は、学習モデルに学習させる教師データを取得する。本実施形態では、教師データセットＤＳがデータ記憶部１００に記憶されているので、取得部１０１は、データ記憶部１００に記憶された教師データセットＤＳの中から、少なくとも１つの教師データを取得する。取得部１０１は、任意の数の教師データを取得すればよく、教師データセットＤＳの全部又は一部を取得すればよい。例えば、取得部１０１は、十個〜数十個程度の教師データを取得してもよいし、百個〜数千個又はそれ以上の教師データを取得してもよい。なお、教師データセットＤＳが学習装置１０以外の他のコンピュータ又は情報記憶媒体に記録されている場合には、取得部１０１は、当該他のコンピュータ又は情報記憶媒体から教師データを取得すればよい。
【００６３】
［学習部］
学習部１０２は、制御部１１を主として実現される。学習部１０２は、取得部１０１により取得された教師データに基づいて、学習モデルの学習処理を繰り返し実行する。先述したように、学習処理自体は、公知の手法を適用可能であり、本実施形態では、ＤＮＮの学習モデルを例に挙げているので、学習部１０２は、ＤＮＮで利用される学習アルゴリズムに基づいて、学習処理を繰り返し実行すればよい。学習部１０２は、教師データが示す入力と出力の関係が得られるように、学習モデルのパラメータを調整する。
【００６４】
学習処理の繰り返し回数（エポック数）は、予め定められた回数であればよく、例えば、数回〜百回程度であってもよいし、それ以上であってもよい。繰り返し回数は、データ記憶部１００に記録されているものとする。繰り返し回数は、固定値であってもよいし、ユーザの操作により変更可能としてもよい。例えば、学習部１０２は、同じ教師データに基づいて、繰り返し回数だけ学習処理を繰り返す。なお、各学習処理において異なる教師データが用いられてもよい。例えば、２回目の学習処理において、１回目の学習処理では用いられなかった教師データが用いられてもよい。
【００６５】
学習部１０２は、学習モデルの一部のレイヤのパラメータを量子化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを量子化して学習処理を実行する。即ち、学習部１０２は、全てのレイヤのパラメータを一度に量子化して学習処理を実行するのではなく、一部のレイヤのパラメータだけを量子化し、他のレイヤのパラメータについては量子化しない状態で学習処理を実行する。本実施形態では、量子化されていないパラメータについても調整される場合を説明するが、量子化されていないパラメータについては、調整の対象から除外してもよい。その後、学習部１０２は、量子化しなかった他のレイヤのパラメータを量子化して学習処理を実行する。本実施形態では、量子化済みのパラメータについても調整される場合を説明するが、量子化済みのパラメータについては、その後の調整の対象から除外してもよい。
【００６６】
一部のレイヤとは、量子化の対象として選択される１個以上Ｌ個未満のレイヤである。本実施形態では、レイヤが１つずつ量子化されるため、一部のレイヤが１個である場合を説明するが、一部のレイヤは複数個であってもよい。Ｌ個の全てのレイヤが一度に量子化されないようにすればよく、例えば、レイヤが２つずつ量子化されてもよいし、レイヤが３つずつ量子化されてもよい。他にも例えば、１つのレイヤが量子化された後に、他の複数のレイヤが量子化されるといったように、量子化の対象となるレイヤの数が変わってもよい。他のレイヤは、学習モデルが有するレイヤのうち、一部のレイヤ以外のレイヤである。他のレイヤは、一部のレイヤ以外の全てを意味してもよいし、一部のレイヤ以外のレイヤのうち、一部を意味してもよい。
【００６７】
本実施形態では、レイヤが徐々に量子化され、最終的に全てのレイヤが量子化されるので、学習部１０２は、学習モデルの全てのレイヤのパラメータが量子化されるまで、学習処理を繰り返し実行する。例えば、学習部１０２は、まだ量子化していないレイヤの中から、量子化するレイヤを選択し、当該選択したレイヤのパラメータを量子化して学習処理を実行する。学習部１０２は、最終的に全てのレイヤが量子化されるまで、量子化するレイヤの選択と学習処理の実行を繰り返す。学習部１０２は、全てのレイヤのパラメータが量子化された場合に学習処理を終了し、学習モデルのパラメータを確定させる。確定されたパラメータは、浮動小数点数等ではなく、量子化された値となる。
【００６８】
本実施形態では、学習部１０２は、学習モデルのレイヤを１つずつ量子化する。学習部１０２は、まだ量子化していないレイヤの中から、何れか１つのレイヤを選択し、当該選択したレイヤのパラメータを量子化して学習処理を実行する。学習部１０２は、量子化するレイヤを１つずつ選択し、Ｌ個のレイヤを徐々に量子化する。
【００６９】
量子化の順序は、学習アルゴリズムの中に定義されていてもよい。本実施形態では、学習モデルの中から量子化するレイヤを所定の順序で次々と選択する学習アルゴリズムの設定として、量子化の順序がデータ記憶部１００に記憶されている。学習部１０２は、所定の順序に基づいて、量子化するレイヤの選択と学習処理の実行を繰り返す。
【００７０】
例えば、図３のように、１番目のレイヤからＬ番目のレイヤまで順方向に（レイヤの並び順の昇順に）量子化する場合、学習部１０２は、量子化するレイヤとして、１番目のレイヤを選択し、Ｋ回の学習処理を実行する。即ち、学習部１０２は、１番目のレイヤのパラメータｐ１だけを量子化し、２番目以降のレイヤのパラメータｐ２〜ｐＬは量子化せずに、Ｋ回の学習処理を実行する。次に、学習部１０２は、量子化するレイヤとして、２番目のレイヤを選択し、Ｋ回の学習処理を実行する。即ち、学習部１０２は、既に量子化された１番目のレイヤと、今回選択した２番目のレイヤと、を量子化し、３番目以降のレイヤのパラメータｐ３〜ｐＬは量子化せずに、Ｋ回の学習処理を実行する。以降、学習部１０２は、Ｌ番目のレイヤまで、レイヤの並び順の順方向に１つずつ選択し、学習処理を実行する。
【００７１】
また例えば、図４のように、Ｌ番目のレイヤから１番目のレイヤまで逆方向に（レイヤの並び順の降順に）量子化する場合、学習部１０２は、量子化するレイヤとして、Ｌ番目のレイヤを選択し、Ｋ回の学習処理を実行する。即ち、学習部１０２は、Ｌ番目のレイヤのパラメータｐＬだけを量子化し、１番目〜Ｌ−１番目のレイヤのパラメータｐ１〜ｐＬ−１は量子化せずに、Ｋ回の学習処理を実行する。次に、学習部１０２は、量子化するレイヤとして、Ｌ−１番目のレイヤを選択し、Ｋ回の学習処理を実行する。即ち、学習部１０２は、既に量子化されたＬ番目のレイヤと、今回選択したＬ−１番目のレイヤと、を量子化し、１番目〜Ｌ−２番目のレイヤのパラメータｐ１〜ｐＬ−２は量子化せずに、Ｋ回の学習処理を実行する。以降、学習部１０２は、１番目のレイヤまで、レイヤの並び順の逆方向に１つずつ選択し、学習処理を実行する。
【００７２】
なお、量子化するレイヤの選択順は、任意の順序であってよく、レイヤの並び順の順方向又は逆方向に限られない。例えば、「１番目のレイヤ→５番目のレイヤ→３番目のレイヤ→２番目のレイヤ・・・」といったように、照準又は降順ではなくてもよい。また例えば、最初に量子化されるレイヤは、１番目のレイヤ又はＬ番目のレイヤに限られず、３番目のレイヤなどの中間的なレイヤが最初に選択されてもよい。同様に、最後に量子化されるレイヤについても、１番目のレイヤ又はＬ番目のレイヤに限られず、３番目のレイヤなどの中間的なレイヤが最後に量子化されてもよい。
【００７３】
また、量子化するレイヤの選択順は、予め定められていなくてもよく、学習部１０２は、学習モデルの中から、量子化するレイヤをランダムに次々と選択してもよい。例えば、学習部１０２は、ｒａｎｄ関数等を利用して乱数を発生し、乱数に基づいて、量子化するレイヤの選択順を決定してもよい。この場合、学習部１０２は、乱数によって決定された選択順に基づいて、量子化するレイヤを次々と選択し、学習処理を実行する。なお、学習部１０２は、Ｌ個のレイヤの選択順を一度にまとめて決定してもよいし、あるレイヤを選択するたびに、次に選択するレイヤをランダムに決定してもよい。
【００７４】
本実施形態では、学習部１０２は、一部のレイヤのパラメータを量子化して学習処理を所定回数繰り返した後に、他のレイヤのパラメータを量子化して学習処理を所定回数繰り返す。本実施形態では、これらの回数がＫ回であり、互いに同じ回数とするが、繰り返し回数は互いに異なっていてもよい。例えば、図４の例であれば、１番目のレイヤを量子化して１０回の学習処理を繰り返した後に、２番目のレイヤを量子化して８回の学習処理を繰り返すといったように、各レイヤの繰り返し回数が異なってもよい。
【００７５】
本実施形態では、各レイヤのパラメータには、重み係数が含まれており、学習部１０２は、一部のレイヤの重み係数を量子化して学習処理を実行した後に、他のレイヤの重み係数を量子化して学習処理を実行する。即ち、各レイヤのパラメータのうち、重み係数が量子化の対象となる。本実施形態では、バイアスについては量子化されないものとするが、量子化の対象となるパラメータは、バイアスであってもよい。また例えば、重み係数とバイアスの両方が量子化の対象となってもよい。また例えば、各レイヤに重み係数とバイアス以外のパラメータが存在する場合には、当該他のパラメータが量子化の対象となってもよい。
【００７６】
本実施形態では、量子化の一例として二値化を説明するので、学習部１０２は、学習モデルの一部のレイヤのパラメータを二値化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを二値化して学習処理を実行する。学習部１０２は、各レイヤのパラメータを所定の閾値と比較することによって、パラメータの二値化を行う。本実施形態では、二値化の一例として、−１又は１の二値にパラメータが分類される場合を説明するが、０又は１といった他の値で二値化が行われるようにしてもよい。即ち、二値化は、任意の第１の値と第２の値にパラメータが分類されるようにすればよい。
【００７７】
［４．本実施形態において実行される処理］
図９は、学習システムＳにおいて実行される処理の一例を示すフロー図である。図９に示す処理は、制御部１１が記憶部１２に記憶されたプログラムに従って動作することによって実行される。下記に説明する処理は、図７に示す機能ブロックにより実行される処理の一例である。
【００７８】
図９に示すように、まず、制御部１１は、教師データセットＤＳに含まれる教師データを取得する（Ｓ１）。Ｓ１においては、制御部１１は、記憶部１２に記憶された教師データセットＤＳを参照し、任意の数の教師データを取得する。
【００７９】
制御部１１は、所定の順序に基づいて、まだ量子化していないレイヤの中から、量子化するレイヤを選択する（Ｓ２）。例えば、図４のように、レイヤの並び順の順方向に量子化が行われる場合、Ｓ２においては、制御部１１は、１番目のレイヤを最初に選択する。また例えば、図５のように、レイヤの並び順の逆方向に量子化が行われる場合、Ｓ２においては、制御部１１は、Ｌ番目のレイヤを最初に選択する。
【００８０】
制御部１１は、Ｓ１で取得した教師データに基づいて、選択したレイヤの重み係数を量子化して学習処理を実行する（Ｓ３）。Ｓ３においては、制御部１１は、教師データが示す入力と出力の関係が得られるように、各レイヤの重み係数を調整する。制御部１１は、量子化の対象として選択済みのレイヤについては、重み係数を量子化する。
【００８１】
制御部１１は、選択したレイヤの重み係数を量子化した学習処理をＫ回繰り返したか否かを判定する（Ｓ４）。Ｓ４においては、制御部１１は、Ｓ２でレイヤを選択した後に、Ｓ３の処理をＫ回実行したか否かを判定する。学習処理をＫ回繰り返したと判定されない場合（Ｓ４；Ｎ）、Ｓ３の処理に戻り、学習処理が再び実行される。以降、学習処理がＫ回に達するまで、Ｓ３の処理が繰り返される。
【００８２】
一方、学習処理をＫ回繰り返したと判定された場合（Ｓ４；Ｙ）、制御部１１は、まだ量子化していないレイヤがあるか否かを判定する（Ｓ５）。本実施形態では、Ｌ個のレイヤの各々についてＫ回のエポック数が設定されているので、Ｓ５においては、制御部１１は、合計でＬＫ回の学習処理を実行したか否かを判定することになる。
【００８３】
まだ量子化していないレイヤがあると判定された場合（Ｓ５；Ｙ）、Ｓ２の処理に戻り、次のレイヤが選択され、Ｓ３及びＳ４の処理が実行される。一方、まだ量子化していないレイヤが存在あると判定されない場合（Ｓ５；Ｎ）、制御部１１は、各レイヤの量子化された重み係数を、学習モデルの最終的な重み係数として決定し（Ｓ６）、本処理は終了する。Ｓ６においては、制御部１１は、最新の量子化された重み係数が各レイヤに設定された学習モデルを記憶部１２に記録し、学習処理を完了させる。
【００８４】
以上説明した学習システムＳによれば、学習モデルの一部のレイヤのパラメータを量子化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを量子化して学習処理を実行することにより、学習モデルの精度の低下を抑えつつ、学習モデルのデータサイズを小さくすることができる。例えば、学習モデルの全てのレイヤを一度に量子化した場合には、パラメータが有する情報量が一気に落ちるので、量子化されたパラメータの精度も一気に下がってしまう。学習モデルのレイヤを徐々に量子化して情報量を徐々に落とすことによって、このように情報量が一致に落ちることを防止できるので、量子化されたパラメータの精度が一致に下がることを防止し、学習モデルの精度の低下を最低限に抑えることができる。別の言い方をすれば、学習モデルの一部のレイヤのパラメータを量子化して学習処理を実行している間は、他のレイヤのパラメータは、量子化されておらず浮動小数点数等により正確に表現されているので、他のレイヤのパラメータも量子化されている場合に比べて、量子化されたパラメータを正確な値に決定し、学習モデルの精度の低下を最低限に抑えることができる。
【００８５】
また、学習システムＳは、学習モデルの全てのレイヤのパラメータが量子化されるまで、学習処理を繰り返し実行することにより、全てのレイヤのパラメータを量子化して情報量を圧縮し、学習モデルのデータサイズをより小さくすることができる。
【００８６】
また、学習システムＳは、学習モデルのレイヤを１つずつ量子化し、各レイヤの量子化を徐々に進めることにより、学習モデルの精度の低下を効果的に抑えることができる。即ち、各レイヤの量子化を一気に進めると、先述した理由により学習モデルの精度が一気に低下する可能性があるが、１つずつ量子化を進めることにより、学習モデルの精度が一気に低下することを防止し、学習モデルの精度の低下を最低限に抑えることができる。
【００８７】
また、学習システムＳは、学習モデルの中から、量子化するレイヤを所定の順序で次々と選択することにより、学習モデルの作成者の意図に沿った順序で量子化を実行することができる。例えば、学習モデルの作成者が、精度の低下を抑える順序を発見している場合には、作成者が指定した順序に基づいて、量子化するレイヤを選択することにより、精度の低下を最低限に抑えた学習モデルを作成することができる。
【００８８】
また、学習システムＳは、学習モデルの中から、量子化するレイヤをランダムに次々と選択することにより、学習モデルの作成者が特に順序を指定しなくても学習処理を実行することができる。
【００８９】
また、学習システムＳは、一部のレイヤのパラメータを量子化して学習処理を所定回数繰り返した後に、他のレイヤのパラメータを量子化して学習処理を所定回数繰り返すことにより、量子化されたパラメータをより正確な値に設定し、学習モデルの精度の低下を効果的に抑えることができる。
【００９０】
また、学習システムＳは、一部のレイヤの重み係数を量子化して学習処理を実行した後に、他のレイヤの重み係数を量子化して学習処理を実行することにより、学習モデルの精度の低下を抑えつつ、学習モデルのデータサイズを小さくすることができる。例えば、浮動小数点数等によって情報量が多くなりがちな重み係数を量子化することにより、学習モデルのデータサイズをより小さくすることができる。
【００９１】
また、学習システムＳは、学習モデルの一部のレイヤのパラメータを二値化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを二値化して学習処理を実行し、データサイズの圧縮に効果的な二値化を利用することによって、学習モデルのデータサイズをより小さくすることができる。
【００９２】
［５．変形例］
なお、本発明は、以上に説明した実施形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【００９３】
図１０は、変形例の機能ブロック図である。図１０に示すように、以降説明する変形例では、実施形態で説明した機能に加えて、モデル選択部１０３と他モデル学習部１０４が実現される。
【００９４】
（１）例えば、実施形態で説明したように、量子化するレイヤを選択する順序によって、学習モデルの精度が異なることがある。このため、どの順序で量子化をすると最も精度が高くなるか分からない場合には、複数通りの順序に基づいて複数の学習モデルを作成し、相対的に精度の高い学習モデルが最終的に選択されるようにしてもよい。
【００９５】
本変形例の学習部１０２は、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択し、複数の学習モデルを作成する。ここでの複数通りは、Ｌ個のレイヤの順列組合せの全通りであってもよいし、一部の組み合わせだけであってもよい。例えば、レイヤ数が５個程度であれば、全通りの順序で学習モデルが作成されてもよいが、レイヤ数が１０個以上であれば、全通りの順列組合せが多くなるので、一部の順序についてのみ学習モデルが作成されてもよい。複数通りの順序は、予め指定されていてもよいし、ランダムに作成されてもよい。
【００９６】
学習部１０２は、順序ごとに、当該順序でレイヤを次々と量子化して学習モデルを作成する。個々の学習モデルの作成方法自体は、実施形態で説明した通りである。本変形例では、順序の数と、作成される学習モデルの数と、は一致する。即ち、順序と学習モデルは１対１で対応することになる。例えば、ｍ通り（ｍ：２以上の自然数）の順序があったとすると、学習部１０２は、ｍ個の学習モデルを作成することになる。
【００９７】
本変形例の学習システムＳは、モデル選択部１０３を含む。モデル選択部１０３は、制御部１１を主として実現される。モデル選択部１０３は、各学習モデルの精度に基づいて、複数の学習モデルのうちの少なくとも１つを選択する。
【００９８】
学習モデルの精度自体は、公知の手法によって評価されるようにすればよく、本変形例では、教師データに対するエラー率（不正解率）を利用する場合を説明する。エラー率は、正解率とは逆の概念であり、学習済みの学習モデルに対し、学習処理で利用した教師データの全てを入力した場合に、学習モデルからの出力と、教師データに示された出力（正解）と、が一致しなかった割合である。エラー率が低いほど、学習モデルの精度が高くなる。
【００９９】
モデル選択部は、複数の学習モデルの中で相対的に精度が高い学習モデルを選択する。モデル選択部は、１つだけ学習モデルを選択してもよいし、複数の学習モデルを選択してもよい。例えば、モデル選択部は、複数の学習モデルのうち、精度が最も高い学習モデルを選択する。なお、モデル選択部は、精度が最も高い学習モデルではなく、２番目又は３番目に精度が高い学習モデルを選択してもよい。他にも例えば、モデル選択部は、複数の学習モデルのうち、精度が閾値以上の学習モデルの何れかを選択してもよい。
【０１００】
変形例（１）によれば、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択して複数の学習モデルを作成し、各学習モデルの精度に基づいて、複数の学習モデルのうちの少なくとも１つを選択することにより、学習モデルの精度の低下を効果的に抑えることができる。
【０１０１】
（２）また例えば、変形例（１）において、精度が相対的に高い学習モデルの順序を、他の学習モデルの学習に流用してもよい。この場合、他の学習モデルの学習時に、複数通りの順序を試さなくても、精度の高い学習モデルを作成することができる。
【０１０２】
本変形例の学習システムＳは、他モデル学習部１０４を含む。他モデル学習部１０４は、制御部１１を主として実現される。他モデル学習部１０４は、モデル選択部１０３により選択された学習モデルに対応する順序に基づいて、他の学習モデルの学習処理を実行する。学習モデルに対応する順序とは、学習モデルを作成するときに利用したレイヤの選択順序である。他の学習モデルは、学習済みの学習モデルとは異なるモデルである。他の学習モデルは、学習済みの学習モデルと同じ教師データが用いられてもよいし、異なる教師データが用いられてもよい。
【０１０３】
他の学習モデルの学習は、学習済みの学習モデルと同様の流れで実行されるようにすればよい。即ち、他モデル学習部１０４は、教師データに基づいて、他の学習モデルの学習処理を繰り返し実行する。他モデル学習部１０４は、モデル選択部１０３により選択された学習モデルに対応する順序で、他の学習モデルのレイヤを次々と量子化して学習処理を実行する。個々の学習処理自体は、実施形態の学習部１０２で説明した通りである。
【０１０４】
変形例（２）によれば、相対的に精度が高い学習モデルに対応する順序に基づいて、他の学習モデルの学習処理を実行することにより、他の学習モデルの学習処理を効率化することができる。例えば、他の学習モデルを作成するときに複数通りの順序を試さなくても、精度の高い学習モデルを作成することができる。その結果、学習装置１０の処理負荷を軽減し、精度の高い学習モデルを迅速に作成することができる。
【０１０５】
（３）また例えば、上記変形例を組み合わせてもよい。
【０１０６】
また例えば、学習モデルの全てのレイヤのパラメータが量子化される場合を説明したが、学習モデルの中には、量子化の対象とはならないレイヤが存在してもよい。即ち、浮動小数点数等でパラメータが表現されるレイヤと、量子化されたレイヤと、が混在していてもよい。また例えば、学習モデルのレイヤが１つずつ量子化される場合を説明したが、レイヤは複数個ずつ量子化されてもよい。例えば、学習モデルのレイヤが２つずつ又は３つずつ量子化されてもよい。また例えば、重み係数ではなく、バイアスなどの他のパラメータが量子化されてもよい。また例えば、量子化は二値化に限られず、パラメータの情報量（ビット数）を減らすことができる量子化であればよい。
【０１０７】
また例えば、学習システムＳには、複数のコンピュータが含まれており、各コンピュータによって機能が分担されてもよい。例えば、選択部１０１と学習部１０２が第１のコンピュータによって実現され、モデル選択部１０３と他モデル学習部１０４が第２のコンピュータによって実現されてもよい。また例えば、データ記憶部１００は、学習システムＳの外部にあるデータベースサーバ等によって実現されてもよい。
【要約】
学習システム（Ｓ）の取得手段（１０１）は、学習モデルに学習させる教師データを取得する。学習手段（１０２）は、教師データに基づいて、学習モデルの学習処理を繰り返し実行する。学習手段（１０２）は、学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、学習モデルの他のレイヤのパラメータを量子化して学習処理を実行する。【図１】
0006795721.tif 000002
【図２】
0006795721.tif 000003
【図３】
0006795721.tif 000004
【図４】
0006795721.tif 000005
【図５】
0006795721.tif 000006
【図６】
0006795721.tif 000007
【図７】
0006795721.tif 000008
【図８】
0006795721.tif 000009
【図９】
0006795721.tif 000010
【図１０】
0006795721.tif 000011