1. 程式人生 > >如何做一名演算法應用工程師?

如何做一名演算法應用工程師?

1.定義

機器學習演算法,或者說“演算法工程師”這個職位名稱裡的“演算法”,並不是計算機系本科課程《演算法與資料結構》裡那個演算法。那門課裡講的,是排序、查詢這類”確定性演算法”;而這裡我們說的,是用統計方法對資料進行建模的”概率性演算法”。

1.1分類

演算法工程師分為兩類。其中一類是偏研究型的演算法工程師,例如復現paper,改善模型,發paper,出專利,這一類人才大都是科研大佬。第二類則是更加貼近業務的演算法工程師,不如稱為「演算法應用工程師」。這一類同學主要是與業務同學進行搭檔,通過現有的一些成熟模型來幫助業務同學解決問題。

2.主要工作

理想中的演算法工程師

:提出假設->收集資料->訓練模型->解釋結果。

實際中的演算法工程師:提出假設->收集資料->預處理->預處理->訓練模型->除錯->除錯->重新收集資料->預處理->收集更多資料->除錯->除錯->除錯->…->放棄。

每天最重要的就是跑資料!這不是段子,而是事實。為什麼“高大上”的演算法工程師實際上是個資料民工,要尋找這種理想與現實的差距的原因,首先要理解一個事實:只有人能夠理解資料,機器不能。不管我們用什麼機器學習演算法——無論是LR,SVM,k-means,EM——對於它們來說,輸入資料都是一堆浮點陣列成的矩陣而以(如果說的更本質一點,只是一堆01序列)。如果有一個特徵是“小時”,而它出現了25,任何一個智商正常的人類都能明白,這是一個錯誤,然後在資料清洗的時候把這樣的資料排除。但是機器就無法理解這一點。要具備小時的概念,又要理解什麼是時間,一天有多少個小時…機器怎麼能自動化完成這樣的資料清洗工作?更進一步,如果人發現“小時”這個特徵中大部分資料是0到12,而混入少量13(但13的數量又不是太少以至不能被當成離群點排除),人就會懷疑,是不是使用了12小時制而13是一個錯誤。機器目前是無法做到這一點的。

一位演算法工程師對自己工作的反思,寫得挺實在的

3.進階之路

在機器學習領域,演算法工程師腳下的進階之路是清晰的:當你掌握了工具、會改造模型,進而可以駕馭新問題的建模,就能成長為最優秀的人才。
20萬、50萬、100萬的演算法工程師,到底有什麼區別?

4.傳統模型VS深度學習模型

優秀的演算法工程師都是不用深度學習的
講的是為什麼有部分傳統的演算法工程師不願意使用深度學習演算法,雖然題目有點譁眾取寵,但是問題角度還是挺值得深思的。