深度學習相關的職位面試時一般會問什麼?會問一些傳統的機器學習演算法嗎?


更新log:

1/30/2017 補充:如何準備面試

——————————————————————————————————————————

如果簡歷上有相關的深度學習project的話, 一定會被深入問吧...

剩下的東西很多情況下取決與面試的公司平時一般做啥.

之前有朋友面過一個傳統ML + NLP + 一點點DL的position (Entry Level), 面試題目涵蓋如下, 可以感受一下:

  • 用Map Reduce implement矩陣乘法
  • NLP相關的encoding問題 (CBOW vs Skipgram)
  • 不同的activation function的pros/cons
  • Gradient Boosting 相關問題
  • Random Forest 相關問題
  • SVM的Gaussian Kernel 的 dimension
  • 用Regex分析文本
  • 如何用python/R 讀取JSON, 並且洗數據
  • 用C++ implement Monte Carlo
  • coding: 用DFS走迷宮

如果我是面試官,可能還會問:

  • 用過哪些DL的library呀?
  • 現在的DL 的state of art model有哪些呀?
  • 如果如理diminishing gradient的問題呀?
  • 如果同時處理文本文檔+圖片呀?
  • 如果防止overfitting呀?
  • 如何pre-train model呀?
  • 能否自己在伺服器上用distributed computing部署一個現有的model 呀?

如何準備面試?

樓下@楊煜 同學的回答已經非常全面了。我再加幾點:

  • 機器學習:個人感覺學好深度學習,有一個紮實的機器學習的底子是很重要的。所以很多position雖然打著深度學習的標籤,但做的東西往往是和普通的機器學習密切相關的(這裡所謂的「普通的機器學習」通常指的是那些不需要很多計算量的模型)。撇開某些」特定的深度學習任務「(如圖像識別,自然語言分析),很多情況下深度學習是在儘可能的用一個non-linear的model去更好的fit你需要處理的問題。但是對於入門級position來說,fit model (e.g. 調參)很多情況下只是最後的20%任務。其餘的80%時間還是在洗數據。舉一個很好的例子:在我實習之間,我請教過一個做機器學習(業界cutting edge)的師兄,問他們平時工作是如何的高大上的。他說的回答是:「第一步,我總歸是畫一個scatter plot..」 所以說,除了某些特定的任務外,深度學習很多情況下只是在給你的結果錦上添花。但俗話說「garbage in, garbage out」。 很多時候數據的好壞才是最關鍵的。
  • 做過的項目:如果申請者是機器學習相關的專業出身,很多情況下會自帶一些項目,這在面試中是個加分項。對於轉專業的同學們來說,「項目」這個topic有可能會是個死循環 --「不去實習哪來的項目,沒有項目哪來的實習?」 在這個點上,我個人的建議是「打好機器學習的基礎,抓好深度學習的理論」。缺project的同學大可參與一些kaggle,拿到一些名詞是最好。現在也有一些刷project小組(如Bittiger, 無利益相關)供大家參與。
  • 語言相關:這個其實是應position而異的。如果你的職位是Google AI/Deep Mind這種專門開發新模型的position,你可能需要掌握紮實的底層語言基礎(C/C++?)。如果是偏應用為主(比方說用LeNet來獲得encoding),熟悉掌握python和相關的library(e.g., Keras)已經足夠。
  • 演算法coding:贊成。畢竟不是software engineering,有時間多做project吧。Leetcode 刷到medium基本已經能夠應付了。


計算機專業研究生一枚,這學期初秋招剛找到一份機器學習的工作,僅僅把我的校招經歷分享給大家,我的經歷可能對社招的前輩們沒什麼幫助。由於是校招,每種演算法考察的程度都不深。答案中不會出現具體的應聘公司,基本都是國內最知名的互聯網公司,大約十來家吧。

首先我面試的都是校招機器學習崗位,沒有遇見專門的深度學習崗位,所以就針對機器學習來說了。

面試內容一般都是做過的項目、語言相關、演算法coding、機器學習。

1.做過的項目

項目方面我沒做過機器學習相關的,求職過程中在這上面吃了很大的虧,如果能有相關的項目或比賽經歷再好不過了。不過沒有項目也不用灰心,這對在校生來說不算是硬傷,只要你的基礎知識夠紮實,同樣能通過面試。(但最好還是有~)

2.語言相關

