Energy-efficient Amortized Inference with Cascaded Deep Classifiers論文筆記

Energy-efficient Amortized Inference with Cascaded Deep Classifiers論文筆記

0. 概述

深度神經網絡在許多AI任務中取得了卓越的成功, 但是通常會造成高的計算量和能量耗費, 對於某些能量有約束的應用, 例如移動傳感器等.

我們提出了一種新的框架來, 該框架能夠同時優化預測準確度以及能量耗費, 利用該框架來解決以上這個問題. 雖然該方法在測試階段會有部分耗費和準確度的交換. 在該框架中, 每一個數據實例被推入到一個級聯的深度神經網絡, 伴隨着增長着的大小, 接着一個選擇模塊用來進而確定什麼時候一個足夠精確度的分類器能被用到這個數據實例上.
神經網絡的級聯和選擇模塊端到端共同進行訓練, 使用增強算法來優化交換計算成本和預測準確性. 該方法能夠同時提高準確度和效率, 通過學習去分配簡單的實例來加速分類器到達足夠的準確度, 進而節省結算成本和能量耗費, 同時分配複雜實例給更深的和更強力的分類器來保證令人滿意的準確性.

在大量不同數據集的實驗下, 使用級聯的ResNet分類器, 我們證明我們的方法比標準的訓練好的ResNets要表現出色, 並且只需要少於20%和50%的FLOPs耗費在CIFAR-10/100數據集上, 和66%的ImageNet的數據集上.

FLOPS 爲每秒的浮點運算次數(float-point operations per second)

1. 介紹

在這篇文章中, 我們關注於測試階段的關於圖像分類器的能量-效率推斷, 傳統的方法通常基於爲了速度直接降低準確率, 舉個例子, 通過減少或者壓縮訓練好的複雜的神經網絡, 以準確率的損失作爲代價.

注意到, 準確度和代價可以被同時提高, 並且並不需要去降低其中任意一者, 這是由於雖然更深更爲複雜的神經網絡通常有更高的全準確度, 這些圖片的很大一部分可以使用更小的更爲簡單的網絡被準確地區分出來, 而更大的神經網絡只是在解決複雜圖片上是必要的. 因此, 該文章的方法用不同的複雜度聯合訓練整體的神經網絡, 和選擇模塊一起, 選擇模塊能夠自適應地分配每一張圖像到能夠足以生成高質量的Label的最小的的神經網絡.

不想傳統的學習方法去利用一個恆定的計算誤差, 該文的方法是學習去預測準確和快速. 通過訓練和使用決策模塊, 我們的框架給出一種高效的攤還策略, 這可以在測試階段大量的減少計算和資源消耗, 甚至可以提升預測的性能.

從技術層面上來說, 該文設計神經分類器的訓練和選擇模塊到一個聯合的優化中, 該優化爲訓練準確度和一個期望的計算代價作爲約束(參考FLOPs代價), 該文設計一個決策模塊爲一個優化停止過程(optimal stopping process), 該過程可以順序測試大小不斷增大的級聯的神經分類器(並且增強預測的準確性), 並且對於給定的圖片停止優化準確性和複雜度的交換的分類器. 聯合訓練是表現在端到端的, 使用強化算法來優化一個在計算代價(FLOPs)和預測準確性之間的交換作爲一個反饋信號.

在CIFAR和ImageNet的分類數據集上進行測試, 使用一個級聯的ResNet分類器, 正如所期望的, 在CIFAR數據集上, 大多數的圖片都被分配到了更小的網絡, 這些小的網絡足以成功進行預測, 當然存在複雜的圖片被分配到了更大和更強力的網絡. 幾乎一半的圖片被分配到了更小的網絡在ImageNet上面.

2. 相關工作

