1. 程式人生 > >做演算法是屠龍,做工程是狩獵,做資料是養豬!

做演算法是屠龍,做工程是狩獵,做資料是養豬!

近來一段時間,能明顯感到,想入行 AI 的人越來越多,而且增幅越來越大。

緣起

為什麼這麼多人想入行 AI 呢?真的是對電腦科學研究或者擴充套件人類智慧抱著無限的熱忱嗎?說白了,大多數人是為了高薪。

人們為了獲得更高的回報而做出選擇、努力工作,原本這是個非常正當的事情,但是關鍵在於:如何找對路徑。

想要入行,總得知道這個行業裡面都有什麼樣的崗位,分別是幹什麼的吧。

本文中,我們將從直觀的角度,管窺一下 AI 領域中,幾種不同技術崗位的:

  • 日常工作的狀態。

  • 所需要具備的素質。

  • 職業發展路徑。

我們不去看那些招聘啟事上令人眼花繚亂的 title,而是從抽象層面,以工作內容、職責為準,來分類工業界直接的 AI 技術人員。

他們大致可以分為三個不同角色:

  • 做演算法。

  • 做工程。

  • 做資料。

做演算法

應用科研成果,解決實際問題

說到做演算法,大家首先想到的可能是發明新的演算法或者對演算法進行改進。這是在學術機構或者幾家定價大企業研究院中擔任科研任務的科學家們的任務。

在工業界做演算法的演算法工程師(也有公司叫科學家),最基本的日常工作其實是:銜接學術成果與實際業務,在工程實踐中利用最新科研成果來達到產品或服務在業務層面的提升。

或者,說得更通俗點,他們實際每天在做的事情是:讀論文&實現之——確認最新論文中的闡述是否真實可重現,進一步確認是否可應用於本企業的產品,進而將其應用到實踐中提升產品質量。

強學術背景要求

既然日常工作首先是讀別人論文。那麼作為演算法工程師必不可少應該具備快速、大量閱讀英語論文的能力。

如果要做演算法,平均而言,大致要保持每週讀一篇最新論文的頻率。

光能讀不行,還必須讀懂論文,要讀懂論文,就需要:

  • 科研能力:或雲學術研究方法,能夠通過參考資料、搜尋及以往的知識積累學習掌握論文內容的能力。

  • 系統數學知識:足夠深入的微積分、線性代數、概率統計的知識。最新的論文,沒有被時光檢驗過。

    閱讀時,需要關注公式的推導過程。否則,萬一出現數學推導有錯,導致了過於喜人的結果,卻無法在實踐中重現,豈不空耗時力?

也許這就是為什麼,到目前為止,筆者所聽聞和見過的演算法工程師都是名校相關專業博士的原因。

經過幾年強化學術研究訓練,這些博士們,就算英語綜合水平不過是 CET-4,也能讀得進去一篇篇硬骨頭似的英語論文!

對業務負責的創新型人才

很多時候,單論具體的手頭工作,做演算法的演算法工程師和下面要說到的做工程的機器學習工程師相差並不大,他們兩者都會花費很多時間去訓練模型。

但是,做工程的可以把關注點放在模型本身,只要交付符合評價指標要求的模型就可以了,而做演算法的人必須對業務提升負責!

如果交付的模型雖然整體質量提升了,卻不能提高使用者體驗,或者在某幾個使用者非常關心的 corner case 上總是出錯。

機器學習工程師可以通過加人工干預,做幾個 workaround 把這幾個 dsat 繞過去,但演算法工程師則有責任從演算法角度解決問題,而不是隨便打人工補丁。

在實踐過程中,演算法工程師,即使自己不發明新的演算法,不提出新的演算法優化方法,也得去嘗試最新演算法的使用或者把已有演算法用出新花樣來。

毋庸置疑,這是一個有著必然創新性的角色。因此,這個角色必然不適合絕大多數人!

做工程

“調參工程師”

這一角色比較有代表性的崗位是:機器學習工程師,常常被戲稱為調參工程師。

他們使用別人開發的框架和工具,執行已有演算法,訓練業務資料,獲得工作模型。

工作期間他們可能需要一些處理資料、選取特徵或者調節引數的手段,不過一般都有據可循,並不需要自己去發明一個 XXXX。

TIP:很多 title 寫的是“人工智慧/機器學習/深度學習演算法工程師”的招聘崗位,其實招的是做工程的人。不要執著於辭藻,看清楚具體職責和工作內容。

程式設計師的分支

說到底,機器學習工程師是廣義的軟體工程師(程式設計師)的一個分支。

