(57)【要約】【課題】所定の学習モデルを学習させる際に、精度の良い学習結果を短時間で取得する。【解決手段】情報処理装置１０の第１学習部２２は、所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて、学習モデルを所定回数繰り返し学習させる。そして、第２学習部２６は、第１学習部２２による浮動小数点数である数値を用いての学習後に、その学習により得られた浮動小数点数である数値に対応する、固定小数点数である数値を用いて学習モデルを繰り返し学習させる。【選択図】図１
2019211985.tif 000002
【特許請求の範囲】
【請求項１】
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させ、
前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる、
処理をコンピュータに実行させるための学習プログラム。
【請求項２】
前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記浮動小数点数である数値を用いた学習における前記数値に応じた小数点位置を算出し、算出された前記小数点位置に基づいて、前記浮動小数点数である数値を固定小数点数である数値へ変換し、前記固定小数点数である数値を用いて前記学習モデルを学習させる、
請求項１に記載の学習プログラム。
【請求項３】
前記数値は、前記学習モデルのパラメータ及び前記学習モデルの学習用データの少なくとも１つである、
請求項１又は請求項２に記載の学習プログラム。
【請求項４】
前記所定回数は、予め設定された回数である、
請求項１〜請求項３の何れか１項に記載の学習プログラム。
【請求項５】
前記浮動小数点数によるｉ−１回目の学習における前記数値に応じた小数点位置と、前記浮動小数点数によるｉ回目の学習における前記数値に応じた小数点位置とを算出し、
前記ｉ回目の学習における前記小数点位置と前記ｉ−１回目の学習における前記小数点位置との間の変化に基づいて、前記浮動小数点数による学習から前記固定小数点数による学習へ切り替える、
請求項１〜請求項４の何れか１項に記載の学習プログラム。
【請求項６】
前記浮動小数点数による学習が繰り返される毎に、
前記ｉ回目の学習における前記小数点位置と前記ｉ−１回目の学習における前記小数点位置との間の差の絶対値を前記変化として算出し、
今回の前記浮動小数点数による学習が繰り返された際に算出された前記差の絶対値から、前回の前記浮動小数点数による学習が繰り返された際に算出された前記差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数である数値を用いて前記学習モデルを学習させる、
請求項５に記載の学習プログラム。
【請求項７】
前記学習モデルは、ニューラルネットワークであり、
前記浮動小数点数である数値を用いた学習における前記数値に応じた前記小数点位置を算出する際に、前記ニューラルネットワークの各層について、前記層のパラメータベクトルの各要素から絶対値が最大である要素を選択し、選択された最大の前記要素に応じて、前記パラメータベクトルの各要素の値の小数点位置を算出する、
請求項２、請求項５、及び請求項６の何れか１項に記載の学習プログラム。
【請求項８】
前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記固定小数点数である数値を用いての処理に関する統計情報に基づいて、前記固定小数点数における小数点位置を変更し、前記学習モデルを学習させる、
請求項１〜請求項７の何れか１項に記載の学習プログラム。
【請求項９】
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させ、
前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる、
処理をコンピュータに実行させる学習方法。
【請求項１０】
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させる第１学習部と、
前記第１学習部による前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる第２学習部と、
を含む情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、学習プログラム、学習方法、及び情報処理装置に関する。
【背景技術】
【０００２】
従来、計算対象の数値の下位桁の桁落ちする乗算器を持つ固定小数点方式の乗算に於いても必要に応じて固定小数点乗算を可能にするデイジタル信号処理方式が知られている。この方式では、乗数を収容するレジスタ、被乗数を収容するレジスタ、乗算回路及びアキュムレータより構成される固定小数点乗算回路に於いて、整数同士の乗算を実施する場合、整数の乗数、被乗数をレジスタに置数する際、桁位置をずらして置数する。
【０００３】
また、固定小数点型乗加算器のハードウェア構成を殆んど増加させずに、演算精度を浮動小数点型乗加算器程度に向上させる固定小数点型乗加算器が知られている。この固定小数点型乗加算器は、入力データと帰還入力データのいずれかを選択して出力する入力選択用のセレクタと、セレクタの選択出力である乗数データＸと係数入力データである被乗数データＹの乗算を行う乗算回路とを具備する。また、この固定小数点型乗加算器は、乗算回路の乗算出力が一方の加算入力となる加算回路とを具備する。加算回路の加算出力Ｚを一時的に保持して加算回路の他方の加算入力とするデータ保持回路とを具備する。また、この固定小数点型乗加算器は、加算出力を選択的に上位側へビットシフトさせる左ビットシフト回路と、左ビットシフト回路の出力データが書き込まれ、読み出しデータをセレクタの一方の入力端に帰還させるデータ格納装置とを具備する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭59-197936号公報
【特許文献２】特開2000-231476号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ニューラルネットワーク等の学習モデルのパラメータを学習させる際には、膨大な計算量が必要となるため、計算負荷及びメモリ負荷等の負荷がかかり、パラメータの学習時間が長くなる。これに対し、パラメータの学習時間を短縮させるため、学習の際に用いる数値を固定小数点数によって表現することが考えられる。学習の際に用いる数値を固定小数点数によって表現することによりデータ量が削減され、計算負荷及びメモリ負荷等の負荷を低減され、パラメータの学習時間が短縮される。
【０００６】
しかし、固定小数点数は、浮動小数点数に比べ表現可能な数値範囲が狭い。このため、固定小数点数によって表現された数値による学習処理では、学習結果の精度が低いという課題がある。
【０００７】
一つの側面では、開示の技術は、所定の学習モデルを学習させる際に、精度の良い学習結果を短時間で取得することが目的である。
【課題を解決するための手段】
【０００８】
開示の技術は、一つの実施態様では、浮動小数点数である数値を用いて、所定の学習モデルを所定回数学習させる。そして、開示の技術は、前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを学習させる。
【発明の効果】
【０００９】
一つの側面として、所定の学習モデルを学習させる際に、精度の良い学習結果を短時間で取得することができる、という効果を有する。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る情報処理装置の概略ブロック図である。
【図２】データ記憶部に格納される学習用データのデータ形式の一例を示す図である。
【図３】ＣＮＮを説明するための説明図である。
【図４】第１パラメータ記憶部に格納されるパラメータのデータ形式の一例を示す図である。
【図５】第２パラメータ記憶部に格納されるパラメータのデータ形式の一例を示す図である。
【図６】実施形態に係る情報処理装置として機能するコンピュータの概略構成を示すブロック図である。
【図７】実施形態に係る情報処理装置として機能するコンピュータの概略構成を示すブロック図である。
【図８】本実施形態の学習処理ルーチンの一例を示すフローチャートである。
【図９】第１実施形態の事前学習処理ルーチンの一例を示すフローチャートである。
【図１０】本実施形態のデータ変換処理ルーチンの一例を示すフローチャートである。
【図１１】本実施形態の本学習処理ルーチンの一例を示すフローチャートである。
【図１２】第２実施形態の事前学習処理ルーチンの一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
【００１２】
＜第１実施形態の情報処理装置＞
【００１３】
図１に示すように、第１実施形態に係る情報処理装置１０は、データ記憶部２０と、第１学習部２２と、第１パラメータ記憶部２４と、第２学習部２６と、第２パラメータ記憶部２８とを備えている。
【００１４】
データ記憶部２０には、所定の学習モデルを学習させるための学習用データが格納されている。学習用データは、例えば、図２に示されるように、テーブルの形式で格納される。学習用データは、入力データとその入力データに対応する正解データとの組み合わせである。本実施形態では、入力データとして、ＲＧＢの要素を含む画像データを用いる場合を例に説明する。
【００１５】
図２に示すテーブルには、各データの識別情報を表すデータＩＤと、入力データと正解データとが対応付けられて格納される。図２に示される例では、例えば、データＩＤ「00001」と、入力データ「Ａ１」と正解データ「Ｂ１」とが対応付けられて格納される。
【００１６】
本実施形態の情報処理装置１０は、データ記憶部２０に格納された学習用データを用いて、学習モデルの一例であるConvolutional Neural Network（ＣＮＮ）を学習させる。図３に、ＣＮＮに対する深層学習を説明するための説明図を示す。
【００１７】
図３に示されるＣＮＮは、Ｃｏｎｖ＿１，Ｐｏｏｌ＿１，Ｃｏｎｖ＿２，Ｐｏｏｌ＿２，ｆｃ１，及びｆｃ２の層から構成されている。図３に示されるように、ＣＮＮに対する深層学習処理では、入力データに対応する正解データが与えられ、ＣＮＮに対し入力データを（図３における）左から入力し、各層の処理結果を右方向へ伝播させる（順伝播）。そして、入力データに対する出力データと正解データとを比較し、結果の差分を左方向へ伝播させる(逆伝播)。
【００１８】
例えば、入力データに対して、Ｃｏｎｖ＿１のパラメータの積和演算を実行することで、Ｃｏｎｖ＿１層の畳み込み演算が実行される。Ｃｏｎｖ＿１，Ｐｏｏｌ＿１，Ｃｏｎｖ＿２，Ｐｏｏｌ＿２，ｆｃ１，及びｆｃ２の各層はパラメータを保持している。ＣＮＮの最上位の層（図３におけるｆｃ２）まで演算がなされると、演算結果が正解データと比較され、比較結果を基に各層のパラメータが更新される。
【００１９】
ＣＮＮの各層では、図３の右側における計算が行われる。具体的には、学習計算が行われる際、入力データ又は前層からの出力データである「ｂｏｔｔｏｍ」と、パラメータである「Ｗｅｉｇｈｔ」との積和演算が実行される。そして、積和演算結果と「Ｂｉａｓ」との和に応じて、出力データ「ｔｏｐ」が出力される。
【００２０】
本実施形態の情報処理装置１０は、浮動小数点数である数値を用いてＣＮＮを所定回数学習させた後に、固定小数点数である数値を用いてＣＮＮを学習させる。
【００２１】
なお、本実施形態では、学習処理のミニバッチ１回を１回の繰り返しとする。ミニバッチとは、画像データを複数同時に学習処理にかけることをいう。例えば、ミニバッチが「１６」とは、１６枚の画像データを同時に学習処理にかけることを意味する。このため、例えば、６５５３６枚の画像データがある場合には、４０９６イタレーションで全画像データを入力したことになる。
【００２２】
第１学習部２２は、まず、データ記憶部２０に格納された学習用データを浮動小数点数によって表現する。次に、第１学習部２２は、浮動小数点数である数値を用いてＣＮＮを予め設定された回数学習させる。そして、第１学習部２２は、学習結果としてのＣＮＮの各層のパラメータＷｌを得る。なお、ｌ（小文字のエル）はＣＮＮの各層を識別するためのインデックスである。また、パラメータＷｌは、以下の式（１）に示されるようなパラメータベクトルである。なお、添え字「Ｗｎ」は、パラメータＷｌのベクトル内の要素数を表す。
【００２３】
Ｗｌ＝｛Ｗ０，ｌ，Ｗ１，ｌ，・・・，ＷＷｎ，ｌ｝
（１）
【００２４】
そして、第１学習部２２は、学習処理が繰り返し行われている際に、学習結果としてのパラメータＷｌを、繰り返し回数ｉと対応付けて第１パラメータ記憶部２４に逐次格納する。
【００２５】
第１学習部２２は、ＣＮＮに対する学習処理が、予め設定された回数であるＣ回繰り返された場合に、浮動小数点数である数値を用いてのＣＮＮの学習処理を終了する。Ｃは、例えば、ユーザによって予め設定される。また、ＣＮＮに対する既存のシミュレーション結果に基づき学習精度が十分となる繰り返し回数をＣとして設定してもよい。
【００２６】
第１パラメータ記憶部２４には、図４に示されるように、学習処理の繰り返し回数を表す繰り返し回数ｉと、第１学習部２２による学習処理によって得られるパラメータＷｌとが対応付けられて格納される。なお、パラメータＷｌの括弧内の数字は、繰り返し回数ｉに対応している。
【００２７】
第２学習部２６は、浮動小数点数である数値を用いた学習により得られたパラメータＷｌを、固定小数点数であるパラメータＷｆｉｘ，ｌへ変換する。
【００２８】
例えば、第２学習部２６は、ＣＮＮの各層のパラメータＷｌについて、その層のパラメータＷｌの各要素のうちの最大値と最小値とを選択する。
【００２９】
次に、第２学習部２６は、ＣＮＮの各層のパラメータＷｌについて、その層のパラメータＷｌの各要素のうちの最大値と最小値とに基づいて、以下の式（２）に従って、整数ＮＷｌを算出する。整数ＮＷｌは、各層のパラメータＷｌ毎に算出される。
【００３０】
ＮＷｌ＝Ｃｅｉｌ（ｌｏｇ２（ｍａｘ（最大値，（−１＊最小値））））
（２）
【００３１】
なお、上記式（２）における関数「Ｃｅｉｌ」は、最も近い整数に切り上げられた数値を返す。例えば、Ｃｅｉｌ（１．５）は、２が値として出力される。
【００３２】
次に、第２学習部２６は、各層のパラメータＷｌについて、算出された整数ＮＷｌと演算対象のデータの幅ＷＬとに基づいて、以下の式（３）に従って、パラメータＷｌに応じた小数点位置Ｑ（Ｗｌ）を算出する。
【００３３】
Ｑ（Ｗｌ）＝Ｎｗｌ−ＷＬ−１
（３）
【００３４】
なお、データの幅ＷＬは、固定小数点の幅を表す。例えば、１６ｂｉｔ固定小数点の場合には、データの幅ＷＬは「１６」となる。
【００３５】
次に、第２学習部２６は、各層のパラメータＷｌについて、パラメータＷｌとパラメータＷｌに応じた小数点位置Ｑ（Ｗｌ）とに基づいて、以下の式（４）に従って、浮動小数点数であるパラメータＷｌを固定小数点数であるパラメータＷｆｉｘ，ｌへ変換する。
【００３６】
【数１】
2019211985.tif 000003
（４）
【００３７】
なお、上記式（３）におけるデータの幅ＷＬは、８ビット又は１６ビット等の値が予め設定される。また、上記式（４）におけるＳｔｏｃＲｎｄ（・）は、確率丸めを実行する関数であり、例えば、ＳｔｏｃＲｎｄ（０．４）は、６０％の確率で０を出力し、４０％の確率で１を出力する。なお、固定小数点で表現される各層のパラメータＷｆｉｘ，ｌは、以下の式（５）で表されるような形式のベクトルである。
【００３８】
Ｗｆｉｘ，ｌ＝｛Ｗｆｉｘ，０，ｌ，Ｗｆｉｘ，１，ｌ，・・・Ｗｆｉｘ，Ｗｎ，ｌ｝
（５）
【００３９】
次に、第２学習部２６は、固定小数点で表現される各層のパラメータＷｆｉｘ，ｌを用いて、ＣＮＮの各層のパラメータＷｆｉｘ，ｌを繰り返し学習させる。
【００４０】
なお、本実施形態の第２学習部２６は、ＣＮＮの各層のパラメータＷｆｉｘ，ｌを繰り返し学習させる際に、固定小数点数の小数点位置を動的に変化させる。
【００４１】
固定小数点で表現可能な数値の範囲は、浮動小数点数で表現可能な数値の範囲よりも狭い。このため、固定小数点数によって学習処理を行う場合には、例えば、オーバーフローが発生する場合がある。
【００４２】
このため、本実施形態では、学習処理を繰り返す毎に、オーバーフローの発生の有無を記録する。そして、本実施形態の第２学習部２６は、所定期間内におけるオーバーフロー率を算出し、オーバーフロー率に応じて各数値の小数点位置を変更する。なお、オーバーフロー率は、演算回数の総数に対するオーバーフローが発生した演算回数の割合である。オーバーフロー率は、開示の技術の統計情報の一例である。
【００４３】
具体的には、第２学習部２６は、オーバーフロー率が閾値より大きい場合、小数点位置Ｑ（Ｗｌ）を１減算する。そして、第２学習部２６は、１減算された小数点位置Ｑ（Ｗｌ）に応じた固定小数点数のパラメータＷｆｉｘ，ｌを学習させる。
【００４４】
また、第２学習部２６は、オーバーフロー率の所定倍数の値が閾値以下の場合、小数点位置Ｑ（Ｗｌ）を１加算する。そして、第２学習部２６は、１加算された小数点位置Ｑ（Ｗｌ）に応じた固定小数点数のパラメータＷｆｉｘ，ｌを学習させる。なお、本実施形態では、所定倍数が「２倍」である場合を例に説明するが、所定倍数は何倍であってもよい。
【００４５】
また、第２学習部２６は、オーバーフロー率の２倍の値が閾値より大きく、かつオーバーフロー率が閾値以下の場合、小数点位置Ｑ（Ｗｌ）を変更せずに学習処理を繰り返す。
【００４６】
これにより、適切な小数点位置に対応する固定小数点数を用いて、ＣＮＮの各層のパラメータＷｆｉｘ，ｌを学習させることができる。
【００４７】
そして、第２学習部２６は、学習処理が繰り返し行われている際に、学習結果としてのパラメータＷｆｉｘ，ｌを、繰り返し回数ｉと対応付けて第２パラメータ記憶部２８に逐次格納する。
【００４８】
第２パラメータ記憶部２８には、図５に示されるように、学習処理の繰り返し回数を表す繰り返し回数ｉと、第２学習部２６による学習処理によって得られるパラメータＷｆｉｘ，ｌとが対応付けられて格納される。なお、パラメータＷｆｉｘ，ｌの括弧内の数字は、繰り返し回数ｉに対応している。
【００４９】
情報処理装置１０は、例えば、図６に示すコンピュータ５０で実現することができる。コンピュータ５０はＣＰＵ５１、一時記憶領域としてのメモリ５２、及び不揮発性の記憶部５３を備える。また、コンピュータ５０は、入出力装置が接続される入出力interface（Ｉ／Ｆ）５４、及び記録媒体５９に対するデータの読み込み及び書き込みを制御するread/write（Ｒ／Ｗ）部５５を備える。また、コンピュータ５０は、インターネット等のネットワークに接続されるネットワークＩ／Ｆ５６を備える。ＣＰＵ５１、メモリ５２、記憶部５３、入出力Ｉ／Ｆ５４、Ｒ／Ｗ部５５、及びネットワークＩ／Ｆ５６は、バス５７を介して互いに接続される。
【００５０】
記憶部５３は、Hard Disk Drive（ＨＤＤ）、Solid State Drive（ＳＳＤ）、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部５３には、コンピュータ５０を情報処理装置１０として機能させるための学習プログラム６０が記憶されている。学習プログラム６０は、第１学習プロセス６１と、第２学習プロセス６２とを有する。データ記憶領域６３には、データ記憶部２０を構成する情報が記憶される。第１パラメータ記憶領域６４には、第１パラメータ記憶部２４を構成する情報が記憶される。第２パラメータ記憶領域６５には、第２パラメータ記憶部２８を構成する情報が記憶される。
【００５１】
ＣＰＵ５１は、学習プログラム６０を記憶部５３から読み出してメモリ５２に展開し、学習プログラム６０が有するプロセスを順次実行する。ＣＰＵ５１は、第１学習プロセス６１を実行することで、図１に示す第１学習部２２として動作する。また、ＣＰＵ５１は、第２学習プロセス６２を実行することで、図１に示す第２学習部２６として動作する。また、ＣＰＵ５１は、データ記憶領域６３から情報を読み出して、データ記憶部２０をメモリ５２に展開する。また、ＣＰＵ５１は、第１パラメータ記憶領域６４から情報を読み出して、第１パラメータ記憶部２４をメモリ５２に展開する。また、ＣＰＵ５１は、第２パラメータ記憶領域６５から情報を読み出して、第２パラメータ記憶部２８をメモリ５２に展開する。これにより、学習プログラム６０を実行したコンピュータ５０が、情報処理装置１０として機能することになる。ソフトウェアである学習プログラム６０を実行するＣＰＵ５１はハードウェアである。
【００５２】
なお、情報処理装置１０は、例えば、図７に示すコンピュータ１５０によって実現されてもよい。コンピュータ１５０は、Large Scale Integration（ＬＳＩ）用メモリ７０、ＬＳＩ７１を更に備える。ＬＳＩ７１には、固定小数点数の小数点位置を動的に変更するためのプロセッサが含まれている。このＬＳＩ７１は、バス５７経由でＣＰＵ５１から動作を制御される。ＣＰＵ５１は、学習プログラム６０を記憶部５３から読み出してＬＳＩ）用メモリ７０に展開し、学習プログラム６０が有するプロセスを順次実行し、ＬＳＩ７１を制御する。
【００５３】
なお、ＬＳＩ７１には制御コア（図示省略）が更に含まれていても良い。この場合には、例えば、バス５７経由でＣＰＵ５１と制御コアとが通信処理を行い、ＣＰＵ５１から出力された制御情報を得た制御コアがＬＳＩ７１全体を制御する。
【００５４】
なお、学習プログラム６０により実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit（ＡＳＩＣ）等で実現することも可能である。
【００５５】
次に、本実施形態に係る情報処理装置１０の作用について説明する。情報処理装置１０へ複数の学習用データが入力されると、データ記憶部２０に複数の学習用データが格納される。そして、情報処理装置１０は、学習開始の指示信号を受け付けると、図８に示す学習処理ルーチンを実行する。
【００５６】
ステップＳ１０において、第１学習部２２は、浮動小数点数である数値を用いてＣＮＮを予め設定された回数学習させる。ステップＳ１０の事前学習処理は、図９に示す事前学習処理ルーチンによって実現される。
【００５７】
図９に示す事前学習処理ルーチンのステップＳ１１において、第１学習部２２は、繰り返し回数ｉに０を代入する。
【００５８】
ステップＳ１２において、第１学習部２２は、浮動小数点数での学習の繰り返し回数ｐに０を代入する。
【００５９】
ステップＳ１３において、第１学習部２２は、上記ステップＳ１２又は前回のステップＳ１７で更新された繰り返し回数ｐが予め設定された繰り返し回数Ｃと等しいか否かを判定する。繰り返し回数ｐが予め設定された繰り返し回数Ｃと等しい場合には、図９の処理ルーチンを終了する。一方、繰り返し回数ｐが予め設定された繰り返し回数Ｃと等しくない場合には、ステップＳ１４へ進む。
【００６０】
ステップＳ１４において、第１学習部２２は、浮動小数点数である数値を用いてＣＮＮの各層のパラメータＷｌを学習させる。
【００６１】
ステップＳ１５において、第１学習部２２は、上記ステップＳ１４で得られたＣＮＮの各層のパラメータＷｌを、繰り返し回数ｉと対応付けて第１パラメータ記憶部２４に格納する。
【００６２】
ステップＳ１６において、第１学習部２２は、繰り返し回数ｉを１インクリメントする。
【００６３】
ステップＳ１７において、第１学習部２２は、浮動小数点数での学習の繰り返し回数ｐを１インクリメントする。
【００６４】
ステップＳ１３での判定処理において、繰り返し回数ｐが予め設定された繰り返し回数Ｃと等しい場合には図９の事前学習処理ルーチンが終了し、図８の学習処理ルーチンに戻る。
【００６５】
図８の学習処理ルーチンのステップＳ２０において、第２学習部２６は、浮動小数点数である数値を用いた学習により得られたパラメータＷｌを、固定小数点数であるパラメータＷｆｉｘ，ｌへ変換する。ステップＳ２０のデータ変換処理は、図１０に示すデータ変換処理ルーチンによって実現される。
【００６６】
ステップＳ２１において、第２学習部２６は、ＣＮＮの層を識別するための変数ｌに０を代入する。
【００６７】
ステップＳ２２において、第２学習部２６は、変数maxに０を代入する。また、ステップＳ２２において、第２学習部２６は、変数minに予め設定された初期値FLT_MAXを代入する。
【００６８】
ステップＳ２３において、第２学習部２６は、ＣＮＮの層ｌのパラメータＷｌの各要素｛Ｗ０，ｌ，Ｗ１，ｌ，・・・，ＷＷｎ，ｌ｝を識別するための変数ｊに０を代入する。
【００６９】
ステップＳ２４において、第２学習部２６は、ＣＮＮの層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌが変数maxよりも大きいか否かを判定する。層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌが変数maxよりも大きい場合には、ステップＳ２５へ進む。一方、層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌが変数max以下である場合には、ステップＳ２６へ進む。
【００７０】
ステップＳ２５において、第２学習部２６は、ＣＮＮの層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌを変数maxへ代入する。
【００７１】
ステップＳ２６において、第２学習部２６は、層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌが変数minよりも小さいか否かを判定する。層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌが変数minよりも小さい場合には、ステップＳ２７へ進む。一方、層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌが変数min以上である場合には、ステップＳ２８へ進む。
【００７２】
ステップＳ２７において、第２学習部２６は、ＣＮＮの層ｌに対応するパラメータＷｌのｊ番目の要素Ｗｊ，ｌを変数minへ代入する。
【００７３】
ステップＳ２８において、第２学習部２６は、変数ｊが、層ｌに対応するパラメータＷｌの全要素の数Ｗｎと等しいか否かを判定する。変数ｊが全要素の数Ｗｎと等しい場合には、ステップＳ３０へ進む。一方、変数ｊが全要素の数Ｗｎと等しくない場合には、ステップＳ２９へ進み、変数ｊを１インクリメントしてステップＳ２４へ戻る。
【００７４】
ステップＳ３０において、第２学習部２６は、上記ステップＳ２５で得られた変数maxと上記ステップＳ２７で得られた変数minとに基づいて、上記式（２）に従って、ＣＮＮの層ｌのパラメータＷｌに対応する整数ＮＷｌを計算する。
【００７５】
ステップＳ３１において、第２学習部２６は、上記ステップＳ３０で計算された整数ＮＷｌと演算対象のデータの幅ＷＬとに基づいて、上記式（３）に従って、パラメータＷｌに応じた小数点位置Ｑ（Ｗｌ）を算出する。そして、ステップＳ３１において、第２学習部２６は、パラメータＷｌと小数点位置Ｑ（Ｗｌ）とに基づいて、上記式（４）に従って、浮動小数点数であるパラメータＷｌを固定小数点であるパラメータＷｆｉｘ，ｌへ変換する。
【００７６】
ステップＳ３２において、第２学習部２６は、変数ｌが、ＣＮＮの全ての層の数Ｌと等しいか否かを判定する。変数ｌが全ての層の数Ｌと等しい場合には、図１０のデータ変換処理ルーチンを終了し、図８の学習処理ルーチンに戻る。一方、変数ｌが全ての層の数Ｌと等しくない場合には、ステップＳ３３へ進み、変数ｌを１インクリメントしてステップＳ２２へ戻る。
【００７７】
図８の学習処理ルーチンのステップＳ４０において、第２学習部２６は、上記ステップＳ２０で得られた固定小数点で表現される各層のパラメータＷｆｉｘ，ｌを用いて、ＣＮＮの各層のパラメータＷｆｉｘ，ｌを繰り返し学習させる。ステップＳ４０の本学習処理は、図１１に示す本学習処理ルーチンによって実現される。
【００７８】
ステップＳ４１において、第２学習部２６は、繰り返し回数ｉが予め設定された総学習回数Ｄと等しいか否かを判定する。繰り返し回数ｉが総学習回数Ｄと等しい場合には、図１１の本学習処理ルーチンを終了する。
【００７９】
ステップＳ４２において、第２学習部２６は、上記ステップＳ２０で得られた固定小数点で表現される各層のパラメータＷｆｉｘ，ｌを用いて、ＣＮＮの各層のパラメータＷｆｉｘ，ｌを学習させる。なお、ステップＳ４２における学習処理では、オーバーフロー率に応じて各数値の小数点位置を変更しながら、ＣＮＮの各層のパラメータＷｆｉｘ，ｌを学習させる。
【００８０】
ステップＳ４３において、第２学習部２６は、上記ステップＳ４２で得られたＣＮＮの各層のパラメータＷｆｉｘ，ｌを繰り返し回数ｉと対応付けて第２パラメータ記憶部２８に格納する。
【００８１】
ステップＳ４４において、第２学習部２６は、繰り返し回数ｉを１インクリメントして、ステップＳ４１へ戻る。
【００８２】
以上説明したように、第１実施形態に係る情報処理装置は、浮動小数点数である数値を用いて、ＣＮＮを所定回数学習させる。そして、情報処理装置は、浮動小数点数である数値を用いての学習後に、学習により得られた浮動小数点数である数値に対応する、固定小数点数である数値を用いてＣＮＮを学習させる。これにより、所定の学習モデルを学習させる際に、精度の良い学習結果を短時間で取得することができる。
【００８３】
また、繰り返し学習の全てを固定小数点数によって行い、かつ固定小数点数の小数点位置を動的に変化させて学習を行う場合には、適切な小数点位置に調整されるまでに学習処理が進んでしまい、学習結果の精度が低下する。また、この場合には、小数点位置を調整するための統計情報を取得する必要があるため、学習時間が増加する。これに対し、第１実施形態に係る情報処理装置は、浮動小数点数である数値を用いてＣＮＮを所定回数学習させた後に、固定小数点数である数値を用いてＣＮＮを学習させることにより、精度の良い学習結果を短時間で取得することができる。また、浮動小数点数を用いてＣＮＮを学習させることにより得られた値を固定小数点数による学習処理の初期値とすることにより、固定小数点数で学習を行う際の初期値を適切に設定することができる。
【００８４】
＜第２実施形態の情報処理装置＞
【００８５】
次に、第２実施形態について説明する。第２実施形態では、ｉ回目の学習における数値に対応する小数点位置と、ｉ−１回目の学習における数値に対応する小数点位置との間の変化に基づいて、浮動小数点数による学習から固定小数点数による学習へ切り替える点が、第１実施形態と異なる。
【００８６】
第２実施形態の第１学習部２２は、浮動小数点数による学習がＫ回繰り返される毎に、上記式（３）に従って、浮動小数点数による学習で得られた各層のパラメータＷｌに応じた小数点位置Ｑ（Ｗｌ）を算出する。Ｋは、例えばユーザによって予め設定される。また、第１学習部２２は、浮動小数点数による学習から固定小数点数による学習へ切り替える際に用いるデータを保持するために、例えば、浮動小数点数による学習がＫ回繰り返される毎に、パラメータを外部の記憶部（図示省略）に格納する。
【００８７】
具体的には、第１学習部２２は、浮動小数点数による学習がＫ回繰り返される毎に、ｉ回目の学習で得られた各層のパラメータＷｌの小数点位置Ｑ（Ｗｌ，ｉ）と、ｉ−１回目の学習で得られた各層のパラメータＷｌの小数点位置Ｑ（Ｗｌ，ｉ−１）とを算出する。
【００８８】
次に、第１学習部２２は、浮動小数点数による学習がＫ回繰り返される毎に、各層のパラメータＷｌについての、小数点位置Ｑ（Ｗｌ，ｉ−１）と小数点位置Ｑ（Ｗｌ，ｉ）との間の差の絶対値の総和ＳＵＭを算出する。総和ＳＵＭは、以下の式（７）によって算出される。
【００８９】
【数２】
2019211985.tif 000004
（７）
【００９０】
そして、第１学習部２２は、浮動小数点数による学習がＫ回繰り返される毎に、以下の式（８）に従って、学習処理による小数点位置の変動を表すΔＳＵＭを算出する。
【００９１】
ΔＳＵＭ＝ＳＵＭ／Ｋ
（８）
【００９２】
そして、第１学習部２２は、以下の式（９）に従って、今回の浮動小数点数による学習がＫ回繰り返された際に算出されたΔＳＵＭＸから、前回の浮動小数点数による学習がＫ回繰り返された際に算出されたΔＳＵＭＹを引いた差Ｄｉｆｆを算出する。
【００９３】
Ｄｉｆｆ＝ΔＳＵＭＸ−ΔＳＵＭＹ
（９）
【００９４】
そして、第１学習部２２は、算出された差Ｄｉｆｆが閾値より大きい場合に、固定小数点数である数値を用いてＣＮＮを学習させる。また、第１学習部２２は、算出された差Ｄｉｆｆが閾値以下である場合に、浮動小数点数である数値を用いてのＣＮＮの学習を継続する。本実施形態では、閾値として０が設定される場合を例に説明する。
【００９５】
今回のΔＳＵＭＸと前回のΔＳＵＭＹとの間の差Ｄｉｆｆが０以下である場合は、小数点位置の変動が小さくなっていることを表し、理想の小数点位置に近づいている状態である。一方、今回のΔＳＵＭＸと前回のΔＳＵＭＹとの間の差Ｄｉｆｆが０より大きい場合は、小数点位置の変動が増加し始めたことを表し、理想の小数点位置から遠ざかる状態である。
【００９６】
そのため、第２実施形態の第１学習部２２は、算出された差Ｄｉｆｆが０より大きい場合に、固定小数点数である数値を用いたＣＮＮの学習に切り替える。なお、差Ｄｉｆｆが０より大きい場合には、今回の浮動小数点数による学習がＫ回繰り返された際に求められたパラメータよりも、前回の浮動小数点数による学習がＫ回繰り返された際に求められたパラメータの方が理想に近いと考えられる。そのため、第１学習部２２は、前回の浮動小数点数による学習がＫ回繰り返された際に求められたパラメータを外部の記憶部（図示省略）から読み出し、読み出したパラメータを用いて、固定小数点数である数値を用いてＣＮＮを学習させる。
【００９７】
次に、第２実施形態に係る情報処理装置１０の作用について説明する。情報処理装置１０へ複数の学習用データが入力されると、データ記憶部２０に複数の学習用データが格納される。そして、情報処理装置１０は、学習開始の指示信号を受け付けると、上記図８に示す学習処理ルーチンを実行する。上記図８のステップＳ１０の事前学習処理は、図１２に示す事前学習処理ルーチンによって実現される。
【００９８】
ステップＳ２１３において、第２実施形態の第１学習部２２は、浮動小数点による学習の繰り返し回数ｐが、予め設定された繰り返し回数Ｋと等しい場合に、ステップＳ２１４へ進む。
【００９９】
ステップＳ２１４において、第１学習部２２は、ｉ−１回目の学習で得られた各層のパラメータＷｌの小数点位置Ｑ（Ｗｌ，ｉ−１）と、ｉ回目の学習で得られた各層のパラメータＷｌの小数点位置Ｑ（Ｗｌ，ｉ）とを算出する。
【０１００】
ステップＳ２１５において、第１学習部２２は、上記ステップＳ２１４で算出された、小数点位置Ｑ（Ｗｌ，ｉ−１）と小数点位置Ｑ（Ｗｌ，ｉ）とに基づいて、上記式（７）に従って、小数点位置の差の絶対値の総和ＳＵＭを算出する。また、ステップＳ２１５において、第１学習部２２は、上記式（８）に従って、学習処理による小数点位置の変動を表すΔＳＵＭＸを算出する。
【０１０１】
ステップＳ２１６において、第１学習部２２は、上記式（９）に従って、上記ステップＳ２１５で算出されたΔＳＵＭＸから、前回の浮動小数点数による学習がＫ回繰り返された際に算出されたΔＳＵＭＹを引いた差Ｄｉｆｆを算出する。
【０１０２】
ステップＳ２１７において、第１学習部２２は、上記ステップＳ２１６で算出された差Ｄｉｆｆが０より大きいか否かを判定する。上記ステップＳ２１６で算出された差Ｄｉｆｆが０より大きい場合には、図１２に示す事前学習処理ルーチンが終了し、固定小数点数である数値を用いてのＣＮＮの学習が開始される。一方、上記ステップＳ２１６で算出された差Ｄｉｆｆが０以下の場合には、ステップＳ１２へ戻り、浮動小数点数である数値を用いてのＣＮＮの学習が継続される。
【０１０３】
以上説明したように、第２実施形態に係る情報処理装置は、浮動小数点数による学習が繰り返される毎に、浮動小数点数によるｉ回目の数値に応じた小数点位置とｉ−１回目の学習の数値に応じた小数点位置との間の差の絶対値を算出する。そして、今回の浮動小数点数による学習が繰り返された際に算出された差の絶対値から、前回の浮動小数点数による学習が繰り返された際に算出された差の絶対値を引いた値が閾値より大きい場合に、固定小数点数である数値を用いて学習モデルを学習させる。これにより、浮動小数点数による学習処理から固定小数点数による学習処理への切り替えを、適切なタイミングで実行することができる。
【０１０４】
なお、上記では、各プログラムが記憶部に予め記憶（インストール）されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリ等の記録媒体に記録された形態で提供することも可能である。
【０１０５】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【０１０６】
次に、各実施形態の変形例を説明する。
【０１０７】
上記実施形態では、学習モデルがＣＮＮである場合を例に説明したが、これに限定されるものではない。例えば、学習モデルは他の種類のニューラルネットワークであってもよい。
【０１０８】
また、上記実施形態では、浮動小数点数で表現される数値及び固定小数点数で表現される数値が、ＣＮＮの各層のパラメータである場合を例に説明したが、これに限定されるものではない。例えば、学習用データを浮動小数点数又は固定小数点数で表現し、浮動小数点数によって表現された学習用データを用いてパラメータを学習させた後に、固定小数点数によって表現された学習用データを用いてパラメータを学習させてもよい。
【０１０９】
また、上記実施形態では、固定小数点数によって学習処理を行う際には、固定小数点数である数値を用いての処理に関する統計情報の一例であるオーバーフロー率を用いる場合を例に説明したが、これに限定されるものではない。例えば、統計情報の一例として、演算回数の総数に対するアンダーフローが発生した演算回数を表すアンダーフロー率を用いるようにしてもよい。
【０１１０】
上記実施形態では、固定小数点数によって学習処理を行う際に、小数点位置を動的に変更する場合を例に説明したが、これに限定されるものではない。固定小数点数によって学習処理を行う際には、小数点位置を変更せずに、学習処理を行うようにしてもよい。
【０１１１】
また、上記第２実施形態では、今回のΔＳＵＭＸと前回のΔＳＵＭＹとの間の差Ｄｉｆｆが０以下である場合に、浮動小数点数による学習から固定小数点数による学習へ切り替える場合を例に説明したが、これに限定されるものではない。浮動小数点数による学習から固定小数点数による学習への切り替えに関する判定方法は、浮動小数点数を用いた学習による小数点位置の変化がある程度収束したことを判定できる方法であれば、どのような方法であってもよい。例えば、ｉ−１回目の小数点位置とｉ回目の小数点位置との差が閾値以下となった場合に、浮動小数点数による学習から固定小数点数による学習へ切り替えるようにしてもよい。
【０１１２】
以上の各実施形態に関し、更に以下の付記を開示する。
【０１１３】
（付記１）
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させ、
前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる、
処理をコンピュータに実行させるための学習プログラム。
【０１１４】
（付記２）
前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記浮動小数点数である数値を用いた学習における前記数値に応じた小数点位置を算出し、算出された前記小数点位置に基づいて、前記浮動小数点数である数値を固定小数点数である数値へ変換し、前記固定小数点数である数値を用いて前記学習モデルを学習させる、
付記１に記載の学習プログラム。
【０１１５】
（付記３）
前記数値は、前記学習モデルのパラメータ及び前記学習モデルの学習用データの少なくとも１つである、
付記１又は付記２に記載の学習プログラム。
【０１１６】
（付記４）
前記所定回数は、予め設定された回数である、
付記１〜付記３の何れか１項に記載の学習プログラム。
【０１１７】
（付記５）
前記浮動小数点数によるｉ−１回目の学習における前記数値に応じた小数点位置と、前記浮動小数点数によるｉ回目の学習における前記数値に応じた小数点位置とを算出し、
前記ｉ回目の学習における前記小数点位置と前記ｉ−１回目の学習における前記小数点位置との間の変化に基づいて、前記浮動小数点数による学習から前記固定小数点数による学習へ切り替える、
付記１〜付記４の何れか１項に記載の学習プログラム。
【０１１８】
（付記６）
前記浮動小数点数による学習が繰り返される毎に、
前記ｉ回目の学習における前記小数点位置と前記ｉ−１回目の学習における前記小数点位置との間の差の絶対値を前記変化として算出し、
今回の前記浮動小数点数による学習が繰り返された際に算出された前記差の絶対値から、前回の前記浮動小数点数による学習が繰り返された際に算出された前記差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数である数値を用いて前記学習モデルを学習させる、
付記５に記載の学習プログラム。
【０１１９】
（付記７）
前記学習モデルは、ニューラルネットワークであり、
前記浮動小数点数である数値を用いた学習における前記数値に応じた前記小数点位置を算出する際に、前記ニューラルネットワークの各層について、前記層のパラメータベクトルの各要素から絶対値が最大である要素を選択し、選択された最大の前記要素に応じて、前記パラメータベクトルの各要素の値の小数点位置を算出する、
付記２、付記５、及び付記６の何れか１項に記載の学習プログラム。
【０１２０】
（付記８）
前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記固定小数点数である数値を用いての処理に関する統計情報に基づいて、前記固定小数点数における小数点位置を変更し、前記学習モデルを学習させる、
付記１〜付記７の何れか１項に記載の学習プログラム。
【０１２１】
（付記９）
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させ、
前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる、
処理をコンピュータに実行させる学習方法。
【０１２２】
（付記１０）
前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記浮動小数点数である数値を用いた学習における前記数値に応じた小数点位置を算出し、算出された前記小数点位置に基づいて、前記浮動小数点数である数値を固定小数点数である数値へ変換し、前記固定小数点数である数値を用いて前記学習モデルを学習させる、
付記９に記載の学習方法。
【０１２３】
（付記１１）
前記数値は、前記学習モデルのパラメータ及び前記学習モデルの学習用データの少なくとも１つである、
付記９又は付記１０に記載の学習方法。
【０１２４】
（付記１２）
前記所定回数は、予め設定された回数である、
付記９〜付記１１の何れか１項に記載の学習方法。
【０１２５】
（付記１３）
前記浮動小数点数によるｉ−１回目の学習における前記数値に応じた小数点位置と、前記浮動小数点数によるｉ回目の学習における前記数値に応じた小数点位置とを算出し、
前記ｉ回目の学習における前記小数点位置と前記ｉ−１回目の学習における前記小数点位置との間の変化に基づいて、前記浮動小数点数による学習から前記固定小数点数による学習へ切り替える、
付記９〜付記１２の何れか１項に記載の学習方法。
【０１２６】
（付記１４）
前記浮動小数点数による学習が繰り返される毎に、
前記ｉ回目の学習における前記小数点位置と前記ｉ−１回目の学習における前記小数点位置との間の差の絶対値を前記変化として算出し、
今回の前記浮動小数点数による学習が繰り返された際に算出された前記差の絶対値から、前回の前記浮動小数点数による学習が繰り返された際に算出された前記差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数である数値を用いて前記学習モデルを学習させる、
付記１３に記載の学習方法。
【０１２７】
（付記１５）
前記学習モデルは、ニューラルネットワークであり、
前記浮動小数点数である数値を用いた学習における前記数値に応じた前記小数点位置を算出する際に、前記ニューラルネットワークの各層について、前記層のパラメータベクトルの各要素から絶対値が最大である要素を選択し、選択された最大の前記要素に応じて、前記パラメータベクトルの各要素の値の小数点位置を算出する、
付記１０、付記１３、及び付記１４の何れか１項に記載の学習方法。
【０１２８】
（付記１６）
前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記固定小数点数である数値を用いての処理に関する統計情報に基づいて、前記固定小数点数における小数点位置を変更し、前記学習モデルを学習させる、
付記９〜付記１５の何れか１項に記載の学習方法。
【０１２９】
（付記１７）
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させる第１学習部と、
前記第１学習部による前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる第２学習部と、
を含む情報処理装置。
【０１３０】
（付記１８）
前記第２学習部は、前記固定小数点数である数値を用いて前記学習モデルを学習させる際に、前記浮動小数点数である数値を用いた学習における前記数値に応じた小数点位置を算出し、算出された前記小数点位置に基づいて、前記浮動小数点数である数値を固定小数点数である数値へ変換し、前記固定小数点数である数値を用いて前記学習モデルを学習させる、
付記１７に記載の情報処理装置。
【０１３１】
（付記１９）
前記数値は、前記学習モデルのパラメータ及び前記学習モデルの学習用データの少なくとも１つである、
付記１７又は付記１８に記載の情報処理装置。
【０１３２】
（付記２０）
所定の学習モデルを繰り返し学習させる際に、浮動小数点数である数値を用いて前記学習モデルを所定回数繰り返し学習させ、
前記浮動小数点数である数値を用いての学習後に、該学習により得られた前記浮動小数点数である数値に対応する、固定小数点数である数値を用いて前記学習モデルを繰り返し学習させる、
処理をコンピュータに実行させるための学習プログラムを記憶した記憶媒体。
【符号の説明】
【０１３３】
１０   情報処理装置
２０   データ記憶部
２２   第１学習部
２４   第１パラメータ記憶部
２６   第２学習部
２８   第２パラメータ記憶部
５０   コンピュータ
５１   ＣＰＵ
５３   記憶部
５９   記録媒体
６０   学習プログラム
６１   第１学習プロセス
６２   第２学習プロセス
６３   データ記憶領域
６４   第１パラメータ記憶領域
６５   第２パラメータ記憶領域
【図１】
2019211985.tif 000005
【図２】
2019211985.tif 000006
【図３】
2019211985.tif 000007
【図４】
2019211985.tif 000008
【図５】
2019211985.tif 000009
【図６】
2019211985.tif 000010
【図７】
2019211985.tif 000011
【図８】
2019211985.tif 000012
【図９】
2019211985.tif 000013
【図１０】
2019211985.tif 000014
【図１１】
2019211985.tif 000015
【図１２】
2019211985.tif 000016
【手続補正書】
【提出日】平成30年12月12日(2018.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新する第１学習部と、
前記第１学習部による前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数のパラメータに変換し、固定小数点数で表された学習用データを用いて前記学習モデルを学習させる第２学習部と、
を含む情報処理装置。
【請求項２】
前記第２学習部は、前記浮動小数点数で表されたパラメータに応じた小数点位置を算出し、算出された前記小数点位置に基づいて、前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータへ変換する、
請求項１に記載の情報処理装置。
【請求項３】
前記第２学習部は、前記浮動小数点数で表された学習用データを用いた学習が複数回行われる毎に、前記浮動小数点数で表された学習用データを用いたｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と、前記浮動小数点数で表された学習用データを用いたｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とを算出し、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置との間の変化に基づいて、前記浮動小数点数で表された学習用データを用いた学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記第２学習部は、前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置との間の第１差の絶対値を算出し、
前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とｉ−２回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置との間の第２差の絶対値を算出し、
前記第１差の絶対値から、前記第２差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
請求項３に記載の情報処理装置。
【請求項５】
前記学習モデルは、ニューラルネットワークであり、
前記第２学習部は、前記浮動小数点数で表された学習用データを用いた学習における前記浮動小数点数で表されたパラメータに対応する前記小数点位置を算出する際に、前記ニューラルネットワークの各層について、前記層のパラメータベクトルの要素のうち最大の絶対値を有する要素を選択し、前記選択された要素に対応する前記小数点位置を算出する、
請求項２〜請求項４の何れか１項に記載の情報処理装置。
【請求項６】
前記第２学習部は、前記固定小数点数で表された学習用データを用いて前記学習モデルを学習させる際に、前記固定小数点数で表された学習用データを用いての処理に関する統計情報に基づいて、前記小数点位置を決定し、前記学習モデルを学習させる、
請求項２〜請求項５の何れか１項に記載の情報処理装置。
【請求項７】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新し、
前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、  固定小数点数で表された学習用データを用いて前記固定小数点数で表されたパラメータを有する前記学習モデルを学習させる、
処理をコンピュータに実行させる学習方法。
【請求項８】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新し、
前記浮動小数点数で表された学習用データを用いて学習させた後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、
固定小数点数で表された学習用データを用いて前記固定小数点数で表されたパラメータを有する前記学習モデルを学習させる
処理をコンピュータに実行させるための学習プログラム。
【手続補正書】
【提出日】平成31年4月3日(2019.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新する第１学習部と、
前記第１学習部による前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、固定小数点数で表された学習用データを用いて前記学習モデルを学習させる第２学習部と、
を含み、
前記浮動小数点数で表されたパラメータは、複数の要素を含むパラメータベクトルであり、
前記浮動小数点数で表されたパラメータの前記固定小数点数で表されたパラメータへの変換において、前記第２学習部は、前記パラメータベクトルに含まれる前記複数の要素のうち最大の絶対値を有する第１要素を選択し、式（１）
ＮＷｌ＝Ｃｅｉｌ（ｌｏｇ２第１要素の絶対値）                  ・・・式（１）
（Ｃｅｉｌは、最も近い整数に切り上げられた数値を意味する）
に従って整数ＮＷｌを算出し、算出された前記整数ＮＷｌと前記固定小数点数で表された学習用データのビット幅ＷＬを用いて、式（２）
Ｑ（Ｗｌ）＝Ｎｗｌ−ＷＬ−１                                  ・・・式（２）
に従って前記浮動小数点数で表されたパラメータに応じた小数点位置Ｑ（Ｗｌ）を算出し、算出された前記小数点位置Ｑ（Ｗｌ）に基づいて、前記浮動小数点数で表されたパラメータを前記固定小数点数で表されたパラメータへ変換する
ことを特徴とする情報処理装置。
【請求項２】
前記第２学習部は、前記浮動小数点数で表された学習用データを用いた学習が複数回行われる毎に、前記浮動小数点数で表された学習用データを用いたｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と、前記浮動小数点数で表された学習用データを用いたｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とを算出し、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置との間の変化に基づいて、前記浮動小数点数で表された学習用データを用いた学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
請求項１に記載の情報処理装置。
【請求項３】
前記第２学習部は、前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置との間の第１差の絶対値を算出し、
前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とｉ−２回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置との間の第２差の絶対値を算出し、
前記第１差の絶対値から、前記第２差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
請求項２に記載の情報処理装置。
【請求項４】
前記第２学習部は、前記固定小数点数で表された学習用データを用いて前記学習モデルを学習させる際に、前記固定小数点数で表された学習用データを用いた前記学習モデルの前記学習に関する統計情報に基づいて、前記小数点位置を決定し、前記学習モデルを学習させる、
請求項１〜請求項３の何れか１項に記載の情報処理装置。
【請求項５】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新し、
前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、
固定小数点数で表された学習用データを用いて前記固定小数点数で表されたパラメータを有する前記学習モデルを学習する、
処理をコンピュータが実行する学習方法であって、
前記浮動小数点数で表されたパラメータは、複数の要素を含むパラメータベクトルであり、
前記浮動小数点数で表されたパラメータの前記固定小数点数で表されたパラメータへの変換において、前記コンピュータは、前記パラメータベクトルに含まれる前記複数の要素のうち最大の絶対値を有する第１要素を選択し、式（１）
ＮＷｌ＝Ｃｅｉｌ（ｌｏｇ２第１要素の絶対値）                  ・・・式（１）
（Ｃｅｉｌは、最も近い整数に切り上げられた数値を意味する）
に従って整数ＮＷｌを算出し、算出された前記整数ＮＷｌと前記固定小数点数で表された学習用データのビット幅ＷＬを用いて、式（２）
Ｑ（Ｗｌ）＝Ｎｗｌ−ＷＬ−１                                  ・・・式（２）
に従って前記浮動小数点数で表されたパラメータに応じた小数点位置Ｑ（Ｗｌ）を算出し、算出された前記小数点位置Ｑ（Ｗｌ）に基づいて、前記浮動小数点数で表されたパラメータを前記固定小数点数で表されたパラメータへ変換する
ことを特徴とするコンピュータが実行する学習方法。
【請求項６】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新し、
前記浮動小数点数で表された学習用データを用いて学習させた後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、
固定小数点数で表された学習用データを用いて前記固定小数点数で表されたパラメータを有する前記学習モデルを学習する
処理をコンピュータに実行させるための学習プログラムであって、
前記浮動小数点数で表されたパラメータは、複数の要素を含むパラメータベクトルであり、
前記浮動小数点数で表されたパラメータの前記固定小数点数で表されたパラメータへの変換において、前記コンピュータは、前記パラメータベクトルに含まれる前記複数の要素のうち最大の絶対値を有する第１要素を選択し、式（１）
ＮＷｌ＝Ｃｅｉｌ（ｌｏｇ２第１要素の絶対値）                  ・・・式（１）
（Ｃｅｉｌは、最も近い整数に切り上げられた数値を意味する）
に従って整数ＮＷｌを算出し、算出された前記整数ＮＷｌと前記固定小数点数で表された学習用データのビット幅ＷＬを用いて、式（２）
Ｑ（Ｗｌ）＝Ｎｗｌ−ＷＬ−１                                  ・・・式（２）
に従って前記浮動小数点数で表されたパラメータに応じた小数点位置Ｑ（Ｗｌ）を算出し、算出された前記小数点位置Ｑ（Ｗｌ）に基づいて、前記浮動小数点数で表されたパラメータを前記固定小数点数で表されたパラメータへ変換する
ことを特徴とする学習プログラム。
【請求項７】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新する第１学習部と、
前記第１学習部による前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、固定小数点数で表された学習用データを用いて前記学習モデルを学習させる第２学習部と、
を含み、
前記第２学習部は、前記浮動小数点数で表された学習用データを用いた学習が複数回行われる毎に、前記浮動小数点数で表された学習用データを用いたｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と、前記浮動小数点数で表された学習用データを用いたｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とを算出し、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の変化に基づいて、前記浮動小数点数で表された学習用データを用いた学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
ことを特徴とする情報処理装置。
【請求項８】
前記第２学習部は、前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の第１差の絶対値を算出し、
前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置とｉ−２回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の第２差の絶対値を算出し、
前記第１差の絶対値から、前記第２差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新し、
前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、固定小数点数で表された学習用データを用いて前記学習モデルを学習する
処理をコンピュータが実行する学習方法であって、
前記コンピュータは、
前記浮動小数点数で表された学習用データを用いた学習が複数回行われる毎に、前記浮動小数点数で表された学習用データを用いたｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と、前記浮動小数点数で表された学習用データを用いたｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とを算出し、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の変化に基づいて、前記浮動小数点数で表された学習用データを用いた学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
ことを特徴とするコンピュータが実行する学習方法。
【請求項１０】
前記コンピュータは、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の第１差の絶対値を算出し、
前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置とｉ−２回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の第２差の絶対値を算出し、
前記第１差の絶対値から、前記第２差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
ことを特徴とする請求項９に記載のコンピュータが実行する学習方法。
【請求項１１】
所定の学習モデルを学習させる際に、浮動小数点数で表された学習用データを用いて前記学習モデルを学習させることにより、前記学習モデルの浮動小数点数で表されたパラメータを更新し、
前記浮動小数点数で表された学習用データを用いた学習後に、該学習により更新された前記浮動小数点数で表されたパラメータを固定小数点数で表されたパラメータに変換し、固定小数点数で表された学習用データを用いて前記学習モデルを学習する
処理をコンピュータに実行させるための学習プログラムであって、
前記コンピュータは、
前記浮動小数点数で表された学習用データを用いた学習が複数回行われる毎に、前記浮動小数点数で表された学習用データを用いたｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置と、前記浮動小数点数で表された学習用データを用いたｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた小数点位置とを算出し、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の変化に基づいて、前記浮動小数点数で表された学習用データを用いた学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
ことを特徴とする学習プログラム。
【請求項１２】
前記コンピュータは、
前記ｉ回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置と前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の第１差の絶対値を算出し、
前記ｉ−１回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置とｉ−２回目の学習における前記浮動小数点数で表されたパラメータに応じた前記小数点位置との間の第２差の絶対値を算出し、
前記第１差の絶対値から、前記第２差の絶対値を引いた値が閾値より大きい場合に、ｉ＋１回目の学習から前記固定小数点数で表された学習用データを用いた学習へ切り替える、
ことを特徴とする請求項１１に記載の学習プログラム。