(58)【調査した分野】(Int.Cl.,DB名)
前記学習手段は、前記一部のレイヤのパラメータを量子化して前記学習処理を所定回数繰り返した後に、前記他のレイヤのパラメータを量子化して前記学習処理を所定回数繰り返す、
ことを特徴とする請求項1〜5の何れかに記載の学習システム。
前記学習手段は、前記学習モデルの一部のレイヤのパラメータを二値化して前記学習処理を実行した後に、前記学習モデルの他のレイヤのパラメータを二値化して前記学習処理を実行する、
ことを特徴とする請求項1〜8の何れかに記載の学習システム。
【発明を実施するための形態】
【0020】
[1.学習システムの全体構成]
以下、本発明に係る学習システムの実施形態の例を説明する。
図1は、学習システムの全体構成を示す図である。
図1に示すように、学習システムSは、学習装置10を含む。なお、学習システムSには、互いに通信可能な複数台のコンピュータが含まれていてもよい。
【0021】
学習装置10は、本実施形態で説明する処理を実行するコンピュータである。例えば、学習装置10は、パーソナルコンピュータ、サーバコンピュータ、携帯情報端末(タブレット型コンピュータを含む)、又は携帯電話機(スマートフォンを含む)等である。学習装置10は、制御部11、記憶部12、通信部13、操作部14、及び表示部15を含む。
【0022】
制御部11は、少なくとも1つのプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMなどの揮発性メモリであり、補助記憶部は、ROM、EEPROM、フラッシュメモリ、又はハードディスクなどの不揮発性メモリである。通信部13は、有線通信又は無線通信用の通信インタフェースであり、インターネットなどのネットワークを介してデータ通信を行う。
【0023】
操作部14は、入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイス、キーボード、又はボタン等である。操作部14は、ユーザによる操作内容を制御部11に伝達する。表示部15は、例えば、液晶表示部又は有機EL表示部等である。表示部15は、制御部11の指示に従って画像を表示する。
【0024】
なお、記憶部12に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、上記説明した各コンピュータのハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器とデータの入出力をするための入出力部(例えば、USBポート)が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して、各コンピュータに供給されるようにしてもよい。
【0025】
[2.学習システムの概要]
本実施形態の学習システムSは、教師データに基づいて、学習モデルの学習処理を実行する。
【0026】
教師データは、学習モデルに学習させるデータである。教師データは、学習データ又は訓練データと呼ばれることもある。例えば、教師データは、学習モデルに対する入力(設問)と、学習モデルの出力(回答)と、のペアである。例えば、分類学習器の場合、教師データは、学習モデルに入力される入力データと同じ形式のデータと、入力データの分類を示すラベルと、がペアになったデータである。
【0027】
例えば、入力データが画像又は動画であれば、教師データは、画像又は動画と、画像又は動画に示されたオブジェクト(被写体又はCGで描かれた物体)の分類を示すラベルと、がペアになったデータである。また例えば、入力データがテキスト又は文書であれば、教師データは、テキスト又は文書と、記述された内容の分類を示すラベルと、がペアになったデータである。また例えば、入力データが音声であれば、音声と、音声の内容又は発話者の分類を示すラベルと、がペアになったデータである。
【0028】
なお、機械学習では、複数の教師データを利用して学習処理が実行されるので、本実施形態では、複数の教師データの集まりを教師データセットと記載し、教師データセットに含まれる1つ1つのデータを教師データと記載する。本実施形態で教師データと記載した箇所は、上記説明したペアを意味し、教師データセットは、ペアの集まりを意味する。
【0029】
学習モデルは、教師あり学習のモデルである。学習モデルは、任意の処理を実行可能であり、例えば、画像認識、文字認識、音声認識、人間の行動パターンの認識、又は自然界の現象の認識を行う。機械学習自体は、公知の種々の手法を適用可能であり、例えば、DNN(Deep Neural Network)、CNN(Convolutional Neural Network)、ResNet(Residual Network)、又はRNN(Recurrent Neural Network)を利用可能である。
【0030】
学習モデルは、複数のレイヤを含み、各レイヤには、パラメータが設定されている。例えば、レイヤとしては、Affine、ReLU、Sigmoid、Tanh、又はSoftmaxといった名前で呼ばれるレイヤが含まれていてよい。学習モデルに含まれるレイヤの数は、任意であってよく、例えば、数個程度であってもよいし、10個以上であってもよい。また、各レイヤには、複数のパラメータが設定されていてもよい。
【0031】
学習処理は、教師データを学習モデルに学習させる処理である。別の言い方をすれば、学習処理は、教師データの入力と出力の関係が得られるように、学習モデルのパラメータを調整する処理である。学習処理自体は、公知の機械学習で利用される処理を適用可能であり、例えば、DNN、CNN、ResNet、又はRNNの学習処理を利用可能である。学習処理は、所定の学習アルゴリズム(学習プログラム)により実行される。
【0032】
本実施形態では、学習モデルとして、画像認識をするDNNを例に挙げて、学習システムSの処理を説明する。学習済みの学習モデルに未知の画像が入力されると、学習モデルは、画像の特徴量を計算し、特徴量に基づいて、画像内のオブジェクトの種類を示すラベルを出力する。このような学習モデルに学習させる教師データは、画像と、画像に示されたオブジェクトのラベルと、のペアとなる。
【0033】
図2は、一般的な学習モデルの学習方法を示す図である。
図2に示すように、学習モデルは、複数のレイヤを含み、各レイヤにはパラメータが設定されている。本実施形態では、学習モデルのレイヤ数をL(L:自然数)とする。L個のレイヤは、所定の順序で並べられている。本実施形態では、i番目(i:1〜Lの自然数)のレイヤのパラメータをp
iと記載する。
図2に示すように、各レイヤのパラメータp
iには、重み係数w
iとバイアスb
iが含まれている。
【0034】
一般的なDNNの学習方法によれば、同じ教師データに基づいて、エポック数と呼ばれる回数だけ学習処理が繰り返される。
図2の例では、エポック数をN(N:自然数)とし、N回の学習処理の各々において、各レイヤの重み係数w
iが調整される。学習処理が繰り返されることにより、教師データが示す入力と出力の関係が得られるように、各レイヤの重み係数w
iが徐々に調整される。
【0035】
例えば、1回目の学習処理により、各レイヤの初期値の重み係数w
iが調整される。
図2では、1回目の学習処理により調整された重み係数を、w
i1と記載する。1回目の学習処理が完了すると、2回目の学習処理が実行される。2回目の学習処理により、各レイヤの重み係数w
i1が調整される。
図2では、1回目の学習処理により調整された重み係数を、w
i2と記載する。以降同様にして、学習処理がN回繰り返される。
図2では、N回目の学習処理により調整された重み係数を、w
iNと記載する。w
iNは、学習モデルに最終的に設定される重み係数w
iとなる。
【0036】
従来技術で説明したように、学習モデルのレイヤ数が増えると、パラメータp
iの数も増えるので、学習モデルのデータサイズが大きくなる。そこで、学習システムSは、重み係数w
iを量子化することによって、データサイズを小さくするようにしている。本実施形態では、一般的には浮動小数点数で表現される重み係数w
iを二値化することによって、重み係数w
iの情報量を圧縮し、学習モデルのデータサイズを小さくする場合を例に挙げて説明する。
【0037】
図3は、重み係数w
iが量子化される学習処理の一例を示す図である。
図3に示すQ(x)は、変数xを量子化する関数であり、例えば、「x≦0」の場合は「−1」となり、「x>0」の場合は「1」となる。なお、量子化は、二値化に限られず、2段階以上の量子化が行われてもよい。例えば、Q(x)は、「−1」、「0」、「1」の3段階の量子化をする関数であってもよいし、「−2
n」〜「2
n」(n:自然数)の間で量子化をする関数であってもよい。量子化の段階数や閾値は、任意のものを採用可能である。
【0038】
図3に示す例では、1回目の学習処理により、各レイヤの初期値の重み係数w
iが調整されて量子化される。
図3では、1回目の学習処理により調整された重み係数を、Q(w
i1)と記載する。
図3の例では、1回目の学習処理において、全てのレイヤの重み係数w
iが量子化され、「−1」又は「1」で表現されることになる。
【0039】
1回目の学習処理が完了すると、2回目の学習処理が実行される。2回目の学習処理により、量子化された重み係数Q(w
i2)が取得される。以降同様にして、学習処理がN回繰り返される。
図2では、N回目の学習処理により量子化された重み係数を、Q(w
iN)と記載する。Q(w
iN)は、学習モデルに最終的に設定される重み係数w
iとなる。
【0040】
上記のようにして、各レイヤの重み係数w
iを量子化すると、浮動小数点数等に比べて情報量を圧縮できるので、学習モデルのデータサイズを小さくすることができる。しかしながら、発明者の独自の研究によると、全てのレイヤを一度に量子化すると、学習モデルの精度が大きく低下することが発見された。そこで、本実施形態の学習システムSは、レイヤを1つずつ量子化することによって、学習モデルの精度低下を抑えるようにしている。
【0041】
図4は、レイヤを1つずつ量子化する学習処理の一例を示す図である。
図4に示すように、1回目の学習処理では、1番目のレイヤの重み係数w
1だけが量子化されて学習処理が実行される。このため、2番目以降のレイヤの重み係数w
2〜w
Lは、量子化されずに浮動小数点数のままとなる。このため、1回目の学習処理により、1番目のレイヤの重み係数はQ(w
11)となり、2番目以降のレイヤの重み係数はw
21〜w
L1となる。
【0042】
1回目の学習処理が完了すると、2回目の学習処理が実行される。2回目の学習処理においても、1番目のレイヤの重み係数w
1だけが量子化される。このため、2回目の学習処理により、1番目のレイヤの重み係数はQ(w
12)となり、2番目以降のレイヤの重み係数はw
22〜w
L2となる。以降、1番目のレイヤの重み係数w
1だけを量子化した学習処理がK回(K:自然数)繰り返される。K回目の学習処理により、1番目のレイヤの重み係数はQ(w
1K)となり、2番目以降のレイヤの重み係数はw
2K〜w
LKとなる。
【0043】
K回目の学習処理が完了すると、K+1回目の学習処理が実行され、2番目のレイヤの重み係数w
2が量子化される。1番目のレイヤの重み係数w
1は、既に量子化されているので、K+1回目以降の学習処理においても引き続き量子化される。一方、3番目以降のレイヤの重み係数w
3〜w
Lは、量子化されずに浮動小数点数のままとなる。このため、K+1回目の学習処理により、1番目と2番目のレイヤの重み係数は、それぞれQ(w
1K+1),Q(w
2K+1)となり、3番目以降のレイヤの重み係数はw
3K+1〜w
LK+1となる。
【0044】
K+1回目の学習処理が完了すると、K+2回目の学習処理が実行される。K+2回目の学習処理においても、1番目と2番目のレイヤの重み係数w
1,w
2だけが量子化される。このため、K+2回目の学習処理により、1番目と2番目のレイヤの重み係数は、それぞれQ(w
1K+2),Q(w
2K+2)となり、3番目以降のレイヤの重み係数はw
3K+2〜w
LK+2となる。以降、1番目と2番目のレイヤの重み係数w
1,w
2だけを量子化した学習処理がK回繰り返される。2K回目の学習処理により、1番目と2番目のレイヤの重み係数は、それぞれQ(w
12K),Q(w
22K)となり、3番目以降のレイヤの重み係数はw
32K〜w
L2Kとなる。
【0045】
以降同様にして、3番目以降のレイヤが1つずつ順番に量子化されて学習処理が実行される。
図4の例では、レイヤ数がLであり、個々のエポック数がK回なので、学習処理の合計回数はLK回となり、最終的には全てのレイヤの重み係数w
iが量子化される。LK回目の学習処理により量子化された各レイヤの重み係数Q(w
iLK)は、学習モデルに最終的に設定される重み係数となる。
【0046】
なお、
図4では、1番目のレイヤからL番目のレイヤに向けて、レイヤの並び順の順方向(昇順)に量子化が行われる場合を説明したが、各レイヤの量子化は、任意の順序で行われるようにすればよい。例えば、L番目のレイヤから1番目のレイヤに向けて、レイヤの並び順の逆方向(降順)に量子化が行われてもよい。
【0047】
図5は、最後のレイヤから順番に量子化する学習処理の一例を示す図である。
図5に示すように、1回目の学習処理では、L番目のレイヤの重み係数w
Lだけが量子化されて学習処理が実行される。このため、1番目〜L−1番目のレイヤの重み係数w
1〜w
L−1は、量子化されずに浮動小数点数のままとなる。1回目の学習処理により、L番目のレイヤの重み係数はQ(w
L1)となり、1番目〜L−1番目のレイヤの重み係数はw
11〜w
L−11となる。
【0048】
1回目の学習処理が完了すると、2回目の学習処理が実行される。2回目の学習処理においても、L番目のレイヤの重み係数w
Lだけが量子化される。このため、2回目の学習処理により、L番目のレイヤの重み係数はQ(w
L2)となり、1番目〜L−1番目のレイヤの重み係数はw
12〜w
L−12となる。以降、L番目のレイヤの重み係数w
Lだけを量子化した学習処理がK回(K:自然数)繰り返される。K回目の学習処理により、L番目のレイヤの重み係数はQ(w
LK)となり、1番目〜L−1番目のレイヤの重み係数はw
1K〜w
L−1Kとなる。
【0049】
K回目の学習処理が完了すると、K+1回目の学習処理が実行され、L−1番目のレイヤの重み係数w
L−1が量子化される。L番目のレイヤの重み係数w
Lは、既に量子化されているので、K+1回目以降の学習処理においても引き続き量子化される。一方、1番目〜L−2番目のレイヤの重み係数w
1〜w
L−2は、量子化されずに浮動小数点数のままとなる。このため、K+1回目の学習処理により、L−1番目とL番目のレイヤの重み係数は、それぞれQ(w
L−1K+1),Q(w
LK+1)となり、1番目〜L−2番目のレイヤの重み係数はw
1K+1〜w
L−2K+1となる。
【0050】
K+1回目の学習処理が完了すると、K+2回目の学習処理が実行される。K+2回目の学習処理においても、L−1番目とL番目のレイヤの重み係数w
L−1,w
Lだけが量子化される。このため、K+2回目の学習処理により、L−1番目とL番目のレイヤの重み係数は、それぞれQ(w
L−1K+2),Q(w
LK+2)となり、1番目〜L−2番目のレイヤの重み係数はw
1K+2〜w
L−2K+2となる。以降、L−1番目とL番目のレイヤの重み係数w
L−1,w
Lだけを量子化した学習処理がK回繰り返される。2K回目の学習処理により、L−1番目とL番目のレイヤの重み係数は、それぞれQ(w
L−12K),Q(w
L2K)となり、1番目〜L−2番目のレイヤの重み係数はw
12K〜w
L−22Kとなる。
【0051】
以降同様にして、レイヤの並び順の逆方向に1つずつ順番に量子化されて学習処理が実行される。このように、レイヤの並び順の順方向ではなく、逆方向に向けて量子化が行われてもよい。更に、レイヤの並び順の順方向又は逆方向以外の順序で量子化が行われてもよい。例えば、「1番目のレイヤ→5番目のレイヤ→3番目のレイヤ→2番目のレイヤ・・・」といったような順序で量子化が行われてもよい。
【0052】
図6は、学習モデルの精度を示す図である。
図6の例では、教師データに対するエラー率(不正解率)を精度として利用する場合を説明する。(1)重み係数w
iを量子化しない学習モデル(
図2の学習モデル)、(2)全てのレイヤを一度に量子化した学習モデル(
図3の学習モデル)、(3)レイヤの順方向に1つずつ量子化した学習モデル(
図4の学習モデル)、及び(4)レイヤの逆方向に1つずつ量子化した学習モデル(
図5の学習モデル)の4つの学習モデルを示している。
【0053】
図6に示すように、(1)の学習モデルは、量子化しておらず重み係数w
iが詳細に示されるので、最も精度が高い。しかし、先述したように、(1)の学習モデルは、重み係数w
iを浮動小数点数等で表現する必要があるので、最もデータサイズが大きい。一方、(2)の学習モデルは、重み係数w
iを量子化しているためデータサイズは小さくなるが、全てのレイヤを一度に量子化しているので精度が最も低くなる。
【0054】
(3)の学習モデルと(4)の学習モデルは、重み係数w
iを量子化しているためデータサイズは小さくなり、(2)の学習モデルと同じ又は略同じデータサイズとなる。しかし、全てのレイヤを一度に量子化するのではなく、各レイヤを徐々に量子化することにより、学習モデルの精度の低下を抑えることができる。量子化によるデータサイズの低減と学習モデルの精度はトレードオフの関係にあり、本実施形態では、各レイヤを徐々に量子化することにより、学習モデルの精度の低下を最低限に抑えるようにしている。
【0055】
なお、
図6の例では、(4)の学習モデルの方が、(3)の学習モデルよりも精度が高くなるが、教師データの内容やレイヤ数等の条件によっては、(3)の学習モデルの方が、(4)の学習モデルよりも精度が高くなることもある。他にも例えば、順方向又は逆方向に量子化する学習モデルよりも、他の順序で量子化する学習モデルの方が、精度が高くなることもある。ただし、どの順序であったとしても、1つずつ量子化する学習モデルの方が、全てのレイヤを一度に量子化する(2)の学習モデルよりも精度が高くなる。
【0056】
以上のように、本実施形態の学習システムSは、全てのレイヤを一度に量子化するのではなく、レイヤを1つずつ量子化して学習処理を実行することにより、学習モデルの精度の低下を最低限に抑えつつ、学習モデルのデータサイズを小さくするようにしている。以降、学習システムSの詳細を説明する。なお、以降の説明では、特に図面を参照する必要のないときは、パラメータや重み係数の符号を省略する。
【0057】
[3.学習システムにおいて実現される機能]
図7は、学習システムSで実現される機能の一例を示す機能ブロック図である。
図7に示すように、学習システムSでは、データ記憶部100、取得部101、及び学習部102が実現される。本実施形態では、これら各機能が学習装置10によって実現される場合を説明する。
【0058】
[データ記憶部]
データ記憶部100は、記憶部12を主として実現される。データ記憶部100は、本実施形態で説明する処理を実行するために必要なデータを記憶する。ここでは、データ記憶部100が記憶するデータの一例として、教師データセットDSと、学習モデルMと、について説明する。
【0059】
図8は、教師データセットDSのデータ格納例を示す図である。
図8に示すように、教師データセットDSには、入力データとラベルのペアである教師データが複数個格納されている。
図8では、教師データセットDSをテーブル形式で示しており、個々のレコードが教師データに相当する。なお、
図8では、ラベルを「犬」や「猫」などの文字で示しているが、これらを識別するための記号又は数値によって示されるようにしてもよい。入力データは、学習モデルMに対する設問に相当し、ラベルは回答に相当する。
【0060】
また、データ記憶部100は、学習モデルMのプログラム(アルゴリズム)やパラメータなどを記憶する。ここでは、教師データセットDSによって学習済み(パラメータの調整済み)の学習モデルMがデータ記憶部100に記憶される場合を説明するが、学習前(パラメータの調整前)の学習モデルMがデータ記憶部100に記憶されていてもよい。以降の説明では、学習モデルMの符号を省略する。
【0061】
なお、データ記憶部100に記憶されるデータは、上記の例に限られない。例えば、データ記憶部100は、学習処理のアルゴリズム(プログラム)を記憶してもよい。また例えば、データ記憶部100は、量子化するレイヤの順序やエポック数などの設定情報を記憶してもよい。
【0062】
[取得部]
取得部101は、制御部11を主として実現される。取得部101は、学習モデルに学習させる教師データを取得する。本実施形態では、教師データセットDSがデータ記憶部100に記憶されているので、取得部101は、データ記憶部100に記憶された教師データセットDSの中から、少なくとも1つの教師データを取得する。取得部101は、任意の数の教師データを取得すればよく、教師データセットDSの全部又は一部を取得すればよい。例えば、取得部101は、十個〜数十個程度の教師データを取得してもよいし、百個〜数千個又はそれ以上の教師データを取得してもよい。なお、教師データセットDSが学習装置10以外の他のコンピュータ又は情報記憶媒体に記録されている場合には、取得部101は、当該他のコンピュータ又は情報記憶媒体から教師データを取得すればよい。
【0063】
[学習部]
学習部102は、制御部11を主として実現される。学習部102は、取得部101により取得された教師データに基づいて、学習モデルの学習処理を繰り返し実行する。先述したように、学習処理自体は、公知の手法を適用可能であり、本実施形態では、DNNの学習モデルを例に挙げているので、学習部102は、DNNで利用される学習アルゴリズムに基づいて、学習処理を繰り返し実行すればよい。学習部102は、教師データが示す入力と出力の関係が得られるように、学習モデルのパラメータを調整する。
【0064】
学習処理の繰り返し回数(エポック数)は、予め定められた回数であればよく、例えば、数回〜百回程度であってもよいし、それ以上であってもよい。繰り返し回数は、データ記憶部100に記録されているものとする。繰り返し回数は、固定値であってもよいし、ユーザの操作により変更可能としてもよい。例えば、学習部102は、同じ教師データに基づいて、繰り返し回数だけ学習処理を繰り返す。なお、各学習処理において異なる教師データが用いられてもよい。例えば、2回目の学習処理において、1回目の学習処理では用いられなかった教師データが用いられてもよい。
【0065】
学習部102は、学習モデルの一部のレイヤのパラメータを量子化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを量子化して学習処理を実行する。即ち、学習部102は、全てのレイヤのパラメータを一度に量子化して学習処理を実行するのではなく、一部のレイヤのパラメータだけを量子化し、他のレイヤのパラメータについては量子化しない状態で学習処理を実行する。本実施形態では、量子化されていないパラメータについても調整される場合を説明するが、量子化されていないパラメータについては、調整の対象から除外してもよい。その後、学習部102は、量子化しなかった他のレイヤのパラメータを量子化して学習処理を実行する。本実施形態では、量子化済みのパラメータについても調整される場合を説明するが、量子化済みのパラメータについては、その後の調整の対象から除外してもよい。
【0066】
一部のレイヤとは、量子化の対象として選択される1個以上L個未満のレイヤである。本実施形態では、レイヤが1つずつ量子化されるため、一部のレイヤが1個である場合を説明するが、一部のレイヤは複数個であってもよい。L個の全てのレイヤが一度に量子化されないようにすればよく、例えば、レイヤが2つずつ量子化されてもよいし、レイヤが3つずつ量子化されてもよい。他にも例えば、1つのレイヤが量子化された後に、他の複数のレイヤが量子化されるといったように、量子化の対象となるレイヤの数が変わってもよい。他のレイヤは、学習モデルが有するレイヤのうち、一部のレイヤ以外のレイヤである。他のレイヤは、一部のレイヤ以外の全てを意味してもよいし、一部のレイヤ以外のレイヤのうち、一部を意味してもよい。
【0067】
本実施形態では、レイヤが徐々に量子化され、最終的に全てのレイヤが量子化されるので、学習部102は、学習モデルの全てのレイヤのパラメータが量子化されるまで、学習処理を繰り返し実行する。例えば、学習部102は、まだ量子化していないレイヤの中から、量子化するレイヤを選択し、当該選択したレイヤのパラメータを量子化して学習処理を実行する。学習部102は、最終的に全てのレイヤが量子化されるまで、量子化するレイヤの選択と学習処理の実行を繰り返す。学習部102は、全てのレイヤのパラメータが量子化された場合に学習処理を終了し、学習モデルのパラメータを確定させる。確定されたパラメータは、浮動小数点数等ではなく、量子化された値となる。
【0068】
本実施形態では、学習部102は、学習モデルのレイヤを1つずつ量子化する。学習部102は、まだ量子化していないレイヤの中から、何れか1つのレイヤを選択し、当該選択したレイヤのパラメータを量子化して学習処理を実行する。学習部102は、量子化するレイヤを1つずつ選択し、L個のレイヤを徐々に量子化する。
【0069】
量子化の順序は、学習アルゴリズムの中に定義されていてもよい。本実施形態では、学習モデルの中から量子化するレイヤを所定の順序で次々と選択する学習アルゴリズムの設定として、量子化の順序がデータ記憶部100に記憶されている。学習部102は、所定の順序に基づいて、量子化するレイヤの選択と学習処理の実行を繰り返す。
【0070】
例えば、
図3のように、1番目のレイヤからL番目のレイヤまで順方向に(レイヤの並び順の昇順に)量子化する場合、学習部102は、量子化するレイヤとして、1番目のレイヤを選択し、K回の学習処理を実行する。即ち、学習部102は、1番目のレイヤのパラメータp
1だけを量子化し、2番目以降のレイヤのパラメータp
2〜p
Lは量子化せずに、K回の学習処理を実行する。次に、学習部102は、量子化するレイヤとして、2番目のレイヤを選択し、K回の学習処理を実行する。即ち、学習部102は、既に量子化された1番目のレイヤと、今回選択した2番目のレイヤと、を量子化し、3番目以降のレイヤのパラメータp
3〜p
Lは量子化せずに、K回の学習処理を実行する。以降、学習部102は、L番目のレイヤまで、レイヤの並び順の順方向に1つずつ選択し、学習処理を実行する。
【0071】
また例えば、
図4のように、L番目のレイヤから1番目のレイヤまで逆方向に(レイヤの並び順の降順に)量子化する場合、学習部102は、量子化するレイヤとして、L番目のレイヤを選択し、K回の学習処理を実行する。即ち、学習部102は、L番目のレイヤのパラメータp
Lだけを量子化し、1番目〜L−1番目のレイヤのパラメータp
1〜p
L−1は量子化せずに、K回の学習処理を実行する。次に、学習部102は、量子化するレイヤとして、L−1番目のレイヤを選択し、K回の学習処理を実行する。即ち、学習部102は、既に量子化されたL番目のレイヤと、今回選択したL−1番目のレイヤと、を量子化し、1番目〜L−2番目のレイヤのパラメータp
1〜p
L−2は量子化せずに、K回の学習処理を実行する。以降、学習部102は、1番目のレイヤまで、レイヤの並び順の逆方向に1つずつ選択し、学習処理を実行する。
【0072】
なお、量子化するレイヤの選択順は、任意の順序であってよく、レイヤの並び順の順方向又は逆方向に限られない。例えば、「1番目のレイヤ→5番目のレイヤ→3番目のレイヤ→2番目のレイヤ・・・」といったように、照準又は降順ではなくてもよい。また例えば、最初に量子化されるレイヤは、1番目のレイヤ又はL番目のレイヤに限られず、3番目のレイヤなどの中間的なレイヤが最初に選択されてもよい。同様に、最後に量子化されるレイヤについても、1番目のレイヤ又はL番目のレイヤに限られず、3番目のレイヤなどの中間的なレイヤが最後に量子化されてもよい。
【0073】
また、量子化するレイヤの選択順は、予め定められていなくてもよく、学習部102は、学習モデルの中から、量子化するレイヤをランダムに次々と選択してもよい。例えば、学習部102は、rand関数等を利用して乱数を発生し、乱数に基づいて、量子化するレイヤの選択順を決定してもよい。この場合、学習部102は、乱数によって決定された選択順に基づいて、量子化するレイヤを次々と選択し、学習処理を実行する。なお、学習部102は、L個のレイヤの選択順を一度にまとめて決定してもよいし、あるレイヤを選択するたびに、次に選択するレイヤをランダムに決定してもよい。
【0074】
本実施形態では、学習部102は、一部のレイヤのパラメータを量子化して学習処理を所定回数繰り返した後に、他のレイヤのパラメータを量子化して学習処理を所定回数繰り返す。本実施形態では、これらの回数がK回であり、互いに同じ回数とするが、繰り返し回数は互いに異なっていてもよい。例えば、
図4の例であれば、1番目のレイヤを量子化して10回の学習処理を繰り返した後に、2番目のレイヤを量子化して8回の学習処理を繰り返すといったように、各レイヤの繰り返し回数が異なってもよい。
【0075】
本実施形態では、各レイヤのパラメータには、重み係数が含まれており、学習部102は、一部のレイヤの重み係数を量子化して学習処理を実行した後に、他のレイヤの重み係数を量子化して学習処理を実行する。即ち、各レイヤのパラメータのうち、重み係数が量子化の対象となる。本実施形態では、バイアスについては量子化されないものとするが、量子化の対象となるパラメータは、バイアスであってもよい。また例えば、重み係数とバイアスの両方が量子化の対象となってもよい。また例えば、各レイヤに重み係数とバイアス以外のパラメータが存在する場合には、当該他のパラメータが量子化の対象となってもよい。
【0076】
本実施形態では、量子化の一例として二値化を説明するので、学習部102は、学習モデルの一部のレイヤのパラメータを二値化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを二値化して学習処理を実行する。学習部102は、各レイヤのパラメータを所定の閾値と比較することによって、パラメータの二値化を行う。本実施形態では、二値化の一例として、−1又は1の二値にパラメータが分類される場合を説明するが、0又は1といった他の値で二値化が行われるようにしてもよい。即ち、二値化は、任意の第1の値と第2の値にパラメータが分類されるようにすればよい。
【0077】
[4.本実施形態において実行される処理]
図9は、学習システムSにおいて実行される処理の一例を示すフロー図である。
図9に示す処理は、制御部11が記憶部12に記憶されたプログラムに従って動作することによって実行される。下記に説明する処理は、
図7に示す機能ブロックにより実行される処理の一例である。
【0078】
図9に示すように、まず、制御部11は、教師データセットDSに含まれる教師データを取得する(S1)。S1においては、制御部11は、記憶部12に記憶された教師データセットDSを参照し、任意の数の教師データを取得する。
【0079】
制御部11は、所定の順序に基づいて、まだ量子化していないレイヤの中から、量子化するレイヤを選択する(S2)。例えば、
図4のように、レイヤの並び順の順方向に量子化が行われる場合、S2においては、制御部11は、1番目のレイヤを最初に選択する。また例えば、
図5のように、レイヤの並び順の逆方向に量子化が行われる場合、S2においては、制御部11は、L番目のレイヤを最初に選択する。
【0080】
制御部11は、S1で取得した教師データに基づいて、選択したレイヤの重み係数を量子化して学習処理を実行する(S3)。S3においては、制御部11は、教師データが示す入力と出力の関係が得られるように、各レイヤの重み係数を調整する。制御部11は、量子化の対象として選択済みのレイヤについては、重み係数を量子化する。
【0081】
制御部11は、選択したレイヤの重み係数を量子化した学習処理をK回繰り返したか否かを判定する(S4)。S4においては、制御部11は、S2でレイヤを選択した後に、S3の処理をK回実行したか否かを判定する。学習処理をK回繰り返したと判定されない場合(S4;N)、S3の処理に戻り、学習処理が再び実行される。以降、学習処理がK回に達するまで、S3の処理が繰り返される。
【0082】
一方、学習処理をK回繰り返したと判定された場合(S4;Y)、制御部11は、まだ量子化していないレイヤがあるか否かを判定する(S5)。本実施形態では、L個のレイヤの各々についてK回のエポック数が設定されているので、S5においては、制御部11は、合計でLK回の学習処理を実行したか否かを判定することになる。
【0083】
まだ量子化していないレイヤがあると判定された場合(S5;Y)、S2の処理に戻り、次のレイヤが選択され、S3及びS4の処理が実行される。一方、まだ量子化していないレイヤが存在あると判定されない場合(S5;N)、制御部11は、各レイヤの量子化された重み係数を、学習モデルの最終的な重み係数として決定し(S6)、本処理は終了する。S6においては、制御部11は、最新の量子化された重み係数が各レイヤに設定された学習モデルを記憶部12に記録し、学習処理を完了させる。
【0084】
以上説明した学習システムSによれば、学習モデルの一部のレイヤのパラメータを量子化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを量子化して学習処理を実行することにより、学習モデルの精度の低下を抑えつつ、学習モデルのデータサイズを小さくすることができる。例えば、学習モデルの全てのレイヤを一度に量子化した場合には、パラメータが有する情報量が一気に落ちるので、量子化されたパラメータの精度も一気に下がってしまう。学習モデルのレイヤを徐々に量子化して情報量を徐々に落とすことによって、このように情報量が一致に落ちることを防止できるので、量子化されたパラメータの精度が一致に下がることを防止し、学習モデルの精度の低下を最低限に抑えることができる。別の言い方をすれば、学習モデルの一部のレイヤのパラメータを量子化して学習処理を実行している間は、他のレイヤのパラメータは、量子化されておらず浮動小数点数等により正確に表現されているので、他のレイヤのパラメータも量子化されている場合に比べて、量子化されたパラメータを正確な値に決定し、学習モデルの精度の低下を最低限に抑えることができる。
【0085】
また、学習システムSは、学習モデルの全てのレイヤのパラメータが量子化されるまで、学習処理を繰り返し実行することにより、全てのレイヤのパラメータを量子化して情報量を圧縮し、学習モデルのデータサイズをより小さくすることができる。
【0086】
また、学習システムSは、学習モデルのレイヤを1つずつ量子化し、各レイヤの量子化を徐々に進めることにより、学習モデルの精度の低下を効果的に抑えることができる。即ち、各レイヤの量子化を一気に進めると、先述した理由により学習モデルの精度が一気に低下する可能性があるが、1つずつ量子化を進めることにより、学習モデルの精度が一気に低下することを防止し、学習モデルの精度の低下を最低限に抑えることができる。
【0087】
また、学習システムSは、学習モデルの中から、量子化するレイヤを所定の順序で次々と選択することにより、学習モデルの作成者の意図に沿った順序で量子化を実行することができる。例えば、学習モデルの作成者が、精度の低下を抑える順序を発見している場合には、作成者が指定した順序に基づいて、量子化するレイヤを選択することにより、精度の低下を最低限に抑えた学習モデルを作成することができる。
【0088】
また、学習システムSは、学習モデルの中から、量子化するレイヤをランダムに次々と選択することにより、学習モデルの作成者が特に順序を指定しなくても学習処理を実行することができる。
【0089】
また、学習システムSは、一部のレイヤのパラメータを量子化して学習処理を所定回数繰り返した後に、他のレイヤのパラメータを量子化して学習処理を所定回数繰り返すことにより、量子化されたパラメータをより正確な値に設定し、学習モデルの精度の低下を効果的に抑えることができる。
【0090】
また、学習システムSは、一部のレイヤの重み係数を量子化して学習処理を実行した後に、他のレイヤの重み係数を量子化して学習処理を実行することにより、学習モデルの精度の低下を抑えつつ、学習モデルのデータサイズを小さくすることができる。例えば、浮動小数点数等によって情報量が多くなりがちな重み係数を量子化することにより、学習モデルのデータサイズをより小さくすることができる。
【0091】
また、学習システムSは、学習モデルの一部のレイヤのパラメータを二値化して学習処理を実行した後に、学習モデルの他のレイヤのパラメータを二値化して学習処理を実行し、データサイズの圧縮に効果的な二値化を利用することによって、学習モデルのデータサイズをより小さくすることができる。
【0092】
[5.変形例]
なお、本発明は、以上に説明した実施形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0093】
図10は、変形例の機能ブロック図である。
図10に示すように、以降説明する変形例では、実施形態で説明した機能に加えて、モデル選択部103と他モデル学習部104が実現される。
【0094】
(1)例えば、実施形態で説明したように、量子化するレイヤを選択する順序によって、学習モデルの精度が異なることがある。このため、どの順序で量子化をすると最も精度が高くなるか分からない場合には、複数通りの順序に基づいて複数の学習モデルを作成し、相対的に精度の高い学習モデルが最終的に選択されるようにしてもよい。
【0095】
本変形例の学習部102は、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択し、複数の学習モデルを作成する。ここでの複数通りは、L個のレイヤの順列組合せの全通りであってもよいし、一部の組み合わせだけであってもよい。例えば、レイヤ数が5個程度であれば、全通りの順序で学習モデルが作成されてもよいが、レイヤ数が10個以上であれば、全通りの順列組合せが多くなるので、一部の順序についてのみ学習モデルが作成されてもよい。複数通りの順序は、予め指定されていてもよいし、ランダムに作成されてもよい。
【0096】
学習部102は、順序ごとに、当該順序でレイヤを次々と量子化して学習モデルを作成する。個々の学習モデルの作成方法自体は、実施形態で説明した通りである。本変形例では、順序の数と、作成される学習モデルの数と、は一致する。即ち、順序と学習モデルは1対1で対応することになる。例えば、m通り(m:2以上の自然数)の順序があったとすると、学習部102は、m個の学習モデルを作成することになる。
【0097】
本変形例の学習システムSは、モデル選択部103を含む。モデル選択部103は、制御部11を主として実現される。モデル選択部103は、各学習モデルの精度に基づいて、複数の学習モデルのうちの少なくとも1つを選択する。
【0098】
学習モデルの精度自体は、公知の手法によって評価されるようにすればよく、本変形例では、教師データに対するエラー率(不正解率)を利用する場合を説明する。エラー率は、正解率とは逆の概念であり、学習済みの学習モデルに対し、学習処理で利用した教師データの全てを入力した場合に、学習モデルからの出力と、教師データに示された出力(正解)と、が一致しなかった割合である。エラー率が低いほど、学習モデルの精度が高くなる。
【0099】
モデル選択部は、複数の学習モデルの中で相対的に精度が高い学習モデルを選択する。モデル選択部は、1つだけ学習モデルを選択してもよいし、複数の学習モデルを選択してもよい。例えば、モデル選択部は、複数の学習モデルのうち、精度が最も高い学習モデルを選択する。なお、モデル選択部は、精度が最も高い学習モデルではなく、2番目又は3番目に精度が高い学習モデルを選択してもよい。他にも例えば、モデル選択部は、複数の学習モデルのうち、精度が閾値以上の学習モデルの何れかを選択してもよい。
【0100】
変形例(1)によれば、複数通りの順序の各々に基づいて、量子化するレイヤを次々と選択して複数の学習モデルを作成し、各学習モデルの精度に基づいて、複数の学習モデルのうちの少なくとも1つを選択することにより、学習モデルの精度の低下を効果的に抑えることができる。
【0101】
(2)また例えば、変形例(1)において、精度が相対的に高い学習モデルの順序を、他の学習モデルの学習に流用してもよい。この場合、他の学習モデルの学習時に、複数通りの順序を試さなくても、精度の高い学習モデルを作成することができる。
【0102】
本変形例の学習システムSは、他モデル学習部104を含む。他モデル学習部104は、制御部11を主として実現される。他モデル学習部104は、モデル選択部103により選択された学習モデルに対応する順序に基づいて、他の学習モデルの学習処理を実行する。学習モデルに対応する順序とは、学習モデルを作成するときに利用したレイヤの選択順序である。他の学習モデルは、学習済みの学習モデルとは異なるモデルである。他の学習モデルは、学習済みの学習モデルと同じ教師データが用いられてもよいし、異なる教師データが用いられてもよい。
【0103】
他の学習モデルの学習は、学習済みの学習モデルと同様の流れで実行されるようにすればよい。即ち、他モデル学習部104は、教師データに基づいて、他の学習モデルの学習処理を繰り返し実行する。他モデル学習部104は、モデル選択部103により選択された学習モデルに対応する順序で、他の学習モデルのレイヤを次々と量子化して学習処理を実行する。個々の学習処理自体は、実施形態の学習部102で説明した通りである。
【0104】
変形例(2)によれば、相対的に精度が高い学習モデルに対応する順序に基づいて、他の学習モデルの学習処理を実行することにより、他の学習モデルの学習処理を効率化することができる。例えば、他の学習モデルを作成するときに複数通りの順序を試さなくても、精度の高い学習モデルを作成することができる。その結果、学習装置10の処理負荷を軽減し、精度の高い学習モデルを迅速に作成することができる。
【0105】
(3)また例えば、上記変形例を組み合わせてもよい。
【0106】
また例えば、学習モデルの全てのレイヤのパラメータが量子化される場合を説明したが、学習モデルの中には、量子化の対象とはならないレイヤが存在してもよい。即ち、浮動小数点数等でパラメータが表現されるレイヤと、量子化されたレイヤと、が混在していてもよい。また例えば、学習モデルのレイヤが1つずつ量子化される場合を説明したが、レイヤは複数個ずつ量子化されてもよい。例えば、学習モデルのレイヤが2つずつ又は3つずつ量子化されてもよい。また例えば、重み係数ではなく、バイアスなどの他のパラメータが量子化されてもよい。また例えば、量子化は二値化に限られず、パラメータの情報量(ビット数)を減らすことができる量子化であればよい。
【0107】
また例えば、学習システムSには、複数のコンピュータが含まれており、各コンピュータによって機能が分担されてもよい。例えば、選択部101と学習部102が第1のコンピュータによって実現され、モデル選択部103と他モデル学習部104が第2のコンピュータによって実現されてもよい。また例えば、データ記憶部100は、学習システムSの外部にあるデータベースサーバ等によって実現されてもよい。
学習システム(S)の取得手段(101)は、学習モデルに学習させる教師データを取得する。学習手段(102)は、教師データに基づいて、学習モデルの学習処理を繰り返し実行する。学習手段(102)は、学習モデルの一部のレイヤのパラメータを量子化して前記学習処理を実行した後に、学習モデルの他のレイヤのパラメータを量子化して学習処理を実行する。