1. 機器學習演算法工程師必備技能
【導讀】成為合格的機器學習演算法工程師並非易事。您需要掌握從開發到調試再到優化的一系列功能。這些功能中的每一個都需要足夠的精力和經驗來掌握。成為合格的機器學習演算法工程師(以下簡稱演算法工程師)更加困難,因為除了掌握工程師的一般技能外,您還需要掌握機器學習演算法的知識網路。下面我們就將成為一名合格的演算法工程師所需的技能進行拆分,一起來看一下究竟需要掌握哪些技能才能算是一名合格的演算法工程師。
2. 從小白到機器學習演算法工程師,我做了哪些准備
機器學習方面的面試主要分成三個部分: 1. 演算法和理論基礎 2. 工程實現能力與編碼水平 3. 業務理解和思考深度 1. 理論方面,我推薦最經典的一本書《統計學習方法》,這書可能不是最全的,但是講得最精髓,薄薄一本,適合面試前突擊准備。 我認為一些要點是: 統計學習的核心步驟:模型、策略、演算法,你應當對logistic、SVM、決策樹、KNN及各種聚類方法有深刻的理解。能夠隨手寫出這些演算法的核心遞歸步的偽代碼以及他們優化的函數表達式和對偶問題形式。 非統計學習我不太懂,做過復雜網路,但是這個比較深,面試可能很難考到。 數學知識方面,你應當深刻理解矩陣的各種變換,尤其是特徵值相關的知識。 演算法方面:你應當深刻理解常用的優化方法:梯度下降、牛頓法、各種隨機搜索演算法(基因、蟻群等等),深刻理解的意思是你要知道梯度下降是用平面來逼近局部,牛頓法是用曲面逼近局部等等。 2. 工程實現能力與編碼水平 機器學習從工程實現一般來講都是某種數據結構上的搜索問題。 你應當深刻理解在1中列出的各種演算法對應應該採用的數據結構和對應的搜索方法。比如KNN對應的KD樹、如何給圖結構設計數據結構?如何將演算法map-red化等等。 一般來說要麼你會寫C,而且會用MPI,要麼你懂Hadoop,工程上基本都是在這兩個平台實現。實在不濟你也學個python吧。 3. 非常令人失望地告訴你盡管機器學習主要會考察1和2 但是實際工作中,演算法的先進性對真正業務結果的影響,大概不到30%。當然演算法必須要足夠快,離線演算法最好能在4小時內完成,實時演算法我沒搞過,要求大概更高。 機器學習大多數場景是搜索、廣告、垃圾過濾、安全、推薦系統等等。對業務有深刻的理解對你做出來的系統的結果影響超過70%。這里你沒做過實際的項目,是完全不可能有任何體會的,我做過一個推薦系統,沒有什麼演算法上的高大上的改進,主要是業務邏輯的創新,直接就提高了很明顯的一個CTR(具體數目不太方便透露,總之很明顯就是了)。如果你做過實際的項目,一定要主動說出來,主動讓面試官知道,這才是最大最大的加分項目。 最後舉個例子,阿里內部機器學習挑戰賽,無數碾壓答主10000倍的大神參賽。最後冠軍沒有用任何高大上的演算法而是基於對數據和業務的深刻理解和極其細致的特徵調優利用非常基本的一個演算法奪冠。所以啥都不如真正的實操擼幾個生產項目啊。
3. 機器學習演算法工程師用什麼編程語言
《1-歡迎學習機器學習納米學位工程師課程(進階)》網路網盤資源免費下載
鏈接:https://pan..com/s/1bpulI-RAj4pLvncJMDuSdQ
-歡迎學習機器學習納米學位工程師課程(進階)|3-探索性項目-泰坦尼克號倖存者分析|2-從人工智慧到機器學習|1-歡迎學習機器學習工程師|說明.docx|4-學習項目介紹.mp4|3-機器學習無處不在.mp4|3-機器學習無處不在 答案.mp4|3-機器學習無處不在|2-機器學習與傳統編程的異同.mp4|1-歡迎來到機器學習課程.mp4|9-基礎知識:人工智慧的四個學派.mp4|8-什麼是基於知識的人工智慧?.mp4|7-人工智慧的實際運用:Watson.mp4|7-人工智慧的實際運用:Watson 答案.mp4
4. 成為python全棧工程師需要掌握哪些知識
【導讀】Python全棧工程師,是從前端頁面的實現,到後台代碼的編寫,再到資料庫的管理,一人可以搞定一個公司網站的所有事情,真正實現全棧開發。這門職業的要求相對比較高,要求python全棧工程師具有完整成熟的技術和知識,那麼成為python全棧工程師需要掌握哪些知識?
第一,Python語言基本語法。
Python語言的基本語法掌握起來並不困難,甚至可以說非常簡單,因為Python是腳本語言,所以語法也比較直接
第二,Python做Web開發。
Python是Web開發的傳統三大解決方案之一(還包括java和PHP),Web開發是全棧工程師必須掌握的內容。用Python做Web開發需要學習對應的框架,比如Django。
第三,Python做數據分析。
Python做數據分析是一個比較常見的應用場景,Python做數據分析需要學習對應的演算法以及實現過程。會使用到的庫包括Numpy、matplotlib等。
第四,Python做爬蟲。
Python做爬蟲應用是一個非常常見的應用,有大量的案例可以參考。
第五,Python做機器學習類應用。
Python目前在機器學習領域(人工智慧相關)的應用非常普遍,所以對於Python全棧工程師來說,掌握機器學習相關的內容也是有必要的。需要掌握的演算法包括決策樹、樸素貝葉斯、回歸、kNN分類等,同時需要掌握基本的線性代數和概率論相關知識。
以上就是python全棧工程師知識的相關內容,就和大家分享到這里了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。
5. 如何成為一名合格的演算法工程師
BAT企業的演算法工程師是這樣工作的:問題抽象、數據採集和處理、特徵工程、建模訓練調優、模型評估、上線部署。(具體操作可以看阿里演算法專家chris老師的演算法工作流視頻演算法工作流是怎樣的?)而一個演算法工程師真正值錢的地方在於問題抽象和上線部署這兩個。
6. 演算法工程師應該學哪些
一、演算法工程師簡介
(通常是月薪15k以上,年薪18萬以上,只是一個概數,具體薪資可以到招聘網站如拉鉤,獵聘網上看看)
演算法工程師目前是一個高端也是相對緊缺的職位;
演算法工程師包括
音/視頻演算法工程師(通常統稱為語音/視頻/圖形開發工程師)、圖像處理演算法工程師、計算機視覺演算法工程師、通信基帶演算法工程師、信號演算法工程師、射頻/通信演算法工程師、自然語言演算法工程師、數據挖掘演算法工程師、搜索演算法工程師、控制演算法工程師(雲台演算法工程師,飛控演算法工程師,機器人控制演算法)、導航演算法工程師(
@之介
感謝補充)、其他【其他一切需要復雜演算法的行業】
專業要求:計算機、電子、通信、數學等相關專業;
學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;
語言要求:英語要求是熟練,基本上能閱讀國外專業書刊,做這一行經常要讀論文;
必須掌握計算機相關知識,熟練使用模擬工具MATLAB等,必須會一門編程語言。
演算法工程師的技能樹(不同方向差異較大,此處僅供參考)
1 機器學習
2 大數據處理:熟悉至少一個分布式計算框架Hadoop/Spark/Storm/ map-rece/MPI
3 數據挖掘
4 扎實的數學功底
5 至少熟悉C/C++或者Java,熟悉至少一門編程語言例如java/python/R
加分項:具有較為豐富的項目實踐經驗(不是水論文的哪種)
二、演算法工程師大致分類與技術要求
(一)圖像演算法/計算機視覺工程師類
包括
圖像演算法工程師,圖像處理工程師,音/視頻處理演算法工程師,計算機視覺工程師
要求
l
專業:計算機、數學、統計學相關專業;
l
技術領域:機器學習,模式識別
l
技術要求:
(1) 精通DirectX HLSL和OpenGL GLSL等shader語言,熟悉常見圖像處理演算法GPU實現及優化;
(2) 語言:精通C/C++;
(3) 工具:Matlab數學軟體,CUDA運算平台,VTK圖像圖形開源軟體【醫學領域:ITK,醫學圖像處理軟體包】
(4) 熟悉OpenCV/OpenGL/Caffe等常用開源庫;
(5) 有人臉識別,行人檢測,視頻分析,三維建模,動態跟蹤,車識別,目標檢測跟蹤識別經歷的人優先考慮;
(6) 熟悉基於GPU的演算法設計與優化和並行優化經驗者優先;
(7) 【音/視頻領域】熟悉H.264等視頻編解碼標准和FFMPEG,熟悉rtmp等流媒體傳輸協議,熟悉視頻和音頻解碼演算法,研究各種多媒體文件格式,GPU加速;
應用領域:
(1) 互聯網:如美顏app
(2) 醫學領域:如臨床醫學圖像
(3) 汽車領域
(4) 人工智慧
相關術語:
(1) OCR:OCR (Optical Character Recognition,光學字元識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上列印的字元,通過檢測暗、亮的模式確定其形狀,然後用字元識別方法將形狀翻譯成計算機文字的過程
(2) Matlab:商業數學軟體;
(3) CUDA: (Compute Unified Device Architecture),是顯卡廠商NVIDIA推出的運算平台(由ISA和GPU構成)。 CUDA™是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決復雜的計算問題
(4) OpenCL: OpenCL是一個為異構平台編寫程序的框架,此異構平台可由CPU,GPU或其他類型的處理器組成。
(5) OpenCV:開源計算機視覺庫;OpenGL:開源圖形庫;Caffe:是一個清晰,可讀性高,快速的深度學習框架。
(6) CNN:(深度學習)卷積神經網路(Convolutional Neural Network)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。
(7) 開源庫:指的是計算機行業中對所有人開發的代碼庫,所有人均可以使用並改進代碼演算法。
(二)機器學習工程師
包括
機器學習工程師
要求
l
專業:計算機、數學、統計學相關專業;
l
技術領域:人工智慧,機器學習
l
技術要求:
(1) 熟悉Hadoop/Hive以及Map-Rece計算模式,熟悉Spark、Shark等尤佳;
(2) 大數據挖掘;
(3) 高性能、高並發的機器學習、數據挖掘方法及架構的研發;
應用領域:
(1)人工智慧,比如各類模擬、擬人應用,如機器人
(2)醫療用於各類擬合預測
(3)金融高頻交易
(4)互聯網數據挖掘、關聯推薦
(5)無人汽車,無人機
相關術語:
(1) Map-Rece:MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。
(三)自然語言處理工程師
包括
自然語言處理工程師
要求
l
專業:計算機相關專業;
l
技術領域:文本資料庫
l
技術要求:
(1) 熟悉中文分詞標注、文本分類、語言模型、實體識別、知識圖譜抽取和推理、問答系統設計、深度問答等NLP 相關演算法;
(2) 應用NLP、機器學習等技術解決海量UGC的文本相關性;
(3) 分詞、詞性分析、實體識別、新詞發現、語義關聯等NLP基礎性研究與開發;
(4) 人工智慧,分布式處理Hadoop;
(5) 數據結構和演算法;
應用領域:
口語輸入、書面語輸入
、語言分析和理解、語言生成、口語輸出技術、話語分析與對話、文獻自動處理、多語問題的計算機處理、多模態的計算機處理、信息傳輸與信息存儲 、自然語言處理中的數學方法、語言資源、自然語言處理系統的評測。
相關術語:
(2) NLP:人工智慧的自然語言處理,NLP (Natural Language Processing) 是人工智慧(AI)的一個子領域。NLP涉及領域很多,最令我感興趣的是「中文自動分詞」(Chinese word segmentation):結婚的和尚未結婚的【計算機中卻有可能理解為結婚的「和尚「】
(四)射頻/通信/信號演算法工程師類
包括
3G/4G無線通信演算法工程師, 通信基帶演算法工程師,DSP開發工程師(數字信號處理),射頻通信工程師,信號演算法工程師
要求
l
專業:計算機、通信相關專業;
l
技術領域:2G、3G、4G,BlueTooth(藍牙),WLAN,無線移動通信, 網路通信基帶信號處理
l
技術要求:
(1) 了解2G,3G,4G,BlueTooth,WLAN等無線通信相關知識,熟悉現有的通信系統和標准協議,熟悉常用的無線測試設備;
(2) 信號處理技術,通信演算法;
(3) 熟悉同步、均衡、信道解碼等演算法的基本原理;
(4) 【射頻部分】熟悉射頻前端晶元,扎實的射頻微波理論和測試經驗,熟練使用射頻電路模擬工具(如ADS或MW或Ansoft);熟練使用cadence、altium designer PCB電路設計軟體;
(5) 有扎實的數學基礎,如復變函數、隨機過程、數值計算、矩陣論、離散數學
應用領域:
通信
VR【用於快速傳輸視頻圖像,例如樂客靈境VR公司招募的通信工程師(數據編碼、流數據)】
物聯網,車聯網
導航,軍事,衛星,雷達
相關術語:
(1) 基帶信號:指的是沒有經過調制(進行頻譜搬移和變換)的原始電信號。
(2) 基帶通信(又稱基帶傳輸):指傳輸基帶信號。進行基帶傳輸的系統稱為基帶傳輸系統。傳輸介質的整個信道被一個基帶信號佔用.基帶傳輸不需要數據機,設備化費小,具有速率高和誤碼率低等優點,.適合短距離的數據傳輸,傳輸距離在100米內,在音頻市話、計算機網路通信中被廣泛採用。如從計算機到監視器、列印機等外設的信號就是基帶傳輸的。大多數的區域網使用基帶傳輸,如乙太網、令牌環網。
(3) 射頻:射頻(RF)是Radio Frequency的縮寫,表示可以輻射到空間的電磁頻率(電磁波),頻率范圍從300KHz~300GHz之間(因為其較高的頻率使其具有遠距離傳輸能力)。射頻簡稱RF射頻就是射頻電流,它是一種高頻交流變化電磁波的簡稱。每秒變化小於1000次的交流電稱為低頻電流,大於10000次的稱為高頻電流,而射頻就是這樣一種高頻電流。高頻(大於10K);射頻(300K-300G)是高頻的較高頻段;微波頻段(300M-300G)又是射頻的較高頻段。【有線電視就是用射頻傳輸方式】
(4) DSP:數字信號處理,也指數字信號處理晶元
(五)數據挖掘演算法工程師類
包括
推薦演算法工程師,數據挖掘演算法工程師
要求
l
專業:計算機、通信、應用數學、金融數學、模式識別、人工智慧;
l
技術領域:機器學習,數據挖掘
l
技術要求:
(1) 熟悉常用機器學習和數據挖掘演算法,包括但不限於決策樹、Kmeans、SVM、線性回歸、邏輯回歸以及神經網路等演算法;
(2) 熟練使用SQL、Matlab、Python等工具優先;
(3) 對Hadoop、Spark、Storm等大規模數據存儲與運算平台有實踐經驗【均為分布式計算框架】
(4) 數學基礎要好,如高數,統計學,數據結構
l
加分項:數據挖掘建模大賽;
應用領域
(1) 個性化推薦
(2) 廣告投放
(3) 大數據分析
相關術語
Map-Rece:MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。
(六)搜索演算法工程師
要求
l
技術領域:自然語言
l
技術要求:
(1) 數據結構,海量數據處理、高性能計算、大規模分布式系統開發
(2) hadoop、lucene
(3) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗
(4) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗;
(5) 精通倒排索引、全文檢索、分詞、排序等相關技術;
(6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架;
(7) 優秀的資料庫設計和優化能力,精通MySQL資料庫應用 ;
(8) 了解推薦引擎和數據挖掘和機器學習的理論知識,有大型搜索應用的開發經驗者優先。
(七)控制演算法工程師類
包括了雲台控制演算法,飛控控制演算法,機器人控制演算法
要求
l
專業:計算機,電子信息工程,航天航空,自動化
l
技術要求:
(1) 精通自動控制原理(如PID)、現代控制理論,精通組合導航原理,姿態融合演算法,電機驅動,電機驅動
(2) 卡爾曼濾波,熟悉狀態空間分析法對控制系統進行數學模型建模、分析調試;
l
加分項:有電子設計大賽,機器人比賽,robocon等比賽經驗,有硬體設計的基礎;
應用領域
(1)醫療/工業機械設備
(2)工業機器人
(3)機器人
(4)無人機飛控、雲台控制等
(八)導航演算法工程師
要求
l 專業:計算機,電子信息工程,航天航空,自動化
l 技術要求(以公司職位JD為例)
公司一(1)精通慣性導航、激光導航、雷達導航等工作原理;
(2)精通組合導航演算法設計、精通卡爾曼濾波演算法、精通路徑規劃演算法;
(3)具備導航方案設計和實現的工程經驗;
(4)熟悉C/C++語言、熟悉至少一種嵌入式系統開發、熟悉Matlab工具;
公司二(1)熟悉基於視覺信息的SLAM、定位、導航演算法,有1年以上相關的科研或項目經歷;
(2)熟悉慣性導航演算法,熟悉IMU與視覺信息的融合;
應用領域
無人機、機器人等。
7. 演算法工程師是做什麼的真正做過的回答,怎麼去做一個演算法工程師與機器學習哪個好一些
演算法工程師是這樣工作的:問題抽象、數據採集和處理、特徵工程、建模訓練調優、模型評估、上線部署。而一個演算法工程師真正值錢的地方在於問題抽象和上線部署這兩個。
那麼怎麼去做一個演算法工程師?演算法工程師是一個非常高端的職位;是非常緊缺的專業工程師,兼具前途和錢途!
1.專業要求:計算機、電子、通信、數學等相關專業;
2.學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;
3.語言要求:英語要求是熟練,基本上能閱讀國外專業書刊;
必須掌握計算機相關知識,熟練使用模擬工具MATLAB等,必須會一門編程語言。
機器學習是一門多領域交叉學科,涉及概率論、統計學、凸分析、演算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。它是人工智慧的核心,是使計算機具有智能的根本途徑,其應用遍及人工智慧的各個領域,它主要是歸納、綜合,而不是演繹。
關於演算法工程師的相關學習,推薦CDA數據師的相關課程,課程內容兼顧培養解決數據挖掘流程問題的橫向能力以及解決數據挖掘演算法問題的縱向能力。要求學生具備從數據治理根源出發的思維,通過數字化工作方法來探查業務問題,通過近因分析、宏觀根因分析等手段,再選擇業務流程優化工具還是演算法工具,而非「遇到問題調演算法包」點擊預約免費試聽課。
8. 干貨分享 | AI研發工程師成長指南
作者 | Japson
來源 | 木東居士
0x00 前言
首先,《AI研發工程師成長指南》這個題目其實有些標題黨了,准確地來說,本文內容應該是:「要想成為一名AI研發工程師,需要具備哪些技能」。
其次,本文對「AI研發工程師」這個title的定義,也並不是大家第一印象中的「演算法工程師」、「數據科學家」。
再次,本文實際上作者結合現階段行業發展、技術趨勢以及自身工作性質做出的關於自身定位、職業技能、發展方向的思考。就像魔獸世界中的「職業攻略」,當我們在游戲中新建一個角色時,會先去了解這個職業的特點、天賦、技能樹等信息,這樣才會在「練級」的過程中少走些彎路。
最後,作者不是從一個很高的角度來對整個成長體系進行一個全面地闡述。而是站在道路的地點,不斷摸索、不斷前進、不斷地調整自己的規劃。因此本文不算是Best Practices,勉強算是Beta version,也希望能和大家不斷交流,不斷「發版」。
0x01 關於AI行業的思考演算法工程師的門檻
AI演算法工程師年薪百萬,應屆畢業生年薪都有80w… 去年AI人才缺口就已經過百萬,今年將達500w… 加入《XXX訓練營》,XX天打造AI演算法工程師…在網路上充斥著各種類似上面那樣的吸引眼球的文章標題,向你訴說著人工智慧這一火的不能再火的領域美好的前景。彷彿我們看了兩遍西瓜書、處理了MNIST和幾朵鳶尾花、在自己的筆記本電腦上掉了幾個包、得到了和教程上一樣的結果,打了幾場比賽,我們就已經拿到了AI領域的通行證、成功轉型演算法工程師、接大廠offer到手軟了一樣。
但實際,現在AI演算法工程師的就業難度和准入門檻,遠比我們想像的要高。
上一張網路上流傳的「諸神黃昏」吧
可以說一點不誇張,現在很多大廠的校招演算法崗,門檻就是海外名校/985工科院校的博士/碩士。除了擁有與學歷匹配的學術能力以外,工程基礎也要非常扎實。
有人說:「我看網上說,AI人才缺口非常大,我不去大廠不就行了?其他的公司要求沒那麼高吧?」
要求高不高我不知道,但是有一下兩點:
絕大多數公司,是不需要僱傭AI演算法工程師,即沒有相關的業務需求,也負擔不起演算法團隊的開銷 2019年研究生報考人數290萬人,預計招生70萬人,其中計算機是熱門專業,並且其中多數人的研究方向都是: 機器學習、數據挖掘之類。此間競爭之激烈,諸如此類,雖未得其皮毛,也略見一斑。
AI企業痛點
當然,我說這些不是為了打擊大家的信心,而是要指出現在行業內的痛點:AI工程化。
人工智慧發展到現階段,已經從實驗室中的演算法走向了工程化應用的階段。但是演算法落地並沒有想像中的順利,開始有越來越多諸如場景碎片化、應用成本高、實驗室場景到實際應用場景效果差距較大等問題被暴露出來,而這些也成為當前階段AI落地應用過程中新的痛點。
領域內高水平的paper都是公開發表的,除了少數的核心演算法,人才濟濟的AI企業很難在演算法性能上與友商拉開距離。那麼AI企業想要商業化,想要創收,行業細分領域縱深成了決定成敗的重要因素。需要下沉到業務領域,真刀真槍地進行拼殺。
在技術突破-商業化-產品化-工程化的階段路線中,除了技術強,接下來還有很多路要走。誰能夠更好更快地把演算法從實驗室中拿出來、賣出去;更好更快地將模型交付到業務場景,真正產生實際的價值,讓客戶滿意,誰才能活得更久。
對於Scientist/Researcher而言,技術可以是一篇論文、一項 ImageNet 競賽的冠軍、也可以是一個重要數值(比如人臉識別准確率)的突破;但在商務側來說,論文與冠軍並不實用,如果技術無法融進安防、汽車、金融等行業,變成切切實實的產品,客戶與合作夥伴就會拒絕買單。
對於AI企業來說,能否深入了解各行業的業務流程、業務規則、知識經驗,進而將技術能力轉化為業務解決方案創造價值,是發展的保障。
那麼對於我們個人來說,應該如何發展呢?
0x02 AI研發AI工程化
在《ML/DL科普向:從sklearn到tensorflow》一文中,我們談到:
…… 那麼對於我們這些非演算法崗位的人來說,就沒有辦法涉及這一領域了么?其實我認為,對於企業來說,對於AI人才的需求分為兩種:一種是學術界的牛人,發過大paper,有學術界比賽的結果的。公司需要他們去做演算法研究,保持技術的領先性,在業內贏得口碑,這樣才能在領域內保持頭部領域。另一方面,人工智慧早已不是一個概念了,企業需要把業務部門的演算法落地的人,能夠快速、穩定、高效地把實驗室中的演算法落實到生產環境中,解決實際問題的人。這就需要那些工程底子扎實、能夠實打實地寫代碼,並且對演算法模型理解深刻,能夠快速將AI項目工程化、落地有產出的復合型人才。
還是基於這個觀點,我決定將自身的技能樹偏向企業需要的第二種人,也就是標題所提出的「AI研發工程師」。從實際的工程應用角度出來,focus人工智慧項目落地的全流程以及解決方法,提高自己的AI工程化能力,以此作為個人核心競爭力。
AI項目全流程
網路上很多文章描述的所謂「機器學習項目全流程」,例如:數據收集處理、特徵工程、訓練模型、模型測試等等。這套流程對不對?對。但是遠遠不能滿足企業的需求。
AI項目是團隊創造出的具有商業價值的產品、服務以及交付產物。有著明確的需求、計劃、周期、成本、交付流程以及驗收標准。
以下以toB業務為例,對AI項目全流程進行簡單梳理。toC業務大體如此,只是將客戶替換成公司業務方即可。
初步需求溝通確認 該環節主要是由銷售、售前完成。了解客戶的基本情況,輔助客戶根據自身業務挖掘AI應用場景。根據實際的業務需求、數據質量、硬體資源、期望產物來評估具體的方案以及建模思路。 POC階段 Proof of Concept。在完成初步的評估之後,團隊需要針對客戶具體應用進行驗證性測試,包括確定業務場景邊界、業務評判指標、數據調研、資源需求、硬體/平台部署等。 場景方案確認 該環節需要售前、科學家、工程師等多角色與客戶進行細致的場景溝通,明確需求、確定驗收標准、評估工作量。因為該階段結束後即輸出SOW方案,因此需要反復溝通商榷。 建模開發階段 4.1項目詳細規劃 項目經理根據前期資料提供詳細的方案設計、功能清單、資源投入、里程碑安排等內容,召開項目啟動會,明確項目內容及分工職責。 4.2數據處理 科學家在明確業務場景及需求後,對數據處理。其內容包括:數據質量檢查、ETL處理(工作量較大)。還要對清洗後的數據進行探索性數據分析(Exploratory Data Analysis)以及可視化展示。EDA能夠幫助我們在探索階段初步了解數據的結構及特徵,甚至發現一些模式和模型 4.3特徵工程 根據探索性分析得到的輸出,結合對具體業務的理解,對分散的數據拼表並進行特徵工程。 4.4建模 形成初版建模,並對根據業務需求評估標准進行效果驗證。後續需要不斷進行模型迭代,直到滿足需求,並做模型效果匯報。 4.5系統研發 將訓練好的模型發布服務、部署上線,開發外圍對接系統以及部分定製化功能的開發。輸出可運行的系統。 測試上線 對系統進行流程測試、性能測試,滿足需求後對項目進行交付&驗收。 0x03 核心競爭力&技能樹核心競爭力
通過對AI項目全流程的介紹,我們將目光瞄準到「建模開發階段」的「系統研發」部分。雖然在上面只是一句話帶過,但是其中的工作量和技術含量不小。
提起機器學習,尤其是深度學習,大家可能會對諸如Tensorflow,Pytorch,Caffee的工具耳熟能詳。但其實在實際的機器學習的生命周期中,訓練模型(上述工具主要解決的問題)只是整個機器學習生命周期的很小一部分。
數據如何准備?如何保證線上線下一致性?模型訓練好了如何分布式部署?如何構建HA?需要批量處理還是實時處理?實時數據如何拼接?如何對模型服務進行監控、告警?做成PaaS還是MLaaS?
機器學習具有天然的Pipline特性,在企業需求中,大大小小的業務場景有眾多的模型,這些模型如何進行打包、處理、發布?離線訓練、批量預估、實施預估、自學習等任務類型交錯,不同建模工具Sklearn、Tensorflow,Pytorch構造的模型如何進行整合?開發框架Spark ML、Flink ML等如何協同、對接。生產環境如何進行擴展和伸縮?如何支持AB Test?
為了解決這些問題,新生的開源框架層出不窮:Google自研的對接Kubernets和Tensorflow的開源平台Kubeflow;Spark團隊打造的ML pipelines輔助工具MLflow;雅虎提供的機器學習及服務平台BigML;阿里巴巴推出的分布式機器學習平台SQLflow等等。眾多廠商紛紛發力,目的就是解決AI工程化應用的痛點。
這些工作都是需要一大批工程師去完成。因此,我認為了解AI工程化場景、解決方案;熟悉AI項目流程、機器學習Pipline;掌握AI系統研發、服務部署上線能力的工程師將會逐漸成為AI團隊的中堅力量。
技能樹
之前鋪墊了那麼多,既是梳理思路,也是為接下來的系列做一個開篇。按照我的初步計劃,技能樹大概包括(不分先後):
工程能力: 身為工程師首先要有工程能力,springboot/Netty/Thrift/等相關工具框架一定要掌握,微服務是機器學習平台的基礎。 Spark SQL、Spark ML等更是大數據工程師用來做機器學習的利器,不但要掌握、更要從中抽象出流程和處理方法。 容器化: docker和k8s現在幾乎是機器學習部署的必備技能,也是眾多平台的基礎。 是重要的前置技能。 機器學習&深度學習: 不要求能夠手推演算法、模型優化,但要能夠了解含義、上手使用,起碼要成為一名優秀的調包俠(也便於吹水)。 開源框架: 其實我最近打算學習kubeflow,並輸出學習筆記及總結實踐。 本文其實是這個系列的開篇。 當然,後續還有有調整。 0xFF 後記其實這種類型的文章,比單純的學習筆記、技術文章難寫多了。一方面,拖延症迫使我把難寫的文章放在後面寫,另一方面,強迫症又迫使我一定要在系列前出一個開篇。其實寫到最後,總覺得核心部分還差點兒意思,沒有搔到癢處,這是因為目前我還沒有能力站在一個全局的角度對職業技術體系進行劃分,只能梳理出目前的規劃和看法。後續要還需和朋友們進行交流。
有些事情是一定要做的,縱觀一些大牛前輩,無一不是在正確的時候做了正確的事。明確自己的目標,在前進的道路上不斷微調自己的方向,這樣才能在這個競爭激烈的職業中生存下去。
接下來會有系列的技術學習筆記,考慮到學習的連貫性,前期可能是一些基礎的docker/k8s等系列,後期會研究一些開源框架。技術文章可能會枯燥乏味,知識點也缺乏新意,但是經過自己的整理和實踐,再加上自身的理解感悟,相信會不斷完善自己的知識體系。
9. 如何從普通JAVA程序員向機器學習演算法工程師轉變
建議先看兩類書:(1)計算機原理;(2)數據結構和演算法。(看數據結構之前先看C語言)。 第二. Java、.net、C++、PB、VB、Delphi、匯編到底應該學哪個?哪個最簡單就先學哪個、公司用哪個就學哪個、哪個和有緣(比如剛好認識一個願意
10. 演算法工程師是做什麼的真正做過的回答,怎麼去做一個演算法工程師與機器學習哪個好一些
演算法工程師不是也有一種叫做機器學習演算法工程師嗎?怎麼把演算法工程師和機器學習兩個分開了?
這是我上周聽過的阿里的一位演算法專家的直播課內容:
BAT企業的演算法工程師是這樣工作的:問題抽象、數據採集和處理、特徵工程、建模訓練調優、模型評估、上線部署。而一個演算法工程師真正值錢的地方在於問題抽象和上線部署這兩個。
他剛好講到企業中的演算法工程師的實際工作流程是怎樣的?以及如何成為演算法工程師,就是需要掌握哪些重要技能?
推薦給你看下咯:菜鳥窩人工智慧特訓營你只需要看第一章就好了,聽完之後就能解答你的提問了。