一些記錄
個人理解:
深度學(xué)習(xí)的本質(zhì)就是擬合,只不過參數(shù)量足夠多。
先構(gòu)建模型,也就是擬合的曲線或方式。再配置數(shù)據(jù)集和輸出,數(shù)據(jù)集就是輸入的數(shù)據(jù),經(jīng)過模型,定義的擬合方式,變成輸出??梢钥醋魇且粋€預(yù)測的過程。最后定義訓(xùn)練,輸入進入到模型,并沒有變成理想的輸出,肯定是模型的參數(shù)不合適。那就定義一個損失,要讓實際輸出和理想輸出的損失最小,采用梯度下降算法,一步步調(diào)整模型的參數(shù),就是一個訓(xùn)練的過程了。
尺度不變性:目標(biāo)檢測對于大物體和小物體都要能檢測,coco數(shù)據(jù)集小物體多,imagenet數(shù)據(jù)集大物體,這樣使得預(yù)訓(xùn)練參數(shù)要適應(yīng)兩個數(shù)據(jù)集。下采樣小物體特征消失,上采樣大物體檢測下降。需要兼顧大小物體,并且具有泛化性。
方法:
圖像/特征金字塔:通過輸入多尺度的圖像獲得不同尺度的特征圖。-----------------有效但是耗時長
卷積核金字塔:對特征圖用不同尺度的卷積核滑窗卷積,得到不同尺度的輸出。------通常會與圖像/特征金字塔聯(lián)合使用
anchor金字塔:比如Faster RCNN中用多尺度的anchor來回歸目標(biāo)的位置。-----更經(jīng)濟。Faster RCNN的anchor點是在特征圖上取的。
圖像金字塔:圖像金字塔是一個圖像集合,集合中所有的圖像都源于同一個原始圖像,通過對原始圖像連續(xù)降采樣,直到達到某個終止條件才停止降采樣。
高斯金字塔:進行下采樣。進行卷積,然后去掉偶數(shù)行,偶數(shù)列,變成原來四分之一,從而得到一系列像金字塔的圖片,圖片信息有損失。進行上采樣的話,填充為0的偶數(shù)行,偶數(shù)列,再卷積,生成的圖片比原始圖片模糊。
拉普拉斯金字塔:可以理解為一個殘差。把原始圖片減去 原始圖片->下采樣->上采樣,得到一個殘差圖,然后在一系列高斯金字塔中進行計算,得到一系列的殘差圖,構(gòu)成拉普拉斯金字塔。這些殘差圖也就保存了原始圖片下采樣損失的信息。
但是都有原始圖片了,還要拉普拉斯金字塔干嘛?拉普拉斯金字塔有何應(yīng)用?圖像融合,分割?
特征金字塔:
參考鏈接:視頻? FPN特征金字塔網(wǎng)絡(luò)解讀 - 簡書 (jianshu.com)
1.圖像金字塔有效果,但計算量大

2.卷積池化得到最后的特征圖,可以得到高層語義信息,但是會丟掉小物體的檢測

3.金字塔特征分層?Pyramidal feature hierarchy 底層大scale的feature map語義信息少,雖然框出了小物體,但小物體容易被錯分:利用了多尺度的特征信息,如ssd

4FPN 特征金字塔 左邊和2一樣得到多尺度的特征圖,右邊進行了融合,小尺度的圖上采樣加上左邊的特征圖,這么做的目的是因為高層的特征語義多,低層的特征語義少但位置信息多。特征圖進行融合。


