ICLRは2019年論文を読む:ニューラルネットワークを定量化

https://www.toutiao.com/a6701879235964830212/

 

今年5月に開催ICLR 2019は502本の論文は、この記事を解釈するニューラルネットワークを定量化するために関連する2つの研究の合計を受けました。

  • TRAINING ACTIVATION量子化ニューラルネット、直THROUGH推定の理解
  • https://openreview.net/pdf?id=Skh4jRcKQ
  • 量子化されたモデルの解析
  • https://openreview.net/pdf?id=ryM_IoAqYX

深ニューラルネットワーク(DNN)は大きく異なるタスクの数に(ML)人工知能(AI)/パフォーマンスを機械学習を後押しし、ひいては私たちの日常生活の中で見られる高度なアプリケーションの多くをもたらしています。、統計的機械翻訳(デブリンら、2014、古典的なケースは、標的認識(Krizhevskyら2012 ;. Szegedyら、2014)、音声認識(.. Sainathら、2013ヒントンら、2012)が挙げられます。 ; Sutskeverら、2014; .. Bahdanauら、2015)及びマスターゴー(シルバーら、2016)..

トレーニングと推論:ニューラルネットワークは、2つの部分からなります。演算(MAC)を蓄積するので、非効率的な推論を行うニューラルネットワークを用いた従来の(ユニバーサル)とデジタルハードウェアにニューラルネットワークを訓練 - ニューラルネットワークの多数を実行するために必要な入力ニューロンの加重和を計算する乗算する必要がある計算ので。

基本的には一つ以上のグラフィックス・プロセッシング・ユニット(GPU)トレーニングにDNN。本質的には、高度な並列かつ高速な、しかし、消費電力のためのGPUのサポートは非​​常に高いです。また、一度訓練されたモデルは、ハンドヘルドデバイスや他の低電力デバイスに訓練した後、ネットワークを実行することは困難です。そのため、人々は、汎用および特殊目的のコンピューティング・ハードウェア上で実行されているDNNをスピードアップしたい、研究活動の多くを置きます。

パススルーを有効にするには、トレーニングの理解は、(トレーニングアクティベーション量子化ニューラルネットにおけるストレート見積もりを理解する)量子ネットワーク推定されています

入門

使用理由推定器(STE)を介して簡単な例で説明することができます。そこに簡単な閾値関数--ReLU関数である、即ち、F(X)= MAX(0、x)です。また、ネットワークは、初期重みのセットの開始を設定します。これらReLU出力の入力は、(重量は信号が乗算される)は、f(x)を引き起こすであろう、負とすることができる0です。

これらの重みは、F(x)は誘導体が戻ってくる伝播プロセスは、ネットワークの重みを更新することができない、何にもこれらの誘導体から学ぶことができないことを意味し、0です。その結果STEコンセプト。勾配提供STEは、閾値勾配に等しく、その出力の関数として入力し、関係なく、どのように実際の誘導体しきい値関数自体のであろう。STEの(。Bengioら2013)の最も初期の研究、以下を参照してください。

  • https://arxiv.org/pdf/1308.3432.pdf

本稿では、「STEによって修飾された用語によって参照するために、「粗い勾配(粗い勾配)」を使用し

チェーンルール

重量可変勾配の点で得られた損失関数」。勾配のこの非一般を選択することで、質問は次のようになります。検索の負の方向にトレーニングの損失を最小限に抑えることができますなぜSTE勾配は、(実際には、任意の勾配STE勾配関数ではありません)実際の損失勾配関数ではありません?また、どのように「良い」STEを選択するには?

本論文では、2元で学習し、活性層のレイヤー線形ネットワークに対するガウスのデータを3つの代表STEについて説明します。著者らはまた、適切なSTEを選択するために証明する優れた性能の学習アルゴリズムを得ることができます。

私はあなたがグラデーションSTE重いアップデートを使用する権利の詳細な解釈をしたいので、この論文を解釈することを選択しました。直接コピーこれらの式はもちろん、使用することができますが、私は周りの数学的解釈することができると思っていて、なぜこの数学的洞察力の一部を効果的な方法を提供することができます。