說起來,每一個程式設計師都有一個領域。不過,不同領域在不同時期熱度不同,發展趨勢不同。AI 產品開發,是廣義軟體開發的一個領域,如今正好在熱點上。

開發人工智慧產品的程式設計師,也還是程式設計師。不過是需要懂一定程度的領域內理論知識而已,就和以前開發 PCI 協議棧要懂 PCI 協議,寫網絡卡 driver 要懂 TCP / IP 的道理是一樣的。

編碼能力是基礎

既然是程式設計師,首先就不能丟掉程式設計師的基本素質:編碼能力和基礎演算法能力(不是前面說的那種演算法,而是鏈、樹、圖的構建、刪除、遍歷、查詢、排序等資料結構裡講的那種演算法),這是最起碼的兩個要求。

當然,既然在 AI 領域進行開發,一定程度的機器學習/深度學習知識還是有必要掌握的。

此外,做工程也得讀論文,不過和做演算法不同,做工程讀論文的一般目的不是嘗試最新方法,而是用已知有效的方法來解決實際問題。

因此,做工程的,讀的經常是“舊”論文,或者相對學術含量低一些(不那麼硬)的論文。

在閱讀時,主要是為了直接找到某個問題的處理方法,故而可以跳讀。對於其中的數學公式,能夠讀懂頭尾也就可以了。論文閱讀頻率和學術深度的要求,都比做演算法低得多。

做資料

此處說得做資料並非資料的清洗和處理——大家可以看到做工程的崗位,有一部分工作內容就是 ETL 和處理資料,此處說的做資料是指資料標註。

資料人工標註的必要性

簡單說,資料標註就是:給各種各樣的資料(文字、影象、視訊、音訊等)打上標籤,使原資料(raw data)變成標註資料(labeled data)——標註資料是各種有監督學習的必要條件。

雖然機器學習中有無監督學習,但在實踐領域被證明有直接作用的,基本上還都是有監督模型。

近年來,深度學習在很多應用上取得了巨大的成功,而深度學習的成功,無論是影象、語音、NLP、自動翻譯還是 AlphaGo,恰恰依賴於海量的標註資料。

無論是做 ML 還是 DL 的工程師(演算法&工程),後者尤甚,都共同確認一個事實:現階段而言,資料遠比演算法重要。

固然,目前有多種技術用以在標註的過程中輔助人工,以減小工作量及降低人工標註比例,但至今沒有能在應用領域完全自動化標註的技術出現。

換言之,在看得見的未來之內,人工標註資料仍然是 AI 落地的必要和主流。

人工智慧的“勤行”

好訊息:資料標註工作幾乎沒有門檻。一般任何專業的大學畢業生,甚至更低學歷都能夠勝任,上手不需要機器學習之類的專業知識。

壞訊息:這樣一份工作是純粹的“髒活累活”,一點都不 cool,起薪也很低。所以,雖然這是一件誰都能幹的工作,但是恐怕,沒幾個人想幹。

就單個任務而言,資料標註是一項很簡單的工作,它的難點在於:

資料一致性

指所有資料的標註原則都是一樣的。如果一份 raw data 由多個人同時標註,就算是反覆宣講標註原則,每個人也都有自己的理解和側重,很難保證一致。甚至即使是將所有資料交給一個人,也可能在不同時間段理解不同。

很多公司出於對資料標註工作的不重視(正好與對演算法的過分重視相映成趣),採取一種暴力解決方案試圖消除不一致:讓多個人(比如 3 個)同時標註同一份資料,一旦出現不一致,就採用簡單多數法,取最多人一致認定的那種結果。

這種方案對於粗標資料還可以起到一定作用,但如果是精標,則往往連多數人一致的情況都難以出現。如果三個人所標結果完全不一樣,那麼這條資料也就失去了標註價值。

在現實中,經常會出現同一份資料因為質量過低,被要求重複標註的情況出現,費時費力。

與業務的集合

業務需求時常變動,技術解決方案變更更多,而每一次變更都可能引起資料標註策略的變化,進而要求對資料重新標註。

目前,由於人工智慧的落地點還比較有限,主要集中在大公司裡,它們都有各自的標註團隊,業務要求也相對穩定等原因,此種挑戰尚不明顯。

一旦未來人工智慧在各個領域全面鋪開,很可能需要的是針對具體企業、具體業務,不斷變更的標註需求。

如何應對快速變更的業務需求,同步更新標註結果,將是一個在 AI 真正服務於大眾時全面爆發的問題,偏偏現階段還未引起足夠重視。

