(57)【要約】      （修正有）【課題】新たな固定小数点の桁数削減方法を打ち出すことによって、固定小数点ビット冗長化を抑制し、それによって深層神経ネットワークの訓練及び推理速度を加速することができる方法、機器ならびに深層神経ネットワークを提供する。【解決手段】深層学習を加速する方法は、深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するステップＳ２１０と、深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するステップＳ２３０と、削減後の深層神経ネットワークに対して収束するまで訓練を行うステップＳ２４０とを含む。【選択図】図２
2019204487.tif 000002
【特許請求の範囲】
【請求項１】
深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するステップと、
前記深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するステップと、
削減後の深層神経ネットワークに対して収束するまで訓練を行うステップと、を含む深層学習加速の方法。
【請求項２】
初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行うステップをさらに含み、
ここで、前記削減は、初期訓練後の深層神経ネットワークに対して実行する、請求項１に記載の方法。
【請求項３】
前記初期訓練および前記訓練において、データがオーバーフローした場合、前記データのサイズに応じて、前記データの固定小数点数フォーマットを自動調整する、請求項２に記載の方法。
【請求項４】
データがオーバーフローした場合、前記データの固定小数点数フォーマットを自動調整するステップは、
ｉ）前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定するステップと、
ｉｉ）前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を１増加し、かつ小数部分の桁数を１減少することによって、固定小数点数フォーマットを更新するステップと、
ｉｉｉ）前記操作１）およびｉｉ）を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示し、または、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回るまで繰り返し実行するステップと、
ｉｖ）更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回った場合、小数部分の桁数を増加し、それによってｍの値を増加するステップと、
ｖ）前記操作ｉ）〜ｉｖ）を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示するステップと、を含む、請求項３に記載の方法。
【請求項５】
前記訓練中に、逆方向伝播において勾配降下法を用いて前方伝播において計算した損失項の極値を求解する、請求項１〜４のうちいずれか１項に記載の方法。
【請求項６】
逆方向伝播において、まず所定比率により前記損失項を増幅し、その後、加重およびバイアスを更新する前に、前記所定比率により勾配を縮小する、請求項５に記載の方法。
【請求項７】
前記訓練において、小数部分の桁数が異なるデータ間で演算を実行する前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を実行する、請求項１〜４のうちいずれか１項に記載の方法。
【請求項８】
前記初期化において、前記データが帰属する前記深層神経ネットワークのパラメータのタイプに応じて、前記データに、対応する固定小数点数フォーマットを設定する、請求項１〜４のうちいずれか１項に記載の方法。
【請求項９】
深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するように構成された初期化装置と、
前記深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するように構成された削減装置と、
削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置と
を含む、深層学習加速機器。
【請求項１０】
前記深層神経ネットワークより処理するデータを受信する入力層と、
前記深層神経ネットワークより処理した結果を出力する出力層と、
前記入力層と前記出力層との間にカップリングされ、前記深層神経ネットワークが実現しようとする機能に応じて設計された複数の隠れ層と
を含み、
ここで、前記深層神経ネットワークは、請求項１〜８のうちいずれか１項に記載の方法により訓練を行う、深層神経ネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、深層学習加速の方法および機器ならびに深層神経ネットワークに関する。
【背景技術】
【０００２】
深層神経ネットワークの複雑なデータモデルの特徴に対する抽出能力により、深層学習の方法に基づき、数多くの実際の応用において、非常にすぐれた性能をすでに実現している。深層神経ネットワークは通常、単精度浮動小数点または倍精度浮動小数点フォーマットデータを用いて神経ネットワークを訓練および推理する。単精度浮動小数点および倍精度小数点のデータ操作には、ＣＰＵまたはＧＰＵ上の浮動小数点処理ユニットを使用する必要がある。このため、深層学習に使用するハードウェア、エネルギー消費、速度およびメモリ使用量は、単精度小数点および倍精度小数点データフォーマットによって制限される。
【０００３】
ＮＶＩＤＩＡは、単精度浮動小数点を半精度浮動小数点に圧縮することによって、処理時間を加速し、メモリ使用量を低下させた。単精度浮動小数点と比べて、半精度浮動小数点は、メモリ中で１６バイトを占め、データ精度を犠牲にしてメモリ使用量をより少なくし、速度をより速くすることを求める。ＮＶＩＤＩＡおよびマイクロソフトは、半精度浮動小数点のタイプを定義し、半精度浮動小数点タイプをＧｅＦｏｒｃｅ  ＦＸ製品中に応用した。Ｓｕｙｏｇ  Ｇｕｐｔａらの『有限精度数の深層学習（Deep  Learning  with Limited Numerical Precision）』中では、ランダム丸め法を用いて浮動小数点データ精度を限定し、深層神経ネットワークを訓練している。
【０００４】
従来技術にすでにデータの表現精度を小さくすることによって深層学習を加速する方法が存在しているが、なおその他の深層学習加速の方法の提供が望まれる。
【発明の概要】
【０００５】
以下では、本発明のいくつかの面に関して基本的に理解してもらうため、本発明に関する簡単な概略を述べる。この概要は、本発明に関する網羅的概要ではなく、本発明のキーポイントまたは重要な部分を確定することを意図したものでもなく、本発明の範囲を限定することを意図したものでもないことを理解しておかなければならない。その目的は、簡略化した形でいくつかの概念を打ち出し、それを以下の具体的実施形態部分の下地とすることにすぎない。
【０００６】
以上で述べた問題にかんがみ、本発明は、新たな固定小数点の桁数削減方法を打ち出すことによって、固定小数点ビット冗長化を抑制し、それによって深層神経ネットワークの訓練および推理速度を加速することができるようにする。
【０００７】
本発明の一面によれば、深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するステップと、前記深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するステップと、削減後の深層神経ネットワークに対して収束するまで訓練を行うステップと、を含む深層学習加速の方法を提供する。
【０００８】
本発明のもう１つの面によれば、深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するように構成された初期化装置と、前記深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するように構成された削減装置と、削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置と、を含む深層学習加速機器を提供する。
【０００９】
本発明のさらなる一面によれば、前記深層神経ネットワークより処理するデータを受信する入力層と、前記深層神経ネットワークが処理した結果を出力する出力層と、前記入力層と前記出力層との間にカップリングされ、前記深層神経ネットワークが実現しようとする機能に応じて設計された複数の隠れ層と、を含み、ここで、前記深層神経ネットワークは、本発明の深層学習加速の方法に基づいて訓練を行う深層神経ネットワークを提供する。
【００１０】
本発明のさらなる一面によれば、機械可読のプログラムコードを含み、情報処理機器上で前記プログラムコードを実行した場合、前記プログラムコードは、前記情報処理機器に本発明による上記方法を実行させる、コンピュータ可読記憶媒体をさらに提供する。
【００１１】
本発明のさらなる一面によれば、機械実行可能なコマンドを含み、情報処理システム上で前記コマンドを実行した場合、前記コマンドは、前記情報処理システムに本発明による上記方法を実行させる、プログラムをさらに提供する。
【００１２】
以下では図面に基づき、本発明の最適実施例に関する詳細な説明によって、本発明のこれらのおよびその他の長所がさらに明確になる。
【図面の簡単な説明】
【００１３】
図面を参照しながら、本発明の各実施形態を読めば、本発明のその他の特徴および長所をさらに理解しやすくなる。ここで記述する図面は、本発明の実施形態についての概略的説明を行うことを目的としたものにすぎず、あり得るすべての実施ではなく、本発明の範囲を制限することを意図したものではない。図面において、
【図１】深層神経ネットワークの基本構造を示す図である。
【図２】本発明実施形態に基づく深層学習加速の方法を示すフローチャートである。
【図３】深層学習加速の方法における自動調整データの固定小数点数フォーマットの処理を示すフローチャートである。
【図４】固定小数点桁数削減を実行していない状況で、深層神経ネットワークの訓練中にすべての層から収集した勾配値比率の例を示すヒストグラムである。
【図５】本発明実施形態に基づく深層学習加速機器の構造を示すブロック図である。
【図６】本発明実施例に基づく方法および機器を実施するためのコンピュータを示すブロック図である。
【発明を実施するための形態】
【００１４】
ここで、図面を参照しながら、本発明の実施形態を詳細に記述する。以下の記述は、例示的なものにすぎず、本発明を制限することを意図したものでないことに注意しなければならない。また、以下の記述においては、同一の図記号を用いて異なる図面中の同一または類似の部品を表す。以下の記述の異なる実施形態における異なる特徴は、互いに結び付けて、本発明範囲内のその他の実施形態を形成することができる。
【００１５】
図１は、深層神経ネットワークの基本構造を示している。図１に示されているように、深層神経ネットワークは、入力層Ｌ１と、隠れ層Ｌ２〜Ｌｎ−１と、出力層Ｌｎとを含む。入力層は、深層神経ネットワークより分析処理する情報の値を受信し、これらの値は１枚の画像の画素、またはある時間幅の音声のサンプル振幅またはあるシステムもしくはゲームの状態のデジタル化表示であってもよい。隠れ層は、深層神経ネットワークが実現しようとする機能に応じて設計され、実際の異なる応用状況によって、異なる形態およびサイズを有し得る。隠れ層は、畳み込み層、プーリング層、バッチ正規化（Batch  Normalization）層、全接続層、Droupout層、ReLU層、損失（Loss）層、Accuracy層などを含んでもよい。出力層は、深層神経ネットワークの処理結果を出力する。出力層、隠れ層および出力層のニューロンの個数は図中に示されたものに限定されず、実際の必要に応じて設定してもよい。
【００１６】
図２は、本発明実施形態に基づく図１に記載の深層神経ネットワークに対する訓練を加速する方法のフローチャートを示している。図２に示されているように、深層学習加速の方法２００は、初期化ステップＳ２１０と、削減ステップＳ２３０と、訓練ステップＳ２４０とを含む。
【００１７】
初期化ステップＳ２１０において、深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化する。訓練した固定小数点データを読み取ることによって、または訓練した浮動小数点データを読み取り、浮動小数点データを固定小数点データに変換することによって、初期化を実行しても良い。
【００１８】
また、初期化過程において、データの深層神経ネットワーク中において帰属するパラメータタイプに応じて、データに、対応する固定小数点数フォーマットを設定してもよい。一般的には、パラメータの数値が大きいほど、固定小数点数フォーマットの小数部分の桁数は少なくなる。例えば、加重、勾配およびバイアスについては、その数値が通常は小さいため、１個の符号ビット、０個の整数ビットおよびｎ−１（またはｍ−１）個の小数ビットの固定小数点数フォーマットを使用してもよいが、各層の入力および出力データについては、その数値が通常は校正されるため、１個の符号ビット、８個の整数ビットおよびｎ−８（またはｍ−８）個の小数ビットの固定小数点数フォーマットを使用してもよい。
【００１９】
削減ステップＳ２３０において、深層神経ネットワーク中の計算量が第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持する。深層神経ネットワークの訓練過程において、畳み込み層、プーリング層、バッチ正規化層、ＲｅＬＵ層などの層は通常、ストレージ量および計算量が比較的大きく、占有する処理時間が比較的長いため、そのデータ表現精度を削減すれば、ハードウェアリソースの占有量を大幅に減少させ、処理時間を短縮することができる。また全接続層などの層は通常、ストレージ量および計算量が比較的小さく、占有する処理時間が比較的短いため、そのデータ表現精度を削減しても、ハードウェアリソースに対する占有量および処理時間を著しく減少させることはできず、反対に、深層神経ネットワークの処理精度を低下させる可能性がある。このため、処理時間およびハードウェアリソースに対する占有量を小さくするため、また深層神経ネットワークの処理精度が過度に低下するのを防止するため、本発明は、計算量が大きな層に対してのみ削減を行う。本分野当業者なら、ハードウェアリソース、処理時間、エネルギー消費などの要素を総合的に考慮して、あらかじめ第１の閾値を設定し、それによって処理時間と処理精度との間を折衷することができる。
【００２０】
訓練ステップＳ２４０において、削減後の深層神経ネットワークに対して収束するまで訓練を行う。
【００２１】
訓練過程においてデータがオーバーフローした場合、データのサイズに応じてデータの固定小数点数フォーマットを自動調整しても良い。図３は、自動調整データの固定小数点数フォーマットの処理のフォローチャートを示している。図３に示されているように、該調整処理３００は、ステップＳ３０１〜ステップＳ３４０を含む。まず、ステップＳ３１０において、データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判断する。データが現行の固定小数点数フォーマットが表現可能な範囲を超えていないと判断した場合、処理を終了する。データＳ３１０において、データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判断した場合、処理はステップＳ３２０に入る。ステップＳ３２０において、現行の固定小数点数フォーマットの整数部分の桁数を１増加させ、かつ小数部分の桁数を１減少することによって、固定小数点数フォーマットを更新する。その後、処理はステップＳ３３０に入り、ステップＳ３３０において、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回るかどうかを判断する。更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上であると判断した場合、処理はステップＳ３１０に移行し、処理を継続する。ステップＳ３３０において、更新後の固定小数点数フォーマットの小数部分の桁数が第２の閾値を下回ると判断した場合、処理はステップＳ３４０に入る。ステップＳ３４０において、更新後の固定小数点数フォーマットの小数部分の桁数を増加し、それによってｍの値を増加する。次いで、処理はステップＳ３１０に入り、データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで後続処理を継続する。
【００２２】
本分野当業者なら、ハードウェアリソース、処理時間、エネルギー消費などの要素を総合的に考慮して、あらかじめ上記第２の閾値を設定することができる。
【００２３】
また、訓練ステップＳ２４０中では、前方伝播および逆方向伝播過程において、小数部分の桁数が異なるデータに対して演算を行うことになることがある。このとき、演算を行う前に、データに対してデータ精度変換を行う必要がある。具体的には、前方伝播過程において、前層ｉ中の出力データＤｏｕｔｉを次層ｉ＋１に入力して演算を行う前に、以下の等式（１）により、次層ｉ＋１中のデータＤｉ＋１に対してデータ精度変換を行って、出力データＤｏｕｔｉのデータ精度をマッチングする必要がある。
【００２４】
Ｄｉ＋１＊＝Ｄｉ＋１×Ｋ……（１）
式中、Ｄｉ＋１＊は、データ精度変換後のデータであり、Ｋは、データ精度変換因子であり、出力データＤｏｕｔｉの小数部分の桁数と次層ｉ＋１中のデータＤｉ＋１の小数部分の桁数との差に応じて決定される。前方伝播におけるデータ精度変換によって、データ間の精度はすでに互いにマッチングされており、そのため、逆方向伝播においてはそれ以上データ精度変化を行う必要がない。固定小数点データ精度変換の操作は、すでに本分野当業者が熟知するところであり、ここではこれ以上くどくどとは述べない。
【００２５】
このほか、固定小数点桁数削減後の深層神経ネットワークは、訓練課程において不収束または損失減衰もしくは消失が起こる可能性がある。訓練ステップＳ２４０中に、勾配下降法を用いて前方伝播において計算した損失項極値を求解する場合、該ネットワークの不収束または損失減衰もしくは消失は、訓練ステップにおいて生じたいくつかの小さな勾配値が、ｍ桁の固定小数点数フォーマットが表現することができる最小範囲を超えたが、簡単に０として処理され、さらに加重およびバイアスの更新値に影響を及ぼすことによって引き起こされる。図４は、固定小数点桁数削減（すべてｎ桁の固定小数点数）を実行していない状況で、深層神経ネットワークの訓練中に、すべての層から収集した勾配値比率の例のヒストグラムを示している。図４において、ｘ軸は、対数形式の勾配値を表し、複数の勾配値区間に分割され、またｙ軸は、各勾配値区間に入る勾配値の数と収集したすべての勾配値の数との比を表し、勾配値比率ともいう。例えば、約２％の勾配値は、［２−３４，２−３２］の範囲中に入り、また約６４％の勾配値はゼロになる（図中最も左側の単独矩形ブロックによって示されているとおりである）。図中の各矩形ブロックが表す勾配値比率の和は１である。言い換えれば、各矩形ブロックが表すｙ軸上の値の総和は１である。図中からわかるように、ｍ桁の固定小数点数フォーマットの表現可能範囲中の大部分に勾配値はなく、しかも大部分の勾配値は、ｍ桁の固定小数点数フォーマットの最小表現可能値以下に入り、そのため、該大部分の勾配値は、ｍ桁の固定小数点数フォーマットで表す場合、すべてゼロになる。
【００２６】
勾配値を増幅すれば、勾配値がより多くのｍ桁の固定小数点数フォーマットの表現可能範囲を占めるようになり、それによって未増幅時に最小表現可能値下方にあるためゼロになった勾配値が残る。削減後の深層神経ネットワークの勾配値を一定の倍数だけ増幅することによって、削減後の深層神経ネットワークの処理精度を未削減の深層神経ネットワークの処理精度にほぼマッチングさせることができる。
【００２７】
勾配値をｍ桁の固定小数点数フォーマットの表現可能範囲まで増幅する方法は、まず、所定の増幅因子によって以下の等式（２）に示されているように損失項を増幅し、それによって連鎖律の逆方向伝播によりすべての勾配値が確実に同一の量だけ増幅されるようにする。
【００２８】
Ｌ＊（ω）＝Ｌ（ω）×Ｓ……（２）
式中、Ｌ（ω）は、深層神経ネットワークの損失項であり、Ｓは、増幅因子であり、Ｌ＊（ω）は、増幅後の損失項である。
【００２９】
その後、加重およびバイアスが更新される前に、以下の等式（３）に示されているように、勾配値を縮小して、加重およびバイアスの更新幅をｎ桁の固定小数点数訓練におけるのと同様に保持する。ちょうど逆方向伝播が終わった後、かつ勾配カット前にまたはその他いかなる勾配関連計算の前に該縮小を実行し、それによって確実に超パラメータ（勾配カット閾値、加重減衰など）を調節する必要がないようにする。
【００３０】
Ｇ＊（ω）＝Ｇ（ω）／Ｓ……（３）
式中、Ｇ（ω）は、逆方向伝播において計算した勾配値であり、Ｓは、増幅因子であり、Ｇ＊（ω）は、縮小後の勾配値である。
【００３１】
増幅因子Ｓは、一定の増幅因子として設定されてもよい。経験に基づいて一定の増幅因子を設定してもよく、または勾配値に関する統計が存在する場合、増幅因子を、最大絶対勾配値との積がｍ桁の固定小数点数フォーマットの表現可能な最大値以下になるように設定してもよい。大きな増幅因子を設定してもマイナスの影響はなく、設定する増幅因子が、逆方向伝播においてオーバーフローを引き起こしさえしなければよい。オーバーフローによって、勾配値が無限大または非数値になれば、これによって更新後に不可避的に加重を損なうことになる。例えば、勾配値を縮小する際に、計算した勾配値をチェックすることによって、オーバーフローを有効に検出することができる。また、オーバーフローを検出した場合、加重およびバイアスの更新をスキップし、簡単に次回の反復を継続することができる。このほか、増幅因子Ｓの設定は、上記方式に限定されず、本分野当業者なら、実際の使用に応じて、適した増幅因子を設定することができる。
【００３２】
以上では、勾配降下法を用いて損失項極値を求解する際の、削減後の深層神経ネットワークの未収束または損失項減衰もしくは消失の成因およびそれを補う措置を例示的に説明したが、方法はこれに限定されず、本分野当業者なら、損失項極値求解のさまざまな方法に応じて、さまざまな措置を講じて、削減後の深層神経ネットワークの未収束または損失項減衰もしくは消失を防ぐことができる。
【００３３】
続いて図２を参照されたい。本発明好適実施形態に基づく深層学習加速の方法２００は、初期訓練ステップＳ２２０をさらに含む。該ステップＳ２２０において、初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行う。該好適実施形態においては、ステップＳ２３０において、初期訓練後の深層神経ネットワークに対して削減を実行する。
【００３４】
初期訓練ステップＳ２２０を実行することによって、加重およびバイアスをランダムに設定された深層神経ネットワークによって一定程度収束させることができ、それによってその後、該適度に収束した深層神経ネットワーク上で、削減ステップＳ２３０および訓練ステップＳ２４０を実行する場合、深層神経ネットワークが発散するのを一定程度防ぐことができ、深層神経ネットワークの収束を加速することができる。
【００３５】
初期訓練過程において、データがオーバーフローした場合、データのサイズに応じてデータの固定小数点数フォーマットを自動調整してもよい。自動調整データの固定小数点数フォーマットの処理は、上記図３に関する記述を参照し、ここではこれ以上くどくどとは述べない。
【００３６】
また、初期訓練過程において、前方伝播および逆方向伝播過程において小数部分が異なるデータに対して演算を行うことになることがある。このとき、演算を行う前に、データに対してデータ精度変換を行う必要がある。具体的には、前方伝播過程において、前層ｉ中の出力データＤｏｕｔｉを次層ｉ＋１に入力して演算を行う前に、上記等式（１）により、次層ｉ＋１中のデータＤｉ＋１に対してデータ精度変換を行って、出力データＤｏｕｔｉのデータ精度をマッチングする必要がある。前方伝播におけるデータ精度変換によって、データ間の精度はすでに互いにマッチングされているため、逆方向伝播においては、それ以上精度変換を実行する必要がない。固定小数点データ精度変換の操作は、すでに本分野当業者が熟知するところであり、ここではこれ以上くどくどとは述べない。
【００３７】
以上では図１〜図４を参照しながら、本発明実施形態に基づく深層神経ネットワークに対する訓練を加速する方法を詳細に記述した。上記方法により訓練した深層神経ネットワークは、同様に推理過程においても処理を加速し、ハードウェアリソースおよびエネルギー消費を節約し、処理時間を短縮することができる。以下では、図５を参照しながら、深層学習加速機器の構造を記述する。
【００３８】
図５は、本発明実施形態に基づく深層学習加速機器の構造ブロック図を示している。図５に示されているように、深層学習加速機器５００は、深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するように構成された初期化装置５１０と、深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここでｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するように構成された削減装置５３０と、削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置５４０と、を含む。
【００３９】
また、初期化装置はさらに、データが帰属する前記深層神経ネットワーク中のパラメータのタイプに応じて、データに、対応する固定小数点数フォーマットを設定するように構成される。ここで、パラメータの数値が大きいほど、固定小数点数フォーマット中の小数部分の桁数は少なくなる。
【００４０】
また、訓練装置５４０はさらに、小数部分の桁数が異なるデータ間で演算を行う前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を行うように構成される。
【００４１】
好ましくは、本発明実施形態に基づく深層学習加速機器５００は、初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行うように構成された初期訓練装置５２０をさらに含み、ここで、削減装置５３０は、初期練後の深層神経ネットワークに対して削減を実行する。
【００４２】
また、初期訓練装置５２０および訓練装置５４０はさらに、データがオーバーフローした場合、該データのサイズに応じて、該データの固定小数点数フォーマットを自動調整するように構成される。具体的には、データがオーバーフローした場合、初期訓練装置５２０および訓練装置５４０は、以下のように操作される。
【００４３】
ｉ）該データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定する。
【００４４】
ｉｉ）該データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を１増加し、かつ小数部分を１減少することによって固定小数点数フォーマットを更新する。
【００４５】
ｉｉｉ）上記操作ｉ）およびｉｉ）を、該データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて該データを表示するか、または更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回るまで繰り返し実行する。
【００４６】
ｉｖ）更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回った場合、小数部分の桁数を増加し、それによってｍの値を増加する。
【００４７】
ｖ）上記操作ｉ）〜ｉｖ）を、該データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて該データを表示する。
【００４８】
以上では図５を参照しながら、深層学習加速機器の構造および操作を簡単に記述した。該機器およびその内部の部品の詳細な操作に関しては、上記深層学習加速の方法に関する記述を参照することができる。ここではこれ以上くどくどとは述べない。
【００４９】
またここで、上記システム中の各構成部品は、ソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せの方式によって構成されてもよいことも指摘しておく必要がある。構成に使用することができる具体的な手段または方式は、本分野当業者が熟知するところであり、ここではこれ以上くどくどとは述べない。ソフトウェアまたはファームウェアによって実現される場合、記憶媒体またはネットワークから専用ハードウェア構造を有するコンピュータ（例えば、図６に示された汎用コンピュータ６００）に該ソフトウェアを構成するプログラムをインストールし、該コンピュータに各種プログラムがインストールされれば、各種機能などを実行することができる。
【００５０】
図６は、本発明実施例に基づく方法およびシステムを実施するために用いることができるコンピュータの概略的ブロック図を示している。
【００５１】
図６において、中央処理ユニット（ＣＰＵ）６０１は、リードオンリーメモリ（ＲＯＭ）６０２中に格納されたプログラムまたはストレージ部６０８からランダムアクセスメモリ（ＲＡＭ）６０３にロードされたプログラムに基づいて各種処理を実行する。ＲＡＭ６０３中には、さらに必要に応じてＣＰＵ６０１が各種処理などを実行する際に必要なデータを格納する。ＣＰＵ６０１、ＲＯＭ６０２およびＲＡＭ６０３は、バス６０４を経由して互いに接続される。入力／出力ポート６０５もバス６０４に接続される。
【００５２】
入力部６０６（キーボード、マウスなどを含む）、出力部（陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）などのディスプレイ、およびスピーカなどを含む）、ストレージ部６０８（ハードディスクなどを含む）、通信部６０９（ＬＡＮカード、モデムなどのネットワークインターフェースカードを含む）といった部品は、入力／出力ポート６０５に接続される。通信部６０９は、インターネットなどのネットワークを経由して通信処理を実行する。必要に応じて、ドライブ６１０も入力／出力ポート６０５に接続されてもよい。磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどの取り外し可能媒体６１１は、必要に応じて、ドライブ６１０上に取り付けられ、中から読み出されたコンピュータプログラムを必要に応じてストレージ部６０８中にインストールしても良い。
【００５３】
ソフトウェアによって上記一連の処理を実現する場合、インターネットなどのネットワークまたは取り外し可能媒体６１１などの記憶媒体からソフトウェアを構成するプログラムをインストールする。
【００５４】
本分野当業者は、このような記憶媒体が、図６に示された機器と分離して配布されてユーザにプログラム提供するプログラムを中に格納した取り外し可能媒体６１１に限定されないことを理解しておかなければならない。取り外し可能媒体６１１の例には、磁気ディスク（フロッピーディスク（登録商標）を含む）、光ディスク（ＣＤ−ＲＯＭおよびＤＶＤを含む）、光磁気ディスク（ミニディスク（ＭＤ）（登録商標）を含む）および半導体メモリが含まれる。あるいは記憶媒体は、ＲＯＭ６０２、ストレージ部６０８中に含まれるハードディスクなどであり、中にプログラムを格納し、それらを含む機器とともにユーザに配布されてもよい。
【００５５】
本発明は、機械読取可能なコマンドコードを格納したプログラム製品をさらに提供する。前記コマンドコードは、機械が読み取り、実行する場合、上記本発明実施形態に基づく方法を実行することができる。
【００５６】
それに対応して、上記機械読取可能なコマンドコードを格納したプログラム製品を搭載するための記憶媒体も、本発明の範囲内に含まれる。前記記憶媒体は、フロッピーディスク、光ディスク、光磁気ディスク、メモリカード、メモリスティックなどを含むがそれらに限定されない。
【００５７】
本発明の方法は、明細書中に記述した時間的順序により実行するものに限定されず、その他の手順で順に、並行してまたは独立して実行してもよいことに注意しなければならない。このため、本明細書中に記述した方法の実行順序は、本発明の技術範囲に対する制限を構成するものではない。
【００５８】
以上の本発明各実施形態についての記述は、本発明をよりよく理解するためのものであり、例示的なものにすぎず、本発明を制限することを意図したものではない。以上の記述において、１つの実施形態についての記述しかつ／または示した特徴は、同一または類似の形で、１つまたはそれ以上のその他の実施形態において使用し、その他の実施形態中の特徴と組合せ、またはその他の実施形態中の特徴に取って代わることができることに注意しなければならない。本分野当業者なら、本発明の発明構想から逸脱せずに、上で記述した実施形態について行った各種変化および修正は、すべて本発明の範囲内に属することを理解することができる。
【００５９】
上記をまとめれば、本発明に基づく実施例において、本発明は以下のような技術手段を提供した。
【００６０】
手段１．深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するステップと、
前記深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するステップと、
削減後の深層神経ネットワークに対して収束するまで訓練を行うステップと、を含む深層学習加速の方法。
【００６１】
手段２．初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行うステップをさらに含み、
ここで、前記削減は、初期訓練後の深層神経ネットワークに対して実行する、手段１に記載の方法。
【００６２】
手段３．前記初期訓練および前記訓練において、データがオーバーフローした場合、前記データのサイズに応じて、前記データの固定小数点数フォーマットを自動調整する、手段２に記載の方法。
【００６３】
手段４．データがオーバーフローした場合、前記データの固定小数点数フォーマットを自動調整するステップは、
ｉ）前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定するステップと、
ｉｉ）前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を１増加し、かつ小数部分の桁数を１減少することによって、固定小数点数フォーマットを更新するステップと、
ｉｉｉ）上記操作１）およびｉｉ）を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示し、または、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回るまで繰り返し実行するステップと、
ｉｖ）更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回った場合、小数部分の桁数を増加し、それによってｍの値を増加するステップと、
ｖ）上記操作ｉ）〜ｉｖ）を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示するステップと、を含む、手段３に記載の方法。
【００６４】
手段５．前記訓練中に、逆方向伝播において勾配降下法を用いて前方伝播において計算した損失項の極値を求解する、手段１〜４のうちいずれか１項に記載の方法。
【００６５】
手段６．逆方向伝播において、まず所定比率により前記損失項を増幅し、その後、加重およびバイアスを更新する前に、前記所定比率により勾配を縮小する、手段５に記載の方法。
【００６６】
手段７．前記訓練において、小数部分の桁数が異なるデータ間で演算を行う前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を行う、手段１〜４のうちいずれか１項に記載の方法。
【００６７】
手段８．前記初期化において、前記データが帰属する前記深層神経ネットワーク中のパラメータのタイプに応じて、前記データに、対応する固定小数点数フォーマットを設定する、手段１〜４のうちいずれか１項に記載の方法。
【００６８】
手段９．パラメータの値が大きいほど、固定小数点数フォーマット中の小数部分の桁数が少なくなる、手段８に記載の方法。
【００６９】
手段１０．深層神経ネットワークの加重およびバイアスをランダムにｎ桁の固定小数点数に初期化するように構成された初期化装置と、
前記深層神経ネットワーク中の計算量が所定の第１の閾値を上回る層中のデータをｍ桁の固定小数点数に削減し、ここで、ｍおよびｎは整数であり、かつｍ＜ｎであり、かつその他の層中のデータをｎ桁の固定小数点数に保持するように構成された削減装置と、
削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置と、を含む、深層学習加速機器。
【００７０】
手段１１．初期化後の深層神経ネットワークに対して、所定ラウンド数に達するまで初期訓練を行うように構成された初期訓練装置をさらに含み、
ここで、前記削減装置は、初期訓練後の深層神経ネットワークに対して削減を行う、手段１０に記載の機器。
【００７１】
手段１２．前記初期訓練装置および前記訓練装置は、データがオーバーフローした場合、前記データのサイズに応じて前記データの固定小数点数フォーマットを自動調整する、手段１１に記載の機器。
【００７２】
手段１３．データがオーバーフローした場合、前記データの固定小数点数フォーマットを自動調整するステップに、
ｉ）前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定するステップと、
ｉｉ）前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を１増加し、かつ小数部分の桁数を１減少することによって、固定小数点数フォーマットを更新するステップと、
ｉｉｉ）上記操作ｉ）およびｉｉ）を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示し、または、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回るまで繰り返し実行するステップと、
ｉｖ）更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値を下回った場合、小数部分の桁数を増加し、それによってｍの値を増加するステップと、
ｖ）上記操作ｉ）〜ｉｖ）を，前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第２の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示するステップと、を含む、手段１２に記載の機器。
【００７３】
手段１４．前記訓練装置はさらに、逆方向伝播において勾配降下法を用いて前方伝播中で計算した損失項の極値を求解するように構成された、手段１０〜１３のうちいずれか１項に記載の機器。
【００７４】
手段１５．前記訓練装置はさらに、逆方向伝播において、まず所定比率により前記損失項を増幅し、その後、加重およびバイアスを更新する前に、前記所定比率により勾配を縮小するように構成された、手段１４に記載の機器。
【００７５】
手段１６．前記訓練装置はさらに、小数部分の桁数が異なるデータ間で演算を実行する前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を行うように構成された、手段１０〜１３のうちいずれか１項に記載の機器。
【００７６】
手段１７．前記初期化装置はさらに、前記データが帰属する前記深層神経ネットワークのパラメータのタイプに応じて、前記データに、対応する固定小数点数フォーマットを設定する、手段１０〜１３のうちいずれか１項に記載の機器。
【００７７】
手段１８．パラメータの値が大きいほど、固定小数点数フォーマット中の小数部分の桁数が少なくなる、手段１７に記載の機器。
【００７８】
手段１９．前記深層神経ネットワークより処理するデータを受信する入力層と、
前記深層神経ネットワークが処理した結果を出力する出力層と、
前記入力層と前記出力層との間にカップリングされ、前記深層神経ネットワークが実現しようとする機能に応じて設計された複数の隠れ層と
を含み、
ここで、前記深層神経ネットワークは、手段１〜８のうちいずれか１項に記載の方法により訓練を行う、深層神経ネットワーク。
【図１】
2019204487.tif 000003
【図２】
2019204487.tif 000004
【図３】
2019204487.tif 000005
【図４】
2019204487.tif 000006
【図５】
2019204487.tif 000007
【図６】
2019204487.tif 000008