不容錯過的12個深度學習面試問題

2020-01-13     AI公園

作者:JP Tech

編譯:ronghuaiyang

導讀

這12個問題是當前面試中最熱門的問題,既是非常基礎的問題,也能看出面試者的水平,具有區分度。無論是面試官還是求職者都可以看看。

這些是我在面試人工智慧工程師職位時經常問的問題。事實上,並不是所有的面試都需要使用所有這些問題,因為這取決於應聘者以前的經驗和項目。通過大量的面試,特別是與學生的面試,我收集了 12 個在深度學習中最熱門的面試問題,今天將在這篇文章中與大家分享。我希望能收到你的許多意見。好了,別再囉嗦了,我們開始吧。

1. 介紹 Batch Normalization 的意義

這是一個非常好的問題,因為它涵蓋了候選人在使用神經網絡模型時需要知道的大部分知識。你可以用不同的方式回答,但需要闡明以下主要觀點:

Batch Normalization 是訓練神經網絡模型的一種有效方法。該方法的目標是將特徵(每層激活後的輸出)歸一化為均值為 0,標準差為 1。所以問題在於非零的均值是如何影響模型訓練的:

  • 首先,可以理解為非零均值是指數據不圍繞 0 值分布,但數據中大多數值大於零或小於零。結合高方差問題,數據變得非常大或非常小。這個問題在訓練層數很多的神經網絡時很常見。特徵沒有在穩定區間內分布(由小到大),這將影響網絡的優化過程。眾所周知,優化神經網絡需要使用導數計算。假設一個簡單的層計算公式是 y = (Wx + b), y 對 w 的導數是:dy = dWx。因此,x 的取值直接影響導數的取值(當然,神經網絡模型中梯度的概念並不是那麼簡單,但從理論上講,x 會影響導數)。因此,如果 x 帶來不穩定的變化,其導數可能太大,也可能太小,導致學習模型不穩定。這也意味著當使用 Batch Normalization 時我們可以在訓練中使用更高的學習率。
  • Batch Normalization 可以避免 x 值經過非線性激活函數後趨於飽和的現象。因此,它確保激活值不會過高或過低。這有助於權重的學習,當不使用時有些權重可能永遠無法進行學習,而用了之後,基本上都可以學習到。這有助於我們減少對參數初始值的依賴。
  • Batch Normalization 也是一種正則化形式,有助於最小化過擬合。使用 Batch Normalization,我們不需要使用太多的 dropput,這是有意義的,因為我們不需要擔心丟失太多的信息,當我們實際使用的時候,仍然建議結合使用這兩種技術。

2. 解釋 bias 和 Variance 之間的權衡關係

什麼是bias?可以理解,bias是當前模型的平均預測與我們需要預測的實際結果之間的差異。一個高 bias 的模型表明它對訓練數據的關注較少。這使得模型過於簡單,在訓練和測試中都沒有達到很好的準確性。這種現象也被稱為欠擬合

Variance 可以簡單理解為模型輸出在一個數據點上的分布。Variance 越大,模型越有可能密切關注訓練數據,而不提供從未遇到過的數據的泛化。因此,該模型在訓練數據集上取得了非常好的結果,但是與測試數據集相比,結果非常差,這就是過擬合的現象。

這兩個概念之間的關係可以從下圖中看出:

在上圖中,圓的中心是一個模型,它完美地預測了精確的值。事實上,你從來沒有發現過這麼好的模型。當我們離圓的中心越來越遠,我們的預測就越來越糟。

我們可以改變模型,這樣我們就可以儘可能地增加落入圓中心的模型猜測的數量。需要在偏差值和方差值之間取得平衡。如果我們的模型過於簡單,參數很少,那麼它可能有高偏差和低方差。

另一方面,如果我們的模型有大量的參數,那麼它就會有高方差和低偏差。這是我們在設計算法時計算模型複雜度的基礎。