編程語言不算是硬性要求,有的面試官問了,有的乾脆沒問。我用的最熟的是C++,Java和Python也會用,有些面試官聽了就會問我一些C++相關的問題,多數都會問到虛函數和純虛函數,用C++面試的同學可以重點看一下這個。工程性開發性的問題問的不多,就一次面試遇到過問我一些預處理、鏈接庫之類的問題。

3.演算法coding

這個基本到哪都會考,動態規劃、貪心、樹、鏈表都是常考題。為了應對這種問題我的做法是在leetcode上刷題,我也就做了100道左右,基本就能應對面試中的演算法coding了。如果用C++的話在leetcode上可以鍛煉使用STL容器,許多演算法coding題用STL容器來寫非常方便(我個人寫這種題已經不用數組了)。另外把答案用一個函數的形式寫出來是個很簡潔的方法。

4.機器學習

不用說這部分是機器學習面試的重點。面試中遇到的機器學習演算法主要有線性回歸、樸素貝葉斯、決策樹、GDBT、隨機森林、Adaboost、邏輯回歸(和Softmax)、SVM、神經網路和卷積神經網路。遇到很多次讓寫邏輯回歸的極大似然估計的推導。SVM會問思想,我SVM掌握的太少答的不好。神經網路會問隨機梯度下降和反向傳播,要寫出式子來的。卷積神經網路就遇到過一次,當時不知道後來上網學習了一下挺有意思的。

損失函數、過擬合、演算法的優缺點是經常問到的點,另外遇到的其他問題有這麼幾個:機器學習演算法中哪些是回歸演算法哪些是分類的。他們的產品要做用戶流失預測須要提取哪些特徵的。其他我還遇到過倒排索引、推薦演算法之類的問題。

以上,希望能給即將找工作的同學們帶來幫助(●"?"●)


當然會問!請你來是做工程的,而不是學術。DL只是ML中的分支,只會DL你的能力會相當局限,具體到工程問題上時更是明顯,當有些業務需求無法通過DL的時候,自然要用傳統機器學習演算法,而且這種狀況很常見。

事實上你作為工程師,你甚至應該慢慢全棧化,除了DL,其他ML的演算法你也應該有基本的實現能力,更別說web開發能力。不一定說你要能全掌握並獨立開發,但這對於了解邊界和團隊協作都非常重要。工程師的知識全面性直接關乎問題解決能力!


我們在公司內部做了一期採訪,針對我司機器學習的研究院和工程師當初面試經過的,一共採訪了九個人,正好可以回答這個問題。

1、 Wind NLP工程師

我之前是在研究院工作了兩年,之所以考慮來企業,一方面是處於生活上的考慮,還有一方面是因為現在學校其實已經離科技前沿越來越遠了,因為做科研需要很多數據,而這些數據越來越集中在企業的手裡。譬如我們之前有兩個項目其實都是和國內巨頭互聯網公司合作的,但是那些數據也不會給我們。所以現在越來越多的學術大牛比如楊老師都已經走入工業界了。

我的面試是在公司,三位面試官一起跟聊了四個多小時。先是問我用過一些什麼樣的演算法,以工作項目為切入點,主要是和機器學習有關的項目。我之前在做機器視覺圖像處理處理方面的工作,問我的主要是CNN,以及關於神經網路的一些基本概念。問了我一個現在很新穎也很流行的模型叫VGG,然後面試官問我是怎樣訓練這個模型的,因為現在市面上已經有訓練好了的現成的模型可以直接使用。我的回答是我是有自己訓練的,並且我自己剪裁了後面幾層網路,加上了我自己設計的一個全連接的模型,整個模型進行重新訓練。然後還問我訓練過程中有沒有考慮過over fitting的問題,我的回答是增加數據量,減少模型複雜度,然後面試官也提出了動態調節這種方法。後面我們又聊了些圖像的特徵,因為我們做圖像的時候常遇到非常大的數據,就涉及到怎樣壓縮這樣的數據。回答的也都還比較順暢。

然後還問了我自己做的一些項目,音頻指紋和視頻指紋演算法。這個技術可以用來標識和代表一段音頻,用來做搜索和版權保護等方面的工作。另外圖像指紋演算法也是類似的原理,主要也是利用圖像的頻譜特性,但是提取特徵點的方法不同。這個環節面試官問了我一些具體的演算法和細節,比如landmark, DCT, STFT. 還聊了一些關於搜索方面的技術,這個就主要是面試官給我講了,大家互相分享。

