(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-13
(45)【発行日】2023-03-22
(54)【発明の名称】演算処理装置、制御プログラム、及び制御方法
(51)【国際特許分類】
G06N 3/0985 20230101AFI20230314BHJP
G06N 3/0495 20230101ALI20230314BHJP
G06N 3/10 20060101ALI20230314BHJP
【FI】
G06N3/0985
G06N3/0495
G06N3/10
(21)【出願番号】P 2019129368
(22)【出願日】2019-07-11
【審査請求日】2022-04-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】伊藤 真紀子
【審査官】多賀 実
(56)【参考文献】
【文献】特開2018-010618(JP,A)
【文献】特開2019-057249(JP,A)
【文献】特表2020-522032(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶する記憶部と、
前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する決定部と、を備える、
演算処理装置。
【請求項2】
前記学習モデルは、ニューラルネットワークであり、
前記記憶部は、前記誤差を、前記ニューラルネットワークに含まれる複数の層の各々について記憶し、
前記決定部は、前記オフセット量を、前記複数の層の各々について決定する、
請求項1に記載の演算処理装置。
【請求項3】
前記決定部は、第1の層よりも前の第2の層について前記記憶部が記憶する誤差に基づき、前記第1の層についてのオフセット量を決定する、
請求項2に記載の演算処理装置。
【請求項4】
前記決定部は、前記第2の層についての前記学習のt(tは2以上の整数)回目の繰り返しにおける誤差の傾向と類似する、前記t回目よりも前であるx(xはt未満の整数)回目の繰り返しを特定し、特定した前記x回目の繰り返しにおける前記第1の層の誤差に基づき、前記t回目の繰り返しにおける前記第1の層についてのオフセット量を決定する、
請求項3に記載の演算処理装置。
【請求項5】
前記決定部は、前記第2の層についての前記統計情報と、前記第1の層についての誤差と、を用いてオフセット量決定用の学習モデルを学習させ、前記オフセット量決定用の学習モデルの学習結果に基づいて、前記第1の層についてのオフセット量を決定する、
請求項3又は請求項4に記載の演算処理装置。
【請求項6】
前記記憶部は、前記統計情報に基づき前記繰り返しごとに得られる特徴値を前記誤差と対応付けて記憶し、
前記決定部は、前記記憶部が記憶する前記第2の層についての誤差と特徴値との組み合わせに基づき、前記第1の層についてのオフセット量を決定する、
請求項3又は請求項4に記載の演算処理装置。
【請求項7】
前記第2の層は、前記ニューラルネットワークにおける先頭の層から、前記第1の層の1つ前の層までの層のうちの、いずれか1つの層又は2以上の組み合わせの層である、
請求項3~6のいずれか1項に記載の演算処理装置。
【請求項8】
前記第2の層は、前記ニューラルネットワークにおける先頭の層である、
請求項3~6のいずれか1項に記載の演算処理装置。
【請求項9】
前記第2の層は、前記複数の層を連続した2以上の層単位で分類したブロックのうちの、前記第1の層が属するブロック内の先頭の層である、
請求項3~6のいずれか1項に記載の演算処理装置。
【請求項10】
前記第2の層は、前記複数の層を連続した2以上の層単位で分類したブロックのうちの、前記第1の層が属するブロック内における、先頭の層から前記第1の層の1つ前の層までの層のうちのいずれか1つの層又は2以上の組み合わせの層である、
請求項3~6のいずれか1項に記載の演算処理装置。
【請求項11】
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶部に記憶し、
前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する、
処理をコンピュータに実行させる、制御プログラム。
【請求項12】
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶部に記憶し、
前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する、
処理をコンピュータに実行させる、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置、制御プログラム、及び制御方法に関する。
【背景技術】
【0002】
演算処理装置において、固定小数点数データに対する命令実行後の当該データ中のビット分布についての統計情報に基づき、当該データの小数点位置をシフトさせる手法が知られている。この手法により、例えば、深層学習に係る演算処理を固定小数点数で精度よく実行することができ、回路規模と消費電力とを削減することができる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開平7-84975号公報
【文献】特開平7-134600号公報
【文献】特開2018-124681号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
演算処理装置に対して、ニューラルネットワーク等の学習モデルのパラメータを学習させる場合、学習の統計情報に基づき推定される小数点位置と、実際のパラメータや出力データの分布との間にズレが発生する場合がある。
【0005】
当該ズレが発生する場合、統計情報に基づく小数点位置の更新によって、ズレが小さい場合と比較して固定小数点の飽和又は丸めによる量子化誤差が増大し、学習が不安定になる、換言すれば、学習結果の精度が低下することがある。
【0006】
一つの側面では、本発明は、学習モデルの学習結果の精度低下を抑制することを目的の1つとする。
【課題を解決するための手段】
【0007】
1つの側面では、演算処理装置は、記憶部と、決定部と、を備えてよい。前記記憶部は、所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶してよい。前記決定部は、前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定してよい。
【発明の効果】
【0008】
1つの側面では、学習モデルの学習結果の精度低下を抑制することができる。
【図面の簡単な説明】
【0009】
【
図1】第1実施形態に係る学習装置の機能構成例を示すブロック図である。
【
図2】データ記憶部が記憶する情報の一例を示す図である。
【
図3】Convolutional Neural Network(CNN)に対する深層学習の一例を説明するための図である。
【
図4】CNNの各層における学習計算の一例を示す図である。
【
図5】パラメータ記憶部が記憶する情報が更新される様子の一例を示す図である。
【
図6】CNNの各層における変数のデータ表現例を示す図である。
【
図7】比較例に係る学習装置による処理を示す図である。
【
図8】非符号となる最上位ビットの分布を表すヒストグラムの一例を示す図である。
【
図9】小数点位置の更新処理の一例を示す図である。
【
図10】小数点位置の更新処理の一例を示す図である。
【
図11】t~t+2番目のミニバッチのCount Leading Sign(CLS)の分布情報S(t)~S(t+2)の一例を示す図である。
【
図12】順伝播における小数点位置の補正処理の一例において利用される統計情報を示す図である。
【
図13】逆伝播における小数点位置の補正処理の一例において利用される統計情報を示す図である。
【
図14】学習の進みと小数点位置の決定処理との一例を説明するための図である。
【
図15】情報記憶部が記憶する情報の一例を示す図である。
【
図17】ヒストグラムの重心の算出例を説明するための図である。
【
図18】小数点位置の補正処理の一例を説明する図である。
【
図19】決定部が、ブロックの最初のレイヤの履歴を利用する場合を例示する図である。
【
図20】順伝播における補正値(予測値)と実際の差分値との関係のシミュレーション結果の一例を示す図である。
【
図21】逆伝播における補正値(予測値)と実際の差分値との関係のシミュレーション結果の一例を示す図である。
【
図22】第1実施形態に係る学習装置の動作例を説明するフローチャートである。
【
図23】
図22に示すバッチの学習処理の動作例を説明するフローチャートである。
【
図24】第2実施形態に係る学習装置の機能構成例を示すブロック図である。
【
図25】情報記憶部が記憶する情報の一例を示す図である。
【
図26】小数点位置の補正処理の一例を説明する図である。
【
図27】第3実施形態に係る学習装置の機能構成例を示すブロック図である。
【
図28】予測器のネットワーク構成の一例を示す図である。
【
図29】予測器の学習データの一例を説明する図である。
【
図30】第3実施形態に係る学習装置の動作例を説明するフローチャートである。
【
図31】
図30に示すバッチの学習処理の動作例を説明するフローチャートである。
【
図32】第1~第3実施形態に係るコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【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,及びsmの層(レイヤ)21を含んでよい。
図3に示すように、CNN20に対する深層学習処理では、入力データに対応する正解データがCNN20に与えられる。学習装置1は、CNN20に対し入力データを
図3の紙面左方向から入力し、各層21の処理結果を紙面右方向へ伝播させる(順伝播)。そして、学習装置1は、入力データに対する出力データと正解データとを比較し、結果の差分を紙面左方向へ伝播させる(逆伝播)。
【0017】
例えば、入力データに対して、Conv_1のパラメータの積和演算を実行することで、Conv_1層の畳み込み演算が実行される。Conv_1,Conv_2,fc1,及びfc2の各層21はパラメータを保持している。CNN20の最上位の層21(
図3に示すsm)で演算結果が正解データと比較され、比較結果を基に各層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イタレーションで全画像データを入力したことになる。
【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】
情報記憶部15は、記憶部の一例であり、決定部14による小数点位置の決定に利用される、統計情報に基づき得られる情報を記憶する。決定部14及び情報記憶部15の詳細は後述する。
【0027】
〔1-2〕固定小数点数の小数点位置について
図6は、CNN20の各層21における変数(パラメータ)のデータ表現例を示す図である。深層学習においてパラメータを学習させる際には、膨大な計算量により計算負荷及びメモリ負荷等の負荷がかかり、パラメータの学習時間が長くなる。
【0028】
ここで、第1実施形態においては、パラメータの学習時間を短縮させるために、上述のように、学習の際に用いる数値を、浮動小数点数(例えば32ビット浮動小数点数)ではなく固定小数点数(例えば16ビット又は8ビット固定小数点数等)によって表現する。
【0029】
学習の際に用いる数値を固定小数点数によって表現することで、
図6に示すように、データ量を削減でき、計算負荷及びメモリ負荷等の負荷を低減できるため、パラメータの学習時間を短縮できる。
【0030】
しかし、固定小数点数は、浮動小数点数に比べ表現可能な数値範囲が狭い。このため、固定小数点数によって表現された数値による学習処理では、学習結果の精度が低くなることがある。
【0031】
そこで、深層学習の学習中に統計情報を取得して、学習に用いる変数の小数点位置を調整することが考えられる。
図7は、比較例に係る学習装置100による処理を示す図である。学習装置100は、
図7に例示するように、以下の(A)~(C)の処理を学習終了まで実行する。
【0032】
(A)学習装置100は、所定回数(例えばK回)のミニバッチを学習中に、各レイヤ210の各変数の統計情報を保存する(
図7の符号A参照)。
【0033】
ここで、統計情報は、例えば、以下のいずれか、又は、これらの組み合わせを含んでよい。学習装置100が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理に従ってプロセッサは、Dynamic Fixed Point(動的固定小数点数)演算のための命令を実行する。
【0034】
・非符号となる最上位ビット位置の分布
・非ゼロとなる最下位ビット位置の分布
・非符号となる最上位ビット位置の最大値
・非ゼロとなる最下位ビット位置の最小値
【0035】
このように、統計情報は、ミニバッチの学習の繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する情報であるといえる。
【0036】
図8は、非符号となる最上位ビットの分布を表すヒストグラムの一例を示す図である。
図8において、縦軸は非符号となる最上位ビット位置の出現個数を示し、横軸は最上位ビット位置を示す。
図8の例では、ビット0の紙面右側に小数点があると仮定する。最上位ビット位置の一例としては、Count Leading Sign(CLS)の値が挙げられる。CLSは、正数最上位のビット1の位置(負数で最上位のビット0の位置)を示してよい。
【0037】
「表現可能な領域」は、16ビット固定小数点数の数値範囲に含まれる、非符号となる最上位ビットが分布する数値の領域を示す。「飽和される領域」は、上記数値範囲を超え、飽和処理が実行される最上位ビットが分布する数値の領域を示す。飽和処理は、例えば、正の数がオーバーフローした際には正の最大値に、負の数がアンダーフローした際は負の最小値にクリップする処理である。表現可能な領域では表現できない微小な分解能を表すビットが出てきた場合、丸め処理が行なわれる。なお、丸め処理は、アンダーフローが発生した場合に限らず、飽和以外のケースで行なわれてもよい。例えば、アンダーフローが発生した場合は、正の場合は確率的に0又は正の最小値に、負の場合は確率的に0又は負の最大値に丸められてよい。その他のケースにおいても小数点以下が丸められてもよい。
【0038】
(B)ミニバッチを学習中にオーバーフローが発生した場合、学習装置100は、飽和処理を行ない、学習を続行する(
図7の符号B参照)。
【0039】
(C)学習装置100は、K回のミニバッチ終了後、各レイヤ210の各変数について、統計情報に基づき、固定小数点数の小数点位置を調整する。
【0040】
例えば、学習装置100は、或るレイヤ210の変数について、同一レイヤ210の統計情報に基づき小数点位置を調整する。学習装置100は、このような調整を、レイヤ210ごと及び変数ごとに実行する。
【0041】
図9及び
図10は、小数点位置の更新処理の一例を示す図であり、
図9は統計情報に出現する最上位ビットの分布が、学習装置100の表現可能な領域に収まらない場合を示し、
図10は統計情報に出現する最上位ビットの分布が、表現可能な領域内の場合を示す。
【0042】
図9に示すように、現在のビット精度が(Q5.10)である場合、学習装置100は、次のビット精度として、全体のデータ数に対する或る「数値範囲」のデータ数の割合がオーバーフロー率rmax未満となる、最大の「数値範囲」を決定する。
図9の例では、学習装置100は、次のビット精度を(Q3.12)に決定する。なお、オーバーフロー率rmaxは、例えばユーザにより指定されてよい。ビット精度は、ビットデータを定義するQフォーマットであってよく、例えば(Q5.10)は、符号ビット1桁、整数部5桁、小数点以下10桁の16ビットデータを定義する。
【0043】
図10に示すように、現在のビット精度が(Q3.12)である場合、学習装置100は、例えば、ヒストグラムのピークが次のビット精度の中央に位置するように調整する。
図10の例では、学習装置100は、次のビット精度を(Q1.14)に調整する。なお、学習装置100は、ヒストグラムの出現個数の平均に合わせるように、ビット精度を調整してもよい。
【0044】
ここで、CNN200を含むDNNでは、学習の進捗に応じて各レイヤ210のパラメータや演算結果出力の分布が変化する。上述した比較例に係る学習装置100は、動的固定小数点を用いた学習において、K回のミニバッチ処理で取得した統計情報から、次のK回のミニバッチ処理で使用する小数点位置を決定する。
【0045】
しかし、各ミニバッチのデータ(1回分の学習用データ)は一様ではなく、ミニバッチの入力データや、逆伝播によりフィードバックする誤差の値の分布が変動するため、中間の値の分布が変動する。分布の変動が大きいと、小数点位置と実際のパラメータや出力の分布との間で誤差が生じ、固定小数点の飽和処理や丸め処理による量子化誤差が大きくなるため、学習が不安定になる、換言すれば、認識精度の低下が生じることがある。
【0046】
図11は、t~t+2番目のミニバッチのCLSの分布情報S(t)~S(t+2)の一例を示す図であり、K=1を想定している。各バッチのデータは一様ではないため、入力データ及び正解データの変動により、
図11に示すように、値の分布が変動する。
図11の例では、斜線で示す領域が飽和領域、薄い網掛けで示す領域が丸め領域、濃い網掛けで示す領域が表現可能領域である。
【0047】
図11に例示するように、CLSの分布の変動が大きい場合、S(t+1)に基づき小数点位置を決定すると、S(t+2)において、飽和領域に含まれる出現個数が増加する。このように、1イタレーション(1iter)前の分布に基づき小数点位置を決定すると、分布の変動により量子化誤差が大きくなることがある。
【0048】
そこで、第1実施形態に係る学習装置1は、K回の統計情報によって決定される小数点位置に対して、前のレイヤの統計情報を使って小数点位置を調整、例えば補正することで、学習モデルの学習結果の精度低下を抑制する。
【0049】
図12及び
図13は、小数点位置の補正処理の一例において利用される統計情報22を示す図である。
【0050】
図12及び
図13に例示するように、前のレイヤ21とは、データの伝播方向に対して、小数点位置の補正対象のレイヤ21よりも前方の1以上のレイヤ21、換言すれば、補正対象のレイヤ21に対するデータの入力側の1以上のレイヤ21を意味してよい。
【0051】
例えば、
図12に示すフォワード(順伝播)の場合、小数点位置の補正対象のレイヤ21eよりも前のレイヤ21は、レイヤ21eの前方のレイヤ21a~21dのうちの少なくとも1つのレイヤ21となる。
図12の例では、学習装置1は、レイヤ21a~21dのそれぞれの統計情報22a~22dを利用して、レイヤ21eの小数点位置を補正してよい。
【0052】
一方、例えば、
図13に示すバックワード(逆伝播)の場合、小数点位置の補正対象のレイヤ21eよりも前のレイヤ21は、レイヤ21eの後方のレイヤ21f~21pのうちの少なくとも1つのレイヤ21となる。
図13の例では、学習装置1は、レイヤ21f~21pのそれぞれの統計情報22f~22pを利用して、レイヤ21eの小数点位置を補正してよい。
【0053】
図14は、学習の進みと小数点位置の決定処理との一例を説明するための図である。学習装置1は、比較例と同様の手法によって、CNN20を、所定回数、例えばK回のミニバッチにより学習させる。
【0054】
学習装置1は、CNN20の学習中に、各イタレーションにおいて、レイヤ21a~21pの学習で得られる統計情報22a~22pを順次取得し、集積する。これらの統計情報22は、例えば、CNN20の学習及び推論を実行するLSI等のハードウェアに設けられる又は接続される、レジスタ又はメモリ等に格納されてよい。
【0055】
学習装置1は、ミニバッチのK回分の学習(イタレーションt-K~t-1)の統計情報22に基づき、各レイヤ21の小数点位置を更新する。例えば、学習装置1は、統計情報22a~22gに基づき、イタレーションtのレイヤ21a~21gの基準となる固定小数点数をそれぞれ決定する。決定された固定小数点数は、イタレーションtを含む次のK回(イタレーションt~t+K-1)のミニバッチの学習の基準として用いられてよい。
【0056】
また、学習装置1は、イタレーションtにおける各レイヤ21の学習において、現レイヤ21の前のレイヤ21の統計情報を利用して、小数点位置を順次補正する。
【0057】
例えば、学習装置1は、レイヤ21bの順伝播演算と、統計情報22bの保存とを実行する前に、イタレーションtにおけるレイヤ21aの統計情報22a(22A)に基づいて、レイヤ21bの小数点位置を補正する。同様に、学習装置1は、レイヤ21a及び21bの統計情報22a及び22b(統計情報22B)に基づきレイヤ22cの小数点位置を補正し、レイヤ21a~21cの統計情報22a~22c(統計情報22C)に基づきレイヤ22dの小数点位置を補正する。レイヤ22e以降も同様である。なお、学習装置1は、逆伝播演算の場合は、逆方向、すなわち、レイヤ21pからレイヤ21bの統計情報に基づいて、レイヤ21の小数点位置を補正してよい。
【0058】
〔1-3〕小数点位置の補正処理の一例
CNN20における各レイヤ21の出力の分布は、ミニバッチの画像の組み合わせに影響を受ける。また、各レイヤ21における重みのパラメータは、勾配法等により少しずつ変化していく。そこで、第1実施形態では、以下に例示する手法により、ミニバッチの特徴から、バッチごとの分布のブレを予測し、小数点位置を補正する補正処理を行なう。
【0059】
例えば、決定部14は、学習部12によるミニバッチの学習中に、CNN20の各層21の各変数に関する統計情報22を取得し、取得した統計情報22から得られる情報を情報記憶部15に保存する。
【0060】
情報記憶部15には、
図15に例示するように、学習処理の繰り返し回数(換言すればイタレーション)を表す繰り返し回数iと、CNN20のレイヤ21ごとの統計情報22から得られる「特徴値」及び「差分値」とが対応付けられて格納される。
【0061】
「差分値」は、統計情報22に基づき得られる、固定小数点数データの小数点位置の誤差の一例であり、例えば、現小数点位置と理想の小数点位置との差分(例えば、整数部のビット数の差分)の値である。現小数点位置は、前イタレーションにおける同一レイヤ21の統計情報22から決定される小数点位置である。理想の小数点位置は、現イタレーションにおける統計情報22から求められる小数点位置である。
【0062】
例えば、決定部14は、イタレーションtのレイヤ1の「差分値」として、
図15に示すように、前イタレーションt-1の統計情報22から決定した現小数点位置と、現イタレーションtの統計情報22から求められる理想の小数点位置との差分である「0」を算出する。
【0063】
「特徴値」は、統計情報22から得られる小数点位置の特徴に関する情報であり、飽和桁数、ヒストグラムの重心、及び、ヒストグラムそのもの、等のうちの少なくとも1種以上の要素を含んでよい。
【0064】
「飽和桁数」は、
図16に例示するように、統計情報22が「0」よりも大きくなる最上位桁と固定小数点数である数値の有効範囲との差分である。
図15には、特徴値として、飽和桁数を例示している。
【0065】
「ヒストグラムの重心」は、
図17に例示するように、統計情報22により表現されるヒストグラムに基づき、以下の式(2)により算出されてよい。
【0066】
【0067】
「ヒストグラム」は、統計情報22そのものであってもよいし、統計情報22の一部、又は、統計情報22を加工して得られる情報であってもよい。
【0068】
決定部14は、学習中に、レイヤ21ごとに、差分値及び特徴値を取得(算出)し、数得した情報を保存情報として情報記憶部15に保存してよい。
【0069】
また、決定部14は、或るレイヤ21の学習を開始する前に、情報記憶部15に設定された、当該或るレイヤ21よりも前のレイヤ21に関する保存情報に基づき、当該或るレイヤ21の学習で用いる変数の小数点位置を補正する。
【0070】
図18は、小数点位置の補正処理の一例を説明する図である。決定部14は、例えば、学習を開始するレイヤ(自レイヤ)21よりも前のレイヤ21に関する過去T(Tは1以上の整数)回分の保存情報から、今回のイタレーションと類似するエントリを検索する。
【0071】
例えば、決定部14が、レイヤL(第1の層)についての小数点位置を補正するための補正値を決定する場合を説明する。決定部14は、レイヤLよりも前のレイヤ1~L-1(第2の層)についての学習のt(tは2以上の整数)回目の繰り返しにおける誤差の傾向と類似する、t回目よりも前であるx(xはt未満の整数)回目の繰り返しを特定する。なお、第1の層(例えばレイヤL)に対する第2の層とは、例えば、ニューラルネットワークにおける先頭のレイヤ21から、第1の層の1つ前のレイヤ21までのレイヤ21のうちの、いずれか1つ以上のレイヤ21又は2以上の組み合わせのレイヤ21であると捉えられてよい。以下の説明では、第2の層として、レイヤ1~L-1を用いるものとする。
【0072】
図18の例では、決定部14は、イタレーションtにおいて、レイヤLの学習を開始する際に、イタレーションtのレイヤ1~L-1の保存情報と類似するエントリを、イタレーションt-T~t-1のレイヤ1~L-1の保存情報から検索する。例えば、決定部14は、情報記憶部15から、現イタレーションtのエントリ(符号A参照)と最も類似するイタレーションのエントリ(符号B参照)を検出する。
【0073】
類似の判定において、決定部14は、例えば、差分値どうしの差異及び特徴値どうしの差異の少なくとも一方を、レイヤ1~L-1の全てのレイヤ21について合計又は平均等の演算を行なった結果が小さいほど、エントリ間(イタレーション間)の類似度が高いと判定してよい。類似の判定は、上述した手法に限定されず、種々の手法が用いられてよい。
【0074】
そして、決定部14は、特定したx回目の繰り返しにおけるレイヤLの誤差に基づき、t回目の繰り返しにおけるレイヤLについての補正値を決定する。
【0075】
例えば、決定部14は、類似すると判定した(検出した)イタレーションにおいてレイヤLに設定されている「差分値」を、イタレーションtのレイヤLに設定する補正値(予測値)として利用する。
【0076】
補正値は、小数点位置を補正するための「オフセット量」、例えばオフセット値の一例である。換言すれば、決定部14は、繰り返しごとの誤差の傾向に基づき、学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する。
【0077】
図18の例では、決定部14は、符号Bで示すエントリにおけるレイヤLの差分値である「1」を、符号Aで示す現イタレーションtにおけるレイヤLの補正値として利用する。例えば、決定部14は、イタレーションt-K~t-1の統計情報22に基づき更新されたレイヤLの固定小数点数(
図14参照)を、イタレーションtのレイヤLにおいて、「差分値」に従い、整数ビットに「1」桁追加させてよい。
【0078】
なお、
図18に示す例では、決定部14は、情報記憶部15に保存された保存情報のうち、「差分値」及び「特徴値」の双方に基づいて、エントリ間の類似の判断を行なう場合を示すが、これに限定されるものではない。例えば、決定部14は、「差分値」及び「特徴値」の一方に基づいて、エントリ間の類似の判断を行なう。
【0079】
また、
図18に示す例では、決定部14は、補正対象のレイヤ21よりも前の全てのレイヤ21の履歴(統計)に基づいて、補正対象のレイヤ21の補正値を求める場合を示すが、これに限定されるものではない。
【0080】
決定部14は、例えば、補正対象のレイヤ21(換言すれば第1の層)よりも前の、一部のレイヤ21(換言すれば第2の層)の履歴に基づいて、補正対象のレイヤ21の補正値を求めてもよい。一例として、決定部14は、補正対象のレイヤ21よりも前のレイヤ21のうち、レイヤ1のみ、補正対象のレイヤ21が属するブロックの先頭のレイヤ21のみ、或いは、これらのレイヤ21の組み合わせ、等の履歴を利用してもよい。
【0081】
図19は、決定部14が、ブロックの最初のレイヤ21の履歴を利用する場合を例示する図である。
図19に例示するように、CNN20のレイヤ21は、入力データに対する処理工程等に応じて、連続した2以上のレイヤ21単位のブロック23(
図19の例ではブロック23a~23f)にグループ化(分類)されることがある。同一ブロック23内のレイヤ21どうしは、異なるブロック23間のレイヤ21どうしよりも、パラメータの固定小数点位置の変動傾向の相関が強い場合がある。
【0082】
そこで、決定部14は、例えば、イタレーションtにおいてレイヤ21gの補正値を求める場合、レイヤ21gが属するブロック23cの先頭レイヤ21eを、類似の判定対象に決定してよい。この場合、決定部14は、イタレーションtにおけるレイヤ21eの保存情報と類似するエントリを、レイヤ21eのイタレーションt-T~t-1から検索し、最も類似するエントリにおけるレイヤ21gの「差分値」を、レイヤ21gの補正値に決定してよい。なお、決定部14は、例えば、イタレーションtにおいてレイヤ21gの補正値を求める場合、レイヤ21gが属するブロック23cの、レイヤ21gよりも前の複数のレイヤ21(例えば、先頭レイヤ21e及びレイヤ21f)を、類似の判定対象に決定してもよい。換言すれば、第1の層(例えばレイヤ21g)に対する第2の層は、例えば、レイヤ21gが属するブロック23c内における、先頭のレイヤ21eから、レイヤ21gの1つ前のレイヤ21fまでのレイヤ21のうちのいずれか1つ以上のレイヤ21又は2以上の組み合わせのレイヤ21であってよい。
【0083】
或いは、決定部14は、レイヤ21gが属するブロック23cの先頭レイヤ21eに加えて、レイヤ21gよりも前のブロック23a及び23bのそれぞれの先頭レイヤ21a及び21cのうちの少なくとも1つを、類似の判定対象に決定してもよい。
【0084】
このように、類似の判定対象とするレイヤ21を制限する(絞り込む)ことで、類似の判定の処理負荷を低減させることができ、処理時間を短縮(高速化)できる。
【0085】
なお、ここまで、順伝播の場合について説明したが、逆伝播の場合は、後方側(
図13の例ではレイヤ21p)から前方側(
図13の例ではレイヤ21a)に向かって、小数点位置の補正値が求められてよい。このとき、後方側のレイヤ21の特徴量を利用して、前方側のレイヤ21の小数点位置が補正されてよい。このように、逆伝播の場合、順伝播の場合と比較して、後方のレイヤ21から前方のレイヤ21に向かう順序で小数点位置の補正値が求められる点、並びに、前方のレイヤ21の統計情報22ではなく後方のレイヤ21の統計情報22を利用する点が異なるが、その他の処理については順伝播の場合と同様であってよい。一例として、逆伝播の場合において、補正対象のレイヤ21がレイヤ21eである場合、レイヤ21eの後方のレイヤ21f~21pの統計情報22f~22p等のうちの少なくとも1つを利用して、レイヤ21eの小数点位置が補正されてよい。
【0086】
図20及び
図21は、それぞれ、順伝播及び逆伝播における、上述した手法により決定された補正値(予測値)と実際の差分値との関係のシミュレーション結果の一例を示す図である。
【0087】
第1実施形態に係る手法によれば、フォワードの場合におけるconv5_4(
図20参照)、及び、バックワードの場合におけるconv2_2(
図21参照)のいずれにおいても、小数点位置を適切に補正できたケースが多いことがわかる。
【0088】
以上のように、第1実施形態に係る学習装置1によれば、情報記憶部15が、統計情報22に基づき得られる、固定小数点数データの小数点位置の誤差を記憶する。そして、決定部14が、繰り返しごとの誤差の傾向に基づき、学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する。
【0089】
これにより、例えば、ミニバッチの入力データや、フィードバックする誤差の値の分布が変動する場合であっても、適切な小数点位置に補正することができるため、学習モデルの学習結果の精度低下を抑制することができる。
【0090】
従って、動的固定小数点数を適用できるニューラルネットワークを増加させることができる。
【0091】
また、深層学習を固定小数点数により精度良く実行できるため、データ転送量や演算器の回路規模を削減でき、消費電力を削減できる。例えば、32ビット浮動小数点数を16ビット固定小数点数に削減する場合、メモリ使用量及びデータ転送量を半減させることができる。また、LSIにおける積和演算の回路規模を、約半分とすることができる。
【0092】
〔1-4〕動作例
次に、
図22及び
図23を参照して、第1実施形態に係る学習装置1の動作例を説明する。
図22は、第1実施形態に係る学習装置1の動作例を説明するフローチャートであり、
図23は、
図22に示すバッチの学習処理の動作例を説明するフローチャートである。
【0093】
図22に例示するように、学習装置1は、初期小数点位置の決定(ステップS1)、回数k=0の設定(ステップS2)、及び、統計情報22の初期化(ステップS3)を行なう。
【0094】
学習装置1の学習部12は、CNN20の学習終了か否かを判定する(ステップS4)。学習終了と判定した場合(ステップS4でYes)、処理が終了する。一方、学習終了ではないと判定した場合(ステップS4でNo)、処理がステップS5に移行する。なお、学習終了の判定基準としては、例えば、学習結果のエラーが閾値を下回ったこと、学習結果の精度が閾値を超えたこと、学習回数が閾値を超えたこと、等の種々の基準のうちのいずれか1つ、又は、2つ以上の組み合わせが用いられてよい。
【0095】
ステップS5において、学習部12は、CNN20に対するバッチの学習を行ない、各レイヤ21の統計情報22を累積する。
【0096】
また、学習部12は、kに1を加算し(ステップS6)、kが更新間隔Kに達したか否かを判定する(ステップS7)。kが更新間隔Kに達していないと判定した場合(ステップS7でNo)、処理がステップS4に移行する。一方、kが更新間隔Kに達したと判定した場合(ステップS7でYes)、処理がステップS8に移行する。
【0097】
ステップS8において、決定部14は、各種の統計情報22に基づき、各レイヤ21の各変数の小数点位置を更新する。ここで更新される小数点位置は、次の更新間隔において各変数の表現に利用される。
【0098】
また、決定部14は、k=0に設定(初期化)し(ステップS9)、統計情報22をリセットし(ステップS10)、処理がステップS4に移行する。
【0099】
なお、ステップS1~S3の処理順序は、
図22の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。また、ステップS9及びS10の処理順序は、
図22の例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。
【0100】
次に、
図22のステップS5の処理の動作例を説明する。
図23に例示するように、学習部12は、バッチの学習において、順伝播の最初のレイヤ21を選択する(ステップS11)。
【0101】
決定部14は、情報記憶部15に格納された保存情報に基づき、小数点位置の補正処理を行なう(ステップS12)。なお、補正処理は、CNN20のフォワード順の最初のレイヤ21、例えば、
図12のフォワードの例における先頭レイヤ21a(CNN20構造における最初のレイヤ21a)に対しては省略されてよい。
【0102】
学習部12は、決定部14が補正した小数点位置を適用して、当該レイヤ21の順伝播演算及び統計情報22の取得を行なう(ステップS13)。
【0103】
決定部14は、当該レイヤ21について、特徴値及び差分値を算出して、保存情報として情報記憶部15に保存する(ステップS14)。
【0104】
学習部12は、選択中のレイヤ21が順伝播の最後のレイヤ21(
図12の例ではレイヤ21p)か否かを判定する(ステップS15)。順伝播の最後のレイヤ21ではないと判定した場合(ステップS15でNo)、学習部12は、順伝播方向の次のレイヤ21を選択し、処理がステップS12に移行する。一方、順伝播の最後のレイヤ21であると判定した場合(ステップS15でYes)、学習部12は、逆伝播の最初のレイヤ21を選択する(ステップS16)。
【0105】
決定部14は、情報記憶部15に格納された保存情報に基づき、小数点位置の補正処理を行なう(ステップS17)。なお、補正処理は、CNN20のバックワード順の最初のレイヤ21、例えば、
図13のバックワードの例における先頭レイヤ21p(CNN20構造における最後のレイヤ21p)に対しては省略されてよい。
【0106】
学習部12は、決定部14が補正した小数点位置を適用して、当該レイヤ21の逆伝播演算及び統計情報22の取得を行なう(ステップS18)。
【0107】
決定部14は、当該レイヤ21について、特徴値及び差分値を算出して、保存情報として情報記憶部15に保存する(ステップS19)。
【0108】
学習部12は、選択中のレイヤ21が逆伝播の最後のレイヤ21(
図13の例ではレイヤ21a)か否かを判定する(ステップS20)。逆伝播の最後のレイヤ21ではないと判定した場合(ステップS20でNo)、学習部12は、逆伝播方向の次のレイヤ21を選択し、処理がステップS17に移行する。一方、逆伝播の最後のレイヤ21であると判定した場合(ステップS20でYes)、学習部12は、順伝播の最初のレイヤ21を選択する(ステップS21)。
【0109】
学習部12は、選択したレイヤ21に対して、重み及びバイアス更新、並びに、統計情報22の取得を行ない(ステップS22)、選択中のレイヤ21が順伝播の最後のレイヤ21(
図12の例ではレイヤ21p)か否かを判定する(ステップS23)。順伝播の最後のレイヤ21ではないと判定した場合(ステップS23でNo)、学習部12は、順伝播方向の次のレイヤ21を選択し、処理がステップS22に移行する。一方、順伝播の最後のレイヤ21であると判定した場合(ステップS23でYes)、処理が終了する。
【0110】
〔2〕第2実施形態
次に、第2実施形態について説明する。第2実施形態は、第1実施形態に係る決定部14の処理を簡略化した実施形態と位置付けることができる。
【0111】
図24は、第2実施形態に係る学習装置1Aの機能構成例を示すブロック図である。
図24に例示するように、学習装置1Aは、第1実施形態に係る学習装置1が備える決定部14及び情報記憶部15に代えて、決定部14A及び情報記憶部15Aを備える。なお、以下で言及しない説明については、第1実施形態と同様である。
【0112】
決定部14Aは、決定部14とは異なり、
図25に例示するように、情報記憶部15Aに対して、現イタレーション分(1イタレーション分)の特徴値及び差分値を保存する。
【0113】
例えば、決定部14Aは、
図26に示すように、学習を開始するレイヤ(自レイヤ)21よりも前のレイヤ21の現イタレーションtの保存情報に基づき、レイヤLの補正値を決定する。
【0114】
一例として、決定部14Aは、レイヤLの補正値として、最初のレイヤ21(
図12の例ではレイヤ21a)の差分値を利用してもよいし、
図19に例示するように、レイヤLの属するブロック23における先頭のレイヤ21の差分値を利用してもよい。或いは、決定部14Aは、先頭のブロックレイヤ1~レイヤL-1の差分値の平均又は加重平均等の演算結果を利用してもよい。
【0115】
なお、決定部14Aは、フォワード順又はバックワード順の最初のレイヤ21については、第1実施形態と同様に、補正値の算出を省略し、K回(更新間隔)単位で算出される小数点位置の更新結果を利用してよい。
【0116】
以上のように、第2実施形態に係る学習装置1Aによっても、第1実施形態と同様の効果を奏することができる。また、情報記憶部15A内の現イタレーションtの差分値が、レイヤLの小数点位置の補正値として利用されるため、類似の判定処理を省略でき、処理負荷の低減を図ることができるため、処理時間の短縮(高速化)を図ることができる。
【0117】
〔3〕第3実施形態
次に、第3実施形態について説明する。第3実施形態は、レイヤ21ごとの補正値を、深層学習により予測する実施形態と位置付けることができる。
【0118】
図27は、第3実施形態に係る学習装置1Bの機能構成例を示すブロック図である。
図27に例示するように、学習装置1Bは、第1実施形態に係る学習装置1が備える決定部14に代えて、決定部14Bを備える。なお、以下で言及しない説明については、第1実施形態と同様である。
【0119】
決定部14Bは、レイヤLの補正値を、深層学習により、学習部12によるCNN20の学習と同時に学習し、推論することにより求める。
【0120】
決定部14Bは、第1実施形態と同様に、T回分のミニバッチの統計情報22を含む特徴値と、補正値、換言すれば現小数点位置と理想値との差分値と、を含む保存情報を、情報記憶部15Bに保存してよい。
【0121】
例えば、決定部14Bは、
図28に示すように、補正値(オフセット量)決定用の学習モデルの一例である予測器30を学習させてよい。
図28は、予測器30のネットワーク構成の一例を示す図である。予測器30は、一例として、層(レイヤ)31a~31cを備える3層程度のネットワーク構成であってよい。なお、これらのレイヤ31は、いずれも、全結合層(fc)であってよい。
【0122】
決定部14Bは、T回のミニバッチごとに、予測器30を学習し、予測器30を用いて補正値を予測してよい。なお、予測器30の学習間隔Tと、CNN20における小数点位置の更新間隔Kとは、例えば、T=K×N(Nは1以上の整数)の関係を有してよい。換言すれば、T=Kに限定されない。
【0123】
このように、決定部14Bは、学習間隔Tにおいて情報記憶部15Bに保存したデータを用いて、予測器30を学習させる。
【0124】
図29は、予測器30の学習データの一例を説明する図である。
図29に例示するように、予測器30の学習においては、レイヤLの場合、学習データとして、CNN20の各レイヤ21(レイヤ1~L-1)の統計情報22が用いられてよい。また、決定部14Bは、正解ラベルとして、レイヤLの差分値を利用してよい。
【0125】
例えば、決定部14Bは、「(L-1)×w」個の統計情報22を学習データとして利用し、これらの学習データの正解データとして、情報記憶部15Bに保存した差分値を利用して、
図28に例示する予測器30を学習させてよい。なお、(L-1)は、自レイヤLよりも前のレイヤ数を示し、wは、統計情報22のビット幅を示す。決定部14Bは、統計情報22として、情報記憶部15Bに保存された特徴値を利用してもよいし、CNN20を実現するアクセラレータにおいて保存される統計情報22を参照し利用してもよい。
【0126】
そして、決定部14Bは、学習した予測器30を用いて、レイヤLの補正値を予測する。例えば、決定部14Bは、予測器30に対して、各レイヤ21(レイヤ1~L-1)の統計情報22を入力とし、補正値(例えば実数)を出力として、レイヤLの小数点位置の補正値を予測(決定)する。なお、決定部14Bは、予測器30から出力される実数の補正値に対して、整数への丸め処理を行なってよい。
【0127】
次に、
図30及び
図31を参照して、第3実施形態に係る学習装置1Bの動作例を説明する。
図30は、第3実施形態に係る学習装置1Bの動作例を説明するフローチャートであり、
図31は、
図30に示すバッチの学習処理の動作例を説明するフローチャートである。なお、
図30において、
図22と同一の符号が付された処理は、
図22に示す処理と同様である。また、
図31において、
図23と同一の符号が付された処理は、
図23に示す処理と同様である。
【0128】
図30に示すように、ステップS2の後、ステップS31において、学習装置1Bは、t=0に設定(初期化)し、処理がステップS3に移行する。
【0129】
ステップS4でNoの場合、ステップS32において、学習部12は、バッチの学習及びレイヤ21の各変数の統計情報22の累積を行なう。このとき、決定部14Bは、後述するステップS37で学習が行なわれた予測器30に基づき、レイヤ21の小数点位置を補正する。
【0130】
ステップS6の後、ステップS33において、決定部14Bは、tに1を加算し、処理がステップS34に移行する。
【0131】
ステップS34において、学習部12は、kが更新間隔Kに達したか否かを判定する。kが更新間隔Kに達していないと判定した場合(ステップS34でNo)、処理がステップS36に移行する。一方、kが更新間隔Kに達したと判定した場合(ステップS34でYes)、処理がステップS8に移行する。
【0132】
ステップS9の後、ステップS35において、決定部14Bは、統計情報22をリセットし、処理がステップS36に移行する。
【0133】
ステップS35の後、又は、ステップS34でNoの場合、ステップS36において、決定部14Bは、tが学習間隔Tに達したか否かを判定する。tが学習間隔Tに達していないと判定した場合(ステップS36でNo)、処理がステップS4に移行する。一方、tが学習間隔Tに達したと判定した場合(ステップS36でYes)、処理がステップS37に移行する。
【0134】
ステップS37において、決定部14Bは、予測器30を利用して、各レイヤ21の補正値の学習を実行し、処理がステップS38に移行する。
【0135】
ステップS38において、決定部14Bは、t=0に設定(初期化)し、処理がステップS4に移行する。
【0136】
なお、ステップS1~S3及びS31の処理順序は、
図30に示す例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。また、ステップS6及びS44の処理順序は、
図30に示す例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。さらに、ステップS9及びS35の処理順序は、
図30に示す例に限定されず、いずれの処理が先に行なわれてもよく、或いは、これらの処理が並行して行なわれてもよい。
【0137】
次に、
図30のステップS32の処理の動作例を説明する。
図31に例示するように、決定部14Bは、ステップS11の後、又は、ステップS15でNoの場合、ステップS41において、予測器30に基づきレイヤ21の補正値を予測し、予測した補正値を用いて小数点位置を補正して、処理がステップS13に移行する。
【0138】
ステップS13の後、ステップS42において、決定部14Bは、統計情報22及び差分値を保存情報として情報記憶部15Bに保存し、処理がステップS15に移行する。
【0139】
ステップS16の後、又は、ステップS20でNoの場合、ステップS43において、決定部14Bは、予測器30に基づきレイヤ21の補正値を予測し、予測した補正値を用いて小数点位置を補正して、処理がステップS18に移行する。
【0140】
ステップS18の後、ステップS44において、決定部14Bは、統計情報22及び差分値を保存情報として情報記憶部15Bに保存し、処理がステップS20に移行する。
【0141】
以上のように、第3実施形態に係る学習装置1Bによっても、第1及び第2実施形態と同様の効果を奏することができる。また、統計情報22に基づき、予測器30を利用して、レイヤLの小数点位置の補正値が予測されるため、予測器30の学習が進むにつれて、より高精度に補正値を決定することができる。
【0142】
なお、第3実施形態において、予測器30への入力データとするレイヤ21の統計情報22を、先頭のレイヤ21やブロック23の先頭のレイヤ21等の統計情報22に制限してもよい。これにより、第1及び第2実施形態と同様に、処理負荷の低減を図ることができ、処理時間を短縮(高速化)できる。
【0143】
〔4〕ハードウェア構成例
図32は、コンピュータ10のハードウェア(Hardware;HW)構成例を示すブロック図である。第1、第2及び第3実施形態に係る学習装置1、1A及び1Bの機能は、例えば、
図32に示すコンピュータ10のHW(HWリソース)により実現されてよい。なお、学習装置1、1A及び1Bの機能を実現するHWリソースとして、複数のコンピュータが用いられる場合、各コンピュータが
図32に例示するHW構成を備えてよい。
【0144】
図32に示すように、コンピュータ10は、例示的に、プロセッサ10a、メモリ10b、LSI10c、LSI用メモリ10d、記憶部10e、Interface(IF)部10f、Input / Output(I/O)部10g、及び読取部10hを備えてよい。
【0145】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10kにより相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0146】
プロセッサ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の略称である。
【0147】
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDynamic Random Access Memory(DRAM)等の揮発性メモリが挙げられる。
【0148】
LSI10cは、固定小数点数の小数点位置を動的に変更するためのプロセッサを備え、プロセッサ10aと協働して、所定の処理を実行するHWである。LSI10cは、バス10k経由でプロセッサ10aから動作を制御されてよい。例えば、LSI10cは、複数(例えば比較的多数)の積和演算器と、複数(例えば比較的少数)の特殊演算器とを備えてよい。
【0149】
一例として、第1~第3実施形態に係るLSI10cは、学習部12として動作するプロセッサ10aからの指示(制御)に応じて、CNN20の学習及び推論等の処理を実行してよい。また、第3実施形態に係るLSI10cは、決定部14Bとして動作するプロセッサ10aからの指示(制御)に応じて、予測器30の学習及び推論等の処理を実行してよい。
【0150】
なお、LSI10cには制御コア(図示省略)が含まれてもよい。この場合、例えば、バス10k経由でプロセッサ10aと制御コアとが通信処理を行ない、プロセッサ10aから出力された制御情報を得た制御コアがLSI10c全体を制御してよい。
【0151】
LSI10cとしては、例えば、1以上のGraphics Processing Unit(GPU)、1以上のFPGA、及び、1以上のASIC、のうちのいずれか、又は、これらの2以上の組み合わせが挙げられる。なお、上述した演算処理装置は、プロセッサ10aに加えて、LSI10cを含むものとして捉えてもよい。すなわち、プロセッサ10a及びLSI10cは、学習装置1、1A又は1Bとして、CNN20に対する学習及び推論等の演算を行なう演算処理装置の一例であるといえる。
【0152】
LSI用メモリ10dは、LSI10cに対する制御データ(制御情報)や、LSI10cの演算における入出力データ等を記憶してよく、例えば、DRAM等のメモリや、レジスタ等を含んでよい。第1~第3実施形態に係る統計情報22は、LSI用メモリ10dに格納されてもよい。或いは、統計情報22は、LSI10c内部のレジスタ等に格納されてもよい。なお、LSI用メモリ10dは、符号10mで示すバス(通信線)によりLSI10cと直接的に接続されてもよく、この場合、バス10kには接続されなくてもよい。
【0153】
記憶部10eは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10eとしては、Hard Disk Drive(HDD)等の磁気ディスク装置、Solid State Drive(SSD)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、Storage Class Memory(SCM)、Read Only Memory(ROM)等が挙げられる。
【0154】
また、記憶部10eは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10i(制御プログラム)を格納してよい。プログラム10iは、例えば、学習部12、並びに、決定部14、14A又は14Bを実現するプロセスを含んでよい。学習装置1、1A又は1Bのプロセッサ10aは、記憶部10eに格納されたプログラム10iをメモリ10b又はLSI用メモリ10dに展開して、プログラム10iが有する各プロセスを実行することにより、学習装置1、1A又は1Bとして動作する。
【0155】
なお、学習装置1、1A及び1Bが備える、データ記憶部11、パラメータ記憶部13、並びに、情報記憶部15又は15Aは、例えば、メモリ10b、LSI用メモリ10d、及び、記憶部10eが有する記憶領域の少なくとも一部により、実現されてよい。
【0156】
IF部10fは、インターネット等の図示しないネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10fは、Local Area Network(LAN)、或いは、光通信(例えばFibre Channel(FC))等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、プログラム10iは、当該通信IFを介して、図示しないネットワークからコンピュータ10にダウンロードされ、記憶部10eに格納されてもよい。
【0157】
I/O部10gは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
【0158】
読取部10hは、記録媒体10jに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10hは、記録媒体10jを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10hとしては、例えば、Universal Serial Bus(USB)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10jにはプログラム10iが格納されてもよく、読取部10hが記録媒体10jからプログラム10iを読み出して記憶部10eに格納してもよい。
【0159】
記録媒体10jとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、Compact Disc(CD)、Digital Versatile Disc(DVD)、ブルーレイディスク、Holographic Versatile Disc(HVD)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0160】
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、学習装置1、1A又は1Bにおいて、I/O部10g及び読取部10hの少なくとも一方は、省略されてもよい。
【0161】
〔5〕その他
上述した第1~第3実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0162】
例えば、
図1、
図24、又は
図27に示す、学習装置1、1A又は1Bが有するブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【0163】
〔6〕付記
以上の第1~第3実施形態に関し、更に以下の付記を開示する。
【0164】
(付記1)
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶する記憶部と、
前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する決定部と、を備える、
演算処理装置。
【0165】
(付記2)
前記学習モデルは、ニューラルネットワークであり、
前記記憶部は、前記誤差を、前記ニューラルネットワークに含まれる複数の層の各々について記憶し、
前記決定部は、前記オフセット量を、前記複数の層の各々について決定する、
付記1に記載の演算処理装置。
【0166】
(付記3)
前記決定部は、第1の層よりも前の第2の層について前記記憶部が記憶する誤差に基づき、前記第1の層についてのオフセット量を決定する、
付記2に記載の演算処理装置。
【0167】
(付記4)
前記決定部は、前記第2の層についての前記学習のt(tは2以上の整数)回目の繰り返しにおける誤差の傾向と類似する、前記t回目よりも前であるx(xはt未満の整数)回目の繰り返しを特定し、特定した前記x回目の繰り返しにおける前記第1の層の誤差に基づき、前記t回目の繰り返しにおける前記第1の層についてのオフセット量を決定する、
付記3に記載の演算処理装置。
【0168】
(付記5)
前記決定部は、前記第2の層についての前記統計情報と、前記第1の層についての誤差と、を用いてオフセット量決定用の学習モデルを学習させ、前記オフセット量決定用の学習モデルの学習結果に基づいて、前記第1の層についてのオフセット量を決定する、
付記3又は付記4に記載の演算処理装置。
【0169】
(付記6)
前記記憶部は、前記統計情報に基づき前記繰り返しごとに得られる特徴値を前記誤差と対応付けて記憶し、
前記決定部は、前記記憶部が記憶する前記第2の層についての誤差と特徴値との組み合わせに基づき、前記第1の層についてのオフセット量を決定する、
付記3又は付記4に記載の演算処理装置。
【0170】
(付記7)
前記第2の層は、前記ニューラルネットワークにおける先頭の層から、前記第1の層の1つ前の層までの層のうちの、いずれか1つの層又は2以上の組み合わせの層である、
付記3~6のいずれか1項に記載の演算処理装置。
【0171】
(付記8)
前記第2の層は、前記ニューラルネットワークにおける先頭の層である、
付記3~6のいずれか1項に記載の演算処理装置。
【0172】
(付記9)
前記第2の層は、前記複数の層を連続した2以上の層単位で分類したブロックのうちの、前記第1の層が属するブロック内の先頭の層である、
付記3~6のいずれか1項に記載の演算処理装置。
【0173】
(付記10)
前記第2の層は、前記複数の層を連続した2以上の層単位で分類したブロックのうちの、前記第1の層が属するブロック内における、先頭の層から前記第1の層の1つ前の層までの層のうちのいずれか1つの層又は2以上の組み合わせの層である、
付記3~6のいずれか1項に記載の演算処理装置。
【0174】
(付記11)
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶部に記憶し、
前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する、
処理をコンピュータに実行させる、制御プログラム。
【0175】
(付記12)
前記学習モデルは、ニューラルネットワークであり、
前記コンピュータに、
前記誤差を、前記ニューラルネットワークに含まれる複数の層の各々について前記記憶部に記憶し、
前記オフセット量を、前記複数の層の各々について決定する、
処理を実行させる、付記11に記載の制御プログラム。
【0176】
(付記13)
前記コンピュータに、
第1の層よりも前の第2の層について前記記憶部が記憶する誤差に基づき、前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記12に記載の制御プログラム。
【0177】
(付記14)
前記コンピュータに、
前記第2の層についての前記学習のt(tは2以上の整数)回目の繰り返しにおける誤差の傾向と類似する、前記t回目よりも前であるx(xはt未満の整数)回目の繰り返しを特定し、
特定した前記x回目の繰り返しにおける前記第1の層の誤差に基づき、前記t回目の繰り返しにおける前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記13に記載の制御プログラム。
【0178】
(付記15)
前記コンピュータに、
前記第2の層についての前記統計情報と、前記第1の層についての誤差と、を用いてオフセット量決定用の学習モデルを学習させ、
前記オフセット量決定用の学習モデルの学習結果に基づいて、前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記13又は付記14に記載の制御プログラム。
【0179】
(付記16)
前記コンピュータに、
前記統計情報に基づき前記繰り返しごとに得られる特徴値を前記誤差と対応付けて前記記憶部に記憶し、
前記記憶部が記憶する前記第2の層についての誤差と特徴値との組み合わせに基づき、前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記13又は付記14に記載の制御プログラム。
【0180】
(付記17)
所定の学習モデルを繰り返し学習させる際に、前記繰り返しごとに取得される複数の固定小数点数データの各々についての、最上位ビットの位置又は最下位ビットの位置の分布に関する統計情報、に基づき得られる、固定小数点数データの小数点位置の誤差を記憶部に記憶し、
前記繰り返しごとの誤差の傾向に基づき、前記学習に利用する固定小数点数データの小数点位置を補正するためのオフセット量を決定する、
処理をコンピュータに実行させる、制御方法。
【0181】
(付記18)
前記学習モデルは、ニューラルネットワークであり、
前記コンピュータに、
前記誤差を、前記ニューラルネットワークに含まれる複数の層の各々について前記記憶部に記憶し、
前記オフセット量を、前記複数の層の各々について決定する、
処理を実行させる、付記17に記載の制御方法。
【0182】
(付記19)
前記コンピュータに、
第1の層よりも前の第2の層について前記記憶部が記憶する誤差に基づき、前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記18に記載の制御方法。
【0183】
(付記20)
前記コンピュータに、
前記第2の層についての前記学習のt(tは2以上の整数)回目の繰り返しにおける誤差の傾向と類似する、前記t回目よりも前であるx(xはt未満の整数)回目の繰り返しを特定し、
特定した前記x回目の繰り返しにおける前記第1の層の誤差に基づき、前記t回目の繰り返しにおける前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記19に記載の制御方法。
【0184】
(付記21)
前記コンピュータに、
前記第2の層についての前記統計情報と、前記第1の層についての誤差と、を用いてオフセット量決定用の学習モデルを学習させ、
前記オフセット量決定用の学習モデルの学習結果に基づいて、前記第1の層についてのオフセット量を決定する、
処理を実行させる、付記19又は付記20に記載の制御方法。
【符号の説明】
【0185】
1、1A、1B 学習装置
10 コンピュータ
10a プロセッサ
10b メモリ
10c LSI
10d LSI用メモリ
10e 記憶部
10f IF部
10g I/O部
10h 読取部
10i プログラム
10j 記録媒体
10k バス
11 データ記憶部
12 学習部
13 パラメータ記憶部
14、14A、14B 決定部
15、15A 情報記憶部
20 CNN
21、21a~21p 層(レイヤ)
22、22a~22p 統計情報
23、23a~23f ブロック