導讀
正值秋招進行時,本文收集了深度學習&計算機視覺方向的相關面試題,涵蓋反卷積、神經網絡、目標檢測等多個方面,內容非常全面。
1.什么是反卷積?
反卷積也稱為轉置卷積,如果用矩陣乘法實現卷積操作,將卷積核平鋪為矩陣,則轉置卷積在正向計算時左乘這個矩陣的轉置WT,在反向傳播時左乘W,與卷積操作剛好相反,需要注意的是,反卷積不是卷積的逆運算。
一般的卷積運算可以看成是一個其中非零元素為權重的稀疏矩陣C與輸入的圖像進行矩陣相乘,反向傳播時的運算實質為C的轉置與loss對輸出y的導數矩陣的矩陣相乘。
逆卷積的運算過程與卷積正好相反,是正向傳播時做成C的轉置,反向傳播時左乘C
2.反卷積有哪些用途?
實現上采樣;近似重構輸入圖像,卷積層可視化。
3.解釋神經網絡的萬能逼近定理
只要激活函數選擇得當,神經元的數量足夠,至少有一個隱含層的神經網絡可以逼近閉區間上任意一個連續函數到任意指定的精度。
4.神經網絡是生成模型還是判別模型?
判別模型,直接輸出類別標簽,或者輸出類后驗概率p(y|x)
5.Batch Normalization 和 Group Normalization有何區別?
BN是在 batch這個維度上進行歸一化,GN是計算channel方向每個group的均值方差.
6.模型壓縮的主要方法有哪些?
從模型結構上優化:模型剪枝、模型蒸餾、automl直接學習出簡單的結構
模型參數量化將FP32的數值精度量化到FP16、INT8、二值網絡、三值網絡等。
7.目標檢測中IOU是如何計算的?
檢測結果與 Ground Truth 的交集比上它們的并集,即為檢測的準確率 IoU
8.使用深度卷積網絡做圖像分類如果訓練一個擁有1000萬個類的模型會碰到什么問題?
提示:內存/顯存占用;模型收斂速度等
9.深度學習中為什么不用二階導去優化?
Hessian矩陣是n*n, 在高維情況下這個矩陣非常大,計算和存儲都是問題。
10.深度機器學習中的mini-batch的大小對學習效果有何影響?
mini-batch太小會導致收斂變慢,太大容易陷入sharp minima,泛化性不好。
11.dropout的原理
可以把dropout看成是 一種ensemble方法,每次做完dropout相當于從原網絡中找到一個更瘦的網絡。
強迫神經元和其他隨機挑選出來的神經元共同工作,減弱了神經元節點間的聯合適應性,增強泛化能力
使用dropout得到更多的局部簇,同等數據下,簇變多了,因而區分性變大,稀疏性也更大
12.為什么SSD對小目標檢測效果不好:
小目標對應的anchor比較少,其對應的feature map上的pixel難以得到訓練,這也是為什么SSD在augmentation之后精確度上漲(因為crop之后小目標就變為大目標)
要檢測小目標需要足夠大的feature map來提供精確特征,同時也需要足夠的語義信息來與背景作區分
13.空洞卷積及其優缺點
pooling操作雖然能增大感受野,但是會丟失一些信息。空洞卷積在卷積核中插入權重為0的值,因此每次卷積中會skip掉一些像素點;
空洞卷積增大了卷積輸出每個點的感受野,并且不像pooling會丟失信息,在圖像需要全局信息或者需要較長sequence依賴的語音序列問題上有著較廣泛的應用。
14.Fast RCNN中位置損失為何使用Smooth L1:
表達式為:
作者這樣設置的目的是想讓loss對于離群點更加魯棒,相比于L2損失函數,其對離群點、異常值(outlier)不敏感,可控制梯度的量級使訓練時不容易跑飛。
15.Batch Normalization
使用BN的原因是網絡訓練中每一層不斷改變的參數會導致后續每一層輸入的分布發生變化,而學習的過程又要使每一層去適應輸入的分布,因此不得不降低網絡的學習率,并且要小心得初始化(internal covariant shift)
如果僅通過歸一化方法使得數據具有零均值和單位方差,則會降低層的表達能力(如使用Sigmoid函數時,只使用線性區域)
BN的具體過程(注意第三個公式中分母要加上epsilon)
注意點:在測試過程中使用的均值和方差已經不是某一個batch的了,而是針對整個數據集而言。因此,在訓練過程中除了正常的前向傳播和反向求導之外,我們還要記錄每一個Batch的均值和方差,以便訓練完成之后按照下式計算整體的均值和方差。
另一個注意點:在arxiv六月份的preprint論文中,有一篇叫做“How Does Batch Normalization Help Optimization?”的文章,里面提到BN起作用的真正原因和改變輸入的分布從而產生穩定性幾乎沒有什么關系,真正的原因是BN使對應優化問題的landscape變得更加平穩,這就保證了更加predictive的梯度以及可以使用更加大的學習率從而使網絡更快收斂,而且不止BN可以產生這種影響,許多正則化技巧都有這種類似影響。
16.超參數搜索方法
網格搜索:在所有候選的參數選擇中,通過循環遍歷,嘗試每一種可能性,表現最好的參數就是最終的結果。
貝葉斯優化:貝葉斯優化其實就是在函數方程不知的情況下根據已有的采樣點預估函數最大值的一個算法。該算法假設函數符合高斯過程(GP)。
隨機搜索:已經發現,簡單地對參數設置進行固定次數的隨機搜索,比在窮舉搜索中的高維空間更有效。這是因為事實證明,一些超參數不通過特征變換的方式把低維空間轉換到高維空間,而在低維空間不可分的數據,到高維空間中線性可分的幾率會高一些。具體方法:核函數,如:高斯核,多項式核等等。
基于梯度:計算相對于超參數的梯度,然后使用梯度下降優化超參數。
17.如何理解卷積、池化等、全連接層等操作
卷積的作用:捕獲圖像相鄰像素的依賴性;起到類似濾波器的作用,得到不同形態的feature map
激活函數的作用:引入非線性因素
池化的作用:減少特征維度大小,使特征更加可控;減少參數個數,從而控制過擬合程度;增加網絡對略微變換后的圖像的魯棒性;達到一種尺度不變性,即無論物體在圖像中哪個方位均可以被檢測到
18.1x1大小的卷積核的作用
通過控制卷積核個數實現升維或者降維,從而減少模型參數
對不同特征進行歸一化操作
用于不同channel上特征的融合
19.常見激活函數特點
sigmoid:輸入值很大時對應的函數值接近1或0,處于函數的飽和區,導致梯度幾乎為0,造成梯度消失問題
Relu:解決梯度消失問題,但是會出現dying relu現象,即訓練過程中,有些神經元實際上已經"死亡“而不再輸出任何數值
Leaky Relu:f = max(αx, x),解決dying relu問題,α的取值較大時比較小時的效果更好。它有一個衍生函數,parametric Leaky Relu,在該函數中α是需要去學習的
ELU:避免dying神經元,并且處處連續,從而加速SGD,但是計算比較復雜
激活函數的選擇順序:ELU>Leaky Relu及其變體>Relu>tanh>sigmoid
20.訓練過程中,若一個模型不收斂,那么是否說明這個模型無效?導致模型不收斂的原因有哪些?
并不能說明這個模型無效,導致模型不收斂的原因可能有數據分類的標注不準確;樣本的信息量太大導致模型不足以fit整個樣本空間;
學習率設置的太大容易產生震蕩,太小會導致不收斂;可能復雜的分類任務用了簡單的模型;數據沒有進行歸一化的操作。
21.深度學習中的不同最優化方式,如SGD,ADAM下列說法中正確的是?
A.在實際場景下,應盡量使用ADAM,避免使用SGD
B.同樣的初始學習率情況下,ADAM的收斂速度總是快于SGD方法
C.相同超參數數量情況下,比起自適應的學習率調整方式,SGD加手動調節通常會取得更好效果
D.同樣的初始學習率情況下,ADAM比SGD容易過擬合
S: C
22.深度學習:凸與非凸的區別
凸:
指的是順著梯度方向走到底就一定是最優解 。
大部分傳統機器學習問題都是凸的。
非凸:
指的是順著梯度方向走到底只能保證是局部最優,不能保證是全局最優。
深度學習以及小部分傳統機器學習問題都是非凸的。
23.googlenet提出的Inception結構優勢有()
A.保證每一層的感受野不變,網絡深度加深,使得網絡的精度更高
B.使得每一層的感受野增大,學習小特征的能力變大
C.有效提取高層語義信息,且對高層語義進行加工,有效提高網絡準確度
D.利用該結構有效減輕網絡的權重
S:AD.
24.深度學習中的激活函數需要具有哪些屬性?()
A.計算簡單
B.非線性
C.具有飽和區
D.幾乎處處可微
S: ABC
relu函數在0處是不可微的。
25.關于神經網絡中經典使用的優化器,以下說法正確的是
A.Adam的收斂速度比RMSprop慢
B.相比于SGD或RMSprop等優化器,Adam的收斂效果是最好的
C.對于輕量級神經網絡,使用Adam比使用RMSprop更合適
D.相比于Adam或RMSprop等優化器,SGD的收斂效果是最好的
S: D
SGD通常訓練時間更長,容易陷入鞍點,但是在好的初始化和學習率調度方案的情況下,結果更可靠。如果在意更快的收斂,并且需要訓練較深較復雜的網絡時,推薦使用學習率自適應的優化方法。
26.以下說法錯誤的是
A.使用ReLU做為激活函數,可有效地防止梯度爆炸
B.使用Sigmoid做為激活函數,較容易出現梯度消失
C.使用Batch Normalization層,可有效的防止梯度爆炸
D.使用參數weight decay,在一程度上可防止模型過擬合
S: C
意思是BN解決的是梯度消失問題?對結果存疑。認為二者皆可防止。
27.以下哪種方法一般不用于在大數據集上訓練DNN:
A.SGD B.FTRL C.RMSProp D.L-BFGS
S: D
L-BFGS(Limited-memory BFGS,內存受限擬牛頓法)方法:所有的數據都會參與訓練,算法融入方差歸一化和均值歸一化。大數據集訓練DNN,容易參數量過大 (牛頓法的進化版本,尋找更好的優化方向,減少迭代輪數)從LBFGS算法的流程來看,其整個的核心的就是如何快速計算一個Hesse的近似:重點一是近似,所以有了LBFGS算法中使用前m個近似下降方向進行迭代的計算過程;重點二是快速,這個體現在不用保存Hesse矩陣上,只需要使用一個保存后的一階導數序列就可以完成,因此不需要大量的存儲,從而節省了計算資源;重點三,是在推導中使用秩二校正構造了一個正定矩陣,即便這個矩陣不是最優的下降方向,但至少可以保證函數下降。
FTRL(Follow-the-regularized-Leader)是一種適用于處理超大規模數據的,含大量稀疏特征的在線學習的常見優化算法,方便實用,而且效果很好,常用于更新在線的CTR預估模型;FTRL在處理帶非光滑正則項(如L1正則)的凸優化問題上表現非常出色,不僅可以通過L1正則控制模型的稀疏度,而且收斂速度快;
28.下列關于深度學習說法錯誤的是
A.LSTM在一定程度上解決了傳統RNN梯度消失或梯度爆炸的問題
B.CNN相比于全連接的優勢之一是模型復雜度低,緩解過擬合
C.只要參數設置合理,深度學習的效果至少應優于隨機算法
D.隨機梯度下降法可以緩解網絡訓練過程中陷入鞍點的問題
S: C.
29.多尺度問題怎么解決?
實際上,現在有很多針對小目標的措施和改良,如下:
最常見的是Upsample來Rezie網絡輸入圖像的大小;
用dilated/astrous等這類特殊的卷積來提高檢測器對分辨率的敏感度;(空洞卷積是針對圖像語義分割問題中下采樣會降低圖像分辨率、丟失信息而提出的一種卷積思路。利用添加空洞擴大感受野,讓原本3 x3的卷積核,在相同參數量和計算量下擁有5x5(dilated rate =2)或者更大的感受野,從而無需下采樣。在保持參數個數不變的情況下增大了卷積核的感受野)
有比較直接的在淺層和深層的Feature Map上直接各自獨立做預測的,這個就是我們常說的尺度問題。
用FPN這種把淺層特征和深層特征融合的,或者最后在預測的時候,用淺層特征和深層特征一起預測;
SNIP(Scale Normalization for Image Pyramids)主要思路:
在訓練和反向傳播更新參數時,只考慮那些在指定的尺度范圍內的目標,由此提出了一種特別的多尺度訓練方法。
-
神經網絡
+關注
關注
42文章
4765瀏覽量
100566 -
計算機視覺
+關注
關注
8文章
1696瀏覽量
45930 -
深度學習
+關注
關注
73文章
5493瀏覽量
120999
原文標題:深度學習&計算機視覺常見的29道面試題及解析
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論