選一條適合自己的入行之路

認清形勢,腳踏實地

尋求入行的人雖多,能真的認清市場當前的需求,瞭解不同層次的人才定位,並結合自己實際尋找一條可行之路的人太少。

上面我們介紹了 AI 領域內的幾個工種,打個不太恰當的比喻:

  • 做演算法是屠龍,仗劍江湖,天外飛仙。

  • 做工程是狩獵,躍馬奔騰,縱酒狂歌。

  • 做資料是養豬,每天拌豬食清豬糞,一臉土一身泥。

人人都想“做演算法”,做個獨行天涯的劍客多酷啊,更何況還有那麼高的薪水!

卻不想想:大公司裡研究院裡有那麼多讀了十幾二十年論文始終站在 AI 潮頭的資深研究人員。

想要與他們為伍做演算法,要麼有足夠分量的學術成果,要麼解決過大使用者量產品的實際業務問題——你佔哪一條呢?

僅僅是學過課程,做過練習或實習性質的小專案,是不足以去做演算法的。

現實當中能屠龍的人又有幾個?留給人去屠的龍又有幾條?養豬雖然沒那麼高大上,有豬肉吃是實實在在的。

好高騖遠只會虛擲光陰,腳踏實地才能實現理想。

“演算法力”的自我測試

對於一心想做演算法的同學,我建議大家先自我測試一下自己的演算法力。

在此先推薦一個網站,所有有志於演算法的同學必須要知道:https://arxiv.org ——這裡有多個學科(包括 computer science)的大量論文,裡面大部分都是尚未正式出版的最新成果。

測試“演算法力”有個很簡單的驗證方法:從上述網站裡找一篇論文(比如這篇:Dynamic Routing Between Capsules),從頭到尾讀一遍。

現在不懂沒關係,至少先試試在不懂的情況下能不能把它從頭到尾一字不漏的讀完,有不認識的字查字典。

如果這都做不到,還是當機立斷和“演算法”分手吧。既然註定無緣,何必一味糾纏?

先當程式設計師再選領域

在 AI 成為潮流的今天,只要能找到一個在 AI 方面相對比較前沿的企業,進去從做一名普通程式設計師開始吧。

即使本來開發的產品不屬於 AI 範疇,未來通過在舊產品上應用新的 AI 技術或者在公司內部 transfer 到做 AI 產品的 team,都可能獲得入行的機會。甚至具體知識的掌握,你都可以在入職後慢慢積累。

對於大多數 AI 工程人員,這可能才是一條自然的入行之路。

但這一切的前提是:此人首先得是一個合格的程式設計師!而不是本末倒置,雖然花功夫學了幾個模型、演算法,卻連最基本的程式設計面試題都做不對。

市場對資料標註的潛在需求

高質量的標註資料對高質量模型的影響非常直接。

一群年薪百萬起步的演算法工程師耗費經年的成果,對於模型質量直接的影響甚至比不上一個靠譜標註團隊一兩個月的精心標註。對模型的影響尚且如此,更何況是商業價值。

此時此刻,AI 在風口浪尖,大公司、拿了鉅額風投的獨角獸 startup,一個個拿出千金市馬骨的氣概,將不可思議的高薪狠狠砸向 AI 領域的頂尖學者,順便捧起了一批年輕的博士,也引來了世人的垂涎。

這種情形能維持多久?商業企業能承受多少年不掙錢只燒錢?待潮湧過後,行業迴歸理性,模型還是要用來掙錢的。

到了那個階段,大小企業不會去算成本收益嗎?他們會意識不到將資源投入資料和演算法的不同產出比嗎?

企業為了創造利潤應用 AI 技術,演算法工程師不是剛需,而資料標註這個人工智慧領域的“勤行”,人工智慧藍領,一定是剛需!

一切標註工作的難點和潛藏的風險,也就是這項工作的潛力和從事這項工作未來職業發展的可能性所在。

各工種的職業發展

籠統而言,一個技術崗位的 Career Path 總有兩條路徑:

  • 領域專家。

  • 管理者。

做演算法的崗位,雖然也確實有不少人轉向管理,但因其客觀的技術深度和學術積累的習慣,比起其他兩種角色,更容易成為領域專家。

做工程的崗位,作為程式設計師的一部分,整體的職業發展和普通程式設計師並無太大區別。

當然也有可能成為領域專家,不過在我們現在的環境裡,恐怕轉向管理對於大多數人是更優的選擇。

