你見過最差的算法工程師能差到什么程度?

向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)???
機(jī)器學(xué)習(xí)AI算法工程?? 公眾號(hào):datayx
這周面試了一個(gè)候選人,面CV/DL/AI的TechLead。簡(jiǎn)歷很牛逼,做過很多CV的工業(yè)項(xiàng)目,涵蓋detection, OCR, face recognition, fire/smoke detection等好多項(xiàng)目. 給我們講了45分鐘做得項(xiàng)目,講得很自信。我挑了一個(gè)大項(xiàng)目,我說你在這個(gè)項(xiàng)目中的貢獻(xiàn)是什么?他說整個(gè)項(xiàng)目的所有算法部分都是他實(shí)現(xiàn)的。
OK,我開始進(jìn)行深度學(xué)習(xí)的技術(shù)面。
我先問了兩個(gè)深度學(xué)習(xí)的中等難度的問題,他都說不知道。有點(diǎn)冷場(chǎng),那我趕緊問點(diǎn)簡(jiǎn)單的吧。我說,深度學(xué)習(xí)網(wǎng)絡(luò),進(jìn)行分類時(shí)有哪些loss?他猶豫了一下,回答: relu.
瞬間把見過大場(chǎng)面的我還有同事都震住了。
面試另外一個(gè)人,我說目前我們檢測(cè)主要用yolo,他反問了一句,怎么不用tensorflow?
......
算法工程師的目標(biāo)既不是精通各種框架,會(huì)調(diào)各種包,也不是會(huì)發(fā)paper就是成功,而是有能力解決實(shí)實(shí)在在被提出的算法問題。
這里的問題可能來源于業(yè)務(wù),也可能來源于長(zhǎng)遠(yuǎn)的戰(zhàn)略部署,甚至可能來源于一次大領(lǐng)導(dǎo)的拍腦袋。不管怎么說,個(gè)人覺得能獨(dú)立分析,拆解,建模和解決算法問題的算法工程師就是勝任的,否則再怎么花里胡哨都是差勁的。
從反面回答一下,我碰到什么樣的算法工程師會(huì)認(rèn)為他/她是優(yōu)秀甚至是卓越的大佬,并選擇緊緊抱住大腿不松手。
本文很多觀點(diǎn)也是來源于不同公司的前輩們討論過這個(gè)問題,這里也感謝大家的指點(diǎn)??偟脕碚f,以下幾個(gè)特點(diǎn)是我特別留意的,如果碰到了我就會(huì)認(rèn)為這位很厲害:
基礎(chǔ)非常扎實(shí)。問他/她一些比較經(jīng)典的算法,能夠很清晰地說出算法的特點(diǎn)、適用的場(chǎng)景、坑點(diǎn)、里面的細(xì)節(jié)等等。
工程能力很強(qiáng)。我是一位“工程狗”,自己的工程能力很菜,但對(duì)工程能力強(qiáng)的同學(xué)非常崇拜 Orz 如果碰到一位算法工程師的工程能力很強(qiáng),僅憑這一點(diǎn),我就認(rèn)為他/她基本上一定是大佬Orz
重視代碼的測(cè)試。算法崗的工作并不完全就是調(diào)參煉丹,往往也是需要去寫一些代碼的,例如寫些spark/sql代碼獲得特征,寫模型等等。既然是寫代碼,就可以而且應(yīng)該在其中加上測(cè)試。實(shí)際上,根據(jù)我的經(jīng)驗(yàn),如果碰到某個(gè)其他地方好用的模型在自己的場(chǎng)景下效果很差(不reasonable得差),那很可能是數(shù)據(jù)、特征的處理代碼有問題,或者模型的代碼有問題。這種問題可以用單元測(cè)試(斷言等)來提前發(fā)現(xiàn),也可以用一些sanity check來發(fā)現(xiàn)。
對(duì)場(chǎng)景業(yè)務(wù)的認(rèn)識(shí)很深刻。軟件工程沒有銀彈,機(jī)器學(xué)習(xí)也沒有銀彈。用什么樣的特征、什么樣的預(yù)估目標(biāo)、什么樣的評(píng)價(jià)指標(biāo)、甚至什么樣的模型,這些東西都是要與場(chǎng)景業(yè)務(wù)結(jié)合的。換言之,工業(yè)屆里,業(yè)務(wù)先于技術(shù)。很多大神在這個(gè)方面做得尤其出色。
在實(shí)際場(chǎng)景中,注重先把整個(gè)pipeline搭建起來。個(gè)人認(rèn)為,這一點(diǎn)在實(shí)際應(yīng)用中往往應(yīng)該是最優(yōu)先的。搭建起來之后,機(jī)器學(xué)習(xí)系統(tǒng)的上下游也都可以工作,也可以更好地判斷系統(tǒng)的瓶頸所在,把好剛用在刀刃上。這其實(shí)就與做開發(fā)的程序設(shè)計(jì)一樣,較早地抽象出比較好的接口、搭建一個(gè)系統(tǒng)原型是很重要的。
能夠持續(xù)學(xué)習(xí)新的知識(shí),跟蹤最新的成果,對(duì)各種模型的motivation有自己的理解,有自己的insight與vision。這里舉幾個(gè)我自己學(xué)習(xí)過程中碰到的例子來說明一下這點(diǎn)。例如,推薦系統(tǒng)中,在Youtube 16年的推薦paper中,為何step1和step2的優(yōu)化目標(biāo)是不一樣的?人臉檢測(cè)中,MTCNN為何要分為多階段?landmark檢測(cè)中,3000FPS為何要分為兩個(gè)階段?(這些是設(shè)計(jì)相關(guān)的motivation)Google的wide&deep為何在Google store的場(chǎng)景下效果好,而在其他的場(chǎng)景下效果不一定好(這是對(duì)場(chǎng)景的motivation理解)?文字檢測(cè)中,PixelLink為何要引入link?OCR中,CRNN為何要引入一個(gè)RNN?機(jī)器學(xué)習(xí)系統(tǒng)中,LightGBM是如何針對(duì)xgboost存在的哪些缺點(diǎn)進(jìn)行改進(jìn)的?(這些是對(duì)改進(jìn)的motivation理解)我認(rèn)識(shí)的一些大佬們會(huì)主動(dòng)結(jié)合文章思考這些問題,有的時(shí)候會(huì)有與paper所claim的不同的理解(畢竟寫paper的story很多時(shí)候也不一定靠譜,大家都懂),甚至還會(huì)做實(shí)驗(yàn)驗(yàn)證自己的理解。然后拿這些問題來考我,在我思考不出來后再告訴我他們的理解與實(shí)驗(yàn)結(jié)果Orz
做多數(shù)實(shí)驗(yàn)之前有自己的假設(shè),根據(jù)實(shí)驗(yàn)結(jié)果會(huì)根據(jù)實(shí)驗(yàn)結(jié)果做進(jìn)一步實(shí)驗(yàn),或修正假設(shè)、或進(jìn)一步探究。
自己參與的項(xiàng)目,對(duì)其中與自己比較相關(guān)的內(nèi)容的細(xì)節(jié)比較清楚,自己負(fù)責(zé)的部分能夠了如指掌。
能系統(tǒng)性地分析出機(jī)器學(xué)習(xí)整個(gè)系統(tǒng)的瓶頸所在,并提出相應(yīng)的解決方案。當(dāng)系統(tǒng)效果不好的時(shí)候,知道如何去debug,找到問題所在,改進(jìn)系統(tǒng)的性能。這方面是我個(gè)人尤其欠缺的點(diǎn)。
相應(yīng)地,這些也是我要努力提升的地方。如果我是面試官,我想我也會(huì)從這些方面去考察算法工程師的候選人。當(dāng)然了,以上幾點(diǎn)不一定要面面俱到,例如很多大佬不一定工程能力很強(qiáng),但仍然可以做出很好的東西。換言之,上述特點(diǎn)的precision應(yīng)該很高,但recall不一定特別高。不過,在我看來,與以上描述相反的算法工程師,即基礎(chǔ)不牢、工程差勁、不做測(cè)試、不怎么考慮場(chǎng)景、在搭建起pipeline之前過早地沉迷于某一步的優(yōu)化、不學(xué)習(xí)新東西、拿所有實(shí)驗(yàn)當(dāng)黑箱煉丹等等,這樣的算法工程師(其實(shí)就是我了)在我看來就比較一般。而差勁的算法工程師,在我看來,是不僅這些方面做不好,還瞧不起這些方面的人。
閱讀過本文的人還看了以下文章:
TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)
基于40萬(wàn)表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測(cè)
《基于深度學(xué)習(xí)的自然語(yǔ)言處理》中/英PDF
Deep Learning 中文版初版-周志華團(tuán)隊(duì)
【全套視頻課】最全的目標(biāo)檢測(cè)算法系列講解,通俗易懂!
《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf
《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼
python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目
2019最新《PyTorch自然語(yǔ)言處理》英、中文版PDF+源碼
《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼
《深度學(xué)習(xí)之pytorch》pdf+附書源碼
PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評(píng)分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識(shí)圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)
李沐大神開源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼
將機(jī)器學(xué)習(xí)模型部署為REST API
FashionAI服裝屬性標(biāo)簽圖像識(shí)別Top1-5方案分享
重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識(shí)別
同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?
前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測(cè)
【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類
VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識(shí)別分類工程項(xiàng)目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級(jí)聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
全球AI挑戰(zhàn)-場(chǎng)景分類的比賽源碼(多模型融合)
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識(shí)別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競(jìng)賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程
不斷更新資源
深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python
?搜索公眾號(hào)添加:?datayx??
機(jī)大數(shù)據(jù)技術(shù)與機(jī)器學(xué)習(xí)工程
?搜索公眾號(hào)添加:?datanlp
長(zhǎng)按圖片,識(shí)別二維碼