看看fpn怎么使用的,特征圖怎么用?ssd怎么預(yù)測的?
ssd: 參考鏈接:視頻??特點:在多尺度的特征圖上進行預(yù)測
在多尺度的特征圖上進行預(yù)測,預(yù)測時,大的特征圖用語義信息少,小目標(biāo)位置信息多,用小號的先驗框,預(yù)測小目標(biāo)。小的特征圖則用大的先驗框,預(yù)測大目標(biāo)。
預(yù)測時即特征圖上每個像素點有很多通道,組成一個向量。里面包括有分類置信度,xywh相較先驗框的位置偏移,用來回歸預(yù)測的目標(biāo)。
訓(xùn)練時要注意怎么平衡正負樣本,正負樣本怎么選擇,平衡定位,分類,置信度。里面有很多細節(jié)的東西沒琢磨。
損失函數(shù)看來一般都是分類損失加定位損失。
yolo:
V1:很簡單,輸入圖片,運行模型,輸出預(yù)測向量7*7*30,包括了每個像素周圍的預(yù)測,(框+分類+置信度),損失包括定位,分類,置信度,平衡正負樣本,大框小框。
V2:特點:通過數(shù)據(jù)集上聚類得到更合適的先驗框。引入anchor box,限制預(yù)測框的位置,回歸預(yù)測框xywh更合理。多尺度訓(xùn)練,同一張圖片,以圖像金字塔輸入模型訓(xùn)練?主干網(wǎng)絡(luò)先用imagenet訓(xùn)練了分類,調(diào)整了主干網(wǎng)絡(luò)的參數(shù),然后再主干網(wǎng)絡(luò)下加幾層,訓(xùn)練目標(biāo)檢測。分類檢測聯(lián)合訓(xùn)練,擴大到通過分類數(shù)據(jù)集,能檢測9000中物體,如果是輸入分類圖片,只計算分類損失,如果是檢測圖片,計算全部損失,里面具體計算細節(jié)沒琢磨!
V3:網(wǎng)絡(luò)引入了殘差結(jié)構(gòu)。學(xué)習(xí)了FPN和SSD,多尺度預(yù)測,三種尺度特征圖進行特征融合,并在三種尺度的特征圖上預(yù)測,小特征圖檢測大物體,大特征圖檢測小物體。主要是對網(wǎng)絡(luò)結(jié)構(gòu)的改進。
目標(biāo)檢測中訓(xùn)練的問題,實際操作可能效果更好些。
樣本不平衡,如果貓的圖片比狗的圖片多,那模型會傾向于預(yù)測貓。
如果預(yù)測的正樣本過多,負樣本太少,比如設(shè)置的背景圖片少。那么模型可能會把一些只是背景的圖片預(yù)測為目標(biāo)。
faster-rcnn:
兩階段怎么訓(xùn)練的?
特征圖是語義化的縮小的原圖


先提取特征,得到特征圖,一端到RPN得到Proposal框,另一端拿候選框進行預(yù)測。
mosaic圖像增強:把四張圖片拼接在一起輸入網(wǎng)絡(luò)進行訓(xùn)練

增加數(shù)據(jù)多樣性,增加目標(biāo)個數(shù),BN能一次性統(tǒng)計多張圖片的參數(shù)。
SPP模塊:為啥效果好這么多?

IOU: loss為0的時候,就沒法分辨預(yù)測框隨便沒重合,但是一個離得近,一個離得遠,就無法分辨了

IOU GIOU DIOU CIOU:




focal loss:應(yīng)對正負樣本極不平衡的情況


可不可以正樣本不用focal loss,簡單易分的負樣本計算focal loss?


retinanet:采用resnet+fpn+focal loss

不同尺度怎么權(quán)值共享?兩個端怎么訓(xùn)練?
注意力機制:(李宏毅的課程)

a是輸入的一組向量,Q矩陣乘a,得到query,理解為a的語義。K矩陣乘a,得到key,理解為關(guān)聯(lián)的信息。V矩陣乘a,得到value,理解為傳出的信息。然后Q和K求內(nèi)積,在softmax歸一化,得到注意力的分數(shù),a之間彼此是否相關(guān)。最后到A的分數(shù)乘V,得到傳出的B,輸出的向量。




多頭注意力:也許一組Q和K不足以表現(xiàn)輸入之間的相關(guān)性,所以引入了多頭。q乘以兩個矩陣,生成qi1,qi2,k和v也是如此。然后第一組用注意力計算出bi1,第二組計算出bi2,兩個bi拼接,矩陣乘,得到輸出b。增加一些參數(shù),融合了幾組的相關(guān)性。
位置編碼:注意力機制對于輸入a1,a2,a3.。。等等而言,計算是平行平等的,不考慮位置信息,所以注意力能不能加入位置信息,現(xiàn)在還在研究中!





seq2seq: encoder-decoder模型




seq2seq模型可以加上attention,attention表現(xiàn)了對隱向量h的各個部位的注意程度,可以用2維圖進行呈現(xiàn)。可以用于NLP,圖像的看圖說話,取代CNN等等。
有雙向,偷窺(skip connection)等等騷操作。