當然,做工程的,如果真的對技術和演算法感興趣,深入下去做演算法,最終成為領域專家也完全可能。

而做資料的崗位和所有門檻低的工種一樣,要面臨如何從極大量基數資質類似的人員中脫穎而出的問題。

由於 AI 領域的特殊性,還需要面對如何與越來越多的自動化標註技術共處的問題。

因此,筆者個人建議的資料標註職業提升路徑:經驗+業務+管理。大致步驟為:

  • 通過實踐積累資料標註的工作經驗。

  • 深入理解業務需求並將其體現到資料的標註結果中。

  • 管理標註團隊達到高效的標註結果與業務變更 align。

未來也許會出現一個“資料經理”之類稱謂的職位:其職責以負責提供高質量標註資料為基礎,技術上銜接工程領域的 ETL 和資料處理,產品上對接業務,帶領團隊為公司產品或服務的 revenue 提供直接貢獻

來源:轉載自小象(ID:AIReport)微信公眾號

相關推薦

四川挖掘機老板四川工程機械牌照可以辦理啦

主體 責任 相關 mar 這一 .com 機械 市場 備案 目前機巢平臺已經取得川、渝地區工程機械×××辦理資質。服務對象主要包括裝載機、推土機、壓路機、瀝青攤鋪機、非公路用卡車、挖掘機、叉車等。該平臺將對工程機械進行信息登記管理,建立工程機械一機、一牌(身份識別牌)、一檔

推薦一款Python開源庫技術人必備的造資料神器

# 1. 背景 在軟體需求、開發、測試過程中,有時候需要使用一些測試資料,針對這種情況,我們一般要麼使用已有的系統資料,要麼需要手動製造一些資料。由於現在的業務系統資料多種多樣,千變萬化。在手動製造資料的過程中,可能需要花費大量精力和工作量,此項工作既繁複又容易出錯,比如要構造一批使用者三要素(姓名、手機

演算法工程狩獵資料養豬

近來一段時間,能明顯感到,想入行 AI 的人越來越多,而且增幅越來越大。 緣起 為什麼這麼多人想入行 AI 呢?真的是對電腦科學研究或者擴充套件人類智慧抱著無限的熱忱嗎?說白了,大多數人是為了高薪。 人們為了獲得更高的回報而做出選擇、努力工作,原本這是個非常正當的事

【倚天屠龍記】明志是IBM全球敏捷官方發言人,有10年一線敏捷研發、測試、技術支援、管理、諮詢經驗為多家世界500強企業敏捷諮詢和轉型服務。期望通過自己在IBM親身經歷、經驗、感悟的分享幫助您實踐真正敏捷。

倚天屠龍記 明志是IBM全球敏捷官方發言人,有10年一線敏捷研發、測試、技術支援、管理、諮詢經驗,為多家世界500強企業做敏捷諮詢和轉型服務。期望通過自己在IBM親身經歷、經驗、感悟的分享幫助您實踐真正敏捷。...

軟件工程作業2.1:闡述對軟件工程的理解學完這門課自己能學到什麽學完後能什麽

包括 數據結構和算法 很多 上線 可維護性 修復 學習 應用 實現 對軟件工程這門課的理解   軟件工程是把系統的、有序的、可量化的方法應用到軟件的開發、運營和維護上的過程。在軟件工程中,遠遠不止很多人以為的只是單純地進行軟件開發,其實真正的軟件開發的時間只是軟件工程中的一

準備上市的同程藝要“依葫蘆畫瓢”AI恐怕只是個幌子

    文 |魏啟揚 來源 | 智慧相對論(ID:aixdlun)   同程藝龍馬上就要赴港上市了,它最新發布的招股書主要說了兩件事。   一件是“我很賺錢”。截至2018年6月30日,同程及藝龍合併後總體收入達到28.3億元