あなたが読書を続ける前に、紙の表記が使用されている方法を見てみましょう:

  • ||⋅||ログスペクトルの行列のベクトルノルム又はユークリッドノルムを表します
  • 0_n∈R ^ nがすべてゼロのベクトルを表します
  • 1_n∈R ^ nが全てのもののベクトルを示します
  • 次数nの値Inマトリックス
  • <Wは、Z> Zは、z∈Rの内積、W ^ Nを表す=(T ^ w)は
  • w⊙zはアダマール積(また、エントリごとの製品と呼ばれるアダマール積を、)であり、

2元線形活性層CNNを使用して、レイヤ学習

モデル構築セットと課題

次のモデルを考えてみます。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

前記Z∈R ^(m×n個)は、n ^∈R wは、入力であり、V∈R ^ nが右重量リニア層の1階と2階です。(Z_i)^ T Zは、(⋅)は、i番目の行を表し、σベクトル成分Zwを上で動作する機能によって活性化されます。第一層は第二層は線形分類器として機能し、畳み込み層として機能します。タグ=(V *)^ Tσ(度Z W *)は、V *およびW *はパラメータの最適な数であるY *(Z)から発生します。(1)式は、単純な正方形の損失である損失関数を示します。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

σ(⋅)バイナリ関数、すなわち、σ(X)= 1_ {X> 0}とします。Z∈R ^(m×n個)のエントリは独立同一分布(IID)ガウス分布N(0,1)からサンプリングされます。一般化の損失がなければ、我々は、フォームでその|| W || = 1および構築最適化問題(2)を想定します:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

バックプロパゲーション勾配降下と粗粒

(2)式で定義されるように、所望のZ(1)に関連付けられている機能の喪失を最小限にするために、すなわち、問題の数学的記述です。Z-ガウス仮定するので、望ましい得ることが可能である、ということに注意してください。取得した勾配情報は、次式で与えられます。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

前記所望の式(4)式(3)に記載。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

注(4)式のσに「ゼロであるが、バックプロパゲーション手順に情報の普及を引き起こしません。これは、標準勾配降下更新規則ならば、ネットワークは何かを学ぶことはありません。使用STEが簡単で、μと関連する非自明な関数である「ゼロ代替成分(4)式のσの」μ「は時間(微分)関数、μ誘導体です、。非自明の発現、すなわち、バックプロパゲーション(∂L/∂W)(Z、V、W)を提供する」STEのμを用いて、です。これは、(5)式に示すように、グラデーションの粗い(粗勾配)と呼ばれるものです。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

次いで、標準的な勾配降下更新ルールにこの粗い勾配、アルゴリズム1に示される勾配降下アルゴリズムを取得します。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

これはg_μであることに注意してください(V ^ T、W ^ T、Z)は、tは時間ステップ(または反復)であり、実際の勾配時間t(∂L/∂W)(Z、V、W)を置き換えます。

分析 - 勾配を計算します

関数f(V、W)とその勾配∇F(V、W)の米国さらに深いグループの損失をしましょう。まず、二つのベクトルW及びW *との間の角度は次のように定義される。いずれかの≠0_n wは、そこ

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

ガウスエントリの所望の生成物を有する2つのベクトルを記述するために使用され、これは、後に使用されるであろう。ARCCOSのパラメータ(⋅)は* W及びWとの間の角度の余弦であり、W及びW * || W || || || W *内積を分割しています。これら二つのベクトル、小さい角度に近いです。

スカラーとして、または転位、に得られた式(として、式(1)及びf(V、W)(2)記載の、我々は、(1)は転置され、式を取ることができますを参照します次のように2)、次いで、(誤った)発現を与えるように拡張(次のセクションでは、このエラーを説明する)です。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

目標は、今式Eを用いた発現解析を交換することである - Z [σ(Zwを)σ(Zwと)^ T]、E_Z [σ(Zwを)σ(Zwと*)^ T]とE_Z [σ(Zwと*)σ(Zwを*)^ T]。読者は、このことを念頭に置く必要があり、次のセクションでは、それ以外の場合は非常に困難になります。

