AI 算法工程師的 7 年總結,內部經驗放出(文末附教程)

2019-07-29     naiveai

入行前5年在一家上市遊戲公司做算法,從數據挖掘算法在業務線落地開始,涉及機器學習、深度學習,後來逐步負責整個算法團隊建設。

現在在阿里,也是負責算法方面的工作,涉及到的領域涵蓋CV、NLP、架構等,業務線也擴展到廣告、運營、客服、風控等各個方面。

算法崗競爭很激烈嗎?

在外行人眼中,算法工程師可能拿到最近某大神新發的Paper,或者自己鑽研理論推公式產出理論成果,通過並行編程實現其支持大規模數據訓練,然後打敗現有模型,ctr提升200%,收入提高200%,年薪百萬。然而實際情況是:

理想中的算法工程師:提出假設->收集數據->訓練模型->解釋結果。

實際中的算法工程師:提出假設->收集數據->預處理->預處理->訓練模型->調試->調試->重新收集數據->預處理->收集更多數據->調試->調試->調試->…->放棄

特作為算法部門負責人,我曾經面試過很多候選人,通常我會從邏輯思維、基礎算法與數據結構、數學、深度學習、表達能力和工程經驗等幾個方面考察。

我發現其實很多人只是自認為懂得算法,刷了一遍西瓜書就敢出來面試了,另外有數理基礎的應屆生,算法掌握得也不錯,但實際3年可能寫了不到1000行代碼,實操能力極差。

在面試了好幾個簡歷優秀的年輕人後,我驚訝得發現原來很多初學者對數據分析/數據挖掘/機器學習工程師等崗位實際上的工作流都不是很了解,導致職業技能偏差。這就是為什麼,企業收到的簡歷越來越多,但公司實際可用的就那麼一兩個,而且開價超預算50%,忍痛簽下還可能被同行挖走了。

那麼算法崗位具體的工作流程是怎樣的?

我們先來用一個小型NLP項目流程來舉例,讓大家了解機器學習項目的大的環境:

1.了解需求,獲取數據。與產品和運營開會,了解需求,然後提取公司積累大量的數據和自己網上下載、爬取的數據。

2.數據預處理。數據處理大概會占到整個50%-70%的工作量,永遠記住好的數據要優於好的算法。我們通過數據洗清、分詞、詞性標註、去停用詞四個大的方面來完成語料的預處理工作。

3.特徵工程。做完語料預處理之後,接下來需要考慮如何把分詞之後的字和詞語表示成計算機能夠計算的類型。把中文分詞的字符串轉換成數字,有兩種常用的表示模型分別是詞袋模型和詞向量。

4.特徵選擇。構造好的特徵向量,是要選擇合適的、表達能力強的特徵。特徵選擇是一個很有挑戰的過程,更多的依賴於經驗和專業知識,並且有很多現成的算法來進行特徵的選擇。

5.模型訓練。對於不同的應用需求,我們使用不同的模型,傳統的有監督和無監督等機器學習模型,如 KNN、SVM、Naive Bayes、決策樹、GBDT、K-means 等模型;深度學習模型比如 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。

6.評價指標。訓練好的模型,上線之前要對模型進行必要的評估,目的讓模型對語料具備較好的泛化能力。

7.模型上線應用。模型線上應用,線下訓練模型,然後將模型做線上部署,發布成接口服務以供業務系統使用。

從以上流程來看,完成一個機器學習項目除了基本的程式語言、數學、大數據分析、算法外,在對業務理解上也提出了很高的要求。

不難發現,在對待具體業務上,算法工程師如何通過「實踐」提升自己的機器學習水平,以及如何通過機器學習/深度學習實際應用來改善企業的業務等級和營收能力至關重要。

我經常說算法只是工具,重要的是在正確的行業和產品認知上,實現業務目標。

所以有人恐慌算法工程師會被自己的算法替代,這是極其可笑的。機器可以做的雖然很多,但是無法代替人對數據的理解,這是算法工程師存在的價值。而Deep Learning雖然在某種程度上代替人提取特徵,但是它最多只能解決特徵變換問題,仍然處理不了數據清洗和預處理中需要用到領域知識的情況。

