日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习笔记 network compression

發布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习笔记 network compression 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來自于李宏毅教授的ML課件,作業七部分

Hung-yi Lee (ntu.edu.tw)

0 前言

????????我們為什么要進行network compression呢?

因為在某些環境中(比如在手機,手環等設備中),如果我們要嵌入深度學習model的話,那么鑒于設備的原因,其存儲空間,或是計算能力,都是有限的。所以我們不能需要太大的模型。

1 network pruning

對于很大的模型來說,并不是它的所有參數都是有用的,我們也許不需要那么多的參數

以人腦神經元的pruning過程為例,人腦也是在成長過程中先是有很多的神經元連接,然后慢慢地將冗余的神經元連接去掉

????????

?

比如我們以用L1范數評估weight的重要性為例:

我們現在有3個filter(橙、藍、綠),我們通過計算這三個filter的L1范數,判斷各個filter權重的重要性,把小的那個去掉

?

1.1 為什么不一開始train一個小模型

?????????那么問題來了:為什么不一開始就trian一個小的network呢?而是要從一個大的network再慢慢地prune成一個小model呢

? ? ? ? 因為如果只是一個小模型的話,可能會遇到鞍點或者局部最小值,不一定能learn得很好。但是大模型的話(尤其是足夠大的模型),是可以避開鞍點和local minimal的

1.1.1?lottery ticket hypothesis

這是19ICLR的一篇paper,大致意思是這樣的

????????對于一個大模型,我首先隨機初始化一組參數(紅色部分),然后進行tuning,得到效果還不錯的模型(紫色部分)

? ? ? ? 之后我們進行model pruning,得到一個小一點的模型(但是剩下的這些部分參數不變,仍然為紫色的部分)

? ? ? ? 此時如果我們對剩下的模型部分重新隨機初始化(綠色部分),可能是learn不出一個很好的模型的。但是如果我們將原來隨機初始化大模型對應的參數直接復制過來,是可以train得不錯的

?1.2 network pruning 實際操作上的選擇

如果我們是weight pruning,那么這會使得模型不易實現,也不易用GPU加速

  • 因為這樣的話模型就不是一個矩陣的形式,那么無論是pytorch這種深度學習框架,還是依靠矩陣運算來加速的GPU,都無法實現
  • 如果我們只是將prune的weight用0表示,那么模型參數的規模還是不變的

?如果我們是neuron pruning,那么我們只是減掉矩陣的一定的維度,依然很方便地實現&GPU加速

?2 knowledge distillation

????????在知識蒸餾中,我們的目標是train一個大的network(teacher network)和一個小的network(student network)。其中teacher network學習的label就是ground truth的label,而小的student network所需要學習的內容是teacher network的輸出

????????

? ? ? ? ?這樣的好處在哪里呢?相比于一個冷冰冰的ground label 1,teacher network可以學到這個label更豐富的信息(比如7和9這兩個數字跟1很像,同時7比9更像)

? ? ? ? ——>這樣就會導致,哪怕student沒有看到過7和9,他也有可能learn出一定的7&9的特征

? ? ? ? ——>teacher network 往往是一個很大的/集成了很多模型的大model,student network則可以用較少的參數實現近似的效果

2.1 label temperature

? ? ? ? 由于知識蒸餾希望teacher學習到更豐富的信息,不希望他僅僅學習到(接近)one-hot label的信息,所以我們希望各個label之間的差距稍微拉近一些,這時候就需要用到temperature的內容

2.2 TA network

如果teacher network 和student network 相差太大,那么student network可能沒法很好地學習teacher network

于是引入一個參數量介于teacher network和student network之間的TA networl 來幫助student network 學習

?

?3 parameter quantization

有兩種思路:

第一種是使用更少的比特數來表示一個參數值

第二種是進行weight clustering

????????比如我們根據某種clustering的方法把weight分成四個cluster,每個cluster的weight值都使用這個cluster的平均值來表示?

? ? ? ? 這樣的好處是省內存,我們只需要一個記錄每個cluster是什么數值的table,以及一個元素為屬于哪個cluster的矩陣就可以了(比如我們分成四個cluster,只需要2bit)

? ? ? ? 但是這種方法勢必會減少一定的精度

第三種方法是使用類似于哈夫曼編碼的方式進行編碼

使用比較頻繁weight用較少的比特表示,使用比較少的weight用較多的比特表示

4 模型架構設計

比如,我們本來想創建一個N維到M維的全連接層,我們需要M*N個參數

現在我們在中間插入一層維度為K的中間層,那么我們只需要M*K+N*K個參數?

?

包括mobilenet,就是一種很明顯的依靠模型架構設計的方法來進行?

NTU 課程 7454 (5) CNN進階_UQI-LIUWJ的博客-CSDN博客

5 動態計算

????????如果資源充足的時候,那么就做到最好;如果資源不足的時候,那么就在不怎么影響性能的情況下,先求有再求好【類似于省電模式】

? ? ? ? 一種解決方法是,在中間的hidden layer 就接一些輸出,如果計算資源不足的時候,那么從中間就把結果輸出出來了


?

6 多種network compression方法混合

?

總結

以上是生活随笔為你收集整理的机器学习笔记 network compression的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。