したがって、(V *)^ TZW *のy *(Z)に等しく、ラベルです。我々は、この(MXM)行列E_Z [σ(Zwを)σ(Zwと)^ T]を見れば。I≠jの要素EZ [σ(度Z W)σ(度Z W)^ T] Eに[σ(**紫^ Twの)σ(ZJ ^ Twの)]、及びEのように書くことができる[σ(ZI ^ Twと)] E [σ(ZJ ^台湾)]。ときi = jの、要素E [σ(ZI ^台湾)] E [σ(ZI ^台湾)] =(E [σ(ZI ^台湾)])^ 2。前記Z_i ** ^ Tは、行I Zに指します

今、私たちは、対角要素を以下のように求めることができます。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

为什么会得到第二个等式?我会尝试给出一些见解。首先,注意 σ(Z_i^Tw) 就是 1_{Z_i^Tw},这是一个指示函数。有一个参数 x 的指示函数 1_{x} 在与自身相乘时会保持不变,因此会得到第二个等式。

最后一个等式源自一个

高斯分布

的统计情况。将 w 固定为 R^n 中的任意向量,则其元素是分布为 N(0,1) 的高斯随机变量的向量 Z_i 将与 w 形成一个锐角的概率是 0.5。

因此,每个元素都有 0.5 的概率为 1,得到总的期望为 (0.5)x1 + (0.5)x0 = 1/2。我们可以考虑这个例子的极限情况,即仅有 1 个维度的情况。令 w 为任意正数,z 为一个高斯随机变量 ~N(0,1),则 P [ 1_{w x z > 0} ] = P[ 1_{w x z < 0} ] = 0.5。

对于 i≠j 的情况,E[ σ(Z_i^Tw) σ(Z_j^Tw) ] = E[ σ(Z_i^Tw) ] E[ σ(Z_j^Tw) ],而且因为 Z_i 和 Z_j 是

独立同分布

,所以这两个期望是独立的且每一个都估计为 1/2。使用这一观察,我们可得以下结果:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

因此,我们可以综合以上结果得到表达式:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

也就是说,E_Z[ σ(Zw) σ(Zw)^T ] 沿对角的元素等于 1/2,其它地方为 1/4。E_Z[ σ(Zw*) σ(Zw*)^T ] 也有一样的参数。

最后,对于元素为 E_Z[ σ(Zw) σ(Zw*)^T ]_{i, j} 的矩阵,如果 i≠j,则由于独立同分布的假设,该期望可以被分解和独立地评估。这会得到 E_Z[ σ(Zw) σ(Zw*)^T ]_{i, j} = E[ σ(Z_i^Tw) ] E[ σ(Z_j^Tw*) ] = 1/4.

对于 i=j 的情况,我们有如下结果:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

其中 θ(w, w*) 是 w 和 w* 之间的夹角。

主要结果与分析

这篇论文主要关注的是算法 1 中总结的粗粒梯度下降的行为。其研究了 STE 被设置为基本 ReLU、截断式 ReLU(clipped ReLU)和恒等函数的导数的情况。这篇论文证明通过使用普通或截断式 ReLU 的导数,算法 1 会收敛到一个临界点;而使用恒等函数则不会。

作者在论文中给出一个说明,其表示粗粒梯度下降的收敛保证基于训练样本无限的假设。在仅有少量数据时,在粗粒尺度上,实验损失大致会沿负粗粒梯度方向下降。随着样本规模增大,实验损失会变得单调和平滑。图 1 给出这一思路的图示。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

注意随着样本规模的增大,单个步骤的损失是如何获得变得单调和越来越平滑的。这能解释为什么(合适的)STE 在具有大量数据时(就像深度学习一样)的表现会那么好。

将普通 ReLU 的导数视为 STE

(5) 中使用了 ReLU 函数 µ(x) = max(x, 0) 的导数作为 STE。不难看出 µ'(x) = σ(x),全梯度 ∇ f(v, w) 的表达式如下所示。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

与 w 相关的粗粒梯度遵循下式:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

要让粗粒梯度成为真实梯度的一个可接受的估计量,我们需要两者之间的内积为非负。这也可被解释为两个梯度之间的非负相关性。

相关性、内积、夹角

