干货整理!深度学习相关的面试考点
dropout的原理
- 可以把dropout看成是 一種ensemble方法,每次做完dropout相當(dāng)于從原網(wǎng)絡(luò)中找到一個(gè)更瘦的網(wǎng)絡(luò)
- 強(qiáng)迫神經(jīng)元和其他隨機(jī)挑選出來(lái)的神經(jīng)元共同工作,減弱了神經(jīng)元節(jié)點(diǎn)間的聯(lián)合適應(yīng)性,增強(qiáng)泛化能力
- 使用dropout得到更多的局部簇,同等數(shù)據(jù)下,簇變多了,因而區(qū)分性變大,稀疏性也更大
維數(shù)災(zāi)難
- 高維空間訓(xùn)練得到的分類(lèi)器相當(dāng)于低維空間的一個(gè)復(fù)雜非線性分類(lèi)器,這類(lèi)分類(lèi)器容易產(chǎn)生過(guò)擬合
- 如果一直增加維度,原有的數(shù)據(jù)樣本會(huì)越來(lái)越稀疏,要避免過(guò)擬合就需要不斷增加樣本
- 數(shù)據(jù)的稀疏性使得數(shù)據(jù)的分布在空間上是不同的,在高維空間的中心比邊緣區(qū)域具有更大的稀疏性(舉例,正方體和內(nèi)切圓到超立方體和超球面,隨著維度趨于無(wú)窮,超球面體積趨向于0而超立方體體積永遠(yuǎn)是1)
偽標(biāo)簽技術(shù)
- 將test數(shù)據(jù)集中的數(shù)據(jù)加入到train數(shù)據(jù)集中,其對(duì)應(yīng)的標(biāo)簽為基于原有數(shù)據(jù)集訓(xùn)練好的模型預(yù)測(cè)得到的
- 偽標(biāo)簽技術(shù)在一定程度上起到一種正則化的作用。如果訓(xùn)練開(kāi)始就直接使用該技術(shù),則網(wǎng)絡(luò)可能會(huì)有過(guò)擬合風(fēng)險(xiǎn),但是如果經(jīng)過(guò)幾輪訓(xùn)練迭代后(只是用原有訓(xùn)練集數(shù)據(jù))將訓(xùn)練集和未打標(biāo)簽的數(shù)據(jù)一起進(jìn)行訓(xùn)練,則會(huì)提升網(wǎng)絡(luò)的泛化能力
- 操作過(guò)程中一般每個(gè)batch中的1/4到1/3的數(shù)據(jù)為偽標(biāo)簽數(shù)據(jù)
為什么SSD對(duì)小目標(biāo)檢測(cè)效果不好
- 小目標(biāo)對(duì)應(yīng)的anchor比較少,其對(duì)應(yīng)的feature map上的pixel難以得到訓(xùn)練,這也是為什么SSD在augmentation之后精確度上漲(因?yàn)閏rop之后小目標(biāo)就變?yōu)榇竽繕?biāo))
- 要檢測(cè)小目標(biāo)需要足夠大的feature map來(lái)提供精確特征,同時(shí)也需要足夠的語(yǔ)義信息來(lái)與背景作區(qū)分
Xception,ResNext和ShuffleNet
- ResNext中,作者提到cardinality的概念,表示對(duì)通道進(jìn)行分組
- Xception中,卷積對(duì)每一個(gè)通道進(jìn)行單獨(dú)計(jì)算,也就是cardinality等于通道數(shù),如果有N維通道輸出,那么Cardinality就等于N(depth-wise separable convolution)
- group convolution的優(yōu)點(diǎn):卷積操作把所有的通道信息考慮在內(nèi),可能是一種信息浪費(fèi),卷積參數(shù)有限,產(chǎn)生的結(jié)構(gòu)難免會(huì)有一定相關(guān)性,有可能造成過(guò)擬合(類(lèi)似于全連接層)
- ShuffleNet就對(duì)group conv后的通道進(jìn)行交換,得到更加均勻融合后的通道
繪制ROC的標(biāo)準(zhǔn)和快速方法以及ROC對(duì)比PR曲線的優(yōu)勢(shì)
- 標(biāo)準(zhǔn)方法:橫坐標(biāo)為FPR, 縱坐標(biāo)為T(mén)PR, 設(shè)置一個(gè)區(qū)分正負(fù)預(yù)測(cè)結(jié)果的閾值并進(jìn)行動(dòng)態(tài)調(diào)整,從最高得分(實(shí)際上是正無(wú)窮)開(kāi)始逐漸下降,描出每個(gè)閾值對(duì)應(yīng)的點(diǎn)最后連接
- 快速方法:根據(jù)樣本標(biāo)簽統(tǒng)計(jì)出正負(fù)樣本數(shù),將坐標(biāo)軸根據(jù)樣本數(shù)進(jìn)行單位分割,根據(jù)模型預(yù)測(cè)結(jié)果將樣本進(jìn)行排序后,從高到低遍歷樣本,每遇到一個(gè)正樣本就沿縱軸方向繪制一個(gè)單位長(zhǎng)度的曲線,反之則沿橫軸,直到遍歷完成
- PR曲線的橫坐標(biāo)是Recall,縱坐標(biāo)是Precision,相對(duì)于PR曲線來(lái)說(shuō),當(dāng)正負(fù)樣本發(fā)生劇烈變化時(shí),ROC曲線的形狀能夠基本保持不變,而PR曲線的形狀會(huì)發(fā)生劇烈改變
核函數(shù)
- 核函數(shù)并不是一種映射,它只是用來(lái)計(jì)算映射到高維空間后數(shù)據(jù)內(nèi)積的一種方法
- 在低維空間中線性不可分的數(shù)據(jù)集在高維空間中存在線性可分的超平面(這點(diǎn)可以和維數(shù)災(zāi)難中高維空間形成的分類(lèi)器相當(dāng)于低維空間中一個(gè)非常復(fù)雜的非線性分類(lèi)器產(chǎn)生過(guò)擬合聯(lián)系起來(lái)),但在特征空間中仍要計(jì)算內(nèi)積,因此在原計(jì)算式子中代入的不再是x而是φ(x)。計(jì)算核函數(shù)K時(shí)不需要知道具體φ(x)的定義和計(jì)算過(guò)程。核函數(shù)定義為(滿(mǎn)足一定條件)
K(x1, x2) = φ(x1)'φ(x2)
L0、L1和L2范數(shù)
- L0范數(shù):很難優(yōu)化求解(NP難問(wèn)題)
- L1范數(shù):是L0的最優(yōu)凸近似(L1是L0的最緊的凸放松),且具有特征自動(dòng)選擇和使得模型更具解釋性的優(yōu)點(diǎn)
- L2范數(shù):使得權(quán)重接近于0但是不等于0,有利于處理?xiàng)l件數(shù)不好情況下矩陣求逆問(wèn)題(條件數(shù)用來(lái)衡量病態(tài)問(wèn)題的可信度,也就是當(dāng)輸入發(fā)生微小變化的時(shí)候,輸出會(huì)發(fā)生多大變化,即系統(tǒng)對(duì)微小變動(dòng)的敏感度,條件數(shù)小的就是well-conditioned的,大的就是ill-conditioned的),對(duì)于線性回歸來(lái)說(shuō),如果加上L2規(guī)則項(xiàng),原有對(duì)XTX(轉(zhuǎn)置)求逆就變?yōu)榭赡?#xff0c;而目標(biāo)函數(shù)收斂速率的上界實(shí)際上是和矩陣XTX的條件數(shù)有關(guān),XTX的 condition number 越小,上界就越小,也就是收斂速度會(huì)越快;另外從優(yōu)化的角度來(lái)看,加入規(guī)則項(xiàng)實(shí)際上是將目標(biāo)函數(shù)變成λ強(qiáng)凸,這樣可以保證函數(shù)在任意一點(diǎn)都存在一個(gè)非常漂亮的二次函數(shù)下界,從而能通過(guò)梯度更快找到近似解。總結(jié)就是:L2范數(shù)不但可以防止過(guò)擬合,還可以讓我們的優(yōu)化求解變得穩(wěn)定和快速。
逆卷積(或者叫轉(zhuǎn)置卷積)的實(shí)質(zhì):
- 一般的卷積運(yùn)算可以看成是一個(gè)其中非零元素為權(quán)重的稀疏矩陣C與輸入的圖像進(jìn)行矩陣相乘,反向傳播時(shí)的運(yùn)算實(shí)質(zhì)為C的轉(zhuǎn)置與loss對(duì)輸出y的導(dǎo)數(shù)矩陣的矩陣相乘
- 逆卷積的運(yùn)算過(guò)程與卷積正好相反,是正向傳播時(shí)做成C的轉(zhuǎn)置,反向傳播時(shí)左成C
空洞卷積及其優(yōu)點(diǎn)
- pooling操作雖然能增大感受野,但是會(huì)丟失一些信息。空洞卷積在卷積核中插入權(quán)重為0的值,因此每次卷積中會(huì)skip掉一些像素點(diǎn)
- 空洞卷積增大了卷積輸出每個(gè)點(diǎn)的感受野,并且不像pooling會(huì)丟失信息,在圖像需要全局信息或者需要較長(zhǎng)sequence依賴(lài)的語(yǔ)音序列問(wèn)題上有著較廣泛的應(yīng)用
Fast RCNN中位置損失為何使用Smooth L1
- 表達(dá)式為:
- 作者這樣設(shè)置的目的是想讓loss對(duì)于離群點(diǎn)更加魯棒,相比于L2損失函數(shù),其對(duì)離群點(diǎn)、異常值(outlier)不敏感,可控制梯度的量級(jí)使訓(xùn)練時(shí)不容易跑飛
Batch Normalization
- 使用BN的原因是網(wǎng)絡(luò)訓(xùn)練中每一層不斷改變的參數(shù)會(huì)導(dǎo)致后續(xù)每一層輸入的分布發(fā)生變化,而學(xué)習(xí)的過(guò)程又要使每一層去適應(yīng)輸入的分布,因此不得不降低網(wǎng)絡(luò)的學(xué)習(xí)率,并且要小心得初始化(internal covariant shift)
- 如果僅通過(guò)歸一化方法使得數(shù)據(jù)具有零均值和單位方差,則會(huì)降低層的表達(dá)能力(如使用Sigmoid函數(shù)時(shí),只使用線性區(qū)域)
- BN的具體過(guò)程(注意第三個(gè)公式中分母要加上epsilon)
- 注意點(diǎn):在測(cè)試過(guò)程中使用的均值和方差已經(jīng)不是某一個(gè)batch的了,而是針對(duì)整個(gè)數(shù)據(jù)集而言。因此,在訓(xùn)練過(guò)程中除了正常的前向傳播和反向求導(dǎo)之外,我們還要記錄每一個(gè)Batch的均值和方差,以便訓(xùn)練完成之后按照下式計(jì)算整體的均值和方差
- 另一個(gè)注意點(diǎn):在arxiv六月份的preprint論文中,有一篇叫做“How Does Batch Normalization Help Optimization?”的文章,里面提到BN起作用的真正原因和改變輸入的分布從而產(chǎn)生穩(wěn)定性幾乎沒(méi)有什么關(guān)系,真正的原因是BN使對(duì)應(yīng)優(yōu)化問(wèn)題的landscape變得更加平穩(wěn),這就保證了更加predictive的梯度以及可以使用更加大的學(xué)習(xí)率從而使網(wǎng)絡(luò)更快收斂,而且不止BN可以產(chǎn)生這種影響,許多正則化技巧都有這種類(lèi)似影響
Dual Path Network
- ResNet結(jié)構(gòu)通過(guò)跨層參數(shù)共享和保留中間特征的方式,有效較低特征冗余度,重復(fù)利用已有特征,但難以利用高層信息再發(fā)掘低層特征
- DenseNet每一層都重新在之前所有層的輸出中重新提取有用信息,可以有效利用高層信息再次發(fā)掘底層新特征,但存在特征冗余
- DPN網(wǎng)絡(luò)可以理解為在ResNeXt的基礎(chǔ)上引入了DenseNet的核心內(nèi)容,使得模型對(duì)特征的利用更加充分
超參數(shù)搜索方法
- 網(wǎng)格搜索:在所有候選的參數(shù)選擇中,通過(guò)循環(huán)遍歷,嘗試每一種可能性,表現(xiàn)最好的參數(shù)就是最終的結(jié)果
- 貝葉斯優(yōu)化:貝葉斯優(yōu)化其實(shí)就是在函數(shù)方程不知的情況下根據(jù)已有的采樣點(diǎn)預(yù)估函數(shù)最大值的一個(gè)算法。該算法假設(shè)函數(shù)符合高斯過(guò)程(GP)
- 隨機(jī)搜索:已經(jīng)發(fā)現(xiàn),簡(jiǎn)單地對(duì)參數(shù)設(shè)置進(jìn)行固定次數(shù)的隨機(jī)搜索,比在窮舉搜索中的高維空間更有效。這是因?yàn)槭聦?shí)證明,一些超參數(shù)不通過(guò)特征變換的方式把低維空間轉(zhuǎn)換到高維空間,而在低維空間不可分的數(shù)據(jù),到高維空間中線性可分的幾率會(huì)高一些。具體方法:核函數(shù),如:高斯核,多項(xiàng)式核等等。
- 基于梯度:計(jì)算相對(duì)于超參數(shù)的梯度,然后使用梯度下降優(yōu)化超參數(shù)。
LR如何解決低維不可分問(wèn)題
- 通過(guò)特征變換的方式把低維空間轉(zhuǎn)換到高維空間,而在低維空間不可分的數(shù)據(jù),到高維空間中線性可分的幾率會(huì)高一些。具體方法:核函數(shù),如:高斯核,多項(xiàng)式核等等
Boosting和Bagging
- Boosting主要思想是將一族弱學(xué)習(xí)器提升為強(qiáng)學(xué)習(xí)器的方法,具體原理為:先從初始訓(xùn)練集訓(xùn)練出一個(gè)基學(xué)習(xí)器,再根據(jù)基學(xué)習(xí)器的表現(xiàn)對(duì)訓(xùn)練樣本分布進(jìn)行調(diào)整,來(lái)訓(xùn)練下一個(gè)基學(xué)習(xí)器,如此重復(fù)進(jìn)行直至學(xué)習(xí)器數(shù)目達(dá)到了事先要求,最終進(jìn)行學(xué)習(xí)器的加權(quán)結(jié)合
- Bagging是并行式集成學(xué)習(xí)方法最著名的代表,具體做法是對(duì)樣本進(jìn)行有放回的采樣,然后基于每個(gè)采樣訓(xùn)練集得到一個(gè)基學(xué)習(xí)器,再將它們進(jìn)行組合。在預(yù)測(cè)時(shí),對(duì)于分類(lèi)任務(wù)通常使用簡(jiǎn)單投票法,對(duì)回歸任務(wù)使用簡(jiǎn)單平均法
梯度下降和牛頓法的區(qū)別
- 梯度下降公式如下
- 牛頓法公式如下,其中H為海塞矩陣,其實(shí)就是目標(biāo)函數(shù)對(duì)參數(shù)θ的二階導(dǎo)數(shù)。只適用于Hessian矩陣是正定的情況
- 牛頓法:二階優(yōu)化,收斂速度較快,需要更新一個(gè)二階矩陣(計(jì)算代價(jià)大),對(duì)初始值有一定要要求,在非凸優(yōu)化過(guò)程中容易陷入鞍點(diǎn)。
- 梯度下降法:一階優(yōu)化,收斂速度較慢,容易逃離鞍點(diǎn),優(yōu)化過(guò)程中需要進(jìn)行步長(zhǎng)調(diào)整
DenseNet的要點(diǎn)
- 由于前后層之間的Identity function,有效解決了梯度消失問(wèn)題,并且強(qiáng)化了特征的重用和傳播
- 相比ResNet輸出通過(guò)相加的方式結(jié)合從而阻礙信息的傳播,DN通過(guò)串聯(lián)方式結(jié)合
- 串聯(lián)要求特征圖大小一致,故把pooling操作放在transition layer中
- 為防止靠后的串聯(lián)層輸入通道過(guò)多,引入bottleneck layer,即1x1卷積。文中把引入bottleneck layer的網(wǎng)絡(luò)成為DenseNet-B
- 在transition layer中進(jìn)一步壓縮通道個(gè)數(shù)的網(wǎng)絡(luò)成為DN-C(輸入m個(gè)通道,則輸出θm個(gè)通道,0<θ≤1)。同時(shí)包含bottleneck layer的和壓縮過(guò)程的網(wǎng)絡(luò)稱(chēng)為DN-BC
常見(jiàn)激活函數(shù)特點(diǎn)
- sigmoid:輸入值很大時(shí)對(duì)應(yīng)的函數(shù)值接近1或0,處于函數(shù)的飽和區(qū),導(dǎo)致梯度幾乎為0,造成梯度消失問(wèn)題
- Relu:解決梯度消失問(wèn)題,但是會(huì)出現(xiàn)dying relu現(xiàn)象,即訓(xùn)練過(guò)程中,有些神經(jīng)元實(shí)際上已經(jīng)"死亡“而不再輸出任何數(shù)值
- Leaky Relu:f = max(αx, x),解決dying relu問(wèn)題,α的取值較大時(shí)比較小時(shí)的效果更好。它有一個(gè)衍生函數(shù),parametric Leaky Relu,在該函數(shù)中α是需要去學(xué)習(xí)的
- ELU:避免dying神經(jīng)元,并且處處連續(xù),從而加速SGD,但是計(jì)算比較復(fù)雜
- 激活函數(shù)的選擇順序:ELU>Leaky Relu及其變體>Relu>tanh>sigmoid
Softmax交叉熵?fù)p失
使用交叉熵?fù)p失的原因是它求導(dǎo)結(jié)果簡(jiǎn)單,易于計(jì)算,最后結(jié)果中Softmax損失函數(shù)對(duì)應(yīng)于每一項(xiàng)概率的偏導(dǎo)即為通過(guò)Softmax計(jì)算出的概率向量中對(duì)應(yīng)真正結(jié)果的那一維減1。比如通過(guò)若干層計(jì)算,最后得到某個(gè)訓(xùn)練樣本對(duì)應(yīng)的分類(lèi)得分為[1, 5, 3],那么通過(guò)Softmax計(jì)算得到概率分別為[0.015, 0.886, 0.117],假設(shè)樣本正確的分類(lèi)為第二類(lèi),則對(duì)應(yīng)每項(xiàng)的偏導(dǎo)為[0.015, 0.886-1, 0.117],根據(jù)這個(gè)向量就可以進(jìn)行反向傳播了
mean pooling和max pooling的反向傳播
主要原則是需要保證傳遞的loss(或者梯度)總和不變。
mean pooling的前向傳播就是把一個(gè)patch中的值求取平均來(lái)做pooling,那么反向傳播的過(guò)程也就是把某個(gè)元素的梯度等分為n份分配給前一層,這樣就保證池化前后的梯度(殘差)之和保持不變
max pooling的前向傳播是把patch中最大的值傳遞給后一層,而其他像素的值直接被舍棄掉。那么反向傳播也就是把梯度直接傳給前一層某一個(gè)像素,而其他像素不接受梯度,也就是為0。max pooling操作和mean pooling操作不同點(diǎn)在于需要記錄下池化操作時(shí)到底哪個(gè)像素的值是最大,也就是max id,這個(gè)變量就是記錄最大值所在位置的,因?yàn)樵诜聪騻鞑ブ幸玫?/p>
如何理解卷積、池化等、全連接層等操作
- 卷積的作用:捕獲圖像相鄰像素的依賴(lài)性;起到類(lèi)似濾波器的作用,得到不同形態(tài)的feature map
- 激活函數(shù)的作用:引入非線性因素,
- 池化的作用:減少特征維度大小,使特征更加可控;減少參數(shù)個(gè)數(shù),從而控制過(guò)擬合程度;增加網(wǎng)絡(luò)對(duì)略微變換后的圖像的魯棒性;達(dá)到一種尺度不變性,即無(wú)論物體在圖像中哪個(gè)方位均可以被檢測(cè)到
1x1大小的卷積核的作用
- 通過(guò)控制卷積核個(gè)數(shù)實(shí)現(xiàn)升維或者降維,從而減少模型參數(shù)
- 對(duì)不同特征進(jìn)行歸一化操作
- 用于不同channel上特征的融合
以下網(wǎng)址是一些我覺(jué)得非常贊的文章,以目標(biāo)檢測(cè)為主
1.關(guān)于Faster RCNN一篇非常精彩的博文解說(shuō),來(lái)自troy labs團(tuán)隊(duì):
- tryolabs.com/blog/2018/
2.關(guān)于one-shot目標(biāo)檢測(cè)原理一篇非常精彩的綜述博文(不過(guò)文章真的很長(zhǎng)很長(zhǎng)...................)
- machinethink.net/blog/o
3.關(guān)于目標(biāo)檢測(cè)的幾篇博文(來(lái)自Medium一位我很喜歡的大叔,名字叫
Jonathan Hui,目測(cè)應(yīng)該是華人,目前有1.6k的followers)
- Region based類(lèi)型:medium.com/@jonathan_hu
- one-shot類(lèi)型:medium.com/@jonathan_hu
- YOLO各個(gè)版本:medium.com/@jonathan_hu
4.關(guān)于YOLO的一份PPT,解說(shuō)非常生動(dòng)形象(不過(guò)是針對(duì)v1老版本的)
總結(jié)
以上是生活随笔為你收集整理的干货整理!深度学习相关的面试考点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 全网最全数据分析师干货-python篇
- 下一篇: 机器学习面试中常考的知识点,附代码实现(