現存有很多方法來提升深度神經網絡的能量效率, 大多數這樣的工作關注於簡化神經網絡結構並且(或)數值方面提高基礎卷積操作, MobileNet使用深度可分離卷積來建立一個輕量權重的神經網絡, ShuffleNet使用點長集合卷積和通道的洗牌操作來建立一個高效的結構, 其他的技術包括連接的修剪(Han, Mao 2015)和瓶頸結構(Iandola et al. 2016), 在靜態的技術之外還有, 比如動態容量網絡(Dynamic Capacity Network), 自適應地分配容量針對輸入數據的不同部分, 通過使用一個低和一個高容量的子網絡, 螺旋自適應計算時間網絡(Spatially Adaptive Computation Time Networks), 針對圖像的區域動態調整執行層的數目. 任意時神經網絡(Anytime Neural Networks)能夠生成任意時的預測通過最小化一個精巧的帶權值的誤差和. 其他的考慮了級聯分類器在目標檢測中快速地拒絕更進一步, 如果能夠簡單判斷的情況下. 條件計算(Conditional computation)和自適應計算提出來了調整計算的數量通過使用一種選擇數據的策略, 許多這樣的靜態和動態的技術被用於標準的深度結構之中, 比如ResNet和Inception, 通常伴隨着準確性的誤差.和這些靜態和動態的方法不同, 該文的方法明確地公式化測試時效率作爲一個攤還約束的順序決策問題, 使得期望的計算誤差, 比如說FLOPs, 能夠被大幅度地減少, 通過自適應分配訓練樣本給他們最好的分類器來提高準確性.

3. 方法

3.1 級聯分類器的能量約束推理

分類器, 比如神經網絡, 通常伴隨着深度和結構的複雜度的提高是更加準確的, 然而, 複雜網絡的更高的計算和資源的代價會很快變高, 特別是實時的推理在應用於移動設備的時候. 如果我們有一個級聯的分類器, 它們大小不同, 選擇一個更小的分類器是可能的. 進而對於輸入的數據足夠強力的分類器來既實現效率又實現準確性. 這引出了一個主要的問題:

給定一個級聯的神經分類器, 它們有不同的準確性和效率, 如何去通過一個有效的選擇技術來聯合訓練它們, 進而分配每一個數據實例到分類器中, 該分類器最適合交換準確性和代價

特別地, 假設我們有K個分類器{Ck}k=1K\{C_k\}_{k=1}^{K}和不同的資源代價{Fk}k=1K\{\mathcal{F}_k\}^{K}_{k=1}, 資源代價Fk\mathcal{F}_k被假設爲和分類器的預測容量相關聯, 並且可能就是預測容量. 舉個例子:
FLOPs的一個規範化的值或者神經網絡分類器中層的數目, 給定一個輸入xx, 我們記yy是真正的樣本標籤, y^Ck(x)\hat{y}\sim C_k(\cdot| x)是分類器Ck(x)C_k(\cdot| x)預測的Label, 此外, 我們記(kx)\prod(k|x)是一個隨機化的策略, 它決定着分配輸入xx給分類器CkC_k的概率, 我們的目標是聯合訓練所有的分類器{Ck}\{C_k\}以及策略(kx)\prod(k|x)來在約束之下最小化期望的誤差函數, 使得期望的資源代價應該不能夠大於一個期望的代價B\mathcal{B}, 即:
max,{Ct}t=1KE(x,y)D,kx(x),y^Ckx(x)[L(y^,y)]s.t  E(x,y)D,kx(x),y^Ckx(x)[Fkx]<Bmax_{\prod, \{C_t\}_{t=1}^K}{\mathbb{E}_{(x,y)\sim D, k_x\sim \prod(\cdot | x), \hat{y}\sim C_{k_x}(\cdot|x)}[-\mathcal{L}(\hat{y}, y)]}\\s.t \ \ \mathbb{E}_{(x,y)\sim D, k_x\sim \prod(\cdot | x), \hat{y}\sim C_{k_x}(\cdot|x)}[\mathcal{F}_{k_x}]<\mathcal{B}

上式中, kxk_x是分配給x的隨機的分類器ID, 更進一步, 我們能夠重新定義約束的優化變爲一個處罰代價函數的非約束的優化
max,{Ct}t=1KE(x,y)D,kx(x),y^Ckx(x)[L(y^,y)αFkx]max_{\prod, \{C_t\}_{t=1}^K}{\mathbb{E}_{(x,y)\sim D, k_x\sim \prod(\cdot | x), \hat{y}\sim C_{k_x}(\cdot|x)}[-\mathcal{L}(\hat{y}, y)-\alpha \mathcal{F}_{k_x}]}

其中α\alpha控制着在預測誤差函數和資源代價之間的交換, 當這兩種形式是二元等價的 情況下有一個顯式的一對一的映射在budget約束B\mathcal{B}和處罰參數α\alpha, 將會使用這個懲罰形式在文章的實驗中.

