Ⅰ 想做一名演算法工程師需要學什麼
1、業務認知&問題定位
首先要清楚你所要解決的問題是什麼,是否需要復雜的演算法求解。問題的定義來源於你對業務的認知和理解。我們經常陷入一種誤區,覺得自己是一名演算法工程師,遇到任務問題都想要用復雜的演算法去求解。正所謂一頓操作猛如虎,得來的效果卻很一般。因此,做事之前一定要在理解業務的基礎上,把問題定位清楚,用合適的方法求解。
2、數據挖掘&分析
深度學習的應用能夠突飛猛進的一個重要原因就是大數據的支撐。當前獲取數據的成本很低,而數據清理和挖掘的成本很高,但非常重要。數據是模型的輸入,是模型能夠擬合的上限。在入模之前,你需要花一定的精力用於數據工作,這是必要也是值得的。因此,掌握數據能力也是一名演算法工程師的必經之路。
3、演算法策略
這是每位演算法工程師的硬實力,有了清晰的問題和可用的數據後,我們需要選擇合適的演算法策略求解問題。就銷量預估而言,由於特徵大部分都是表格型,樹模型及其變體成為首選的方案。通過樹模型,你能夠快速拿到一個不錯的baseline。但千萬不要停滯不前,你需要調研更多的先進的方案進行優化,即使此時能夠拿到的受益不多,但請堅持專研的精神(近期時序模型中,熱度很高的informer值得嘗試)。此外,「人工智慧,有多少人工就有多少智能」這句話在實際應用領域體現得淋漓盡致。策略也屬於演算法的一部分,人工策略有時候能夠帶來很大的受益,也能夠找到更適合的演算法優化方向。例如,我們在優化首猜的貨品池時,考慮到首猜目前的推薦演算法已經非常優秀了,但消費者的成交來源主要是搜索,我們通過人工分析選擇了做增量貨品供給的方式,拿到了不錯的業務效果。基於此,我們也找到了更合適的選品演算法優化方向。
4、離線實驗和線上AB實驗
實驗是驗證理論的最佳手段,也是最具有說服力的。我們需要找到幾個合適的指標進行優化,並且要保證離線效。
Ⅱ 如何成為一名合格的演算法工程師
BAT企業的演算法工程師是這樣工作的:問題抽象、數據採集和處理、特徵工程、建模訓練調優、模型評估、上線部署。(具體操作可以看阿里演算法專家chris老師的演算法工作流視頻演算法工作流是怎樣的?)而一個演算法工程師真正值錢的地方在於問題抽象和上線部署這兩個。
Ⅲ 演算法工程師工作期間需要掌握什麼知識學到哪些核心技術
演算法工程師的主要核心技術基於數學,並輔以語言。要全面掌握的知識包括高級數學,復變函數,線性代數的離散數學,數據結構以及數據挖掘所需的概率論和數學統計知識。不要太受約束去平時閱讀教科書並多練習,並培養良好的思維能力。只有那些有想法的人才能擁有技術的未來。嘗試實現您遇到的任何演算法,無論演算法的優劣總是有其自身的特徵。此外,您必須具有一定的英語水平(至少6級),因為該領域的大多數官方材料都是外語。
計算機及相關專業本科以上學歷,在互聯網搜索,推薦,流量或相關領域有2年以上工作經驗。熟悉機器學習/自然語言處理/數據挖掘/深度學習中至少一項的原理和演算法,並且能夠熟練地建模和解決業務問題。精通linux平台下的C / C ++ / java語言開發,精通使用gcc / gdb等開發工具,並精通python / Linux Shell / SQL等腳本開發。熟悉hadoop / hbase / storm等分布式計算技術,並熟悉其運行機制和體系結構。具有出色的分析和解決問題的能力,思路清晰,並對工作挑戰充滿熱情。具有強烈的工作責任感和團隊合作精神,並能夠交流和更好地學習。
Ⅳ ai工程師 需要 哪些 技能
AI工程師需要的技能:
技能一:監督學習中需要徹底掌握三個最基礎的模型,包括線性回歸(Linear Regression)、對數幾率回歸(Logistic Regression)和決策樹(Decision Trees)。
技能二:了解這些模型的數學含義,能夠理解這些模型的假設和解法。寫實際的代碼或者偽代碼來描述這些模型的演算法,真正達到對這些演算法的掌握。「K 均值演算法」有必要認真學習,做到真正的、徹底的理解。
技能三:理解假設檢驗容易被 AI 工程師遺忘的內容。要熟悉假設檢驗的基本設定和背後的假設,清楚這些假設在什麼情況下可以使用,如果假設被違背了的話,又需要做哪些工作去彌補。
技能四:具備最基本的編程能力,對數據結構和基礎演算法有一定的掌握。對於搭建一個人工智慧系統(比如搜索系統、人臉識別系統、圖像檢索系統、推薦系統等)有最基本的認識。
機器學習演算法能夠真正應用到現實的產品中去,必須要依靠一個完整的系統鏈路,這裡面有數據鏈路的設計、整體系統的架構、甚至前後端的銜接等多方面的知識。
(4)機器學習演算法工程師技能樹介紹擴展閱讀:
AI工程師會做: 設計,著手對信息的分析;擅長一些特定開發領域,例如網路,操作系統,資料庫或應用程序; 幫助維護組織的計算機網路和系統;在軟體系統的設計,安裝,測試和維護中起到關鍵作用。
成為一種專門的程序員,可以與Web開發人員和軟體工程師合作,來把Java或其他編程語言集成到業務應用程序,軟體和網站中;研究軟體應用程序領域,准備軟體要求和規格說明文件;為了能做到這些。
Ⅳ 演算法工程師應該學哪些
一、演算法工程師簡介
(通常是月薪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與視覺信息的融合;
應用領域
無人機、機器人等。
Ⅵ 機器學習演算法工程師必備技能
【導讀】成為合格的機器學習演算法工程師並非易事。您需要掌握從開發到調試再到優化的一系列功能。這些功能中的每一個都需要足夠的精力和經驗來掌握。成為合格的機器學習演算法工程師(以下簡稱演算法工程師)更加困難,因為除了掌握工程師的一般技能外,您還需要掌握機器學習演算法的知識網路。下面我們就將成為一名合格的演算法工程師所需的技能進行拆分,一起來看一下究竟需要掌握哪些技能才能算是一名合格的演算法工程師。
Ⅶ 機器學習演算法一欄
如何研究學習一個機器學習演算法
1. 還記得我剛來演算法組的時候,我不懂TFIDF是什麼,更不要說什麼SVD,LDA了聽都沒聽過,不懂user-based和item-based的區別,甚至連貝葉斯公式都寫不全。在最初的一段時間,我看別人的代碼,半懂不懂地聽組會分享,然後實現一個又一個現在看來很幼稚的演算法,感覺進步是飛速的。接過來一個演算法需求,我就去網上找篇paper,然後把演算法給實現了就丟給產品線用。
這個時候,同事A對我講,「演算法工程師不是懂一些數學,會寫些演算法就行了,演算法工程師最重要的技能,在於如何定義問題,然後接下來才是如何解決這個問題。」從那以後,當面臨一個需求時,我更願意分析這個需求的關鍵點在哪,然後從大腦里搜索已有的東西能不能解決這個問題,比如FM的演算法缺乏多樣性,那麼我想一下我看過的解決多樣性的paper都有什麼?能不能用在這個上面。如果不能,我再對應去搜問題的關鍵字,而不是演算法的關鍵字。
2. 轉眼間一年過去了,雖說看過的paper不夠多,但是可以應付大部分的需求了。但是我開始迷茫起來,我覺得自己在實現一個又一個的演算法trick,知道一個演算法可以用,我就去網上down一個對應的演算法包,然後把數據丟進去。沒了那麼我的出路到底在哪?我的核心競爭力在哪?在於知道這么個東西,然後變成跑准備數據的么?
這個時候,同事B給我講了到底博士是如何完成一個畢業設計的,幾百篇論文作為基礎。那是不是把幾百篇論文全都和我以前一樣一字不差的看完?PHD為什麼很容易進入到一個他之前所未知的領域,在於在研究領域所積累的一套方法論。言歸正傳:
當接觸到一個新的演算法時要怎麼去入手?用SVM舉例吧:
第一,去找SVM的Survey,每一個成熟的演算法分支必定有著survey這樣的匯總性paper,通過這個paper,我們大致可以了解這個演算法為什麼出現,最基本的演算法原型是什麼樣的,接下來後人對他做了什麼樣的改進,他到底還有什麼問題。
第二,弄懂這個演算法的來龍去脈,為什麼出現,出現是因為改進了前面演算法所不能做的什麼事情?例如我們為什麼不用基本的線性分類器?和用傳統的分類演算法找到一個超平面區別在於哪?
第三,知道了來龍去脈,我們還要知道這個演算法的缺點在哪?不能適用於什麼?我們怎麼知道?這個就涉及到如何來快速地過一遍一篇paper。
第四,Abstract是最重要的,他告訴了我們這篇paper發的目的是什麼?他想解決什麼問題?然後是Future Work,之所以有著FutureWork是因為這個演算法還有一些問題沒有解決,這個就告訴了我們當前演算法還有什麼缺點?
第五,遞歸再去看這個缺點是否有其他的研究者已經解決掉了。
那麼我們為什麼看paper,為什麼實現某演算法,我歸結為兩點:
1. 學習目的,擴展思路,如果處於這種目的,理解paper的精髓是最重要的。
2. 解決實際問題。那麼應該丟棄的觀點是我最初那樣拿過來一篇paper也沒理解透徹也不知道能不能解決問題,也不知道到底是不是可行,就先實現了再說。勞民傷財~
3. 我自認為自己還算努力,看了很多書,看了很多演算法,但是其實有時候說起來,比如用PCA還是SVD,他們到底有什麼區別,我們如何選擇,我其實還是不明白。
這時,同事C對我說,理解一個演算法,最重要的是要理解這個演算法的世界觀,這個演算法背後的哲學基礎是什麼?只有理解了這個,才算理解一個演算法。
用Boosting來舉例,他背後的世界觀是PAC原則。那麼Boosting為什麼不能引入一個強分類器,因為這個做個類比就相當於Boosting原本是美國的民主政治,一旦引入了一個強勢的領導,就一下子變成了當年毛爺爺時候的政治了。Boosting的世界觀就崩塌掉了。至於說Boosting最終是如何調整數據集的權重,這些就都屬於了細節的層面。
最後,補充一個同事D,無意間的話讓我發覺自己要變得更優秀才行:
同事D在搜Resys,有一個快照上面寫著:本科生Resys十佳論文。同事扭頭對我說,靠,現在本科生都可以發Resys paper了。讓我意識到了自己其實在原本上差距有多大,我要付出更大的努力才能彌補這些也許別人覺得無法跨越的鴻溝。
Ⅷ 從小白到機器學習演算法工程師,我做了哪些准備
機器學習方面的面試主要分成三個部分: 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倍的大神參賽。最後冠軍沒有用任何高大上的演算法而是基於對數據和業務的深刻理解和極其細致的特徵調優利用非常基本的一個演算法奪冠。所以啥都不如真正的實操擼幾個生產項目啊。
Ⅸ GPU演算法工程師是做什麼的
一、演算法工程師簡介(通常是月薪15k以上,年薪18萬以上,只是一個概數,具體薪資可以到招聘網站如拉鉤,獵聘網上看看)演算法工程師目前是一個高端也是相對緊缺的職位;演算法工程師包括音/視頻演算法工程師(通常統稱為語音/視頻/圖形開發工程師)、圖像處理演算法工程師、計算機視覺演算法工程師、通信基帶演算法工程師、信號演算法工程師、射頻/通信演算法工程師、自然語言演算法工程師、數據挖掘演算法工程師、搜索演算法工程師、控制演算法工程師(雲台演算法工程師,飛控演算法工程師,機器人控制演算法)、導航演算法工程師(@之介感謝補充)、其他【其他一切需要復雜演算法的行業】專業要求:計算機、電子、通信、數學等相關專業;學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;語言要求:英語要求是熟練,基本上能閱讀國外專業書刊,做這一行經常要讀論文;必須掌握計算機相關知識,熟練使用模擬工具MATLAB等,必須會一門編程語言。演算法工程師的技能樹(不同方向差異較大,此處僅供參考)1 機器學習2 大數據處理:熟悉至少一個分布式計算框架Hadoop/Spark/Storm/ map-rece/MPI3 數據挖掘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與視覺信息的融合;應用領域無人機、機器人等。
Ⅹ 想要成為演算法工程師都要學哪些技能
需要以下技能:
1、熟練掌握C/C++和python語言編程,熟悉linux開發環境,有扎實的數據結構和演算法設計功底;
2、熟悉推薦業務常用理論和演算法,在多個領域(如排序模型,召回模型,用戶畫像,深度學習等)有三年以上實際工作經驗;
3、有優秀的邏輯思維能力和數據分析能力,善於分析和解決問題;良好的溝通能力與團隊協作能力;
4、有推薦系統,廣告系統,搜索引擎等開發經驗;熟練掌握機器學習、深度學習的基礎理論和方法,並在自然語言處理任務中有實際應用經驗者優先;
5、熟練使用一種或幾種深度學習框架(如tensorflow、caffe、mxnet、pytorch等),或者熟悉spark、hadoop分布式計算編程者優先。
硬技能:
1. 數學:包括概率論與數理統計、矩陣論、隨機過程。
2. 計算機基礎:包括操作系統、組成原理、數據結構。
3. 演算法能力:包括對領域內主流模型進行優缺點對比、在設定的場景中選擇合適的方案等。
想要了解更多關於演算法工程師的問題可以咨詢一下CDA認證機構,CDA是大數據和人工智慧時代面向國際范圍全行業的數據分析專業人才職業簡稱。全球CDA持證者秉承著先進商業數據分析的新理念,遵循著《CDA職業道德和行為准則》新規范,發揮著自身數據專業能力,推動科技創新進步,助力經濟持續發展。