【知识星球】从SVM对偶问题,到疲劳驾驶检测,到实用工业级别的模型压缩技巧...
歡迎大家來到《知識星球》專欄,本次發布這兩天有三AI知識星球中專欄《AI 1000問》,《模型結構1000變》,《數據集》的知識便利貼。
作者&編輯 | 言有三
有三AI1000問-機器學習篇
為什么SVM要把原問題轉化為對偶問題
我們知道SVM在求解的時候,會把原問題轉換為對偶問題,那為什么要這么做呢?
作者/編輯 言有三
首先我們看看原問題到底是什么?
SVM的優化目標是一個帶約束的方程,如下:
這個問題是一個凸二次規劃問題,可以用成熟的優化計算包求解,但問題就是計算量很大,因此要尋求更高效的辦法。
這可以構建拉格朗日方程來求解,如下,對每條約束添加拉格朗日乘子ai>0,構造拉格朗日函數如下:
關于拉格朗日方程和KKT條件,篇幅限制本次不講述,讀者需要自行補充知識。
上述問題假如有任何一個樣本分類錯誤,那么就有?
此時如果讓對應的系數ai趨于無窮大,則該函數是不可能取得極小值的,所以上面的式子要想有解,一定會滿足:
因此
而我們本來想求的就是在約束條件下的w的范數極小值,所以:
它要求出w,b的值滿足內側的極大值,但這個形式是難解的,不過因為下面的式子存在:
所以上式極小極大值問題可以轉換為極大極小值問題:
求解上面的式子只需要將內側的式子對w,b求導,就能得到a。
要求上式的極大值問題,又可以轉化為極小值問題求解,不再贅述。
從上面式子來看,與原問題相比有兩點好處:
(1)?改變了問題的復雜度。不管是直接采用優化方法還是拉格朗日方程的原問題,都需要直接求特征向量w,因此求解的復雜度與樣本的維度有關。而在對偶問題下,直接求ai即可,這只和樣本數量有關,復雜度降低了很多。
(2) 另外再看上式中的x_i·x_j,雖然我們在這里沒有講述核函數,但是非線性可分的SVM問題需要引入核函數,轉換為這種形式后,可以非常方便的應用核函數。
有三AI知識星球-網絡結構1000變
DeepRebirth
在深度學習模型中有許多的非tensor網絡層雖然參數很少,但是有較大的計算量,因此模型在最終部署到移動端時經常合并這些網絡層從而進一步提高推理速度。
作者/編輯 言有三
模型壓縮有許多的方法,比如使用小卷積,多尺度,去除全連接層,瓶頸結構等思路設計緊湊的網絡,也有對權重進行量化剪枝等方法,而DeepRebirth則采用了另外一種思路,即將Non-tensor layer(包括pooling、BN、LRN、ReLU等)合并到tensor層中,因為它們雖然參數不多,但是有很大的計算量,下面首先看看經典網絡中這些層的計算時間比例:
可以看出這些非卷積層占據了很大比例的計算時間,在Intel x86上甚至能占到一半,如果能夠將其去除將大幅度的提升模型的運算速度。
作者提出了兩種思路,分別是StreamLine Merging和Branch Merging。
StreamLine Merging是一種串行的合并方式,如下:
通常來說,就是將Pooling、LRN,BN等網絡層與相鄰近的Conv層進行合并,上圖的案例中經過合并后從153.8ms直接降低到了16.6ms。這里卷積本身的計算時間也大大降低,是因為pool2融合進了conv,使其步長從1變為2。
現今更為常見的情況是將BN,Scale等網絡層和相鄰的Conv層合并,也能降低不少計算量。
Branch Merging是一個分支的合并方式,如下:
如上圖,將1*1卷積層以及Pooling層分支分別合并到和它并行的3*3卷積和5*5卷積分支中。另外考慮到3*3卷積和5*5卷積分支輸出通道增加會增大參數量和運算量,因此調整這些分支的輸入通道進行壓縮。
在進行以上的合并后,模型的性能通常會降低,所以需要重新訓練,作者采用的方式是合并得到的新層使用標準的初始化方式,將其他層的參數固定不變,然后將新層的學習率設置為其他層的10倍后進行finetuning。
那么實驗效果如何呢?以GoogLeNet為基準模型的實驗結果如下:
上表展示了對不同的網絡層使用以上合并策略,可以發現各種網絡層的速度都有很大提升,在精度只降低0.4%的時候,能有超過3倍的速度提升。
這是非常實用且強大的一個提升模型運行速度的方法,在實際進行模型部署時,常常會對BN等網絡層進行合并。
[1] Li D, Wang X, Kong D. Deeprebirth: Accelerating deep neural network execution on mobile devices[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.
有三AI知識星球-數據集
Distracted Driver Detection
Distracted Driver Detection是一個司機狀態檢測數據集,包含10個狀態,共22425張圖 。
作者/編輯 言有三
數據集地址:https://www.kaggle.com/c/state-farm-distracted-driver-detection/data,發布于2016年。
每年很多的交通事故的發生都是因為司機沒有專注于駕駛,因此一個好的輔助駕駛系統不僅要關注車外的情況,也要時刻關注車內駕駛員的情況。
這一個數據集來自于Kaggle平臺,該包含了10種狀態,如下:
c0: safe?driving
c1: texting - right
c2: talking on the phone - right
c3: texting - left
c4: talking on the phone - left
c5: operating the radio
c6: drinking
c7: reaching behind
c8: hair and makeup
c9: talking to passenger
一些樣本如下,每一類約2000多張圖像,共22425張圖。
更多模型解讀和數據集
加入有三AI知識星球即可獲取
每日更新網絡架構解讀
已經超過4萬字的內容
每日更新數據集
大量干貨供你下載
AI1000問,補全你的知識漏洞
轉載文章請后臺聯系
侵權必究
往期精選
有三AI知識星球官宣,BAT等大咖等你來撩
揭秘7大AI學習板塊,這個星球推薦你擁有
有三AI 1000問回歸,備戰秋招,更多,更快,更好,等你來戰!
【知識星球】做作業還能贏獎金,傳統圖像/機器學習/深度學習盡在不言
【知識星球】顏值,自拍,美學三大任務簡介和數據集下載
【知識星球】數據集板塊重磅發布,海量數據集介紹與下載
【知識星球】貓貓狗狗與深度學習那些事兒
【知識星球】超3萬字的網絡結構解讀,學習必備
【知識星球】視頻分類/行為識別網絡和數據集上新
【知識星球】3D網絡結構解讀系列上新
【知識星球】動態推理網絡結構上新,不是所有的網絡都是不變的
【知識星球】Attention網絡結構上新,聚焦才能贏
【知識星球】幾個人像分割數據集簡介和下載
【知識星球】總有些骨骼輕奇,姿態妖嬈的模型結構設計,不知道你知不知道,反正我知道一些
總結
以上是生活随笔為你收集整理的【知识星球】从SVM对偶问题,到疲劳驾驶检测,到实用工业级别的模型压缩技巧...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【杂谈】手把手带你配置深度学习环境
- 下一篇: 为什么有三AI从来不追热点,信息越多学的