3.2 通過優化停止進行能量效率推斷

這裏主要是選擇模塊\prod的設計, 需要兩個要求:

  • 能夠訪問並且有效地利用分類器{Ck}\{C_k\}的信息來做一些推理性的決策
  • 必須是計算高效的, 舉個例子, 至少防止暴力地去估計所有的KK個分類器並且選擇最大置信的一個.

該文解決了這一個挑戰, 通過制定\prod變爲一個KK步的最優停止過程(optimal stopping process), 對於每一個時間步tt, 介紹了一個停止策略模塊, 當我們決定停止第tt個分類器並且使用它作爲對於輸入xx最後的預測器, 使用了和分類器CtC_t相關聯的特徵st(x)s_t(x), 並且輸出一個停止概率πt(st(x))\pi_t(s_t(x)), 否則, 將會移動到一個更深的分類器並且重複相同的步驟, 直到它到達最深的一個.

利用這種方法, 選擇第kk個分類器的全概率爲:
(kx)=πk(sk(x))t=1k1(1πt(st(x)))\prod(k|x)=\pi_k(s_k(x))\prod_{t=1}^{k-1}(1-\pi_t(s_t(x)))

Alt text

假設我們最後在第kk個分類器時停止, agent將會收到一個反饋, 該反饋包含兩個部分:

  • 使用該已選擇的分類器的所預測的損失函數, 即L(y^,y)\mathcal{L}(\hat{y}, y), 其中y^Ck(x)\hat{y}\sim C_k(\cdot|x)
  • 從第一個分類開始累計的資源消耗, 即t=1kFt\sum_{t=1}^k{\mathcal{F}_t}.

實際上, 我們也包括累計的停止策略πt\pi_t對於相應的Ft\mathcal{F}_t的計算代價, 重要的是, 一旦我們在kk個分類器處停止, 我們便不再運行比kk更加"昂貴"的分類器了, 這極大地節省了計算資源.

在此之上, 我們定義反饋的信號:
R(k,x,y,y^)=L(y^,y)αt=1k1FtR(k, x, y, \hat{y})=-\mathcal{L}(\hat{y}, y)-\alpha\sum_{t=1}^{k-1}\mathcal{F}_t

重述一遍, 我們的決策模塊被設計成Markov決策過程, 包含以下部分:

  • 觀測:
    停止的概率爲πt(st(x))\pi_t(s_t(x)), 在tt步依賴於特徵st(x)s_t(x), 這個特徵應該可以表達第tt個分類器CtC_t, 在本文中, 我們簡單地使用輸出概率作爲觀測在每一個時間步, 即, st(x)=Ct(x)s_t(x)=C_t(\cdot|x)
  • 動作:
    基於當前分類器的輸出概率, 我們的停止策略模塊決定在當前時間步以概率πt(st(x))\pi_t(s_t(x)), 如果它最終在kk步停止, 我們使用當前模型CkC_k來預測Label, 即, y^Ck(x)\hat{y}\sim C_k(\cdot|x)
  • 反饋:
    在最終在某個分類器停止, agent將會收到一個反饋信號, 信號正如上述表述, 包括一個負的損失函數來進行預測, 以及從第一個時間步的累積的能量耗費, 在本文中, 我們使用規範化的FLOPs計數作爲耗費.

假設停止概率是{πt}\{\pi_t\}和分類器{Ct}\{C_t\}被參數化爲θ={θπt,θCt}t=1K\theta = \{\theta^{\pi_t}, \theta^{C_t}\}_{t=1}^K, 我們的最終目標是去找到最優的θ\theta來最大化期望的返回, 通過展開這個通過整個的策略的條件分佈:
J(θ)=E(x,y)D[Ek(x),y^Ck(x)R(k,x,y,y^)]=E(x,y)D[k=1Kt=1k1(1πt(st(x);θ))πk(sk(x);θ)y^Ck(y^x;θ)R(k,x,y,y^)]J(\theta) = \mathbb{E}_{(x,y)\sim D}[\mathbb{E}_{k\sim\prod(\cdot|x), \hat{y}\sim C_k(\cdot|x)}R(k, x, y, \hat{y})]\\=\mathbb{E}_{(x,y)\sim D}[\sum_{k=1}^{K}\prod_{t=1}^{k-1}(1-\pi_t(s_t(x);\theta))\bullet\pi_k(s_k(x);\theta)\bullet \sum_{\hat{y}}{C_k(\hat{y}|x;\theta)\cdot R(k,x,y, \hat{y})}]