我想稍微扩展,介绍一下夹角、内积和相关性之间的关系,因为这些术语在论文中出现的次数很多。相关性和内积之间的联系可通过以下示例理解。

首先有一个带有实值随机变量的向量空间。设 X 和 Y 为随机变量,它们可能相互独立,也可能不独立。X 和 Y 之间的协方差可这样计算:Cov(X,Y) = E[ (X- µ_X) (Y-µ_Y)],其中 u_X 和 µ_Y 分别为 X 和 Y 的均值。因为这个协方差是双线性的,所以我们可以在随机变量的向量空间上定义内积,使其成为一个内积空间。为了完整说明,下面给出了协方差的公式。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

有了内积之后,我们可以定义向量的范数,即 || X || = √X⋅X,这等于 Cov(X,X) 的平方根、E[ (X-mX)(X-µX) ] 的平方根、Var(X) 的平方根以及最后的 X 的标准导数,即 _X。更进一步,两个随机变量的相关性定义为:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

这本质上就是在处理点积(内积)时,两个向量之间的夹角的余弦的定义,即:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

总结来说,协方差是内积,标准差是范数,相关性是夹角的余弦。了解了这一点,我们再回到论文。

内积可以用一种闭式(closed form)表示:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

不难看出这个内积是非负的,因为 θ(w, w*) 的范围是 [0, π],所以 sin( θ(w, w*) ) 总是非负的。范数 || w || 也是非负的,(v^Tv*)^2 也是。前面提到,非负内积能保证粗粒梯度大致与真实梯度在同一方向上。因此,ReLU 函数的导数可以用作 STE,以及 f(v, w) 的梯度下降方向。

要让该算法收敛,EZ[(∂l / ∂w)(v, w; Z) ] 和 EZ[ g_{relu}(v, w; Z) ](粗粒梯度)必须同时消失。这只会发生在 (2) 式(即构建的问题)的鞍点和最小量处。(2) 式的最小量应该有 v = v* 且 θ(w, w*)=0。

将截断式 ReLU 的导数视为 STE

现在我们将截断式 ReLU 看作潜在的 STE,即 µ(x) = min(max(x, 0), 1)。图 2 展示了截断式 ReLU 的一个四级量化的版本。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

图 2:一个四级(2 位)量化的截断式 ReLU σ_α(x) 和对应的非量化版本。α 是量化级别。

实验和讨论

表现

这篇论文的作者提供了对 STE 的详尽分析,并且表明普通和截断式 ReLU 都能学习两层的线性 CNN。他们继续将这些 STE 用于更深度的网络。注意它们在这些更深度网络上的实验表现不同于在两层网络上的表现。他们在 MNIST(LeCun et al., 1998)和 CIFAR-10(Krizhevsky, 2009)基准上,针对 2 位和 4 位量化激活,执行了利用恒等函数、ReLU 和截断式 ReLU 作为 STE 的实验。

在使用量化模型进行操作时,研究者们已经提出了很多用于获取优良性能的策略。之前的一篇解读给出了近期 SYSML 2019 会议上的一些研究成果:《SysML 2019 论文解读:推理优化》。

表 1 总结了实验结果。表 1 记录了这三种 STE 在不同实验和网络上的训练损失和验证准确度。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

表 1:使用量化激活和浮点权重,三种不同的 STE 在 MNIST 和 CIFAR-10 数据集上的训练损失/验证准确度(%)。测试了 2 和 4 位的位宽。

可以看到截断式 ReLU 的整体表现最佳,尤其是在 CIFAR-10 数据集上。

有人会认为,直观上讲,也许量化的普通 ReLU 应该会有最佳的表现,因为其最接近非量化的版本。但是,表 1 中的实验数据表明截断式版本的 ReLU 的表现最佳。我并不能真正证明为何为这样,但也许可以提供一个直观思路。

总的来说,需要挑选量化 ReLU 的参数 α 以维持全精度水平的准确度,即最高层面需要考虑(截断式)ReLU 的最大值。但是,这可能并不总是最优设置。考虑一个 95% 的激活都落在 [0, 10] 区间的案例,并假设剩余的可能值都固定在 100。「牺牲」这些固定在 100 的激活并在 [0,10] 区间内取 4 级可能是合理的。这能让 95% 的激活都有更好的表征准确度,仅损失激活 5% 的准确度。

