Deecamp面試準(zhǔn)備

非常幸運(yùn)的收到了DC的面試通知

搜集了一些資料,好好準(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。效果仍然很好。


resnet
gmn
論文中relation 部分,除了卷積,后面還有bn和relu,但是我這里省略了

我為啥去掉了,還效果不錯(cuò)呢,因?yàn)槿サ舻闹皇且粚觔n和relu,所以影響不大。

原因是什么呢?

https://blog.csdn.net/loseinvain/article/details/86476010


(2)講一下LBP和HOG特征:

局部二值模式


我在《基于視覺(jué)的煙霧識(shí)別》項(xiàng)目中,用的就是單純的LBP


單純LBP不具備旋轉(zhuǎn)不變性


按位旋轉(zhuǎn),取最小值,具備旋轉(zhuǎn)不變性


LBP用途

HOG:

方向梯度直方圖


圖像局部目標(biāo)的表象和形狀能夠被梯度或邊緣的方向密度分布描述。


進(jìn)行對(duì)比度歸一化,可以提高算法性能,對(duì)光照和陰影獲得更好效果。

(3)虛警率怎么計(jì)算:

順便附上其他“率”


?正確率:所有被正確分類的樣本,占總樣本數(shù)的比例;?精確率:原本為正類的樣本,在所有正類樣本中的比例


?召回率:原本為正類的樣本,被正確分類為正類的比例;?虛警率:負(fù)類樣本被分為正類樣本,在所有負(fù)類樣本中的比例;?漏警率:正類樣本被分為負(fù)類樣本,在所有正類樣本中的比例

(4)MobileNet:


自 2012 年 AlexNet 以來(lái),卷積神經(jīng)網(wǎng)絡(luò)(簡(jiǎn)稱 CNN)在圖像分類、圖像分割、目標(biāo)檢測(cè)等領(lǐng)域獲得廣泛應(yīng)用。隨著性能要求越來(lái)越高,AlexNet 已經(jīng)無(wú)法滿足大家的需求,于是乎各路大牛紛紛提出性能更優(yōu)越的 CNN 網(wǎng)絡(luò),如 VGG、GoogLeNet、ResNet、DenseNet 等。由于神經(jīng)網(wǎng)絡(luò)的性質(zhì),為了獲得更好的性能,網(wǎng)絡(luò)層數(shù)不斷增加,從 7 層 AlexNet 到 16 層 VGG,再?gòu)?16 層 VGG 到 GoogLeNet 的 22 層,再到 152 層 ResNet,更有上千層的 ResNet 和 DenseNet。雖然網(wǎng)絡(luò)性能得到了提高,但隨之而來(lái)的就是效率問(wèn)題。


不采用模型壓縮,而采用輕量化模型


MobileNet是Google團(tuán)隊(duì)提出的


depth-wise convolution 卷積:1.減少參數(shù)數(shù)量2.提升運(yùn)算速度


d-p s c會(huì)涉及兩個(gè)超參數(shù):width multipler 和resolution multipler


depth wise convolution :逐通道卷積,一個(gè)卷積負(fù)責(zé)一個(gè)通道;pointwise convolution:將上述得到的feature map串起來(lái)


因?yàn)檩斎氲拿恳粋€(gè)feature map 要包含輸入層所有feature map信息


圖片發(fā)自簡(jiǎn)書App


M個(gè)Dk*Dk



標(biāo)準(zhǔn)卷積



計(jì)算量減少


將depth-wise convolution步長(zhǎng)設(shè)置為2,下采樣


參數(shù)一個(gè)量級(jí),但是計(jì)算量卻比GoogLenet小一個(gè)量級(jí)

(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)化算法。

優(yōu)化算法:最大化/最小化目標(biāo)函數(shù)(損失函數(shù))


一階:梯度下降(雅克比矩陣);二階:Hessian矩陣


梯度下降:整個(gè)數(shù)據(jù)集上進(jìn)行


隨機(jī)梯度下降:每次更新只用一對(duì)樣本


mini batch梯度下降:每次更新取一個(gè)batch的樣本


鞍點(diǎn)問(wèn)題不好解決


動(dòng)量梯度下降:更穩(wěn)更快收斂


NAG提高穩(wěn)定性,避免越過(guò)極值


Adagrad:每個(gè)參數(shù)有自己的學(xué)習(xí)率


Adadelta解決Adagrad后期學(xué)習(xí)率很小,收斂速度低的問(wèn)題。


Adam:每個(gè)參數(shù)不僅有自己的學(xué)習(xí)率,還有自己的動(dòng)量(使每個(gè)參數(shù)更新更加具有獨(dú)立性,提升了模型訓(xùn)練速度和訓(xùn)練穩(wěn)定性)



數(shù)據(jù)稀疏:使用Adaptive(自適應(yīng))方法好一些。

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

數(shù)據(jù)缺失或?yàn)榱?/div>
摸一鵝 ——咩

(6)反向傳播(誤差逆?zhèn)鞑ニ惴ǎ?/h1>

? ? ? 這個(gè)算法曾經(jīng)推導(dǎo)過(guò),由于這是一個(gè)非常重要的算法,此處我再做一遍詳細(xì)的推導(dǎo)(主要參照西瓜書上面p101-p104上面的內(nèi)容):


(7)交叉熵:

公式如下:

如果只有plogp,那么p為0的地方,loss為0,那這些地方就能瞎預(yù)測(cè),這樣就加入(1-p),就防止瞎學(xué)

(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á)除了能量化weightfeature,還可以量化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。如下所示。

Network in Network:小卷積層,滑到了以后,經(jīng)過(guò)一個(gè)復(fù)雜的過(guò)程,再記下來(lái)這個(gè)值。(把“滑”和“記”之間加入一個(gè)網(wǎng)絡(luò)):網(wǎng)中網(wǎng)

極端化一點(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ò)中‘所處的位置如下圖所示:

如上圖可以看到,bn層的位置一般在conv(or Fc)層的后面,也有一些情況bn在conv(or Fc)層的前面。我們先來(lái)兩種情況分別來(lái)考慮。

2.1 bn層在conv層之后的情形

bn合并的原理,可以由下兩張圖所示:

其實(shí),CNN的本質(zhì),是,乘以一個(gè)數(shù),再加一個(gè)數(shù),bn的本質(zhì)是,減一個(gè)數(shù),再除以一個(gè)數(shù),所以,具體過(guò)程如上圖所示,也就是,將其,轉(zhuǎn)變?yōu)槌艘粤硪粋€(gè)系數(shù),再加上別的系數(shù)


這張圖的表示,將一個(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è)概念和一些用到的定理。矩陣的跡定義如下

其實(shí)就是在,對(duì)loss求導(dǎo)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(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ù)。

友情鏈接更多精彩內(nèi)容