3. 假如深度學習模型已經有了 1000 萬個人臉向量,如何通過查詢來找到新的人臉?

這個問題是關於深度學習算法在實踐中的應用,這個問題的關鍵是數據的索引方法。這是將 One Shot learning 應用於人臉識別問題的最後一步,但這一步是在實踐中進行部署的最重要的一步。

基本上,回答這個問題,你應該先描述一下 One Shot learning 來進行人臉識別的方法一般性方法。它可以簡單地理解為將每個人臉轉換成一個向量,而新的人臉識別是尋找與輸入人臉最接近(最相似)的向量。通常,人們會使用 triplet loss 損失函數的深度學習模型來實現這一點。

然而,隨著圖像數量的增加,在每次識別中計算到 1000 萬個向量的距離並不是一個明智的解決方案,這使得系統的速度慢了很多。為了使查詢更加方便,我們需要考慮在實向量空間上索引數據的方法。

這些方法的主要思想是將數據劃分為便於查詢新數據的結構(可能類似於樹結構)。當有新數據可用時,在樹中進行查詢有助於快速找到距離最近的向量。

有好幾種方法可以用於這種目的,比如Locality Sensitive HashingLSHApproximate Nearest NeighborsAnnoy Indexing等等。

4. 對於分類問題,精度指標是否完全可靠?你通常使用哪些度量來評估你的模型?

對於一個類問題,有許多不同的評估方法。在準確性方面,該公式簡單地用正確預測數據點的個數除以總數據。這聽起來很合理,但在現實中,對於不平衡的數據問題,這個數量還不夠顯著。假設我們正在構建一個網絡攻擊的預測模型(假設攻擊請求占請求總數的 1/100000)。

如果模型預測所有請求都是正常的,那麼準確率也達到 99.9999%,而這個數字在分類模型中通常是不可靠的。上面的精度計算通常向我們展示了有多少百分比的數據是正確預測的,但並沒有詳細說明如何對每個類進行分類。相反,我們可以使用混淆矩陣。基本上,混淆矩陣顯示了有多少數據點實際上屬於一個類,並且被預測屬於一個類。其形式如下:

不容錯過的12個深度學習面試問題

除了表示真陽性和假陽性指標對應於定義分類的每個閾值的變化外,我們還有一個 ROC 圖。根據 ROC 曲線,我們可以知道模型是否有效。

理想的 ROC 曲線是最接近左上角的橙色線。真陽性比較高,假陽性比較低。

5. 如何理解反向傳播?解釋其作用機制?


這個問題旨在檢測你對於神經網絡如何工作的知識。你需要講清楚以下幾點:

  • 前向過程(前向計算)是一個幫助模型計算每一層權重的過程,其結果計算將產生一個yp結果。此時將計算損失函數的值,損失函數的值將顯示模型的好壞。如果損失函數不夠好,我們需要找到一種方法來降低損失函數的值。訓練神經網絡本質上是最小化損失函數。損失函數 L (yp, yt)表示yp模型的輸出值與yt數據標籤的實際值的差別程度。
  • 為了降低損失函數的值,我們需要使用導數。反向傳播幫助我們計算網絡每一層的導數。根據每個層上的導數值,優化器(Adam、SGD、AdaDelta…)應用梯度下降更新網絡的權重。
  • 反向傳播使用鏈式規則或導數函數計算每一層從最後一層到第一層的梯度值。

6. 激活函數是什麼意思?激活函數的飽和區間是多少?

激活函數的意義

激活函數的產生是為了打破神經網絡的線性特性。這些函數可以簡單地理解為用一個濾波器來決定信息是否通過神經元。在神經網絡訓練中,激活函數在調節導數斜率中起著重要的作用。一些激活函數,如 sigmoid、fishy 或 ReLU,將在下面幾節中進一步討論。

然而,我們需要理解的是,這些非線性函數的性質使得神經網絡能夠學習比僅僅使用線性函數更複雜的函數的表示。大多數激活函數是連續可微函數。

