0. 引子
AI原本是一個(gè)專業(yè)領(lǐng)域囱桨,沒什么特別的偏化。作為碼農(nóng)一枚侠驯,筆者的工作內(nèi)容正好在這個(gè)領(lǐng)域。
近來這一年左右時(shí)間里奕巍,連續(xù)發(fā)生了多件事情吟策,使得筆者不得不抬起原本一直低著敲代碼的頭,看看這個(gè)為AI狂歡的世界的止。
【Case 1】 居然在一個(gè)月里碰到兩位在相對傳統(tǒng)行業(yè)創(chuàng)業(yè)的親友檩坚,來打聽將AI技術(shù)應(yīng)用到他們所在行業(yè)上的問題,例如:是聊天機(jī)器人是否可以代替人工客服诅福。
兩位親友居然都動(dòng)了雇傭一位算法工程師的念頭匾委。其中一位真的已經(jīng)開始物色了。
頗費(fèi)周折找到一位某非 985 院校專業(yè)對口的博士氓润,友人有點(diǎn)動(dòng)心想要聘用赂乐,奈何人家開口就要100萬年薪。
創(chuàng)業(yè)企業(yè)雖然已經(jīng)拿了兩輪融資咖气,還是不敢燒錢作死挨措,故而多方打聽“算法”這東西的用處。
【Case 2】 筆者所在公司今年的校園招聘采章,本人照例作為 interviewer 參加运嗜,面試了幾個(gè)來自不同985院校的學(xué)生(明年畢業(yè))。順便又和幾位今年剛?cè)肼毜膽?yīng)屆生聊了聊悯舟。
結(jié)果發(fā)現(xiàn),所有 interviewee(至少是我碰到的)砸民,全都是人工智能或機(jī)器學(xué)習(xí)方向的學(xué)生抵怎,所有交流過的新同事,在學(xué)校里做的也全部都是機(jī)器學(xué)習(xí) or 深度學(xué)習(xí)算法岭参。
而且反惕,每一個(gè)人對于入職后工作的期望都是做算法。
人工智能演侯,已經(jīng)跌入到兩三年前大數(shù)據(jù)風(fēng)口上姿染,全民皆“數(shù)據(jù)科學(xué)家”的套路里了。
到底做什么秒际,算是入行AI悬赏?
這個(gè)話題其實(shí)在筆者之前的幾個(gè)chat里面已經(jīng)反復(fù)提到過了,在此再說一遍:工業(yè)界直接應(yīng)用AI技術(shù)的人員娄徊,大致可以分為三個(gè)不同角色:算法闽颇、工程,和數(shù)據(jù)寄锐。
現(xiàn)在各種媒體上兵多,包括gitchat中有大量的文章教大家怎么入行AI尖啡,怎么成為具體某個(gè)領(lǐng)域的工程師,告訴大家要在某領(lǐng)域內(nèi)發(fā)展需要掌握的技術(shù)棧是什么剩膘,等等……對此本文不再贅述衅斩。
我們不說怎么能夠成為XXX,我們先來看看成為XXX之后要做什么事情怠褐,而做這些事情矛渴,需要什么樣的能力,在擁有了這些能力惫搏、做上了這件事情之后具温,又能向什么方向發(fā)展。
換言之筐赔,本文中铣猩,我們將從直觀的角度,管窺承擔(dān)不同角色工作所需要具備的素質(zhì)茴丰,日常工作的狀態(tài)达皿,和職業(yè)發(fā)展路徑。
1. 做算法
1.1 日常工作
所有人都想做算法贿肩,那么峦椰,說到底,在工業(yè)界做算法倒是干什么汰规?
真正的算法工程師(也有公司叫科學(xué)家)汤功,最基本的日常工作其實(shí)是:讀論文&實(shí)現(xiàn)之——確認(rèn)最新論文中的闡述是否真實(shí)可重現(xiàn),進(jìn)一步確認(rèn)是否可應(yīng)用于本企業(yè)的產(chǎn)品溜哮,進(jìn)而將其應(yīng)用到實(shí)踐中提升產(chǎn)品質(zhì)量滔金。
1.2 必備能力
既然日常工作首先是讀別人論文。那么茂嗓,必不可少餐茵,作為算法工程師得具備快速、大量閱讀英語論文的能力述吸。
有一個(gè)網(wǎng)站忿族,所有有志于算法的同學(xué)必須要知道:https://arxiv.org ——這里有多個(gè)學(xué)科(包括computer science)大量的最新論文。
現(xiàn)在許多科學(xué)家蝌矛、學(xué)者道批、研究人員和博士生在論文剛剛完成,尚未在正式期刊會議上發(fā)表時(shí)就先將論文發(fā)布在此處朴读,為的是在盡量短的時(shí)間延誤下對外傳播自己的成果屹徘。
傳統(tǒng)的正規(guī)渠道,從論文完成到正式發(fā)表之間存在短則三四個(gè)月衅金,長則一年半載的延遲噪伊。這對一些傳統(tǒng)學(xué)科簿煌,還勉強(qiáng)可以接受。
但計(jì)算機(jī)科學(xué)鉴吹,尤其是人工智能姨伟、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)這幾個(gè)當(dāng)今世界最熱門的主題豆励,大家都在爭分奪秒地?fù)屨贾聘唿c(diǎn)夺荒,幾個(gè)月的耽擱根本不能容忍。
因此良蒸,對于AI的學(xué)術(shù)性文獻(xiàn)而言技扼,arxiv.org 實(shí)際上已經(jīng)成為了當(dāng)前的集大成之地。
如果要做算法嫩痰,平均而言剿吻,大致要保持每周讀一篇最新論文的頻率。
也許這就是為什么串纺,到目前為止丽旅,筆者所聽聞和見過的算法工程師都是名校相關(guān)專業(yè)博士的原因。
經(jīng)過幾年強(qiáng)化學(xué)術(shù)研究訓(xùn)練纺棺,這些博士們榄笙,就算英語綜合水平不過 CET-4,也能讀得進(jìn)去一篇篇硬骨頭似的英語論文祷蝌!
1.3 自測“算法力”
但當(dāng)然不能說碩士茅撞、學(xué)士或者其他專業(yè)的有志之士就做不成算法了。人都不是生而知之杆逗,不會可以學(xué)嘛乡翅。
但是到底能不能學(xué)會,其實(shí)也并不需要三年五載的時(shí)間罪郊,花費(fèi)幾萬十幾萬金錢在各種培訓(xùn)或者付費(fèi)閱讀上才能夠知道。
有個(gè)很簡單的驗(yàn)證方法:現(xiàn)在就去https://arxiv.org找一篇論文(比如這篇:Dynamic Routing Between Capsules)尚洽,從頭到尾讀一遍悔橄。
現(xiàn)在不懂沒關(guān)系,至少先試試在不懂的情況下能不能把它從頭到尾一字不漏的讀完腺毫,有不認(rèn)識的字查字典癣疟。
如果這都做不到,還是當(dāng)機(jī)立斷和“算法”分手吧潮酒。既然注定無緣睛挚,何必一味糾纏?
1.4 學(xué)術(shù)實(shí)踐能力
如果急黎,碰巧你喜歡讀論文扎狱,或者就算不喜歡也有足夠強(qiáng)大的意志力侧到、專注力壓迫自己去強(qiáng)行閱讀論文。那么恭喜你淤击,你已經(jīng)跨上了通往算法山門的第一級臺階匠抗。
下面一級是:讀懂論文。
既然要讀論文污抬,讀最新論文汞贸,而且閱讀的目的是指導(dǎo)實(shí)踐,那么自然要讀懂印机。拿起一篇論文就達(dá)到懂的程度矢腻,至少需要下面這三種能力:
1.4.1 回溯學(xué)習(xí)能力
一篇論文拿來一看,一大堆名詞術(shù)語不懂射赛,它們互相之間是什么關(guān)系也不知道多柑。怎么辦?去讀參考文獻(xiàn)咒劲,去網(wǎng)上搜索顷蟆,去書籍中查找……總之,動(dòng)用一切資源和手段腐魂,搞清不明概念的含義和聯(lián)系帐偎。
這種能力是學(xué)術(shù)研究的最基礎(chǔ)能力之一,一般而言蛔屹,有學(xué)術(shù)背景的人這一點(diǎn)不在話下削樊。
如果現(xiàn)在沒有,也可以去主動(dòng)培養(yǎng)兔毒,那么可能首先需要學(xué)習(xí)一下學(xué)術(shù)研究方法論漫贞。
1.4.2 數(shù)學(xué)能力
如果只是本著學(xué)習(xí)的目的讀經(jīng)典老論文,那么只要清楚文中圖表含義育叁,看公式推導(dǎo)明白一頭一尾(最開始公式成立的物理意義迅脐,以及結(jié)束推導(dǎo)后最終形式所具備的基本性質(zhì))也就可以了。
但讀最新論文就不同豪嗽。因其新谴蔑,必然未經(jīng)時(shí)光檢驗(yàn),因此也就沒人預(yù)先替你驗(yàn)證的它的正確性龟梦。
在這種情況下隐锭,看公式就得看看推導(dǎo)了。否則计贰,外一是數(shù)學(xué)推導(dǎo)有錯(cuò)钦睡,導(dǎo)致了過于喜人的結(jié)果,卻無法在實(shí)踐中重現(xiàn)躁倒,豈不空耗時(shí)力荞怒?
如果目前數(shù)學(xué)能力不夠洒琢,當(dāng)然也可以學(xué)。但就與后面要說的做工程用到什么學(xué)什么的碎片化學(xué)習(xí)不同挣输,做算法纬凤,需要系統(tǒng)學(xué)習(xí)數(shù)學(xué)。
微積分撩嚼、線性代數(shù)停士、概率統(tǒng)計(jì),是無法回避的完丽。如果在這方面有所缺乏恋技,那還是先從計(jì)算機(jī)系的本科數(shù)學(xué)課開始吧,個(gè)人推薦北師大教材逻族。
1.4.3 理論聯(lián)系實(shí)際蜻底,將學(xué)術(shù)論述與產(chǎn)品、業(yè)務(wù)結(jié)合的能力
一般來說聘鳞,在大企業(yè)里做到真正的算法工程師/科學(xué)家薄辅,也就不需要自己去動(dòng)手開發(fā)產(chǎn)品了。但做 demo/prototype 還是不能避免的抠璃。
算法工程師站楚,可不是用別人寫好的工具填幾個(gè)參數(shù)去運(yùn)行就可以的,需要負(fù)責(zé)實(shí)際業(yè)務(wù)問題到數(shù)學(xué)模型的抽象搏嗡,并能夠?qū)⑺俗钚鲁晒ㄇ煤诎濉切┱撐模窿春。。采盒。?yīng)用到業(yè)務(wù)數(shù)據(jù)上去旧乞。
說得更通俗一點(diǎn),就算是用別人寫的工具或框架磅氨,做算法的尺栖,也得是i)第一撥、最前沿那批試用者烦租,或者ii)工具最新玩法的發(fā)明者决瞳。
1.5 創(chuàng)新型人才
算法工程師,即使自己不發(fā)明新的算法左权,不提出新的算法優(yōu)化方法,也得去嘗試最新算法的使用或者把已有算法用出新花樣來痴颊。
毋庸置疑赏迟,這是一個(gè)有著必然創(chuàng)新性的角色。因此蠢棱,這個(gè)角色必然不適合絕大多數(shù)人锌杀!
2. 做工程
2.1 日常工作
相對于算法的創(chuàng)新和尖端甩栈,做工程要平實(shí)得多。
這一角色比較有代表性的一種崗位就是:機(jī)器學(xué)習(xí)工程師(或戲稱調(diào)參工程師)——他們使用別人開發(fā)的框架和工具糕再,運(yùn)行已有算法量没,訓(xùn)練業(yè)務(wù)數(shù)據(jù),獲得工作模型突想。
其間可能需要一些處理數(shù)據(jù)殴蹄、選取特征或者調(diào)節(jié)參數(shù)的手段,不過一般都有據(jù)可循猾担,并不需要自己去發(fā)明一個(gè)XXXX袭灯。
做工程也得讀論文,不過和做算法不同绑嘹,做工程讀論文的一般目的不是嘗試最新方法稽荧,而是用已知有效的方法來解決實(shí)際問題。
這就導(dǎo)致了工腋,做工程的姨丈,讀的經(jīng)常是“舊”論文,或者相對學(xué)術(shù)含量低一些(不那么硬)的論文擅腰。
而且在閱讀時(shí)蟋恬,主要是為了直接找到某個(gè)問題的處理方法,因此惕鼓,可以跳讀筋现。
對于其中的數(shù)學(xué)公式,能夠讀懂頭尾也就可以了箱歧。論文閱讀頻率和學(xué)術(shù)深度的要求矾飞,都比做算法低得多。
TIP:很多title寫的是“人工智能/機(jī)器學(xué)習(xí)/深度學(xué)習(xí)算法工程師”的招聘崗位呀邢,其實(shí)招的是做工程的人洒沦。不要執(zhí)著于辭藻,看清楚具體職責(zé)和工作內(nèi)容价淌。
2.2 軟件工程師的分支
說到底申眼,機(jī)器學(xué)習(xí)工程師,是廣義的軟件工程師(或云程序員)的一個(gè)分支蝉衣。AI產(chǎn)品開發(fā)括尸,是廣義軟件開發(fā)的一個(gè)領(lǐng)域。
說起來病毡,每一個(gè)程序員都有一個(gè)領(lǐng)域濒翻。不過,不同領(lǐng)域在不同時(shí)期熱度不同,發(fā)展趨勢不同有送。
若干年前淌喻,做底層的程序員在程序界睥睨群雄。寫協(xié)議棧的雀摘、開發(fā)驅(qū)動(dòng)的裸删、實(shí)現(xiàn)各種系統(tǒng)接口的程序員,站在鄙視鏈的最頂端阵赠。
如今涯塔,風(fēng)水輪流轉(zhuǎn),昨日黃花已謝豌注,輪到AI封神了伤塌。
但說到底,開發(fā)人工智能產(chǎn)品的程序員轧铁,也還是程序員每聪。不過是需要懂一定程度的領(lǐng)域內(nèi)理論知識而已,和以前開發(fā) PCI 協(xié)議棧要懂 PCI 協(xié)議齿风,寫網(wǎng)卡 driver 要懂 TCP/IP 的道理是一樣的药薯。
2.3 程序員的基本素質(zhì)
既然是程序員,首先就不能丟掉 程序員的基本素質(zhì):編碼能力救斑,和基礎(chǔ)算法能力(不是前面說的那種算法童本,而是鏈、樹脸候、圖的構(gòu)建穷娱、刪除、遍歷运沦、查找泵额、排序等數(shù)據(jù)結(jié)構(gòu)里講的那種算法),是最起碼要求携添。
其實(shí)嫁盲,在AI成為潮流的今天,只要能找到一個(gè)在AI方面相對比較前沿的企業(yè)烈掠,進(jìn)去做一名普通程序員羞秤。
那么即使本來開發(fā)的產(chǎn)品不屬于AI范疇,未來通過在舊產(chǎn)品上應(yīng)用新的AI技術(shù)左敌,或者在公司內(nèi)部 transfer 到做 AI 產(chǎn)品的 team瘾蛋,都可能獲得入行的機(jī)會。
甚至具體知識的掌握矫限,都可以在入職后慢慢積累——對于大多數(shù)AI工程人員瘦黑,這可能才是一條自然的入行之路。
但這一切的前提是:此人首先得是一個(gè)合格的程序員!
而不是本末倒置幸斥,雖然花功夫?qū)W了幾個(gè)模型、算法咬扇,卻連最基本的編程面試題都做不對甲葬。
2.4 做工程,「機(jī)器學(xué)習(xí)」學(xué)到多深夠用
當(dāng)然懈贺,既然是有領(lǐng)域的程序員经窖,在專業(yè)上達(dá)到一定深度也是必要的。
雖然做工程一般要使用現(xiàn)成技術(shù)框架梭灿,但并不是說画侣,直接把算法當(dāng)黑盒用就可以做一名合格的“調(diào)參”工程師了。
把算法當(dāng)黑盒用的問題在于:黑盒能夠解決問題的時(shí)候堡妒,使用方便配乱,而一旦不能解決問題,或者對質(zhì)量有所要求皮迟,就會感覺無所適從搬泥。
作為程序員、工程人員伏尼,想用機(jī)器學(xué)習(xí)算法解決實(shí)際問題忿檩,就得對算法有一定程度的掌握,此外對于數(shù)據(jù)處理和模型驗(yàn)證爆阶,也需具備相應(yīng)知識燥透。
2.4.1算法
僅從使用角度而言,掌握算法辨图,大致可分為如下由淺入深的幾步:
【1】簡單使用:了解某個(gè)算法基本原理班套,應(yīng)用領(lǐng)域,功能和局限徒役。
a) 該算法的應(yīng)用問題域是什么孽尽?(e.g. 分類、回歸忧勿、聚類……)
b) 該算法的應(yīng)用目標(biāo)是什么杉女?(e.g. 判別算法、生成算法……)
c) 該算法適合應(yīng)用在怎樣的數(shù)據(jù)集鸳吸,它能對數(shù)據(jù)造成怎樣的影響熏挎?(e.g. 適用少量高維稀疏數(shù)據(jù)……)
d) 能夠主動(dòng)獲取該算法的函數(shù)庫,調(diào)用該算法生成模型晌砾。
【2】模型調(diào)優(yōu):對所采用算法和對應(yīng)模型的數(shù)學(xué)公式有所了解坎拐。
a) 知道調(diào)用函數(shù)中各個(gè)參數(shù)的意義(e.g. 迭代次數(shù),對應(yīng)到公式中參數(shù)的含義……),能夠通過調(diào)節(jié)這些參數(shù)達(dá)到優(yōu)化結(jié)果的目的哼勇。
b) 能夠通過加約束條件(e.g. L0, L1, L2 ……)來優(yōu)化算法都伪。
c) 了解在當(dāng)前問題域,目標(biāo)和輸入數(shù)據(jù)確定的情況下积担,還可以用哪些其他模型可替換現(xiàn)有模型陨晶,并進(jìn)行嘗試。
d) 能夠?qū)⒍鄠€(gè)弱模型加權(quán)組成強(qiáng)模型(e.g. adaboost)帝璧。
【3】運(yùn)行效率優(yōu)化:對模型本身的數(shù)學(xué)推導(dǎo)過程和模型最優(yōu)化方法有所掌握先誉,對于各種最優(yōu)化方法的特點(diǎn)、資源占用及消耗情況有所了解的烁。
a) 了解算法在當(dāng)前數(shù)據(jù)集上的運(yùn)行效率(e.g. 需要進(jìn)行哪些運(yùn)算褐耳,是否易于被分布式等)。
b) 了解在其他語言渴庆、平臺铃芦、框架的工具包中有否同等或近似功能但在當(dāng)前應(yīng)用場景下效率更高的算法。
c) 能夠針對具體場景把曼,通過轉(zhuǎn)換模型的最優(yōu)化方法(optimizer)來改進(jìn)運(yùn)行效率杨帽。
2.4.2 數(shù)據(jù)
僅僅只有算法,并不能解決問題嗤军。算法和數(shù)據(jù)結(jié)合注盈,才能獲得有效的模型。
對于數(shù)據(jù)叙赚,需要從:i). 具有業(yè)務(wù)含義的信息老客,和ii).用于運(yùn)算的數(shù)字,這兩個(gè)角度來對其進(jìn)行理解和掌握震叮。
【1】特征選取:從業(yè)務(wù)角度區(qū)分輸入數(shù)據(jù)包含的特征胧砰,并認(rèn)識到這些特征對結(jié)果的貢獻(xiàn)。
a) 對數(shù)據(jù)本身和其對應(yīng)的業(yè)務(wù)領(lǐng)域有所了解苇瓣。
b) 能夠根據(jù)需要標(biāo)注數(shù)據(jù)尉间。
c) 知道如何從全集中通過劃分特征子集、加減特征等方法選取有效特征集击罪。
【2】向量空間模型(VSM)構(gòu)建:了解如何將自然語言哲嘲、圖片等人類日常使用的信息轉(zhuǎn)化成算法可以運(yùn)算的數(shù)據(jù)。
a) 能夠把文字媳禁、語音眠副、圖像等輸入轉(zhuǎn)化成算法所需輸入格式(一般為實(shí)數(shù)空間的矩陣或向量)。
b) 能夠根據(jù)信息熵等指標(biāo)選取有效特征竣稽。
【3】數(shù)據(jù)清洗和處理:對直接的業(yè)務(wù)數(shù)據(jù)進(jìn)行篩選并轉(zhuǎn)換為模型可處理形式囱怕。
a) 能夠運(yùn)用統(tǒng)計(jì)學(xué)方法等ETL手段清洗輸入數(shù)據(jù)霍弹。
b) 能夠?qū)?shù)據(jù)進(jìn)行歸一化(normalization), 正則化(regularization)等標(biāo)準(zhǔn)化操作娃弓。
c) 能夠采用bootstrap等采樣方法處理有限的訓(xùn)練/測試數(shù)據(jù)典格,以達(dá)到更好的運(yùn)算效果。
2.4.3 模型驗(yàn)證
算法+數(shù)據(jù)就能夠得到模型忘闻。但是钝计,
這個(gè)模型的質(zhì)量如何?
這個(gè)模型和那個(gè)模型比較齐佳,哪個(gè)更適合解決當(dāng)前問題?
在做了如此這般的優(yōu)化之后得出了一個(gè)新的模型债沮,怎么能夠確認(rèn)它比舊的模型好炼吴?
為了解答這些問題,就需要掌握度量模型質(zhì)量的方法疫衩。為此硅蹦,需要做到:
i) 了解 bias,overfitting 等基本概念闷煤,及針對這些情況的基本改進(jìn)方法童芹。
ii) 了解各種模型度量指標(biāo)(e.g. Accuracy, Precision,Recall, F1Score……)的計(jì)算方法和含義,及其對模型質(zhì)量的影響鲤拿。
iii) 能夠構(gòu)建訓(xùn)練集假褪、測試集,并進(jìn)行交叉驗(yàn)證近顷。
iv) 能夠運(yùn)用多種不同的驗(yàn)證方法(e.g. 2-Fold cross-validation,K-Fold cross-validation, Leave-One-Out cross-validation……)來適應(yīng)不同的數(shù)據(jù)集生音。
3. 做數(shù)據(jù)
此處說得做數(shù)據(jù)并非數(shù)據(jù)的清洗和處理——大家可以看到做工程的崗位,有一部分工作內(nèi)容就是ETL和處理數(shù)據(jù)窒升。此處說的做數(shù)據(jù)是指數(shù)據(jù)標(biāo)注缀遍。
3.1 標(biāo)注數(shù)據(jù)的重要性
雖然機(jī)器學(xué)習(xí)中有無監(jiān)督學(xué)習(xí),但在實(shí)踐領(lǐng)域被證明有直接作用的饱须,基本上還都是有監(jiān)督模型域醇。
近年來,深度學(xué)習(xí)在很多應(yīng)用上取得了巨大的成功蓉媳,而深度學(xué)習(xí)的成功譬挚,無論是圖像、語音督怜、NLP殴瘦、自動(dòng)翻譯還是AlphaGo,恰恰依賴于海量的標(biāo)注數(shù)據(jù)号杠。
無論是做ML還是DL的工程師(算法&工程)蚪腋,后者有甚丰歌,都共同確認(rèn)一個(gè)事實(shí):現(xiàn)階段而言,數(shù)據(jù)遠(yuǎn)比算法重要屉凯。
3.2 數(shù)據(jù)人工標(biāo)注的必要性
很多人誤以為 AlphaGo Zero 100:0大勝 AlphaGo 是無監(jiān)督學(xué)習(xí)的勝利立帖。
其實(shí),之所以有這樣的結(jié)果悠砚,恰恰是因?yàn)?Zero 利用圍棋嚴(yán)格完備而明晰的規(guī)則晓勇,自己制造出了巨大量的標(biāo)注數(shù)據(jù)——這些標(biāo)注數(shù)據(jù)的數(shù)量遠(yuǎn)超其前輩 AlphaGo 的輸入,而且可以隨時(shí)造出更多灌旧。
圍棋是一個(gè)人為定義的在19x19點(diǎn)陣范圍內(nèi)绑咱,按完備無二義性規(guī)則運(yùn)行的游戲,因此計(jì)算機(jī)程序才能依據(jù)規(guī)則自動(dòng)產(chǎn)生標(biāo)注數(shù)據(jù)枢泰。
真實(shí)人類世界的事情描融,基本沒有完全按矩而行無意外的情況。因此衡蚂,對人類真正有用的模型窿克,還是需要人工標(biāo)注的訓(xùn)練數(shù)據(jù)。
固然毛甲,目前有多種技術(shù)用以在標(biāo)注的過程中輔助人工年叮,以減小工作量及降低人工標(biāo)注比例。但至今沒有能在應(yīng)用領(lǐng)域完全自動(dòng)化標(biāo)注的技術(shù)出現(xiàn)玻募。
換言之只损,在看得見的未來之內(nèi),人工標(biāo)注數(shù)據(jù)仍然是AI落地的必要和主流补箍。
3.3 人工智能的“勤行”
3.3.1 什么叫做標(biāo)注
舉個(gè)很簡單的例子說明一下什么是數(shù)據(jù)標(biāo)注:
在開發(fā)聊天機(jī)器人的時(shí)候改执,我們需要訓(xùn)練意圖判定和實(shí)體識別模型,因此也就需要標(biāo)注用戶問題的意圖和出現(xiàn)的實(shí)體坑雅。
這是用戶問題原始數(shù)據(jù):“00183號商品快遞到伊犁郵費(fèi)多少辈挂?”
這樣一句話,很顯然問它的用戶是想知道某一種商品發(fā)往某地的郵費(fèi)裹粤。郵費(fèi)是商品的一個(gè)屬性终蒂,我們把所有查詢商品屬性的意圖都定義為“商品查詢”。
因此遥诉,這樣一句話的意圖是“商品查詢”拇泣。其中有包含了幾個(gè)實(shí)體,分別是商品Id矮锈,目的地和商品屬性霉翔。
這句話被標(biāo)注出來以后,就是下面這個(gè)樣子:
[00183]<-{商品Id}號商品快遞到[伊犁]<-{目的地}[郵費(fèi)]<-{商品屬性}多少苞笨?||商品查詢
具體格式不必糾結(jié)债朵。核心一點(diǎn):標(biāo)注就是將原始數(shù)據(jù)內(nèi)全部或者部分內(nèi)容子眶,按照業(yè)務(wù)需求打上定義好的標(biāo)簽。
3.3.2 數(shù)據(jù)標(biāo)注的日常工作
簡單說:數(shù)據(jù)標(biāo)注的日常工作就是給各種各樣的數(shù)據(jù)(文本序芦、圖像臭杰、視頻、音頻等)打上標(biāo)簽谚中。
【好消息】:數(shù)據(jù)標(biāo)注工作幾乎沒有門檻渴杆。一般任何專業(yè)的大學(xué)畢業(yè)生,甚至更低學(xué)歷宪塔,都能夠勝任磁奖。上手不需要機(jī)器學(xué)習(xí)之類的專業(yè)知識。
【壞消息】:這樣一份工作某筐,是純粹的“臟活累活”点寥,一點(diǎn)都不cool,起薪也很低来吩。
打個(gè)不太恰當(dāng)?shù)谋扔鳎?/p>
做算法是屠龍,仗劍江湖蔽莱,天外飛仙弟疆;
做工程是狩獵,躍馬奔騰盗冷,縱酒狂歌怠苔;
做數(shù)據(jù)是養(yǎng)豬,每天拌豬食清豬糞仪糖,一臉土一身泥柑司。
所以,雖然這是一件誰都能干的工作锅劝,但是恐怕攒驰,沒幾個(gè)人想干。
3.3.3 數(shù)據(jù)標(biāo)注的難點(diǎn)
就單個(gè)任務(wù)而言故爵,數(shù)據(jù)標(biāo)注是一項(xiàng)很簡單的工作玻粪。它的難點(diǎn)在于數(shù)據(jù)的整體一致性,以及與業(yè)務(wù)的集合诬垂。
【1****】數(shù)據(jù)一致性是指:所有數(shù)據(jù)的標(biāo)注原則都是一樣的劲室。
當(dāng)數(shù)據(jù)很多的時(shí)候,一致性是相當(dāng)難以保證的结窘,尤其是在有精標(biāo)需求的情況下很洋。
如果一份 raw data 由多個(gè)人同時(shí)標(biāo)注,就算是反復(fù)宣講標(biāo)注原則隧枫,每個(gè)人也都有自己的理解和側(cè)重喉磁,很難保證一致谓苟,很可能一句話在某個(gè)人看來是“查詢商品”,而在另一個(gè)人看來就是“要求售后”线定。(即使是將所有數(shù)據(jù)交給一個(gè)人娜谊,也可能在不同時(shí)間段理解不同。)
出于對數(shù)據(jù)標(biāo)注工作的不重視(正好與對算法的過分重視相映成趣)斤讥,很多公司外包了數(shù)據(jù)標(biāo)注工作纱皆。
對于數(shù)據(jù)標(biāo)注的不一致性,則采取一種暴力解決方案:讓多個(gè)人(比如3個(gè))同時(shí)標(biāo)注同一份數(shù)據(jù)芭商,一旦出現(xiàn)不一致派草,就采用簡單多數(shù)法,取最多人一致認(rèn)定的那種結(jié)果(比如:3個(gè)人中兩個(gè)都選“查詢商品“铛楣,則選定”查詢商品“為最終 label)近迁。
這種方案對于粗標(biāo)數(shù)據(jù)還可以起到一定作用,但如果是精標(biāo)簸州,則往往連多數(shù)人一致的情況都難以出現(xiàn)鉴竭。
如果三個(gè)人所標(biāo)結(jié)果完全不一樣,那么這條數(shù)據(jù)也就失去了標(biāo)注價(jià)值岸浑。
在現(xiàn)實(shí)中搏存,經(jīng)常會出現(xiàn)同一份數(shù)據(jù)因?yàn)橘|(zhì)量過低,被要求重復(fù)標(biāo)注的情況出現(xiàn)矢洲,費(fèi)時(shí)費(fèi)力璧眠。
【2】與業(yè)務(wù)的集合是數(shù)據(jù)標(biāo)注面對的另一個(gè)挑戰(zhàn)。
這一點(diǎn)在目前還不是很明顯读虏。因?yàn)椋耗壳叭斯ぶ悄艿穆涞攸c(diǎn)還比較有限责静,真正的商業(yè)化領(lǐng)域也就是語音和圖像處理的少數(shù)應(yīng)用;
owner 都是大公司盖桥,有自己的標(biāo)注團(tuán)隊(duì)灾螃,或者雇傭有長期合作關(guān)系的第三方標(biāo)注公司,標(biāo)注人員都相對有經(jīng)驗(yàn)葱轩;
業(yè)務(wù)要求也相對穩(wěn)定睦焕,所需數(shù)據(jù)標(biāo)注又相對通用化,普通人都不難理解數(shù)據(jù)含義和標(biāo)注原則靴拱。
一旦未來人工智能的落地點(diǎn)在各個(gè)領(lǐng)域全面鋪開脏答,很可能需要的是針對具體企業(yè)糟把、具體業(yè)務(wù)翠霍,不斷變更的標(biāo)注需求献酗。
標(biāo)注這件事情看似容易,但是一旦標(biāo)注原則有所改變偎窘,就要整個(gè)重新來過乌助。以前的標(biāo)注不但不是積累溜在,反而是累贅。
如何應(yīng)對快速變更的業(yè)務(wù)需求他托,同步更新標(biāo)注結(jié)果掖肋,將是一個(gè)在AI真正服務(wù)于大眾時(shí)全面爆發(fā)的問題。偏偏現(xiàn)階段還未引起足夠重視赏参。
3.3.4 數(shù)據(jù)標(biāo)注的潛力
就目前而言志笼,數(shù)據(jù)對模型的影響遠(yuǎn)勝于算法。一群年薪百萬起步的算法工程師耗費(fèi)經(jīng)年的成果把篓,對于模型質(zhì)量直接的影響甚至比不上一個(gè)靠譜標(biāo)注團(tuán)隊(duì)一兩個(gè)月的精心標(biāo)注纫溃。對模型的影響尚且如此,更何況是商業(yè)價(jià)值韧掩。
此時(shí)此刻紊浩,AI 在風(fēng)口浪尖,大公司疗锐、拿了巨額風(fēng)投的獨(dú)角獸 startup坊谁,一個(gè)個(gè)拿出千金市馬骨的氣概,將不可思議的高薪狠狠砸向 AI 領(lǐng)域的頂尖學(xué)者滑臊,順便捧起了一批年輕的博士呜袁,也引來了世人的垂涎。
這種情形能維持多久简珠?商業(yè)企業(yè)能承受多少年不掙錢只燒錢?待潮涌過后虹钮,行業(yè)回歸理性聋庵,模型還是要用來掙錢的。
到了那個(gè)階段芙粱,大小企業(yè)不會去算成本收益嗎祭玉?他們會意識不到將資源投入數(shù)據(jù)和算法的不同產(chǎn)出比嗎?
企業(yè)為了創(chuàng)造利潤應(yīng)用AI技術(shù)春畔,算法工程師不是剛需脱货,而數(shù)據(jù)標(biāo)注這個(gè)人工智能領(lǐng)域的“勤行”,人工智能藍(lán)領(lǐng)律姨,一定是剛需振峻!
一切標(biāo)注工作的難點(diǎn)和潛藏的風(fēng)險(xiǎn),也就是這項(xiàng)工作的潛力和從事這項(xiàng)工作未來職業(yè)發(fā)展的可能性所在择份。
3.3.5 數(shù)據(jù)標(biāo)注的職業(yè)發(fā)展
如前所述扣孟,數(shù)據(jù)標(biāo)注的難點(diǎn)在于:
如何根據(jù)業(yè)務(wù)設(shè)定標(biāo)注原則
如何快速統(tǒng)一地實(shí)現(xiàn)標(biāo)注原則
同時(shí),和所有門檻低的工種一樣荣赶,從事數(shù)據(jù)標(biāo)注工作凤价,要面臨如何從極大量基數(shù)資質(zhì)類似的人員中脫穎而出的問題鸽斟。
還有就是如何與越來越多的自動(dòng)化標(biāo)注技術(shù)共處的問題。
因此利诺,筆者個(gè)人建議的數(shù)據(jù)標(biāo)注職業(yè)提升路徑:經(jīng)驗(yàn)+業(yè)務(wù)+管理富蓄。大致步驟為:
通過實(shí)踐積累數(shù)據(jù)標(biāo)注的工作經(jīng)驗(yàn)
深入理解業(yè)務(wù)需求并將其體現(xiàn)到數(shù)據(jù)的標(biāo)注結(jié)果中
管理標(biāo)注團(tuán)隊(duì)達(dá)到高效的標(biāo)注結(jié)果與業(yè)務(wù)變更align
未來也許會出現(xiàn)一個(gè)“數(shù)據(jù)經(jīng)理”之類稱謂的職位:其職責(zé)以負(fù)責(zé)提供高質(zhì)量標(biāo)注數(shù)據(jù)為基礎(chǔ),技術(shù)上銜接工程領(lǐng)域的 ETL 和數(shù)據(jù)處理慢逾,產(chǎn)品上對接業(yè)務(wù)立倍,帶領(lǐng)團(tuán)隊(duì)為公司產(chǎn)品或服務(wù)的 revenue 提供直接貢獻(xiàn)。
4. 認(rèn)清形勢氛改,腳踏實(shí)地
近來一段時(shí)間帐萎,能明顯感到,想入行AI的人越來越多胜卤,而且增幅越來越大疆导。
為什么這么多人想入行AI呢?真的是對計(jì)算機(jī)科學(xué)研究或者擴(kuò)展人類智能抱著無限的熱忱嗎葛躏?說白了澈段,大多數(shù)人是為了高薪。
人們?yōu)榱双@得更高的回報(bào)而做出選擇舰攒、努力工作败富,原本是非常正當(dāng)?shù)氖虑椤jP(guān)鍵在于摩窃,找對路徑兽叮。
尋求入行的人雖多,能真的認(rèn)清市場當(dāng)前的需求猾愿,了解不同層次人才定位鹦聪,并結(jié)合自己實(shí)際尋找一條可行之路的人太少。
人人都想“做算法”蒂秘,卻不想想:大公司里的研究院養(yǎng)著一群高端科學(xué)家泽本,有得是讀了十幾二十年論文始終站在AI潮頭的資深研究人員。
想要與他們?yōu)槲樽鏊惴ㄒ錾氂锌梢耘c之并列的成就:要么有足夠分量的學(xué)術(shù)成果规丽,要么解決過大用戶量產(chǎn)品的實(shí)際業(yè)務(wù)問題——你占哪一條呢?
僅僅是學(xué)過課程撇贺,做過練習(xí)或?qū)嵙?xí)性質(zhì)的小項(xiàng)目赌莺,是不足以去做算法的。
誰在自己的想象世界里不是屠龍的劍客松嘶?但現(xiàn)實(shí)當(dāng)中能屠龍的人又有幾個(gè)雄嚣?留給人去屠的龍又有幾條?養(yǎng)豬雖然沒那么高大上,有豬肉吃是實(shí)實(shí)在在的缓升。
好****高騖遠(yuǎn)只會虛擲光陰鼓鲁,腳踏實(shí)地才能實(shí)現(xiàn)理想——這也是筆者寫作此文的初衷。
5. 小公司的AI之路
有開頭的Case 1港谊,多說幾句筆者通過個(gè)人觀察和思考骇吭,對小企業(yè)應(yīng)用AI提出的建議。
小公司沒有那么多錢可燒歧寺,不可能像大公司那樣燥狰,負(fù)擔(dān)研究院、科學(xué)家斜筐。因此龙致,真心不建議小公司以技術(shù)儲備為目的雇傭做算法的人。
試想:真要是花費(fèi)百萬年薪聘請到一位博士畢業(yè)生顷链,過了半年TA什么交付都沒有目代,或者即使有幾個(gè)看起來很炫酷的模型,卻既不能增加流量嗤练,也無法吸引用戶付費(fèi)榛了,對公司收入沒有任何幫助,到時(shí)候煞抬,作為雇主霜大,又如何判斷是AI技術(shù)的發(fā)展還沒有成熟到能在公司業(yè)務(wù)上落地,還是這個(gè)人尸位素餐呢革答?
當(dāng)然战坤,不是說小公司就不能聘用算法工程師,而是說残拐,這種高成本的付出應(yīng)該有的放矢湖笨,且公司原有成員具備評判交付成果質(zhì)量的能力。
作為用人方蹦骑,得知道招人進(jìn)來做什么,有什么事情可以應(yīng)用AI技術(shù)提高其質(zhì)量或效率臀防,而這種提升又可以用什么樣的指標(biāo)來衡量眠菇。換言之,就是:小公司用AI****袱衷,先定好KPI再招人捎废。
筆者個(gè)人意見:大部分小企業(yè)真的用不著算法工程師,完全可能通過:
業(yè)務(wù)數(shù)據(jù) + ML/DL工具 => 工作模型
來實(shí)現(xiàn)應(yīng)用AI技術(shù)的目的致燥。
如此一來登疗,小企業(yè)真正需要的是:
i)少量了解模型原理,能夠直接應(yīng)用現(xiàn)成框架、工具辐益、算法庫訓(xùn)練模型的程序員(2中所描述的做工程的人)断傲;
ii)針對業(yè)務(wù)提出模型應(yīng)用需求并提供數(shù)據(jù)的人——不僅僅是數(shù)據(jù)標(biāo)注,而是綜合了業(yè)務(wù)智政、數(shù)據(jù)认罩、技術(shù)的復(fù)合型人才。3中所述“數(shù)據(jù)經(jīng)理”很可能首先批量地從小企業(yè)中涌現(xiàn)续捂。