一線大廠的5個經典算法面試題

架構師交流圈 發佈 2021-08-03T08:05:18.667268+00:00

機器學習篇1、機器學習分類舉例按照任務類型可分為:回歸模型:例如預測明天的股價。分類模型:將樣本分為兩類或者多類。結構化學習模型:輸出的不是向量而是其他結構。按照學習理論可分為:監督學習:學習的樣本全部具有標籤,訓練網絡得到一個最優模型。

機器學習篇

1、機器學習分類舉例

按照任務類型可分為:

  • 回歸模型:例如預測明天的股價。
  • 分類模型:將樣本分為兩類或者多類。
  • 結構化學習模型:輸出的不是向量而是其他結構。

按照學習理論可分為:

  • 監督學習:學習的樣本全部具有標籤,訓練網絡得到一個最優模型。
  • 無監督學習:訓練的樣本全部無標籤,例如聚類樣本。
  • 半監督學習:訓練樣本部分有標籤。
  • 強化學習:智能體與環境進行交互獲得獎勵來進行訓練的一種模式,環境不會判斷是否正確,而是會不斷的反饋信號來評價智能體的行為。
  • 遷移學習:運用已經訓練好的模型對新的樣本進行學習,主要是解決問題中樣本過少的問題。


2、什麼是判別式和生成式模型?

判別方法

由數據直接學習決策函數Y=f(X),或者由條件分布機率P(Y|X)作為預測模型為判別模型。

常見的判別模型有線性回歸、boosting、SVM、決策樹、感知機、線性判別分析(LDA)、邏輯斯蒂回歸等算法。

生成方法

由數據學習x和y的聯合機率密度分布函數P(Y,X),然後通過貝葉斯公式求出條件機率分布P(Y|X)作為預測的模型為生成模型。

常見的生成模型有樸素貝葉斯、隱馬爾科夫模型、高斯混合模型、文檔主題生成模型(LDA)等。

舉例

判斷一個動物是魚還是貓,記住貓有四肢就可以判別出哪個是貓,將魚和貓畫出來與動物進行對比,那個像就是那個。


梯度下降法與優化器?

機器學習中大部分為優化問題,而絕大部分優化問題都可以使用梯度下降法處理。

梯度下降法的數學原理是函數沿著梯度方向具有最大變化率,那麼在優化目標函數時沿著負梯度方向去減少函數值,以此達到優化目標。

通過疊代的方式尋找最優參數,最優參數是指是目標函數達到最小值時的參數。

如果目標函數是凸函數,那麼梯度下降的解是全局最優解,不過在一般情況下,梯度下降無法保證全局最優。



3、隨機梯度下降與小批量隨機梯度下降

梯度下降法是使用所有樣本的平均損失值來更新參數,這樣做可以使得下降更準確,但是對應的是如果數據量過大的話會帶來極為龐大的計算量,因為每次參數更新都會遍歷所有數據。

**隨機梯度下降(SGD)**每次使用單個樣本的損失來近似平均損失,但是會導致準確度不高,常常出現偏差,並且導致目標函數收斂不穩定,甚至不收斂。

小批量隨機梯度下降就是為了降低隨機梯度的方差,使得模型疊代更加非穩定。通過批量訓練還有個優點就是利用高度優化的矩陣運算以及並行計算框架。


4、動量算法

動量方法有點類似於二階梯度算法,從形式上來看,動量算法引入了變量v充當速度,以及超參數a,a一般取0.5,0.9,0.99,分別表示2倍,10倍,100倍。

動量算法是為了解決鞍點問題,也可以用於SGD加速,特別是針對高曲率、小幅度但是方向一致的梯度對象。

和物理的近似,一個小球如果沒有慣性,從山上落下只要到達平緩地區就會立即停下,然而也有可能是山上的平地,所以動量模型就相當於增加了慣性,離開平緩的梯度部分。

隨機梯度下降法每次更新的步長只是梯度乘以學習率;而動量算法的步長還取決於歷史梯度序列的大小和排列;當若干連續的梯度方向相同時,步長會被不斷增大。


5、NAG算法(Nesterov動量)

NAG是對參數施加當前速度後才進行梯度計算的。這個設計使得算法有了對前方環境預判的能力,換句話講,NAG算法相當於在標準動量方法中添加一個修正因子,並且在計算參數的梯度時,在損失函數中減去了動量項。

關鍵字: