
搜集了一些資料,好好準(zhǔn)備一下!
(0)如何將counting網(wǎng)絡(luò)中加入分割?
再加一層prediction,原來(lái)的prediction用來(lái)預(yù)測(cè)熱力圖,新增加的prediction用來(lái)預(yù)測(cè)mask,但是我們的標(biāo)注是框,把框當(dāng)成 mask,使其能夠分割(它竟然可以分出來(lái),到底哪個(gè)是夫)照葫蘆畫瓢,是我能做到的;它卻能照著框,畫瓢!厲害了!
(1)counting網(wǎng)絡(luò)中,對(duì)于網(wǎng)絡(luò)做了什么簡(jiǎn)化,去掉了什么層?
答:去掉了bn和relu。效果仍然很好。







我為啥去掉了,還效果不錯(cuò)呢,因?yàn)槿サ舻闹皇且粚觔n和relu,所以影響不大。
原因是什么呢?
https://blog.csdn.net/loseinvain/article/details/86476010
(2)講一下LBP和HOG特征:





HOG:



(3)虛警率怎么計(jì)算:
順便附上其他“率”


(4)MobileNet:















(5)神經(jīng)網(wǎng)絡(luò)如何優(yōu)化?
答:有一篇博客寫的特別好:https://blog.csdn.net/autocyz/article/details/83114245
大家耳熟能詳?shù)膬?yōu)化方法有梯度下降法(Gradient Descent)、隨機(jī)梯度下降法(Stochastic Gradient Descent)、Adam方法等等。雖然很多聽(tīng)過(guò)甚至用過(guò)這些方法,但是卻未必能夠說(shuō)出他們的區(qū)別,已經(jīng)什么時(shí)候改用什么樣的優(yōu)化算法。這篇文章將會(huì)從原理、區(qū)別和使用場(chǎng)景等角度詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)中的各種優(yōu)化算法。













了解一下數(shù)據(jù)稀疏:


(6)反向傳播(誤差逆?zhèn)鞑ニ惴ǎ?/h1>
? ? ? 這個(gè)算法曾經(jīng)推導(dǎo)過(guò),由于這是一個(gè)非常重要的算法,此處我再做一遍詳細(xì)的推導(dǎo)(主要參照西瓜書上面p101-p104上面的內(nèi)容):








(7)交叉熵:
公式如下:



(8)高斯分布:


(9)壓縮網(wǎng)絡(luò):
VALSE大會(huì)上,關(guān)于神經(jīng)網(wǎng)絡(luò)壓縮、加速、優(yōu)化的報(bào)告:
原文鏈接:https://blog.csdn.net/electech6/article/details/72822009
1.原微軟亞洲研究院首席研究員、曠世科技研究院院長(zhǎng)孫劍,介紹了曠視科技在網(wǎng)絡(luò)模型加速和壓縮方面的工作。
孫劍:簡(jiǎn)化網(wǎng)絡(luò)設(shè)計(jì)方法
(1)曠世科技研究院院長(zhǎng)孫劍的報(bào)告中介紹了模型壓縮優(yōu)化。他舉了個(gè)例子,比如在對(duì)圖像分類的時(shí)候,隨著層級(jí)的增加,應(yīng)該把圖像的空間分辨率慢慢縮小,但這同時(shí)也需要增加每一層中的filter 數(shù)。另外實(shí)踐中發(fā)現(xiàn)用小的filter 是更經(jīng)濟(jì)的,還有用Low-rank分解逼近的方法也比較有效。
?Low-rank分解:如果X是一個(gè)m行n列的數(shù)值矩陣,rank(X)是X的秩,假如rank (X)遠(yuǎn)小于m和n,則我們稱X是低秩矩陣。低秩矩陣每行或每列都可以用其他的行或列線性表出,可見(jiàn)它包含大量的冗余信息。利用這種冗余信息,可以對(duì)缺失數(shù)據(jù)進(jìn)行恢復(fù),也可以對(duì)數(shù)據(jù)進(jìn)行特征提取。
(2)在簡(jiǎn)化網(wǎng)絡(luò)方面,主要考慮結(jié)構(gòu)剪枝。還有一個(gè)概念是結(jié)構(gòu)化剪枝。雖然僅有一字之差,但是結(jié)構(gòu)剪枝和結(jié)構(gòu)化剪枝是兩個(gè)不同的概念。結(jié)構(gòu)剪枝是指對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行修剪,而結(jié)構(gòu)化剪枝是屬于結(jié)構(gòu)剪枝的一種具體方法,指按照特定的結(jié)構(gòu)(相對(duì)于隨機(jī))進(jìn)行剪枝。結(jié)構(gòu)剪枝如下圖所示一共有3種方法。
第一種方法是稀疏連接,本來(lái)一個(gè)網(wǎng)絡(luò)里有很多連接的,其基本思想是去除不重要的連接,讓這個(gè)連接變稀疏。雖然它可以減少網(wǎng)絡(luò)的模型大小,但是不一定能夠減少網(wǎng)絡(luò)的運(yùn)行時(shí)間。
第二種就是張量分解的方法,就是把一個(gè)卷積網(wǎng)絡(luò)參數(shù)矩陣通過(guò)張量分解,用它的低秩特性做逼近。
第三種是channel 剪枝,就是訓(xùn)練好一個(gè)網(wǎng)絡(luò)后,簡(jiǎn)單粗暴的把一些channel 去掉