话虽如此,当在相对浅的 LeNet-5 网络上时,普通 ReLU 的表现与截断式 ReLU 相当,这在一定程度上与这一理论发现一致,即:ReLU 是一种很好的用于学习二层线性层(浅)CNN 的 STE。

如果使用恒等函数作为 STE 的不稳定性

作者在论文前几节表明恒等 STE 并不能保证收敛。此外,他们还确实观察到了一个现象,即当在有 4 位激活的 ResNet-20 上使用恒等 STE 时,会被推离优良的极小值。

作者执行了以下实验并得出结论:恒等 STE 可能远离一个「优良」极小值。作者使用相对好的 v 和 w 对训练进行了初始化,并在后续 epoch 中使用了恒等 STE 继续训练。他们观察了随 epoch 增多而变化的训练损失和验证误差。

在 2 位激活的 ResNet-20 上使用 ReLU STE 时也观察到了类似的现象。图 3 展示了一个案例:当使用粗粒梯度执行梯度下降时,带有 2 位激活的截断式 ReLU 实际上让算法的结果更差了。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

图 3:在带有 2 位激活的 ResNet-20 上,截断式 ReLU STE 所得到的验证准确度和训练损失。激活准确度和训练损失在粗粒梯度方向上都随 epoch 数量而增长。

因此,尽管之前的分析表明使用截断式 ReLU 作为 STE 应该对浅度网络能收敛,但在网络变深时却并不总是有效。读者应当记住这一点。

总结

再次说明,作者试图在这篇论文中回答以下问题。为什么在 STE 的负方向执行搜索有助于最小化训练损失,以及怎样才算是一个「好」STE?

在我们回答这个问题之前,STE 值得尝试的原因是机器学习中的梯度消失问题。当梯度为 0 时,网络就会在反向传播过程中「学习」不到任何东西,因为所有的权重都会保持一样。

因此,作者讨论了使用二元激活学习二层线性 CNN 的三种不同 STE,即 ReLU 函数、截断式 ReLU 函数和恒等函数的导数。作者推导了这些 STE 对应的粗粒梯度,并表明基于普通和截断式 ReLU 的负期望的粗粒梯度是最小化群损失的下降方向,这是因为粗粒梯度和真实梯度之间的内积总是非负的,即它们在同一方向。另一方面,恒等 STE 却并非如此,因为其得到的粗粒梯度并不能保证非负内积的条件。

但是,尽管这些 STE 表明了普通和截断式

ReLU

的收敛性保证,它们在训练更深更大的神经网络时仍可能遭遇稳定性问题。因此,未来的一个研究方向是进一步理解用于梯度难解的大规模优化问题的粗粒梯度下降。

量化模型分析(ANALYSIS OF QUANTIZED MODELS)

引言

近年来,为了加快推理速度、降低内存成本或降低功耗,研究者们已经提出了很多量化模型。这在便携式或手持式设备方面尤显重要。但是,这些模型的训练仍然而且往往是基于浮点精度完成的。因此,训练过程仍然非常耗时。

人们已经提出许多不同的用于加速训练的方法,比如用于在训练过程中近似全精度权重的权重量化(Courbariaux et al., 2015, Lin et al., 2016)。此外,为了在近似/量化权重时取得更好的表现,人们也对量化的方法进行过研究。

近期另一个引人关注的方法是利用分布式训练加速量化网络(Dean et al., 2012)。分布式学习面临的一些关键难题是梯度和模型参数同步过程具有高昂的通信成本(Li et al., 2014)。此外,(Ferdinand et al., 2019)已经从编码理论角度研究了同步丢失梯度和模型参数的问题。我认为在将纠错(error correction)用于机器学习的分布式计算方面,这是一种非常有趣的方法。

在这篇论文中,作者考量了分布式设置中权重和梯度都量化的情况。之前的 DoReFa-Net(Zhou et al., 2016))和 QNN(Hubara et al., 2017)等研究已经探索过权重和梯度的量化。但是,它们都不是在分布式设置中完成的。

