你見過最差的演算法工程師能差到什麼程度?
連結:
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
先歪個題,從反面回答一下,我碰到什麼樣的演算法工程師會認為他/她是優秀甚至是卓越的大佬,並選擇緊緊抱住大腿不鬆手。之前與
- 基礎非常紮實。問他/她一些比較經典的演算法,能夠很清晰地說出演算法的特點、適用的場景、坑點、裡面的細節等等。
- 工程能力很強。我是一位“工程狗”,自己的工程能力很菜,但對工程能力強的同學非常崇拜 Orz 如果碰到一位演算法工程師的工程能力很強,僅憑這一點,我就認為他/她基本上一定是大佬Orz
- 重視程式碼的測試。演算法崗的工作並不完全就是調參煉丹,往往也是需要去寫一些程式碼的,例如寫些spark/sql程式碼獲得特徵,寫模型等等。既然是寫程式碼,就可以而且應該在其中加上測試。實際上,根據我的經驗,如果碰到某個其他地方好用的模型在自己的場景下效果很差(不reasonable得差),那很可能是資料、特徵的處理程式碼有問題,或者模型的程式碼有問題。這種問題可以用單元測試(斷言等)來提前發現,也可以用一些sanity check來發現。
- 對場景業務的認識很深刻。軟體工程沒有銀彈, 機器學習也沒有銀彈。用什麼樣的特徵、什麼樣的預估目標、什麼樣的評價指標、甚至什麼樣的模型,這些東西都是要與場景業務結合的。換言之,工業屆裡,業務先於技術。很多大神在這個方面做得尤其出色。
- 在實際場景中,注重先把整個pipeline搭建起來。個人認為,這一點在實際應用中往往應該是最優先的。搭建起來之後,機器學習系統的上下游也都可以工作,也可以更好地判斷系統的瓶頸所在,把好剛用在刀刃上。這其實就與做開發的程式設計一樣,較早地抽象出比較好的介面、搭建一個系統原型是很重要的。
- 能夠持續學習新的知識,跟蹤最新的成果,對各種模型的motivation有自己的理解,有自己的insight與vision。這裡舉幾個我自己學習過程中碰到的例子來說明一下這點。例如,推薦系統中,在Youtube 16年的推薦paper中,為何step1和step2的最佳化目標是不一樣的?人臉檢測中,MTCNN為何要分為多階段?landmark檢測中,3000FPS為何要分為兩個階段?(這些是設計相關的motivation)Google的wide&deep為何在Google store的場景下效果好,而在其他的場景下效果不一定好(這是對場景的motivation理解)?文字檢測中,PixelLink為何要引入link?OCR中,CRNN為何要引入一個RNN?機器學習系統中,LightGBM是如何針對xgboost存在的哪些缺點進行改進的?(這些是對改進的motivation理解)我認識的一些大佬們會主動結合文章思考這些問題,有的時候會有與paper所claim的不同的理解(畢竟寫paper的story很多時候也不一定靠譜,大家都懂),甚至還會做實驗驗證自己的理解。然後拿這些問題來考我,在我思考不出來後再告訴我他們的理解與實驗結果Orz
- 做多數實驗之前有自己的假設,根據實驗結果會根據實驗結果做進一步實驗,或修正假設、或進一步探究。
- 自己參與的專案,對其中與自己比較相關的內容的細節比較清楚,自己負責的部分能夠了如指掌。
- 能系統性地分析出機器學習整個系統的瓶頸所在,並提出相應的解決方案。當系統效果不好的時候,知道如何去debug,找到問題所在,改進系統的效能。這方面是我個人尤其欠缺的點。
相應地,這些也是我要努力提升的地方。如果我是面試官,我想我也會從這些方面去考察演算法工程師的候選人。當然了,以上幾點不一定要面面俱到,例如很多大佬不一定工程能力很強,但仍然可以做出很好的東西。換言之,上述特點的precision應該很高,但recall不一定特別高。不過,在我看來,與以上描述相反的演算法工程師,即基礎不牢、工程差勁、不做測試、不怎麼考慮場景、在搭建起pipeline之前過早地沉迷於某一步的最佳化、不學習新東西、拿所有實驗當黑箱煉丹等等,這樣的演算法工程師(其實就是我了)在我看來就比較一般。 而差勁的演算法工程師,在我看來,是不僅這些方面做不好,還瞧不起這些方面的人。
==============================================
這周面試了一個候選人,面CV/DL/AI的TechLead。簡歷很牛逼,做過很多CV的工業專案,涵蓋detection, OCR, face recognition, fire/smoke detection等好多專案. 給我們講了45分鐘做得專案,講得很自信。我挑了一個大專案,我說你在這個專案中的貢獻是什麼?他說整個專案的所有演算法部分都是他實現的。
OK,我開始進行深度學習的技術面。
我先問了兩個深度學習的中等難度的問題,他都說不知道。有點冷場,那我趕緊問點簡單的吧。我說,深度學習網路,進行分類時有哪些loss?他猶豫了一下,回答: relu.
瞬間把見過大場面的我還有同事都震住了。
作者:Guosheng Hu
連結:
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
==============================================
連結:
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
我們組一個年輕的印度小哥,UCSD畢業的,按說教育背景也不錯,寫model serving過程中的一步。每個request開20個執行緒計算。
我說你一個m*n複雜度的過程,m和n還都小於100,有必要開20個執行緒計算嗎?你那執行緒開銷絕對比平行計算收益大多了好嗎。不聽,給我說(大概意思):
平行計算比較cool,老老實實寫那個過程太boring。
行吧,不聽不聽吧,自己折騰去吧。
過兩天給我說load test的時候server的latency翻倍,我一看執行緒數都超過JVM上限了能不翻倍嗎。
講這個倒不是想取笑這小哥,而是跟大家討論一個問題,就是什麼是比“技術上最差”更糟糕的情況。
如果你只是基礎差,但總體上是一個嚴謹的人,其實到不那麼麻煩,就是按部就班的學習,按部就班的積攢工程經驗,無論是哪個領導還是老同事應該都是樂於幫助這樣的年輕人的,因為總體來說你還是在解決問題,哪怕速度慢一點,你總歸在成長,而且是讓系統整體混亂程度降低的。
最差的演算法工程師其實是什麼呢?是自己對技術的感覺很差,但對自己的感覺挺好,試圖用一些比較fancy的手段解決問題,但實質上引入了更高的系統複雜度,增加了系統潛在風險,這樣的人,其實對整個團隊是負能量的存在,始終需要更senior的人幫著擦屁股,這無形增加了整個團隊的工作量,這就是最差的演算法工程師。
我特別喜歡的一句話是:
“不帶評論的觀察是人類智慧的最高境界”
希望剛入行的演算法同事們能夠知道這句話的意義,其實公司不急於讓每個人都發表意見,在自己技術能力不那麼足的時候,不帶評論,不帶主觀情緒的去學習一段時間,好好思考一下別人為什麼要做出這樣的技術決策,好好積攢一下自己的技術感覺,這是最重要的。相信度過最初的積累階段之後,你能夠為團隊做出,為整個系統做出“熵減”的技術決策。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2692454/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 測試需要掌握演算法到什麼程度?演算法
- 起薪2萬的爬蟲工程師,Python需要學到什麼程度才可以就業?爬蟲工程師Python就業
- Java學到什麼程度能找到一份還不錯的工作Java
- 這可能是你見過最好的工程師繪圖指北工程師繪圖
- 《艾爾登法環》為什麼能夠火到這種程度?
- 你對全棧工程師的理解是什麼?全棧工程師
- [譯] 帶你瞭解什麼是工程師和工程師的影響力工程師
- 20萬到100萬年薪的演算法工程師有什麼區別?演算法工程師
- 程式設計師,你離年薪100萬差什麼?程式設計師
- Java學到什麼程度才能叫精通?Java
- 月薪兩萬的Java工程師需要達到什麼水平?Java工程師
- 前端工程師要做什麼?前端工程師需要什麼根本技能?前端工程師
- 為什麼你沒見過年終獎!
- 為什麼現在演算法工程師薪酬這麼高?演算法工程師
- 半路出家的程式設計師,學到什麼程度就能出去找工作了?程式設計師
- 你見過最目瞪狗呆的bug是什麼?
- 爬蟲學到什麼程度可以去找工作爬蟲
- Python學到什麼程度才可以去找工作?Python
- 什麼是SRE工程師?SRE工程師和運維有什麼區別?工程師運維
- 從前端工程師到前端架構師, 我們經歷了什麼?前端工程師架構
- 問答丨演算法工程師具體是做什麼的? 需要什麼樣的條件?演算法工程師
- 運維工程師是什麼?做什麼?運維工程師
- 線上峰值突破45萬 為什麼《地獄潛兵2》能火爆到這種程度?
- 學習Java到什麼程度拿的工資比較高?Java
- 好程式設計師Java培訓分享Java學習到什麼程度可以找到工作程式設計師Java
- 什麼是工程師思維工程師
- DevOps工程師到底做些什麼?dev工程師
- 中國特色新基建視覺化,工程監控畫面還能這麼美?你絕對沒見過視覺化
- SRE工程師到底是做什麼的?工程師
- Python工程師是做什麼的?前景如何?Python工程師
- Web前端工程師需要會什麼?Web前端工程師
- 扎心一問!你憑什麼成為top1%的Java工程師?Java工程師
- 2019 年,演算法工程師選什麼領域比較有前途?演算法工程師
- 演算法工程師為什麼成天做資料,都做哪些資料?演算法工程師
- Twitter能為你做什麼?
- 為什麼嫁人就要嫁Linux運維工程師,看完你就懂了…Linux運維工程師
- 程式設計師都遇見過什麼奇葩? 客戶: 你程式碼加這麼多註釋有病啊程式設計師
- Java學到什麼程度可以找到第一份工作Java