還有一種方法就是Low-bit表達(dá)。如下圖輸入一個(gè)三維的feature map,feature map標(biāo)準(zhǔn)的話都是float表示的,卷積核其實(shí)也是一個(gè)三維的矩陣,它也是float表示的。Low-bit表達(dá)就是用低精度的表達(dá)來(lái)代替這些高精度的float,比如用8位或者更加極端的兩位來(lái)表示。 有兩篇比較著名的工作。一個(gè)是Binary connect,他的思想是把這個(gè)weight都變成01,這也是很夸張的一個(gè)想法。下面是更進(jìn)一步的工作,它是將feature和weight全變成01,叫XNOR-Net,好處是卷積神經(jīng)網(wǎng)絡(luò)里的矩陣層,可以變成一個(gè)bitcount的指令,就可以完成它想要完成的計(jì)算,這個(gè)是在硬件中很有效的一個(gè)方法,也是Low-bit網(wǎng)絡(luò)非常吸引人的地方。優(yōu)點(diǎn)在于:1.內(nèi)存可以降得非常多;2.潛在的加速比非常大。

Low-bit表達(dá)除了能量化weight或feature,還可以量化gridient,因?yàn)間ridient其實(shí)也是float的。他們團(tuán)隊(duì)使用的設(shè)置是weight用01表示,activation用兩位表示,gridient用4位表示,他們將這個(gè)網(wǎng)絡(luò)取名為DOReFa-Net。該網(wǎng)絡(luò)結(jié)構(gòu)在并行訓(xùn)練或者FPGA/ASIC上訓(xùn)練時(shí)可以提高不少效率。

2.中科院自動(dòng)化研究所模式識(shí)別國(guó)家重點(diǎn)實(shí)驗(yàn)室研究員、人工智能與先進(jìn)計(jì)算聯(lián)合實(shí)驗(yàn)室主任程健,作了“深度神經(jīng)網(wǎng)絡(luò)快速計(jì)算方法”的tutorial。
程?。荷疃壬窠?jīng)網(wǎng)絡(luò)優(yōu)化計(jì)算
程健研究員的報(bào)告主要針對(duì)嵌入式平臺(tái)的深度學(xué)習(xí)優(yōu)化方法。他列舉了近年來(lái)在深度神經(jīng)網(wǎng)絡(luò)模型加速和壓縮方面的幾個(gè)有效方法:
1、剪枝與稀疏
研究表明網(wǎng)絡(luò)中很多連接都是接近0或者冗余的,如何對(duì)這些參數(shù)進(jìn)行稀疏就變的很有意義。如下圖所示是SVD分解的算法性能對(duì)比。SVD分解可以從模型壓縮和提高運(yùn)算速度兩個(gè)方面進(jìn)行優(yōu)化。

但是并不是只要剪枝就一定會(huì)提高運(yùn)算速度。原因是如果剪枝過(guò)于隨機(jī),并不能有效提升運(yùn)算速度。所以需要結(jié)構(gòu)化剪枝(structured pruning)。

剪枝一般需要如下圖左的三個(gè)步驟:先在原始的網(wǎng)絡(luò)結(jié)構(gòu)下訓(xùn)練網(wǎng)絡(luò),然后通過(guò)設(shè)置一個(gè)閾值,把一些權(quán)值較小的連接進(jìn)行剪枝,重新訓(xùn)練權(quán)重,對(duì)訓(xùn)練好的模型再剪枝,再重新訓(xùn)練,直到滿足設(shè)定條件為止。

2、低秩分解
有很多種分解方法,比如奇異值分解、tucker分解、塊分解。



