(57)【要約】【課題】学習モデルの学習結果の精度低下を抑制する。【解決手段】所定の学習モデルを学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定する第１決定部１４ａと、前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する第２決定部１４ｂと、を備える。【選択図】図１
2020201646.tif 000002
【特許請求の範囲】
【請求項１】
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定する第１決定部と、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する第２決定部と、を備える、
演算処理装置。
【請求項２】
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新する更新部、を備え、
前記第２決定部は、更新される前記小数点位置に対して、前記オフセット量を加算する、
請求項１に記載の演算処理装置。
【請求項３】
前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第１決定部は、前記学習の進行度の変化を検出した場合に、前記オフセット情報に基づき、前記オフセット量を決定する、
請求項１又は請求項２に記載の演算処理装置。
【請求項４】
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出する検出部を備え、
前記第１決定部は、前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
請求項１又は請求項２に記載の演算処理装置。
【請求項５】
前記変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第１決定部は、前記オフセット情報に基づき、前記オフセット量を決定する、
請求項４に記載の演算処理装置。
【請求項６】
前記検出部は、前記学習の進行度の変化を検出した場合に、前記所定回数の繰り返しにおける前記変動量の検出を行ない、
前記第１決定部は、前記検出回数に基づき決定した前記オフセット量を、前記検出部が次に前記学習の進行度の変化を検出するまで維持する、
請求項４又は請求項５に記載の演算処理装置。
【請求項７】
前記学習の進行度は、学習率、前記学習の損失関数、前記学習モデルの認識精度、前記学習の量子化誤差、及び、前記学習の繰り返し回数、のいずれか１つ又は２以上の組み合わせである、
請求項１〜６のいずれか１項に記載の演算処理装置。
【請求項８】
前記学習モデルは、ニューラルネットワークであり、
前記第２決定部は、前記ニューラルネットワークに含まれる複数の層の各々の演算に利用する固定小数点数データの小数点位置を、前記オフセット量に基づいて決定する、
請求項１〜７のいずれか１項に記載の演算処理装置。
【請求項９】
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御プログラム。
【請求項１０】
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、制御方法、及び制御プログラムに関する。
【背景技術】
【０００２】
演算処理装置において、固定小数点数データに対する命令実行後の当該データ中のビット分布についての統計情報に基づき、当該データの小数点位置をシフトさせる手法が知られている。この手法により、例えば、深層学習に係る演算処理を固定小数点数で精度よく実行することができ、回路規模と消費電力とを削減することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−８４９７５号公報
【特許文献２】特開２００８−０５９２８７号公報
【特許文献３】特開平４−１９０３９９号公報
【特許文献４】特開２０１８−１２４６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
演算処理装置に対して、ニューラルネットワーク等の学習モデルのパラメータを学習させる場合、学習の統計情報に基づき推定される小数点位置と、実際のパラメータや出力データの分布との間にズレが発生する場合がある。当該ズレは、例えば、学習の序盤ほど変化が大きい。
【０００５】
当該ズレが発生する場合、統計情報に基づく小数点位置の更新によって、ズレが小さい場合と比較して固定小数点の飽和による量子化誤差が増大し、学習が不安定になる、換言すれば、学習結果の精度が低下することがある。
【０００６】
一つの側面では、本発明は、学習モデルの学習結果の精度低下を抑制することを目的の１つとする。
【課題を解決するための手段】
【０００７】
１つの側面では、演算処理装置は、第１決定部と、第２決定部とを備えてよい。前記第１決定部は、所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定してよい。前記第２決定部は、前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定してよい。
【発明の効果】
【０００８】
１つの側面では、学習モデルの学習結果の精度低下を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る学習装置の機能構成例を示すブロック図である。
【図２】データ記憶部が記憶する情報の一例を示す図である。
【図３】Convolutional Neural Network（ＣＮＮ）に対する深層学習の一例を説明するための図である。
【図４】ＣＮＮの各層における学習計算の一例を示す図である。
【図５】パラメータ記憶部が記憶する情報が更新される様子の一例を示す図である。
【図６】ＣＮＮの各層における変数のデータ表現例を示す図である。
【図７】比較例に係る学習装置による処理を示す図である。
【図８】非符号となる最上位ビットの分布を表すヒストグラムの一例を示す図である。
【図９】小数点位置の更新処理の一例を示す図である。
【図１０】小数点位置の更新処理の一例を示す図である。
【図１１】フォワードにおけるＱ値の決定と繰り返しとの関係の一例を示す図である。
【図１２】バックワードにおけるＱ値の決定と繰り返しとの関係の一例を示す図である。
【図１３】Integer Word Length（ＩＷＬ）の一例を説明する図である。
【図１４】小数点位置にオフセットを設ける場合の一例を説明する図である。
【図１５】情報記憶部が記憶する情報の一例を示す図である。
【図１６】学習率に応じたＩＷＬの変動例を示す図である。
【図１７】学習率に応じたＩＷＬの変動例を示す図である。
【図１８】固定小数点１６ビットにおけるオフセットごとの認識精度の一例を示す図である。
【図１９】固定小数点１６ビット及び固定小数点８ビットを混在させ、学習の進捗に応じてオフセットを変化させた場合の認識精度の一例を示す図である。
【図２０】第１実施形態に係る学習装置の動作例を説明するフローチャートである。
【図２１】図２０に示すバッチの学習処理の動作例を説明するフローチャートである。
【図２２】第２実施形態に係る学習装置の機能構成例を示すブロック図である。
【図２３】情報記憶部が記憶する情報の一例を示す図である。
【図２４】第２実施形態に係るオフセットの決定処理の一例を説明する図である。
【図２５】第２実施形態に係る学習装置の動作例を説明するフローチャートである。
【図２６】図２５に示すオフセット設定処理の動作例を説明するフローチャートである。
【図２７】第１及び第２実施形態に係るコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１１】
〔１〕第１実施形態
〔１−１〕機能構成例
図１は、第１実施形態の一例としての学習装置１の機能構成例を示すブロック図である。学習装置１は、深層学習に係る演算処理等の種々の演算処理を行なう演算処理装置（図示省略）、を備える情報処理装置の一例である。学習装置１は、例えば、ニューラルネットワーク等の学習モデルのパラメータを学習してよい。
【００１２】
図１に示すように、学習装置１は、例示的に、データ記憶部１１、学習部１２、パラメータ記憶部１３、決定部１４、及び情報記憶部１５を備えてよい。
【００１３】
データ記憶部１１は、所定の学習モデルを学習させるための学習用データを格納する。学習用データは、図２に例示するように、テーブルの形式で格納されてもよいし、ＤＢ（Database）や配列等の種々の形式で格納されてもよい。
【００１４】
学習用データは、入力データとその入力データに対応する正解データとの組み合わせであってよい。各データは、識別情報を示すデータＩＤにより識別可能である。一例として、データ記憶部１１は、データＩＤ「00001」と、入力データ「Ａ１」と正解データ「Ｂ１」とが対応付けられたエントリを格納してよい。入力データの非限定的な一例としては、ＲＧＢの要素を含む画像データが挙げられる。
【００１５】
学習装置１は、データ記憶部１１に格納された学習用データを用いて、学習モデルの一例であるDeep Neural Network（ＤＮＮ）、例えばConvolutional Neural Network（ＣＮＮ）２０を学習させる。図３は、ＣＮＮ２０に対する深層学習の一例を説明するための図である。
【００１６】
図３に例示するＣＮＮ２０は、Ｃｏｎｖ＿１，Ｐｏｏｌ＿１，Ｃｏｎｖ＿２，Ｐｏｏｌ＿２，ｆｃ１，及びｆｃ２の層（レイヤ）２１を含んでよい。図３に示すように、ＣＮＮ２０に対する深層学習処理では、入力データに対応する正解データがＣＮＮ２０に与えられる。学習装置１は、ＣＮＮ２０に対し入力データを図３の紙面左方向から入力し、各層２１の処理結果を紙面右方向へ伝播させる（順伝播）。そして、学習装置１は、入力データに対する出力データと正解データとを比較し、結果の差分を紙面左方向へ伝播させる（逆伝播）。
【００１７】
例えば、入力データに対して、Ｃｏｎｖ＿１のパラメータの積和演算を実行することで、Ｃｏｎｖ＿１層の畳み込み演算が実行される。Ｃｏｎｖ＿１，Ｐｏｏｌ＿１，Ｃｏｎｖ＿２，Ｐｏｏｌ＿２，ｆｃ１，及びｆｃ２の各層２１はパラメータを保持している。ＣＮＮ２０の最上位の層２１（図３に示すｆｃ２）まで演算が実行されると、演算結果が正解データと比較され、比較結果を基に各層２１のパラメータが更新される。正解データに基づく逆伝播におけるパラメータの更新は、逆伝播処理と称されてもよい。
【００１８】
ＣＮＮ２０の各層２１では、図４に例示する計算が行なわれる。図４に示すように、学習計算が行なわれる際、入力データ又は前層２１からの出力データである「ｂｏｔｔｏｍ」と、パラメータである「Ｗｅｉｇｈｔ」との積和演算が実行される。そして、積和演算結果と「Ｂｉａｓ」との和に応じて、出力データ「ｔｏｐ」が出力される。
【００１９】
なお、ＣＮＮ２０の学習及び推論等の処理は、例えば、動的固定小数点プロセッサを備えるLarge Scale Integration（ＬＳＩ）により実行されてよい。
【００２０】
ここで、学習装置１は、固定小数点数データを用いてＣＮＮ２０を繰り返し学習させる。固定小数点数は、小数点位置（桁）を固定して表された数値を意味し、固定小数点数データは、例えば、ＣＮＮ２０の学習において各層２１で扱われる変数や、各層２１の演算結果等を意味してよい。なお、固定小数点数の初期位置（初期小数点位置）は、例えば、浮動小数点数である数値を用いてＣＮＮ２０を１回又は複数回学習させた学習結果（試行結果）に基づき学習装置１が決定してもよいし、ユーザにより指定されてもよい。
【００２１】
なお、例示的に、学習処理のミニバッチ１回を１回の繰り返しとする。ミニバッチとは、画像データを複数同時に学習処理にかけることをいう。例えば、ミニバッチが「１６」とは、１６枚の画像データを同時に学習処理にかけることを意味する。このため、例えば、６５５３６枚の画像データがある場合には、４０９６イタレーションで全画像データを入力したことになる。イタレーション（Iteration）は、深層学習におけるミニバッチの実行回数を意味する。
【００２２】
学習部１２は、データ記憶部１１に格納された学習用データを固定小数点数によって表現し、固定小数点数である数値を用いてＣＮＮ２０を学習させ、学習結果としてのＣＮＮ２０の各層２１のパラメータＷＬを得る。なお、ＬはＣＮＮ２０の各層２１を識別するためのインデックスである。パラメータＷＬは、以下の式（１）に例示されるパラメータベクトルである。なお、添え字「Ｗｎ」は、パラメータＷＬのベクトル内の要素数を表す。
【００２３】
ＷＬ＝｛Ｗ０，Ｌ，Ｗ１，Ｌ，・・・，ＷＷｎ，Ｌ｝                        （１）
【００２４】
図５に例示するように、パラメータ記憶部１３のパラメータベクトルは、学習の繰り返しごとに更新後、上書きされる。
【００２５】
決定部１４は、ＣＮＮ２０の学習処理により得られる統計情報に基づき、固定小数点数の小数点位置を決定する。決定部１４が決定した小数点位置は、学習部１２によるＣＮＮ２０の学習に用いられる。
【００２６】
決定部１４は、例示的に、オフセット決定部１４ａ及びInteger Word Length（ＩＷＬ）決定部１４ｂを備えてよい。
【００２７】
情報記憶部１５は、記憶部の一例であり、決定部１４による小数点位置の決定に利用される、後述するオフセットに関する情報を記憶する。決定部１４及び情報記憶部１５の詳細は後述する。
【００２８】
〔１−２〕固定小数点数の小数点位置について
図６は、ＣＮＮ２０の各層２１における変数（パラメータ）のデータ表現例を示す図である。深層学習においてパラメータを学習させる際には、膨大な計算量により計算負荷及びメモリ負荷等の負荷がかかり、パラメータの学習時間が長くなる。
【００２９】
ここで、第１実施形態においては、パラメータの学習時間を短縮させるために、上述のように、学習の際に用いる数値を、浮動小数点数（例えば３２ビット浮動小数点数）ではなく固定小数点数（例えば１６ビット又は８ビット固定小数点数等）によって表現する。
【００３０】
学習の際に用いる数値を固定小数点数によって表現することで、図６に示すように、データ量を削減でき、計算負荷及びメモリ負荷等の負荷を低減できるため、パラメータの学習時間を短縮できる。
【００３１】
しかし、固定小数点数は、浮動小数点数に比べ表現可能な数値範囲が狭い。このため、固定小数点数によって表現された数値による学習処理では、学習結果の精度が低くなることがある。
【００３２】
そこで、深層学習の学習中に統計情報を取得して、学習に用いる変数の小数点位置を調整することが考えられる。図７は、比較例に係る学習装置１００による処理を示す図である。学習装置１００は、図７に例示するように、以下の（Ａ）〜（Ｃ）の処理を学習終了まで実行する。
【００３３】
（Ａ）学習装置１００は、所定回数（例えばＫ回；Ｋは１以上の整数）のミニバッチを学習中に、各レイヤ２１０の各変数の統計情報を保存する（図７の符号Ａ参照）。
【００３４】
ここで、統計情報は、例えば、以下のいずれか、又は、これらの組み合わせを含んでよい。学習装置１００が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理に従ってプロセッサは、Dynamic Fixed Point（動的固定小数点数）演算のための命令を実行する。
【００３５】
・非符号となる最上位ビット位置の分布
・非ゼロとなる最下位ビット位置の分布
・非符号となる最上位ビット位置の最大値
・非ゼロとなる最下位ビット位置の最小値
【００３６】
このように、統計情報は、ミニバッチの学習の繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する情報であるといえる。
【００３７】
図８は、非符号となる最上位ビットの分布を表すヒストグラムの一例を示す図である。図８において、縦軸は非符号となる最上位ビット位置の出現個数を示し、横軸は最上位ビット位置を示す。図８の例では、ビット０の紙面右側に小数点があると仮定する。最上位ビット位置の一例としては、Count Leading Sign（ＣＬＳ）の値が挙げられる。ＣＬＳは、正数最上位のビット１の位置（負数で最上位のビット０の位置）を示してよい。
【００３８】
「表現可能な領域」は、１６ビット固定小数点数の数値範囲に含まれる、非符号となる最上位ビットの領域を示す。「飽和される領域」は、上記数値範囲を超え、飽和処理が実行される最上位ビットの領域を示す。飽和処理は、例えば、正の数がオーバーフローした際には正の最大値に、負の数がアンダーフローした際は負の最小値にクリップする処理である。表現可能な領域では表現できない微小な分解能を表すビットが出てきた場合、丸め処理が行なわれる。
【００３９】
（Ｂ）ＣＮＮ２００においてミニバッチを学習中にオーバーフローが発生した場合、学習装置１００は、飽和処理を行ない、学習を続行する（図７の符号Ｂ参照）。
【００４０】
（Ｃ）学習装置１００は、Ｋ回のミニバッチ終了後、各レイヤ２１０の各変数について、統計情報に基づき、固定小数点数の小数点位置を調整する（図７の符号Ｃ参照）。
【００４１】
例えば、学習装置１００は、或るレイヤ２１０の変数について、同一レイヤ２１０の統計情報に基づき小数点位置を調整する。学習装置１００は、このような調整を、レイヤ２１０ごと及び変数ごとに実行する。
【００４２】
図９及び図１０は、小数点位置の更新処理の一例を示す図であり、図９は統計情報に出現する最上位ビットが、学習装置１００の表現可能な領域に収まらない場合を示し、図１０は統計情報に出現する最上位ビットが、表現可能な領域内の場合を示す。
【００４３】
図９に示すように、現在のビット精度が（Ｑ５．１０）である場合、学習装置１００は、次のビット精度として、全体のデータ数に対する或る「数値範囲」のデータ数の割合がオーバーフロー率ｒｍａｘ未満となる、最大の「数値範囲」を決定する。図９の例では、学習装置１００は、次のビット精度を（Ｑ３．１２）に決定する。なお、オーバーフロー率ｒｍａｘは、例えばユーザにより指定されてよい。ビット精度は、ビットデータを定義するＱフォーマットであってよく、例えば（Ｑ５．１０）は、符号ビット１桁、整数部５桁、小数点以下１０桁の１６ビットデータを定義する。
【００４４】
図１０に示すように、現在のビット精度が（Ｑ３．１２）である場合、学習装置１００は、例えば、ヒストグラムのピークが次のビット精度の中央に位置するように調整する。図１０の例では、学習装置１００は、次のビット精度を（Ｑ１．１４）に調整する。なお、学習装置１００は、ヒストグラムの出現個数の平均に合わせるように、ビット精度を調整してもよい。
【００４５】
図１１及び図１２は、それぞれ、フォワード（ＦＷＤ）及びバックワード（ＢＷＤ）におけるＱ値の決定と繰り返しとの関係の一例を示す図である。なお、Ｑ値は、固定小数点を何ビットシフトするかという小数点位置情報を意味する。以下、小数点位置をＱ値と表記する場合がある。
【００４６】
図１１及び図１２に示すように、イタレーションＮのときに使用するＱ値は、ＦＷＤ及びＢＷＤのいずれの場合も、イタレーションＮ−１のときの統計情報を使って更新されたＱ値となる。ＦＷＤ及びＢＷＤで利用されるパラメータは、同じＱ値である。なお、図１１及び図１２に示す例は、図７に示す処理において、更新間隔Ｋ＝１とした場合に相当する。
【００４７】
前のイタレーション（ミニバッチ）の統計情報を基に次のイタレーションのＱ値を決定することで、演算のオーバーヘッドを防止することができる。今回の統計情報を使うということは、統計情報の取得とレイヤ２１０の計算とで同じ計算を２度行なうことになる。
【００４８】
図１３は、ＩＷＬの一例を説明する図である。なお、ＩＷＬは、固定小数点で表される値の最上位ビットの小数点位置を意味する。図１３に示す例では、「ＤＩ８」と表記する固定小数点８ビットの最大小数点位置を示す破線がＩＷＬとなる。「ＤＩ８」の領域は、固定小数点８ビットの表現可能領域である。なお、図１３の例では、紙面左から紙面右に向かって、ＩＷＬが大きい（プラスとなる）ものとする。
【００４９】
図１３では、或るレイヤ２１０の出力データのイタレーションＮ−１及びＮのときの統計情報のヒストグラムを例示する。上述のように、イタレーションＮで丸め飽和する境界線は、イタレーションＮ−１で推定される。図１３の例では、ＩＷＬを示す破線が、推定した飽和位置であり、イタレーションＮの分布は、実際に計算された結果である。換言すれば、図１３は、イタレーションＮのときの実際の計算結果のヒストグラムが、イタレーションＮ−１のときに推定したＩＷＬよりも２３（２の３乗；３ビット分）大きい場合を示す。
【００５０】
図１３に示すように、３ビットＩＷＬがズレる場合、イタレーションＮで３ビット分の飽和が余計に行なわれる。この場合、飽和領域のうちの網掛け領域に対して飽和処理が行なわれる。図１３の例では、イタレーションＮの２−９よりも大きな値は２−９に飽和される（網掛け領域参照）。
【００５１】
このように、イタレーション間でＱ値の変動が激しい場合、前のイタレーションの統計情報から推定したＱ値と実際のデータの分布とが合わなくなり、変動分の固定小数点のビット幅を有効に活用できない事態が生じ得る。
【００５２】
ＤＮＮにおいて、各レイヤ２１０のパラメータの更新は、以下の式（２）に基づき行なわれる。以下の式（２）において、μは、学習率（learning Rate）を示し、ΔＷは、前のイタレーションの勾配情報（例えば誤差の勾配）を示す。
【００５３】
Ｗ＝Ｗ−μΔＷ                                                        （２）
【００５４】
学習初期段階では、学習率μの値は大きく、学習が進むにつれて段階的に小さくされる。このため、学習率μが大きいときには、Ｗに与えられる変化が大きくなり、ニューラルネットワーク全体のパラメータ及び伝播されるデータの変動が大きくなる。このように、比較的学習初期の段階において、図１３に例示するようなＩＷＬの変動が大きくなる事態が生じる。
【００５５】
ＩＷＬの変動が大きいと、小数点位置と実際のパラメータや出力の分布との間で誤差が生じ、固定小数点の飽和処理による量子化誤差が大きくなるため、学習が不安定になる、換言すれば、認識精度の低下が生じることがある。例えば、飽和されるデータが多くなるほど、認識精度の低下が大きくなる。
【００５６】
上述したＩＷＬ変動は、プラスマイナスのいずれの方向にも発生するが、マイナスの場合、飽和方向のメリットが無くなり丸められるデータが増える。例えば、確率丸めを用いることで、丸めの量子化誤差による劣化を防止又は低減できる。しかしながら、丸めよりも飽和の方が、値の絶対値が大きいため、量子化による劣化の影響が大きいといえる。
【００５７】
そこで、第１実施形態では、ＩＷＬ変動がプラスとなり、飽和が増える場合においても、学習モデルの学習結果の精度低下を抑制する手法を説明する。
【００５８】
図１４は、小数点位置（ＩＷＬ）にオフセットを設ける場合の一例を説明する図である。第１実施形態では、前のイタレーションで決定したＩＷＬに対してオフセットを付加した（オフセット分大きくした）ＩＷＬを、次のイタレーションで使用する。
【００５９】
図１４の例では、図１３の例と同様にイタレーションＮ−１のときに推定したＩＷＬに対して、特定のオフセット（図１４の例では、「３」）を加算する。なお、オフセットは、例えばユーザにより設定されてよい。
【００６０】
ＩＷＬにオフセットを付加することで、ＩＷＬ変動がプラスとなり、飽和が増える場合においても、図１４に示すように、イタレーションＮの２−９よりも大きな値である２−８〜２−６の値に対する飽和処理を回避でき、飽和による誤差を無くす又は低減できる。
【００６１】
このように、ＩＷＬにオフセットを設けることによって、図１４に斜線で示す領域に相当するデータを飽和から救済することができ、学習装置１による推定精度の劣化を防ぐことができる。
【００６２】
〔１−３〕ＩＷＬに対するオフセット設定処理の一例
決定部１４は、情報記憶部１５に格納された情報に基づき、学習部１２によるＣＮＮ２０の学習中にＩＷＬに加算するオフセット（オフセット量）を決定し、決定したオフセットに基づき、ＩＷＬを決定する。
【００６３】
例えば、決定部１４は、学習の開始のタイミング、及び、学習率μが変化したタイミング、等の所定のタイミングにおいて、オフセットを決定又は変化させてよい。学習率μは、学習の進捗又は学習の進行度に関する情報の一例である。学習率μが変化したタイミングとは、例えば、学習率μが所定の閾値未満となったタイミングであってよい。なお、複数の閾値が用いられてもよい。
【００６４】
情報記憶部１５には、図１５に例示するように、学習率μの閾値（又は範囲）と、オフセットとが対応付けられたオフセット情報が格納される。オフセット情報は、図１５に例示するように、テーブルの形式で格納されてもよいし、ＤＢや配列等の種々の形式で格納されてもよい。
【００６５】
図１５では、オフセットは、学習率μが「０．１」以上の場合に「３」、学習率μが「０．１」未満且つ「０．０１」以上の場合に「１」、学習率μが「０．０１」未満且つ「０．００１」以上の場合に「０」となる例を示す。なお、学習率μが「０．００１」未満の場合もオフセットは「０」であってよい。図１５の例において、「０．１」は第１の閾値ＴＨＡの一例であり、「０．０１」は第２の閾値ＴＨＢの一例であり、「０．００１」は第３の閾値ＴＨＣの一例である。
【００６６】
図１６及び図１７は、それぞれ、学習率μに応じたＩＷＬの変動例を示す図である。図１６は、学習率μが学習初期である０．１の場合を示し、図１７は、学習率μが学習中盤である０．０１の場合を示す。なお、図１６及び図１７において、横軸はイタレーションを示し、縦軸はＩＷＬの変動、例えば前回のＩＷＬとの差を示す。
【００６７】
図１７に例示するように、ＩＷＬの変動が１ビット以内である場合、オフセットを使用しなくとも、学習装置１による認識精度は落ち難い傾向にある。一方、図１６に例示するように、ＩＷＬの変動が２以上である場合、学習装置１による認識精度の低下が大きくなる傾向にある。
【００６８】
そこで、第１実施形態では、ＩＷＬの変動が２以上である場合においても適切に小数点位置を設定できるように、学習の進捗、例えば学習率μとＩＷＬの変動との相関関係に基づくオフセットを定義する情報を用いる。
【００６９】
例えば、決定部１４のオフセット決定部１４ａは、学習の開始のタイミング又は学習率μが変化したタイミングで、情報記憶部１５を参照し、そのときの学習率μの値と、閾値（範囲）とを比較し、該当するオフセットを決定してよい。
【００７０】
そして、決定部１４のＩＷＬ決定部１４ｂは、学習部１２による各レイヤ２１の計算結果に基づき、ＩＷＬ、換言すれば小数点位置を決定する際に、決定したオフセットを付加することで、ＩＷＬの更新を行なう。更新されたＩＷＬは、次のイタレーションにおいて使用される。
【００７１】
このように、オフセット決定部１４ａは、ＣＮＮ２０を繰り返し学習させる際に、学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、学習の進行度に応じて決定する第１決定部の一例である。
【００７２】
また、ＩＷＬ決定部１４ｂは、オフセット量に基づいて、学習に利用する固定小数点数データの小数点位置を決定する第２決定部の一例である。
【００７３】
図１８は、固定小数点１６ビットにおけるオフセットごとの認識精度の一例を示す図である。以下、浮動小数点（Floating Point；ＦＰ）３２ビットを、量子化無しの基準となる認識精度とする。図１８に例示するように、オフセット＝０、１（図１８中、「o0」、「o1」と表記）の場合、認識精度、例えば認識率は、ＦＰ３２ビット（図１８中、「fp」と表記）よりも低い。一方、オフセット＝２、３（図１８中、「o2」、「o3」と表記）の場合、量子化後の認識精度は、ＦＰ３２ビット相当となる。
【００７４】
図１９は、固定小数点１６ビット及び固定小数点８ビットを混在させ、学習の進捗に応じてオフセットを変化させた場合の認識精度の一例を示す図である。図１９に例示するように、学習率μの変化に応じて図１５に示すテーブルに従いオフセットを変化させた場合、固定小数点１６ビット及び固定小数点８ビットを混在させた場合においても、ＦＰ３２ビット相当の認識精度が得られることがわかる。
【００７５】
なお、上述のように、学習装置１は、ＣＮＮ２０の学習中に、各イタレーションにおいて、レイヤ２１の学習で得られる統計情報を順次取得し、集積する。これらの統計情報は、例えば、ＣＮＮ２０の学習及び推論を実行するＬＳＩ等のハードウェアに設けられる又は接続される、レジスタ又はメモリ等に格納されてよい。
【００７６】
例えば、決定部１４は、ミニバッチの直近のＫ回分の学習（第１実施形態では、Ｋ＝１とする）の統計情報に基づき、各レイヤ２１の小数点位置を更新する。決定された固定小数点数は、現イタレーションを含む次のＫ回（第１実施形態では、現イタレーション）のミニバッチの学習の基準として用いられてよい。
【００７７】
すなわち、決定部１４が情報記憶部１５に基づき決定するオフセットは、前のイタレーションの統計情報に基づき更新されたレイヤ２１ごとのＩＷＬに対して付加されてよい。そして、学習部１２は、オフセットが付加されたレイヤ２１ごとのＩＷＬに基づき、現イタレーションにおける各レイヤ２１の演算を行なってよい。
【００７８】
なお、処理順序は、これに限定されるものではなく、決定部１４は、図２１を参照して後述するように、例えば、現イタレーションの各レイヤ２１の演算が完了するごとに、次のイタレーションの演算で利用されるＩＷＬ（オフセットを含む）を算出してもよい。
【００７９】
このように、決定部１４は、統計情報に基づき、小数点位置を更新する更新部の一例であり、オフセット決定部１４ａは、更新される小数点位置に対して、オフセット量を加算するのである。すなわち、統計情報に基づく小数点位置の更新、及び、オフセットの付加、という２段階に亘る小数点位置の補正によって、例えば、ＩＷＬの変動が大きい傾向にある学習初期段階においても、適切に小数点位置を補正できる。
【００８０】
以上のように、第１実施形態に係る学習装置１によれば、オフセット決定部１４ａは、ＣＮＮ２０を繰り返し学習させる際に、学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、学習の進行度に応じて決定する。また、ＩＷＬ決定部１４ｂは、オフセット量に基づいて、学習に利用する固定小数点数データの小数点位置を決定する。
【００８１】
これにより、例えば、学習初期段階のように、ＩＷＬの変動が大きい場合であっても、適切な小数点位置に補正することができるため、学習モデルの学習結果の精度低下を抑制することができる。
【００８２】
従って、動的固定小数点数を適用できるニューラルネットワークを増加させることができる。
【００８３】
また、深層学習を固定小数点数により精度良く実行できるため、データ転送量や演算器の回路規模を削減でき、消費電力を削減できる。例えば、３２ビット浮動小数点数を１６ビット固定小数点数に削減する場合、メモリ使用量及びデータ転送量を半減させることができる。また、ＬＳＩにおける積和演算の回路規模を、約半分とすることができる。
【００８４】
〔１−４〕動作例
次に、図２０及び図２１を参照して、第１実施形態に係る学習装置１の動作例を説明する。図２０は、第１実施形態に係る学習装置１の動作例を説明するフローチャートであり、図２１は、図２０に示すバッチの学習処理の動作例を説明するフローチャートである。
【００８５】
図２０に例示するように、学習装置１は、初期小数点位置の決定（ステップＳ１）、回数ｋ＝０の設定（ステップＳ２）、及び、統計情報の初期化（ステップＳ３）を行なう。
【００８６】
学習装置１の学習部１２は、ＣＮＮ２０の学習終了か否かを判定する（ステップＳ４）。学習終了と判定した場合（ステップＳ４でＹｅｓ）、処理が終了する。一方、学習終了ではないと判定した場合（ステップＳ４でＮｏ）、処理がステップＳ５に移行する。なお、学習終了の判定基準としては、例えば、学習結果のエラーが閾値を下回ったこと、学習結果の精度が閾値を超えたこと、学習回数が閾値を超えたこと、等の種々の基準のうちのいずれか１つ、又は、２つ以上の組み合わせが用いられてよい。
【００８７】
ステップＳ５において、決定部１４は、現在のループが初回設定のタイミングであるか否か、又は、学習の進行度の一例である学習率μが、閾値ＴＨＡ〜ＴＨＣのうちのいずれかを下回ったか否かを判定する（ステップＳ５）。初回設定のタイミングではなく、且つ、学習率μがいずれの閾値ＴＨＡ〜ＴＨＣも下回らないと判定した場合（ステップＳ５でＮｏ）、処理がステップＳ７に移行する。
【００８８】
一方、初回設定のタイミングである、又は、学習率μが閾値ＴＨＡ〜ＴＨＣのいずれかを下回ったと判定した場合（ステップＳ５でＹｅｓ）、決定部１４は、情報記憶部１５を参照し、学習率μが下回った閾値に対応するオフセットを設定する（ステップＳ６）。例えば、決定部１４は、学習率μが閾値ＴＨＡを下回ったと判定した場合には、閾値ＴＨＡの「０．１」に対応する、オフセット「３」を選択する（図１５参照）。そして、処理がステップＳ７に移行する。
【００８９】
ステップＳ７において、学習部１２は、ＣＮＮ２０に対するバッチの学習を行ない、各レイヤ２１の統計情報を累積する。
【００９０】
また、学習部１２は、ｋに１を加算し（ステップＳ８）、ｋが更新間隔Ｋに達したか否かを判定する（ステップＳ９）。ｋが更新間隔Ｋに達していないと判定した場合（ステップＳ９でＮｏ）、処理がステップＳ４に移行する。一方、ｋが更新間隔Ｋに達したと判定した場合（ステップＳ９でＹｅｓ）、処理がステップＳ１０に移行する。なお、第１実施形態においては、更新間隔Ｋ＝１である場合を想定する。
【００９１】
ステップＳ１０において、決定部１４は、各種の統計情報に基づき、各レイヤ２１の各変数の小数点位置を更新する。ここで更新される小数点位置は、次の更新間隔において各変数の表現に利用される。
【００９２】
また、決定部１４は、ｋ＝０に設定（初期化）し（ステップＳ１１）、統計情報をリセットし（ステップＳ１２）、処理がステップＳ４に移行する。
【００９３】
なお、ステップＳ１〜Ｓ３の処理順序は、図２０の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。また、ステップＳ１１及びＳ１２の処理順序は、図２０の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。
【００９４】
次に、図２１を参照して、図２０のステップＳ７の処理の動作例を説明する。図２１に例示するように、学習部１２は、バッチの学習において、順伝播の最初のレイヤ２１を選択する（ステップＳ２１）。
【００９５】
学習部１２は、選択したレイヤ２１の順伝播演算及び統計情報の取得を行なう（ステップＳ２２）。なお、ステップＳ２２の演算において、学習部１２は、前のイタレーション（更新間隔Ｋ＝１の場合）における処理で算出されたＩＷＬを利用してよい。
【００９６】
決定部１４は、当該レイヤ２１について、ＩＷＬを計算する（ステップＳ２３）。ＩＷＬの計算は、各レイヤ２１の演算結果に基づき、既知の手法により実行されてよい。以下、ＩＷＬの計算を行なう関数を「ｆ（ｘ）」とする。
【００９７】
決定部１４は、図２０のステップＳ６において決定したオフセットを、ＩＷＬに加算する（ステップＳ２４）。例えば、決定部１４は、以下の式（３）により、オフセット加算後のＩＷＬを取得する。
【００９８】
ＩＷＬ＝ｆ（ｘ）＋オフセット                                          （３）
【００９９】
オフセット加算後のＩＷＬは、次の更新間隔Ｋ、例えば次のイタレーション（Ｋ＝１の場合）における、当該レイヤ２１の演算に利用される。
【０１００】
学習部１２は、選択中のレイヤ２１が順伝播の最後のレイヤ２１か否かを判定する（ステップＳ２５）。順伝播の最後のレイヤ２１ではないと判定した場合（ステップＳ２５でＮｏ）、学習部１２は、順伝播方向の次のレイヤ２１を選択し、処理がステップＳ２２に移行する。
【０１０１】
一方、順伝播の最後のレイヤ２１であると判定した場合（ステップＳ２５でＹｅｓ）、学習部１２は、逆伝播の最初のレイヤ２１を選択する（ステップＳ２６）。
【０１０２】
学習部１２は、選択したレイヤ２１の逆伝播演算及び統計情報の取得を行なう（ステップＳ２７）。なお、ステップＳ２７の演算において、学習部１２は、前のイタレーション（更新間隔Ｋ＝１の場合）における処理で算出されたＩＷＬを利用してよい。
【０１０３】
決定部１４は、当該レイヤ２１について、ＩＷＬを計算し（ステップＳ２８）、図２０のステップＳ６において決定したオフセットをＩＷＬに加算する（ステップＳ２９）。例えば、決定部１４は、上記の式（３）により、オフセット加算後のＩＷＬを取得する。
【０１０４】
学習部１２は、選択中のレイヤ２１が逆伝播の最後のレイヤ２１か否かを判定する（ステップＳ３０）。逆伝播の最後のレイヤ２１ではないと判定した場合（ステップＳ３０でＮｏ）、学習部１２は、逆伝播方向の次のレイヤ２１を選択し、処理がステップＳ２７に移行する。
【０１０５】
一方、逆伝播の最後のレイヤ２１であると判定した場合（ステップＳ３０でＹｅｓ）、学習部１２は、順伝播の最初のレイヤ２１を選択する（ステップＳ３１）。
【０１０６】
学習部１２は、選択したレイヤ２１に対して、重み及びバイアス更新、並びに、統計情報の取得を行ない（ステップＳ３２）、選択中のレイヤ２１が順伝播の最後のレイヤ２１か否かを判定する（ステップＳ３３）。順伝播の最後のレイヤ２１ではないと判定した場合（ステップＳ３３でＮｏ）、学習部１２は、順伝播方向の次のレイヤ２１を選択し、処理がステップＳ３２に移行する。一方、順伝播の最後のレイヤ２１であると判定した場合（ステップＳ３３でＹｅｓ）、処理が終了する。
【０１０７】
〔２〕第２実施形態
次に、第２実施形態について説明する。図１６及び図１７を参照して上述したように、ＩＷＬの変動が１ビット以内である場合は、オフセットを使用しなくとも、学習装置１による認識精度は低下し難い傾向にある一方、ＩＷＬの変動が２ビット以上の場合、認識精度の低下が大きくなる傾向にある。
【０１０８】
そこで、第２実施形態では、ＩＷＬの変動が２以上であるかを検出し、検出結果に基づき、ＩＷＬに付加するオフセットを決定する手法を説明する。
【０１０９】
図２２は、第２実施形態に係る学習装置１Ａの機能構成例を示すブロック図である。図２２に例示するように、学習装置１Ａは、第１実施形態に係る学習装置１が備える決定部１４及び情報記憶部１５に代えて、決定部１４Ａ及び情報記憶部１５Ａを備える。なお、以下で言及しない説明については、第１実施形態と同様である。
【０１１０】
決定部１４Ａは、学習の開始のタイミング、及び、学習率μが変化したタイミング、等の所定のタイミングにおいて、オフセットを決定又は変化させてよい。学習率μが変化したタイミングは、第１実施形態と同様に、例えば、学習率μが、第１の閾値ＴＨＡ〜第３の閾値ＴＨＣのいずれかの閾値未満となったタイミングであってよい。
【０１１１】
決定部１４Ａは、第１実施形態に係るオフセット決定部１４ａに代えて、オフセット決定部１４ｃを備えてよい。
【０１１２】
オフセット決定部１４ｃは、例えば、所定のタイミングから計測期間Ｃの間において、連続するイタレーション間のＩＷＬの変動量を検出し、変動量ごとの検出回数をカウントしてよい。変動量は、小数点位置の変化の大きさ、と言い換えることもできる。変動量としては、例えば、現イタレーションのＩＷＬと前のイタレーションのＩＷＬとの間の「差分」が挙げられる。なお、オフセット決定部１４ｃは、計測期間においては、ＩＷＬの変動量を正確に計測（検出）するために、オフセットを「０」等の固定値に設定してよい。
【０１１３】
一例として、第２実施形態に係るオフセット決定部１４ｃは、差分が「＋３以上となった回数Ｎ３」及び「＋２以上となった回数Ｎ２」を、それぞれ計測し、計測した回数（イタレーション数）を累積加算してよい。なお、差分が「＋３」とは、今回のＩＷＬが前回のＩＷＬよりも「３」だけ増加していることを示す。オフセット決定部１４ｃは、例えば、差分が「＋３」の場合、Ｎ３及びＮ２のそれぞれをカウントアップ（例えば「１」を加算）してよい。
【０１１４】
計測期間Ｃは、例えば、イタレーション数（繰り返し数）であってよく、ユーザにより予め設定されてよい。例えば、計測期間Ｃは、学習率μが閾値ＴＨＡから閾値ＴＨＢ、又は、閾値ＴＨＢから閾値ＴＨＣに変化するまでの期間に相当するイタレーション数よりも小さい数（一例として、１０％以下等の十分に小さい値）であってよい。
【０１１５】
そして、オフセット決定部１４ｃは、計測期間Ｃが終了すると、検出回数Ｎ３及びＮ２と、それぞれに対応する閾値とを比較し、比較結果に応じてオフセットを決定してよい。
【０１１６】
情報記憶部１５Ａは、変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶してよい。例えば、情報記憶部１５Ａは、図２３に示すように、検出回数Ｎ３に対応する検出閾値ＴＨ３、及び、検出回数Ｎ２に対応する検出閾値ＴＨ２と、オフセットとが対応付けられたオフセット情報を格納する。オフセット情報は、図２３に例示するように、テーブルの形式で格納されてもよいし、ＤＢや配列等の種々の形式で格納されてもよい。
【０１１７】
図２３では、検出回数Ｎ３が検出閾値ＴＨ３以上となる場合にオフセットとして「２」が設定され、検出回数Ｎ２が検出閾値ＴＨ２以上となる場合にオフセットとして「１」が設定される例を示す。
【０１１８】
なお、オフセット決定部１４ｃは、オフセット量の大きい検出閾値ＴＨ３のついての比較結果を、検出閾値ＴＨ２についての比較結果よりも優先してよい。また、オフセット決定部１４ｃは、検出回数Ｎ３が検出閾値ＴＨ３未満であり、且つ、検出回数Ｎ２が検出閾値ＴＨ２未満である場合、オフセットとして「０」を設定してよい。
【０１１９】
図２３の例において、「ＴＨ３」は第１の検出閾値の一例であり、「ＴＨ２」は第２の検出閾値の一例である。ＴＨ３及びＴＨ２は、例えば、ユーザにより予め設定されてよい。
【０１２０】
オフセット決定部１４ｃが決定したオフセットは、計測期間Ｃの終了後から、次に学習率μが変化するタイミングとなるまでの学習期間の間、学習部１２による各レイヤ２１の学習において、ＩＷＬに加算されるオフセットとして利用されてよい。換言すれば、オフセット決定部１４ｃは、計測期間Ｃ以降から次の学習率μの変化まで、決定したオフセットを維持してよい。
【０１２１】
このように、オフセット決定部１４ｃは、ＣＮＮ２０の所定回数の繰り返しにおける、学習に利用する固定小数点数データの小数点位置の変動量を検出する検出部の一例である。また、オフセット決定部１４ｃは、所定回数の繰り返しにおける変動量ごとの検出回数に基づき、オフセット量を決定する第１決定部の一例である。
【０１２２】
図２４は、第２実施形態に係るオフセットの決定処理の一例を説明する図である。図２４に示すように、決定部１４Ａは、学習開始後、及び、学習率μが閾値ＴＨＡ又はＴＨＢを下回る都度、計測期間Ｃ（Ｃイタレーション）におけるＩＷＬの差分に基づき、現在の学習率μの閾値範囲で用いるオフセットを決定する。
【０１２３】
以上のように、第２実施形態に係る学習装置１Ａによっても、第１実施形態と同様の効果を奏することができる。また、計測期間ＣにおけるＩＷＬの差分に基づき、オフセットが決定されるため、学習の進捗やミニバッチのデータの傾向等に応じてオフセットを柔軟に設定でき、より高精度にＩＷＬを決定することができる。
【０１２４】
次に、図２５及び図２６を参照して、第２実施形態に係る学習装置１Ａの動作例を説明する。図２５は、第２実施形態に係る学習装置１Ａの動作例を説明するフローチャートであり、図２６は、図２５に示すオフセット設定処理の動作例を説明するフローチャートである。なお、図２５において、図２０と同一の符号が付された処理は、図２０に示す処理と同様である。また、図２５において、ステップＳ７の処理は、第１実施形態と同様に、図２１のステップＳ２１〜Ｓ３３に従って実行されてよい。
【０１２５】
ステップＳ４でＮｏの場合、ステップＳ４１において、決定部１４Ａは、後述する計測フラグがＯＮか否かを判定する。計測フラグがＯＮであると判定した場合（ステップＳ４１でＹｅｓ）、処理が図２６のステップＳ５５に移行する。一方、計測フラグがＯＦＦであると判定した場合（ステップＳ４１でＮｏ）、処理がステップＳ４２に移行する。
【０１２６】
ステップＳ４２において、決定部１４Ａは、現在のループが初回設定のタイミングであるか否か、又は、学習の進行度の一例である学習率μが、閾値ＴＨＡ〜ＴＨＣのうちのいずれかを下回ったか否かを判定する。初回設定のタイミングではなく、且つ、学習率μがいずれの閾値ＴＨＡ〜ＴＨＣも下回らないと判定した場合（ステップＳ４２でＮｏ）、処理がステップＳ７に移行する。
【０１２７】
一方、初回設定のタイミングである、又は、学習率μが閾値ＴＨＡ〜ＴＨＣのいずれかを下回ったと判定した場合（ステップＳ４２でＹｅｓ）、決定部１４Ａは、オフセット設定処理を行ない（ステップＳ４３）、処理がステップＳ７に移行する。
【０１２８】
次に、図２５のステップＳ４３におけるオフセット設定処理の動作例を説明する。図２６に例示するように、決定部１４Ａは、変数ｍ＝０、及び、オフセット＝０に設定（初期化）する（ステップＳ５１及びＳ５２）。また、決定部１４Ａは、計測フラグ＝ＯＮに設定し（ステップＳ５３）、Ｎ３＝０及びＮ２＝０に設定（初期化）して（ステップＳ５４）、処理がステップＳ５５に移行する。
【０１２９】
計測フラグは、現イタレーションが計測期間Ｃ内であるか否かを示す情報の一例であり、例えば、計測フラグがＯＮの場合は計測期間Ｃ内であり、計測フラグがＯＦＦの場合は計測期間Ｃ外であることを示す。計測フラグは、学習装置１Ａが備えるメモリやレジスタ等の所定の記憶領域に設定されるフラグ情報として管理されてもよいし、フラグ以外の制御情報として、例えば配列等の種々の形態で管理されてもよい。
【０１３０】
決定部１４Ａは、ステップＳ５４が完了した場合、又は、図２５のステップＳ４１で計測フラグがＯＮであると判定された場合（ステップＳ４１でＹｅｓ）、ステップＳ５５を実行する。
【０１３１】
ステップＳ５５において、決定部１４Ａは、ＩＷＬの今回と前回との差分を算出し、差分が＋３以上となった場合に、検出回数Ｎ３に１を加算（累積加算）する。
【０１３２】
また、決定部１４Ａは、ＩＷＬの今回と前回との差分が＋２以上となった場合に、検出回数Ｎ２に１を加算（累積加算）する（ステップＳ５６）。例えば、差分が＋２である場合、決定部１４Ａは、検出回数Ｎ３及びＮ２にそれぞれ１を加算してよい。
【０１３３】
次いで、決定部１４Ａは、変数ｍに１を加算（インクリメント）し（ステップＳ５７）、変数ｍが計測期間Ｃ以下であるか否かを判定する（ステップＳ５８）。変数ｍが計測期間Ｃ以下である場合（ステップＳ５８でＹｅｓ）、オフセット設定処理が終了する。
【０１３４】
変数ｍが計測期間Ｃよりも大きい場合（ステップＳ５８でＮｏ）、計測期間Ｃの経過（満了）を意味する。この場合、決定部１４Ａは、計測フラグ＝ＯＦＦに設定する（ステップＳ５９）。
【０１３５】
次いで、決定部１４Ａは、検出回数Ｎ３が検出閾値ＴＨ３以上か否かを判定する（ステップＳ６０）。検出回数Ｎ３が検出閾値ＴＨ３以上と判定した場合（ステップＳ６０でＹｅｓ）、決定部１４Ａは、情報記憶部１５Ａを参照し、ＴＨ３に対応するオフセット（図１５の例では「２」）を設定し（ステップＳ６１）、オフセット設定処理が終了する。
【０１３６】
検出回数Ｎ３が検出閾値ＴＨ３未満と判定した場合（ステップＳ６０でＮｏ）、決定部１４Ａは、検出回数Ｎ２が検出閾値ＴＨ２以上か否かを判定する（ステップＳ６２）。検出回数Ｎ２が検出閾値ＴＨ２以上と判定した場合（ステップＳ６２でＹｅｓ）、決定部１４Ａは、情報記憶部１５Ａを参照し、ＴＨ２に対応するオフセット（図１５の例では「１」）を設定し（ステップＳ６３）、オフセット設定処理が終了する。
【０１３７】
検出回数Ｎ２が検出閾値ＴＨ２未満と判定した場合（ステップＳ６２でＮｏ）、決定部１４Ａは、オフセット＝０に設定し（ステップＳ６４）、オフセット設定処理が終了する。
【０１３８】
なお、ステップＳ５１〜Ｓ５４の処理順序は、図２６の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。また、ステップＳ５５及びＳ５６の処理順序は、図２６の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。
【０１３９】
〔３〕ハードウェア構成例
図２７は、コンピュータ１０のハードウェア（Hardware；ＨＷ）構成例を示すブロック図である。第１及び第２実施形態に係る学習装置１及び１Ａの機能は、例えば、図２７に示すコンピュータ１０のＨＷ（ＨＷリソース）により実現されてよい。なお、学習装置１及び１Ａの機能を実現するＨＷリソースとして、複数のコンピュータが用いられる場合、各コンピュータが図２７に例示するＨＷ構成を備えてよい。
【０１４０】
図２７に示すように、コンピュータ１０は、例示的に、プロセッサ１０ａ、メモリ１０ｂ、ＬＳＩ１０ｃ、ＬＳＩ用メモリ１０ｄ、記憶部１０ｅ、Interface（ＩＦ）部１０ｆ、Input / Output（Ｉ／Ｏ）部１０ｇ、及び読取部１０ｈを備えてよい。
【０１４１】
プロセッサ１０ａは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ１０ａは、コンピュータ１０内の各ブロックとバス１０ｋにより相互に通信可能に接続されてよい。なお、プロセッサ１０ａは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【０１４２】
プロセッサ１０ａとしては、例えば、ＣＰＵ、ＭＰＵ、ＡＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ等の種々の集積回路（Integrated Circuit；ＩＣ）が挙げられる。なお、プロセッサ１０ａとして、これらの集積回路の２以上の組み合わせが用いられてもよい。ＣＰＵはCentral Processing Unitの略称であり、ＭＰＵはMicro Processing Unitの略称である。ＡＰＵはAccelerated Processing Unitの略称である。ＤＳＰはDigital Signal Processorの略称であり、ＡＳＩＣはApplication Specific ICの略称であり、ＦＰＧＡはField-Programmable Gate Arrayの略称である。
【０１４３】
メモリ１０ｂは、種々のデータやプログラム等の情報を格納するＨＷの一例である。メモリ１０ｂとしては、例えばDynamic Random Access Memory（ＤＲＡＭ）等の揮発性メモリが挙げられる。
【０１４４】
ＬＳＩ１０ｃは、固定小数点数の小数点位置を動的に変更するためのプロセッサを備え、プロセッサ１０ａと協働して、所定の処理を実行するＨＷである。ＬＳＩ１０ｃは、バス１０ｋ経由でプロセッサ１０ａから動作を制御されてよい。例えば、ＬＳＩ１０ｃは、複数（例えば比較的多数）の積和演算器と、複数（例えば比較的少数）の特殊演算器とを備えてよい。
【０１４５】
一例として、第１及び第２実施形態に係るＬＳＩ１０ｃは、学習部１２並びに決定部１４及び１４Ａとして動作するプロセッサ１０ａからの指示（制御）に応じて、ＣＮＮ２０の学習及び推論等の処理を実行してよい。
【０１４６】
なお、ＬＳＩ１０ｃには制御コア（図示省略）が含まれてもよい。この場合、例えば、バス１０ｋ経由でプロセッサ１０ａと制御コアとが通信処理を行ない、プロセッサ１０ａから出力された制御情報を得た制御コアがＬＳＩ１０ｃ全体を制御してよい。
【０１４７】
ＬＳＩ１０ｃとしては、例えば、１以上のGraphics Processing Unit（ＧＰＵ）、１以上のＦＰＧＡ、及び、１以上のＡＳＩＣ、のうちのいずれか、又は、これらの２以上の組み合わせが挙げられる。なお、上述した演算処理装置は、プロセッサ１０ａに加えて、ＬＳＩ１０ｃを含むものとして捉えてもよい。すなわち、プロセッサ１０ａ及びＬＳＩ１０ｃは、学習装置１又は１Ａとして、ＣＮＮ２０に対する学習及び推論等の演算を行なう演算処理装置の一例であるといえる。
【０１４８】
ＬＳＩ用メモリ１０ｄは、ＬＳＩ１０ｃに対する制御データ（制御情報）や、ＬＳＩ１０ｃの演算における入出力データ等を記憶してよく、例えば、ＤＲＡＭ等のメモリや、レジスタ等を含んでよい。第１及び第２実施形態に係る統計情報は、統計情報２２として、ＬＳＩ用メモリ１０ｄに格納されてもよい。或いは、統計情報２２は、ＬＳＩ１０ｃ内部のレジスタ等に格納されてもよい。
【０１４９】
記憶部１０ｅは、種々のデータやプログラム等の情報を格納するＨＷの一例である。記憶部１０ｅとしては、Hard Disk Drive（ＨＤＤ）等の磁気ディスク装置、Solid State Drive（ＳＳＤ）等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、Storage Class Memory（ＳＣＭ）、Read Only Memory（ＲＯＭ）等が挙げられる。
【０１５０】
また、記憶部１０ｅは、コンピュータ１０の各種機能の全部若しくは一部を実現するプログラム１０ｉ（制御プログラム）を格納してよい。プログラム１０ｉは、例えば、学習部１２、並びに、決定部１４又は１４Ａを実現するプロセスを含んでよい。学習装置１又は１Ａのプロセッサ１０ａは、記憶部１０ｅに格納されたプログラム１０ｉをメモリ１０ｂ又はＬＳＩ用メモリ１０ｄに展開して、プログラム１０ｉが有する各プロセスを実行することにより、学習装置１又は１Ａとして動作する。
【０１５１】
なお、学習装置１及び１Ａが備える、データ記憶部１１、パラメータ記憶部１３、並びに、情報記憶部１５又は１５Ａは、例えば、メモリ１０ｂ、ＬＳＩ用メモリ１０ｄ、及び、記憶部１０ｅが有する記憶領域の少なくとも一部により、実現されてよい。
【０１５２】
ＩＦ部１０ｆは、インターネット等の図示しないネットワークとの間の接続及び通信の制御等を行なう通信ＩＦの一例である。例えば、ＩＦ部１０ｆは、Local Area Network（ＬＡＮ）、或いは、光通信（例えばFibre Channel（ＦＣ））等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、プログラム１０ｉは、当該通信ＩＦを介して、図示しないネットワークからコンピュータ１０にダウンロードされ、記憶部１０ｅに格納されてもよい。
【０１５３】
Ｉ／Ｏ部１０ｇは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
【０１５４】
読取部１０ｈは、記録媒体１０ｊに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部１０ｈは、記録媒体１０ｊを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部１０ｈとしては、例えば、Universal Serial Bus（ＵＳＢ）等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体１０ｊにはプログラム１０ｉが格納されてもよく、読取部１０ｈが記録媒体１０ｊからプログラム１０ｉを読み出して記憶部１０ｅに格納してもよい。
【０１５５】
記録媒体１０ｊとしては、例示的に、磁気／光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気／光ディスクとしては、例示的に、フレキシブルディスク、Compact Disc（ＣＤ）、Digital Versatile Disc（ＤＶＤ）、ブルーレイディスク、Holographic Versatile Disc（ＨＶＤ）等が挙げられる。フラッシュメモリとしては、例示的に、ＵＳＢメモリやＳＤカード等の半導体メモリが挙げられる。
【０１５６】
上述したコンピュータ１０のＨＷ構成は例示である。従って、コンピュータ１０内でのＨＷの増減（例えば任意のブロックの追加や削除）、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、学習装置１又は１Ａにおいて、Ｉ／Ｏ部１０ｇ及び読取部１０ｈの少なくとも一方は、省略されてもよい。
【０１５７】
〔４〕その他
上述した第１及び第２実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０１５８】
例えば、図１又は図２２に示す、学習装置１又は１Ａが有するブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【０１５９】
また、図１５及び図２３に示すオフセット情報において、閾値範囲やオフセット量等の設定内容、又は、エントリ数は、図１５及び図２３に例示する内容に限定されるものではなく、他の閾値範囲や、他のオフセット量等が設定されてもよい。
【０１６０】
さらに、第１及び第２実施形態では、ＩＷＬは、オーバーフロー率に基づき算出されるものとしたが、これに限定されるものではなく、例えば、アンダーフロー率に基づき算出されてもよい。
【０１６１】
また、第１及び第２実施形態では、学習の進捗（換言すれば、学習の進行度）に合わせて小数点位置にかける補正値を変化させる手法の説明として、学習率μの変化に応じて補正値を変化させる手法を例示したが、これに限定されるものではない。学習の進捗の他の例として、以下の（Ａ）〜（Ｄ）のいずれか１つ、又は、これらの２つ以上の組み合わせが用いられてもよい。
【０１６２】
（Ａ）学習の損失関数の計算結果
損失関数は、ニューラルネットワークの出力と正解データ（ラベル）との間の誤差を算出する関数であり、学習が進行するにつれて小さな値を出力する関数である。決定部１４又は１４Ａは、学習の損失関数の計算結果に応じてオフセットを変化させてもよい。
【０１６３】
例えば、決定部１４又は１４Ａは、損失関数が複数の閾値のいずれかを下回ったタイミングでオフセット設定処理を実行してもよい。また、決定部１４は、損失関数の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、損失関数の値が大きいほど、オフセット量が大きくなるように設定されてよい。
【０１６４】
（Ｂ）認識精度
認識精度（Accuracy）、例えば認識率は、学習が進行するにつれて値が大きくなる。決定部１４又は１４Ａは、認識精度の変化に応じてオフセットを変化させてもよい。
【０１６５】
例えば、決定部１４又は１４Ａは、認識精度が複数の閾値のいずれかを上回ったタイミングでオフセット設定処理を実行してもよい。また、決定部１４は、認識精度の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、認識精度の値が小さいほど、オフセット量が大きくなるように設定されてよい。
【０１６６】
（Ｃ）量子化誤差
量子化誤差は、飽和処理により飽和されたデータと、丸め処理により丸められたデータとを所定の誤差関数に入力して算出される情報である。例えば、飽和及び丸めが行なわれない場合の実数の計算結果と、量子化された結果との差が誤差関数として表されてよい。決定部１４又は１４Ａは、量子化誤差の変化に応じてオフセットを変化させてもよい。
【０１６７】
例えば、決定部１４又は１４Ａは、量子化誤差が複数の閾値のいずれかを下回ったタイミングでオフセット設定処理を実行してもよい。また、決定部１４は、量子化誤差の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、量子化誤差の値が大きいほど、オフセット量が大きくなるように設定されてよい。
【０１６８】
（Ｄ）学習の繰り返し数
学習の繰り返し数は、例えばイタレーション（イタレーション数）である。決定部１４又は１４Ａは、学習の繰り返し数に応じてオフセットを変化させてもよい。
【０１６９】
例えば、決定部１４又は１４Ａは、学習の繰り返し数が複数の閾値のいずれかを上回ったタイミングでオフセット設定処理を実行してもよい。また、決定部１４は、学習の繰り返し数の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、学習の繰り返し数の値が小さいほど、オフセット量が大きくなるように設定されてよい。
【０１７０】
以上のように、学習装置１又は１Ａは、学習率μ、オフセット情報、小数点位置の変化の大きさ（例えばＩＷＬの差分）、並びに、上記（Ａ）〜（Ｄ）のいずれか１つ、又は、これらの２つ以上の組み合わせに基づき、オフセット設定処理を行なってもよい。これによっても、第１又は第２実施形態と同様の効果を奏することができる。
【０１７１】
〔５〕付記
以上の第１及び第２実施形態に関し、さらに以下の付記を開示する。
【０１７２】
（付記１）
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定する第１決定部と、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する第２決定部と、を備える、
演算処理装置。
【０１７３】
（付記２）
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新する更新部、を備え、
前記第２決定部は、更新される前記小数点位置に対して、前記オフセット量を加算する、
付記１に記載の演算処理装置。
【０１７４】
（付記３）
前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第１決定部は、前記学習の進行度の変化を検出した場合に、前記オフセット情報に基づき、前記オフセット量を決定する、
付記１又は付記２に記載の演算処理装置。
【０１７５】
（付記４）
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出する検出部を備え、
前記第１決定部は、前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
付記１又は付記２に記載の演算処理装置。
【０１７６】
（付記５）
前記変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第１決定部は、前記オフセット情報に基づき、前記オフセット量を決定する、
付記４に記載の演算処理装置。
【０１７７】
（付記６）
前記検出部は、前記学習の進行度の変化を検出した場合に、前記所定回数の繰り返しにおける前記変動量の検出を行ない、
前記第１決定部は、前記検出回数に基づき決定した前記オフセット量を、前記検出部が次に前記学習の進行度の変化を検出するまで維持する、
付記４又は付記５に記載の演算処理装置。
【０１７８】
（付記７）
前記学習の進行度は、学習率、前記学習の損失関数、前記学習モデルの認識精度、前記学習の量子化誤差、及び、前記学習の繰り返し回数、のいずれか１つ又は２以上の組み合わせである、
付記１〜６のいずれか１項に記載の演算処理装置。
【０１７９】
（付記８）
前記学習モデルは、ニューラルネットワークであり、
前記第２決定部は、前記ニューラルネットワークに含まれる複数の層の各々の演算に利用する固定小数点数データの小数点位置を、前記オフセット量に基づいて決定する、
付記１〜７のいずれか１項に記載の演算処理装置。
【０１８０】
（付記９）
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御プログラム。
【０１８１】
（付記１０）
前記コンピュータに、
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新し、
更新される前記小数点位置に対して、前記オフセット量を加算する、
処理を実行させる、付記９に記載の制御プログラム。
【０１８２】
（付記１１）
前記コンピュータに、
前記学習の進行度の変化を検出した場合に、前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部の前記オフセット情報に基づき、前記オフセット量を決定する、
処理を実行させる、付記９又は付記１０に記載の制御プログラム。
【０１８３】
（付記１２）
前記コンピュータに、
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出し、
前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
処理を実行させる、付記９又は付記１０に記載の制御プログラム。
【０１８４】
（付記１３）
前記コンピュータに、
前記変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶する記憶部の前記オフセット情報に基づき、前記オフセット量を決定する、
処理を実行させる、付記１２に記載の制御プログラム。
【０１８５】
（付記１４）
前記コンピュータに、
前記学習の進行度の変化を検出した場合に、前記所定回数の繰り返しにおける前記変動量の検出を行ない、
前記検出回数に基づき決定した前記オフセット量を、次に前記学習の進行度の変化を検出するまで維持する、
処理を実行させる、付記１２又は付記１３に記載の制御プログラム。
【０１８６】
（付記１５）
前記学習の進行度は、学習率、前記学習の損失関数、前記学習モデルの認識精度、前記学習の量子化誤差、及び、前記学習の繰り返し回数、のいずれか１つ又は２以上の組み合わせである、
付記９〜１４のいずれか１項に記載の制御プログラム。
【０１８７】
（付記１６）
前記学習モデルは、ニューラルネットワークであり、
前記コンピュータに、
前記ニューラルネットワークに含まれる複数の層の各々の演算に利用する固定小数点数データの小数点位置を、前記オフセット量に基づいて決定する、
処理を実行させる、付記９〜１５のいずれか１項に記載の制御プログラム。
【０１８８】
（付記１７）
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御方法。
【０１８９】
（付記１８）
前記コンピュータに、
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新し、
更新される前記小数点位置に対して、前記オフセット量を加算する、
処理を実行させる、付記１７に記載の制御方法。
【０１９０】
（付記１９）
前記コンピュータに、
前記学習の進行度の変化を検出した場合に、前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部の前記オフセット情報に基づき、前記オフセット量を決定する、
処理を実行させる、付記１７又は付記１８に記載の制御方法。
【０１９１】
（付記２０）
前記コンピュータに、
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出し、
前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
処理を実行させる、付記１７又は付記１８に記載の制御方法。
【符号の説明】
【０１９２】
１、１Ａ    学習装置
１０    コンピュータ
１０ａ    プロセッサ
１０ｂ    メモリ
１０ｃ    ＬＳＩ
１０ｄ    ＬＳＩ用メモリ
１０ｅ    記憶部
１０ｆ    ＩＦ部
１０ｇ    Ｉ／Ｏ部
１０ｈ    読取部
１０ｉ    プログラム
１０ｊ    記録媒体
１０ｋ    バス
１１    データ記憶部
１２    学習部
１３    パラメータ記憶部
１４、１４Ａ    決定部
１４ａ、１４ｃ    オフセット決定部
１４ｂ    ＩＷＬ決定部
１５、１５Ａ    情報記憶部
２０    ＣＮＮ
２１    層（レイヤ）
２２    統計情報
【図１】
2020201646.tif 000003
【図２】
2020201646.tif 000004
【図３】
2020201646.tif 000005
【図４】
2020201646.tif 000006
【図５】
2020201646.tif 000007
【図６】
2020201646.tif 000008
【図７】
2020201646.tif 000009
【図８】
2020201646.tif 000010
【図９】
2020201646.tif 000011
【図１０】
2020201646.tif 000012
【図１１】
2020201646.tif 000013
【図１２】
2020201646.tif 000014
【図１３】
2020201646.tif 000015
【図１４】
2020201646.tif 000016
【図１５】
2020201646.tif 000017
【図１６】
2020201646.tif 000018
【図１７】
2020201646.tif 000019
【図１８】
2020201646.tif 000020
【図１９】
2020201646.tif 000021
【図２０】
2020201646.tif 000022
【図２１】
2020201646.tif 000023
【図２２】
2020201646.tif 000024
【図２３】
2020201646.tif 000025
【図２４】
2020201646.tif 000026
【図２５】
2020201646.tif 000027
【図２６】
2020201646.tif 000028
【図２７】
2020201646.tif 000029