在我的經歷里,我傾向於算法工程師是技術+產品經理為一體的綜合型人才。

而對於跨專業的學生/從業者來說,跨界反而是優勢,不是障礙。特別是如果你作為本身是一個其他行業(物理,工程,化學,醫學,農業,衛星地圖識別,網絡安全領域,社會科學)的普通程式設計師,在本行業有比較深的理論和實驗背景,能接觸到海量數據,那麼你完全可以做一些創新性和交叉性的工作,這就是人工智慧+的人才。

現在有很多的機器學習課程和教科書,它們大都是關於如何從零開始製造烤箱,而不是如何烹飪和創新配方。這種學習路徑不僅僅難度大,而且90%的學習者沒有在一個方向上深入,不具備核心能力,也不符合企業的人才觀。

福利:

將為你解答以下疑問:

我適合學習人工智慧嗎?我是醫學生,現在AI醫療就業情況怎麼樣?數據分析/數據挖掘/算法工程師的區別及能力模型?算法工程師對算法需要理解到何種程度?模型選擇和參數調優技術,是否是通用的?深度學習算法的應用場景……(~你的所有疑惑,在這裡將全部解決!)

《機器學習從入門到實戰視頻課程》

一、Linux與python編程基礎

1. vmware虛擬機的安裝

2. centos6.9作業系統的安裝

3. linux基本命令使用

4. python介紹

5. python安裝

6. python環境安裝

7. 第一個python程序

8. pycharm(Python開發神器)的使用

9. 變量、整型、浮點型、字符串類型

10. 空值、布爾值、列表、元組、字典、集合

11. if條件語句、input函數

12. 循環語句

13. 函數介紹、函數的定義、函數的調用、函數的參數

14. 函數的返回值

15. 全局變量和局部變量

16. 學生管理系統框架

17. 學生管理系統的增加和查看模塊的編寫

18. 學生管理系統的修改和刪除、家庭作業

二、Python數據分析

19. Python數據科學入門

20. Python常用庫介紹

21. 數據分析環境搭建

22. Numpy數據類型和索引的處理

23. NumpyAPI和矩陣運算

24. Numpy高級特性和通用函數

25. Panda概述和Serise

26. Pandas_DataFrame精講

27. DataFrame和Series的索引

三、大數據與數據處理

28. 大數據是什麼

29. 大數據,人工智慧,機器學習三者的關係

30. 數據量與高並發(高並發一定是代表數據量大嗎?)

31. hadoop精講:HDFS簡介,架構組成,實操演練

32. hadoop精講:Mapreduce簡介,Wordcount實例,框架流程

33. spark簡介,環境搭建,集群安裝,實例演示

四、機器學習入門

34. 機器學習簡介

35. 機器學習開發環境

36. 機器學習IDE介紹

37. 機器學習基礎理論與哲理

38. 機器學習算法分類

39. 機器學習常見任務

40. 數據清洗

41. 數據標準化

42. Python與Sklearn數據標準化實踐

43. 機器學習中的相似性度量

44. KNN算法

45. 案例:基於 KNN (sklearn)的鳶尾花卉數據分類

46. 案例:基於 KNN(python)的鳶尾花卉數據分類

47. 一元線性回歸

48. 多元線性回歸

49. 多項式回歸

50. sklearn線性回歸實踐

51. python線性回歸實踐

52. 案例:基於線性回歸的廣告收益分析實戰

53. 邏輯回歸分類算法

54. 二分類分類器處理多分類問題

55. 案例:基於邏輯回歸(sklearn)的鳶尾花卉數據分類

56. 案例:基於邏輯回歸(python)的鳶尾花卉數據分類

五、機器學習5大實戰

57. 前言

58. 準備工作

59. 高端又一般的詞雲

60. DCgan人臉圖片生成

61. 股票價格預測

62. Tensorflow物體檢測

63. 天馬行空的Deep Dream

福利領取:,包含python基礎、數據分析、大數據、機器學習、實戰等五大類目的精華乾貨視頻,課件和源碼~

私信小編回復「012」即可領取!

文章來源: https://twgreatdaily.com/zh-tw/JuISQmwB8g2yegNDhYxc.html