這些函數是連續函數,也就是說,如果輸入的變量很小且可微(在其定義域內的每一點都有導數),那麼輸出就會有一個小的變化。當然,如上所述,導數的計算是非常重要的,它是決定我們的神經元能否被訓練的決定性因素。提幾個常用的激活函數,如 Sigmoid, Softmax, ReLU。

激活函數的飽和區間

Tanh、Sigmoid、ReLU 等非線性激活函數都有飽和區間。

可以很容易理解的是,觸發函數的飽和範圍是指即使輸入值改變,函數的輸出值也不改變的區間。變化區間存在兩個問題,即在神經網絡的正向傳播中,該層的數值逐漸落入激活函數的飽和區間,將逐漸出現多個相同的輸出。

這將在整個模型中產生相同的數據流。這種現象就是協方差移位現象。第二個問題是,在反向傳播中,導數在飽和區域為零,因此網絡幾乎什麼都學不到。這就是我們需要將值範圍設置為均值為 0 的原因,如 Batch 歸一化一節中所述。

7. 模型的超參數是什麼?它和參數有什麼不同?

模型的參數是什麼?

回到機器學習的本質上來,關於機器學習我們需要一個數據集,沒有數據我們如何學習?一旦數據可用,機器需要在數據堆中找到輸入和輸出的聯繫。

假設我們的數據是溫度、濕度、溫度等天氣信息,要求機器做的是找出上述因素與你老婆是否生氣之間的聯繫。這聽起來毫無關聯,但機器學習在做的時候是相當愚蠢的。現在假設我們用變量y來表示我們的老婆是否生氣了,變量 x1、x2、x3…代表天氣元素。我們把求函數 f (x)歸結為如下關係:

看到係數 w1 w2 w3 了嗎。w_1, w_2, w_3 ..w1, w2, w3 ..?這就是我們要求的數據和元素之間的關係,也就是所謂的模型參數。因此,我們可以定義模型參數如下:

模型參數是由訓練數據生成的模型值,用於幫助顯示數據中數量之間的關係。

因此,當我們說找到問題的最佳模型時,應該意味著我們已經在現有的數據集上找到了最適合問題的模型參數。它具有以下幾個特徵:

  • 用於預測新數據
  • 它顯示了我們使用的模型的能力。通常用準確性來表示,我們稱之為準確率。
  • 直接從訓練數據集學習
  • 通常不需要人工設置

模型參數有多種形式,如神經網絡權值、支持向量機中的支持向量、線性回歸或邏輯回歸算法中的係數。

什麼是模型的超參數?

我們經常假設模型超參數看起來像一個模型參數,但它不是真的。實際上這兩個概念是完全分開的。如果模型參數是由訓練數據集本身建模的,則模型超參數是完全不同的。它完全在模型之外,不依賴於訓練數據。它的目的是什麼?實際上,他們有以下幾個任務:

  • 用於訓練過程中,幫助模型找到最合適的參數
  • 它通常是由模型訓練的參與者手工挑選的
  • 它可以基於幾種啟發式策略來定義

對於一個特定的問題,我們完全不知道什麼是最好的模型超參數。因此,在現實中,我們需要使用一些技術來估計最佳取值範圍(例如 k 近鄰模型中的k係數),如網格搜索。這裡我想舉幾個模型超參數的例子:

  • 訓練人工神經網絡時的學習率
  • 訓練支持向量機時的C和sigma參數
  • 最近鄰模型中的k係數

8. 當學習率太高或太低時會怎麼樣?

當模型的學習率被設置得太低時,模型訓練將會進行得非常慢,因為它對權重進行非常小的更新。在到達局部最優點之前需要多次更新。

如果設定的學習率過高,則由於權值更新過大,模型可能會不收斂。有可能在一個更新權值的步驟中,模型跳出了局部優化,使得模型以後很難更新到最優點,而是在在局部優化點附近跳來跳去。

