算法工程師 面試題與解答

題目來源:

作者:xfcherish
鏈接:https://www.nowcoder.com/discuss/65323?type=0&order=0&pos=50&page=1

如果本文有什麼錯誤,歡迎指出,感激不盡!!!

<1> 邏輯迴歸和線性迴歸對比有什麼優點?

可以用於分類任務,速度快,能容易地更新模型吸收新的數據。

<2> 邏輯迴歸可以處理非線性問題嗎?

不可以,僅能用於線性問題。只有當目標和特徵是線性關係時,才能用邏輯迴歸。在應用邏輯迴歸時注意兩點:一是當知道模型是非線性時,不適用邏輯迴歸;二是當使用邏輯迴歸時,應注意選擇和目標爲線性關係的特徵。

<3> 分類問題有哪些評價指標?每種的適用場景。

https://www.cnblogs.com/zhaokui/p/ml-metric.html

<4> 講一下正則化,L1和L2正則化各自的特點和適用場景。

深度學習可能存在過擬合問題——高方差,有兩個解決方法,一個是正則化,另一個是準備更多的數據,這是非常可靠的方法,但你可能無法時時刻刻準備足夠多的訓練數據或者獲取更多數據的成本很高,但正則化通常有助於避免過擬合或減少你的網絡誤差。

2. L1和L2的異同點

相同點:都用於避免過擬合

不同點:L1可以讓一部分特徵的係數縮小到0,從而間接實現特徵選擇。所以L1適用於特徵之間有關聯的情況。

              L2讓所有特徵的係數都縮小,但是不會減爲0,它會使優化求解穩定快速。所以L2適用於特徵之間沒有關聯的情況

<5> 講一下常用的損失函數以及各自的適用場景。

交叉熵:二分類

均值方差:迴歸問題

softmax:多分類

sigmoid:二分類

0-1損失函數:二分類

絕對值損失:迴歸問題

絕對值損失函數

<6> 講一下決策樹和隨機森林

<7> 講一下GBDT的細節,寫出GBDT的目標函數。 GBDT和Adaboost的區別與聯繫

<8> 手推softmax loss公式

<9> 講一下SVM, SVM與LR有什麼聯繫。

<10>講一下PCA的步驟。PCA和SVD的區別和聯繫

<11> 講一下ensemble

<12> 偏差和方差的區別。ensemble的方法中哪些是降低偏差,哪些是降低方差?

...... 這部分問得太瑣碎了,我能記起來的問題就這麼多了。我的感覺,這部分問題大多數不是問得很深,所以不至於被問得啞口無言,總有得扯;但是要想給出一個特別深刻的回答,還是需要對機器學習的基礎算法瞭解比較透徹。

 

(4)深度學習基礎

這部分的準備,我推薦花書(Bengio的Deep learning)和 @魏秀參 學長的《解析卷積神經網絡-深度學習實踐手冊》

下面是我在面試中被問到過的問題:

<1> 手推BP

<2> 手推RNN和LSTM結構

<3> LSTM中每個gate的作用是什麼,爲什麼跟RNN比起來,LSTM可以防止梯度消失

<4> 講一下pooling的作用, 爲什麼max pooling要更常用?哪些情況下,average pooling比max pooling更合適?

<5> 梯度消失和梯度爆炸的原因是什麼? 有哪些解決方法?

是由於反向傳播過程中鏈式求導梯度累積導致的,網絡層數過多時,當w乘梯度都大於1時產生梯度爆炸,小於1時產生梯度消失;

解決方法:

  1. 預訓練加微調

  2. - 梯度剪切、權重正則(針對梯度爆炸)

  3. - 使用不同的激活函數

  4. - 使用batchnorm

  5. - 使用殘差結構

  6. - 使用LSTM網絡

<6> CNN和RNN的梯度消失是一樣的嗎?

<6> 有哪些防止過擬合的方法?

使用正則化;加bn層;增加數據量;bagging方法;