之前的工作

之前在量化神经网络方面的研究包括:使用全精度梯度和通过随机权重量化的量化权重的模型(Li et al., 2017; De Sa et al., 2018),仅使用权重的符号的 1 位权重量化(Li et al., 2017)。

此外,也有人研究了带有全精度权重和量化梯度的模型(Alistarh et al., 2017; Wen et al., 2017; Bernstein et al., 2018)。最后,也有研究者研究过权重和梯度都量化的模型(Zhang et al., 2017),但仅限于在线性模型上的随机权重量化和平方损失。

前提概念

在线学习(online learning)

在线学习是指使用一组观察序列作为输入时模型持续适应和学习自己的参数。这些输入在到达时即被处理,而不会划分批次。因此,在线学习是统计学习的一种自然延展,只是在这种序列性方面不同。

该算法有一个损失 f_t(w_t),在每次迭代,经过 T 轮后,通过一个后悔函数(regret function)R(T) = Σ_{t=1 to T} ft(**wt) - f_t(w*),其中 w*** = argminw Σ{t=1 to T} f_t(w) 评估其表现,即评估之后得到的模型参数的最佳集合。

「后悔(regret)」这一术语在在线机器学习中很常用。直观上讲,最小化(或者说优化)「后悔值」就是降低所采用的动作的数量,事后来看,很显然总是存在一个更好的选择。通过最小化后悔值,我们就是要最小化算法的次优动作。

权重量化(weight quantization)

这篇论文重点关注的是所谓的损失感知型权重量化(loss-aware weight quantization)。不同于现有的用每层、输出或激活(全精度模型)的直接近似来量化权重的方法,损失感知型权重量化会利用来自损失扰动(loss perturbation)、权重量化的信息,并会构建一个渐进的量化策略来执行量化。

通过以一种渐进的方式来显式地规范化损失扰动和权重近似误差,损失感知型量化方法在理论上是合理的,并且在实践中也有效(Hou et al., 2017)。

这篇论文有以下设置。将网络的所有 L 层的权重设为 w。对应的量化权重表示为 Qw(w) = ^w,其中 Qw() 是权重量化函数。这种损失感知型策略涉及到在每个时间实例的优化问题。在 t+1 个迭代时,问题是如何优化一个二次规划(quadratic program):

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

其中优化是针对 ^w 而言,Ht 是指在 ^w 的 Hessian。某些读者可能了解这个,而且知道这是 ft(^w) 的二阶泰勒展开。在实践中,Hessian 往往具有高昂的计算成本,所以往往使用近似的 Hessian。这里也是如此,这里的 Hessian 近似为了 Diag( √^v_t),其中 ^v_t 是移动平均线(moving average)。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

其中 g_t 是随机梯度,β 是 Adam 等深度网络优化器中可直接使用的一个超参数。移动平均线是通过之前在 t-1 的移动平均线、在时间 t 的当前梯度的平方与决定每个分量所受重视程度的参数 β 的凸组合(convex combination)而计算得到的。

最后,在每次迭代根据以下规则更新权重:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

梯度量化(gradient quantization)

在分布式设置下,主要的瓶颈在于由于梯度同步所造成的通信成本。我们可以通过一个简单的例子来理解。假设有 N 个要执行 SGD 的并行处理节点,该过程的伪代码会是这样:

并行处理每一批数据:

  1. 读取当前参数,即权重、激活等等
  2. 根据这批数据计算梯度
  3. 更新梯度

现在假设处理器 1 在剩余的 N-1 个处理器之前率先结束,它已经更新了权重并希望继续处理下一批数据。但是,当处理器 1 读取「当前」参数时,这些参数还没有整合来自另外 N-1 个处理器的更新。

这可能是由于剩余的处理器还没有结束它们的计算,或者它们仍在将它们的更新传输到存储梯度信息的中心位置。一般来说,后者是导致瓶颈的原因。这就是所谓的同步问题,也是提出量化梯度以降低节点之间的通信时间的原因。

量化模型的性质

作者考量了分布式设置下权重和激活两者的量化。我们用 N 表示并行处理数据的工作器(worker)的数量。图 1 简单展示了分布式设置的大致情况。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

