(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-01
(45)【発行日】2023-05-12
(54)【発明の名称】演算処理装置、制御方法、及び制御プログラム
(51)【国際特許分類】
G06F 7/499 20060101AFI20230502BHJP
G06N 20/00 20190101ALI20230502BHJP
【FI】
G06F7/499 101
G06N20/00
(21)【出願番号】P 2019107081
(22)【出願日】2019-06-07
【審査請求日】2022-03-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】依田 勝洋
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開2012-203566(JP,A)
【文献】特開2019-074951(JP,A)
【文献】特開2018-124681(JP,A)
【文献】特開2019-079535(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 5/01
G06F 7/38- 7/537
G06F 7/57- 7/575
G06F 7/74- 7/78
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を算出する算出部と、
前記所定の学習モデルを繰り返し学習させる際に、前記
次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定する第1決定部と、
前記オフセット量に基づいて、前記
次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を決定する第2決定部と、を備える、
演算処理装置。
【請求項2】
前記第2決定部は、
前記算出される小数点位置に対して、前記オフセット量を加算する、
請求項1に記載の演算処理装置。
【請求項3】
前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第1決定部は、前記学習の進行度の変化を検出した場合に、前記オフセット情報に基づき、前記オフセット量を決定する、
請求項1又は請求項2に記載の演算処理装置。
【請求項4】
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出する検出部を備え、
前記第1決定部は、前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
請求項1又は請求項2に記載の演算処理装置。
【請求項5】
前記変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第1決定部は、前記オフセット情報に基づき、前記オフセット量を決定する、
請求項4に記載の演算処理装置。
【請求項6】
前記検出部は、前記学習の進行度の変化を検出した場合に、前記所定回数の繰り返しにおける前記変動量の検出を行ない、
前記第1決定部は、前記検出回数に基づき決定した前記オフセット量を、前記検出部が次に前記学習の進行度の変化を検出するまで維持する、
請求項4又は請求項5に記載の演算処理装置。
【請求項7】
前記学習の進行度は、学習率、前記学習の損失関数、前記学習モデルの認識精度、前記学習の量子化誤差、及び、前記学習の繰り返し回数、のいずれか1つ又は2以上の組み合わせである、
請求項1~6のいずれか1項に記載の演算処理装置。
【請求項8】
前記学習モデルは、ニューラルネットワークであり、
前記第2決定部は、前記
次の所定回の繰り返し学習における前記ニューラルネットワークに含まれる複数の層の各々の演算に利用する固定小数点数データの小数点位置を、前記オフセット量に基づいて決定する、
請求項1~7のいずれか1項に記載の演算処理装置。
【請求項9】
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を算出し、
前記所定の学習モデルを繰り返し学習させる際に、前記
次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記
次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御プログラム。
【請求項10】
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を算出し、
前記所定の学習モデルを繰り返し学習させる際に、前記
次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記
次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータ
が実行
する、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置、制御方法、及び制御プログラムに関する。
【背景技術】
【0002】
演算処理装置において、固定小数点数データに対する命令実行後の当該データ中のビット分布についての統計情報に基づき、当該データの小数点位置をシフトさせる手法が知られている。この手法により、例えば、深層学習に係る演算処理を固定小数点数で精度よく実行することができ、回路規模と消費電力とを削減することができる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開平7-84975号公報
【文献】特開2008-059287号公報
【文献】特開平4-190399号公報
【文献】特開2018-124681号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
演算処理装置に対して、ニューラルネットワーク等の学習モデルのパラメータを学習させる場合、学習の統計情報に基づき推定される小数点位置と、実際のパラメータや出力データの分布との間にズレが発生する場合がある。当該ズレは、例えば、学習の序盤ほど変化が大きい。
【0005】
当該ズレが発生する場合、統計情報に基づく小数点位置の更新によって、ズレが小さい場合と比較して固定小数点の飽和による量子化誤差が増大し、学習が不安定になる、換言すれば、学習結果の精度が低下することがある。
【0006】
一つの側面では、本発明は、学習モデルの学習結果の精度低下を抑制することを目的の1つとする。
【課題を解決するための手段】
【0007】
1つの側面では、演算処理装置は、算出部と、第1決定部と、第2決定部とを備えてよい。前記算出部は、所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を算出してよい。前記第1決定部は、前記所定の学習モデルを繰り返し学習させる際に、前記次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定してよい。前記第2決定部は、前記オフセット量に基づいて、前記次の所定回の繰り返し学習に利用する固定小数点数データの小数点位置を決定してよい。
【発明の効果】
【0008】
1つの側面では、学習モデルの学習結果の精度低下を抑制することができる。
【図面の簡単な説明】
【0009】
【
図1】第1実施形態に係る学習装置の機能構成例を示すブロック図である。
【
図2】データ記憶部が記憶する情報の一例を示す図である。
【
図3】Convolutional Neural Network(CNN)に対する深層学習の一例を説明するための図である。
【
図4】CNNの各層における学習計算の一例を示す図である。
【
図5】パラメータ記憶部が記憶する情報が更新される様子の一例を示す図である。
【
図6】CNNの各層における変数のデータ表現例を示す図である。
【
図7】比較例に係る学習装置による処理を示す図である。
【
図8】非符号となる最上位ビットの分布を表すヒストグラムの一例を示す図である。
【
図9】小数点位置の更新処理の一例を示す図である。
【
図10】小数点位置の更新処理の一例を示す図である。
【
図11】フォワードにおけるQ値の決定と繰り返しとの関係の一例を示す図である。
【
図12】バックワードにおけるQ値の決定と繰り返しとの関係の一例を示す図である。
【
図13】Integer Word Length(IWL)の一例を説明する図である。
【
図14】小数点位置にオフセットを設ける場合の一例を説明する図である。
【
図15】情報記憶部が記憶する情報の一例を示す図である。
【
図16】学習率に応じたIWLの変動例を示す図である。
【
図17】学習率に応じたIWLの変動例を示す図である。
【
図18】固定小数点16ビットにおけるオフセットごとの認識精度の一例を示す図である。
【
図19】固定小数点16ビット及び固定小数点8ビットを混在させ、学習の進捗に応じてオフセットを変化させた場合の認識精度の一例を示す図である。
【
図20】第1実施形態に係る学習装置の動作例を説明するフローチャートである。
【
図21】
図20に示すバッチの学習処理の動作例を説明するフローチャートである。
【
図22】第2実施形態に係る学習装置の機能構成例を示すブロック図である。
【
図23】情報記憶部が記憶する情報の一例を示す図である。
【
図24】第2実施形態に係るオフセットの決定処理の一例を説明する図である。
【
図25】第2実施形態に係る学習装置の動作例を説明するフローチャートである。
【
図26】
図25に示すオフセット設定処理の動作例を説明するフローチャートである。
【
図27】第1及び第2実施形態に係るコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0011】
〔1〕第1実施形態
〔1-1〕機能構成例
図1は、第1実施形態の一例としての学習装置1の機能構成例を示すブロック図である。学習装置1は、深層学習に係る演算処理等の種々の演算処理を行なう演算処理装置(図示省略)、を備える情報処理装置の一例である。学習装置1は、例えば、ニューラルネットワーク等の学習モデルのパラメータを学習してよい。
【0012】
図1に示すように、学習装置1は、例示的に、データ記憶部11、学習部12、パラメータ記憶部13、決定部14、及び情報記憶部15を備えてよい。
【0013】
データ記憶部11は、所定の学習モデルを学習させるための学習用データを格納する。学習用データは、
図2に例示するように、テーブルの形式で格納されてもよいし、DB(Database)や配列等の種々の形式で格納されてもよい。
【0014】
学習用データは、入力データとその入力データに対応する正解データとの組み合わせであってよい。各データは、識別情報を示すデータIDにより識別可能である。一例として、データ記憶部11は、データID「00001」と、入力データ「A1」と正解データ「B1」とが対応付けられたエントリを格納してよい。入力データの非限定的な一例としては、RGBの要素を含む画像データが挙げられる。
【0015】
学習装置1は、データ記憶部11に格納された学習用データを用いて、学習モデルの一例であるDeep Neural Network(DNN)、例えばConvolutional Neural Network(CNN)20を学習させる。
図3は、CNN20に対する深層学習の一例を説明するための図である。
【0016】
図3に例示するCNN20は、Conv_1,Pool_1,Conv_2,Pool_2,fc1,及びfc2の層(レイヤ)21を含んでよい。
図3に示すように、CNN20に対する深層学習処理では、入力データに対応する正解データがCNN20に与えられる。学習装置1は、CNN20に対し入力データを
図3の紙面左方向から入力し、各層21の処理結果を紙面右方向へ伝播させる(順伝播)。そして、学習装置1は、入力データに対する出力データと正解データとを比較し、結果の差分を紙面左方向へ伝播させる(逆伝播)。
【0017】
例えば、入力データに対して、Conv_1のパラメータの積和演算を実行することで、Conv_1層の畳み込み演算が実行される。Conv_1,Pool_1,Conv_2,Pool_2,fc1,及びfc2の各層21はパラメータを保持している。CNN20の最上位の層21(
図3に示すfc2)まで演算が実行されると、演算結果が正解データと比較され、比較結果を基に各層21のパラメータが更新される。正解データに基づく逆伝播におけるパラメータの更新は、逆伝播処理と称されてもよい。
【0018】
CNN20の各層21では、
図4に例示する計算が行なわれる。
図4に示すように、学習計算が行なわれる際、入力データ又は前層21からの出力データである「bottom」と、パラメータである「Weight」との積和演算が実行される。そして、積和演算結果と「Bias」との和に応じて、出力データ「top」が出力される。
【0019】
なお、CNN20の学習及び推論等の処理は、例えば、動的固定小数点プロセッサを備えるLarge Scale Integration(LSI)により実行されてよい。
【0020】
ここで、学習装置1は、固定小数点数データを用いてCNN20を繰り返し学習させる。固定小数点数は、小数点位置(桁)を固定して表された数値を意味し、固定小数点数データは、例えば、CNN20の学習において各層21で扱われる変数や、各層21の演算結果等を意味してよい。なお、固定小数点数の初期位置(初期小数点位置)は、例えば、浮動小数点数である数値を用いてCNN20を1回又は複数回学習させた学習結果(試行結果)に基づき学習装置1が決定してもよいし、ユーザにより指定されてもよい。
【0021】
なお、例示的に、学習処理のミニバッチ1回を1回の繰り返しとする。ミニバッチとは、画像データを複数同時に学習処理にかけることをいう。例えば、ミニバッチが「16」とは、16枚の画像データを同時に学習処理にかけることを意味する。このため、例えば、65536枚の画像データがある場合には、4096イタレーションで全画像データを入力したことになる。イタレーション(Iteration)は、深層学習におけるミニバッチの実行回数を意味する。
【0022】
学習部12は、データ記憶部11に格納された学習用データを固定小数点数によって表現し、固定小数点数である数値を用いてCNN20を学習させ、学習結果としてのCNN20の各層21のパラメータWLを得る。なお、LはCNN20の各層21を識別するためのインデックスである。パラメータWLは、以下の式(1)に例示されるパラメータベクトルである。なお、添え字「Wn」は、パラメータWLのベクトル内の要素数を表す。
【0023】
WL={W0,L,W1,L,・・・,WWn,L} (1)
【0024】
図5に例示するように、パラメータ記憶部13のパラメータベクトルは、学習の繰り返しごとに更新後、上書きされる。
【0025】
決定部14は、CNN20の学習処理により得られる統計情報に基づき、固定小数点数の小数点位置を決定する。決定部14が決定した小数点位置は、学習部12によるCNN20の学習に用いられる。
【0026】
決定部14は、例示的に、オフセット決定部14a及びInteger Word Length(IWL)決定部14bを備えてよい。
【0027】
情報記憶部15は、記憶部の一例であり、決定部14による小数点位置の決定に利用される、後述するオフセットに関する情報を記憶する。決定部14及び情報記憶部15の詳細は後述する。
【0028】
〔1-2〕固定小数点数の小数点位置について
図6は、CNN20の各層21における変数(パラメータ)のデータ表現例を示す図である。深層学習においてパラメータを学習させる際には、膨大な計算量により計算負荷及びメモリ負荷等の負荷がかかり、パラメータの学習時間が長くなる。
【0029】
ここで、第1実施形態においては、パラメータの学習時間を短縮させるために、上述のように、学習の際に用いる数値を、浮動小数点数(例えば32ビット浮動小数点数)ではなく固定小数点数(例えば16ビット又は8ビット固定小数点数等)によって表現する。
【0030】
学習の際に用いる数値を固定小数点数によって表現することで、
図6に示すように、データ量を削減でき、計算負荷及びメモリ負荷等の負荷を低減できるため、パラメータの学習時間を短縮できる。
【0031】
しかし、固定小数点数は、浮動小数点数に比べ表現可能な数値範囲が狭い。このため、固定小数点数によって表現された数値による学習処理では、学習結果の精度が低くなることがある。
【0032】
そこで、深層学習の学習中に統計情報を取得して、学習に用いる変数の小数点位置を調整することが考えられる。
図7は、比較例に係る学習装置100による処理を示す図である。学習装置100は、
図7に例示するように、以下の(A)~(C)の処理を学習終了まで実行する。
【0033】
(A)学習装置100は、所定回数(例えばK回;Kは1以上の整数)のミニバッチを学習中に、各レイヤ210の各変数の統計情報を保存する(
図7の符号A参照)。
【0034】
ここで、統計情報は、例えば、以下のいずれか、又は、これらの組み合わせを含んでよい。学習装置100が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理に従ってプロセッサは、Dynamic Fixed Point(動的固定小数点数)演算のための命令を実行する。
【0035】
・非符号となる最上位ビット位置の分布
・非ゼロとなる最下位ビット位置の分布
・非符号となる最上位ビット位置の最大値
・非ゼロとなる最下位ビット位置の最小値
【0036】
このように、統計情報は、ミニバッチの学習の繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する情報であるといえる。
【0037】
図8は、非符号となる最上位ビットの分布を表すヒストグラムの一例を示す図である。
図8において、縦軸は非符号となる最上位ビット位置の出現個数を示し、横軸は最上位ビット位置を示す。
図8の例では、ビット0の紙面右側に小数点があると仮定する。最上位ビット位置の一例としては、Count Leading Sign(CLS)の値が挙げられる。CLSは、正数最上位のビット1の位置(負数で最上位のビット0の位置)を示してよい。
【0038】
「表現可能な領域」は、16ビット固定小数点数の数値範囲に含まれる、非符号となる最上位ビットの領域を示す。「飽和される領域」は、上記数値範囲を超え、飽和処理が実行される最上位ビットの領域を示す。飽和処理は、例えば、正の数がオーバーフローした際には正の最大値に、負の数がアンダーフローした際は負の最小値にクリップする処理である。表現可能な領域では表現できない微小な分解能を表すビットが出てきた場合、丸め処理が行なわれる。
【0039】
(B)CNN200においてミニバッチを学習中にオーバーフローが発生した場合、学習装置100は、飽和処理を行ない、学習を続行する(
図7の符号B参照)。
【0040】
(C)学習装置100は、K回のミニバッチ終了後、各レイヤ210の各変数について、統計情報に基づき、固定小数点数の小数点位置を調整する(
図7の符号C参照)。
【0041】
例えば、学習装置100は、或るレイヤ210の変数について、同一レイヤ210の統計情報に基づき小数点位置を調整する。学習装置100は、このような調整を、レイヤ210ごと及び変数ごとに実行する。
【0042】
図9及び
図10は、小数点位置の更新処理の一例を示す図であり、
図9は統計情報に出現する最上位ビットが、学習装置100の表現可能な領域に収まらない場合を示し、
図10は統計情報に出現する最上位ビットが、表現可能な領域内の場合を示す。
【0043】
図9に示すように、現在のビット精度が(Q5.10)である場合、学習装置100は、次のビット精度として、全体のデータ数に対する或る「数値範囲」のデータ数の割合がオーバーフロー率rmax未満となる、最大の「数値範囲」を決定する。
図9の例では、学習装置100は、次のビット精度を(Q3.12)に決定する。なお、オーバーフロー率rmaxは、例えばユーザにより指定されてよい。ビット精度は、ビットデータを定義するQフォーマットであってよく、例えば(Q5.10)は、符号ビット1桁、整数部5桁、小数点以下10桁の16ビットデータを定義する。
【0044】
図10に示すように、現在のビット精度が(Q3.12)である場合、学習装置100は、例えば、ヒストグラムのピークが次のビット精度の中央に位置するように調整する。
図10の例では、学習装置100は、次のビット精度を(Q1.14)に調整する。なお、学習装置100は、ヒストグラムの出現個数の平均に合わせるように、ビット精度を調整してもよい。
【0045】
図11及び
図12は、それぞれ、フォワード(FWD)及びバックワード(BWD)におけるQ値の決定と繰り返しとの関係の一例を示す図である。なお、Q値は、固定小数点を何ビットシフトするかという小数点位置情報を意味する。以下、小数点位置をQ値と表記する場合がある。
【0046】
図11及び
図12に示すように、イタレーションNのときに使用するQ値は、FWD及びBWDのいずれの場合も、イタレーションN-1のときの統計情報を使って更新されたQ値となる。FWD及びBWDで利用されるパラメータは、同じQ値である。なお、
図11及び
図12に示す例は、
図7に示す処理において、更新間隔K=1とした場合に相当する。
【0047】
前のイタレーション(ミニバッチ)の統計情報を基に次のイタレーションのQ値を決定することで、演算のオーバーヘッドを防止することができる。今回の統計情報を使うということは、統計情報の取得とレイヤ210の計算とで同じ計算を2度行なうことになる。
【0048】
図13は、IWLの一例を説明する図である。なお、IWLは、固定小数点で表される値の最上位ビットの小数点位置を意味する。
図13に示す例では、「DI8」と表記する固定小数点8ビットの最大小数点位置を示す破線がIWLとなる。「DI8」の領域は、固定小数点8ビットの表現可能領域である。なお、
図13の例では、紙面左から紙面右に向かって、IWLが大きい(プラスとなる)ものとする。
【0049】
図13では、或るレイヤ210の出力データのイタレーションN-1及びNのときの統計情報のヒストグラムを例示する。上述のように、イタレーションNで丸め飽和する境界線は、イタレーションN-1で推定される。
図13の例では、IWLを示す破線が、推定した飽和位置であり、イタレーションNの分布は、実際に計算された結果である。換言すれば、
図13は、イタレーションNのときの実際の計算結果のヒストグラムが、イタレーションN-1のときに推定したIWLよりも2
3(2の3乗;3ビット分)大きい場合を示す。
【0050】
図13に示すように、3ビットIWLがズレる場合、イタレーションNで3ビット分の飽和が余計に行なわれる。この場合、飽和領域のうちの網掛け領域に対して飽和処理が行なわれる。
図13の例では、イタレーションNの2
-9よりも大きな値は2
-9に飽和される(網掛け領域参照)。
【0051】
このように、イタレーション間でQ値の変動が激しい場合、前のイタレーションの統計情報から推定したQ値と実際のデータの分布とが合わなくなり、変動分の固定小数点のビット幅を有効に活用できない事態が生じ得る。
【0052】
DNNにおいて、各レイヤ210のパラメータの更新は、以下の式(2)に基づき行なわれる。以下の式(2)において、μは、学習率(learning Rate)を示し、ΔWは、前のイタレーションの勾配情報(例えば誤差の勾配)を示す。
【0053】
W=W-μΔW (2)
【0054】
学習初期段階では、学習率μの値は大きく、学習が進むにつれて段階的に小さくされる。このため、学習率μが大きいときには、Wに与えられる変化が大きくなり、ニューラルネットワーク全体のパラメータ及び伝播されるデータの変動が大きくなる。このように、比較的学習初期の段階において、
図13に例示するようなIWLの変動が大きくなる事態が生じる。
【0055】
IWLの変動が大きいと、小数点位置と実際のパラメータや出力の分布との間で誤差が生じ、固定小数点の飽和処理による量子化誤差が大きくなるため、学習が不安定になる、換言すれば、認識精度の低下が生じることがある。例えば、飽和されるデータが多くなるほど、認識精度の低下が大きくなる。
【0056】
上述したIWL変動は、プラスマイナスのいずれの方向にも発生するが、マイナスの場合、飽和方向のメリットが無くなり丸められるデータが増える。例えば、確率丸めを用いることで、丸めの量子化誤差による劣化を防止又は低減できる。しかしながら、丸めよりも飽和の方が、値の絶対値が大きいため、量子化による劣化の影響が大きいといえる。
【0057】
そこで、第1実施形態では、IWL変動がプラスとなり、飽和が増える場合においても、学習モデルの学習結果の精度低下を抑制する手法を説明する。
【0058】
図14は、小数点位置(IWL)にオフセットを設ける場合の一例を説明する図である。第1実施形態では、前のイタレーションで決定したIWLに対してオフセットを付加した(オフセット分大きくした)IWLを、次のイタレーションで使用する。
【0059】
図14の例では、
図13の例と同様にイタレーションN-1のときに推定したIWLに対して、特定のオフセット(
図14の例では、「3」)を加算する。なお、オフセットは、例えばユーザにより設定されてよい。
【0060】
IWLにオフセットを付加することで、IWL変動がプラスとなり、飽和が増える場合においても、
図14に示すように、イタレーションNの2
-9よりも大きな値である2
-8~2
-6の値に対する飽和処理を回避でき、飽和による誤差を無くす又は低減できる。
【0061】
このように、IWLにオフセットを設けることによって、
図14に斜線で示す領域に相当するデータを飽和から救済することができ、学習装置1による推定精度の劣化を防ぐことができる。
【0062】
〔1-3〕IWLに対するオフセット設定処理の一例
決定部14は、情報記憶部15に格納された情報に基づき、学習部12によるCNN20の学習中にIWLに加算するオフセット(オフセット量)を決定し、決定したオフセットに基づき、IWLを決定する。
【0063】
例えば、決定部14は、学習の開始のタイミング、及び、学習率μが変化したタイミング、等の所定のタイミングにおいて、オフセットを決定又は変化させてよい。学習率μは、学習の進捗又は学習の進行度に関する情報の一例である。学習率μが変化したタイミングとは、例えば、学習率μが所定の閾値未満となったタイミングであってよい。なお、複数の閾値が用いられてもよい。
【0064】
情報記憶部15には、
図15に例示するように、学習率μの閾値(又は範囲)と、オフセットとが対応付けられたオフセット情報が格納される。オフセット情報は、
図15に例示するように、テーブルの形式で格納されてもよいし、DBや配列等の種々の形式で格納されてもよい。
【0065】
図15では、オフセットは、学習率μが「0.1」以上の場合に「3」、学習率μが「0.1」未満且つ「0.01」以上の場合に「1」、学習率μが「0.01」未満且つ「0.001」以上の場合に「0」となる例を示す。なお、学習率μが「0.001」未満の場合もオフセットは「0」であってよい。
図15の例において、「0.1」は第1の閾値THAの一例であり、「0.01」は第2の閾値THBの一例であり、「0.001」は第3の閾値THCの一例である。
【0066】
図16及び
図17は、それぞれ、学習率μに応じたIWLの変動例を示す図である。
図16は、学習率μが学習初期である0.1の場合を示し、
図17は、学習率μが学習中盤である0.01の場合を示す。なお、
図16及び
図17において、横軸はイタレーションを示し、縦軸はIWLの変動、例えば前回のIWLとの差を示す。
【0067】
図17に例示するように、IWLの変動が1ビット以内である場合、オフセットを使用しなくとも、学習装置1による認識精度は落ち難い傾向にある。一方、
図16に例示するように、IWLの変動が2以上である場合、学習装置1による認識精度の低下が大きくなる傾向にある。
【0068】
そこで、第1実施形態では、IWLの変動が2以上である場合においても適切に小数点位置を設定できるように、学習の進捗、例えば学習率μとIWLの変動との相関関係に基づくオフセットを定義する情報を用いる。
【0069】
例えば、決定部14のオフセット決定部14aは、学習の開始のタイミング又は学習率μが変化したタイミングで、情報記憶部15を参照し、そのときの学習率μの値と、閾値(範囲)とを比較し、該当するオフセットを決定してよい。
【0070】
そして、決定部14のIWL決定部14bは、学習部12による各レイヤ21の計算結果に基づき、IWL、換言すれば小数点位置を決定する際に、決定したオフセットを付加することで、IWLの更新を行なう。更新されたIWLは、次のイタレーションにおいて使用される。
【0071】
このように、オフセット決定部14aは、CNN20を繰り返し学習させる際に、学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、学習の進行度に応じて決定する第1決定部の一例である。
【0072】
また、IWL決定部14bは、オフセット量に基づいて、学習に利用する固定小数点数データの小数点位置を決定する第2決定部の一例である。
【0073】
図18は、固定小数点16ビットにおけるオフセットごとの認識精度の一例を示す図である。以下、浮動小数点(Floating Point;FP)32ビットを、量子化無しの基準となる認識精度とする。
図18に例示するように、オフセット=0、1(
図18中、「o0」、「o1」と表記)の場合、認識精度、例えば認識率は、FP32ビット(
図18中、「fp」と表記)よりも低い。一方、オフセット=2、3(
図18中、「o2」、「o3」と表記)の場合、量子化後の認識精度は、FP32ビット相当となる。
【0074】
図19は、固定小数点16ビット及び固定小数点8ビットを混在させ、学習の進捗に応じてオフセットを変化させた場合の認識精度の一例を示す図である。
図19に例示するように、学習率μの変化に応じて
図15に示すテーブルに従いオフセットを変化させた場合、固定小数点16ビット及び固定小数点8ビットを混在させた場合においても、FP32ビット相当の認識精度が得られることがわかる。
【0075】
なお、上述のように、学習装置1は、CNN20の学習中に、各イタレーションにおいて、レイヤ21の学習で得られる統計情報を順次取得し、集積する。これらの統計情報は、例えば、CNN20の学習及び推論を実行するLSI等のハードウェアに設けられる又は接続される、レジスタ又はメモリ等に格納されてよい。
【0076】
例えば、決定部14は、ミニバッチの直近のK回分の学習(第1実施形態では、K=1とする)の統計情報に基づき、各レイヤ21の小数点位置を更新する。決定された固定小数点数は、現イタレーションを含む次のK回(第1実施形態では、現イタレーション)のミニバッチの学習の基準として用いられてよい。
【0077】
すなわち、決定部14が情報記憶部15に基づき決定するオフセットは、前のイタレーションの統計情報に基づき更新されたレイヤ21ごとのIWLに対して付加されてよい。そして、学習部12は、オフセットが付加されたレイヤ21ごとのIWLに基づき、現イタレーションにおける各レイヤ21の演算を行なってよい。
【0078】
なお、処理順序は、これに限定されるものではなく、決定部14は、
図21を参照して後述するように、例えば、現イタレーションの各レイヤ21の演算が完了するごとに、次のイタレーションの演算で利用されるIWL(オフセットを含む)を算出してもよい。
【0079】
このように、決定部14は、統計情報に基づき、小数点位置を更新する更新部の一例であり、オフセット決定部14aは、更新される小数点位置に対して、オフセット量を加算するのである。すなわち、統計情報に基づく小数点位置の更新、及び、オフセットの付加、という2段階に亘る小数点位置の補正によって、例えば、IWLの変動が大きい傾向にある学習初期段階においても、適切に小数点位置を補正できる。
【0080】
以上のように、第1実施形態に係る学習装置1によれば、オフセット決定部14aは、CNN20を繰り返し学習させる際に、学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、学習の進行度に応じて決定する。また、IWL決定部14bは、オフセット量に基づいて、学習に利用する固定小数点数データの小数点位置を決定する。
【0081】
これにより、例えば、学習初期段階のように、IWLの変動が大きい場合であっても、適切な小数点位置に補正することができるため、学習モデルの学習結果の精度低下を抑制することができる。
【0082】
従って、動的固定小数点数を適用できるニューラルネットワークを増加させることができる。
【0083】
また、深層学習を固定小数点数により精度良く実行できるため、データ転送量や演算器の回路規模を削減でき、消費電力を削減できる。例えば、32ビット浮動小数点数を16ビット固定小数点数に削減する場合、メモリ使用量及びデータ転送量を半減させることができる。また、LSIにおける積和演算の回路規模を、約半分とすることができる。
【0084】
〔1-4〕動作例
次に、
図20及び
図21を参照して、第1実施形態に係る学習装置1の動作例を説明する。
図20は、第1実施形態に係る学習装置1の動作例を説明するフローチャートであり、
図21は、
図20に示すバッチの学習処理の動作例を説明するフローチャートである。
【0085】
図20に例示するように、学習装置1は、初期小数点位置の決定(ステップS1)、回数k=0の設定(ステップS2)、及び、統計情報の初期化(ステップS3)を行なう。
【0086】
学習装置1の学習部12は、CNN20の学習終了か否かを判定する(ステップS4)。学習終了と判定した場合(ステップS4でYes)、処理が終了する。一方、学習終了ではないと判定した場合(ステップS4でNo)、処理がステップS5に移行する。なお、学習終了の判定基準としては、例えば、学習結果のエラーが閾値を下回ったこと、学習結果の精度が閾値を超えたこと、学習回数が閾値を超えたこと、等の種々の基準のうちのいずれか1つ、又は、2つ以上の組み合わせが用いられてよい。
【0087】
ステップS5において、決定部14は、現在のループが初回設定のタイミングであるか否か、又は、学習の進行度の一例である学習率μが、閾値THA~THCのうちのいずれかを下回ったか否かを判定する(ステップS5)。初回設定のタイミングではなく、且つ、学習率μがいずれの閾値THA~THCも下回らないと判定した場合(ステップS5でNo)、処理がステップS7に移行する。
【0088】
一方、初回設定のタイミングである、又は、学習率μが閾値THA~THCのいずれかを下回ったと判定した場合(ステップS5でYes)、決定部14は、情報記憶部15を参照し、学習率μが下回った閾値に対応するオフセットを設定する(ステップS6)。例えば、決定部14は、学習率μが閾値THAを下回ったと判定した場合には、閾値THAの「0.1」に対応する、オフセット「3」を選択する(
図15参照)。そして、処理がステップS7に移行する。
【0089】
ステップS7において、学習部12は、CNN20に対するバッチの学習を行ない、各レイヤ21の統計情報を累積する。
【0090】
また、学習部12は、kに1を加算し(ステップS8)、kが更新間隔Kに達したか否かを判定する(ステップS9)。kが更新間隔Kに達していないと判定した場合(ステップS9でNo)、処理がステップS4に移行する。一方、kが更新間隔Kに達したと判定した場合(ステップS9でYes)、処理がステップS10に移行する。なお、第1実施形態においては、更新間隔K=1である場合を想定する。
【0091】
ステップS10において、決定部14は、各種の統計情報に基づき、各レイヤ21の各変数の小数点位置を更新する。ここで更新される小数点位置は、次の更新間隔において各変数の表現に利用される。
【0092】
また、決定部14は、k=0に設定(初期化)し(ステップS11)、統計情報をリセットし(ステップS12)、処理がステップS4に移行する。
【0093】
なお、ステップS1~S3の処理順序は、
図20の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。また、ステップS11及びS12の処理順序は、
図20の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。
【0094】
次に、
図21を参照して、
図20のステップS7の処理の動作例を説明する。
図21に例示するように、学習部12は、バッチの学習において、順伝播の最初のレイヤ21を選択する(ステップS21)。
【0095】
学習部12は、選択したレイヤ21の順伝播演算及び統計情報の取得を行なう(ステップS22)。なお、ステップS22の演算において、学習部12は、前のイタレーション(更新間隔K=1の場合)における処理で算出されたIWLを利用してよい。
【0096】
決定部14は、当該レイヤ21について、IWLを計算する(ステップS23)。IWLの計算は、各レイヤ21の演算結果に基づき、既知の手法により実行されてよい。以下、IWLの計算を行なう関数を「f(x)」とする。
【0097】
決定部14は、
図20のステップS6において決定したオフセットを、IWLに加算する(ステップS24)。例えば、決定部14は、以下の式(3)により、オフセット加算後のIWLを取得する。
【0098】
IWL=f(x)+オフセット (3)
【0099】
オフセット加算後のIWLは、次の更新間隔K、例えば次のイタレーション(K=1の場合)における、当該レイヤ21の演算に利用される。
【0100】
学習部12は、選択中のレイヤ21が順伝播の最後のレイヤ21か否かを判定する(ステップS25)。順伝播の最後のレイヤ21ではないと判定した場合(ステップS25でNo)、学習部12は、順伝播方向の次のレイヤ21を選択し、処理がステップS22に移行する。
【0101】
一方、順伝播の最後のレイヤ21であると判定した場合(ステップS25でYes)、学習部12は、逆伝播の最初のレイヤ21を選択する(ステップS26)。
【0102】
学習部12は、選択したレイヤ21の逆伝播演算及び統計情報の取得を行なう(ステップS27)。なお、ステップS27の演算において、学習部12は、前のイタレーション(更新間隔K=1の場合)における処理で算出されたIWLを利用してよい。
【0103】
決定部14は、当該レイヤ21について、IWLを計算し(ステップS28)、
図20のステップS6において決定したオフセットをIWLに加算する(ステップS29)。例えば、決定部14は、上記の式(3)により、オフセット加算後のIWLを取得する。
【0104】
学習部12は、選択中のレイヤ21が逆伝播の最後のレイヤ21か否かを判定する(ステップS30)。逆伝播の最後のレイヤ21ではないと判定した場合(ステップS30でNo)、学習部12は、逆伝播方向の次のレイヤ21を選択し、処理がステップS27に移行する。
【0105】
一方、逆伝播の最後のレイヤ21であると判定した場合(ステップS30でYes)、学習部12は、順伝播の最初のレイヤ21を選択する(ステップS31)。
【0106】
学習部12は、選択したレイヤ21に対して、重み及びバイアス更新、並びに、統計情報の取得を行ない(ステップS32)、選択中のレイヤ21が順伝播の最後のレイヤ21か否かを判定する(ステップS33)。順伝播の最後のレイヤ21ではないと判定した場合(ステップS33でNo)、学習部12は、順伝播方向の次のレイヤ21を選択し、処理がステップS32に移行する。一方、順伝播の最後のレイヤ21であると判定した場合(ステップS33でYes)、処理が終了する。
【0107】
〔2〕第2実施形態
次に、第2実施形態について説明する。
図16及び
図17を参照して上述したように、IWLの変動が1ビット以内である場合は、オフセットを使用しなくとも、学習装置1による認識精度は低下し難い傾向にある一方、IWLの変動が2ビット以上の場合、認識精度の低下が大きくなる傾向にある。
【0108】
そこで、第2実施形態では、IWLの変動が2以上であるかを検出し、検出結果に基づき、IWLに付加するオフセットを決定する手法を説明する。
【0109】
図22は、第2実施形態に係る学習装置1Aの機能構成例を示すブロック図である。
図22に例示するように、学習装置1Aは、第1実施形態に係る学習装置1が備える決定部14及び情報記憶部15に代えて、決定部14A及び情報記憶部15Aを備える。なお、以下で言及しない説明については、第1実施形態と同様である。
【0110】
決定部14Aは、学習の開始のタイミング、及び、学習率μが変化したタイミング、等の所定のタイミングにおいて、オフセットを決定又は変化させてよい。学習率μが変化したタイミングは、第1実施形態と同様に、例えば、学習率μが、第1の閾値THA~第3の閾値THCのいずれかの閾値未満となったタイミングであってよい。
【0111】
決定部14Aは、第1実施形態に係るオフセット決定部14aに代えて、オフセット決定部14cを備えてよい。
【0112】
オフセット決定部14cは、例えば、所定のタイミングから計測期間Cの間において、連続するイタレーション間のIWLの変動量を検出し、変動量ごとの検出回数をカウントしてよい。変動量は、小数点位置の変化の大きさ、と言い換えることもできる。変動量としては、例えば、現イタレーションのIWLと前のイタレーションのIWLとの間の「差分」が挙げられる。なお、オフセット決定部14cは、計測期間においては、IWLの変動量を正確に計測(検出)するために、オフセットを「0」等の固定値に設定してよい。
【0113】
一例として、第2実施形態に係るオフセット決定部14cは、差分が「+3以上となった回数N3」及び「+2以上となった回数N2」を、それぞれ計測し、計測した回数(イタレーション数)を累積加算してよい。なお、差分が「+3」とは、今回のIWLが前回のIWLよりも「3」だけ増加していることを示す。オフセット決定部14cは、例えば、差分が「+3」の場合、N3及びN2のそれぞれをカウントアップ(例えば「1」を加算)してよい。
【0114】
計測期間Cは、例えば、イタレーション数(繰り返し数)であってよく、ユーザにより予め設定されてよい。例えば、計測期間Cは、学習率μが閾値THAから閾値THB、又は、閾値THBから閾値THCに変化するまでの期間に相当するイタレーション数よりも小さい数(一例として、10%以下等の十分に小さい値)であってよい。
【0115】
そして、オフセット決定部14cは、計測期間Cが終了すると、検出回数N3及びN2と、それぞれに対応する閾値とを比較し、比較結果に応じてオフセットを決定してよい。
【0116】
情報記憶部15Aは、変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶してよい。例えば、情報記憶部15Aは、
図23に示すように、検出回数N3に対応する検出閾値TH3、及び、検出回数N2に対応する検出閾値TH2と、オフセットとが対応付けられたオフセット情報を格納する。オフセット情報は、
図23に例示するように、テーブルの形式で格納されてもよいし、DBや配列等の種々の形式で格納されてもよい。
【0117】
図23では、検出回数N3が検出閾値TH3以上となる場合にオフセットとして「2」が設定され、検出回数N2が検出閾値TH2以上となる場合にオフセットとして「1」が設定される例を示す。
【0118】
なお、オフセット決定部14cは、オフセット量の大きい検出閾値TH3のついての比較結果を、検出閾値TH2についての比較結果よりも優先してよい。また、オフセット決定部14cは、検出回数N3が検出閾値TH3未満であり、且つ、検出回数N2が検出閾値TH2未満である場合、オフセットとして「0」を設定してよい。
【0119】
図23の例において、「TH3」は第1の検出閾値の一例であり、「TH2」は第2の検出閾値の一例である。TH3及びTH2は、例えば、ユーザにより予め設定されてよい。
【0120】
オフセット決定部14cが決定したオフセットは、計測期間Cの終了後から、次に学習率μが変化するタイミングとなるまでの学習期間の間、学習部12による各レイヤ21の学習において、IWLに加算されるオフセットとして利用されてよい。換言すれば、オフセット決定部14cは、計測期間C以降から次の学習率μの変化まで、決定したオフセットを維持してよい。
【0121】
このように、オフセット決定部14cは、CNN20の所定回数の繰り返しにおける、学習に利用する固定小数点数データの小数点位置の変動量を検出する検出部の一例である。また、オフセット決定部14cは、所定回数の繰り返しにおける変動量ごとの検出回数に基づき、オフセット量を決定する第1決定部の一例である。
【0122】
図24は、第2実施形態に係るオフセットの決定処理の一例を説明する図である。
図24に示すように、決定部14Aは、学習開始後、及び、学習率μが閾値THA又はTHBを下回る都度、計測期間C(Cイタレーション)におけるIWLの差分に基づき、現在の学習率μの閾値範囲で用いるオフセットを決定する。
【0123】
以上のように、第2実施形態に係る学習装置1Aによっても、第1実施形態と同様の効果を奏することができる。また、計測期間CにおけるIWLの差分に基づき、オフセットが決定されるため、学習の進捗やミニバッチのデータの傾向等に応じてオフセットを柔軟に設定でき、より高精度にIWLを決定することができる。
【0124】
次に、
図25及び
図26を参照して、第2実施形態に係る学習装置1Aの動作例を説明する。
図25は、第2実施形態に係る学習装置1Aの動作例を説明するフローチャートであり、
図26は、
図25に示すオフセット設定処理の動作例を説明するフローチャートである。なお、
図25において、
図20と同一の符号が付された処理は、
図20に示す処理と同様である。また、
図25において、ステップS7の処理は、第1実施形態と同様に、
図21のステップS21~S33に従って実行されてよい。
【0125】
ステップS4でNoの場合、ステップS41において、決定部14Aは、後述する計測フラグがONか否かを判定する。計測フラグがONであると判定した場合(ステップS41でYes)、処理が
図26のステップS55に移行する。一方、計測フラグがOFFであると判定した場合(ステップS41でNo)、処理がステップS42に移行する。
【0126】
ステップS42において、決定部14Aは、現在のループが初回設定のタイミングであるか否か、又は、学習の進行度の一例である学習率μが、閾値THA~THCのうちのいずれかを下回ったか否かを判定する。初回設定のタイミングではなく、且つ、学習率μがいずれの閾値THA~THCも下回らないと判定した場合(ステップS42でNo)、処理がステップS7に移行する。
【0127】
一方、初回設定のタイミングである、又は、学習率μが閾値THA~THCのいずれかを下回ったと判定した場合(ステップS42でYes)、決定部14Aは、オフセット設定処理を行ない(ステップS43)、処理がステップS7に移行する。
【0128】
次に、
図25のステップS43におけるオフセット設定処理の動作例を説明する。
図26に例示するように、決定部14Aは、変数m=0、及び、オフセット=0に設定(初期化)する(ステップS51及びS52)。また、決定部14Aは、計測フラグ=ONに設定し(ステップS53)、N3=0及びN2=0に設定(初期化)して(ステップS54)、処理がステップS55に移行する。
【0129】
計測フラグは、現イタレーションが計測期間C内であるか否かを示す情報の一例であり、例えば、計測フラグがONの場合は計測期間C内であり、計測フラグがOFFの場合は計測期間C外であることを示す。計測フラグは、学習装置1Aが備えるメモリやレジスタ等の所定の記憶領域に設定されるフラグ情報として管理されてもよいし、フラグ以外の制御情報として、例えば配列等の種々の形態で管理されてもよい。
【0130】
決定部14Aは、ステップS54が完了した場合、又は、
図25のステップS41で計測フラグがONであると判定された場合(ステップS41でYes)、ステップS55を実行する。
【0131】
ステップS55において、決定部14Aは、IWLの今回と前回との差分を算出し、差分が+3以上となった場合に、検出回数N3に1を加算(累積加算)する。
【0132】
また、決定部14Aは、IWLの今回と前回との差分が+2以上となった場合に、検出回数N2に1を加算(累積加算)する(ステップS56)。例えば、差分が+2である場合、決定部14Aは、検出回数N3及びN2にそれぞれ1を加算してよい。
【0133】
次いで、決定部14Aは、変数mに1を加算(インクリメント)し(ステップS57)、変数mが計測期間C以下であるか否かを判定する(ステップS58)。変数mが計測期間C以下である場合(ステップS58でYes)、オフセット設定処理が終了する。
【0134】
変数mが計測期間Cよりも大きい場合(ステップS58でNo)、計測期間Cの経過(満了)を意味する。この場合、決定部14Aは、計測フラグ=OFFに設定する(ステップS59)。
【0135】
次いで、決定部14Aは、検出回数N3が検出閾値TH3以上か否かを判定する(ステップS60)。検出回数N3が検出閾値TH3以上と判定した場合(ステップS60でYes)、決定部14Aは、情報記憶部15Aを参照し、TH3に対応するオフセット(
図15の例では「2」)を設定し(ステップS61)、オフセット設定処理が終了する。
【0136】
検出回数N3が検出閾値TH3未満と判定した場合(ステップS60でNo)、決定部14Aは、検出回数N2が検出閾値TH2以上か否かを判定する(ステップS62)。検出回数N2が検出閾値TH2以上と判定した場合(ステップS62でYes)、決定部14Aは、情報記憶部15Aを参照し、TH2に対応するオフセット(
図15の例では「1」)を設定し(ステップS63)、オフセット設定処理が終了する。
【0137】
検出回数N2が検出閾値TH2未満と判定した場合(ステップS62でNo)、決定部14Aは、オフセット=0に設定し(ステップS64)、オフセット設定処理が終了する。
【0138】
なお、ステップS51~S54の処理順序は、
図26の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。また、ステップS55及びS56の処理順序は、
図26の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。
【0139】
〔3〕ハードウェア構成例
図27は、コンピュータ10のハードウェア(Hardware;HW)構成例を示すブロック図である。第1及び第2実施形態に係る学習装置1及び1Aの機能は、例えば、
図27に示すコンピュータ10のHW(HWリソース)により実現されてよい。なお、学習装置1及び1Aの機能を実現するHWリソースとして、複数のコンピュータが用いられる場合、各コンピュータが
図27に例示するHW構成を備えてよい。
【0140】
図27に示すように、コンピュータ10は、例示的に、プロセッサ10a、メモリ10b、LSI10c、LSI用メモリ10d、記憶部10e、Interface(IF)部10f、Input / Output(I/O)部10g、及び読取部10hを備えてよい。
【0141】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10kにより相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0142】
プロセッサ10aとしては、例えば、CPU、MPU、APU、DSP、ASIC、FPGA等の種々の集積回路(Integrated Circuit;IC)が挙げられる。なお、プロセッサ10aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
【0143】
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDynamic Random Access Memory(DRAM)等の揮発性メモリが挙げられる。
【0144】
LSI10cは、固定小数点数の小数点位置を動的に変更するためのプロセッサを備え、プロセッサ10aと協働して、所定の処理を実行するHWである。LSI10cは、バス10k経由でプロセッサ10aから動作を制御されてよい。例えば、LSI10cは、複数(例えば比較的多数)の積和演算器と、複数(例えば比較的少数)の特殊演算器とを備えてよい。
【0145】
一例として、第1及び第2実施形態に係るLSI10cは、学習部12並びに決定部14及び14Aとして動作するプロセッサ10aからの指示(制御)に応じて、CNN20の学習及び推論等の処理を実行してよい。
【0146】
なお、LSI10cには制御コア(図示省略)が含まれてもよい。この場合、例えば、バス10k経由でプロセッサ10aと制御コアとが通信処理を行ない、プロセッサ10aから出力された制御情報を得た制御コアがLSI10c全体を制御してよい。
【0147】
LSI10cとしては、例えば、1以上のGraphics Processing Unit(GPU)、1以上のFPGA、及び、1以上のASIC、のうちのいずれか、又は、これらの2以上の組み合わせが挙げられる。なお、上述した演算処理装置は、プロセッサ10aに加えて、LSI10cを含むものとして捉えてもよい。すなわち、プロセッサ10a及びLSI10cは、学習装置1又は1Aとして、CNN20に対する学習及び推論等の演算を行なう演算処理装置の一例であるといえる。
【0148】
LSI用メモリ10dは、LSI10cに対する制御データ(制御情報)や、LSI10cの演算における入出力データ等を記憶してよく、例えば、DRAM等のメモリや、レジスタ等を含んでよい。第1及び第2実施形態に係る統計情報は、統計情報22として、LSI用メモリ10dに格納されてもよい。或いは、統計情報22は、LSI10c内部のレジスタ等に格納されてもよい。
【0149】
記憶部10eは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10eとしては、Hard Disk Drive(HDD)等の磁気ディスク装置、Solid State Drive(SSD)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、Storage Class Memory(SCM)、Read Only Memory(ROM)等が挙げられる。
【0150】
また、記憶部10eは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10i(制御プログラム)を格納してよい。プログラム10iは、例えば、学習部12、並びに、決定部14又は14Aを実現するプロセスを含んでよい。学習装置1又は1Aのプロセッサ10aは、記憶部10eに格納されたプログラム10iをメモリ10b又はLSI用メモリ10dに展開して、プログラム10iが有する各プロセスを実行することにより、学習装置1又は1Aとして動作する。
【0151】
なお、学習装置1及び1Aが備える、データ記憶部11、パラメータ記憶部13、並びに、情報記憶部15又は15Aは、例えば、メモリ10b、LSI用メモリ10d、及び、記憶部10eが有する記憶領域の少なくとも一部により、実現されてよい。
【0152】
IF部10fは、インターネット等の図示しないネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10fは、Local Area Network(LAN)、或いは、光通信(例えばFibre Channel(FC))等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、プログラム10iは、当該通信IFを介して、図示しないネットワークからコンピュータ10にダウンロードされ、記憶部10eに格納されてもよい。
【0153】
I/O部10gは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
【0154】
読取部10hは、記録媒体10jに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10hは、記録媒体10jを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10hとしては、例えば、Universal Serial Bus(USB)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10jにはプログラム10iが格納されてもよく、読取部10hが記録媒体10jからプログラム10iを読み出して記憶部10eに格納してもよい。
【0155】
記録媒体10jとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、Compact Disc(CD)、Digital Versatile Disc(DVD)、ブルーレイディスク、Holographic Versatile Disc(HVD)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0156】
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、学習装置1又は1Aにおいて、I/O部10g及び読取部10hの少なくとも一方は、省略されてもよい。
【0157】
〔4〕その他
上述した第1及び第2実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0158】
例えば、
図1又は
図22に示す、学習装置1又は1Aが有するブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【0159】
また、
図15及び
図23に示すオフセット情報において、閾値範囲やオフセット量等の設定内容、又は、エントリ数は、
図15及び
図23に例示する内容に限定されるものではなく、他の閾値範囲や、他のオフセット量等が設定されてもよい。
【0160】
さらに、第1及び第2実施形態では、IWLは、オーバーフロー率に基づき算出されるものとしたが、これに限定されるものではなく、例えば、アンダーフロー率に基づき算出されてもよい。
【0161】
また、第1及び第2実施形態では、学習の進捗(換言すれば、学習の進行度)に合わせて小数点位置にかける補正値を変化させる手法の説明として、学習率μの変化に応じて補正値を変化させる手法を例示したが、これに限定されるものではない。学習の進捗の他の例として、以下の(A)~(D)のいずれか1つ、又は、これらの2つ以上の組み合わせが用いられてもよい。
【0162】
(A)学習の損失関数の計算結果
損失関数は、ニューラルネットワークの出力と正解データ(ラベル)との間の誤差を算出する関数であり、学習が進行するにつれて小さな値を出力する関数である。決定部14又は14Aは、学習の損失関数の計算結果に応じてオフセットを変化させてもよい。
【0163】
例えば、決定部14又は14Aは、損失関数が複数の閾値のいずれかを下回ったタイミングでオフセット設定処理を実行してもよい。また、決定部14は、損失関数の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、損失関数の値が大きいほど、オフセット量が大きくなるように設定されてよい。
【0164】
(B)認識精度
認識精度(Accuracy)、例えば認識率は、学習が進行するにつれて値が大きくなる。決定部14又は14Aは、認識精度の変化に応じてオフセットを変化させてもよい。
【0165】
例えば、決定部14又は14Aは、認識精度が複数の閾値のいずれかを上回ったタイミングでオフセット設定処理を実行してもよい。また、決定部14は、認識精度の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、認識精度の値が小さいほど、オフセット量が大きくなるように設定されてよい。
【0166】
(C)量子化誤差
量子化誤差は、飽和処理により飽和されたデータと、丸め処理により丸められたデータとを所定の誤差関数に入力して算出される情報である。例えば、飽和及び丸めが行なわれない場合の実数の計算結果と、量子化された結果との差が誤差関数として表されてよい。決定部14又は14Aは、量子化誤差の変化に応じてオフセットを変化させてもよい。
【0167】
例えば、決定部14又は14Aは、量子化誤差が複数の閾値のいずれかを下回ったタイミングでオフセット設定処理を実行してもよい。また、決定部14は、量子化誤差の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、量子化誤差の値が大きいほど、オフセット量が大きくなるように設定されてよい。
【0168】
(D)学習の繰り返し数
学習の繰り返し数は、例えばイタレーション(イタレーション数)である。決定部14又は14Aは、学習の繰り返し数に応じてオフセットを変化させてもよい。
【0169】
例えば、決定部14又は14Aは、学習の繰り返し数が複数の閾値のいずれかを上回ったタイミングでオフセット設定処理を実行してもよい。また、決定部14は、学習の繰り返し数の複数の閾値とオフセットとを対応付けたオフセット情報に基づいて、オフセットを決定してもよい。この場合、オフセット情報は、学習の繰り返し数の値が小さいほど、オフセット量が大きくなるように設定されてよい。
【0170】
以上のように、学習装置1又は1Aは、学習率μ、オフセット情報、小数点位置の変化の大きさ(例えばIWLの差分)、並びに、上記(A)~(D)のいずれか1つ、又は、これらの2つ以上の組み合わせに基づき、オフセット設定処理を行なってもよい。これによっても、第1又は第2実施形態と同様の効果を奏することができる。
【0171】
〔5〕付記
以上の第1及び第2実施形態に関し、さらに以下の付記を開示する。
【0172】
(付記1)
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定する第1決定部と、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する第2決定部と、を備える、
演算処理装置。
【0173】
(付記2)
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新する更新部、を備え、
前記第2決定部は、更新される前記小数点位置に対して、前記オフセット量を加算する、
付記1に記載の演算処理装置。
【0174】
(付記3)
前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第1決定部は、前記学習の進行度の変化を検出した場合に、前記オフセット情報に基づき、前記オフセット量を決定する、
付記1又は付記2に記載の演算処理装置。
【0175】
(付記4)
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出する検出部を備え、
前記第1決定部は、前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
付記1又は付記2に記載の演算処理装置。
【0176】
(付記5)
前記変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶する記憶部を備え、
前記第1決定部は、前記オフセット情報に基づき、前記オフセット量を決定する、
付記4に記載の演算処理装置。
【0177】
(付記6)
前記検出部は、前記学習の進行度の変化を検出した場合に、前記所定回数の繰り返しにおける前記変動量の検出を行ない、
前記第1決定部は、前記検出回数に基づき決定した前記オフセット量を、前記検出部が次に前記学習の進行度の変化を検出するまで維持する、
付記4又は付記5に記載の演算処理装置。
【0178】
(付記7)
前記学習の進行度は、学習率、前記学習の損失関数、前記学習モデルの認識精度、前記学習の量子化誤差、及び、前記学習の繰り返し回数、のいずれか1つ又は2以上の組み合わせである、
付記1~6のいずれか1項に記載の演算処理装置。
【0179】
(付記8)
前記学習モデルは、ニューラルネットワークであり、
前記第2決定部は、前記ニューラルネットワークに含まれる複数の層の各々の演算に利用する固定小数点数データの小数点位置を、前記オフセット量に基づいて決定する、
付記1~7のいずれか1項に記載の演算処理装置。
【0180】
(付記9)
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御プログラム。
【0181】
(付記10)
前記コンピュータに、
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新し、
更新される前記小数点位置に対して、前記オフセット量を加算する、
処理を実行させる、付記9に記載の制御プログラム。
【0182】
(付記11)
前記コンピュータに、
前記学習の進行度の変化を検出した場合に、前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部の前記オフセット情報に基づき、前記オフセット量を決定する、
処理を実行させる、付記9又は付記10に記載の制御プログラム。
【0183】
(付記12)
前記コンピュータに、
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出し、
前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
処理を実行させる、付記9又は付記10に記載の制御プログラム。
【0184】
(付記13)
前記コンピュータに、
前記変動量ごとの検出回数の閾値と、オフセット量とを対応付けたオフセット情報を記憶する記憶部の前記オフセット情報に基づき、前記オフセット量を決定する、
処理を実行させる、付記12に記載の制御プログラム。
【0185】
(付記14)
前記コンピュータに、
前記学習の進行度の変化を検出した場合に、前記所定回数の繰り返しにおける前記変動量の検出を行ない、
前記検出回数に基づき決定した前記オフセット量を、次に前記学習の進行度の変化を検出するまで維持する、
処理を実行させる、付記12又は付記13に記載の制御プログラム。
【0186】
(付記15)
前記学習の進行度は、学習率、前記学習の損失関数、前記学習モデルの認識精度、前記学習の量子化誤差、及び、前記学習の繰り返し回数、のいずれか1つ又は2以上の組み合わせである、
付記9~14のいずれか1項に記載の制御プログラム。
【0187】
(付記16)
前記学習モデルは、ニューラルネットワークであり、
前記コンピュータに、
前記ニューラルネットワークに含まれる複数の層の各々の演算に利用する固定小数点数データの小数点位置を、前記オフセット量に基づいて決定する、
処理を実行させる、付記9~15のいずれか1項に記載の制御プログラム。
【0188】
(付記17)
所定の学習モデルを繰り返し学習させる際に、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を、前記学習の進行度に応じて決定し、
前記オフセット量に基づいて、前記学習に利用する固定小数点数データの小数点位置を決定する、
処理をコンピュータに実行させる、制御方法。
【0189】
(付記18)
前記コンピュータに、
前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき、前記小数点位置を更新し、
更新される前記小数点位置に対して、前記オフセット量を加算する、
処理を実行させる、付記17に記載の制御方法。
【0190】
(付記19)
前記コンピュータに、
前記学習の進行度の変化を検出した場合に、前記学習の進行度とオフセット量とを対応付けたオフセット情報を記憶する記憶部の前記オフセット情報に基づき、前記オフセット量を決定する、
処理を実行させる、付記17又は付記18に記載の制御方法。
【0191】
(付記20)
前記コンピュータに、
前記学習モデルの所定回数の繰り返しにおける、前記学習に利用する固定小数点数データの小数点位置の変動量を検出し、
前記所定回数の繰り返しにおける変動量ごとの検出回数に基づき、前記オフセット量を決定する、
処理を実行させる、付記17又は付記18に記載の制御方法。
【符号の説明】
【0192】
1、1A 学習装置
10 コンピュータ
10a プロセッサ
10b メモリ
10c LSI
10d LSI用メモリ
10e 記憶部
10f IF部
10g I/O部
10h 読取部
10i プログラム
10j 記録媒体
10k バス
11 データ記憶部
12 学習部
13 パラメータ記憶部
14、14A 決定部
14a、14c オフセット決定部
14b IWL決定部
15、15A 情報記憶部
20 CNN
21 層(レイヤ)
22 統計情報