Transformer:復(fù)雜版的seq2seq,self attention比lstm好是可以平行化運行,速度更快。transformer的encoder有很多block,每個block輸入一排向量,先做self attention,再做FC,輸出一排向量。中間可能引入殘差結(jié)構(gòu),做layer normalization。還加上positional encoding,位置信息。把這樣的block重復(fù)很多次。

autoregressive:出一個,進一個,速度慢,精度高

nonautoregressive:一次性產(chǎn)生,速度快,精度較低,這也是個待研究的大坑




transformer訓(xùn)練部分是大坑,copy mechanism,guided attention,beam search,損失函數(shù)不用cross entropy,訓(xùn)練的時候加噪音,很多技巧和大坑
Bert: 預(yù)訓(xùn)練模型,transformer的encoder部分,感覺和VGG啥的差不多,加上自己改的部分,然后fine tune

用預(yù)訓(xùn)練的模型加上各種定制的方式,來達成任務(wù)



一般fine tune下整個模型效果會更好

這個方法也許可以一試
Bert怎么訓(xùn)練的,self supervised training。因為資料庫太大,不可能supervised training。

Bert很神奇,不僅可以學(xué)到上下文語義的信息,還可以學(xué)到各種想不到的信息。但Bert很吃訓(xùn)練集,需要訓(xùn)練集夠大。



圖像的自監(jiān)督學(xué)習(xí):


Gan:用于比較有創(chuàng)造性的任務(wù)。一組向量輸入generator,generator輸出一張圖片。然后把這張圖片輸入discriminator,discriminator輸出一個分數(shù),真圖或假圖的概率。訓(xùn)練時先generator隨機輸出假圖,然后可以和真圖作為二分類任務(wù)給discriminator訓(xùn)練。固定住discriminator,把generator和discriminator連接成一個網(wǎng)絡(luò),梯度上升訓(xùn)練generator。然后反復(fù)迭代。
問題點:神經(jīng)網(wǎng)絡(luò)參數(shù)很多,相當(dāng)于一個很高維的系統(tǒng),而圖像是一個低維的系統(tǒng),所以discriminator高維對低維判斷真圖和假圖很容易。所以需要數(shù)據(jù)集很多,而且假圖的進步不容易量化,因為對discriminator而言都是假的,loss都是一樣的。不好訓(xùn)練,難以量化divergence
為什么要有g(shù)enerator?為啥要用一組分布的向量?




內(nèi)插能不能做圖片融合?感覺挺好玩的





gan的訓(xùn)練坑很多啊,一般實操上discriminator訓(xùn)練幾次,主要都是訓(xùn)練generator
gan訓(xùn)練比較難,特別是生成文本更難,為啥難?
gan容易出現(xiàn)的問題:


評估gan的性能好不好,1是看生成圖質(zhì)量好不好,把生成圖扔到分類網(wǎng)絡(luò)去,分類網(wǎng)絡(luò)能給出一個分類很清晰的判斷,某class分數(shù)很高,很明確知道是啥。2是看大量生成圖的多樣性,把大量生成圖扔到分類網(wǎng)絡(luò)去,分成的類別要足夠多。還要看gan的生成圖是不是復(fù)制真實圖,所以評估Gan還真不好量化。



感覺坑很多,反向生成器網(wǎng)絡(luò)咋做?人臉間相似度如何計算?等等

auto encoder:自監(jiān)督學(xué)習(xí)的方法,訓(xùn)練的模型可以用于下游任務(wù)。和cycle gan有點像,圖片輸進encoder,變成低維的向量,然后通過decoder,返回圖片,令原圖和生成圖距離越小越好。怎么計算兩張圖相似?





anomaly detection:異常檢測的分類






決策樹,隨機森林?
深度學(xué)習(xí)的可解釋性;




強化學(xué)習(xí):相比于監(jiān)督學(xué)習(xí),相比標(biāo)注資料困難,也不好評判標(biāo)簽好壞的情況,適合強化學(xué)習(xí)。和gan有點像,actor根據(jù)環(huán)境產(chǎn)生動作,然后critic根據(jù)環(huán)境和動作給出獎勵,進行調(diào)整。



















可以先用IRL讓機器學(xué)出一個reward function。為了讓機器做的比人更好,可以在這個reward function上加一些限制,比如速度更快,reward更多。從而讓機器更強。