深度壓縮之蒸餾模型
近年在計算機視覺、語音識別等諸多領域,深度神經網路(DNN, Deep Neural Network)被證明是一種極具成效的問題解決方式。如卷積神經網路CNN(Convolutional neural network)在計算機視覺諸多傳統問題(分類、檢測、分割)都超越了傳統方法。
在利用深度網路解決問題的時候人們常常傾向於設計更為複雜的網路收集更多的數據以期獲得更好的performance。但是,隨之而來的是模型的複雜度急劇提升,直觀的表現是模參數越來越多size越來越大,需要的硬體資源(內存、GPU)越來越高。不利於模型的部署和應用向移動端的推廣。
有研究表明深度模型具有較大的信息參數冗餘。因此我們可以通過一定的技術方法對複雜的模型進行去冗餘壓縮。現有的壓縮方法主要可以下四類:
淺層網路:通過設計一個更淺(層數較少)結構更緊湊的網路來實現對複雜模型效果的逼近。但是淺層網路的表達能力很難與深層網路相匹敵【1】。因此,這種設計方法的局限性在於只能應用解決在較為簡單問題上。如分類問題中類別數較少的task。
直接壓縮訓練好的複雜模型:直接對訓練得到的複雜模型採用矩陣量化【2】、Kronecker內積、霍夫曼編碼、模型剪枝【3】等優化方式,對模型中的參數進行量化。以實現對模型的壓縮,部署階段採用量化過後的模型可以同時達到參數壓縮和提速的效果。n
多值網路:最為典型就是二值網路【4】、XNOR【5】網路等。其主要原理就是採用1bit對網路的輸入、權重、響應進行編碼。減少模型大小的同時,原始網路的卷積操作可以被bit-wise運算代替,極大提升了模型的速度。但是,如果原始網路結果不夠複雜(模型描述能力),由於二值網路會較大程度降低模型的表達能力。因此現階段有相關的論文開始研究n-bit編碼【6】方式成為n值網路或者多值網路來克服二值網路表達能力不足的缺點。
蒸餾模型:蒸餾模型採用的是遷移學習,通過採用預先訓練好的複雜模型(Teacher model)的輸出作為監督信號去訓練另外一個簡單的網路。這個簡單的網路稱之為student model。
下面我們將著重介紹蒸餾模型壓縮方法,文章來自Geoffrey Hinton《Distilling the Knowledge in a Neural Network》【7】
摘要
在ML領域中有一種最為簡單的提升模型效果的方式,在同一訓練集上訓練多個不同的模型,在預測階段採用綜合均值作為預測值。但是,運用這樣的組合模型需要太多的計算資源,特別是當單個模型都非常浮渣的時候。已經有相關的研究表明,複雜模型或者組合模型的中「知識」通過合適的方式是可以遷移到一個相對簡單模型之中,進而方便模型推广部署。
簡介
在大規模的機器學習領域,如物體檢測、語音識別等為了獲得較好的performance常常會訓練很複雜的模型,因為不需要考慮實時性、計算量等因素。但是,在部署階段就需要考慮模型的大小、計算複雜度、速度等諸多因素,因此我們需要更小更精鍊的模型用於部署。這種訓練和部署階段不同的模型形態,可以類比於自然界中很多昆蟲有多種形態以適應不同階段的需求。具體地,如蝴蝶在幼蟲以蛹的形式存儲能量和營養來更好的發育,但是到了後期就為了更好的繁殖和移動它就呈現了另外一種完全不一樣的形態。
有一種直觀的概念就是,越是複雜的網路具有越好的描述能力,可以用來解決更為複雜的問題。我們所說的模型學習得到「知識」就是模型參數,說到底我們想要學習的是一個輸入向量到輸出向量的映射,而不必太過於去關心中間映射過程。
模型蒸餾
所謂模型蒸餾就是將訓練好的複雜模型推廣能力「知識」遷移到一個結構更為簡單的網路中。或者通過簡單的網路去學習複雜模型中「知識」。其基本流程如下圖:
基本可以分為兩個階段:
原始模型訓練:
1. 根據提出的目標問題,設計一個或多個複雜網路(N1,N2,…,Nt)。
2. 收集足夠的訓練數據,按照常規CNN模型訓練流程,並行的訓練1中的多個網路得到。得到(M1,M2,…,Mt)
精簡模型訓練:
1. 根據(N1,N2,…,Nt)設計一個簡單網路N0。
2. 收集簡單模型訓練數據,此處的訓練數據可以是訓練原始網路的有標籤數據,也可以是額外的無標籤數據。
3. 將2中收集到的樣本輸入原始模型(M1,M2,…,Mt),修改原始模型softmax層中溫度參數T為一個較大值如T=20。每一個樣本在每個原始模型可以得到其最終的分類概率向量,選取其中概率至最大即為該模型對於當前樣本的判定結果。對於t個原始模型就可以t概率向量。然後對t概率向量求取均值作為當前樣本最後的概率輸出向量,記為soft_target,保存。
4. 標籤融合2中收集到的數據定義為hard_target,有標籤數據的hard_target取值為其標籤值1,無標籤數據hard_taret取值為0。Target =na*hard_target + b*soft_target(a+b=1)。Target最終作為訓練數據的標籤去訓練精簡模型。參數a,b是用於控制標籤融合權重的,推薦經驗值為(a=0.1 b=0.9)
5. 設置精簡模型softmax層溫度參數與原始複雜模型產生Soft-target時所採用的溫度,按照常規模型訓練精簡網路模型。
6. 部署時將精簡模型中的softmax溫度參數重置為1,即採用最原始的softmax
結果
On Mnist
ON speech Recognition
結論
On MNIST
效果非常更好。對於遷移訓練集數據中包含無標籤數據或者某些類別數據缺失,依然能夠有很好的表現。說明該模型具有非常的推廣能力。
On Speech Recognition
組合模型中的所有「知識」都可以被蒸餾集成到精簡模型中,這樣極大的減少部署的難度。
[1]. nBa, J., Caruana, R.: Do deepnnets really need to be deep? In: Advances in neural information processingnsystems. (2014) 2654–2662 3
[2]. nWu J, Leng C, Wang Y, et al.nQuantized Convolutional Neural Networks for Mobile Devices[J]. arXiv preprintnarXiv:1512.06473, 2015.
[3]. nHan S, Mao H, Dally W J. Deepncompression: Compressing deep neural network with pruning, trained quantizationnand huffman coding[J]. CoRR, abs/1510.00149, 2015, 2.
[4]. nCourbariaux M, Hubara I, SoudrynC O M D, et al. Binarized Neural Networks: Training Neural Networks with Weightsnand Activations Constrained to+ 1 or?[J].
[5]. nRastegari M, Ordonez V, RedmonnJ, et al. XNOR-Net: ImageNet Classification Using Binary Convolutional NeuralnNetworks[J]. arXiv preprint arXiv:1603.05279, 2016.
[6]. nWen H, Zhou S, Liang Z, et al.nTraining Bit Fully Convolutional Network for Fast Semantic Segmentation[J].narXiv preprint arXiv:1612.00212, 2016.
[7]. nHinton G, Vinyals O, Dean J.nDistilling the knowledge in a neural network[J]. arXiv preprintnarXiv:1503.02531, 2015.
推薦閱讀:
※「深度學習」和「多層神經網路」的區別?
※關於深度神經網路壓縮(下)
※數學 · 神經網路(四)· Normalize
※神經網路與TensorFlow實踐-前言
TAG:深度学习DeepLearning | 神经网络 | 计算机视觉 |