(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-01
(45)【発行日】2024-11-12
(54)【発明の名称】ニューラルネットワークパラメーターの表現の改良された概念
(51)【国際特許分類】
G06N 3/0495 20230101AFI20241105BHJP
【FI】
G06N3/0495
(21)【出願番号】P 2022562943
(86)(22)【出願日】2021-04-13
(86)【国際出願番号】 EP2021059592
(87)【国際公開番号】W WO2021209469
(87)【国際公開日】2021-10-21
【審査請求日】2022-12-14
(32)【優先日】2020-04-14
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】504315750
【氏名又は名称】フラウンホーファー‐ゲゼルシャフト ツア フェルデルング デア アンゲヴァンテン フォルシュング アインゲトラーゲナー フェライン
(74)【代理人】
【識別番号】100133411
【氏名又は名称】山本 龍郎
(74)【代理人】
【識別番号】100067677
【氏名又は名称】山本 彰司
(72)【発明者】
【氏名】ヴィーデマン,ジモン
(72)【発明者】
【氏名】マーリンチ,タルマイ
(72)【発明者】
【氏名】サメック,ヴォイチェフ
(72)【発明者】
【氏名】ハーゼ,パウル
(72)【発明者】
【氏名】ミュラー,カーステン
(72)【発明者】
【氏名】キルヒホッファー,ハイナー
(72)【発明者】
【氏名】マープ,デトレフ
(72)【発明者】
【氏名】シュヴァルツ,ハイコ
(72)【発明者】
【氏名】ヴィーガント,トーマス
【審査官】大倉 崚吾
(56)【参考文献】
【文献】国際公開第2019/008752(WO,A1)
【文献】JACOB, Benoit et al.,"Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference",arXiv [online],2017年12月,[2023年10月11日検索],インターネット<URL:https://arxiv.org/abs/1712.05877v1>,1712.05877v1
【文献】FLYNN, David et al.,"G-PCC: Integer step sizes for in-tree geometry quantisation",MPEG Point Cloud Compression [online],2020年01月,[2023年10月11日検索],インターネット<URL:https://mpeg-pcc.org/index.php/public-contributions/m52522-g-pcc-integer-step-sizes-for-in-tree-geometry-quantisation/>,m52522
【文献】CAI, Yaohui et al.,"ZeroQ: A Novel Zero Shot Quantization Framework",arXiv [online],2020年01月,[2023年10月11日検索],インターネット<URL:https://arxiv.org/abs/2001.00281v1>,2001.00281v1
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02- 3/10
G06N 20/00-99/00
(57)【特許請求の範囲】
【請求項1】
NN表現(110)を生成する装置(100)であって、前記
NN表現(110)は、NNパラメーター(130)を表すために、量子化パラメーター(142)及び量子化値(152)を含み、
前記装置(100)は、
量子化パラメーター(142)から、
前記量子化パラメーター(142)によって導出された被除数と精度パラメーター(145)によって導出された除数との間の除算の剰余に基づく乗数(144)と、
前記除算の商の丸めに基づくビットシフト数(146)と、
が導出可能であるように、NNパラメーター(120)の前記量子化パラメーター(142)及び量子化値(152)を決定(140)することによって、前記NNパラメーター(120)を量子化された値(130)に量子化するように構成され、
それにより、前記NNパラメーター(120)の前記量子化された値(130)は、前記量子化値(152)と前記乗数(144)に依存する因数(148)との間の積であって、前記ビットシフト数(146)に依存するビット数だけビットシフトされた積に対応する、装置。
【請求項2】
NN表現(110)からNNパラメーターを導出する装置であって、
前記NN表現(110)から量子化パラメーター(142)を導出することと、
前記NN表現(110)から量子化値(152)を導出することと、
前記量子化パラメーター(142)から、
前記量子化パラメーター(142)によって導出された被除数と精度パラメーター(145)によって導出された除数との間の除算の剰余に基づく乗数(144)と、
前記除算の商の丸めに基づくビットシフト数(146)と、
を導出することと、
を行うように構成され、
前記NNパラメーター(130)は、前記量子化値(152)と前記乗数(144)に依存する因数(148)との間の積であって、前記ビットシフト数(146)に依存するビット数だけビットシフトされた積に対応する、装置。
【請求項3】
前記NN表現(110)から前記精度パラメーター(145)を導出するように更に構成されている、請求項2に記載の装置。
【請求項4】
前記NNパラメーター(130)は、
一対のニューロン(10)間のニューロン間活性化フィードフォワード(12)に重み付けする重みパラメーター、
ニューラルネットワーク層のアフィン変換をパラメーター化するバッチノルムパラメーター、及び
所定のニューラルネットワークニューロン(10)のインバウンドニューロン間活性化フィードフォワード(12)の和にバイアスをかけるバイアス、
のうちの1つである、請求項2又は3に記載の装置。
【請求項5】
前記NNパラメーター(130)は、NNの複数のニューロン間活性化フィードフォワード(122)のうちの単一のニューロン間活性化フィードフォワード(12)に関して前記NNをパラメーター化し、前記装置は、前記複数のニューロン間活性化フィードフォワード(122)の各々について、前記NN表現(110)から、対応するNNパラメーター(130)を、
前記複数のニューロン間活性化フィードフォワード(122)の各々(12)について、
前記NN表現(110)から前記それぞれのニューロン間活性化フィードフォワード(12)に関連付けられた関連量子化パラメーター(142)を導出することと、
前記NN表現(110)から前記それぞれのニューロン間活性化フィードフォワード(12)に関連付けられた関連量子化値(152)を導出することと、
前記関連量子化パラメーター(142)から、
前記関連量子化パラメーター(142)によって導出された被除数と、前記それぞれのニューロン間活性化フィードフォワード(12)に関連付けられた関連精度パラメーター(145)によって導出された除数との間の除算の剰余に基づいて、前記それぞれのニューロン間活性化フィードフォワード(12)に関連付けられた関連乗数(144)と、
前記除算の商の丸めに基づいて、前記それぞれのニューロン間活性化フィードフォワード(12)に関連付けられた関連ビットシフト数(146)と、を導出することと、
によって導出するように構成され、
前記それぞれのニューロン間活性化フィードフォワード(12)の前記対応するNNパラメーター(130)は、前記関連量子化値(152)と前記関連乗数(144)に依存する因数(148)との間の積であって、前記関連ビットシフト数(146)に依存するビット数だけビットシフトされた積に対応する、請求項2~4のいずれか一項に記載の装置。
【請求項6】
前記装置は、NNの複数のニューロン間活性化フィードフォワード(122)をニューロン間活性化フィードフォワードのサブグループ(122a、122b)に細分するように構成され、それにより、各サブグループ(122a、122b)が、前記NNの関連する一対のNN層に関連付けられ、前記関連する一対のNN層の間のニューロン間活性化フィードフォワードを含み、前記関連する一対の層以外の更なる一対のNN層の間のニューロン間活性化フィードフォワードを除外し、2つ以上のサブグループ(122a、122b)が、所定のNN層に関連付けられ、
前記NNパラメーター(130)は、前記NNの前記複数のニューロン間活性化フィードフォワード(122)のうちの単一のニューロン間活性化フィードフォワード(12)に関して前記NNをパラメーター化し、前記装置は、前記複数のニューロン間活性化フィードフォワード(122)の各々について、前記NN表現(110)から、対応するNNパラメーター(130)を、
ニューロン間活性化フィードフォワードの各サブグループ(122a、122b)について、
前記NN表現(110)から前記それぞれのサブグループ(122a、122b)に関連付けられた関連量子化パラメーター(142)を導出することと、
前記関連量子化パラメーター(142)から、
前記関連量子化パラメーター(142)によって導出された被除数と、前記それぞれのサブグループ(122a,122b)に関連付けられた関連精度パラメーター(145)によって導出された除数との間の除算の剰余に基づいて、前記それぞれのサブグループ(122a,122b)に関連付けられた関連乗数(144)と、
前記除算の商の丸めに基づいて、前記それぞれのサブグループ(122a、122b)に関連付けられた関連ビットシフト数(146)と、を導出することと、
前記複数のニューロン間活性化フィードフォワード(122)の各々について、
前記NN表現(110)から前記それぞれのニューロン間活性化フィードフォワード(12)に関連付けられた関連量子化値(152)を導出することと、
によって導出するように構成され、
前記それぞれのニューロン間活性化フィードフォワード(12)の前記対応するNNパラメーター(130)は、前記それぞれのニューロン間活性化フィードフォワード(12)が含まれる前記サブグループ(122a、122b)に関連付けられた、前記関連量子化値(152)と前記関連乗数(144)に依存する因数(148)との間の積であって、前記それぞれのニューロン間活性化フィードフォワード(12)が含まれる前記サブグループ(122a、122b)の前記関連ビットシフト数(146)に依存するビット数だけビットシフトされた積に対応する、請求項2~4のいずれか一項に記載の装置。
【請求項7】
前記関連精度パラメーター(145)は、前記NNにわたって又は各NN層内でグローバルに等しく評価される、請求項5又は6に記載の装置。
【請求項8】
前記NN表現(110)から前記関連精度パラメーター(145)を導出するように構成されている、請求項5~7のいずれか一項に記載の装置。
【請求項9】
前記NN表現(110)から前記関連量子化パラメーター(142)を基準量子化パラメーターとの差分の形態で導出するように構成されている、請求項5~8のいずれか一項に記載の装置。
【請求項10】
前記量子化パラメーター(142)から、前記乗数(144)及び前記ビットシフト数(146)を、
mul=k+QP%k
【数1】
に従って導出するように構成され、式中、mulは、前記乗数(144)であり、shiftは、前記ビットシフト数(146)であり、QPは、前記量子化パラメーター(142)であり、kは、前記精度パラメーター(145)であり、
【数2】
は、そのオペランド以下の最大の整数を生成するフロア演算子であり、%は、x%yに対して
【数3】
を生成するモジュロ演算子であり、それにより、前記NNパラメーター(130)は、
(mul/k)・2
shift
・P
であり、式中、Pは、前記量子化値(152)である、請求項2~9のいずれか一項に記載の装置。
【請求項11】
前記精度パラメーター(145)は、2の累乗である、請求項2~10のいずれか一項に記載の装置。
【請求項12】
コンテキスト適応型二値算術復号化の使用によって、又は
前記NN表現(110)から前記量子化パラメーター(142)を表すビットを直接読み出すことによって、又は
前記装置のコンテキスト適応型二値デコーダーの等確率バイパスモードを介して、前記NN表現(110)から前記量子化パラメーター(142)を表すビットを導出することによって、
前記NN表現(110)から前記量子化パラメーター(142)を導出するように構成されている、請求項2~11のいずれか一項に記載の装置。
【請求項13】
二値化方式を使用してビンストリングを非二値化することによって、前記NN表現(110)から前記量子化パラメーター(142)を導出するように構成されている、請求項2~12のいずれか一項に記載の装置。
【請求項14】
前記二値化方式は、指数ゴロム符号である、請求項13に記載の装置。
【請求項15】
固定小数点表現の形態で前記NN表現(110)から前記量子化パラメーター(142)を導出するように構成されている、請求項2~14のいずれか一項に記載の装置。
【請求項16】
前記精度パラメーター(145)は、2
t
であり、前記固定小数点表現のビット長は、前記NNに対して一定になるように設定されるか、又は前記NNに対して一定である基底ビット長とtとの和になるように設定される、請求項15に記載の装置。
【請求項17】
整数値シンタックス要素として前記NN表現(110)から前記量子化パラメーター(142)を導出するように構成されている、請求項2~16のいずれか一項に記載の装置。
【請求項18】
前記NN表現(110)から前記精度パラメーター(145)を表すビットを直接読み出すことによって、又は前記装置のコンテキスト適応型二値デコーダーの等確率バイパスモードを介して前記NN表現(110)から前記精度パラメーター(145)を表すビットを導出することによって、前記NN表現(110)から前記精度パラメーター(145)を導出するように構成されている、請求項2~17のいずれか一項に記載の装置。
【請求項19】
固定小数点表現の形態で前記NN表現(110)から前記量子化値(152)を導出するように構成されている、請求項2~18のいずれか一項に記載の装置。
【請求項20】
二値化方式に従ってビンストリングから前記量子化値(152)を非二値化し、コンテキスト適応算術復号化を使用して前記NN表現(110)から前記ビンストリングのビットを復号化することによって、前記NN表現(110)から前記量子化値(152)を導出するように構成されている、請求項2~19のいずれか一項に記載の装置。
【請求項21】
二値化方式に従ってビンストリングから前記量子化値(152)を非二値化し、コンテキスト適応算術復号化を使用して前記NN表現(110)から前記ビンストリングの第1のビットを復号化し、等確率バイパスモードを使用して前記ビンストリングの第2のビットを復号化することによって、前記NN表現(110)から前記量子化値(152)を導出するように構成されている、請求項2~20のいずれか一項に記載の装置。
【請求項22】
NN(20)を使用して推論を実行するデバイス(400)であって、前記デバイス(400)は、
前記NN(20)をパラメーター化するように構成されたNNパラメトライザー(410)であって、前記NNパラメトライザー(410)は、請求項2~21のいずれか一項に記載のNN表現(110)からNNパラメーター(130)を導出する装置(300)を備える、NNパラメトライザー(410)と、
前記NN(20)を使用してNN入力(440)に基づいて推論出力(430)を計算するように構成された計算ユニット(420)と、
を備える、デバイス。
【請求項23】
請求項22に記載のデバイス(400)であって、
前記NNパラメトライザー(410)は、
前記装置(300)を介して、第1のNNパラメーター(130)及び第2のNNパラメーター(130)のうちの少なくとも1つを導出することであって、それにより、前記第1のNNパラメーター(130)は、第1の量子化値(152)と第1の因数(148)との積であって、第1のビット数(146)だけビットシフトされた積に対応し、前記第2のNNパラメーター(130)は、第2の量子化値(152)と第2の因数(148)との積であって、第2のビット数(146)だけビットシフトされた積に対応することと、
前記第1のNNパラメーター(130)の第1の量子化値(152)によって形成され、前記第1の乗数(144)で重み付けされた第1の加数と、前記第1のNNパラメーター(130)の第2の量子化値(152)によって形成され、前記第2の乗数(144)で重み付けされ、前記第1のビット数(146)及び前記第2のビット数(146)の差だけビットシフトされた第2の加数との間の和を形成することと、前記第1の加数及び前記第2の加数の前記和を、前記第1のビット数(146)及び前記第2のビット数(146)のうちの1つに依存するビット数だけビットシフトすることと、によって、前記第1のNNパラメーター(130)及び前記第2のNNパラメーター(130)に加算を施して、前記NN(20)の最終NNパラメーター(130)を生成することと、
を行うように構成されている、デバイス。
【請求項24】
請求項23に記載のデバイス(400)であって、
前記第1のNNパラメーター(130)は、前記NN(20)のベース層表現を表し、前記第2のNNパラメーター(130)は、前記NNのエンハンスメント層表現を表すか、又は
前記第1のNNパラメーター(130)は、前記NN(20)の現在の表現を表し、前記第2のNNパラメーター(130)は、前記現在のNN表現(110)の更新を表すか、又は
前記第1のNNパラメーター(130)は、所定のニューラルネットワークニューロン(10)のインバウンドニューロン間活性化フィードフォワード(12)の和にバイアスをかけるバイアスを表し、前記第2のNNパラメーター(130)は、ニューラルネットワーク層のアフィン変換をパラメーター化するバッチノルムパラメーターを表す、デバイス。
【請求項25】
請求項22~24のいずれか一項に記載のデバイス(400)であって、
前記NNパラメトライザー(410)は、
前記装置(300)を介して、第3のNNパラメーター(130)及び第4のNNパラメーター(130)のうちの少なくとも1つを導出するように構成され、それにより、前記第3のNNパラメーター(130)は、第3の量子化値(152)と第3の因数(148)との積であって、第3のビット数(146)だけビットシフトされた積に対応し、前記第4のNNパラメーター(130)は、第4の量子化値(152)と第4の因数(148)との積であって、第4のビット数(146)だけビットシフトされた積に対応し、
前記計算ユニット(420)は、前記計算を実行する際に、
前記第3のNNパラメーター(130)及び前記第4のNNパラメーター(130)に乗算を施して、前記第3のNNパラメーター(130)の第3の量子化値(152)によって形成される第1の因数と、前記第3の乗数(144)によって形成される第2の因数と、前記第4のNNパラメーター(130)の第4の量子化値(152)によって形成される第3の因数と、前記第4の乗数(144)によって形成される第4の因数との積であって、前記第3のビット数によって形成される第1の加数と前記第4のビット数によって形成される第2の加数とを含む和に対応するビット数だけビットシフトされた積を形成することによって積を生成するように構成される、デバイス。
【請求項26】
請求項25に記載のデバイス(400)であって、
前記第3のNNパラメーター(130)は、第1のNN層(114)の第1のニューロン(101)から第2のNN層(116)の第2のニューロン(10
2
)へのニューロン間活性化フィードフォワード(12)を重み付けする重みパラメーターを表し、前記第4のNNパラメーター(130)は、バッチノルムパラメーターを表す、デバイス。
【請求項27】
請求項26に記載のデバイス(400)であって、前記バッチノルムパラメーターは、前記第2のNN層に対して前記第1のニューロン(10
1
)の活性化フィードフォワード増幅を調整するものである、デバイス。
【請求項28】
請求項22~27のいずれか一項に記載のデバイス(400)であって、
活性化について第5の量子化パラメーター(142)及び第5の量子化値(152)を決定することによって、前記活性化を量子化された値(130)に量子化することによって前記NN入力(440)を量子化し、前記第5の量子化パラメーター(142)から、前記第5の量子化パラメーター(142)によって導出された被除数と前記活性化に関連付けられた精度パラメーター(145)によって導出された除数との間の除算の剰余に基づく第5の乗数(144)と、前記除算の商の丸めに基づく第5のビットシフト数(146)とを導出することにより、前記第5の量子化値(152)と前記第5の乗数(144)に依存する因数(148)との間の積であって、前記第5のビットシフト数(146)に依存する第5のビット数だけビットシフトされた積に対応する前記量子化された値(130)が得られるように更に構成されている、デバイス。
【請求項29】
請求項28に記載のデバイス(400)であって、
前記NNパラメトライザー(410)は、
前記装置(300)を介して、第6のNNパラメーター(130)を導出することであって、それにより、前記第6のNNパラメーター(130)は、第6の量子化値(152)と第6の因数(148)との積であって、第6のビット数(146)だけビットシフトされた積に対応することと、
前記第6のNNパラメーター(130)及び前記活性化に乗算を施して、前記第6のNNパラメーター(130)の第6の量子化値(152)によって形成される第1の因数と、前記第6の乗数(144)によって形成される第2の因数と、前記第5の量子化値(152)によって形成される第3の因数と、前記第5の乗数(144)によって形成される第4の因数との積であって、前記第6のビット数によって形成される第1の加数と前記第4のビット数(146)によって形成される第2の加数と、を含む和に対応するビット数だけビットシフトされた積を形成することによって積を生成することと、
を行うように構成されている、デバイス。
【請求項30】
NN(20)を使用して推論を実行するデバイス(500)であって、前記デバイス(500)は、前記NN(20)を使用してNN入力(440)に基づいて推論出力(430)を計算するように構成され、前記NN(20)は、一対のNN層と、前記一対のNN層のうちの第1のNN層から前記一対のNN層のうちの第2のNN層へのニューロン間活性化フィードフォワード(12)とを含み、前記デバイス(500)は、
前記第1のNN層の前記ニューラルネットワークニューロン(10)の前記活性化から行列X(532)を形成(530)することと、
s・W’*Xを計算(540)することであって、式中、*は、行列乗算を表し、W’は、n及びm∈Nである次元n×mの重み行列(544)であり、sは、長さnの転置ベクトル(546)であり、・は、・の一方の側の行列と・の他方の側の転置ベクトルとの間の列に関するアダマール乗算を示すことと、
によって、前記第1のNN層の前記ニューラルネットワークニューロン(10)の前記活性化に基づいて、前記第2のNN層の前記ニューラルネットワークニューロン(10)の活性化を計算するように構成され、
前記デバイス(500)が、NN表現(110)からW’(544)を導出するように構成されたNNパラメトライザー(410)を備え、前記NNパラメトライザー(410)は、請求項2~21のいずれか一項に記載のNN表現(110)からNNパラメーター(130)を導出する装置(300)を備えている、デバイス。
【請求項31】
請求項30に記載のデバイス(500)であって、nビット固定小数点演算を使用して前記行列乗算を計算(540)して、内積を生成し、m>nであるmビット固定小数点演算を使用して前記内積をs(546)と乗算するように構成されている、デバイス。
【請求項32】
請求項30又は31に記載のデバイス(500)であって、s(546)は、W’(544)を符号化するためのより高い圧縮及び/又はより高い推論忠実度に関するW’(544)の最適化の結果である、デバイス。
【請求項33】
請求項30~32のいずれか一項に記載のデバイス(500)であって、前記NNパラメトライザー(410)は、W’(544)に関連するNNパラメーター(130)と比較して異なる量子化パラメーター(142)を使用して、前記NN表現(110)からs(546)を導出するように更に構成されている、デバイス。
【請求項34】
NN(20)のバッチノルム演算子(710)のNNパラメーターをNN表現(110)に符号化する装置(600)であって、前記バッチノルム演算子(710)は、
【数4】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(600)は、
b、μ、σ
2
又はσ、γ、及びβ(610)を受信することと、
【数5】
を計算(620)することと、
β’及びγ’を前記バッチノルム演算子(710)のNNパラメーターとして前記NN表現(110)に符号化することであって、前記バッチノルム演算子(710)を
【数6】
として定義し、
3)σ’
2
:=θ
4)μ’:=0
5)b’:=0であり、ここで、θは所定のパラメーターであることと、
を行うように構成されており、
装置(600)が、β’及びγ’を量子化して前記NN表現(110)に符号化する、請求項1に記載の装置(100)を更に備える、装置。
【請求項35】
請求項34に記載の装置(600)であって、前記所定のパラメーターは、1又は1-εである、装置。
【請求項36】
NNのバッチノルム演算子(710)のNNパラメーターをNN表現(110)に符号化する装置(600)であって、前記バッチノルム演算子(710)は、
【数7】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(600)は、
b、μ、σ
2
又はσ、γ、及びβ(610)を受信することと、
【数8】
を計算(620)することと、
β’及びγ’を前記バッチノルム演算子(710)のNNパラメーターとして前記NN表現(110)に符号化することであって、前記バッチノルム演算子(710)を
【数9】
として定義し、
3)σ’
2
:=1
4)μ’:=0
5)b’:=0であることと、
を行うように構成され、
装置(600)が、β’及びγ’を量子化して前記NN表現(110)に符号化する、請求項1に記載の装置(100)を更に備える、装置。
【請求項37】
NNのバッチノルム演算子(710)のNNパラメーターをNN表現(110)に符号化する装置(600)であって、前記バッチノルム演算子(710)は、
【数10】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(600)は、
μ、σ
2
又はσ、γ、及びβ(610)を受信することと、
【数11】
を計算(620)することと、
β’及びγ’を前記バッチノルム演算子(710)のNNパラメーターとして前記NN表現(110)に符号化することであって、前記バッチノルム演算子(710)を
【数12】
として定義し、
3)σ’
2
:=θ
4)μ’:=0であり、ここで、θは所定のパラメーターであることと、
を行うように構成され、
装置(600)が、β’及びγ’を量子化して前記NN表現(110)に符号化する、請求項1に記載の装置(100)を更に備える、装置。
【請求項38】
請求項37に記載の装置(600)であって、前記所定のパラメーターは、1又は1-εである、装置。
【請求項39】
NNのバッチノルム演算子(710)のNNパラメーターをNN表現(110)に符号化する装置(600)であって、前記バッチノルム演算子(710)は、
【数13】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(600)は、
μ、σ
2
又はσ、γ、及びβ(610)を受信することと、
【数14】
を計算(620)することと、
β’及びγ’を前記バッチノルム演算子(710)のNNパラメーターとして前記NN表現(110)に符号化することであって、前記バッチノルム演算子(710)を
【数15】
として定義し、
3)σ’
2
:=1
4)μ’:=0であることと、
を行うように構成され、
装置(600)が、β’及びγ’を量子化して前記NN表現(110)に符号化する、請求項1に記載の装置(100)を更に備える、装置。
【請求項40】
請求項34~39のいずれか一項に記載の装置(600)であって、
前記表現において、σ’
2
の全ての成分が互いに等しいこと、及びその値を示し、及び/又は
前記表現において、μ’の全ての成分が互いに等しいこと、及びその値を示し、及び/又は
前記表現において、存在する場合、b’の全ての成分が互いに等しいこと、及びその値を示すように更に構成されている、装置。
【請求項41】
請求項34~39のいずれか一項に記載の装置(600)であって、2つのバッチノルム符号化モードの間で切り替え可能であるように更に構成され、第1のバッチノルム符号化モードでは、前記装置(600)は、β’及びγ’の前記計算及び前記符号化を実行するように構成され、第2のバッチノルム符号化モードでは、前記装置(600)は、前記受信されたμ、σ
2
又はσ、γ、及びβ、並びに存在する場合、bを符号化するように構成されている、装置。
【請求項42】
NN表現(110)からNNのバッチノルム演算子(710)のNNパラメーターを復号化する装置(700)であって、前記バッチノルム演算子(710)は、
【数16】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(700)は、
前記NN表現(110)からγ(722)及びβ(724)を導出(720)することと、
その全ての成分に適用される1つのシグナリング(734)によって、
1)σ’
2
:=θ
2)μ’:=0
3)b’:=0であり、ここで、θは所定のパラメーターであることを推論又は導出(730)することと、
を行うように構成され、
前記NN表現(110)からβ及びγを導出する、請求項2~21のいずれか一項に記載の装置(300)を更に備える、装置。
【請求項43】
請求項42に記載の装置(700)であって、前記所定のパラメーターは、1又は1-εである、装置。
【請求項44】
NN表現(110)からNNのバッチノルム演算子(710)のNNパラメーターを復号化する装置(700)であって、前記バッチノルム演算子(710)は、
【数17】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(700)は、
前記NN表現(110)からγ(722)及びβ(724)を導出(720)することと、
その全ての成分に適用される1つのシグナリング(734)によって、
1)σ
2
:=1
2)μ:=0
3)b:=0であることを推論又は導出(730)することと、
を行うように構成され、
前記NN表現(110)からβ及びγを導出する、請求項2~21のいずれか一項に記載の装置(300)を更に備える、装置。
【請求項45】
NN表現(110)からNNのバッチノルム演算子(710)のNNパラメーターを復号化する装置(700)であって、前記バッチノルム演算子(710)は、
【数18】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(700)は、
前記NN表現(110)からγ(722)及びβ(724)を導出(720)することと、
その全ての成分に適用される1つのシグナリング(734)によって、
1)σ
2
:=θ
2)μ:=0であり、ここで、θは所定のパラメーターであることを推論又は導出(730)することと、
を行うように構成され、
前記NN表現(110)からβ及びγを導出する、請求項2~21のいずれか一項に記載の装置(300)を更に備える、装置。
【請求項46】
請求項45に記載の装置(700)であって、前記所定のパラメーターは、1又は1-εである、装置。
【請求項47】
NN表現(110)からNNのバッチノルム演算子(710)のNNパラメーターを復号化する装置(700)であって、前記バッチノルム演算子(710)は、
【数19】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記装置(700)は、
前記NN表現(110)からγ(722)及びβ(724)を導出(720)することと、
その全ての成分に適用される1つのシグナリング(734)によって、
1)σ
2
:=1
2)μ:=0であることを推論又は導出(730)することと、
を行うように構成され、
前記NN表現(110)からβ及びγを導出する、請求項2~21のいずれか一項に記載の装置(300)を更に備える、装置。
【請求項48】
請求項42~47のいずれか一項に記載の装置(700)であって、
前記表現から、σ’
2
の全ての成分が互いに等しいこと、及びその値を導出し、及び/又は
前記表現から、μ’の全ての成分が互いに等しいこと、及びその値を導出し、及び/又は
存在する場合、前記表現から、b’の全ての成分が互いに等しいこと、及びその値を導出するように更に構成されている、装置。
【請求項49】
請求項42~48のいずれか一項に記載の装置(700)であって、2つのバッチノルム符号化モード間で切り替え可能であるように更に構成され、第1のバッチノルム符号化モードでは、前記装置(700)は、前記導出することと、前記推論又は導出することと、を実行するように構成され、第2の第1のバッチノルム符号化モードでは、前記装置(700)は、μ、σ
2
又はσ、γ、及びβ、並びに存在する場合、bを前記表現から復号化するように構成されている、装置。
【請求項50】
NN表現を生成する方法であって、
前記NN表現は、NNパラメーターを表すために、量子化パラメーター及び量子化値を含み、
量子化パラメーターから、
前記量子化パラメーターによって導出された被除数と精度パラメーターによって導出された除数との間の除算の剰余に基づく乗数と、
前記除算の商の丸めに基づくビットシフト数と、
が導出可能であるように、NNパラメーターの前記量子化パラメーター及び量子化値を決定することによって、前記NNパラメーターを量子化された値に量子化することであって、
それにより、前記NNパラメーターの前記量子化された値は、前記量子化値と前記乗数に依存する因数との積であって、前記ビットシフト数に依存するビット数だけビットシフトされた積に対応することを含む、方法。
【請求項51】
NN表現からNNパラメーターを導出する方法であって、
前記NN表現から量子化パラメーターを導出することと、
前記NN表現から量子化値を導出することと、
前記量子化パラメーターから、
前記量子化パラメーターによって導出された被除数と精度パラメーターによって導出された除数との間の除算の剰余に基づく乗数と、
前記除算の商の丸めに基づくビットシフト数と、
を導出することと、
を含み、
前記NNパラメーターは、前記量子化値と前記乗数に依存する因数との積であって、前記ビットシフト数に依存するビット数だけビットシフトされた積に対応する、方法。
【請求項52】
NNを使用して推論を実行する方法であって、
NN表現からNNパラメーターを導出するために請求項51に記載の方法を使用して、前記NNをパラメーター化することと、
前記NNを使用して、NN入力に基づいて推論出力を計算することと、
を含む、方法。
【請求項53】
NNを使用して推論を実行する方法であって、前記NNを使用してNN入力に基づいて推論出力を計算することを含み、前記NNは、一対のNN層と、前記一対のNN層のうちの第1のNN層から前記一対のNN層のうちの第2のNN層へのニューロン間活性化フィードフォワードとを含み、前記方法は、
前記第1のNN層の前記ニューラルネットワークニューロンの前記活性化から行列Xを形成することと、
s・W’*Xを計算することであって、式中、*は、行列乗算を表し、W’は、n及びm∈Nである次元n×mの重み行列であり、sは、長さnの転置ベクトルであり、・は、・の一方の側の行列と・の他方の側の転置ベクトルとの間の列に関するアダマール乗算を示すことと、
によって、前記第1のNN層の前記ニューラルネットワークニューロンの活性化に基づいて、前記第2のNN層の前記ニューラルネットワークニューロンの活性化を計算することを含み、
前記方法が、請求項51に記載のNN表現(110)からNNパラメーターを導出する方法を用いて、NN表現からW’を導出する、方法。
【請求項54】
NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法であって、前記バッチノルム演算子は、
【数20】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
b、μ、σ
2
又はσ、γ、及びβを受信することと、
【数21】
を計算することと、
β’及びγ’を前記バッチノルム演算子のNNパラメーターとして前記NN表現に符号化することであって、前記バッチノルム演算子を
【数22】
として定義し、
3)σ’
2
:=θ
4)μ’:=0
5)b’:=0であり、ここで、θは所定のパラメーターであることと、を含み、
前記方法が、β’及びγ’を量子化して前記NN表現に符号化する、請求項50に記載の方法を更に備える、方法。
【請求項55】
NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法であって、前記バッチノルム演算子は、
【数23】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
b、μ、σ
2
又はσ、γ、及びβを受信することと、
【数24】
を計算することと、
β’及びγ’を前記バッチノルム演算子のNNパラメーターとして前記NN表現に符号化することであって、前記バッチノルム演算子を
【数25】
として定義し、
3)σ’
2
:=1
4)μ’:=0
5)b’:=0であることと、を含み、
前記方法が、β’及びγ’を量子化して前記NN表現に符号化する、請求項50に記載の方法を更に備える、方法。
【請求項56】
NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法であって、前記バッチノルム演算子は、
【数26】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
μ、σ
2
又はσ、γ、及びβを受信することと、
【数27】
を計算することと、
β’及びγ’を前記バッチノルム演算子のNNパラメーターとして前記NN表現に符号化することであって、前記バッチノルム演算子を
【数28】
として定義し、
3)σ’
2
:=θ
4)μ’:=0であり、ここで、θは所定のパラメーターであることと、を含み、
前記方法が、β’及びγ’を量子化して前記NN表現に符号化する、請求項50に記載の方法を更に備える、方法。
【請求項57】
NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法であって、前記バッチノルム演算子は、
【数29】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
μ、σ
2
又はσ、γ、及びβを受信することと、
【数30】
sを計算することと、
β’及びγ’を前記バッチノルム演算子のNNパラメーターとして前記NN表現に符号化することであって、前記バッチノルム演算子を
【数31】
として定義し、
3)σ’
2
:=1
4)μ’:=0であることと、を含み、
前記方法が、β’及びγ’を量子化して前記NN表現に符号化する、請求項50に記載の方法を更に備える、方法。
【請求項58】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法であって、前記バッチノルム演算子は、
【数32】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
前記NN表現からγ及びβを導出することと、
その全ての成分に適用される1つのシグナリングによって、
1)σ’
2
:=θ
2)μ’:=0
3)b’:=0であり、ここで、θは所定のパラメーターであることを推論又は導出することと、を含み、
前記NN表現からβ及びγを導出する、請求項51に記載の方法を更に備える、方法。
【請求項59】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法であって、前記バッチノルム演算子は、
【数33】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトルであり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
前記NN表現からγ及びβを導出することと、
その全ての成分に適用される1つのシグナリングによって、
1)σ
2
:=1
2)μ:=0
3)b:=0であることを推論又は導出することと、を含み、
前記NN表現からβ及びγを導出する、請求項51に記載の方法を更に備える、方法。
【請求項60】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法であって、前記バッチノルム演算子は、
【数34】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
前記NN表現からγ及びβを導出することと、
その全ての成分に適用される1つのシグナリングによって、
1)σ
2
:=θ
2)μ:=0であり、ここで、θは所定のパラメーターであることを推論又は導出することと、を含み、
前記NN表現からβ及びγを導出する、請求項51に記載の方法を更に備える、方法。
【請求項61】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法であって、前記バッチノルム演算子は、
【数35】
として定義され、式中、
μ、σ
2
、γ、及びβは、バッチノルムパラメーターであり、
Wは、重み行列であり、
Xは、NN層の活性化から導出される入力行列であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示し、
前記方法は、
前記NN表現からγ及びβを導出することと、
その全ての成分に適用される1つのシグナリングによって、
1)σ
2
:=1
2)μ:=0であることを推論又は導出することと、を含み、
前記NN表現からβ及びγを導出する、請求項51に記載の方法を更に備える、方法。
【請求項62】
コンピュータープログラムがコンピューターで実行される時、請求項50~61のいずれか一項に記載の方法を実行するコンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明による実施形態は、ニューラルネットワークパラメーターの表現の改善された概念を使用して、ニューラルネットワークパラメーターを符号化又は復号化する装置及び方法に関する。推論及び/又は記憶ビットレート最適化に関する改善を達成することができる。
【背景技術】
【0002】
ニューラルネットワークは、その最も基本的な形態において、一連のアフィン変換とそれに続く要素ごとの非線形関数とを構成する。
図1に示すように、それらは有向非巡回グラフとして表すことができる。各ノードは、エッジのそれぞれの重み値との乗算によって次のノードに順方向伝搬される特定の値を伴う。次に、全ての入力値が単純に集約される。
【0003】
図1は、フィードフォワードニューラルネットワークのグラフ表現の例を示している。具体的には、この2層ニューラルネットワークは、4次元入力ベクトルを実線に写像する非線形関数である。
【0004】
数学的には、
図1のニューラルネットワークは次の方法で出力を算出する。
output=L
2(L
1(input))
ここで、
L
i(X)=N
i(B
i(X))
であり、式中、B
iは層iのアフィン変換であり、N
iは層iの何らかの非線形関数である。
【0005】
バイアス層
いわゆる「バイアス層」の場合、Biは、層iに関連する重みパラメーター(エッジ重み)Wiと層iの入力Xiとの行列乗算と、それに続くバイアスbiとの和である。
Bi(X)=Wi*Xi+bi
Wiは、次元ni×kiを有する重み行列であり、Xiは、次元ki×miを有する入力行列である。バイアスbiは、長さniの転置ベクトルである。演算子*は、行列乗算を示すものとする。バイアスbiとの和は、行列の列に対する要素ごとの演算である。より正確には、Wi*Xi+biは、biがWi*Xiの各列に追加されることを意味する。
【0006】
いわゆる畳み込み層は、非特許文献1に記載されているように、それらを行列-行列積としてキャストすることによって使用することもできる。
【0007】
以降、所与の入力から出力を算出する手順を推論と称する。また、中間結果を、隠れ層又は隠れ活性化値と称し、これは、例えば上記の第1の内積+非線形性の算出等、線形変換+要素ごとの非線形性を構成する。
【0008】
通常、ニューラルネットワークは、数百万のパラメーターを含むため、その表現のために数百メガバイトを必要とし得る。したがって、その推論手順には、大きな行列間の多くの内積演算の計算が含まれるため、その実行には高い計算リソースが必要となる。したがって、これらの内積を実行する複雑性を低減することが非常に重要である。
【0009】
バッチノルム層
ニューラルネットワーク層のアフィン変換のより洗練された変形例として、以下のような、いわゆるバイアス及びバッチノルム演算が挙げられる。
式1:
【数1】
ここで、μ、σ
2、γ、及びβは、バッチノルムパラメーターを示す。なお、層インデックスiはここでは無視する。Wは、次元n×kを有する重み行列であり、Xは、次元k×mを有する入力行列である。バイアスb及びバッチノルムパラメーターμ、σ
2、γ、及びβは、長さnの転置ベクトルである。演算子*は、行列乗算を示す。ベクトルを有する行列に対する他の全ての演算(加算、乗算、除算)は、行列の列に対する要素ごとの演算であることに留意されたい。例えば、X・γは、Xの各列がγと要素ごとに乗算されることを意味する。εは、0による除算を避けるために必要な小さなスカラー数(0.001等)である。ただし、0であってもよい。
【0010】
bの全てのベクトル要素が0に等しい場合、式1はバッチノルム層を指す。
対照的に、ε並びにμ及びβの全てのベクトル要素が0に設定され、γ及びσ2の全ての要素が1に設定される場合、バッチノルムのない層(バイアスのみ)が処理される。
【0011】
パラメーターの効率的な表現
パラメーターW、b、μ、σ2、γ、及びβは、集合的に層のパラメーターを示すものとする。それらは通常、ビットストリーム中でシグナリングされる必要がある。例えば、それらは32ビットの浮動小数点数として表すことができ、又は整数表現に量子化することができる。εは通常、ビットストリーム中でシグナリングされないことに留意されたい。
【0012】
かかるパラメーターを符号化するための特に効率的な手法では、各値がいわゆる量子化ステップサイズ値の整数倍として表される均一再構成量子化器が用いられる。対応する浮動小数点数は、整数に、通常は単一の浮動小数点数である量子化ステップサイズを乗算することによって再構築することができる。しかしながら、ニューラルネットワーク推論のための効率的な実施態様(すなわち、入力に対するニューラルネットワークの出力の算出)では、可能な限り整数演算が用いられる。したがって、パラメーターを浮動小数点表現に再構成する必要があることは望ましくない場合がある。
【先行技術文献】
【非特許文献】
【0013】
【文献】“cuDNN: Efficient Primitives for Deep Learning” (Sharan Chetlur, et al.; arXiv: 1410.0759, 2014)
【発明の概要】
【発明が解決しようとする課題】
【0014】
したがって、ニューラルネットワークパラメーターの効率的な符号化及び/又は復号化をサポートするために、かかるパラメーターの表現の概念を改善することが望まれている。ニューラルネットワークパラメーターが符号化されるビットストリームを低減して、シグナル化コストを低減することが望ましい場合がある。加えて、又は代替として、ニューラルネットワーク推論を改善するために計算リソースの複雑性を低減することが望ましい場合があり、例えば、ニューラルネットワーク推論のための効率的な実施態様を達成することが望ましい場合がある。
【課題を解決するための手段】
【0015】
これは、本出願の独立請求項の主題によって達成される。
【0016】
本発明による更なる実施の形態は、本出願の従属請求項の主題によって定義される。
本発明の第1の態様によれば、本出願の発明者らは、ニューラルネットワーク(NN)表現が直面する1つの問題が、ニューラルネットワークが数百万のパラメーターを含み、したがってその表現のために数百メガバイトを必要とし得るという事実から生じることを認識した。したがって、その推論手順には、大きな行列間の多くの内積演算の計算が含まれるため、その実行には高い計算リソースが必要となる。本出願の第1の態様によれば、この困難は、NNパラメーターの量子化を使用することによって克服され、浮動小数点演算をほとんど又は全く用いずに推論が可能となる。本発明者らは、乗数及びビットシフト数を導出することができる量子化パラメーターを決定することが有利であることを見出した。これは、ビットレートに関して、32ビット浮動小数点値の代わりに量子化パラメーター及び量子化値(quantization value)のみをシグナリングすることが効率的であるという着想に基づいている。NNパラメーターの量子化された値(quantized value)は、乗数、ビットシフト数、及び量子化値を使用して算出することができるため、浮動小数点領域の代わりに整数領域において、計算、例えばNNパラメーターの和及び/又はNNパラメーターとベクトルとの乗算を実行することが可能である。したがって、提示するNN表現を用いて、推論の効率的な計算を達成することができる。
【0017】
したがって、本出願の第1の態様によれば、NN表現、例えばデータストリームを生成する装置は、量子化パラメーターから乗数及びビットシフト数が導出可能であるように、NNパラメーターの量子化パラメーター及び量子化値を決定することによって、NNパラメーターを量子化された値に量子化するように構成される。生成されたNN表現は、NN表現、例えばデータストリームからNNパラメーター、例えばNNパラメーターの量子化された値を導出する装置によって読み出され/復号化され得る。NNパラメーターを導出する装置は、NN表現から量子化パラメーター及び量子化値を導出し、量子化パラメーターから乗数及びビットシフト数を導出するように構成される。乗数は、量子化パラメーターによって導出された被除数と精度パラメーターによって導出された除数との間の除算の剰余に基づいて量子化パラメーターから導出可能であり、例えば、精度パラメーターは、デフォルト値に設定されてもよく、又は、自然数若しくは2の累乗等の精度パラメーターの複数の異なる整数値が、NN全体に対して、又は各層等のNNの各部分に対して装置によってテストされてもよく、量子化誤差及びビットレートの観点から、そのラグランジュ和に関して最良のものがテストされ、精度パラメーターとして最良の値を取得し、NN表現でこの選択がシグナリングされる。ビットシフト数は、除算の商の丸めに基づいて量子化パラメーターから導出可能である。NNパラメーターを導出する装置の場合のNNパラメーター、又はNN表現を生成する装置の場合のNNパラメーターの量子化された値は、(例えば、少なくとも、シフトの場合に符号の別個の処理を伴う量子化された値の絶対値に関して、又はさらに、積、その因数、及びシフトに関してそれぞれ2の補数表現及び2の補数演算を使用する場合等、絶対値と符号の両方に関して)量子化値と乗数に依存する因数との間の積であって、ビットシフト数に依存するビット数だけビットシフトされた積に対応する。デジタルデータは、上述したように、NNパラメーターを表すために、量子化パラメーター及び量子化値を含むNN表現を定義することができる。
【0018】
NNパラメーターを導出する装置によって導出されるNNパラメーターは、NN表現を生成する装置によって生成されるNNパラメーターの量子化された値に対応することに留意されたい。これは、NNパラメーターを導出する装置には、元のNNパラメーターが見えないため、NNパラメーターを導出する装置から見て、NNパラメーターの量子化された値をNNパラメーターとみなすためである。
【0019】
一実施の形態は、NNを使用して推論を実行するデバイスに関し、該デバイスは、NNをパラメーター化するように構成されたNNパラメトライザーを備える。NNパラメトライザーは、上述したように、NN表現からNNパラメーターを導出する装置を備える。加えて、デバイスは、NNを使用してNN入力に基づいて推論出力を計算するように構成された計算ユニットを備える。上述したように、NNパラメーターは、乗数、ビットシフト数及び量子化値に基づいて導出することができ、そのため、浮動小数点領域の代わりに整数領域において、計算、例えばNNパラメーターの和及び/又はNNパラメーターとベクトルとの乗算を実行することが可能である。したがって、推論の効率的な計算が、デバイスによって達成され得る。
【0020】
本発明の第2の態様によれば、本出願の発明者らは、ニューラルネットワーク(NN)を使用して推論を実行するときに遭遇する1つの問題が、推論に使用される重み行列が量子化誤差を有する可能性があり、そのため、低いレベルの精度しか達成されないという事実に起因することを認識した。本出願の第1の態様によれば、この困難は、重み行列W’の各列と要素ごとに乗算される転置ベクトルs、例えばスケーリングファクターを使用することによって克服される。本発明者らは、算術符号化方法が、重み行列のスケーリングを使用することによってより高い符号化利得をもたらすこと、及び/又は重み行列のスケーリングがニューラルネットワーク性能結果を増加させる、例えば、より高い精度を達成することを見出した。これは、量子化誤差を低減し、それにより量子化されたニューラルネットワークの予測性能を向上させるために、例えば重み行列、例えば量子化された重み行列に依存して、転置ベクトルsを効率的に適応させることができるという着想に基づいている。さらに、本発明者らは、重みパラメーターを転置ベクトルsと重み行列W’との合成として因数分解することで、両者を独立に量子化でき、例えば転置ベクトルsと重み行列W’の量子化には、様々な量子化パラメーターを使用できるため、表現の効率を高めることができることを見出した。これは、性能の観点から有益であるが、ハードウェア効率の観点からも有益である。
【0021】
したがって、本出願の第2の態様によれば、NNを使用して推論を実行するデバイスは、NNを使用してNN入力に基づいて推論出力を計算するように構成される。NNは、一対のNN層と、一対のNN層のうちの第1のNN層から一対のNN層のうちの第2のNN層へのニューロン間活性化フィードフォワードとを含む。デバイスは、第1のNN層のニューラルネットワークニューロンの活性化から行列Xを形成し、s・W’*Xを計算することによって、第1のNN層のニューラルネットワークニューロンの活性化に基づいて第2のNN層のニューラルネットワークニューロンの活性化を計算するように構成される。演算子*は、行列乗算を示し、W’は、n及びm∈Nである次元n×mの重み行列であり、sは、長さnの転置ベクトルであり、演算子・は、・の一方の側の行列と・の他方の側の転置ベクトルとの間の列に関するアダマール乗算を示す。
【0022】
本発明の第3の態様によれば、本出願の発明者らは、バッチノルム層を使用するときに遭遇する1つの問題が、バッチノルム演算子のバッチノルムパラメーター/要素が通常は浮動小数点表現であるという事実から生じることを認識した。しかしながら、ニューラルネットワーク推論のための効率的な実施態様(すなわち、入力に対するニューラルネットワークの出力の算出)では、可能な限り整数演算が用いられる。この困難は、所定の定数値をバッチノルムパラメーター/要素に、例えばb及びμ及びσ2又はσに割り当てることによって克服される。本発明者らは、バッチノルムパラメーター/要素が所定の定数値を有する場合、それらを極めて効率的に圧縮することができることを見出した。これは、全ての要素/パラメーターが所定の定数値を有するかを示す単一のフラグの使用を可能にし、それにより、それらを所定の定数値に設定することができるという着想に基づいている。加えて、バッチノルム演算子の結果は、所定の定数値を使用することによって変更されないことを見出した。
【0023】
したがって、本出願の第3の態様によれば、第1の実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する装置に関する。バッチノルム演算子は、
【数2】
として定義され、式中、
μ、σ
2、γ、及びβは、バッチノルムパラメーター、例えば、各出力ノードについて1つの成分を含む転置ベクトルであり、
Wは、重み行列であり、例えば、その各行は1つの出力ノードに対するものであり、それぞれの行の各成分はXの1つの行に関連付けられており、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトル、例えば、各出力ノードに対して1つの成分を含む転置ベクトルであり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示す。
装置は、b及びμ及びγ及びβ及びσ
2又はσを受信し、
【数3】
及び
【数4】
を計算するように構成される。
加えて、装置は、β’及びγ’をNN表現に符号化するように構成され、例えば、出力ノードごとに1つの成分を含む転置ベクトルもバッチノルム演算子のNNパラメーターとして符号化するように構成され、バッチノルム演算子を
【数5】
として定義し、
σ’
2:=θ、μ’:=0、b’:=0であり、ここで、θは所定のパラメーターである。
【0024】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する並列装置は、NN表現からγ及びβを導出し、その全ての成分に適用される1つのシグナリングによって、σ’2:=θ及びμ’:=0及びb’:=0を推論又は導出するように構成され、ここで、θは所定のパラメーターである。装置は、例えば、1つのシグナリング、例えばフラグを読み出し、そこからσ’2:=θ及びμ’:=0及びb’:=0を推論又は導出するように構成される。バッチノルム演算子は、第3の態様の第1の実施の形態に関して上記で説明したように定義される。
【0025】
したがって、本出願の第3の態様によれば、第2の実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する装置に関する。バッチノルム演算子は、
【数6】
として定義され、式中、
μ、σ
2、γ、及びβは、バッチノルムパラメーター、例えば、各出力ノードについて1つの成分を含む転置ベクトルであり、
Wは、重み行列であり、例えば、その各行は1つの出力ノードに対するものであり、それぞれの行の各成分はXの1つの行に関連付けられており、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトル、例えば、各出力ノードに対して1つの成分を含む転置ベクトルであり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示す。
装置は、b及びμ及びγ及びβ及びσ
2又はσを受信し、
【数7】
及び
【数8】
を計算するように構成される。
加えて、装置は、バッチノルム演算子のNNパラメーターとしてβ’及びγ’をNN表現に符号化するように構成され、バッチノルム演算子を
【数9】
として定義し、
σ’
2:=1、μ’:=0、b’:=0である。
【0026】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する並列装置は、NN表現からγ及びβを導出し、その全ての成分に適用される1つのシグナリングによって、σ2:=1及びμ:=0及びb:=0を推論又は導出するように構成される。装置は、例えば、1つのシグナリング、例えばフラグを読み出し、そこからσ2:=1及びμ:=0及びb:=0を推論又は導出するように構成される。バッチノルム演算子は、第3の態様の第2の実施の形態に関して上記で説明したように定義される。
【0027】
したがって、本出願の第3の態様によれば、第3の実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する装置に関する。バッチノルム演算子は、
【数10】
として定義され、式中、
μ、σ
2、γ、及びβは、バッチノルムパラメーター、例えば、各出力ノードについて1つの成分を含む転置ベクトルであり、
Wは、重み行列であり、例えば、その各行は1つの出力ノードに対するものであり、それぞれの行の各成分はXの1つの行に関連付けられており、
Xは、NN層の活性化から導出される入力行列であり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示す。
装置は、μ及びγ及びβ及びσ
2又はσを受信し、
【数11】
及び
【数12】
を計算するように構成される。
加えて、装置は、バッチノルム演算子のNNパラメーターとしてβ’及びγ’をNN表現に符号化するように構成され、バッチノルム演算子を
【数13】
として定義し、
σ’
2:=θ、μ’:=0であり、θは所定のパラメーターである。
【0028】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する並列装置は、NN表現からγ及びβを導出し、その全ての成分に適用される1つのシグナリングによって、σ2:=θ及びμ:=0を推論又は導出するように構成され、θは所定のパラメーターである。装置は、例えば、1つのシグナリング、例えばフラグを読み出し、そこからσ2:=θ及びμ:=0を推論又は導出するように構成される。バッチノルム演算子は、第3の態様の第3の実施の形態に関して上記で説明したように定義される。
【0029】
したがって、本出願の第3の態様によれば、第4の実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する装置に関する。バッチノルム演算子は、
【数14】
として定義され、式中、
μ、σ
2、γ、及びβは、バッチノルムパラメーター、例えば、各出力ノードについて1つの成分を含む転置ベクトルであり、
Wは、重み行列であり、例えば、その各行は1つの出力ノードに対するものであり、それぞれの行の各成分はXの1つの行に関連付けられており、
Xは、NN層の活性化から導出される入力行列であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示す。
装置は、μ及びγ及びβ及びσ
2又はσを受信し、
【数15】
及び
【数16】
を計算するように構成される。
加えて、装置は、バッチノルム演算子のNNパラメーターとしてβ’及びγ’をNN表現に符号化するように構成され、バッチノルム演算子を
【数17】
として定義し、
σ’
2:=1、μ’:=0である。
【0030】
NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する並列装置は、NN表現からγ及びβを導出し、その全ての成分に適用される1つのシグナリングによって、σ2:=1及びμ:=0を推論又は導出するように構成される。装置は、例えば、1つのシグナリング、例えばフラグを読み出し、そこからσ2:=1及びμ:=0を推論又は導出するように構成される。バッチノルム演算子は、第3の態様の第4の実施の形態に関して上記で説明したように定義される。
【0031】
以下の方法は、上述の原理に従って動作する。
【0032】
一実施の形態は、NN表現を生成する方法であって、量子化パラメーターから、量子化パラメーターによって導出された被除数と精度パラメーターによって導出された除数との間の除算の剰余に基づいて乗数が導出可能であり、量子化パラメーターから、除算の商の丸めに基づいてビットシフト数が導出可能であるように、NNパラメーターの量子化パラメーター及び量子化値を決定することによって、NNパラメーターを量子化された値に量子化することを含む方法に関する。量子化パラメーターは、NNパラメーターの量子化された値が、量子化値と乗数に依存する因数との積であって、ビットシフト数に依存するビット数だけビットシフトされた積に対応するように決定される。
【0033】
一実施の形態は、NN表現からNNパラメーターを導出する方法であって、NN表現から量子化パラメーター及び量子化値を導出することを含む方法に関する。加えて、方法は、量子化パラメーターから、量子化パラメーターによって導出された被除数と精度パラメーターによって導出された除数との間の除算の剰余に基づいて乗数を導出することと、量子化パラメーターから、除算の商の丸めに基づいてビットシフト数を導出することとを含む。NNパラメーターは、量子化値と乗数に依存する因数との積であって、ビットシフト数に依存するビット数だけビットシフトされた積に対応する。
【0034】
一実施の形態は、NNを使用して推論を実行する方法であって、NN表現からNNパラメーターを導出するために、NNパラメーターを導出する上述の方法を使用してNNをパラメーター化することを含む方法に関する。加えて、推論を実行する方法は、NNを使用してNN入力に基づいて推論出力を計算することを含む。
【0035】
一実施の形態は、NNを使用して推論を実行する方法であって、NNを使用してNN入力に基づいて推論出力を計算することを含む方法に関する。NNは、一対のNN層と、一対のNN層のうちの第1のNN層から一対のNN層のうちの第2のNN層へのニューロン間活性化フィードフォワードとを含む。方法は、第1のNN層のニューラルネットワークニューロンの活性化から行列Xを形成することと、s・W’*Xを計算することであって、式中、*は、行列乗算を表し、W’は、n及びm∈Nである次元n×mの重み行列であり、sは、長さnの転置ベクトルであり、・は、・の一方の側の行列と・の他方の側の転置ベクトルとの間の列に関するアダマール乗算を示すこととによって、第1のNN層のニューラルネットワークニューロンの活性化に基づいて、第2のNN層のニューラルネットワークニューロンの活性化を計算することを含む。
【0036】
一実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法に関し、バッチノルム演算子は、
【数18】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、bは、バイアスを形成する転置ベクトルであり、εは、ゼロ除算回避のための定数であり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、b、μ、γ、β及びσ
2又はσを受信することと、
【数19】
及び
【数20】
を計算することと、を含む。
加えて、方法は、β’及びγ’をバッチノルム演算子のNNパラメーターとしてNN表現に符号化することであって、バッチノルム演算子を
【数21】
として定義し、σ’
2:=θ、μ’:=0、及びb’:=0であり、ここで、θは所定のパラメーターであることを含む。
【0037】
一実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法に関し、バッチノルム演算子は、
【数22】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、bは、バイアスを形成する転置ベクトルであり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、b、μ、γ、β、及びσ
2又はσを受信することと、
【数23】
及び
【数24】
を計算することと、を含む。加えて、方法は、β’及びγ’をバッチノルム演算子のNNパラメーターとしてNN表現に符号化することであって、バッチノルム演算子を
【数25】
として定義し、σ’
2:=1、μ’:=0、及びb’:=0であることを含む。
【0038】
一実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法に関し、バッチノルム演算子は、
【数26】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、εは、ゼロ除算回避のための定数であり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、μ、γ、β及びσ
2又はσを受信することと、
【数27】
及び
【数28】
を計算することと、を含む。加えて、方法は、β’及びγ’をバッチノルム演算子のNNパラメーターとしてNN表現に符号化することであって、バッチノルム演算子を
【数29】
として定義し、σ’
2:=θ及びμ’:=0であり、ここで、θは所定のパラメーターであることを含む。
【0039】
一実施の形態は、NNのバッチノルム演算子のNNパラメーターをNN表現に符号化する方法に関し、バッチノルム演算子は、
【数30】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、μ、γ、β及びσ
2又はσを受信することと、
【数31】
及び
【数32】
を計算することと、を含む。加えて、方法は、β’及びγ’をバッチノルム演算子のNNパラメーターとしてNN表現に符号化することであって、バッチノルム演算子を
【数33】
として定義し、σ’
2:=1、及びμ’:=0であることを含む。
【0040】
一実施の形態は、NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法に関し、バッチノルム演算子は、
【数34】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、bは、バイアスを形成する転置ベクトルであり、εは、ゼロ除算回避のための定数であり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、NN表現からγ及びβを導出することと、その全ての成分に適用される1つのシグナリングによって、σ’
2:=θ、μ’:=0、及びb’:=0であり、ここで、θは所定のパラメーターであることを推論又は導出することとを含む。
【0041】
一実施の形態は、NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法に関し、バッチノルム演算子は、
【数35】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、bは、バイアスを形成する転置ベクトルであり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、NN表現からγ及びβを導出することと、その全ての成分に適用される1つのシグナリングによって、σ
2:=1、μ:=0、及びb:=0であることを推論又は導出することとを含む。
【0042】
一実施の形態は、NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法に関し、バッチノルム演算子は、
【数36】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、εは、ゼロ除算回避のための定数であり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、NN表現からγ及びβを導出することと、その全ての成分に適用される1つのシグナリングによって、σ
2:=θ及びμ:=0であり、ここで、θは所定のパラメーターであることを推論又は導出することとを含む。
【0043】
一実施の形態は、NN表現からNNのバッチノルム演算子のNNパラメーターを復号化する方法に関し、バッチノルム演算子は、
【数37】
として定義され、式中、μ、σ
2、γ、及びβは、バッチノルムパラメーターであり、Wは、重み行列であり、Xは、NN層の活性化から導出される入力行列であり、・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、*は、行列乗算を示す。方法は、NN表現からγ及びβを導出することと、その全ての成分に適用される1つのシグナリングによって、σ
2:=1及びμ:=0であることを推論又は導出することとを含む。
【0044】
上述したように、これらの方法は、上述した装置又はデバイスと同じ考察に基づいている。方法は、装置又はデバイスに関しても説明される全ての特徴及び機能で完成され得る。
【0045】
一実施の形態は、上述したように、NN表現を生成する方法又は装置によって生成されたNN表現を定義するデジタルデータを含むデジタル記憶媒体に関する。
【0046】
一実施の形態は、上述の方法のうちの1つを実行するコンピュータープログラムに関する。
【0047】
一実施の形態は、上述したように、NN表現を生成する方法又は装置によって生成されるデータストリームに関する。
【0048】
図面は、必ずしも縮尺通りではなく、代わりに、概して、本発明の原理を図示することに重点が置かれている。以下の説明では、本発明の種々の実施形態が、以下の図面を参照して説明される。
【図面の簡単な説明】
【0049】
【
図2】本発明の一実施形態による、NN表現を生成する装置、NN表現を定義するデジタルデータ、及びNN表現からNNパラメーターを導出する装置を概略的に示す図である。
【
図3】フィードフォワードニューラルネットワークを概略的に示す図である。
【
図4】本発明の一実施形態による、NNパラメトライザーを使用して推論を実行するデバイスを概略的に示す図である。
【
図5】本発明の一実施形態による、ベクトル及び行列の合成として重みパラメーターを因数分解することによって推論を実行するデバイスを概略的に示す図である。
【
図6】本発明の一実施形態による、NNパラメーターをNN表現に符号化する装置及びNN表現からNNパラメーターを復号化する装置を概略的に示す図である。
【
図7】行列XとWとの間の可能な関係を概略的に示す図である。
【発明を実施するための形態】
【0050】
同一若しくは同等の要素、又は同一若しくは同等の機能を有する要素は、異なる図に現れる場合であっても、以下の説明において同一又は同等の参照番号によって示される。
【0051】
以下の説明では、本発明の実施形態のより完全な説明を提供するために、複数の詳細が記載される。しかしながら、本発明の実施形態がこれらの具体的な詳細なしに実施され得ることは、当業者には明らかであろう。他の例では、本発明の実施形態を不明瞭にすることを回避するために、周知の構造及びデバイスは、詳細にではなくブロック図の形態で示される。加えて、本明細書で後に説明される異なる実施形態の特徴は、特に別段の記載がない限り、互いに組み合わせることができる。
【0052】
以下では、少数の浮動小数点演算のみを用いた、又は更には浮動小数点演算を全く用いない推論を可能にする層のパラメーターの量子化ステップサイズを表し、シグナリングする効率的な手法を提示する。つまり、ビットレートの点で効率的な表現であり、更に推論の効率的な計算に利用することができる。
【0053】
図2は、NN表現110を生成する装置100を示している。装置100は、量子化パラメーター142を決定(140)することと、NNパラメーター120の量子化値152を決定(150)することとによって、NNパラメーター120を量子化された値130に量子化するように構成される。量子化値152は、量子化パラメーター142に基づいて決定(150)することができる。量子化パラメーター142の決定(140)は、量子化パラメーター決定器によって実行することができる。量子化値152の決定(150)は、量子化値決定器によって実行することができる。
【0054】
量子化パラメーター142が決定(140)され、それにより、量子化パラメーター142から、乗数144及びビットシフト数146が導出可能である。量子化パラメーター142の決定(140)において、装置100は、例えば、乗数144及びビットシフト数146が、決定された量子化パラメーター142から導出可能であるかどうかを既にチェックしている場合がある。
【0055】
任意選択で、装置100は、量子化パラメーター142から乗数144を導出し、量子化パラメーター142からビットシフト数146を導出して、例えば装置100による量子化された値130の決定を可能にするように構成することができる。しかし、量子化された値130は量子化パラメーター142及び量子化値152によって表すことができるので、これは必要ではない。装置100は、量子化された値130を明示的に決定する必要はない。
【0056】
一実施形態によれば、生成されたNN表現110は、決定された量子化パラメーター142及び決定された量子化値152を含むことができ、それにより、NNパラメーター120、すなわちNNパラメーター120の量子化された値130は、NN表現110から導出可能である。例えば、装置100は、量子化パラメーター142及び量子化値152をNN表現110に符号化するように構成されてもよい。
【0057】
乗数144は、量子化パラメーター142によって導出される被除数と、精度パラメーターk145によって導出される除数との間の除算の剰余に基づいて、量子化パラメーター142から導出可能である。
【0058】
ビットシフト数146は、除算の商の丸めに基づいて、すなわち、量子化パラメーター142によって導出された被除数と精度パラメーターk145によって導出された除数との間の除算の商の丸めに基づいて、量子化パラメーター142から導出可能である。
【0059】
量子化パラメーター142の決定(140)が実行され、それにより、NNパラメーター120の量子化された値130は、量子化値152と乗数144に依存する因数148との間の積であって、ビットシフト数146に依存するビット数だけビットシフトされた積に対応する。NNパラメーター120の量子化された値130は、例えば、少なくとも、シフトの場合には符号の別個の処理を伴う量子化された値の絶対値に関して、又は更には、積、その因数、及びシフトに対してそれぞれ2の補数表現及び2の補数演算を使用する場合等、絶対値と符号との両方に関して、積に対応する。これは、ユニット150に例示的かつ概略的に示されている。
【0060】
一実施形態によれば、装置100は、NNパラメーターのための浮動小数点表現を使用してNN20を訓練することによって、かつ量子化誤差を低減することを目的とする反復最適化方式によってNNパラメーターのための量子化パラメーター142及び量子化値152を決定することによって、NNパラメーター、例えばNNパラメーター120の量子化された値130を提供するように構成される。
【0061】
装置100とは別に、
図1は、NN表現110を定義するデジタルデータ200と、NN表現110からNNパラメーター、すなわちNNパラメーター120の量子化された値130を導出する装置300とを示している。デジタルデータ200及び装置300がNNパラメーターの元の値を見ることがないという事実から、量子化された値130は、この文脈ではNNパラメーターの値として理解される。このため、NNパラメーターは、デジタルデータ200及び装置300の以下の説明のために、130として示される。本明細書で説明されるNNパラメーターは、NNパラメーターに割り当てられた元の値120によって、又は元の値120に基づいて決定された量子化された値130によって表され得ることが明らかである。したがって、以下では、NNパラメーターを120/130として示す。これは、例えば、NNパラメーターが元の値120と量子化された値130のどちらで表されても一般的に適用できる特徴を説明するものである。
【0062】
デジタルデータ200は、NN表現110を定義し、NN表現110は、NNパラメーター130を表すために、量子化パラメーター142及び量子化値152を含んでおり、それにより、量子化パラメーター142から、量子化パラメーター142によって導出された被除数と精度パラメーターk145によって導出された除数との間の除算の剰余に基づいて乗数144が導出可能であり、かつ、量子化パラメーター142から、除算の商の丸めに基づいてビットシフト数146が導出可能である。NN表現110は、量子化パラメーター142及び量子化値152を含んでおり、それにより、NNパラメーター130は、量子化値152と乗数144に依存する因数148との間の積であって、ビットシフト数146に依存するビット数だけビットシフトされた積に対応する。
【0063】
NN表現110からNNパラメーター130を導出する装置300は、例えば、量子化パラメーター導出ユニット310を使用して、NN表現110から量子化パラメーター142を導出し、例えば、量子化値導出ユニット320を使用して、NN表現110から量子化値152を導出するように構成される。加えて、装置300は、量子化パラメーター142から、乗数144及びビットシフト数146を導出するように構成される。装置300は、量子化パラメーター142によって導出された被除数と精度パラメーター145によって導出された除数との間の除算の剰余に基づいて乗数144を導出し、除算の商の丸めに基づいてビットシフト数146を導出するように構成される。乗数144の導出は、乗数導出ユニット330を使用して実行されてもよく、ビットシフト数146の導出は、ビットシフト数導出ユニット340を使用して実行されてもよい。NNパラメーター130は、量子化値152と乗数144に依存する因数148との間の積であって、ビットシフト数146に依存するビット数だけビットシフトされた積に対応する(
図2の装置100及びユニット150についての上記の対応する説明を参照)。NNパラメーター130は、例えば、NNパラメーター導出ユニット350を用いて導出されてもよい。NNパラメーター導出ユニット350は、装置100のオプションのユニット150と同じ特徴及び/又は機能を備えてもよい。
【0064】
以下では、装置100及び装置300の両方に適用可能な実施形態及び例が提示される。
【0065】
一実施形態によれば、NNパラメーター120/130は、重みパラメーター、バッチノルムパラメーター、及びバイアスのうちの1つである。重みパラメーター、例えば、Wの成分wは、一対のニューロンの間のニューロン間活性化フィードフォワードを重み付けするために使用可能であり得るか、又は代替的に言えば、第1のニューロンと第2のニューロンとを接続するエッジに関係し、第2のニューロンのためのインバウンド活性化の和において第1のニューロンの活性化のフォワーディングを重み付けする重みを表し得る。バッチノルムパラメーター、例えば、μ、σ2、γ、βは、ニューラルネットワーク層のアフィン変換をパラメーター化するために使用可能とすることができ、バイアス、例えば、biの成分は、所定のニューラルネットワークニューロンのためのインバウンドニューロン間活性化フィードフォワードの和にバイアスをかけるために使用可能であり得る。
【0066】
一実施形態によれば、NNパラメーター120/130は、例えば
図1に示すように、NNの複数のニューロン間活性化フィードフォワード122のうちの単一のニューロン間活性化フィードフォワード12
i、例えばWの成分wに関して、NN20をパラメーター化する。装置100/装置300は、複数のニューロン間活性化フィードフォワード122の各々について、対応するNNパラメーター120/130をNN表現110に符号化/NN表現110から導出するように構成される。対応するNNパラメーター130は、NN表現110に含まれる。この場合、装置100は、複数のニューロン間活性化フィードフォワード122の各々について、それぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連量子化パラメーター142と、それぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連量子化値152とを決定(140)することによって、対応するNNパラメーター120を対応する量子化された値130に量子化するように構成され得る。関連量子化パラメーター142の決定(140)は、関連量子化パラメーター142から、関連量子化パラメーター142によって導出された被除数と、それぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連精度パラメーター145によって導出された除数との間の除算の剰余に基づいてそれぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連乗数144と、除算の商の丸めに基づいてそれぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連ビットシフト数146と、を導出することができるように実行される。この場合の対応する装置300は、複数のニューロン間活性化フィードフォワード122の各々について、NN表現110からそれぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連量子化パラメーター142を導出(310)し、NN表現110からそれぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連量子化値152を導出(320)するように構成される。導出(310及び320)は、例えばNN表現110から復号化することによって実行されてもよく、すなわちエッジごとに1つが復号化されてもよい。加えて、装置300は、複数のニューロン間活性化フィードフォワード122の各々について、関連量子化パラメーター142から、関連量子化パラメーター142によって導出された被除数と、それぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連精度パラメーター145によって導出された除数との間の除算の剰余に基づいて、それぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連乗数144と、除算の商の丸めに基づいて、それぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連ビットシフト数146と、を導出するように構成される(330及び340参照)。導出(330及び340)は、例えばNN表現110から復号化することによって実行されてもよく、すなわちエッジごとに1つが復号化されてもよい。
【0067】
別の実施形態によれば、装置100/装置300は、NN20の複数のニューロン間活性化フィードフォワード122をニューロン間活性化フィードフォワードのサブグループ122a、122bに細分するように構成され、それにより、各サブグループは、NNの関連する一対のNN層に関連付けられ、関連する一対のNN層の間のニューロン間活性化フィードフォワードを含み、関連する一対の層以外の更なる一対のNN層の間のニューロン間活性化フィードフォワードを除外し、2つ以上のサブグループが所定のNN層に関連付けられる(例えば
図3を参照)。サブグループ122aは、例えば、NN20の関連する一対のNN層114及び116
1に関連付けられ、関連する一対のNN層114及び116
1の間のニューロン間活性化フィードフォワードを含み、関連する一対の層114及び116
1以外の更なる一対のNN層の間、例えば更なる一対のNN層116
1及び116
2の間のニューロン間活性化フィードフォワードを除外する。サブグループ122a及び122bは、層116
1に関連付けられる。NN20の複数のニューロン間活性化フィードフォワード122の細分化は、例えば、NN20内の各エッジ/重み12のインデックスによって、又は他の形態で各層の対の間のエッジ12をセグメント化することによって実行されてもよい。NNパラメーター120/130は、NN2の複数のニューロン間活性化フィードフォワード122のうちの単一のニューロン間活性化フィードフォワード12
iに関してNN20をパラメーター化する。複数のニューロン間活性化フィードフォワード122の各々について、対応するNNパラメーター120/130がNN表現110に含まれる。装置300は、例えば、NN表現から復号化することによって、すなわち、エッジサブグループごとに1つのサブグループを復号化することによって、複数のニューロン間活性化フィードフォワード122の各々について、NN表現110から対応するNNパラメーター120/130を導出するように構成される。装置100/装置300は、ニューロン間活性化フィードフォワードのサブグループ122a、122bごとに、それぞれのサブグループ122a又は122bに関連付けられた関連量子化パラメーター142を決定(140)/導出(310)するように構成される。量子化パラメーター142は、それぞれのサブグループ122a又は122bに関連付けられた関連乗数144が、関連量子化パラメーター142によって導出された被除数とそれぞれのサブグループに関連付けられた関連精度パラメーター145によって導出された除数との間の除算の剰余に基づいて量子化パラメーター142から導出可能であるように、装置100によって決定(140)され、量子化パラメーター142は、それぞれのサブグループ122a又は122bに関連付けられた関連ビットシフト数146が、除算の商の丸めに基づいて量子化パラメーター142から導出可能であるように、装置100によって決定(140)される。装置300は、NN表現110から関連乗数144及び関連ビットシフト数146を導出するように構成される。装置100/装置300は、複数のニューロン間活性化フィードフォワード122の各々について、NN表現110からそれぞれのニューロン間活性化フィードフォワード12
iに関連付けられた関連量子化値152を決定(150)/導出(320)する(例えば、NN表現110から復号化することによって、すなわち、エッジごとに1つが復号化されることによって、導出(320)する)ように構成される。それぞれのニューロン間活性化フィードフォワード12
iの対応するNNパラメーター120/130は、関連量子化値142と、それぞれのニューロン間活性化フィードフォワード12
iが含まれるサブグループ、例えば122a又は122bに関連付けられた関連乗数144に依存する因数148との間の積であって、それぞれのニューロン間活性化フィードフォワード12
iが含まれるサブグループ、例えば122a又は122bの関連ビットシフト数146に依存するビット数だけビットシフトされた積に対応する。
【0068】
関連精度パラメーター145は、例えば、NN20にわたって、又は各NN層114、1161、及び1162内でグローバルに等しく評価される。任意選択で、装置100/装置300は、関連精度パラメーター145をNN表現110に符号化/NN表現110から導出するように構成される。
【0069】
一実施形態によれば、装置100/装置300は、コンテキスト適応型二値算術符号化/復号化を使用することによって、又は量子化パラメーター142を表すビットをNN表現110に直接書き込む/NN表現110から読み出すことによって、又は装置100/装置300のコンテキスト適応型二値エンコーダー/デコーダーの等確率バイパスモードを介して量子化パラメーター142を表すビットをNN表現110から符号化/導出することによって、量子化パラメーター142をNN表現110に符号化/NN表現110から導出するように構成される。装置100/装置300は、二値化方式を使用してビンストリングを二値化/非二値化することによってNN表現110から量子化パラメーター142を導出するように構成され得る。二値化方式は、例えば、指数ゴロム符号である。
【0070】
一実施形態によれば、装置100は、量子化パラメーター142を決定(140)し、それを固定小数点表現、例えば2の補数表現の形態でNN表現110に符号化するように構成される。装置300は、固定小数点表現、例えば2の補数表現の形態でNN表現110から量子化パラメーター142を導出(310)するように構成されてもよい。任意選択で、精度パラメーター145は2tであり、固定小数点表現、例えば2の補数表現のビット長は、NN20に対して一定になるように設定されるか、又はNN20に対して一定である基底ビット長とtとの和になるように設定される。
【0071】
一実施形態によれば、装置100/装置300は、整数値シンタックス要素として量子化パラメーター142をNN表現110に符号化/NN表現110から導出するように構成される。
【0072】
一実施形態によれば、装置100は、量子化値152を決定し、それを固定小数点表現、例えば2の補数表現の形態でNN表現110に符号化するように構成される。装置300は、固定小数点表現、例えば2の補数表現の形態でNN表現110から量子化値152を導出(320)するように構成されてもよい。
【0073】
一実施形態によれば、装置100/装置300は、二値化方式に従って量子化値152をビンストリングに二値化/ビンストリングから非二値化し、コンテキスト適応算術符号化/復号化を使用してビンストリングのビットを符号化/復号化することによって、量子化値152をNN表現110に符号化/NN表現110から導出するように構成される。
【0074】
一実施形態によれば、装置100/装置300は、二値化方式に従って量子化値152をビンストリングに二値化/ビンストリングから非二値化し、コンテキスト適応算術符号化/復号化を使用してビンストリングの第1のビットを符号化/復号化し、等確率バイパスモードを使用してビンストリングの第2のビットを符号化/復号化することによって、量子化値152をNN表現110に符号化/NN表現110から復号化するように構成される。
【0075】
一実施形態によれば、量子化ステップサイズΔ149は、装置100及び/又は装置300によって、量子化パラメーターQP142で示される符号付き整数及び正の整数パラメーターk、すなわち精度パラメーター145から、以下の式に従って導出することができる。
mul=k+QP%k
【数38】
Δ=(mul/k)・2
shift
【0076】
乗数144はmulで表され、ビットシフト数146はshiftで表され、因数148はmul/kで表される。
【0077】
NNパラメーター130は、(mul/k)・2shift・Pであり、ここで、Pは量子化値152である。
【0078】
フロア演算子
【数39】
及びモジュロ演算子%は、以下のように定義される。
【数40】
は、x以下の最大の整数である。
x%yは、
【数41】
として定義されるモジュロ演算子である。
【0079】
任意選択で、装置100及び/又は装置300は、精度パラメーターk145をデフォルト値に設定するように構成することができる。
【0080】
あるいは、装置100は、任意選択で、自然数又は2の累乗等の精度パラメーターk145の複数の異なる整数値をテストすることができる。異なる整数値は、例えば、NN全体に対して、又は各層等のNNの各部分に対してテストされ、量子化誤差及びビットレートに関して、例えばそのラグランジュ和に関して最良の精度パラメーターk145が選択される。装置100は、例えば、精度パラメーターk145を決定して、例えば決定(140)において、乗数144及びビットシフト数146が量子化パラメーター142から導出可能であるかどうかをチェックするように構成されてもよい。任意選択で、装置100によって選択された精度パラメーターk145は、NN表現110においてシグナリングされ、例えば、NN表現110に符号化される。装置300は、例えば、NN表現110から精度パラメーターk145を導出するように構成される。
【0081】
一実施形態によれば、精度パラメーター145は、2の累乗である。
【0082】
一実施形態によれば、装置100/装置300は、精度パラメーター145を表すビットを直接NN表現110に書き込む/NN表現110から読み出すことによって、又は装置100/装置300のコンテキスト適応型二値エンコーダー/デコーダーの等確率バイパスモードを介して精度パラメーター145を表すビットをNN表現110に/NN表現110から導出することによって、精度パラメーター145をNN表現110に符号化/NN表現110から導出するように構成される。
【0083】
ビットストリーム、例えばデジタルデータ200において32ビット浮動小数点値をシグナリングする代わりに、パラメーターQP142及びk145のみがシグナリングされる必要がある。一部の適用例では、ビットストリーム中でQP142をシグナリングし、k145を何らかの固定値に設定することで十分な場合もある。
【0084】
好ましい実施形態において、パラメーターQP’=QP-QP0が、QP142の代わりにビットストリーム内でシグナリングされ、ここで、パラメーターQP0は、所定の定数値である。換言すれば、一実施形態によれば、装置100/装置300は、関連量子化パラメーターQP142を、参照量子化パラメーターQP0との差分の形態で、NN表現110に符号化/NN表現110から導出するように構成される。
【0085】
別の好ましい実施形態において、k145は2tに設定される。このようにして、Δ149の算出は、除算を含まずに以下のように実行することができる。
Δ=mul・2shift-t
【0086】
これにより、一部の計算を、以下に例示されるように、浮動小数点領域の代わりに整数領域で実行することが可能となる。
【0087】
図4は、NN20を使用して推論を実行するデバイス400を概略的に示している。デバイス400は、NN20をパラメーター化するように構成されたNNパラメトライザー410を備える。NNパラメトライザー410は、NN表現110からNNパラメーター130を導出する装置300を備える。NNパラメーター130を導出する装置300は、
図2の装置300に関して説明したものと同じ又は同様の特徴を備えることができる。装置300は、NNパラメーター導出ユニットとして理解され得る。加えて、デバイス400は、NN20を使用して、例えば、NNパラメトライザー410によって決定されたNN20のパラメーター化450を使用して、NN入力440に基づいて推論出力430を計算するように構成された計算ユニット420を備える。
【0088】
例1:
一実施形態によれば、NNパラメトライザー410は、装置300を介して、第1のNNパラメーター及び第2のNNパラメーターのうちの少なくとも1つを導出するように構成され、それにより、第1のNNパラメーターは、第1の量子化値と第1の因数との間の積であって、第1のビット数だけビットシフトされた積に対応し、第2のNNパラメーターは、第2の量子化値と第2の因数との間の積であって、第2のビット数だけビットシフトされた積に対応する。
【0089】
第1の量子化値及び第2の量子化値は両方とも、
図2において152で示される量子化値を表す。第1の因数及び第2の因数は両方とも、
図2において148で示される因数を表す。
【0090】
例えば、t=2とし、k=2tとし、QPaで示される第1のQP、すなわち第1の量子化パラメーター142、関連するshifta、すなわち第1のビットシフト数146、mula、すなわち第1の乗数144、及びΔa、すなわち第1の量子化ステップサイズ149を定義する。
【0091】
さらに、QPbで示される第2のQP、すなわち第2の量子化パラメーター142、関連するshiftb、すなわち第2のビットシフト数146、mulb、すなわち第2の乗数144、及びΔb、すなわち第2の量子化ステップサイズ149を定義する。
【0092】
「第1の」パラメーター及び「第2の」パラメーターは、この文脈では同じ参照番号で示されているが、それらが異なる値を有し得ることは明らかである。それらは、それらが
図2に示されるどの特徴に属するかを明確にするために、同じ参照番号で示されているのみである。
【0093】
C=Δ
a・C
aが成り立つ第1の量子化行列C
aを考える。
D=Δ
b・D
bが成り立つ第2の量子化行列D
bを考える。
すなわち、C
aは、QP
aを使用して量子化され、D
bは、QP
bを使用して量子化されている。
両方の行列は、同じ次元を有する。
図2で説明した量子化値152は、C
aの1つの成分又はD
bの1つの成分を表すことができる。例えば、C
aは、複数の第1の量子化値152を含むことができ、D
bは、複数の第2の量子化値152を含むことができる。
【0094】
さらに、和C+Dが以下のように算出されると仮定する。
【数42】
【0095】
デバイス400は、第1のNNパラメーターCの第1の量子化値C
aによって形成され、第1の乗数mul
aで重み付けされた第1の加数、例えばmul
a・C
aと、第2のNNパラメーターDの第2の量子化値D
bによって形成され、第2の乗数mul
bで重み付けされ、第1のビット数及び第2のビット数の差、例えば、
【数43】
だけビットシフトされた第2の加数、例えば、
【数44】
との間の和を形成することと、第1の加数及び第2の加数の和に、第1のビット数及び第2のビット数の一方に依存する、例えば第1のビットシフト数shift
a又は第2のビットシフト数shift
bに依存するビット数だけビットシフト
【数45】
を施すことと、によって、第1のNNパラメーターC及び第2のNNパラメーターDを加算してNN20の最終NNパラメーターを生成するように構成される。
【0096】
任意選択で、この算出/計算は、計算ユニット420によって実行することができる。この場合、計算ユニット420は、上述したように、第1のNNパラメーターCと第2のNNパラメーターDとを加算してNN20の最終的なNNパラメーターを生成するように構成されている。
【0097】
式から分かるように、浮動小数点演算を必要とし得るC及びDを導出する必要はない。その代わりに、C
aの要素、すなわち第1の量子化値152は、単にmul
a、すなわち第1の乗数144と乗算され、D
bの要素、すなわち第2の量子化値152は、mul
b、すなわち第2の乗数144と乗算され、因数
【数46】
は、C
aの第1の量子化値152、すなわちC
aの成分に関連する第1のビットシフト数shift
a146と、D
bの第2の量子化値152、すなわちD
bの成分に関連する第2のビットシフト数shift
b146とに依存する単純なビットシフト演算として実施される。t=2であるので、整数変数mul
a及びmul
bは両方とも値4、5、6、及び7のうちの1つであることに留意されたい。かかる小さい数を有する整数乗算は、ハードウェア又はソフトウェア実施態様において非常に効率的に実施され得る。
【0098】
一実施形態によれば、第1のNNパラメーターはNN20のベース層表現を表し、第2のNNパラメーターはNN20のエンハンスメント層表現を表す。代替的に、第1のNNパラメーターは、例えば、NN20の現在の表現を表し、第2のNNパラメーターは、現在のNN表現の更新、すなわち、NN20の現在の表現の更新を表す。代替的に、例えば、第1のNNパラメーターは、所定のニューラルネットワークニューロン10のインバウンドニューロン間活性化フィードフォワードの和にバイアスをかけるバイアス、すなわちbiの成分を表し、第2のNNパラメーターは、ニューラルネットワーク層114、1161又は1162のアフィン変換をパラメーター化するバッチノルムパラメーター、すなわちμ、σ2、γ又はβ、例えばb+μを表す。
【0099】
例2:
一実施形態によれば、NNパラメトライザー410は、装置300を介して、第3のNNパラメーター及び第4のNNパラメーターのうちの少なくとも1つを導出するように構成され、それにより、第3のNNパラメーターは、第3の量子化値と第3の因数との間の積であって、第3のビット数だけビットシフトされた積に対応し、第4のNNパラメーターは、第4の量子化値と第4の因数との間の積であって、第4のビット数だけビットシフトされた積に対応する。
【0100】
第3の量子化値及び第4の量子化値はともに、
図2において152で示される量子化値を表す。第3の因数及び第4の因数は、両方とも、
図2において148で示される因数を表す。
【0101】
例えば、t=2とし、k=2tとし、第1のQP、例えば、QPaで示される第3の量子化パラメーター142、関連するshifta、すなわち第3のビットシフト数146、mula、すなわち第3の乗数144、及びΔa、すなわち第3の量子化ステップサイズ149を定義する。
【0102】
さらに、第2のQP、例えば、QPbで示される第4の量子化パラメーター142、関連するshiftb、すなわち第4のビットシフト数146、mulb、すなわち第4の乗数144、及びΔb、すなわち第4の量子化ステップサイズ149を定義する。
【0103】
「第3の」パラメーター及び「第4の」パラメーターは、この文脈では同じ参照番号で示されているが、それらが異なる値を有し得ることは明らかである。それらは、それらが
図2に示されるどの特徴に属するかを明確にするために、同じ参照番号で示されているのみである。デバイス400は、第3のパラメーター及び/又は第4のパラメーターのみ、又は、上記の例1で説明したように、更に第1のパラメーター及び/又は第2のパラメーターを導出するように構成されてもよい。
【0104】
W=Δ
a・W
aが成り立つ量子化行列W
aを考える。
γ=Δ
b・γ
bが成り立つ量子化された転置ベクトルγ
bを考える。
すなわち、W
aは、QP
aを使用して量子化され、γ
bは、QP
bを使用して量子化されている。
図2で説明した量子化値152は、W
aの1つの成分又はγ
bの1つの成分を表すことができる。例えば、Waは複数の量子化値152を含むことができ、γ
bは複数の量子化値152を含むことができる。
【0105】
さらに、要素ごとの積W・γが以下のように算出されると仮定する。
【数47】
【0106】
この算出/計算は、例えば、第3のNNパラメーターW及び第4のNNパラメーターγを乗算に施して、第3のNNパラメーターWの第3の量子化値W
aによって形成される第1の因数と、第3の乗数mul
aによって形成される第2の因数と、第4のNNパラメーターγの第4の量子化値γ
bによって形成される第3の因数と、第4の乗数mul
bによって形成される第4の因数との積であって、第3のビット数shift
aによって形成される第1の加数と第4のビット数shift
bによって形成される第2の加数とを含む和に対応するビット数、例えば
【数48】
だけビットシフトされた積を形成することによって積を得ることによって、演算ユニット420によって実行され得る。
【0107】
式から分かるように、浮動小数点演算を必要とし得るW及びγを導出する必要はない。代わりに、計算mul
a・mul
b・W
a・γ
bは、整数乗算のみを伴い、
【数49】
との後続の乗算は、ビットシフトとして実施することができる。t=2であるので、整数変数mul
a及びmul
bは両方とも値4、5、6、及び7のうちの1つであることに留意されたい。かかる小さい数を有する整数乗算は、ハードウェア又はソフトウェア実施態様において非常に効率的に実施され得る。
【0108】
一実施形態によれば、第3のNNパラメーターは、第1のNN層114の第1のニューロン101から第2のNN層1162の第2のニューロン102へのニューロン間活性化フィードフォワードを重み付けする重みパラメーター、例えば、Wの成分wを表すか、又は代替的に、第3のNNパラメーターは、第1のニューロン101と第2のニューロン102とを接続するエッジ12iに関連し、第2のニューロン102のインバウンド活性化の和における第1のニューロン101の活性化の転送を重み付けする重みを表す。
【0109】
第4のNNパラメーターは、例えば、バッチノルムパラメーター、例えば、μ、σ2、γ又はβを表す。バッチノルムパラメーターは、例えば、第2のNN層1161に対する第1のニューロン101の活性化フィードフォワード増幅を調整するものであり、例えばγである。
【0110】
入力Xの量子化
一実施形態によれば、デバイス400は、例えば装置300を使用して、活性化を量子化された値、例えばX’’に量子化することによって、活性化について第5の量子化パラメーターQP、すなわち量子化パラメーター142、及び第5の量子化値、例えばX’、すなわち量子化値152を決定することによって、NN入力X440を量子化するように構成され、それにより、第5の量子化パラメーターQPからの第5の乗数mul、すなわち乗数144の導出は、第5の量子化パラメーターによって導出された被除数と、活性化に関連する精度パラメーターk、すなわち精度パラメーター145によって導出された除数との間の除算の剰余と、除算の商の丸めに基づく第5のビットシフト数shift、すなわちビットシフト数146とに基づいて、第5の量子化値と第5の乗数に依存する因数mul/k、すなわち因数148との間の積に対応する量子化された値が、第5のビットシフト数に依存する第5のビット数だけビットシフトされることをもたらす。
【0111】
好ましい実施形態において、バイアス層又はバッチ正規化層の入力X440も、本発明の量子化方法を使用して量子化される。
図2の装置100の説明を参照。すなわち、X’’=Δ・X’=mul・2
shift-t・X’が成り立つように、量子化パラメーターQP及び関連する変数、関連するshift、mul、及びΔ(t=2及びk=2
t)が選択され、XがX’に量子化される。次に、バイアス層又はバッチノルム層を実行するためにXを使用する代わりに、X’’が入力として使用される。X’は、通常、Xよりも極めて少ないビット/要素で表すことができ、これは、効率的なハードウェア又はソフトウェア実施態様のための別の利点であることに留意されたい。
【0112】
一実施形態によれば、NNパラメトライザー410は、装置300を介して第6のNNパラメーターを導出するように構成され、それにより、第6のNNパラメーターは、第6の量子化値と第6の因数mul/kとの積であって、第6のビット数だけビットシフトされた積に対する。デバイス400は、第6のNNパラメーター及び活性化に乗算を施して、第6のNNパラメーターのための第6の量子化値によって形成される第1の因数と、第6の乗数によって形成される第2の因数と、第5の量子化値によって形成される第3の因数と、第5の乗数によって形成される第4の因数との積を形成することによって積であって、第6のビット数によって形成される第1の加数と第4のビット数によって形成される第2の加数とを含む和に対応するビット数だけビットシフトされた積を生成するように構成される。
【0113】
一実施形態によれば、第6のNNパラメーターは、入力440を重み付けする重みパラメーターWを表し、それにより、積W*Xを算出/計算することができる。
【0114】
図2に戻って参照すると、以下では、装置100及び/又は装置300の更なる任意選択の特徴が説明される。
【0115】
パラメーターQPの効率的な符号化及び復号化
好ましい実施形態において、パラメーターQP、すなわち量子化パラメーター142は、以下の定義に従って、K次の符号付き指数ゴロム符号を使用して、装置100/装置300によってビットストリーム200内に符号化/ビットストリーム200から復号化される。
【0116】
別の好ましい実施形態は、次数Kが0に設定された先の好ましい実施形態と同じである。
【0117】
符号なし整数の指数ゴロム符号
符号なし整数の符号なし指数ゴロム符号は、高効率ビデオ符号化(HEVC:High Efficiency Video Coding)規格において定義されているシンタックス要素ue(v)の復号化仕様に従うものとする。
【0118】
この仕様を以下に簡単に説明する。
【0119】
次数Kの符号なし指数ゴロム符号で符号化された二値表現からの符号なし整数変数「decNum」の復号化は、以下の擬似符号に従って定義される。
leadingZeroBits=-1
for(b=0;!b;leadingZeroBits++)
b=read_bits(1)
【0120】
次に、変数codeNumが以下のように割り当てられる。
decNum=(2leadingZeroBits-1)*2K+read_bits(leadingZeroBits+K)
【0121】
関数read_bits(x)は、ビットストリームからxビットを読み出し、それらを符号なし整数として返す。読み出されたビットは、最上位ビット(MSB)から最下位ビット(LSB)に順序付けられる。
【0122】
符号付き整数の指数ゴロム符号
符号付き整数の符号なし指数ゴロム符号は、高効率ビデオ符号化(HEVC)規格において定義されているシンタックス要素se(v)の復号化仕様に従うものとする。
【0123】
この仕様を以下に簡単に説明する。
【0124】
符号付き指数ゴロム符号で符号化された二値表現からの符号付き整数「signedDecNum」の復号化は、以下の通りである。最初に、符号なし整数が、上記で説明したようにHEVCのue(v)シンタックス要素復号化プロセスに従って復号化される。次に、符号なし整数は、以下の式に従って符号付き整数に変換される。
【数50】
シーリング演算子
【数51】
は、x以上の最小整数を返す。
【0125】
更に好ましい実施形態
好ましい実施形態において、パラメーターk、すなわち精度パラメーター145は、2tに設定され、パラメーターtは、bits_tビットを有する(例えば、bits_t=3又はbits_t=4を有する)符号なし整数表現を使用して符号化される。
【0126】
別の好ましい実施形態において、パラメーターk、すなわち精度パラメーター145は、2tに設定され、パラメーターtは、符号なし整数用の指数ゴロム符号を使用して符号化される。
【0127】
別の好ましい実施形態において、パラメーターQP、すなわち量子化パラメーター142は、符号付き整数用の指数ゴロム符号を使用して符号化される。
【0128】
別の好ましい実施形態において、パラメーターk、すなわち精度パラメーター145は、2tに設定され、パラメーターQPは、bits_qpビットを使用して2の補数表現の符号付き整数を使用して符号化される。bits_qpは、例えば、12又は13のような一定値に設定されるか、又はbits_qpは、bits_qp0+tに設定され、bits_qp0は、非ゼロの一定の整数値(例えば、bits_qp0=6)である。
【0129】
CABAC符号化ビットストリーム200の場合、パラメーターt及び/又はQP142を表すビットは、(CABACのバイパスモードを使用して)バイパスビンとして符号化されるか、又はビットストリーム200に直接書き込まれるかのいずれかであり得る。
【0130】
別の好ましい実施形態において、パラメーターW、b、μ、σ2、γ、及びβの各々は、パラメーターの符号化の直前に符号化される個々のQP142の値で量子化される。
【0131】
別の好ましい実施形態において、第1のQP142がビットストリーム200に符号化され、モデルのパラメーターのサブセットに関連付けられる。このサブセットの各パラメーターxについて、1つのQPオフセットQPxがパラメーターごとに符号化され、パラメーターを逆量子化するために使用される有効QP142、すなわちNNパラメーター120は、QP+QPxとして与えられる。QPxの二値表現は、好ましくは、QPの二値表現よりも少ないビットを使用する。例えば、QPxは、符号付き整数又は(2の補数表現での)固定数のビットのための指数ゴロムコードを使用して符号化される。
【0132】
重みパラメーターの符号化に関する更なる実施形態
図5に示される更なる好ましい実施形態は、重みパラメーターW545の表現に関する。すなわち、それらをベクトル546と行列544との合成W→s・W’として因数分解する。W及びW’、すなわち重み行列544は、次元n×mの行列であり、sは、長さnの転置ベクトル546である。ベクトルs546の各要素は、重み行列W’544の行方向のスケーリングファクターとして使用される。換言すれば、s546は、W’544の各列と要素ごとに乗算される。s546をローカルスケーリングファクター又はローカルスケール適応(LSA:local scale adaptation)と称する。
【0133】
図5は、NN20を使用して推論を実行するデバイス500を示している。デバイス500は、NN20を使用してNN入力440に基づいて推論出力430を計算するように構成される。NN20は、一対のNN層114及び116と、一対のNN層の第1の層114からNN層の第2の層116へのニューロン間活性化フィードフォワード122とを含む。デバイス500は、例えば、デバイス500の行列形成ユニット530を使用して、第1のNN層114のニューラルネットワークニューロン10
1の活性化520から行列X532を形成することによって、第1のNN層114のニューラルネットワークニューロン10
1の活性化520に基づいて第2のNN層116のニューラルネットワークニューロン10
2の活性化510を計算するように構成される。加えて、デバイス500は、s・W’*Xを計算(542)することによって、第1のNN層114のニューラルネットワークニューロン10
1の活性化520に基づいて、第2のNN層116のニューラルネットワークニューロン10
2の活性化510を計算するように構成され、ここで、*は、行列乗算を表し、W’は、n及びm∈Nである次元n×mの重み行列544であり、sは、長さnの転置ベクトル546であり、・は、・の一方の側の行列と・の他方の側の転置ベクトルとの間の列に関するアダマール乗算を示す、デバイス500は、計算542を実行するように構成された計算ユニット540を備えることができる。
【0134】
一実施形態によれば、転置ベクトルs546は、W’544を符号化するためのより高い圧縮及び/又はより高い推論忠実度に関してW’544を最適化した結果である。
【0135】
その論理的根拠は、LSAが重み行列544をスケーリングし、それにより、算術符号化方法がより高い符号化利得をもたらし、及び/又はニューラルネットワーク性能結果を増加させ、例えば、より高い精度を達成することである。例えば、Wの量子化後、s546は、入力データ440、例えばX532を使用して又は使用せずに、量子化誤差を低減し、それにより量子化されたニューラルネットワークの予測性能を向上させるために適応され得る。
【0136】
したがって、s546及びW’544は、異なる量子化パラメーター、すなわち異なるQPを有することができる。これは、性能の観点からだけでなく、ハードウェア効率の観点からも有益であり得る。例えば、W’544は、入力X532との内積が8ビット表現で実行されてもよいが、スケーリングファクターs546との後続の乗算が16ビットで実行され得るように量子化されてもよい。デバイス500は、例えば、内積を得るためにnビット固定小数点演算を使用して行列乗算W’*Xを計算し、m>nであるmビット固定小数点演算を使用して内積をs546と乗算するように構成される。
【0137】
しかしながら、W’544及びs546が両方ともnビット表現に量子化される場合であっても、同じ推論精度を得るためにW545を量子化するのに必要なnよりも小さいnで十分な場合がある。同様に、s546がW’544よりも少ないビットの表現に量子化された場合、表現の効率に関する利点を更に達成できる場合がある。
【0138】
一実施形態によれば、デバイス500は、NN表現110からW’544を導出するように構成されたNNパラメトライザー、例えば、
図4に示すNNパラメトライザー410を備える。NNパラメトライザーは、NN表現110からNNパラメーターを導出する装置、例えば、
図4又は
図2に示される装置300を備える。重み行列W’544は、装置300によって導出されたNNパラメーターであり得る。任意選択で、NNパラメトライザー410は、W’544に関連するNNパラメーターと比較して異なる量子化パラメーター142を使用して、NN表現110からs546を導出するように更に構成される。
【0139】
好ましい実施形態において、重み行列W544の符号化は以下の通りである。第1に、LSAが使用されるかどうかを示すフラグが符号化される。フラグが1である場合、パラメーターs546及びW’544は、DeepCABACのような現行技術水準のパラメーター符号化方式を使用して符号化される。フラグが0である場合、W545が代わりに符号化される。
【0140】
別の好ましい実施形態において、前の好ましい実施形態による、異なるQP値がW’544及びs546に使用される。
【0141】
バッチノルム圧縮
図6に示す一実施形態は、バッチノルム圧縮を改善することに関する。
図6は、NNのバッチノルム演算子710のNNパラメーター610、例えば、μ、σ
2、γ、β、及び任意選択でbをNN表現110に符号化する装置600と、NN表現110からNNのバッチノルム演算子710のNNパラメーター610、例えば、γ722及びβ724及びパラメーター732、すなわち、μ、σ
2、及び任意選択でbを復号化する装置700とを示している。4つの実施形態が示されており、第1の実施形態は一般的な場合を説明し、他の実施形態は特別な場合を対象とする。
【0142】
概して、バッチノルム演算子710
1は、
【数52】
として定義することができ、式中、
μ、σ
2、γ、及びβは、バッチノルムパラメーター、例えば、各出力ノードについて1つの成分を含む転置ベクトルであり、
Wは、重み行列であり、例えば、その各行は1つの出力ノードに対するものであり、それぞれの行の各成分はXの1つの行に関連付けられており、
Xは、NN層の活性化から導出される入力行列であり、
bは、バイアスを形成する転置ベクトル、例えば、各出力ノードに対して1つの成分を含む転置ベクトルであり、
εは、ゼロ除算回避のための定数であり、
・は、・の一方の側の行列と他方の側の転置ベクトルとの間の列に関するアダマール乗算を示し、
*は、行列乗算を示す。
【0143】
第2の実施形態において、定数εは0であり、それにより、バッチノルム演算子710
2は、
【数53】
によって定義される。
【0144】
第3の実施形態において、バイアスbは0であり、それにより、バッチノルム演算子710
3は、
【数54】
によって定義される。
【0145】
第4の実施形態において、バイアスb及び定数εは0であり、それにより、バッチノルム演算子710
4は、
【数55】
によって定義される。
【0146】
図6では、バッチノルム演算子710の一部のパラメーターは、アポストロフィを有しており、アポストロフィなしのパラメーターによって示される元のパラメーター610と、アポストロフィありのパラメーターによって示される修正されたパラメーター722、724、及び732との間の区別を可能にする。元のパラメーター610又は修正されたパラメーター722、724及び732のいずれかを、上記で定義されたバッチノルム演算子710のうちの1つのパラメーターとして使用できることは明らかである。
【0147】
装置600は、パラメーターμ、γ、β、及びσ2又はσを受信するように構成され(6101~6104参照)、任意選択でbを受信するように構成される(6101及び6102参照)。
【0148】
第1の実施形態によれば、装置600は、
【数56】
及び
【数57】
を計算するように構成される。
【0149】
代替の第2の実施形態によれば、装置600は、
【数58】
及び
【数59】
を計算するように構成される。
【0150】
代替の第3の実施形態によれば、装置600は、
【数60】
及び
【数61】
を計算するように構成される。
【0151】
代替の第4の実施形態によれば、装置600は、
【数62】
及び
【数63】
を計算するように構成される。
【0152】
計算されたパラメーターβ’及びγ’は、バッチノルム演算子710のNNパラメーターとしてNN表現110に符号化され、例えば、同じ(β’及びγ’)が、各出力ノードに対して1つの成分を含む転置ベクトルでもあるようにする。
【0153】
したがって、第1の実施形態のバッチノルム演算子710
1は、
【数64】
として定義することができ、σ’
2:=θ、μ’:=0、及びb’:=0であり、ここで、θは所定のパラメーターである。第2の実施形態のバッチノルム演算子710
2は、
【数65】
として定義することができ、σ’
2:=1、μ’=0、及びb’=0である。第3の実施形態のバッチノルム演算子710
3は、
【数66】
として定義することができ、σ’
2:=θ及びμ’:=0であり、ここで、θは所定のパラメーターである。第4の実施形態のバッチノルム演算子710
4は、
【数67】
として定義することができ、σ’
2:=1及びμ’:=0である。
【0154】
所定のパラメーターは1又は1-εであり、例えば、ここでもμ’、σ’2、γ’、及びβ’は各出力ノードに対して1つの成分を含む転置ベクトルであり、Wは、重み行列であり、XはNN層の活性化から導出される入力行列であり、b’はバイアスを形成する転置ベクトル、例えば、各出力ノードに対して1つの成分を含む転置ベクトルである。
【0155】
装置700は、例えば、装置700に含まれ得るγ及びβ導出ユニット720を使用することによって、NN表現からγ及びβ、すなわちγ’及びβ’を導出するように構成される。
【0156】
第1の実施形態によれば、装置700は、その全ての成分に適用される1つのシグナリング734を介して、σ’2:=θ、μ’:=0、及びb’:=0を推論又は導出するように構成され、ここで、θは所定のパラメーターである。
【0157】
第2の実施形態によれば、装置700は、その全ての成分に適用される1つのシグナリング734を介して、σ’2:=1、μ’:=0、及びb’:=0であると推論又は導出するように構成される。
【0158】
第3の実施形態によれば、装置700は、その全ての成分に適用される1つのシグナリング734によって、σ’2:=θ及びμ’:=0を推論又は導出するように構成され、ここで、θは所定のパラメーターである。
【0159】
第4の実施形態によれば、装置700は、その全ての成分に適用される1つのシグナリング734によって、σ’2:=1及びμ’:=0であると推論又は導出するように構成される。
【0160】
パラメーターσ’2、μ’、及び任意選択でb’のこの導出又は推論は、パラメーター推論/導出ユニット730を使用して実行され得る。
【0161】
所定のパラメーターは1又は1-εであり、例えば、ここでもμ’、σ’2、γ’、及びβ’は各出力ノードに対して1つの成分を含む転置ベクトルであり、Wは、重み行列であり、XはNN層の活性化から導出される入力行列であり、b’はバイアスを形成する転置ベクトル、例えば、各出力ノードに対して1つの成分を含む転置ベクトルである。
【0162】
図6では、装置700によって導出又は推論されたパラメーターはアポストロフィによって示されているが、装置700が元のパラメーター610を見ることがないという事実により、装置700によって導出又は推論されたパラメーターはアポストロフィを使用せずに示されてもよい。装置700を考慮すると、導出又は推論されたパラメーターは、唯一の既存のパラメーターである。
【0163】
任意選択で、装置700は、例えば推論のために、導出又は推論されたパラメーター722、724、及び732とともにバッチノルム演算子を使用するように構成され得る。バッチノルム演算子計算ユニットは、バッチノルム演算子を使用するように構成され得る。代替的に、推論のデバイス、例えばデバイス400又はデバイス500は、バッチノルム演算子710のパラメーターを取得する装置700を備えてもよい。
【0164】
定数スカラー値θ、すなわち、例えば、1又は1-εに等しくなり得る所定のパラメーターを導入すると、パラメーターb、μ、σ
2、γ、及びβは、BN(X)、すなわち、バッチノルム演算子710の結果を変更することなく、以下の順序付けられたステップによって修正することができる。
【数68】
3)σ
2:=θ
4)μ:=0
5)b:=0
【0165】
各演算は、転置されたベクトルの要素に対する要素ごとの演算として解釈される。実施形態2~3に例示されるように、BN(X)を変更しない更なる修正も可能である。例えば、バイアスb及び平均μはβに「積分」され、それにより、b及びμはその後0に設定される(第3の実施形態を参照)。又は、σ2は、他のパラメーターがそれに応じて調整されるとき、BN(X)における分数の分母を1に等しく設定するために、1-ε(すなわち、θ=1-ε)に設定され得る。
【0166】
それにより、全てのベクトル要素が同じ値を有するので、b、σ2、μ、及びbを極めてより効率的に圧縮することができる。
【0167】
好ましい実施形態において、パラメーターの全ての要素が所定の定数値を有するかどうかを示すフラグ734が符号化される。パラメーターは、例えば、b、μ、σ2、γ、又はβであってもよい。所定の値は、例えば、0、1、又は1-εであってもよい。フラグが1に等しい場合、パラメーターの全てのベクトル要素は、所定の値に設定される。そうでなければ、パラメーターは、例えばDeepCABACのような現行技術水準のパラメーター符号化方法の1つを使用して符号化される。
【0168】
別の好ましい実施形態において、全てのベクトル要素が同じ値を有するかどうかを示すフラグがパラメーターごとに符号化される。全てのベクトル要素が同じ値を有するとき、フラグは1に等しく、その値は、例えばDeepCABAC、又は及び指数ゴロム符号、又は固定長符号のような現行技術水準のパラメーター符号化方法を使用して符号化される。フラグが0である場合、パラメーターのベクトル要素は、例えばDeepCABACのような現行技術水準のパラメーター符号化方法の1つを使用して符号化される。
【0169】
一実施形態によれば、装置600/装置700は、表現110において/表現110から、σ’2の全ての成分(例えば、各成分は、対応する出力ノードを意味するWの対応する行に対するものである)が互いに等しいこと、及びその値を示す/導出するように構成される。加えて、又は代替として、装置600/装置700は、表現110において/表現110から、μ’の全ての成分(例えば、各成分は、対応する出力ノードを意味するWの対応する行に対するものである)が互いに等しいこと、及びその値を示す/導出するように構成される。加えて、又は代替として、装置600/装置700は、存在する場合、例えば第1の実施形態及び第2の実施形態の場合であるが第3の実施形態及び第4の実施形態の場合ではない場合、表現119において/表現119から、b’の全ての成分(例えば、各成分は、対応する出力ノードを意味するWの対応する行に対するものである)が互いに等しいこと、及びその値を示す/導出するように構成される。
【0170】
一実施形態によれば、装置600は、2つのバッチノルム符号化モードの間で切り替え可能であるように更に構成され、第1のバッチノルム符号化モードでは、装置600は、β’及びγ’の計算及び符号化を実行するように構成され、第2のバッチノルム符号化モードでは、装置は、受信されたμ、σ2又はσ、γ、及びβ、並びに存在する場合、bを符号化するように構成される。換言すれば、受信されたパラメーター610は、第2のバッチノルムモードで表現110に直接符号化される。並行して、装置700も、2つのバッチノルム符号化モード間で切り替え可能であるように構成してもよく、第1のバッチノルム符号化モードでは、装置700は、導出することと、推論又は導出することとを実行するように構成され、第2の第1のバッチノルム符号化モードでは、装置700は、μ、σ2又はσ、γ、及びβ、並びに存在する場合、bを表現110から復号化するように構成される。換言すれば、パラメーター610は、第2のバッチノルムモードで表現110から直接復号化される。
【0171】
一実施形態によれば、装置600は、β’及びγ’をNN表現110に量子化及び符号化する装置100(
図2参照)を備える。例えば、装置600は、最初に計算620を実行し、得られたパラメーターβ’及びγ’を、パラメーターの量子化のために装置100に渡す。一実施形態によれば、装置700は、NN表現110からβ及びγを導出する装置300(
図2参照)を備える。
【0172】
理解を容易にするために、X及びWと層の対との間の可能な関係が
図7に示されており、左は全結合層i+1であり、右は畳み込み層i+1である。層のニューロンは円10で示されている。各層のニューロンは、アレイ位置(x,y)に配置される。各層iは、q
i列のニューロン10とp
i行のニューロン10とを有する。全結合の場合、X
iは、成分
【数69】
のベクトルであり、各X
gは、位置
【数70】
におけるニューロンの活性化で占められ、W
iは、成分
【数71】
の行列であり、各W
g,hは、位置
【数72】
における層i+1のニューロン10と位置
【数73】
における層iのニューロン10との間のエッジ12の重みで占められる。畳み込みの場合、X
iは、成分
【数74】
の行列であり、ここで、各X
g,hは、位置
【数75】
におけるニューロンの活性化で占められ、W
iは、成分W
1...r・sのベクトルであり、ここで、各W
g,hは、層iにわたって分散されたp
i+1・q
i+1位置のうちの1つに配置された層i中のサイズr×sの矩形フィルターカーネル中のニューロンから、カーネル位置に対応する層i+1中のニューロン位置につながるエッジの重みで占められる。
【0173】
一部の態様を装置の文脈で説明してきたが、これらの態様が対応する方法の説明も表すことは明らかであり、ブロック又はデバイスは方法ステップ又は方法ステップの特徴に対応する。同様に、方法ステップの文脈で説明される態様はまた、対応する装置の対応するブロック又は項目又は特徴の説明を表す。方法ステップの一部又は全部は、例えばマイクロプロセッサ、プログラマブルコンピューター又は電子回路のようなハードウェア装置によって(又はそれを使用して)実行されてもよい。一部の実施形態において、最も重要な方法ステップのうちの1つ以上は、かかる装置によって実行されてもよい。
【0174】
本発明のNN表現を含む本発明のデジタルデータ、データストリーム、又はファイルは、デジタル記憶媒体上に記憶することができ、又は無線伝送媒体若しくはインターネット等の有線伝送媒体等の伝送媒体上で伝送することができる。
【0175】
特定の実装要件に応じて、本発明の実施形態は、ハードウェア又はソフトウェアで実行することができる。実施態様は、それぞれの方法が実行されるようにプログラム可能なコンピューターシステムと協働する(又は協働することができる)電子的可読制御信号が記憶されたデジタル記憶媒体、例えば、フロッピーディスク、DVD、Blu-ray(登録商標)、CD、ROM、PROM、EPROM、EEPROM又はフラッシュメモリを使用して実行することができる。したがって、デジタル記憶媒体はコンピューター可読であってもよい。
【0176】
本発明による一部の実施形態は、電子的可読制御信号を有するデータキャリアを備え、該電子的可読制御信号は、本明細書で説明される方法のうちの1つが実行されるように、プログラム可能なコンピューターシステムと協働することが可能である。
【0177】
概して、本発明の実施形態は、プログラムコードを有するコンピュータープログラム製品として実施することができ、プログラムコードは、コンピュータープログラム製品がコンピューター上で実行されるときに方法のうちの1つを実行するように動作可能である。プログラムコードは、例えば、機械可読キャリアに記憶されてもよい。
【0178】
他の実施形態は、機械可読キャリア上に記憶された、本明細書で説明される方法のうちの1つを実行するコンピュータープログラムを含む。
【0179】
したがって、換言すれば、本発明の方法の一実施形態は、コンピュータープログラムがコンピューター上で実行されるときに、本明細書で説明される方法のうちの1つを実行するプログラムコードを有するコンピュータープログラムである。
【0180】
したがって、本発明の方法の更なる実施形態は、本明細書に記載の方法のうちの1つを実行するコンピュータープログラムを記録したデータキャリア(又はデジタル記憶媒体、又はコンピューター可読媒体)である。データキャリア、デジタル記憶媒体又は記録された媒体は、典型的には有形及び/又は非一時的である。
【0181】
したがって、本発明の方法の更なる実施形態は、本明細書に記載された方法の1つを実行するコンピュータープログラムを表すデータストリーム又はシグナルのシーケンスである。データストリーム又はシグナルのシーケンスは、例えば、データ通信接続を介して、例えばインターネットを介して転送されるように構成されてもよい。
【0182】
更なる実施形態は、本明細書に記載の方法の1つを実行するように構成又は適合された処理手段、例えばコンピューター又はプログラム可能な論理デバイスを含む。
【0183】
更なる実施形態は、本明細書に記載の方法のうちの1つを実行するコンピュータープログラムがインストールされたコンピューターを含む。
【0184】
本発明による更なる実施形態は、本明細書で説明される方法のうちの1つを実行するコンピュータープログラムを受信機に(例えば、電子的に又は光学的に)転送するように構成された装置又はシステムを含む。受信機は、例えば、コンピューター、モバイルデバイス、メモリデバイス等であってもよい。装置又はシステムは、例えば、コンピュータープログラムを受信機に転送するためのファイルサーバを備えることができる。
【0185】
一部の実施形態において、プログラム可能論理デバイス(例えば、フィールドプログラマブルゲートアレイ)が、本明細書に説明される方法の機能性の一部又は全部を行うために使用されてもよい。一部の実施形態において、フィールドプログラマブルゲートアレイは、本明細書に説明される方法のうちの1つを行うために、マイクロプロセッサと協働してもよい。概して、方法は、任意のハードウェア装置によって実行されることが好ましい。
【0186】
本明細書で説明される装置は、ハードウェア装置を使用して、又はコンピューターを使用して、又はハードウェア装置とコンピューターとの組み合わせを使用して実施され得る。
【0187】
本明細書で説明される装置、又は本明細書で説明される装置の任意の構成要素は、少なくとも部分的にハードウェア及び/又はソフトウェアで実施され得る。
【0188】
本明細書で説明される方法は、ハードウェア装置を使用して、又はコンピューターを使用して、又はハードウェア装置とコンピューターとの組み合わせを使用して実行され得る。
【0189】
本明細書で説明される方法、又は本明細書で説明される装置の任意の構成要素は、少なくとも部分的にハードウェア及び/又はソフトウェアによって実行され得る。
【0190】
上述の実施形態は、本発明の原理を単に例示するものである。本明細書に記載された構成及び詳細の変更及び変形が他の当業者に明らかであることが理解される。したがって、添付の特許請求の範囲によってのみ限定され、本明細書の実施形態の記述及び説明によって提示される特定の詳細によって限定されないことが意図される。