'機器學習深度學習面試問題彙總(提升你的面試成功率)'

"
作者:George Seif編譯:ronghuaiyang

導讀

在面試之前,你會覺得自己什麼都懂,但是真的開始面試了,你發現你自己什麼都不懂!
"
作者:George Seif編譯:ronghuaiyang

導讀

在面試之前,你會覺得自己什麼都懂,但是真的開始面試了,你發現你自己什麼都不懂!
機器學習深度學習面試問題彙總(提升你的面試成功率)

可怕的機器學習面試。在面試之前,你會覺得自己什麼都懂,但是真的開始面試了,你發現你自己什麼都不懂!

在過去的幾個月裡,我面試了很多公司的初級職位,涉及數據科學和機器學習。在我攻讀機器學習和計算機視覺碩士學位的最後幾個月裡,我都是在學校裡學習,大部分之前的經驗都是研究和學術方面的,但是我有8個月的時間處於早期創業階段(與ML無關)。我在創業階段的這些角色包括數據科學、通用的機器學習和自然語言處理或計算機視覺相關的內容。我面試過亞馬遜、特斯拉、三星、優步、華為等大公司,也面試過很多初創公司,從初創階段到資金雄厚的階段的公司都有。

今天我將和大家分享我被問到的所有面試問題以及如何解決這些問題。許多問題都是很常見的和預想的理論問題,但也有許多問題是很有創造性的。我將簡單地列出最常見的一些,因為網上有很多關於它們的資源,並深入探討一些不太常見和棘手的。我希望通過閱讀這篇文章,你能在機器學習面試中取得好成績,找到你夢想的工作!

就讓我們開始吧:

偏差和方差之間的權衡是什麼?

什麼是梯度下降?

解釋過擬合和欠擬合,以及如何與之對抗?

你如何對抗維度災難?

什麼是正則化,我們為什麼要使用它,並給出一些常見方法的例子?

解釋主成分分析(PCA)?

為什麼在神經網絡中ReLU比Sigmoid更好更常用?

什麼是數據歸一化?我們為什麼需要它?

我覺得這個問題很重要。數據歸一化是一個非常重要的預處理步驟,用於對數值進行縮放以適應特定的範圍,以確保在反向傳播過程中更好地收斂。一般來說,這可以歸結為減去每個數據點的均值,再除以其標準差。如果我們不這樣做,那麼一些特徵(那些大幅值的特徵)將在損失函數中得到更多的權重(如果一個高幅值的特徵變化了1%,那麼這個變化是相當大的,但是對於較小的特徵,它是相當小的)。數據歸一化使得所有特徵的權重相等。

解釋一下降維,在哪裡使用,它的好處?

降維是通過得到一組主要的變量,這些變量基本上就是重要的特徵,來減少需要考慮的特徵變量數量的過程。特性的重要性取決於特性變量對數據的信息表示的貢獻有多大,取決於你決定使用哪種技術。決定使用哪種技術取決於反覆試驗和偏好。通常從線性技術開始,當結果表明不合適時,再轉向非線性技術。數據集降維的好處可能是:(1)減少所需存儲空間(2)加速計算(例如在機器學習算法),維度少意味著更少的計算,小維度可以允許使用那些不適合大維度的算法(3)刪除冗餘特性,例如同時使用平方米和平方英里來存儲面積是沒有意義的(可能數據採集是有缺陷的)(4)把數據的維度降低成2d或3d,這樣可以可視化,可以觀察到一些模式,給我們一些直觀的啟發(5)過多的特徵或過於複雜的模型會導致過擬合。

如何處理數據集中丟失或損壞的數據?

你可以在數據集中找到丟失/損壞的數據,然後刪除這些行或列,或者用另一個值替換它們。在pandas中,有兩個非常有用的方法:isnull()和dropna(),它們將幫助你找到缺少或損壞數據的數據列,並刪除這些值。如果希望用佔位符值(例如0)填充無效值,可以使用fillna()方法。

解釋一種聚類算法?

我寫了一篇關於數據科學家需要知道的5種聚類算法的熱門文章,用一些很好的可視化方法來詳細解釋所有這些算法。

如何進行探索性數據分析(EDA)?

EDA的目標是在應用預測模型之前從數據中得到一些理解,獲得一些信息。基本上,你希望以一種從粗到細的方式進行EDA。

我們首先得到一些高層次的理解。看看一些不平衡的類,看看每個類的均值和方差。查看前幾行,看看它是關於什麼的。運行pandas的df.info()來查看哪些特性是連續的、類別的、它們的類型(int、float、string)。

接下來,刪除在分析和預測中沒有用的和不必要的列。它們可以是看起來無用的列,可以是許多行具有相同的值(沒有給我們多少有用的信息),或者有很多缺失值。我們還可以用該列中最常見的值或中值來填充缺失的值。

現在我們可以開始做一些基本的可視化。從高層次的東西開始。做一些條形圖,用在分類特徵上和只有少量組的特徵上。看看最“通用的特徵”,創建一些關於這些特性的獨立的可視化圖,嘗試獲得一些基本的理解。

