文章目錄
- 0、面試情況
- 1、一面
- 1.1、簡歷上的項目介紹了個遍
- 1.2、dbscan原理
- 1.3、為什么梯度的負方向就是損失函數下降最快的方向?
- 1.4、bn原理,為什么bn能解決過擬合,
- 1.5、auc原理,為什么ctr或你的廣告推薦里用auc指標?
- 1.6、auc指標能否評估排序任務?
- 1.7、gauc指標?
- 面試官:我們一般還會用pcoc指標,衡量排序的精準性。
- 1.8、一面coding題(秒了)
- 2、二面
- 2.1、介紹項目
- 2.2、廣告推薦全鏈路介紹
- 2.3、粗排,精排常用模型
- 2.4、像ctr預估里為何要用sigmoid作為輸出(從充分性與必要性展開講講)?
- 2.5、sigmoid作為激活函數有什么問題?
- 2.6、一個好的激活函數應該具備什么優點?
- 2.7、生成式模型與判別式模型區別?
- 2.8、用了DNN做特交叉組合,是否還有必要人工做特征交叉組合?
- 2.9、默寫機器學習公式
- 2.10、防止過擬和的方法?
- 2.11、LN與BN原理,以及各自的適用場景?
- 2.12、邏輯回歸原理?邏輯回歸中的幾率是什么?幾率和概率的區別,如果幾率為4,概率為多少?
- 2.13、隨機森林與GBDT
- 介紹原理,主要區別?
- 誰更注重偏差,誰更注重方差?
- 訓練樣本一樣,誰生成的樹更深一些(更深意味著越容易過擬合)?
0、面試情況
簡歷+八股+手撕coding,八股問的比較細,難度中等
1、一面
1.1、簡歷上的項目介紹了個遍
1.2、dbscan原理
1.3、為什么梯度的負方向就是損失函數下降最快的方向?
答:在每一步迭代中,算法會根據當前位置的梯度方向 (即損失函數在該點處的導數)來更新參數。因為導數表示了函數在該點處的變化率,所以朝著負梯度方向更新參數可以使得損失函數在下一步迭代中減少最快。
1.4、bn原理,為什么bn能解決過擬合,
答:
-
BN的思路并未專門針對過擬合問題而設計,但它的規范化步驟相當于對模型的參數空間引入了約束,間接緩解了過擬合現象,提高了網絡的魯棒性。BN對過擬合的間接作用,可以從參數正則化和數據增廣這兩方面理解。BN每次的mini-batch的數據都不一樣,但是每次的mini-batch的數據都會對moving mean和moving variance產生作用,可以認為是引入了噪聲,這就可以認為是進行了data augmentation,而data augmentation被認為是防止過擬合的一種方法。因此,可以認為用BN可以防止過擬合。
-
先理清2個概念:1、獨立同分布(IID):即假設訓練數據和測試數據是滿足相同分布的。它是通過訓練數據獲得的模型能夠在測試集獲得好的效果的一個基本保障。2、Covariate shift:如果ML系統實例集合<X,Y>中的輸入值X的分布老是變,網絡模型很難穩定的學規律。
所以,之所以深度神經網絡隨著網絡深度加深,訓練越來越困難是因為,對于深度學習這種包含很多隱層的網絡結構,在訓練過程中,因為各層參數不停在變化,所以每個隱層都會面臨covariate shift的問題,也就是在訓練過程中,隱層的輸入分布老是變來變去,這就是所謂的“Internal Covariate Shift(ICS)”,Internal指的是深層網絡的隱層,是發生在網絡內部的事情,而不是covariate shift問題只發生在輸入層。
BatchNorm的基本思想就是能不能讓每個隱層節點的激活輸入分布固定下來呢?這樣就避免了“Internal Covariate Shift”問題了。
所以BN實質上就是在深度神經網絡訓練過程中使得每一層神經網絡的輸入保持相同分布的一種方法。
BN的基本思想其實相當直觀:因為深層神經網絡在做非線性變換前的激活輸入值隨著網絡深度加深或者在訓練過程中,其分布逐漸發生偏移或者變動,之所以訓練收斂慢,一般是整體分布逐漸往非線性函數的取值區間的上下限兩端靠近(對于Sigmoid函數來說,意味著激活輸入值WU+B是大的負值或正值),所以這導致將推到了梯度飽和區,反向傳播時低層神經網絡的梯度消失,這是訓練深層神經網絡收斂越來越慢的本質原因,而BN就是通過一定的規范化手段,把每層神經網絡任意神經元這個輸入值的分布強行拉回到均值為0方差為1的標準正態分布,其實就是把越來越偏的分布強制拉回比較標準的分布,這樣使得激活輸入值落在非線性函數對輸入比較敏感的區域,這樣輸入的小變化就會導致損失函數較大的變化,意思是這樣讓梯度變大,避免梯度消失問題產生,而且梯度變大意味著學習收斂速度快,能大大加快訓練速度。
1.5、auc原理,為什么ctr或你的廣告推薦里用auc指標?
答:因為auc能過在一定程度上評估排序任務的質量
1.6、auc指標能否評估排序任務?
答:
[1]https://blog.csdn.net/qq_42363032/article/details/120070512?spm=1001.2014.3001.5506
[2] https://zhuanlan.zhihu.com/p/462734871
1.7、gauc指標?
面試官:我們一般還會用pcoc指標,衡量排序的精準性。
評估指標:PCOC = pCTR / CTR,由于不同場景真實CTR存在差異,目標是每個場景預測值都盡可能接近真實CTR。
1.8、一面coding題(秒了)
判斷一段字符串是否是回文串,只需根據字母或數字來判斷回文,其他字符跳過。【嗯面試官非常nice,還沒讀完題就給我提示說用這個函數:c.isalnum()。其實我也知道哈哈哈。感謝!非常簡單的一題!】
2、二面
2.1、介紹項目
2.2、廣告推薦全鏈路介紹
2.3、粗排,精排常用模型
2.4、像ctr預估里為何要用sigmoid作為輸出(從充分性與必要性展開講講)?
2.5、sigmoid作為激活函數有什么問題?
2.6、一個好的激活函數應該具備什么優點?
- 1、非線性:一個好的激活函數應該是非線性的,因為神經網絡需要非線性函數來處理非線性問題。如果激活函數是線性的,那么神經網絡就只能處理線性問題。
- 2、可微分:激活函數應該是可微分的,因為神經網絡需要使用梯度下降算法來訓練模型,而梯度下降算法需要計算梯度。如果激活函數不可微分,那么就不能使用梯度下降算法來訓練模型。
- 3、非飽和性:一個好的激活函數應該是非飽和的,因為飽和函數會導致梯度消失或爆炸,從而影響模型的訓練效果。
- 4、單調性:激活函數應該是單調的,因為這樣可以保證輸出隨著輸入的增加或減少而單調遞增或遞減。
- 5、有界性:激活函數應該是有界的,因為這樣可以防止輸出值過大或過小,從而影響模型的穩定性和訓練效果。
- 6、計算簡單:激活函數應該是計算簡單的,因為神經網絡需要進行大量的計算,如果激活函數計算復雜,就會影響模型的性能和訓練效率。
2.7、生成式模型與判別式模型區別?
在機器學習中,對于有監督學習可以將其分為兩類模型:判別式模型和生成式模型。簡單地說,判別式模型是針對條件分布建模,而生成式模型則針對聯合分布進行建模。
2.8、用了DNN做特交叉組合,是否還有必要人工做特征交叉組合?
2.9、默寫機器學習公式
-
1、貝葉斯定理公式
P(A|B) = P(AB)/P(B)
= P(B|A)*P(A)/P(B) -
2、極大似然公式
-
極大似然估計的核心思想是:認為當前發生的事件是概率最大的事件。因此就可以給定的數據集,使得該數據集發生的概率最大來求得模型中的參數。【求對數似然函數最大化,可以通過sgd等優化算法求解】
L(X|w) = ∏_i p(xi|w) 【其中xi為單個樣本】 -
3、交叉熵公式
cl_loss = - ∑_k tk * logyk
2.10、防止過擬和的方法?
2.11、LN與BN原理,以及各自的適用場景?
2.12、邏輯回歸原理?邏輯回歸中的幾率是什么?幾率和概率的區別,如果幾率為4,概率為多少?
- 幾率:更準確的說,成功的幾率,被定義為成功的概率/失敗的概率。明天晴天的概率為80%,非晴天的概率為20%,則幾率為:4=log(0.8/0.4)
- 對數幾率:對幾率取對數。如上,對數幾率為ln4。
- 對數幾率回歸:邏輯回歸又名對數幾率回歸。設我們需要擬合對數幾率:ln(y/(1-y)) = wx+b。對該式子轉化,即可變為邏輯回歸的形式:p(y=1|x)=exp(wx+b)/(1+exp(wx+b))。
2.13、隨機森林與GBDT
介紹原理,主要區別?
- 1、rf:bagging (有放回采樣)。gbdt:boosting
- 2、隨機森林可以由分類樹和回歸樹組成,GBDT只能由回歸樹組成。
- 3、隨機森林的樹可以并行生成,而GBDT只能串行生成,所以隨機森林的訓練速度相對較快。
- 4、隨機森林關注減小模型的方差,GBDT關注減小模型的偏差。
- 5、隨機森林對異常值不敏感,GBDT對異常值非常敏感。
- 6、隨機森林最終的結果是多數投票或簡單平均,而GBDT是加權累計起來。
誰更注重偏差,誰更注重方差?
- 隨機森林關注減小模型的方差,GBDT關注減小模型的偏差。
訓練樣本一樣,誰生成的樹更深一些(更深意味著越容易過擬合)?
答:隨機森林。因為:
- 隨機森林關注減小模型的方差,需要通過生成更深的樹來減少偏差。
- gbdt關注減小模型的偏差,需要通過生成較淺的樹來減少方差,防止過擬合。