3、權(quán)值量化
通常神經(jīng)網(wǎng)絡(luò)中的權(quán)值一般用單精度的浮點(diǎn)數(shù)表示,需要占用大量的存儲(chǔ)空間。而用碼書對(duì)權(quán)值進(jìn)行量化可以共享權(quán)值,從而減輕存儲(chǔ)負(fù)擔(dān)。

利用哈希編碼對(duì)權(quán)重進(jìn)行編碼,從而達(dá)到壓縮權(quán)重的目的。也是一種有效的方法,如下所示。

另外就是定點(diǎn)和二值化(fixed point / binary)的方法。量化方式有二值量化(0,1):

也有三值量化:

4、用定點(diǎn)來(lái)代替浮點(diǎn)數(shù)計(jì)算

3.新加坡國(guó)立大學(xué)教授、360人工智能研究院院長(zhǎng)顏水成教授作了“深度學(xué)習(xí)的三個(gè)維度:Compactness,Speed, and Accuracy”的特邀報(bào)告。
顏水成:深度學(xué)習(xí)的三個(gè)維度
新加坡國(guó)立大學(xué)顏水成教授介紹了深度學(xué)習(xí)的三個(gè)維度:Compactness, Speed, and Accuracy。也就是小模型、速度快、預(yù)測(cè)準(zhǔn)。

小模型可以考慮network in network。如下所示。

極端化一點(diǎn),是否可以考慮設(shè)計(jì)全部由1x1的卷積層組成小模型?如下圖所示就是使用1x1的卷積,它的基本結(jié)構(gòu)包括以下三個(gè)部分:

經(jīng)過(guò)研究統(tǒng)計(jì)發(fā)現(xiàn),網(wǎng)絡(luò)在經(jīng)過(guò)ReLU后,有平均超過(guò)40%的輸出都是0,這些其實(shí)是無(wú)用信息,而且這些輸出0值在經(jīng)過(guò)ReLU前的操作也是沒(méi)有意義的??梢韵朕k法找到這些位置進(jìn)行優(yōu)化。



提高模型預(yù)測(cè)精度的一個(gè)有效方法是共享跨層信息,例如ResNet的跨層連接設(shè)計(jì)

(10)BN層消耗時(shí)間,如何把BN層去掉,又不影響效果?
原文鏈接:https://blog.csdn.net/wfei101/article/details/78635557
1.bn合并的必要性:
bn層即batch-norm層,一般是深度學(xué)習(xí)中用于加速訓(xùn)練速度和一種方法,一般放置在卷積層(conv層)或者全連接層之后,將數(shù)據(jù)歸一化并加速了訓(xùn)練擬合速度。但是bn層雖然在深度學(xué)習(xí)模型訓(xùn)練時(shí)起到了一定的積極作用,但是在預(yù)測(cè)時(shí)因?yàn)閼{空多了一些層,影響了整體的計(jì)算速度并占用了更多內(nèi)存或者顯存空間。所以我們?cè)O(shè)想如果能將bn層合并到相鄰的卷積層或者全連接層之后就好了,于是就有了這篇文章所提到的工作。
2.bn合并本身的數(shù)學(xué)原理:
bn層一般在神經(jīng)網(wǎng)絡(luò)中‘所處的位置如下圖所示:

2.1 bn層在conv層之后的情形
bn合并的原理,可以由下兩張圖所示:


這張圖的表示,將一個(gè)數(shù)據(jù)X,進(jìn)行bn層的操作和計(jì)算得到的結(jié)果。

這張圖表示,第一部分代表bn層處理之后接著卷基層的操作結(jié)果,第二部分表示將bn層合并到卷積層之后,卷積層w和b的變化。
2.2? bn在前,卷積在后的合并方式
? ? ? 這種情況下,FC層的合并方式和之前2.1的結(jié)果類似,但是bn在前,conv在后的情形,因?yàn)閏onv存在pad的情形,所以無(wú)法合并。
(11)最小二乘法求導(dǎo):
關(guān)于最小二乘問(wèn)題的求解,之前已有梯度下降法,還有比較快速的牛頓迭代。今天來(lái)介紹一種方法,是基于矩陣求導(dǎo)來(lái)計(jì)算的,它的計(jì)算方式更加簡(jiǎn)潔高效,不需要大量迭代,只需解一個(gè)正規(guī)方程組。在開(kāi)始之前,首先來(lái)認(rèn)識(shí)一個(gè)概念和一些用到的定理。矩陣的跡定義如下








【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。