9. 當圖像尺寸變為 2 倍,CNN 的參數數量變為幾倍?為什麼?

對於候選人來說,這是一個非常誤導人的問題,因為大多數人會把注意力放在 CNN 參數的數量會增加多少倍的問題上。然而,讓我們來看看 CNN 的架構:

我們可以看到,CNN 模型的參數數量取決於濾波器的數量和大小,而不是輸入圖像。因此,將圖像的大小加倍並不會改變模型的參數數量。

10. 如何處理不平衡數據?

這是一個測試候選人處理真實數據問題的方法的問題。通常,實際數據和標準數據集在數據集的屬性和數據量方面差異很大(標準數據集不需要調整)。對於實際的數據集,可能會出現數據不平衡的情況,即類之間的數據不平衡。我們現在可以考慮以下技術:

  • 選擇正確的度量來評估模型:對於不平衡的數據集,使用準確性來評估是一項非常危險的工作,如上面幾節所述。應選擇精度召回F1 分數AUC等合適的評價量。
  • 重新採樣訓練數據集:除了使用不同的評估標準,人們還可以使用一些技術來獲得不同的數據集。從一個不平衡的數據集中創建一個平衡的數據集有兩種方法,即欠採樣和過採樣,具體技術包括重複、bootstrapping 或 hits(綜合少數過採樣技術)等方法。
  • 許多不同模型的集成:通過創建更多的數據來概括模型在實踐中並不總是可行的。例如,你有兩個層,一個擁有 1000 個數據的罕見類,一個包含 10,000 個數據樣本的大型類。因此,我們可以考慮一個 10 個模型的訓練解決方案,而不是試圖從一個罕見的類中找到 9000 個數據樣本來進行模型訓練。每個模型由 1000 個稀有類和 1000 個大規模類訓練而成。然後使用集成技術獲得最佳結果。
不容錯過的12個深度學習面試問題

  • 重新設計模型 — 損失函數:使用懲罰技術對代價函數中的多數類進行嚴厲懲罰,幫助模型本身更好地學習稀有類的數據。這使得損失函數的值在類中更全面。


11. 當訓練深度學習模型時,Epoch、Batch 和 Iteration 概念是什麼意思?

這些是訓練神經網絡時非常基本的概念,但事實是很多候選人在區分這些概念時都很困惑。具體來說,你應該回答以下問題:

  • Epoch:表示整個數據集的疊代(所有內容都包含在訓練模型中)。
  • Batch:是指當我們不能一次將整個數據集放到神經網絡中時,我們將數據集分割成幾批較小的數據集。
  • 疊代:是運行 epoch 所需的批數。假設有 10,000 個圖像作為數據,批處理的大小(batch_size)為 200。然後一個 epoch 將包含 50 個疊代(10,000 除以 200)。

12. 數據生成器的概念是什麼?我們什麼時候需要使用它?

數據生成器在寫代碼中很重要,數據生成函數幫助我們直接生成數據,然後送到模型中進行每個 batch 的訓練。

利用生成函數對訓練大數據有很大幫助。因為數據集並不總是需要全部加載到 RAM 中,這是一種內存的浪費,而且如果數據集太大,會導致內存溢出,輸入數據的處理時間會變長。

總結

以上是我在面試過程中經常問應聘者的 12 個關於深度學習的面試問題。然而,根據每個候選人的不同,提問的方式也會不同,或者還有一些問題是隨機從候選人的問題中提出的。

雖然這篇文章是關於技術問題的,但是與面試相關,並且基於我個人的觀點,態度決定了面試成功的 50%。所以,除了積累自己的知識和技能,總是用真誠、進步、謙虛的態度來表達自己,你一定會在任何對話中取得成功。我希望你早日實現你的願望。

英文原文:

https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-1-8a61f44cadac

https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-2-8f42deeb4483

https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-3-47a1dbf879f1

文章來源: https://twgreatdaily.com/zh-mo/CfVYn28BUQOea5OwIjEu.html