论文阅读笔记:ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections
提示:閱讀論文時進行相關思想、結構、優缺點,內容進行提煉和記錄,論文和相關引用會標明出處。
文章目錄
- 前言
- 介紹
- 相關工作
- 神經投影網絡(Neural Projection Networks)
- ProjectionNets
- 局部敏感投影網絡(Locality Sensitive Projection Network)
- 訓練與推斷
- 實驗結果
- 總結
前言
標題:ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections
原文鏈接:Link
Github:NLP相關Paper筆記和代碼復現
說明:閱讀論文時進行相關思想、結構、優缺點,內容進行提煉和記錄,論文和相關引用會標明出處,引用之處如有侵權,煩請告知刪除。
轉載請注明:DengBoCong
介紹
眾所周知,深度學習網絡通常很大,包括涉及許多層的參數,并經過大量數據訓練,以學習可用于在推理時預測輸出的有用表示形式,所以為了達到高效率,我們使用分布式計算達到目標,這將需要多個CPU內核或圖形處理單元(GPU)。隨著移動端設備的普及,我們自然而然的想將這些模型應用到移動端設備上,但是,與在云上運行的高性能群集不同,這些設備在低功耗模式下運行,并且存在顯著的內存限制,所以如果還是使用老方法,完全是行不通的。
即使將模型部署在云端,通過網絡連接的方式進行使用,也會涉及到連接性問題(數據無法發送到服務器)或隱私原因(某些數據類型和處理需要限制在某些范圍內),而且在許多實際場景中,將計算密集型操作從設備委派給云并不可行。還有就是模型壓縮,降低浮點精度等等手段去縮減模型體積,其實在某些情況下,達不到應用場景的精度需要。所以需要有一個學習高效,具有低內存占用量的設備上機器學習模型的能力,這些模型可以直接在設備上運行以進行推理,并且計算成本較低
論文中介紹了一種叫ProjectionNet的聯合框架,可以為不同機器學習模型架構訓練輕量的設備端模型。其使用復雜的前饋/循環架構(就像 LSTM)作為訓練模型,聯合一個簡單的投影(projection)架構——其中包含動態投影操作以及一些窄帶全連接層。整個架構使用反向傳播在 TensorFlow 上進行端到端訓練,在訓練完成后,我們就可以直接使用緊湊的 ProjectionNet 進行推理了。通過這種方法,我們可以訓練尺寸很小的 ProjectionNet 模型,兼顧小尺寸(比常規模型小幾個數量級)與高性能,在一些視覺和語言分類任務中達到滿意的效果。
相關工作
許多相關工作通過在有限的大小或內存限制下學習有效的模型,比如簡單的字典查找、特征修剪或散列的神經網絡壓縮的技術,以及降低的數字精度、矢量量化、網絡的二值化策略、權重共享來實現神經網絡的緊湊表示。這些方法大多數旨在通過使用低秩分解或哈希技巧對連接進行分組來利用網絡權重中的冗余。
相反,本論文中建議學習一個簡單的基于投影(projection)的網絡,該網絡可以有效地編碼中間網絡表示形式(即隱藏單元)和所涉及的操作,而不是權重。同時還為設備模型引入了新的訓練范例,其中簡單網絡經過耦合和聯合訓練可以模仿現有的深度網絡,而且該深度網絡非常靈活,可以根據不同的體系結構或任務進行自定義。
神經投影網絡(Neural Projection Networks)
ProjectionNets
神經網絡是一類非線性模型,用于學習從輸入 x?i\vec{x}_ixi? 到輸出 yiy_iyi? 的映射,其中 x?i\vec{x}_ixi? 表示輸入特征向量或序列(在遞歸神經網絡的情況下),而 yiy_iyi? 是分類任務的輸出類別或預測的序列。通常,這些網絡由多層隱藏的單元或神經元組成,并在一對層之間建立連接。例如,在完全連接的前饋神經網絡中,經過訓練的加權連接或網絡參數的數量為 O(n2)O(n^2)O(n2),其中 nnn 是每層隱藏單元的數量。而論文提出的聯合優化框架,該架構結合了projection網絡和trainer網絡進行聯合訓練。如下圖:
上圖說明了神經投影網絡架構,使用前饋NN作為trainer網絡,這個耦合網絡進行聯合訓練以優化組合損耗函數(公式1):
L(θ,p)=λ1?Lθ(.)+λ2?Lp(.)+λ3?Lp^(.)L(\theta,p)=\lambda_1\cdot L_\theta(.)+\lambda_2 \cdot L^p(.)+\lambda_3 \cdot \hat{L^p}(.)L(θ,p)=λ1??Lθ?(.)+λ2??Lp(.)+λ3??Lp^(.)
其中Lθ(.)L_\theta(.)Lθ?(.),Lp(.)L^p(.)Lp(.)和Lp^(.)\hat{L^p}(.)Lp^(.),對應于以下定義的兩個網絡的損失函數(公式2):
Lθ(.)=∑i∈ND(hθ(x?i),yi^)L_\theta(.)=\sum_{i\in N}D(h_\theta(\vec{x}_i), \hat{y_i})Lθ?(.)=i∈N∑?D(hθ?(xi?),yi?^?) Lp(.)=∑i∈ND(hp(x?i),hθ(x?i))L^p(.)=\sum_{i\in N}D(h^p(\vec{x}_i),h_\theta(\vec{x}_i))Lp(.)=i∈N∑?D(hp(xi?),hθ?(xi?)) Lp^(.)=∑i∈ND(hp(x?i),yi^)\hat{L^p}(.)=\sum_{i\in N}D(h^p(\vec{x}_i), \hat{y_i})Lp^(.)=i∈N∑?D(hp(xi?),yi?^?)
其中,NNN 表示數據集中訓練實例的數量, x?i\vec{x}_ixi? 表示前饋網絡中的輸入特征向量或RNN中的序列輸入,而 yi^\hat{y_i}yi?^? 表示用于網絡訓練的真實輸出類別。hθ(x?i)h_\theta(\vec{x}_i)hθ?(xi?),表示訓練器網絡中隱藏單元的參數化表示,將 x?i\vec{x}_ixi? 轉換為輸出預測 yiy_iyi?,同樣的,hp(x?i)h^p(\vec{x}_i)hp(xi?) 表示將輸入轉換為相應預測 yipy_i^pyip? 的投影網絡參數。我們在兩個網絡的最后一層應用softmax激活來計算預測 yiy_iyi? 和 yipy_i^pyip?。
D表示距離函數,作為損失函數用于計算預測誤差,誤差分為三個部分:訓練器預測誤差,投影模擬誤差和投影預測誤差。減少第一個誤差會得到更好的訓練器網絡,而減少后兩個會反過來學習更好的投影網絡,該網絡更簡單,但預測能力大致相同。實際上,我們在所有實驗中對 D(.)D(.)D(.) 使用交叉熵。
對于等式2中的投影 LpL^pLp,我們遵循一種蒸餾方法來優化 D(.)D(.)D(.) ,因為它已經顯示出比僅在標簽 yi^\hat{y_i}yi?^? 上訓練的模型具有更好的泛化能力。λ1\lambda_1λ1?,λ2\lambda_2λ2?和 λ3\lambda_3λ3? 是影響這些不同類型誤差之間權衡的超參數,這些是在一個小的保留開發集上進行調整的,在我們的實驗中,我們將它們設置為λ1=1.0\lambda_1=1.0λ1?=1.0,λ2=0.1\lambda_2=0.1λ2?=0.1和 λ3=1.0\lambda_3=1.0λ3?=1.0 。
- Trainer Network (θ):訓練器模型是一個完整的神經網絡(前饋,RNN或CNN),其選擇靈活,取決于任務。圖1演示了使用前饋網絡的訓練器,但可以與LSTM RNN(我們稍后介紹)或其他深度神經網絡互換。對于圖中所示的網絡,層 lk+1l_{k+1}lk+1? 中 hθ(.)h_\theta(.)hθ?(.) 的激活計算如下(公式3):
Aθlk+1=σ(Wθlk+1?Aθlk+Bθlk+1)A_{\theta_{l_{k+1}}}=\sigma(W_{\theta_{l_{k+1}}}\cdot A_{\theta_{l_k}}+B_{\theta_{l_{k+1}}})Aθlk+1???=σ(Wθlk+1????Aθlk???+Bθlk+1???)
其中,其中 σ\sigmaσ 是除最后一個層以外應用于每一層的ReLU激活函數,AAA 表示計算得出的隱藏單元的激活值。該網絡中的 權重/偏差 參數 WθW_\thetaWθ?,BθB_\thetaBθ? 的數量可以任意大,因為這只會在訓練階段使用,而這可以通過使用具有CPU或GPU的高性能分布式計算來有效地完成。 - Projection Network ( p ):投影模型是一個簡單的網絡,對一組有效的計算操作進行編碼,這些操作將直接在設備上進行推斷。模型本身定義了一組有效的“投影”函數 P(x?i)\mathbb{P}(\vec{x}_i)P(xi?),將每個輸入實例 x?i\vec{x}_ixi? 投影到不同的空間 ΩP\Omega_\mathbb{P}ΩP? ,然后在該空間中執行學習以將其映射到相應的輸出 yipy_i^pyip?。我們使用簡化的投影網絡,幾乎沒有操作,如圖1所示。輸入 x?i\vec{x}_ixi? 使用一系列 TTT 投影函數 P1,...,PT\mathbb{P}^1,...,\mathbb{P}^TP1,...,PT 進行轉換,然后再進行單層激活(公式4和公式5)。
x?ip=P1(x?i),...,PT(x?i)\vec{x}_i^p=\mathbb{P}^1(\vec{x}_i),...,\mathbb{P}^T(\vec{x}_i)xip?=P1(xi?),...,PT(xi?) yip=softmax(Wp?x?ip+Bp)y_i^p=softmax(W^p\cdot \vec{x}_i^p + B^p)yip?=softmax(Wp?xip?+Bp)
投影轉換使用預先計算的參數化方法,即在學習過程中未對其進行訓練,并且將其輸出連接起來以形成用于后續操作的隱藏單元。在訓練期間,較簡單的投影網絡將學習選擇和應用特定的投影操作 Pj\mathbb{P}^jPj(通過激活),這些操作對于給定任務更具預測性。可以堆疊連接到該網絡中間層的其他層,以實現投影的非線性組合。
投影模型是與訓練器共同訓練的,并學會模仿整個訓練器網絡進行的預測,訓練器預測網具有更多的參數,因此具有更大的預測能力。一旦學習完成,就從投影網絡中提取變換函數 P(.)\mathbb{P}(.)P(.) 和相應的訓練權重 WpW^pWp,BpB^pBp,以創建一個輕量級模型,并將其轉移到設備。
在我們的設置中,選擇投影矩陣 P\mathbb{P}P 以及表示投影空間 ΩPΩPΩP 會對計算成本和模型大小產生直接影響。我們建議利用局部敏感哈希(LSH)的修改版本,作為有效的隨機投影方法來定義 P(.)\mathbb{P}(.)P(.) 。結合起來,我們使用 1d1^d1d 表示 ΩP\Omega_\mathbb{P}ΩP? ,即網絡的隱藏單元本身使用投影的位向量表示。與整個網絡相比,這在參數的數量和大小方面都大大降低了內存占用量。我們在下面重點介紹此方法的一些關鍵屬性:
- 與典型的機器學習方法不同,不需要依靠預設的詞匯表或特征空間,典型的機器學習方法采用較小的詞匯表作為縮放機制。例如,LSTM RNN模型通常應用修剪,并在輸入編碼步驟中使用較小且固定大小的詞匯表來降低模型的復雜性。
- 所提出的學習方法可有效地縮放到大數據大小和高維空間。這對于涉及稀疏高維特征空間的自然語言應用程序特別有用。對于密集的特征空間(例如圖像像素),可以在不依賴大量參數的情況下有效地近似現有操作(例如全連接層(甚至卷積))進行預測。在限制存儲需求下,這種操作還可以與投影功能結合使用,以產生更復雜的投影網絡。
- P(xi)\mathbb{P}(x_i)P(xi?) 的計算與訓練數據的大小無關。
- 我們確保 P(.)\mathbb{P}(.)P(.) 可以高效地進行即時計算,以便在設備上進行推理。
接下來,將更詳細地描述投影方法和相關的操作。
局部敏感投影網絡(Locality Sensitive Projection Network)
前面描述的投影網絡依賴于一組轉換函數 P\mathbb{P}P,這些函數將輸入 x?i\vec{x}_ixi? 投影到隱藏的單位表示 ΩP\Omega_\mathbb{P}ΩP? 中。可以使用不同類型的函數來執行公式4中概述的投影操作。一種可能性是使用通過word2vec或類似技術得到預訓練的特征嵌入矩陣,模型 P\mathbb{P}P 作為 x?i\vec{x}_ixi? 中特征的嵌入查找,然后進行諸如矢量平均之類的聚合操作。
相反,我們在此步驟中采用了有效的隨機投影方法,我們使用局部敏感哈希(LSH)來建模基礎的投影操作,LSH通常用作諸如聚類之類的應用程序的降維技術。我們在Projection Nets中使用LSH的動機是,它允許我們將類似的輸入 x?i\vec{x}_ixi? 或中間網絡層投影到接近度量空間的隱藏單位向量中。這使我們能夠轉換輸入并學習有效而緊湊的網絡表示形式,該表示形式僅取決于數據的固有維數(即觀察到的特征),而不是實例數或實際數據矢量的維數(即所有特征或詞匯量)。我們通過二進制散列函數來實現。
- 定理1:對于 x?i,x?j∈Rn\vec{x}_i,\vec{x}_j\in \mathbb{R}^nxi?,xj?∈Rn 和從 Rn\mathbb{R}^nRn 上的球對稱分布繪制的矢量 Pk\mathbb{P}_kPk?,內積符號與矢量之間的角度 ?(x?i,x?j)\measuredangle(\vec{x}_i,\vec{x}_j)?(xi?,xj?) 之間的關系可以表示為:
?(x?i,x?j)=πPr{sgn[<x?i,Pk>]≠sgn[<x?j,Pk>]}\measuredangle(\vec{x}_i,\vec{x}_j)=\pi Pr\{sgn[<\vec{x}_i,\mathbb{P}_k>]\neq sgn[<\vec{x}_j,\mathbb{P}_k>]\}?(xi?,xj?)=πPr{sgn[<xi?,Pk?>]?=sgn[<xj?,Pk?>]}
此屬性適用于簡單的幾何,即每當投影矩陣 P\mathbb{P}P 的行向量落入單位向量之間在 x?i\vec{x}_ixi? 和 x?j\vec{x}_jxj? 方向上的角度之內時,它們將產生相反的符號。與包含 x?ix?j\vec{x}_i\vec{x}_jxi?xj? 的平面正交的任何投影矢量都將無效。由于可以使用內積來確定附近的參數表示形式,所以 <x?i,x?j>=∣∣x?i∣∣?∣∣x?j∣∣?cos?(x?i,x?j)<\vec{x}_i,\vec{x}_j>=||\vec{x}_i||\cdot ||\vec{x}_j||\cdot cos\measuredangle(\vec{x}_i,\vec{x}_j)<xi?,xj?>=∣∣xi?∣∣?∣∣xj?∣∣?cos?(xi?,xj?),因此我們可以通過使用矢量的簽名來有效地建模和存儲網絡隱藏的激活單元矢量。 - 計算投影:遵循上述屬性,我們反復使用二進制哈希,然后將 P\mathbb{P}P 中的投影向量應用于將輸入 x?i\vec{x}_ixi? 轉換為由 Pk(x?i)∈{0,1}d\mathbb{P}_k(\vec{x}_i)\in \{0,1\}^dPk?(xi?)∈{0,1}d 表示的二進制哈希表示,其中 [Pk(x?i)]:=sgn[<x?i,Pk>][\mathbb{P}_k(\vec{x}_i)] :=sgn[<\vec{x}_i,\mathbb{P}_k>][Pk?(xi?)]:=sgn[<xi?,Pk?>] 。使得 d-bit 矢量表示,對應于每個投影行 Pk=1...d\mathbb{P}_{k=1...d}Pk=1...d? 的一位。投影矩陣 P\mathbb{P}P 在訓練和推理之前是固定的,請注意,我們無需顯式存儲隨機投影矢量 Pk\mathbb{P}_kPk? ,因為我們可以使用哈希函數動態計算它們,而不用調用隨機數生成器。此外,這還使我們能夠執行在觀察到的特征尺寸上呈線性的投影操作,而不是對高維數據而言可能過大的整體特征尺寸,從而節省了內存和計算成本。二進制表示很重要,因為與訓練器網絡相比,這使得投影網絡參數表示的非常緊湊,從而大大減小了模型大小。注意,其他方法,例如量化或權重共享,可以疊加在此方法之上,以在內存減少方面提供較小的進一步收益。
- 投影參數:實際上,我們采用 TTT 個不同的投影函數 Pj=1...T\mathbb{P}^{j=1...T}Pj=1...T ,如圖1所示。每一個都產生 d-bit 向量,將其連接起來以形成等式4中的預測激活單元 x?ip\vec{x}_i^pxip?。TTT 和 ddd 取決于為 P\mathbb{P}P 指定的投影網絡參數配置,并且可以調整為在預測質量和模型大小之間進行權衡。
訓練與推斷
如前所述,我們使用緊湊的位單元來表示投影網絡。在訓練過程中,該網絡學習在投影的位空間 ΩP\Omega_\mathbb{P}ΩP? 中彼此相鄰的點沿相同方向移動梯度。梯度的方向和大小由可訪問更多參數集和更復雜架構的訓練器網絡確定。使用反向傳播對兩個網絡進行聯合訓練。盡管有聯合優化目標,但在高性能CPU或GPU上進行分布式計算時,隨機梯度下降可以有效地進行訓練。經過訓練后,這兩個網絡將解耦并用于不同的目的。 訓練器模型可以部署在使用標準神經網絡的任何地方。提取更簡單的投影網絡模型權重以及變換函數 P(.)\mathbb{P}(.)P(.) ,以創建輕量級模型,并將其推送到設備。
- 復雜度:推理的總體復雜度為 O(n?T?d)O(n\cdot T\cdot d)O(n?T?d),其中 nnn 是觀察到的特征大小(不是總詞匯量大小),它在輸入大小上呈線性關系,ddd 是為每個投影矢量 Pk\mathbb{P}_kPk? 指定的LSH位數 ,TTT 是 P\mathbb{P}P 中使用的投影函數的數量。在此設置中,投影推斷模型所需的模型大小(根據參數的數量)和存儲空間為 O(T?d)O(T\cdot d)O(T?d)。
作為位向量表示 ΩP\Omega_\mathbb{P}ΩP? 的替代,投影矩陣 P\mathbb{P}P 可以用來生成投影網絡中隱藏單元的稀疏表示。每個 d-bit 塊都可以編碼為整數而不是位向量。這樣會導致整體參數空間為 O(T?2d)O(T\cdot 2^d)O(T?2d)(反而更大),但是對于實際學習的參數數量很少,并且可以通過有效的稀疏查找操作進行推理的應用程序仍然是有益的。
實驗結果
下表顯示了基線(MNIST手寫數字識別)的結果以及與具有不同大小 (T,d)(T,d)(T,d) 的ProjectionNet模型的比較。結果表明,小型的ProjectionNet的壓縮率高達388x,可以實現92.3%的高精度,而內存占用量明顯更大的基準可以達到98.9%。此外,ProjectionNet模型能夠實現模型尺寸的進一步減小(最大2000x-3500x),同時對top-1的預測的精度約為70-80%,而對top-3的預測的精度約為90-94%。
下表顯示了ProjectionNets與基準( CIFAR-100圖像分類)之間的結果比較。 如前所述,此任務比MNIST更復雜,因此精度數較低。
下表使用神經投影網絡和基線進行語義意圖分類的結果。表中顯示,使用LSTM RNN訓練的ProjectionNet達到82.3%的precision@ 1,與基線LSTM相比僅下降了15%,但減少了內存占用和計算量(與LSTM展開步驟相比)。
在MNIST的識別任務中,80-100個神經投影bits足以得到70-80%的精度解決該任務,將其增加到720bits可達到92.3%的精度,通過使用更深的投影進一步提高了精度網絡。對于涉及序列輸入的語義分類的語言任務,需要720個神經投影bits才能達到82.3%的top-1精度。
下圖顯示了MNIST和CIFAR-100任務的圖。 該圖表明,可以使用簡單的100位ProjectionNet進行MNIST分類,從而簡潔地獲得具有3-5M參數的3層前饋網絡的預測能力(比率=?0.8)。 需要恢復90%以上的基礎深度網絡質量。
總結
論文引入了一種新的神經投影方法來訓練輕量級神經網絡模型,從而以較低的計算和內存成本在設備上執行有效的推理。論文展示了這種方法在模型大小和深度網絡體系結構變化方面的靈活性。第3節末尾討論了該框架的一些可能的將來擴展。除了深度學習之外,還可以將此框架應用于其他類型的學習場景中的輕量級模型訓練。例如,訓練范例可以更改為半監督或無監督設置。可以修改訓練器模型本身,以合并在圖形或概率圖形模型(而非深度神經網絡)上定義的結構化損失函數。下圖展示了使用圖優化損失函數學習輕量模型的端到端投影圖方法,可以使用大規模分布圖算法甚至神經圖方法有效地訓練它們。
總結
以上是生活随笔為你收集整理的论文阅读笔记:ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运筹优化(二)--线性规划概念及应用模型
- 下一篇: 机器学习笔记——模型选择与正则化