機器學(xué)習(xí)常見面試問題及答案匯總

一些常見的機器學(xué)習(xí)面試題(不定時更新)。

  1. 激活函數(shù)的作用?
    激活函數(shù)為神經(jīng)網(wǎng)絡(luò)提供了非線性。如果不使用激活函數(shù),每一層的輸入都相當(dāng)于是上一層輸入的線性組合,無論網(wǎng)絡(luò)有多少層,最終都能寫成只有一層的線性組合。激活函數(shù)作為非線性函數(shù),使神經(jīng)網(wǎng)絡(luò)能夠逼近任意一個函數(shù),提高了網(wǎng)絡(luò)的近似能力。

  2. 常見的激活函數(shù)?

  • sigmoid:
    f_{\sigma}(x)=\frac{1}{1+e^{-x}}
    sigmoid與神經(jīng)元的功能類似,并且可微,但缺點就是在輸入值特別大或者特別小時,對應(yīng)的梯度會接近于0,會導(dǎo)致梯度爆炸;不是關(guān)于原點對稱的,會導(dǎo)致在訓(xùn)練過程中輸入的分布發(fā)生變化。
  • tanh:
    f_{tanh(x)}=2f_{\sigma}(2x)-1
    tanh解決了關(guān)于原點對稱的問題,但是梯度爆炸的問題依舊存在。
  • ReLU:
    f(x)=max(0,x)
    ReLU很好的解決了梯度爆炸的問題,收斂速度更快,但是不關(guān)于原點對稱,并且在負(fù)半部分輸出會一直為0,導(dǎo)致神經(jīng)元死亡。
    -Leaky ReLU
    在負(fù)數(shù)部分使用了一個斜率很小的線性函數(shù),解決了dead ReLU的問題。
  1. 激活函數(shù)有什么性質(zhì)?
  • 非線性,為神經(jīng)網(wǎng)絡(luò)提供非線性映射;
  • 可微性,梯度傳播;
  • 單調(diào)性,保證萬能逼近定理;
  • 輸出值有范圍
  1. softmax函數(shù)是做什么的?
    讓多分類的神將網(wǎng)絡(luò)輸成為一個和為1的概率分布。
    \sigma(z)_j = \frac{e^{z_j}}{\sum_{k} e^{z_k}}

  2. 反向傳播是什么?
    信息通過網(wǎng)絡(luò)從輸入流行輸出被稱為前向傳播。訓(xùn)練中,前向傳播會產(chǎn)生一個代價函數(shù)。反向傳播算法允許代價函數(shù)的信息通過網(wǎng)絡(luò)向后流動,一邊計算梯度。梯度下降使用該梯度進(jìn)行學(xué)習(xí)。反向傳播算法可以由計算圖來描述。計算圖中每一個節(jié)點都表示變量,包括標(biāo)量,向量,矩陣等。如果y是由一個操作計算在x上得到的,就畫一條從x到y(tǒng)的有向邊,上面標(biāo)著操作。

  3. 靜態(tài)圖和動態(tài)圖的區(qū)別?
    神經(jīng)網(wǎng)絡(luò)框架分為靜態(tài)圖框架和動態(tài)圖框架。Tensorfolw使用靜態(tài)圖,每次運行之前都要先定義好計算圖,,再把具體的數(shù)字放入其中,靜態(tài)圖運行時不需要重新構(gòu)建計算圖,所以運算更快。Pytorch是動態(tài)圖,每次都會重新構(gòu)建一個新的計算圖。動態(tài)圖比較直觀,方便debug,但是效率相對的不高。動態(tài)圖中只有葉子節(jié)點的梯度會被保留下來,使用.retain_grad()可以保留任意非葉子節(jié)點的梯度。

  4. 什么是梯度下降?
    梯度下降是一種優(yōu)化算法,目的是找到函數(shù)的局部的極值,如果要找的是局部最小值,需要向函數(shù)當(dāng)前點的梯度的反方向上以一定步長進(jìn)行迭代探索;如果要找到是最大值,則是以梯度方向探索。迭代的公式為:\theta_{i} = \theta_{i-1} - \alpha \frac{\partial}{\partial \theta_i} f(\theta)
    ,其中\alpha是學(xué)習(xí)率,\theta 參數(shù),f是要求極小值的函數(shù)。

  5. 梯度下降的方法?

  • BGD:每個迭代計算整個數(shù)據(jù)集的所有樣本的梯度
  • SGD:每次迭代只計算一個樣本的梯度
  • min-batch GD: 每次迭代計算一個batch的樣本的梯度
  • momentum:在SGD的基礎(chǔ)上加上了一個動量以減小震蕩。
  • ...
  1. 什么是梯度消失和梯度爆炸?解決梯度消失和梯度爆炸的方案都有哪些?
    在神經(jīng)網(wǎng)絡(luò)里,隨著層數(shù)的增多,梯度的值也在不斷累積。如果梯度大于1,層數(shù)增多的時候,最終的求出的梯度更新將以指數(shù)形式增加,即發(fā)生梯度爆炸,如果小于1,那么隨著層數(shù)增多,求出的梯度更新信息將會以指數(shù)形式衰減,即發(fā)生了梯度消失。
    解決梯度爆炸可以使用正則化,對權(quán)重進(jìn)行正則化限制過擬合,防止梯度爆炸。
    使用ReLU作為激活函數(shù),也可以減少梯度爆炸、梯度消失的問題。
    還有一個是使用batch normalization,規(guī)范每一層的輸出,消除權(quán)重放大縮小帶來的影響,進(jìn)而解決梯度爆炸或者消失的問題。
    LSTM使用長時記憶,解決了梯度爆炸的問題。
    面試題—梯度消失于梯度爆炸

  2. 什么過擬合和欠擬合,如何避免?
    過擬合指的是經(jīng)過訓(xùn)練的模型,在訓(xùn)練集上表現(xiàn)得十分出色,但是在測試集上表現(xiàn)得很差的情況??赡艿脑蛴杏?xùn)練數(shù)據(jù)太少,訓(xùn)練次數(shù)太多,模型太過復(fù)雜等,使模型只會“背答案”,面對沒有見過的題型不知所措。
    欠擬合則相反,是因為模型沒有充分訓(xùn)練,以至于對數(shù)據(jù)認(rèn)識不足,在訓(xùn)練集和測試集表現(xiàn)性能都很差。原因可能是模型太簡單,訓(xùn)練次數(shù)太少,數(shù)據(jù)沒有清洗等。
    更多關(guān)于過擬合、欠擬合、恰好擬合的處理方法。

  3. Dropout的作用是什么?
    在前向過程中讓神經(jīng)元以一定的概率被停止工作,可以減少相鄰神經(jīng)元之間的依賴,減少過擬合,提高泛化能力。

  4. 算法分類問題的評價標(biāo)準(zhǔn)有哪些?ROC和AUC分別指是什么, 其中圖坐標(biāo)(橫坐標(biāo)和縱坐標(biāo))的意義是?
    先介紹一下混淆矩陣

    混淆矩陣 (https://blog.csdn.net/quiet_girl/article/details/70830796)

    true postive: 正確分類,真實數(shù)據(jù)為正,預(yù)測為正
    true negetive: 正確分類,真實數(shù)據(jù)為負(fù),樣本為負(fù)
    false positive: 錯誤分類, 真實樣本為負(fù),預(yù)測為正
    false negative: 錯誤分類,真實樣本為正,預(yù)測為負(fù)
    算法分類的指標(biāo)有:
    準(zhǔn)確率 accuracy:正確分類的樣本占所有樣本的比例 ACC = \frac{TP+TN}{TP+TN+FP+FN}
    召回率 recall:預(yù)測為正且正確的樣本占真實樣本的比例 Recall = \frac{TP}{TP+FN}
    精確率 precision:預(yù)測為正且正確的樣本占所有預(yù)測為正的樣本的比例Precision = \frac{TP}{TP+FP}
    f1 score: Precison 和 Recall的結(jié)合f1 = \frac{2*P*R}{P+R}
    ROC曲線:橫軸為false positive rate,縱軸為true positive rate,曲線越貼近左上角,說明表現(xiàn)越好
    AUC:ROC曲線下的面積,越接近1說明越好
    機器學(xué)習(xí):準(zhǔn)確率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲線、PR曲線:https://blog.csdn.net/quiet_girl/article/details/70830796

  5. 常見的循環(huán)神經(jīng)網(wǎng)絡(luò)都有哪些?他們的優(yōu)缺點及應(yīng)用場景?詳細(xì)描述之前其中一種網(wǎng)絡(luò)結(jié)構(gòu)及其推導(dǎo)過程.
    LSTM:長短期記憶模型,在RNN的基礎(chǔ)上加上了遺忘門和記憶單元。
    GRU:門控循環(huán)單元,LSTM 簡化得來的。
    應(yīng)用:文本生成,機器翻譯,語音識別等。

  6. LSTM和GRU的區(qū)別是什么?
    從結(jié)構(gòu)上來說,GRU只有兩個門(update和reset),LSTM有三個門(forget,input,output),GRU直接將hidden state 傳給下一個單元,而LSTM則把hidden state 包裝起來。GRU 參數(shù)更少因此更容易收斂,但是數(shù)據(jù)集很大的情況下,LSTM表達(dá)性能更好。

  7. LSTM為什么能解決梯度爆炸/消失的問題?
    LSTM使用的gate選擇讓一部分的信息通過,gate是由一個sigmoid和一個點乘組成,當(dāng)gate打開時,梯度接近于1,梯度不會消失;梯度也不會超過1,因此不會梯度爆炸。
    https://www.zhihu.com/question/44895610

  8. CNN的平移不變性是什么?
    平移不變性指的是CNN對于同一特征以及平移之后的版本都能輸出相同的結(jié)果,由卷積核池化實現(xiàn)的。卷積核能夠檢測到在任意位置的相同特征。池化操作對應(yīng)的感受野中,如果最大值(對于最大池化)被移動了,但仍在感受野范圍內(nèi),那么池化依舊輸出相同的輸出。

  9. 擴大感受野的方法?
    增加網(wǎng)絡(luò)深度,池化,空洞卷積

  10. 有哪些調(diào)參技巧?
    https://www.notion.so/a30db4067c00479aaa0d71fe1785cb0c#fa2c11ce51d84f25a67323e49f78c704

  11. 目標(biāo)檢測里如何解決前景少背景多的問題?

  • 硬數(shù)據(jù)挖掘
  • 類平衡思路改進(jìn)過的損失函數(shù)
  1. ROIPooling和 ROIAlign的區(qū)別
  • ROIPool的候選區(qū)相對較大
  • ROI采用直接擬合的方式進(jìn)行候選區(qū)域求取
  1. SVM與LR的區(qū)別
    LR:logistic regression是基于概率論的方法,通過極大似然估計得到參數(shù)的值。每個點都會參與決策。
    SVM:最大化間隔,只考慮在分類間隔上的點。SVM可以使用核函數(shù)。

https://bbs.cvmart.net/topics/1699

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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