作者:JP Tech
編譯:ronghuaiyang
這12個問題是當前面試中最熱門的問題,既是非常基礎的問題,也能看出面試者的水平,具有區分度。無論是面試官還是求職者都可以看看。
這些是我在面試人工智慧工程師職位時經常問的問題。事實上,並不是所有的面試都需要使用所有這些問題,因為這取決於應聘者以前的經驗和項目。通過大量的面試,特別是與學生的面試,我收集了 12 個在深度學習中最熱門的面試問題,今天將在這篇文章中與大家分享。我希望能收到你的許多意見。好了,別再囉嗦了,我們開始吧。
這是一個非常好的問題,因為它涵蓋了候選人在使用神經網絡模型時需要知道的大部分知識。你可以用不同的方式回答,但需要闡明以下主要觀點:
Batch Normalization 是訓練神經網絡模型的一種有效方法。該方法的目標是將特徵(每層激活後的輸出)歸一化為均值為 0,標準差為 1。所以問題在於非零的均值是如何影響模型訓練的:
什麼是bias?可以理解,bias是當前模型的平均預測與我們需要預測的實際結果之間的差異。一個高 bias 的模型表明它對訓練數據的關注較少。這使得模型過於簡單,在訓練和測試中都沒有達到很好的準確性。這種現象也被稱為欠擬合。
Variance 可以簡單理解為模型輸出在一個數據點上的分布。Variance 越大,模型越有可能密切關注訓練數據,而不提供從未遇到過的數據的泛化。因此,該模型在訓練數據集上取得了非常好的結果,但是與測試數據集相比,結果非常差,這就是過擬合的現象。
這兩個概念之間的關係可以從下圖中看出:
在上圖中,圓的中心是一個模型,它完美地預測了精確的值。事實上,你從來沒有發現過這麼好的模型。當我們離圓的中心越來越遠,我們的預測就越來越糟。
我們可以改變模型,這樣我們就可以儘可能地增加落入圓中心的模型猜測的數量。需要在偏差值和方差值之間取得平衡。如果我們的模型過於簡單,參數很少,那麼它可能有高偏差和低方差。
另一方面,如果我們的模型有大量的參數,那麼它就會有高方差和低偏差。這是我們在設計算法時計算模型複雜度的基礎。
這個問題是關於深度學習算法在實踐中的應用,這個問題的關鍵是數據的索引方法。這是將 One Shot learning 應用於人臉識別問題的最後一步,但這一步是在實踐中進行部署的最重要的一步。
基本上,回答這個問題,你應該先描述一下 One Shot learning 來進行人臉識別的方法一般性方法。它可以簡單地理解為將每個人臉轉換成一個向量,而新的人臉識別是尋找與輸入人臉最接近(最相似)的向量。通常,人們會使用 triplet loss 損失函數的深度學習模型來實現這一點。
然而,隨著圖像數量的增加,在每次識別中計算到 1000 萬個向量的距離並不是一個明智的解決方案,這使得系統的速度慢了很多。為了使查詢更加方便,我們需要考慮在實向量空間上索引數據的方法。
這些方法的主要思想是將數據劃分為便於查詢新數據的結構(可能類似於樹結構)。當有新數據可用時,在樹中進行查詢有助於快速找到距離最近的向量。
有好幾種方法可以用於這種目的,比如Locality Sensitive Hashing—LSH,Approximate Nearest Neighbors — Annoy Indexing等等。
對於一個類問題,有許多不同的評估方法。在準確性方面,該公式簡單地用正確預測數據點的個數除以總數據。這聽起來很合理,但在現實中,對於不平衡的數據問題,這個數量還不夠顯著。假設我們正在構建一個網絡攻擊的預測模型(假設攻擊請求占請求總數的 1/100000)。
如果模型預測所有請求都是正常的,那麼準確率也達到 99.9999%,而這個數字在分類模型中通常是不可靠的。上面的精度計算通常向我們展示了有多少百分比的數據是正確預測的,但並沒有詳細說明如何對每個類進行分類。相反,我們可以使用混淆矩陣。基本上,混淆矩陣顯示了有多少數據點實際上屬於一個類,並且被預測屬於一個類。其形式如下:
除了表示真陽性和假陽性指標對應於定義分類的每個閾值的變化外,我們還有一個 ROC 圖。根據 ROC 曲線,我們可以知道模型是否有效。
理想的 ROC 曲線是最接近左上角的橙色線。真陽性比較高,假陽性比較低。
這個問題旨在檢測你對於神經網絡如何工作的知識。你需要講清楚以下幾點:
激活函數的意義
激活函數的產生是為了打破神經網絡的線性特性。這些函數可以簡單地理解為用一個濾波器來決定信息是否通過神經元。在神經網絡訓練中,激活函數在調節導數斜率中起著重要的作用。一些激活函數,如 sigmoid、fishy 或 ReLU,將在下面幾節中進一步討論。
然而,我們需要理解的是,這些非線性函數的性質使得神經網絡能夠學習比僅僅使用線性函數更複雜的函數的表示。大多數激活函數是連續可微函數。
這些函數是連續函數,也就是說,如果輸入的變量很小且可微(在其定義域內的每一點都有導數),那麼輸出就會有一個小的變化。當然,如上所述,導數的計算是非常重要的,它是決定我們的神經元能否被訓練的決定性因素。提幾個常用的激活函數,如 Sigmoid, Softmax, ReLU。
激活函數的飽和區間
Tanh、Sigmoid、ReLU 等非線性激活函數都有飽和區間。
可以很容易理解的是,觸發函數的飽和範圍是指即使輸入值改變,函數的輸出值也不改變的區間。變化區間存在兩個問題,即在神經網絡的正向傳播中,該層的數值逐漸落入激活函數的飽和區間,將逐漸出現多個相同的輸出。
這將在整個模型中產生相同的數據流。這種現象就是協方差移位現象。第二個問題是,在反向傳播中,導數在飽和區域為零,因此網絡幾乎什麼都學不到。這就是我們需要將值範圍設置為均值為 0 的原因,如 Batch 歸一化一節中所述。
模型的參數是什麼?
回到機器學習的本質上來,關於機器學習我們需要一個數據集,沒有數據我們如何學習?一旦數據可用,機器需要在數據堆中找到輸入和輸出的聯繫。
假設我們的數據是溫度、濕度、溫度等天氣信息,要求機器做的是找出上述因素與你老婆是否生氣之間的聯繫。這聽起來毫無關聯,但機器學習在做的時候是相當愚蠢的。現在假設我們用變量y來表示我們的老婆是否生氣了,變量 x1、x2、x3…代表天氣元素。我們把求函數 f (x)歸結為如下關係:
看到係數 w1 w2 w3 了嗎。w_1, w_2, w_3 ..w1, w2, w3 ..?這就是我們要求的數據和元素之間的關係,也就是所謂的模型參數。因此,我們可以定義模型參數如下:
模型參數是由訓練數據生成的模型值,用於幫助顯示數據中數量之間的關係。
因此,當我們說找到問題的最佳模型時,應該意味著我們已經在現有的數據集上找到了最適合問題的模型參數。它具有以下幾個特徵:
模型參數有多種形式,如神經網絡權值、支持向量機中的支持向量、線性回歸或邏輯回歸算法中的係數。
什麼是模型的超參數?
我們經常假設模型超參數看起來像一個模型參數,但它不是真的。實際上這兩個概念是完全分開的。如果模型參數是由訓練數據集本身建模的,則模型超參數是完全不同的。它完全在模型之外,不依賴於訓練數據。它的目的是什麼?實際上,他們有以下幾個任務:
對於一個特定的問題,我們完全不知道什麼是最好的模型超參數。因此,在現實中,我們需要使用一些技術來估計最佳取值範圍(例如 k 近鄰模型中的k係數),如網格搜索。這裡我想舉幾個模型超參數的例子:
當模型的學習率被設置得太低時,模型訓練將會進行得非常慢,因為它對權重進行非常小的更新。在到達局部最優點之前需要多次更新。
如果設定的學習率過高,則由於權值更新過大,模型可能會不收斂。有可能在一個更新權值的步驟中,模型跳出了局部優化,使得模型以後很難更新到最優點,而是在在局部優化點附近跳來跳去。
對於候選人來說,這是一個非常誤導人的問題,因為大多數人會把注意力放在 CNN 參數的數量會增加多少倍的問題上。然而,讓我們來看看 CNN 的架構:
我們可以看到,CNN 模型的參數數量取決於濾波器的數量和大小,而不是輸入圖像。因此,將圖像的大小加倍並不會改變模型的參數數量。
這是一個測試候選人處理真實數據問題的方法的問題。通常,實際數據和標準數據集在數據集的屬性和數據量方面差異很大(標準數據集不需要調整)。對於實際的數據集,可能會出現數據不平衡的情況,即類之間的數據不平衡。我們現在可以考慮以下技術:
這些是訓練神經網絡時非常基本的概念,但事實是很多候選人在區分這些概念時都很困惑。具體來說,你應該回答以下問題:
數據生成器在寫代碼中很重要,數據生成函數幫助我們直接生成數據,然後送到模型中進行每個 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