回覆列表
-
1 # 精品慧
-
2 # 張羽赫
我就是演算法工程師,曾經夜以繼日、狂翻論文、推導公式、寫程式碼,花幾個月時間給某公司解決了三個難題,經理狂誇我牛逼。
然後呢?沒有然後了,我做的不是計算機、不是金融,那就等於垃圾,我曾經寫的演算法、發表的論文,現在看也不會去看一眼。
學校後面有不少歪脖樹,在此給自稱演算法工程師,但是既不做人工智慧、也不做區塊鏈的屌絲們推薦一下。
曾經的機械、後來的土木、現在的電子,都跟上個世紀的打算盤和點鈔一樣,只會被歷史無情地淘汰掉,淪落至偽化生一樣的地位,被後人踏上一萬隻腳,永無翻身之日。
既然選擇了做工程師,那麼如果不站在風口,而是自甘墮落做夕陽行業,那就是對自己的不負責、是對家人的背叛,是可恥的犯罪。
演算法工程師 就業前景的分類與展望
一、演算法工程師簡介
演算法工程師目前是一個高階也是相對緊缺的職位;
演算法工程師包括
音/影片演算法工程師(通常統稱為語音/影片/圖形開發工程師)、影象處理演算法工程師、計算機視覺演算法工程師、通訊基帶演算法工程師、訊號演算法工程師、射頻/通訊演算法工程師、自然語言演算法工程師、資料探勘演算法工程師、搜尋演算法工程師、控制演算法工程師(雲臺演算法工程師,飛控演算法工程師,機器人控制演算法)、導航演算法工程師、其他【其他一切需要複雜演算法的行業】
專業要求:計算機、電子、通訊、數學等相關專業;
學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;
語言要求:英語要求是熟練,基本上能閱讀國外專業書刊,做這一行經常要讀論文;
必須掌握計算機相關知識,熟練使用模擬工具MATLAB等,必須會一門程式語言。
演算法工程師的技能樹(不同方向差異較大)
1 機器學習
2 大資料處理:熟悉至少一個分散式計算框架Hadoop/Spark/Storm/ map-reduce/MPI
3 資料探勘
4 紮實的數學功底
5 至少熟悉C/C++或者Java,熟悉至少一門程式語言例如java/python/R
加分項:具有較為豐富的專案實踐經驗(不是水論文的哪種)
二、演算法工程師大致分類與技術要求
(一)影象演算法/計算機視覺工程師類
包括
影象演算法工程師,影象處理工程師,音/影片處理演算法工程師,計算機視覺工程師
專業:計算機、數學、統計學相關專業;
技術領域:機器學習,模式識別
技術要求:
(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) 開源庫:指的是計算機行業中對所有人開發的程式碼庫,所有人均可以使用並改進程式碼演算法。
(二)機器學習工程師
包括機器學習工程師
專業:計算機、數學、統計學相關專業;
技術領域:人工智慧,機器學習
技術要求:
(1) 熟悉Hadoop/Hive以及Map-Reduce計算模式,熟悉Spark、Shark等尤佳;
(2) 大資料探勘;
(3) 高效能、高併發的機器學習、資料探勘方法及架構的研發;
應用領域:
(1)人工智慧,比如各類模擬、擬人應用,如機器人
(2)醫療用於各類擬合預測
(3)金融高頻交易
(4)網際網路資料探勘、關聯推薦
(5)無人汽車,無人機
相關術語:
(1) Map-Reduce:MapReduce是一種程式設計模型,用於大規模資料集(大於1TB)的並行運算。概念"Map(對映)"和"Reduce(歸約)",是它們的主要思想,都是從函數語言程式設計語言裡借來的,還有從向量程式語言裡借來的特性。
(三)自然語言處理工程師
包括
自然語言處理工程師
專業:計算機相關專業;
技術領域:文字資料庫
技術要求:
(1) 熟悉中文分詞標註、文字分類、語言模型、實體識別、知識圖譜抽取和推理、問答系統設計、深度問答等NLP 相關演算法;
(2) 應用NLP、機器學習等技術解決海量UGC的文字相關性;
(3) 分詞、詞性分析、實體識別、新詞發現、語義關聯等NLP基礎性研究與開發;
(4) 人工智慧,分散式處理Hadoop;
(5) 資料結構和演算法;
應用領域:
口語輸入、書面語輸入
、語言分析和理解、語言生成、口語輸出技術、話語分析與對話、文獻自動處理、多語問題的計算機處理、多模態的計算機處理、資訊傳輸與資訊儲存 、自然語言處理中的數學方法、語言資源、自然語言處理系統的評測。
相關術語:
(2) NLP:人工智慧的自然語言處理,NLP (Natural Language Processing) 是人工智慧(AI)的一個子領域。NLP涉及領域很多,最令我感興趣的是“中文自動分詞”(Chinese word segmentation):結婚的和尚未結婚的【計算機中卻有可能理解為結婚的“和尚“】
(四)射頻/通訊/訊號演算法工程師類
包括
3G/4G無線通訊演算法工程師, 通訊基帶演算法工程師,DSP開發工程師(數字訊號處理),射頻通訊工程師,訊號演算法工程師
專業:計算機、通訊相關專業;
技術領域:2G、3G、4G,BlueTooth(藍芽),WLAN,無線行動通訊, 網路通訊基帶訊號處理
技術要求:
(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:數字訊號處理,也指數字訊號處理晶片
(五)資料探勘演算法工程師類
包括推薦演算法工程師,資料探勘演算法工程師
專業:計算機、通訊、應用數學、金融數學、模式識別、人工智慧;
技術領域:機器學習,資料探勘
技術要求:
(1) 熟悉常用機器學習和資料探勘演算法,包括但不限於決策樹、Kmeans、SVM、線性迴歸、邏輯迴歸以及神經網路等演算法;
(2) 熟練使用SQL、Matlab、Python等工具優先;
(3) 對Hadoop、Spark、Storm等大規模資料儲存與運算平臺有實踐經驗【均為分散式計算框架】
(4) 數學基礎要好,如高數,統計學,資料結構
加分項:資料探勘建模大賽;
應用領域
(1) 個性化推薦
(2) 廣告投放
(3) 大資料分析
相關術語
Map-Reduce:MapReduce是一種程式設計模型,用於大規模資料集(大於1TB)的並行運算。概念"Map(對映)"和"Reduce(歸約)",是它們的主要思想,都是從函數語言程式設計語言裡借來的,還有從向量程式語言裡借來的特性。
(六)搜尋演算法工程師
技術領域:自然語言
技術要求:
(1) 資料結構,海量資料處理、高效能計算、大規模分散式系統開發
(2) hadoop、lucene
(3) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗
(4) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗;
(5) 精通倒排索引、全文檢索、分詞、排序等相關技術;
(6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架;
(7) 優秀的資料庫設計和最佳化能力,精通MySQL資料庫應用 ;
(8) 瞭解推薦引擎和資料探勘和機器學習的理論知識,有大型搜尋應用的開發經驗者優先。
(七)控制演算法工程師類
包括了雲臺控制演算法,飛控控制演算法,機器人控制演算法
專業:計算機,電子資訊工程,航天航空,自動化
技術要求:
(1) 精通自動控制原理(如PID)、現代控制理論,精通組合導航原理,姿態融合演算法,電機驅動,電機驅動
(2) 卡爾曼濾波,熟悉狀態空間分析法對控制系統進行數學模型建模、分析除錯;
加分項:有電子設計大賽,機器人比賽,robocon等比賽經驗,有硬體設計的基礎;
應用領域
(1)醫療/工業機械裝置
(2)工業機器人
(3)機器人
(4)無人機飛控、雲臺控制等
(八)導航演算法工程師
要求
l 專業:計算機,電子資訊工程,航天航空,自動化
l 技術要求(以公司職位JD為例)
公司一(1)精通慣性導航、鐳射導航、雷達導航等工作原理;
(2)精通組合導航演算法設計、精通卡爾曼濾波演算法、精通路徑規劃演算法;
(3)具備導航方案設計和實現的工程經驗;
(4)熟悉C/C++語言、熟悉至少一種嵌入式系統開發、熟悉Matlab工具;
公司二(1)熟悉基於視覺資訊的SLAM、定位、導航演算法,有1年以上相關的科研或專案經歷;
(2)熟悉慣性導航演算法,熟悉IMU與視覺資訊的融合;
應用領域:無人機、機器人等。 透過以上分析,學好過硬的專業知識,在演算法領域內,大展鴻程!