<7> 講一下激活函數sigmoid,tanh,relu. 各自的優點和適用場景?

sigmoid:可以將特徵映射到0-1之間,可以用於二分類

tanh:將特徵映射到-1到1之間,可以用於大部分網絡之中;

relu:非線性激活函數,可以緩解梯度消失,稀疏特徵,加快收斂速度,可以用於中間卷積網絡層後;

 

<8> relu的負半軸導數都是0,這部分產生的梯度消失怎麼辦?

使用leaky relu,可以在負半軸也有較小的梯度。

<9> batch size對收斂速度的影響。

batch size越大,收斂速度越快,但是需要更多的輪數才能獲得小batch size同等的精度。

<10> 講一下batch normalization

相對於正則化,可以減少使用正則化或者不用;

加快收斂速度;

防止過擬合;

減輕梯度消失;

<11> CNN做卷積運算的複雜度。如果一個CNN網絡的輸入channel數目和卷積核數目都減半,總的計算量變爲原來的多少?

1/8

<12> 講一下AlexNet的具體結構,每層的作用

卷積層提取特徵,

池化層下采樣來獲得更大的感受野,

全連接層整合特徵,爲後續的分類做基礎。

<13> 講一下你怎麼理解dropout,分別從bagging和正則化的角度

直觀上理解:不要依賴於任何一個特徵,因爲該單元的輸入可能隨時被清除,因此該單元通過這種方式傳播下去,併爲單元的四個輸入增加一點權重,通過傳播所有權重,dropout將產生收縮權重的平方範數的效果,和之前講的L2正則化類似;實施dropout的結果實它會壓縮權重,並完成一些預防過擬合的外層正則化;L2對不同權重的衰減是不同的,它取決於激活函數倍增的大小。

<14> data augmentation有哪些技巧?

  • Color Jittering:對顏色的數據增強:圖像亮度、飽和度、對比度變化(此處對色彩抖動的理解不知是否得當);

  • PCA Jittering:首先按照RGB三個顏色通道計算均值和標準差,再在整個訓練集上計算協方差矩陣,進行特徵分解,得到特徵向量和特徵值,用來做PCA Jittering;

  • Random Scale:尺度變換;

  • Random Crop:採用隨機圖像差值方式,對圖像進行裁剪、縮放;包括Scale Jittering方法(VGG及ResNet模型使用)或者尺度和長寬比增強變換;

  • Horizontal/Vertical Flip:水平/垂直翻轉;

  • Shift:平移變換;

  • Rotation/Reflection:旋轉/仿射變換;

  • Noise:高斯噪聲、模糊處理;

  • Label Shuffle:類別不平衡數據的增廣;

<15> 講一下你瞭解的優化方法,sgd, momentum, rmsprop, adam的區別和聯繫

https://blog.csdn.net/u012151283/article/details/78154917

https://blog.csdn.net/u010089444/article/details/76725843

 

<16> 如果訓練的神經網絡不收斂,可能有哪些原因?

1、沒有對數據進行歸一化

2、忘記檢查輸入和輸出

3、沒有對數據進行預處理

4、沒有對數據正則化

5、使用過大的樣本

6、使用不正確的學習率

7、在輸出層使用錯誤的激活函數

8、網絡中包含壞梯度

9、初始化權重錯誤

10、過深的網絡

11、隱藏單元數量錯誤

12、優化算法不對,一般用adam居多。

13、數據隨機性太強,同時網絡結構太複雜(樣本空間太大,同時樣本數量不夠,網絡函數空間也大)

14、學習率過大。網絡可能快要收斂了,卻忽然在下一個epoch走向了錯誤的方向,最終導致不收斂。

作者:菜鳥瞎編
鏈接:https://www.jianshu.com/p/bbd11ad4e973
 

<17> 說一下你理解的卷積核, 1x1的卷積核有什麼作用?

減少參數,整合特徵通道,升維和降維。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章