最後還做了幾道演算法題,其中一個是,假設有一個包含2億個整型數的文件,怎麼樣給他們排序。這個問題常規的做法有這麼幾步:1、分治——根據數據存在文件中的位置分裂文件到批量小文件中.相對於樸素的排序,這是一種比較穩妥的解決方法。因為數據量太大了!我們不得不將大事化小,小事化了。2、排序 。3、歸併排序 這其中還涉及到的一些方法,比如快排,Hash,堆排序,字典樹等,這裡就不詳述了。

2.Tony 演算法組實習生

我的一面是電話面試。我簡歷上第一個項目做的是古詩詞生成器,用的是多層的 RNN 做的 Language model, cell 用的是基本的 LSTM。面試官先讓我介紹了模型大概設計,然後針對我的介紹提了幾個問題:怎麼評估生成的質量?詞向量怎麼生成的?有沒有看過其他文獻?能不能講一下他們的做法?我的回答是:1. 對於生成的句子只能通過人工去評估。在訓練過程則用的是 perplexity 去評估的,而 perplexity 是 2 的 cross entropy 次方。2. 詞向量有用 Word2Vec pretrain 過,但是因為數據比較充足,隨機初始化詞向量然後直接訓練也可以得到還不錯的效果。3. 至於文獻,我看過一篇14年的文章,裡面的做法是在基礎的多層 RNN 的基礎上加了很多古詩詞相關的先驗知識,比如詩詞的押韻,斷句方式等。

問完了項目之後,接下來的問題感覺應該是在考察我知識的廣度。問我 RNN 除了用來做 Language Modeling,還可以用來做什麼?我的回答是情感分析、實體詞識別等句子分類任務。然後面試官緊接著問,現在如果我要用 RNN 做句子的分類,有什麼需要注意的?我的回答是,短文本的語義獲取對模型的要求很高,RNN 在這上面效果不是很好。當時舉了一個例子--"not bad",這種類似雙重否定的語義很難通過求和加非線性抓住。之前看過一個比較新的文章,用的是 Recursive Neural Tensor Network,它就能很好地抓住這種語義。後來還繼續解釋說,對於比較長的文本的話,其實只要文本足夠長,簡單的詞包也是能達到很好的效果。比如一篇黑川普的文章裡面肯定會用到很多負面的表達。面試官最後還問了我除了 Deep Learning 相關的知識,對其他的 Machine Learning 的知識了解的如何?我提了一下 SVM,他就立刻問 SVM 在什麼情況下效果會比較差?當時有些呆住了,因為自己沒有實際用過 SVM,所以只是答了 outlier 對分類效果影響會比較大,然後補充說可以用 soft margin 的方法解決這個問題。後來查了一下文獻才發現別有洞天,當時還擔心面試官會不滿意呢。

二面是在公司面的,針對項目又做了一些細節提問。除了上面提到的古詩詞生成器之外,還具體問了我之前寫過的一個類似 Prisma 的圖片藝術風格轉換的程序。這是我當時的課程項目,先是用 python 把網路結構實現了一遍,後來又用 Tensor Flow 再做了一遍。我給面試官講了背後的模型原理,也展示了前陣子做出來的結果。另外一個是我之前參加過的數據挖掘比賽,我講了當時用的演算法以及為什麼要選那個演算法。因為我提到所有機器學習相關的知識都是看網課自學的,面試官便還問了我閱讀文獻的頻率。除了這些問題之外,面試官還問我機器學習的方法在什麼情況下比較適合使用。這是很基本的問題,因為之前有仔細想過,所以自己答得還不錯。

二面的最後是猝不及防的演算法題。第一道題是,假設資料庫里有一億條搜索請求,假設已經知道怎麼判斷兩條請求是不是一樣,要我設計一個演算法,快速從裡面找出出現頻率最高的十條。還有一道題是,假如有10萬個IP段,每個IP段對應一個城市。現在如果知道一個用戶的IP地址,如何快速找出其城市。雖然沒有仔細複習過演算法,但這兩個問題其實還蠻簡單的,我答得也比較順利。

更多的面試經過和經驗分享可以看這裡:【行業】不能錯過的,人工智慧從業者面試指南


謝邀, 我的答案是會

一般會問三個方面:

  1. 深度學習, 根據面試的職位要求, 會結合項目深入細緻的討論網路結構, 優化演算法等.
  2. 應用層面, 基本上都是經典和常見的圖像處理方法
  3. 經典的機器學習演算法, 基本上會問一到兩個, 順帶考察一下代碼能力