CSP之高速公路(Kosaraju演算法正反向DFS強連通子圖分解演算法第二次

問題描述 試題編號: 201509-4 試題名稱: 高速公路 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述   某國有n個城市,為了使得城市間的交通更便利,該國國王打算在城市之間修一些

五十道程式設計小題目大家有時間也一起交流演算法與心得

今天在黑馬論壇上,看到了50道程式設計小題目,看了一下挺好的,就留下來,大家有時間也做做啊,做好把程式碼和心得貼在自己部落格,大家一塊交流啊,別小看這些小題目,做大的系統也是把一個大系統不斷的分成一個個小模組做啊,我覺得這個很能鍛鍊邏輯思維能力,和對面向物件的理解,從題目中

影象演算法工程面試所的準備——C++基礎篇

在面試過程中遇到C++相關的問題,有的也是網上搜索的總結,有的貼出原文連結,有的沒有貼 1111 1、虛擬函式和純虛擬函式的區別: 答:虛擬函式:為了過載和多型的需要,在基類中是有實現的,virtual void Eat(){……};所以子類中可以過載也可以不過載基類

Xcode6中刪除LaunchScreen.xib使用Images.xcassets來工程的啟動頁

因為專案有各種螢幕的啟動頁,但我又不想使用LaunchScreen.xib來適配,所以找到解決辦法如下: 1.在工程裡刪除LaunchScreen.xib 2.在Info.plist裡刪除Launch screen interface file base name 3.將

有些事現在不一輩子都不會

做了 some 放下 only sta iou sim 自己的 don 【有些事現在不做,一輩子都不會做了】   年輕的時候,總是想著,等到怎樣怎樣,我就怎樣怎樣。   等到忙完這一陣,我就健身減肥;   等到忙完這一陣,我就拿起kindle充電;   等到忙完這一

高仿webqq的一個webos桌面效果和web聊天工具桌面效果完好功能強大

應對 基本 架構優化 jquery 人生觀 開發 ebr http pos QQ技術交流群:159995692 /-------- 暫時開放的測試 帳號/password:[88888888/1;666666/1] --

禁止了鼠標或者是手指滑動的默認事件後期需要恢復該怎麽

b- class 今天 針對性 網頁 doc bind block prev 做前端開發,需要根據不同時期的需求做針對性的處理,特別是Javascript中的事件處理,如果剛開始禁止了鼠標或者是手指滑動的默認事件,後期需要恢復,該怎麽做呢?我今天做了下測試,沒什麽問題!

繞過010Editor網絡驗證(用python一個仿真http server真容易就幾行代碼)

headers redirect 如果 table 本地 align cnn 破解版 resp 010Editor是一款非常強大的十六進制編輯器,尤其是它的模板功能在分析文件格式時相當好用!網上現在也有不少010Editor的破解版,如果沒錢或者舍不得花錢買授權的話,去官方

跟張忠謀纏鬥了20年 稱芯片代工是自己的創意(研究和經營事業不一樣他的話不多但意見很多有大格局)

偉大的 太陽能 數字 .html 太陽 亦或 檢查 download 臺灣經濟 半導體業內尊稱張忠謀為“半導體代工之父”,但一個人卻對這一說法嗤之以鼻。【1】臺灣雙雄,這個曾經聲震全球半導體的名詞,如今已經不復存在。2016財年,臺積電實現營收207

PHP項目完後想上線怎麽辦告訴你免費上線方法

上傳 edi 理解 多項目 更改 目前 告訴 找工作 src PHP項目做完後想上線怎麽辦,告訴你免費上線方法! PHP程序員找工作的底氣是什麽?是項目! PHP程序員沖擊高薪的信心源自哪裏?是項目! PHP程序員掌握理解PHP知識

我們不到一刀劈死它但能夠先切斷它的一根腳趾頭

基於web 設計 方式 做人 能夠 類別 logo -m data- 最先取名“殺死Excel”,後來認為做人應該低調。就取名“面對Excel和Google docs,我們照樣創新”。 Chrome顛覆IE。 iPhone顛覆微軟Windows Mobile

gcc和MinGW的異同(在cygwin/gcc的東西可以無縫的用在linux下沒有任何問題是在windows下開發linux程序的一個很好的選擇)

實現 o-c tool 交叉 lin 分析 模擬 gcc編譯器 還要 cygwin/gcc和MinGW都是gcc在windows下的編譯環境,但是它們有什麽區別,在實際工作中如何選擇這兩種編譯器。 cygwin/gcc完全可以和在linux下的gcc化做等號,這個可以從bo

了很多年的擇校服務感慨萬千

http 小學 .sh log 服務 blog shtml pos 估計 說真的,做了好幾年的擇校服務,感覺現在家長和孩子的壓力一年比一年大。考一些私立小學的孩子,遇到的題目是日新月異,家長要面對的擇校服務費也是一天比一天貴,明年龍寶寶幼升小,豬寶寶小升初,估計很多學校的名

幫同學參加數學建模的求點集間最短距離時間復雜度300*300

參加 sel shu print adl 距離 pri stl port 要求:求每一個會員點分別到任務點集的最短距離 表格如下: 我的做法是: 1先把會員經度緯度保存為 X.txt ,把任務經度緯度保存為Y.txt(直接從表格復制) 源代碼如下: import mat