現在我們可以開始變得更具體一些。在兩個或三個特徵之間創建可視化圖。特徵是如何相互關聯的?你還可以通過PCA查看哪些特性包含最多的信息。將一些特性組合在一起,以查看它們之間的關係。例如,當A = 0和B = 0時,會發生什麼?A = 1 B = 0呢?比較不同的特徵。例如,如果特徵A可以是“女性”或“男性”,那麼我們可以將特徵A與它們呆在哪個艙室相對照,看看男性和女性是否住在不同的艙室。除了條形圖、散點圖和其他基本圖外,我們還可以繪製PDF/CDF、重疊圖等。查看一些統計數據,如分佈、p值等。從簡單的貝葉斯和線性迴歸開始。如果你發現數據是高度非線性的,使用多項式迴歸、決策樹或者SVMs。可以根據EDA中特徵的重要性來選擇它們。如果你有很多數據,你可以使用神經網絡。檢查ROC曲線,精確率、召回率。

如何知道應該使用哪種機器學習模型?

雖然一個人應該永遠記住“沒有免費的午餐“定理,但還是有一些一般的指導方針的。我寫了一篇關於如何選擇合適的迴歸模型的文章也非常棒!

為什麼我們對圖像使用卷積而不僅僅是FC層?

這個問題很有趣,因為公司通常不會問這個問題。正如你所料,我從一家專注於計算機視覺的公司那裡得到了這個問題。這個答案有兩部分。首先,卷積保存、編碼並實際使用圖像中的空間信息,如果我們只使用FC層,我們將沒有對應的空間信息。其次,卷積神經網絡具有局部的變換不變性,因為每個卷積核都是它自己的濾波器/特徵檢測器。

是什麼使得CNNs對於變換具有不變性?

如上所述,每個卷積核都充當自己的濾波器/特徵檢測器。假設你在做物體檢測,物體在圖像中的什麼位置並不重要,因為我們要以滑動窗口的方式在整個圖像中使用卷積。

為什麼我們在分類CNNs中使用最大池?

這是面試一個計算機視覺職位時遇到的問題。在CNN中使用Max-pooling可以減少計算量,因為在使用pool之後feature map會變小,也不會丟失太多語義信息,因為你正在進行最大化激活。也有一種理論認為,最大池化效應會給CNNs帶來更多的變換不變性。

為什麼分割CNNs通常具有編碼器-解碼器樣式/結構?

編碼器CNN基本上可以被認為是一個特徵提取網絡,而解碼器則利用該信息通過“解碼”特徵並向上縮放到原始圖像的大小來預測圖像的分割。

殘差絡網的意義是什麼?

殘差連接所做的主要事情是允許後面的層直接從之前的層中獲取信息。這使得信息在整個網絡中傳播更加容易。關於這一點,有一篇非常有趣的論文展示瞭如何使用本地skip連接來給網絡提供一種集成多路徑的結構,從而使特性可以在整個網絡中傳播具有多條路徑。

什麼是batch normalization?為什麼它可以有效果?

訓練深度神經網絡是複雜的,因為在訓練過程中,隨著前一層的參數變化,每一層的輸入分佈也會發生變化。我們的想法是將每一層的輸入歸一化,使它們的平均輸出激活值為0,標準差為1。這是為每一層中的每個mini batch所做的,單獨計算mini batch的均值和方差,然後歸一化。這類似於網絡的輸入是標準化的。這有什麼幫助呢?我們知道歸一化網絡的輸入是有助於學習的。但網絡只是一系列層,其中一層的輸出成為下一層的輸入。這意味著我們可以把神經網絡中的任何一層想象成更小的後續網絡的第一層。我們把神經網絡看作是一系列相互輸入的神經網絡,在應用激活函數之前,我們對一層的輸出進行歸一化,然後將其輸入到下一層(子網絡)。

如何處理不平衡的數據集?

我有一篇關於這個的文章 !

為什麼要使用很多小的卷積核,比如3x3,而不是幾個大的呢?

這一點在VGGNet論文中得到了很好的解釋。有兩個原因:首先,你可以使用幾個較小的卷積核而不是幾個較大的卷積核來獲得相同的感受野並捕獲更多的空間上下文,但是對於較小的卷積核,你使用的參數和計算更少。其次,因為使用了更小的卷積核,你會使用更多的過濾器,你將能夠使用更多的激活函數,因此CNN將學習到更有區分度的映射函數。

你還有其他相關的項目嗎?

在這個問題中,你將真正地在你的研究和他們的業務之間建立聯繫。你有沒有做過什麼事,學過什麼技能,可能與他們的業務或你申請的職位有關?不用100%精確,只要以某種方式相關就可以了,這樣你就可以證明你能夠為他們增加很多價值。

解釋你目前的碩士研究?哪些是有效的?哪些沒有?未來的發展方向怎樣?

和最後一個問題一樣!

結論

這些就是所有我在申請數據科學和機器學習職位時得到的面試問題。我希望你喜歡這篇文章,並學到一些新的和有用的東西!

原文鏈接:https://towardsdatascience.com/data-science-and-machine-learning-interview-questions-3f6207cf040b

更多文章,請關注微信公眾號:AI公園

"

相關推薦

推薦中...