3.3 利用強化學習

爲了解決最優停止問題, 使用爲人熟知的強化算法((Williams 1992), 通過利用當前的參數和策略梯度的導數來推出每一個獨立的sample(x,y)(x,y), 按以下形式:
θJ^=θ[t=1k1log(1πt(st(x);θ))+log(πk(sk(x);θ))+log(Ck(y^x;θ))]R(k,x,y,y^)\widehat{\nabla_\theta J} = \nabla_\theta{[\sum_{t=1}^{k-1}log(1-\pi_t(s_t(x);\theta))+log(\pi_k (s_k(x);\theta))+log(C_k(\hat{y}|x;\theta))]\cdot R(k,x,y,\hat{y})}

更進一步, 引入一個baseline----bb, 用這個baseline去減少所估計的策略梯度的變化, 變爲以下的梯度估計:
θJ^=θ[t=1k1log(1πt(st(x);θ))+log(πk(sk(x);θ))+log(Ck(y^x;θ))](R(k,x,y,y^)b)\widehat{\nabla_\theta J} = \nabla_\theta{[\sum_{t=1}^{k-1}log(1-\pi_t(s_t(x);\theta))+log(\pi_k (s_k(x);\theta))+log(C_k(\hat{y}|x;\theta))]\cdot (R(k,x,y,\hat{y})-b)}
bb是用來在訓練數據的mini-batch上來最小化梯度估計器的變化

整理一下當前的內容

現在我們知道了整個模型的大致架構, 流程是這樣的:

  • 首先是圖片的輸入, 傳到當前的分類器, 並且得到結果
  • 接着將結果(這裏所指的結果應該是Label probability, 也就是每一個標籤的概率, 參考softmax)傳到Agent
  • Agent負責分析是否在當前分類器停止, 通過某種策略模塊
    • 如果不停止, 則向下一個分類器傳圖片
    • 如果停止, 則利用當前分類器作爲預測方法, 和真實的Label進行比對得到反饋(Reword), 反饋包括使用當前分類來預測的誤差以及從第一個分類器開始累積的資源消耗

什麼時候停止則引出了決策模塊的設計, 決策模塊被設計成去最大化一個期望, 這個期望由概率乘上一個反饋, 由於反饋是一個負數, 如果期望越大, 那麼誤差越小, 資源代價越小.

引出一個估計梯度來對期望JJ進行優化, 這裏借用了Williams的強化學習算法, 故需要補充.

關於Williams的強化學習算法

這裏簡單介紹一下, 具有以下形式的學習算法統稱強化算法
Δwij=αij(rbij)eij\Delta w_{ij}=\alpha_{ij}(r-b_{ij})e_{ij}
其中αij\alpha_{ij}是學習率, bijb_{ij}是強化的baseline, eij=lngi/wije_{ij}={\partial ln g_i}/{\partial w_{ij}}, eije_{ij}被稱爲wijw_{ij}的特性資格(characteristic eligibility), gig_i是一個概率質量函數

質量函數的數學定義爲, 假設XX是一個定義在可數樣本空間SS上的離散隨機變量 SRS ⊆ R,則其概率質量函數 fX(x)f_X(x)
KaTeX parse error: No such environment: equation at position 7: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ f_X(x)=\left\{…

3.4 利用ResNet來構造級聯分類器

該文所使用的ResNet架構爲:

  • 開始的兩層是一個卷積層和一個池化層, 步幅stride是4, 對於一些小圖片, 比如說CIFAR-10和CIFAR-100來說, 可以只用一個卷積層, stride是1
  • 接着是一系列的塊的堆疊, 對於每一個塊, 都有不同的單元數目, 並且每一個殘差單元使用殘差學習, 形式爲y=x+F(x,Wi)y=x+F(x, W_i)其中xx叫做跳接流, F(x,Wi)F(x, W_i)爲殘差函數, 該文所使用的殘差函數爲標準殘差, 在小輸入場景和不怎麼深的網絡下經常被使用, 它包括兩個3x3的卷積層, 輸入和輸出的通道(channel)是一樣的, 最後, 末尾的單元將會傳到一個全局的平均池化層和一個全連接層用於獲得分類的概率, 對於每一個卷積層, 使用的是一個batch normalization layer和一個RelU的非線性單元. 在每一塊後, 特徵圖的大小將會減半, 並且濾波器將會加倍, 遵循的是Very Deep Network的設計(Simonyan 2014), 這樣保證每一個單元有相同計算代價.

4 實現和實驗設置

4.1 數據集

數據集使用的是CIFAR-10/100以及ImgaeNet的32x32, 這三個數據集都是RGB的彩色圖片, CIFAR-10和CIFAR-100都有50000張訓練圖片和10000張測試圖片, 相應的對應10類和100類, ImageNet32x32是ImageNet的降採樣, 包含1000個類別和相同數量的圖片(1200萬的訓練圖片和50000張測試圖片)

4.2 神經分類器的說明

爲了構造一個級聯的神經網絡分類器, 我們使用ResNet架構的標準的設計來建立一個ResNet的序列, 對於深度是指數式的增長, 在級聯之中, 每一個ResNet都是由一個3x3的卷積層開始, 16個濾波器, 接着是3個殘差單元的塊, 每一個單元包含2個3x3的卷積層, 第二和第三個單元濾波器的數量都會加倍, 特徵圖的大小對於第一個單元來說會減半.

Alt text
每一個塊設置的單元數目設置爲1,3,5,9,18來建立一個ResNet的序列, 相應地對應8, 20, 32, 56, 110層
如上圖所示, 一共有三個塊, 第一個塊肯定是2個卷積層, 第二和第三塊的卷積層數目就對應着CIFAR裏面的Unit Number
比如[1,1,1]就對應着一個塊裏面有三層卷積層, 故總的層數爲2+3*2=8

關於Imgae32x32的數據集, 使用寬度乘子kk, 借用Wide-ResNet(Zagoruyko and Komodakis 2016)來增加每一個獨立的分類器的容量, 通過更改其濾波器的個數來實現, 這裏設置寬度乘子分別爲1, 1.5, 2, 3, 4, 卷積層的數目爲40, 使得ResNet分類器的容量或者說是FLOPs以近乎指數進行增長, 注意到這樣的設置更適應於高度差異性的ImageNet.

這裏我們的設計保證級聯的神經網絡的深度(因此決定複雜度)指數增長, 這就使得我們不用浪費重要的計算資源在測試更小的網絡上面, 更具體一點, 假設網絡分類器的計算資源消耗是bk,k=1,2,3,...,Kb^k, k=1,2,3,...,K, 其中b>1b>1, 我們可以計算出當停止在第k個分類器的時候總共的代價爲l=1kblbb1bk\sum_{l=1}^{k}b^l\leq \frac{b}{b-1}b^k, 即上界是bb1\frac{b}{b-1}bkb^k的乘積, 就相當於你直接選了第kk個分類器.

4.3 策略模塊說明

這個停止決策模塊使用3個全連接的層構造起來, 針對CIFAR-10和CIFAR-100數據集, 使用64個隱藏神經元
對於Image32x32數據集使用256個神經元, 每一個全連接層都使用ReLU的非線性單元(除了最後一層), 最後, 全連接層跟着softmax輸出停止概率

這個模塊的輸入就是Label的概率, 也就是分類器分類結果的概率向量, 這個停止決策模塊的計算消耗幾乎微不足道, 0.01M的FLOPs, 我們注意到一些其他的特徵, 比如首層的卷積濾波會增加停止策略模塊的大量的計算消耗, 並且分類準確率很低.

4.4 其他的訓練細節

在訓練階段, 我們在三個數據集接受標準的數據增大過程:

  • 在圖片的外側填充4個零
  • 隨機裁剪32x32圖片
  • 隨機從左到右翻轉

對於所有的實驗, 針對策略優化使用隨機梯度下降(SGD), 動量設置爲0.9, 學習率和mini-batch的大小和原始的ResNet設置成一樣的, 決策模塊的學習率設置成0.05, 在訓練數據下通過內部交叉驗證在每兩步之間應用一個0.9的因子.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章