ACM 我是不會問的

我對面試者的期待是, 不需要你花一天時間去解決別人花三天時間才能解決的問題, 我希望你能花三年的時間解決別人一輩子都解決不了的問題. 這也是做演算法的同學的競爭力所在.

最後的忠告:

  1. 面試過程中千萬不要撒謊, 極其容易暴露. 有一說一最多是不得分, 撒謊肯定是負分

  2. 面試的時候要有自信(自信源於項目沒有水分, 基礎紮實)
  3. 年輕人要有積極向上的態度(曾經刷過年紀輕輕卻暮氣沉沉的面試者)


說來你可能不信,但不少人都說不出來 CPU 和 GPU 的區別。


謝邀,有時間答。


這個問題,感覺我可以胡扯兩句,主要是關於校招的。首先,現在有很多phd畢業會選擇加入工業界,所以這裡說深度學習職位的標準,針對phd與針對普通本碩是不一樣的。如果是phd的話,那肯定會從他們的博士課題開始聊(具體的不是很清楚)。而如果是本碩的話,可能需要一些深度學習的經驗。不過面試這個東西也沒有一個定律,主要還是看面試官。針對本碩的話,一般會涉及這樣幾個部分吧:

  • coding

招過去肯定還是碼農,基本的代碼能力還是要考察的,這個跟其它任何碼農職位沒有區別。

  • 深度學習相關項目經驗

面試官一般都是從簡歷上的相關項目出發,挑自己熟悉或者感興趣的問,主要要把這個項目能說好,細節能解釋清楚。比如簡歷上寫用了faster rcnn(以圖像領域為例)的話,面試官應該會針對細節問下去。當然,我也遇到過詳細詢問CNN的結構的。。。

  • 深度學習框架

現在深度學習框架雖然很多,但一般用得多的還是caffe跟tensorflow。如果你在簡歷上稱自己熟悉caffe的話,有的面試官可能會問你一些caffe源碼的東西。

  • 煉丹經驗

有些面試官還會問一些深度學習調參心得的問題,這個問題也確實能夠體現是不是真正自己去煉過丹。

除了以上問題外,有些面試官還會關注候選人的數學功底,就像面試程序員的時候問概率題似的。像有些圖像相關領域,矩陣變換以及相關的解析幾何可能會被問到。如果你有些通信的底子,也不排除會問傅里葉變換,fft相關的問題。

關於傳統的機器學習演算法,這個肯定是需要準備的(問不問就看面試官了),而且最好能從較high的level上做一些總結。有些面試官喜歡問一些比較大的問題,比如比較一下SVM和RF。


前些天剛剛面了倆家。傳統機器學習演算法也不難,把李航那本刷完就夠用了。SVM對偶問題可能要多看看。python的sklearn對這些傳統演算法封裝好,可以了解一下。

我面的分為項目和代碼。

?項目: 基本上是按照簡歷來展開。面試官也不一定直面問你簡歷上寫的,他可能看著你的簡歷想到他們現正在做的項目遇到的問題。也不一定是深度學習如RNN 或CNN,可能是數據存儲,如何數據讀取使的內存有限下讀取速度快。設計一個讀演算法,數據從G到T的增加如何保障讀穩定。這就考基本功了,這次問的是數據讀取,下次可能就問帶寬,外溢等等。從這個觀點看,我覺平時積累知識的時候還是要掌握得一些,一次性弄懂。面試官還問了現場推導反向更新規則,解釋caffe每個超參的作用。沒有問傳統機器學習(naive bayes, svm等等)。

?代碼: 面試官直言問,你有沒有在哪裡刷過題。我說在leetcode,然後面試官說你隨便說個你印象比較深的題吧。天,頓時我就懵逼,還能這樣考?一時不知是興奮還是心慌,突然想不起來任何東西。然後想起了3sum,想到先序中序。我回答3sum問題,然後面試官要我講一下演算法,三個for循環最差O(n^3)。然後面試官說有什麼方法可以優化,又蒙圈了,自己給自己挖坑啊!後來胡亂想了個我說2個for,然後再query。最挖坑的是,我說查詢是O(1)時間。然後在面試官引導下我想到了二分,真是羞愧難啊!後來 出來後我趕緊得得去查一下正確答案,要先排序O(nlgn)。然後從第一個開始for ,gap=0-A[k],然後再來一個while,i在k+1,j在尾,A[i]+A[j]-gap&<0 i++; A[i]+A[j]-gap&>0 j++; 所以O(n^2)夠了。(如有更好的演算法求建議)。最後我面試時回答的是O(n^3lgn)。自己挖的坑,跪著也要爬起來 (T_T)。面的時候千萬要保證不要說出自己含糊的答案,一定要確保正確,就這樣。