图 1:使用数据并行化的分布式权重和梯度量化

这种分布式设置的工作方式如前一节所描述的伪代码一样。在迭代 t,n ∈ {1, ..., N} 中每一个工作器都执行以下任务:

  1. 根据量化的权重计算全精度梯度 (^g_t)^(n),即第 n 个工作器在迭代 t 的 ^g
  2. 将 (^gt)^(n) 量化为 (~gt)^(n) = Qg( (^gt)^(n))
  3. 将这些信息发送到参数服务器

一旦参数服务器收到来自这些工作器的 n 个结果,就继续:

  1. 计算量化梯度的平均 (~g_t) = (1/N) ∑_(n=1 to N) (~g_t)^(n)
  2. 基于 (~g_t) 更新二阶矩 ~v_t
  3. 使用全精度计算更新权重,根据 w_(t+1) = w_t − η_t Diag( √(~v_t))^(−1) (~g_t)

然后使用损失感知型权重量化计算量化的权重,得到 (^w_(t+1)) = Q_w(w_(t+1)),然后在下一轮迭代将其发送回工作器。

之前在量化网络方面的研究都重在用线性模型分析平方损失。这篇论文没有将成本函数局限于线性模型,但做出了以下假设:

  1. 成本函数 f_t 是凸的;
  2. f_t 可用 Lipschitz 连续梯度二次可微分
  3. f_t 的梯度有界

很显然,对神经网络而言,凸假设 1 基本上都不成立。但是,这能促进对深度学习模型的分析。假设 2 在凸假设中很常用。二次可微性是为了确保存在与 Hessian 相关的信息,而假设 2 的「Lipschitz 连续梯度」部分通常是由于强凸性与 Lipschitz 连续梯度之间存在对偶关系。一旦我们很好地理解了其中一个,我们就能轻松理解另一个。

使用全精度梯度的权重量化

当仅对权重进行量化时,损失感知型权重量化的更新为

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

其中 (^v)_t 是之前定义的(平方的)梯度 (^g_t)^2 的移动平均线。论文表明,对于用全精度梯度和 η_t = η/√ t 的损失感知型权重量化,R(T)/T 的边界这样给定:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

其中 R(T) 是后悔值。这里,平均后悔值的收敛速度为 d/√(T),其中 d 是维度。还有一个与权重量化分辨率 ∆_w(量化层级之间的步长)和维度相关的非零项。L 是 ft 的梯度的 Lipschitz 常数,D 也是一个常数,其为所有 wm, wn ∈ S(S 是量化权重值的集合)限定了 || w*m - w_n* || 的边界。

第二项很直观,维度和分辨率 ∆_w 越高,平均后悔值的边界就宽松。此外,常数 L 和 D 直观地描述了 ∇f_t 和 w 的最糟情况的「拉伸/变化」行为,它们也能宽松化平均后悔值的边界。

使用全精度梯度的权重和梯度量化

现在我们看看权重和梯度都量化的情况。损失感知型权重量化的更新为:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

其中 (~g_t) 是随机量化的梯度 Q_g(∇f_t(Q_w(w_t)))。(~v_t) 是平方的量化梯度的移动平均线。在这种设置下,期望的平均后悔值的边界为:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

我们可以总结出这一点:在权重之外,量化梯度能将收敛速度降低这样的倍数:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

这总是 >1。这会带来问题,因为深度网络的维度 d 通常很大,而分布式学习更倾向于为梯度使用少量比特数,这会导致 ∆_g 很大。

实验

维度的影响

作者研究了维度 d 对收敛速度的影响,还研究了一些常见模型的最终误差,比如使用平方损失的简单线性模型、多层感知器模型和 CifarNet。图 2 展示了结果:

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

图 2:不同 d 的权重量化模型的收敛

首先我们看看图 2(a),这代表使用平方损失的合成式简单线性模型。可以看到,随着维度增大,其训练损失随迭代的收敛速度就越慢。在 d 更大时,全精度和量化梯度都会导致收敛上的损失更大。前一节的分析也能推知这样的结果。