個人意見真誠手打,僅供參考。大神請繞道,不喜勿噴,謝謝。


嗯說一下昨天面試被問的幾個問題:

  • 解決網路過擬合的手段有些什麼呀
  • Dropout的為什麼可以解決過擬合呀
  • Batch-normalization的思想是什麼呀
  • 類別不平衡的時候怎麼辦啊
  • 目標檢測中anchor box的做法和adaboost人臉檢測中的滑窗檢測有什麼區別啊?
  • 跟蹤和檢測有什麼區別啊?
  • 用過幾個框架?它們的優劣分析一下

就醬


謝邀

方方面面都會問的,根據不同的職位和職責,會有不同的bias 。

下面是一些主題的:

計算機相關的,特別是編程,畢竟要實現。

數學相關的,特別是應屆生的話。

機器學習相關的,深度學習只是其中的一個分支而已,只不過最近熱門罷了。

產品和領域知識,到目前為止,深度學習並不能脫離領域而全面適用。

除非小部分招進來只做某個非常明確項目的調參,否則多少都涉及其他


如果候選人簡歷上有深度學習的項目,肯定會結合項目深入的問,至少會問下用了什麼模型,如果模型優化訓練有"坑"的話,一定會問下『』坑」 以及填坑的辦法,比如RNN的那個梯度爆炸;

』假如你簡歷中有機器學習相關的項目,面試官當然有可能問呀;

就算你沒有機器學習項目經歷,我也會問,因為深度學習知識一種機器學習方法而已,我覺得流行的演算法未必長久,但經典的演算法是經過時間檢驗的,總要知道了解一些


校招和社招差別挺大。個人非圖像語音領域,而是推薦領域,差別更大些。

社招狂問項目流程,項目意義,項目改進等。推導的事情,很少遇到。

還有常用庫,基本機器學習模型,以及模型特點和比較。

讓你設計個特徵集合也是有的,主要考察對業務的理解和對用戶的把握。

以上是個人經驗。


會問傳統機器學習演算法的,如果不問,那這個團隊估計不咋專業,畢竟深度學習裡面的很多思想和機器學習是相通的,而且不少問題用傳統機器學習演算法解決更合適。

面試大概會考傳統機器學習、深度學習、最優化、coding四個方面。

傳統機器學習:

lr、svm、gmm、k means、隱馬爾科夫、樸素貝葉斯

決策樹,信息增益,基尼係數

ensemble method:bagging、stacking、boosting,具體的比如random forest、adaboost、gbdt等

如何進行feature selection

降維,比如pca、lda

bias vs variance

深度學習:

手推bp

梯度消失/爆炸原因,以及解決方法

各種loss,比如hinge loss、cross entropy loss等等

bn的原理

防止過擬合有哪些方法

im2col原理

最優化:

sgd

momentum

rmsprop

adam

擬牛頓法

拉格朗日乘子法、對偶問題、kkt條件

coding:

好好刷leetcode

主要題型如排序、雙指針、dp、貪心、分治、遞歸、回溯、字元串、樹、鏈表、trie、bfs、dfs等等


大部分問題應該都跟深度學習無關。

標準的理論(VC bound,model selection, overfitting)

標準的模型(SVM,Random Forest,Decision Tree,NN)

標準的優化演算法(MCMC,MLE,EM,SGD)

標準的庫(TensorFlow,WEKA,Spark)


這裡也有一些很棒的題目:

#12 機器學習能力自測題---看看你的機器學習知識能打幾分?不容錯過的機器學習試題與術語


我會直接請面試者推導反向傳播理論的四個公式。


推薦閱讀:

面試總是太緊張,求方法支招?
當一個面試官問你為什麼某一方面特別差時,是希望得到什麼樣的回答?
網路視頻面試要注意哪些問題?
應聘某個職位,別的都沒問題,只因跳槽過於頻繁被 HR 拒之門外,有什麼對策?
面試的時候應該展示真實的自己么?

TAG:面試 | 機器學習 | 深度學習DeepLearning |