下一个模型是带有一个包含 d 个隐藏单元的层的多层感知器(Reddi et al., 2016)。其权重使用 LAQ3 被量化成了 3 位。其梯度要么是全精度的(表示为 FP),要么就随机量化为了 3 位(表示为 SQ3)。选择的优化器是 RMSProp,学习率设置为 η_t = η /√ t,其中 η = 0.1。

最后,另一个被测网络是 Cifarnet(Wen et al., 2017)。维度 d 为每个卷积层中过滤器的数量。其梯度要么是全精度的,要么就随机量化为了 2 位(表示为 SQ2)。使用的超参数优化器为 Adam。学习率如(Wen et al., 2017)中一样,从 0.0002 开始衰减,每 200 epoch 以 0.1 的因子衰减。

图 2 的 (b) 和 (c) 分别给出了多层感知器和 Cifarnet 的结果。类似于简单线性模型,参数 d 越大,与使用全精度梯度相比,量化梯度的收敛劣化就越严重。

权重量化分辨率 ∆_w

为了研究不同 ∆_w(量化权重的步长)的效果,论文中使用了(Wen et al., 2017)中一样的 d=64 的 Cifarnet 模型。权重被量化为 1 位(LAB)、2 位(LAQ2)或 m 位(LAQm)。

梯度是全精度的(FP)或随机量化到 m = {2, 3, 4} 位(SQm)。使用的优化器为 Adam。学习率从 0.0002 开始衰减,每 200 epoch 以 0.1 的因子衰减。这个实验使用了两个工作器。结果如图 3 所示。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

图 3:在 CIFAR-10 上不同位数的权重的收敛情况

图 3 展示了不同位数的量化权重下平均训练损失的收敛情况。结果表明,使用全精度或量化的梯度时,权重量化网络在收敛后的训练损失比全精度网络更高。使用的位数越多,最终损失就越小。这确认了分析部分的结果,也是我们直观上能预期的结果。

梯度量化分辨率∆_g

这里使用了同样的 Cifarnet 模型设置,优化器也是 Adam,研究了 ∆_g(量化梯度的步长)的影响。图 4 给出了不同数量的量化梯度位数下平均训练损失的收敛。同样,结果和预期一样。位数更少时,最终误差就更大,而且使用 2 或 3 位梯度比使用全精度梯度的训练损失更大、准确度更低。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

图 4:在 CIFAR-10 上不同位数的梯度下的收敛情况。其权重是二值化的(记为 W(LAB))或 m 位量化的(W(LAQm))

不同的工作器数量

最后,作者调查了不同工作器数量 N 的影响。他们的目标是调查当使用不同数量的工作器时准确度是否会有损失。他们使用了 Cifarnet(Wen et al., 2017)在分布式学习设置中测试不同数量的工作器。

每个工作器的 mini-batch 大小设置为 64。其中测试和比较了 3 位量化的权重(LAQ3),全精度或随机量化到 m = {2, 3, 4} 位(SQm)的梯度。表 1 展示了不同工作器数量下的测试准确度。

ICLRは2019年論文を読む:ニューラルネットワークを定量化

 

表 1:使用不同数量(N)的工作器时,在 CIFAR-10 上的测试准确度(%)

表 1 还包含了使用梯度裁剪(gradient clipping)的结果。梯度裁剪是一种防止非常深度的网络中梯度爆炸问题的技术。梯度爆炸是指梯度变得过大且错误梯度累积的情况,这会导致网络不稳定。尽管如此,我相信从表 1 可以看到量化模型能够实现与全精度模型相媲美的表现。

总结

本論文では、右の減量に対応したネットワークは、勾配を定量化する必要が調べます。量子化された勾配の二つの目的があります。まず、バックプロパゲーション相の量を減らすために計算することができます。第二に、分散環境での通信部との間の通信のコストを低減することができます。紙は、完全な精度で右重量収束解析モデルを提供し、量子化された勾配の量子化は、トリミング。また、著者らはまた、実証実験を通して理論的結果を定量化ネットワークが訓練スピードを加速することができ、精度が同等のモデルの完全な性能を達成することができることを示して確認しました。

おすすめ

転載: blog.csdn.net/weixin_42137700/article/details/91945269