AI原本是一個(gè)專業(yè)領(lǐng)域,沒(méi)什么特別的。作為碼農(nóng)一枚,筆者的工作內(nèi)容正好在這個(gè)領(lǐng)域。
近來(lái)這一年左右時(shí)間里,連續(xù)發(fā)生了多件事情,使得筆者不得不抬起原本一直低著敲代碼的頭,看看這個(gè)為AI狂歡的世界。
【Case 1】 居然在一個(gè)月里碰到兩位在相對(duì)傳統(tǒng)行業(yè)創(chuàng)業(yè)的親友,來(lái)打聽(tīng)將AI技術(shù)應(yīng)用到他們所在行業(yè)上的問(wèn)題,例如:是聊天機(jī)器人是否可以代替人工客服。
兩位親友居然都動(dòng)了雇傭一位算法工程師的念頭。其中一位真的已經(jīng)開(kāi)始物色了。
頗費(fèi)周折找到一位某非 985 院校專業(yè)對(duì)口的博士,友人有點(diǎn)動(dòng)心想要聘用,奈何人家開(kāi)口就要100萬(wàn)年薪。
創(chuàng)業(yè)企業(yè)雖然已經(jīng)拿了兩輪融資,還是不敢燒錢作死,故而多方打聽(tīng)“算法”這東西的用處。
【Case 2】 筆者所在公司今年的校園招聘,本人照例作為 interviewer 參加,面試了幾個(gè)來(lái)自不同985院校的學(xué)生(明年畢業(yè))。順便又和幾位今年剛?cè)肼毜膽?yīng)屆生聊了聊。
結(jié)果發(fā)現(xiàn),所有 interviewee(至少是我碰到的),全都是人工智能或機(jī)器學(xué)習(xí)方向的學(xué)生,所有交流過(guò)的新同事,在學(xué)校里做的也全部都是機(jī)器學(xué)習(xí) or 深度學(xué)習(xí)算法。
而且,每一個(gè)人對(duì)于入職后工作的期望都是做算法。
人工智能,已經(jīng)跌入到兩三年前大數(shù)據(jù)風(fēng)口上,全民皆“數(shù)據(jù)科學(xué)家”的套路里了。
到底做什么,算是入行AI?
這個(gè)話題其實(shí)在筆者之前的幾個(gè)chat里面已經(jīng)反復(fù)提到過(guò)了,在此再說(shuō)一遍:工業(yè)界直接應(yīng)用AI技術(shù)的人員,大致可以分為三個(gè)不同角色:算法、工程,和數(shù)據(jù)。
現(xiàn)在各種媒體上,包括gitchat中有大量的文章教大家怎么入行AI,怎么成為具體某個(gè)領(lǐng)域的工程師,告訴大家要在某領(lǐng)域內(nèi)發(fā)展需要掌握的技術(shù)棧是什么,等等……對(duì)此本文不再贅述。
我們不說(shuō)怎么能夠成為XXX,我們先來(lái)看看成為XXX之后要做什么事情,而做這些事情,需要什么樣的能力,在擁有了這些能力、做上了這件事情之后,又能向什么方向發(fā)展。
換言之,本文中,我們將從直觀的角度,管窺承擔(dān)不同角色工作所需要具備的素質(zhì),日常工作的狀態(tài),和職業(yè)發(fā)展路徑。
1. 做算法
1.1 日常工作
所有人都想做算法,那么,說(shuō)到底,在工業(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 必備能力
既然日常工作首先是讀別人論文。那么,必不可少,作為算法工程師得具備快速、大量閱讀英語(yǔ)論文的能力。
有一個(gè)網(wǎng)站,所有有志于算法的同學(xué)必須要知道:https://arxiv.org ——這里有多個(gè)學(xué)科(包括computer science)大量的最新論文。
現(xiàn)在許多科學(xué)家、學(xué)者、研究人員和博士生在論文剛剛完成,尚未在正式期刊會(huì)議上發(fā)表時(shí)就先將論文發(fā)布在此處,為的是在盡量短的時(shí)間延誤下對(duì)外傳播自己的成果。
傳統(tǒng)的正規(guī)渠道,從論文完成到正式發(fā)表之間存在短則三四個(gè)月,長(zhǎng)則一年半載的延遲。這對(duì)一些傳統(tǒng)學(xué)科,還勉強(qiáng)可以接受。
但計(jì)算機(jī)科學(xué),尤其是人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)這幾個(gè)當(dāng)今世界最熱門的主題,大家都在爭(zhēng)分奪秒地?fù)屨贾聘唿c(diǎn),幾個(gè)月的耽擱根本不能容忍。
因此,對(duì)于AI的學(xué)術(shù)性文獻(xiàn)而言,arxiv.org 實(shí)際上已經(jīng)成為了當(dāng)前的集大成之地。
如果要做算法,平均而言,大致要保持每周讀一篇最新論文的頻率。
也許這就是為什么,到目前為止,筆者所聽(tīng)聞和見(jiàn)過(guò)的算法工程師都是名校相關(guān)專業(yè)博士的原因。
經(jīng)過(guò)幾年強(qiáng)化學(xué)術(shù)研究訓(xùn)練,這些博士們,就算英語(yǔ)綜合水平不過(guò) CET-4,也能讀得進(jìn)去一篇篇硬骨頭似的英語(yǔ)論文!
1.3 自測(cè)“算法力”
但當(dāng)然不能說(shuō)碩士、學(xué)士或者其他專業(yè)的有志之士就做不成算法了。人都不是生而知之,不會(huì)可以學(xué)嘛。
但是到底能不能學(xué)會(huì),其實(shí)也并不需要三年五載的時(shí)間,花費(fèi)幾萬(wàn)十幾萬(wàn)金錢在各種培訓(xùn)或者付費(fèi)閱讀上才能夠知道。
有個(gè)很簡(jiǎn)單的驗(yàn)證方法:現(xiàn)在就去https://arxiv.org找一篇論文(比如這篇:[Dynamic Routing Between Capsules](https://arxiv.org/pdf/1710.09829.pdf)),從頭到尾讀一遍。
現(xiàn)在不懂沒(méi)關(guān)系,至少先試試在不懂的情況下能不能把它從頭到尾一字不漏的讀完,有不認(rèn)識(shí)的字查字典。
如果這都做不到,還是當(dāng)機(jī)立斷和“算法”分手吧。既然注定無(wú)緣,何必一味糾纏?
1.4 學(xué)術(shù)實(shí)踐能力
如果,碰巧你喜歡讀論文,或者就算不喜歡也有足夠強(qiáng)大的意志力、專注力壓迫自己去強(qiáng)行閱讀論文。那么恭喜你,你已經(jīng)跨上了通往算法山門的第一級(jí)臺(tái)階。
下面一級(jí)是:讀懂論文。
既然要讀論文,讀最新論文,而且閱讀的目的是指導(dǎo)實(shí)踐,那么自然要讀懂。拿起一篇論文就達(dá)到*懂*的程度,至少需要下面這三種能力:
1.4.1 回溯學(xué)習(xí)能力
一篇論文拿來(lái)一看,一大堆名詞術(shù)語(yǔ)不懂,它們互相之間是什么關(guān)系也不知道。怎么辦?去讀參考文獻(xiàn),去網(wǎng)上搜索,去書籍中查找……總之,動(dòng)用一切資源和手段,搞清不明概念的含義和聯(lián)系。
這種能力是學(xué)術(shù)研究的最基礎(chǔ)能力之一,一般而言,有學(xué)術(shù)背景的人這一點(diǎn)不在話下。
如果現(xiàn)在沒(méi)有,也可以去主動(dòng)培養(yǎng),那么可能首先需要學(xué)習(xí)一下學(xué)術(shù)研究方法論。
1.4.2 數(shù)學(xué)能力
如果只是本著學(xué)習(xí)的目的讀經(jīng)典老論文,那么只要清楚文中圖表含義,看公式推導(dǎo)明白一頭一尾(最開(kāi)始公式成立的物理意義,以及結(jié)束推導(dǎo)后最終形式所具備的基本性質(zhì))也就可以了。
但讀最新論文就不同。因其新,必然未經(jīng)時(shí)光檢驗(yàn),因此也就沒(méi)人預(yù)先替你驗(yàn)證的它的正確性。
在這種情況下,看公式就得看看推導(dǎo)了。否則,外一是數(shù)學(xué)推導(dǎo)有錯(cuò),導(dǎo)致了過(guò)于喜人的結(jié)果,卻無(wú)法在實(shí)踐中重現(xiàn),豈不空耗時(shí)力?
如果目前數(shù)學(xué)能力不夠,當(dāng)然也可以學(xué)。但就與后面要說(shuō)的做工程用到什么學(xué)什么的碎片化學(xué)習(xí)不同,做算法,需要系統(tǒng)學(xué)習(xí)數(shù)學(xué)。
微積分、線性代數(shù)、概率統(tǒng)計(jì),是無(wú)法回避的。如果在這方面有所缺乏,那還是先從計(jì)算機(jī)系的本科數(shù)學(xué)課開(kāi)始吧,個(gè)人推薦北師大教材。
1.4.3 理論聯(lián)系實(shí)際,將學(xué)術(shù)論述與產(chǎn)品、業(yè)務(wù)結(jié)合的能力
一般來(lái)說(shuō),在大企業(yè)里做到真正的算法工程師/科學(xué)家,也就不需要自己去動(dòng)手開(kāi)發(fā)產(chǎn)品了。但做 demo/prototype 還是不能避免的。
算法工程師,可不是用別人寫好的工具填幾個(gè)參數(shù)去運(yùn)行就可以的,需要負(fù)責(zé)實(shí)際業(yè)務(wù)問(wèn)題到數(shù)學(xué)模型的抽象,并能夠?qū)⑺俗钚鲁晒ㄇ煤诎濉切┱撐模。。。?yīng)用到業(yè)務(wù)數(shù)據(jù)上去。
說(shuō)得更通俗一點(diǎn),就算是用別人寫的工具或框架,做算法的,也得是i)第一撥、最前沿那批試用者,或者ii)工具最新玩法的發(fā)明者。
1.5 創(chuàng)新型人才
算法工程師,即使自己不發(fā)明新的算法,不提出新的算法優(yōu)化方法,也得去嘗試最新算法的使用或者把已有算法用出新花樣來(lái)。
毋庸置疑,這是一個(gè)有著必然創(chuàng)新性的角色。因此,這個(gè)角色必然不適合絕大多數(shù)人!
2. 做工程
2.1 日常工作
相對(duì)于算法的創(chuàng)新和尖端,做工程要平實(shí)得多。
這一角色比較有代表性的一種崗位就是:機(jī)器學(xué)習(xí)工程師(或戲稱調(diào)參工程師)——他們使用別人開(kāi)發(fā)的框架和工具,運(yùn)行已有算法,訓(xùn)練業(yè)務(wù)數(shù)據(jù),獲得工作模型。
其間可能需要一些處理數(shù)據(jù)、選取特征或者調(diào)節(jié)參數(shù)的手段,不過(guò)一般都有據(jù)可循,并不需要自己去發(fā)明一個(gè)XXXX。
做工程也得讀論文,不過(guò)和做算法不同,做工程讀論文的一般目的不是嘗試最新方法,而是用已知有效的方法來(lái)解決實(shí)際問(wèn)題。
這就導(dǎo)致了,做工程的,讀的經(jīng)常是“舊”論文,或者相對(duì)學(xué)術(shù)含量低一些(不那么硬)的論文。
而且在閱讀時(shí),主要是為了直接找到某個(gè)問(wèn)題的處理方法,因此,可以跳讀。
對(duì)于其中的數(shù)學(xué)公式,能夠讀懂頭尾也就可以了。論文閱讀頻率和學(xué)術(shù)深度的要求,都比做算法低得多。
TIP:很多title寫的是“人工智能/機(jī)器學(xué)習(xí)/深度學(xué)習(xí)算法工程師”的招聘崗位,其實(shí)招的是做工程的人。不要執(zhí)著于辭藻,看清楚具體職責(zé)和工作內(nèi)容。
2.2 軟件工程師的分支
說(shuō)到底,機(jī)器學(xué)習(xí)工程師,是廣義的軟件工程師(或云程序員)的一個(gè)分支。AI產(chǎn)品開(kāi)發(fā),是廣義軟件開(kāi)發(fā)的一個(gè)領(lǐng)域。
說(shuō)起來(lái),每一個(gè)程序員都有一個(gè)領(lǐng)域。不過(guò),不同領(lǐng)域在不同時(shí)期熱度不同,發(fā)展趨勢(shì)不同。
若干年前,做*底層*的程序員在程序界睥睨群雄。寫協(xié)議棧的、開(kāi)發(fā)驅(qū)動(dòng)的、實(shí)現(xiàn)各種系統(tǒng)接口的程序員,站在鄙視鏈的最頂端。
如今,風(fēng)水輪流轉(zhuǎn),昨日黃花已謝,輪到AI封神了。
但說(shuō)到底,開(kāi)發(fā)人工智能產(chǎn)品的程序員,也還是程序員。不過(guò)是需要懂一定程度的領(lǐng)域內(nèi)理論知識(shí)而已,和以前開(kāi)發(fā) PCI 協(xié)議棧要懂 PCI 協(xié)議,寫網(wǎng)卡 driver 要懂 TCP/IP 的道理是一樣的。
2.3 程序員的基本素質(zhì)
既然是程序員,首先就不能丟掉 程序員的基本素質(zhì):編碼能力,和基礎(chǔ)算法能力(不是前面說(shuō)的那種算法,而是鏈、樹(shù)、圖的構(gòu)建、刪除、遍歷、查找、排序等數(shù)據(jù)結(jié)構(gòu)里講的那種算法),是最起碼要求。
其實(shí),在AI成為潮流的今天,只要能找到一個(gè)在AI方面相對(duì)比較前沿的企業(yè),進(jìn)去做一名普通程序員。
那么即使本來(lái)開(kāi)發(fā)的產(chǎn)品不屬于AI范疇,未來(lái)通過(guò)在舊產(chǎn)品上應(yīng)用新的AI技術(shù),或者在公司內(nèi)部 transfer 到做 AI 產(chǎn)品的 team,都可能獲得入行的機(jī)會(huì)。
甚至具體知識(shí)的掌握,都可以在入職后慢慢積累——對(duì)于大多數(shù)AI工程人員,這可能才是一條自然的入行之路。
但這一切的前提是:此人首先得是一個(gè)合格的程序員!
而不是本末倒置,雖然花功夫?qū)W了幾個(gè)模型、算法,卻連最基本的編程面試題都做不對(duì)。
2.4 做工程,「機(jī)器學(xué)習(xí)」學(xué)到多深夠用
當(dāng)然,既然是有領(lǐng)域的程序員,在專業(yè)上達(dá)到一定深度也是必要的。
雖然做工程一般要使用現(xiàn)成技術(shù)框架,但并不是說(shuō),直接把算法當(dāng)黑盒用就可以做一名合格的“調(diào)參”工程師了。
把算法當(dāng)黑盒用的問(wèn)題在于:黑盒能夠解決問(wèn)題的時(shí)候,使用方便,而一旦不能解決問(wèn)題,或者對(duì)質(zhì)量有所要求,就會(huì)感覺(jué)無(wú)所適從。
作為程序員、工程人員,想用機(jī)器學(xué)習(xí)算法解決實(shí)際問(wèn)題,就得對(duì)算法有一定程度的掌握,此外對(duì)于數(shù)據(jù)處理和模型驗(yàn)證,也需具備相應(yīng)知識(shí)。
2.4.1算法
僅從使用角度而言,掌握算法,大致可分為如下由淺入深的幾步:
【1】簡(jiǎn)單使用:了解某個(gè)算法基本原理,應(yīng)用領(lǐng)域,功能和局限。
a) 該算法的應(yīng)用問(wèn)題域是什么?(e.g. 分類、回歸、聚類……)
b) 該算法的應(yīng)用目標(biāo)是什么?(e.g. 判別算法、生成算法……)
c) 該算法適合應(yīng)用在怎樣的數(shù)據(jù)集,它能對(duì)數(shù)據(jù)造成怎樣的影響?(e.g. 適用少量高維稀疏數(shù)據(jù)……)
d) 能夠主動(dòng)獲取該算法的函數(shù)庫(kù),調(diào)用該算法生成模型。
【2】模型調(diào)優(yōu):對(duì)所采用算法和對(duì)應(yīng)模型的數(shù)學(xué)公式有所了解。
a) 知道調(diào)用函數(shù)中各個(gè)參數(shù)的意義(e.g. 迭代次數(shù),對(duì)應(yīng)到公式中參數(shù)的含義……),能夠通過(guò)調(diào)節(jié)這些參數(shù)達(dá)到優(yōu)化結(jié)果的目的。
b) 能夠通過(guò)加約束條件(e.g. L0, L1, L2 ……)來(lái)優(yōu)化算法。
c) 了解在當(dāng)前問(wèn)題域,目標(biāo)和輸入數(shù)據(jù)確定的情況下,還可以用哪些其他模型可替換現(xiàn)有模型,并進(jìn)行嘗試。
d) 能夠?qū)⒍鄠€(gè)弱模型加權(quán)組成強(qiáng)模型(e.g. adaboost)。
【3】運(yùn)行效率優(yōu)化:對(duì)模型本身的數(shù)學(xué)推導(dǎo)過(guò)程和模型最優(yōu)化方法有所掌握,對(duì)于各種最優(yōu)化方法的特點(diǎn)、資源占用及消耗情況有所了解。
a) 了解算法在當(dāng)前數(shù)據(jù)集上的運(yùn)行效率(e.g. 需要進(jìn)行哪些運(yùn)算,是否易于被分布式等)。
b) 了解在其他語(yǔ)言、平臺(tái)、框架的工具包中有否同等或近似功能但在當(dāng)前應(yīng)用場(chǎng)景下效率更高的算法。
c) 能夠針對(duì)具體場(chǎng)景,通過(guò)轉(zhuǎn)換模型的最優(yōu)化方法(optimizer)來(lái)改進(jìn)運(yùn)行效率。
2.4.2 數(shù)據(jù)
僅僅只有算法,并不能解決問(wèn)題。算法和數(shù)據(jù)結(jié)合,才能獲得有效的模型。
對(duì)于數(shù)據(jù),需要從:i)。 具有業(yè)務(wù)含義的信息,和ii)。用于運(yùn)算的數(shù)字,這兩個(gè)角度來(lái)對(duì)其進(jìn)行理解和掌握。
【1】特征選?。簭臉I(yè)務(wù)角度區(qū)分輸入數(shù)據(jù)包含的特征,并認(rèn)識(shí)到這些特征對(duì)結(jié)果的貢獻(xiàn)。
a) 對(duì)數(shù)據(jù)本身和其對(duì)應(yīng)的業(yè)務(wù)領(lǐng)域有所了解。
b) 能夠根據(jù)需要標(biāo)注數(shù)據(jù)。
c) 知道如何從全集中通過(guò)劃分特征子集、加減特征等方法選取有效特征集。
【2】向量空間模型(VSM)構(gòu)建:了解如何將自然語(yǔ)言、圖片等人類日常使用的信息轉(zhuǎn)化成算法可以運(yùn)算的數(shù)據(jù)。
a) 能夠把文字、語(yǔ)音、圖像等輸入轉(zhuǎn)化成算法所需輸入格式(一般為實(shí)數(shù)空間的矩陣或向量)。
b) 能夠根據(jù)信息熵等指標(biāo)選取有效特征。
【3】數(shù)據(jù)清洗和處理:對(duì)直接的業(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)練/測(cè)試數(shù)據(jù),以達(dá)到更好的運(yùn)算效果。
2.4.3 模型驗(yàn)證
算法+數(shù)據(jù)就能夠得到模型。但是,
這個(gè)模型的質(zhì)量如何?
這個(gè)模型和那個(gè)模型比較,哪個(gè)更適合解決當(dāng)前問(wèn)題?
在做了如此這般的優(yōu)化之后得出了一個(gè)新的模型,怎么能夠確認(rèn)它比舊的模型好?
為了解答這些問(wèn)題,就需要掌握度量模型質(zhì)量的方法。為此,需要做到:
i) 了解 bias,overfitting 等基本概念,及針對(duì)這些情況的基本改進(jìn)方法。
ii) 了解各種模型度量指標(biāo)(e.g. Accuracy, Precision,Recall, F1Score……)的計(jì)算方法和含義,及其對(duì)模型質(zhì)量的影響。
iii) 能夠構(gòu)建訓(xùn)練集、測(cè)試集,并進(jìn)行交叉驗(yàn)證。
iv) 能夠運(yùn)用多種不同的驗(yàn)證方法(e.g. 2-Fold cross-validation,K-Fold cross-validation, Leave-One-Out cross-validation……)來(lái)適應(yīng)不同的數(shù)據(jù)集。
3. 做數(shù)據(jù)
此處說(shuō)得做數(shù)據(jù)并非數(shù)據(jù)的清洗和處理——大家可以看到做工程的崗位,有一部分工作內(nèi)容就是ETL和處理數(shù)據(jù)。此處說(shuō)的做數(shù)據(jù)是指數(shù)據(jù)標(biāo)注。
3.1 標(biāo)注數(shù)據(jù)的重要性
雖然機(jī)器學(xué)習(xí)中有無(wú)監(jiān)督學(xué)習(xí),但在實(shí)踐領(lǐng)域被證明有直接作用的,基本上還都是有監(jiān)督模型。
近年來(lái),深度學(xué)習(xí)在很多應(yīng)用上取得了巨大的成功,而深度學(xué)習(xí)的成功,無(wú)論是圖像、語(yǔ)音、NLP、自動(dòng)翻譯還是AlphaGo,恰恰依賴于海量的標(biāo)注數(shù)據(jù)。
無(wú)論是做ML還是DL的工程師(算法&工程),后者有甚,都共同確認(rèn)一個(gè)事實(shí):現(xiàn)階段而言,數(shù)據(jù)遠(yuǎn)比算法重要。
3.2 數(shù)據(jù)人工標(biāo)注的必要性
很多人誤以為 AlphaGo Zero 100:0大勝 AlphaGo 是無(wú)監(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),按完備無(wú)二義性規(guī)則運(yùn)行的游戲,因此計(jì)算機(jī)程序才能依據(jù)規(guī)則自動(dòng)產(chǎn)生標(biāo)注數(shù)據(jù)。
真實(shí)人類世界的事情,基本沒(méi)有完全按矩而行無(wú)意外的情況。因此,對(duì)人類真正有用的模型,還是需要人工標(biāo)注的訓(xùn)練數(shù)據(jù)。
固然,目前有多種技術(shù)用以在標(biāo)注的過(guò)程中輔助人工,以減小工作量及降低人工標(biāo)注比例。但至今沒(méi)有能在應(yīng)用領(lǐng)域完全自動(dòng)化標(biāo)注的技術(shù)出現(xiàn)。
換言之,在看得見(jiàn)的未來(lái)之內(nèi),人工標(biāo)注數(shù)據(jù)仍然是AI落地的必要和主流。
3.3 人工智能的“勤行”
3.3.1 什么叫做標(biāo)注
舉個(gè)很簡(jiǎn)單的例子說(shuō)明一下什么是數(shù)據(jù)標(biāo)注:
在開(kāi)發(fā)聊天機(jī)器人的時(shí)候,我們需要訓(xùn)練意圖判定和實(shí)體識(shí)別模型,因此也就需要標(biāo)注用戶問(wèn)題的意圖和出現(xiàn)的實(shí)體。
這是用戶問(wèn)題原始數(shù)據(jù):“00183號(hào)商品快遞到伊犁郵費(fèi)多少?”
這樣一句話,很顯然問(wèn)它的用戶是想知道某一種商品發(fā)往某地的郵費(fèi)。郵費(fèi)是商品的一個(gè)屬性,我們把所有查詢商品屬性的意圖都定義為“商品查詢”。
因此,這樣一句話的意圖是“商品查詢”。其中有包含了幾個(gè)實(shí)體,分別是商品Id,目的地和商品屬性。
這句話被標(biāo)注出來(lái)以后,就是下面這個(gè)樣子:
[00183]《-{商品Id}號(hào)商品快遞到[伊犁]《-{目的地}[郵費(fèi)]《-{商品屬性}多少?||商品查詢
具體格式不必糾結(jié)。核心一點(diǎn):標(biāo)注就是將原始數(shù)據(jù)內(nèi)全部或者部分內(nèi)容,按照業(yè)務(wù)需求打上定義好的標(biāo)簽。
3.3.2 數(shù)據(jù)標(biāo)注的日常工作
簡(jiǎn)單說(shuō):數(shù)據(jù)標(biāo)注的日常工作就是給各種各樣的數(shù)據(jù)(文本、圖像、視頻、音頻等)打上標(biāo)簽。
【好消息】:數(shù)據(jù)標(biāo)注工作幾乎沒(méi)有門檻。一般任何專業(yè)的大學(xué)畢業(yè)生,甚至更低學(xué)歷,都能夠勝任。上手不需要機(jī)器學(xué)習(xí)之類的專業(yè)知識(shí)。
【壞消息】:這樣一份工作,是純粹的“臟活累活”,一點(diǎn)都不cool,起薪也很低。
打個(gè)不太恰當(dāng)?shù)谋扔鳎?/p>
做算法是屠龍,仗劍江湖,天外飛仙;
做工程是狩獵,躍馬奔騰,縱酒狂歌;
做數(shù)據(jù)是養(yǎng)豬,每天拌豬食清豬糞,一臉土一身泥。
所以,雖然這是一件誰(shuí)都能干的工作,但是恐怕,沒(méi)幾個(gè)人想干。
3.3.3 數(shù)據(jù)標(biāo)注的難點(diǎn)
就單個(gè)任務(wù)而言,數(shù)據(jù)標(biāo)注是一項(xiàng)很簡(jiǎn)單的工作。它的難點(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è)人看來(lái)是“查詢商品”,而在另一個(gè)人看來(lái)就是“要求售后”。(即使是將所有數(shù)據(jù)交給一個(gè)人,也可能在不同時(shí)間段理解不同。)
出于對(duì)數(shù)據(jù)標(biāo)注工作的不重視(正好與對(duì)算法的過(guò)分重視相映成趣),很多公司外包了數(shù)據(jù)標(biāo)注工作。
對(duì)于數(shù)據(jù)標(biāo)注的不一致性,則采取一種暴力解決方案:讓多個(gè)人(比如3個(gè))同時(shí)標(biāo)注同一份數(shù)據(jù),一旦出現(xiàn)不一致,就采用簡(jiǎn)單多數(shù)法,取最多人一致認(rèn)定的那種結(jié)果(比如:3個(gè)人中兩個(gè)都選“查詢商品“,則選定”查詢商品“為最終 label)。
這種方案對(duì)于粗標(biāo)數(shù)據(jù)還可以起到一定作用,但如果是精標(biāo),則往往連多數(shù)人一致的情況都難以出現(xiàn)。
如果三個(gè)人所標(biāo)結(jié)果完全不一樣,那么這條數(shù)據(jù)也就失去了標(biāo)注價(jià)值。
在現(xiàn)實(shí)中,經(jīng)常會(huì)出現(xiàn)同一份數(shù)據(jù)因?yàn)橘|(zhì)量過(guò)低,被要求重復(fù)標(biāo)注的情況出現(xiàn),費(fèi)時(shí)費(fèi)力。
【2】與業(yè)務(wù)的集合是數(shù)據(jù)標(biāo)注面對(duì)的另一個(gè)挑戰(zhàn)。
這一點(diǎn)在目前還不是很明顯。因?yàn)椋耗壳叭斯ぶ悄艿穆涞攸c(diǎn)還比較有限,真正的商業(yè)化領(lǐng)域也就是語(yǔ)音和圖像處理的少數(shù)應(yīng)用;
owner 都是大公司,有自己的標(biāo)注團(tuán)隊(duì),或者雇傭有長(zhǎng)期合作關(guān)系的第三方標(biāo)注公司,標(biāo)注人員都相對(duì)有經(jīng)驗(yàn);
業(yè)務(wù)要求也相對(duì)穩(wěn)定,所需數(shù)據(jù)標(biāo)注又相對(duì)通用化,普通人都不難理解數(shù)據(jù)含義和標(biāo)注原則。
一旦未來(lái)人工智能的落地點(diǎn)在各個(gè)領(lǐng)域全面鋪開(kāi),很可能需要的是針對(duì)具體企業(yè)、具體業(yè)務(wù),不斷變更的標(biāo)注需求。
標(biāo)注這件事情看似容易,但是一旦標(biāo)注原則有所改變,就要整個(gè)重新來(lái)過(guò)。以前的標(biāo)注不但不是積累,反而是累贅。
如何應(yīng)對(duì)快速變更的業(yè)務(wù)需求,同步更新標(biāo)注結(jié)果,將是一個(gè)在AI真正服務(wù)于大眾時(shí)全面爆發(fā)的問(wèn)題。偏偏現(xiàn)階段還未引起足夠重視。
3.3.4 數(shù)據(jù)標(biāo)注的潛力
就目前而言,數(shù)據(jù)對(duì)模型的影響遠(yuǎn)勝于算法。一群年薪百萬(wàn)起步的算法工程師耗費(fèi)經(jīng)年的成果,對(duì)于模型質(zhì)量直接的影響甚至比不上一個(gè)靠譜標(biāo)注團(tuán)隊(duì)一兩個(gè)月的精心標(biāo)注。對(duì)模型的影響尚且如此,更何況是商業(yè)價(jià)值。
此時(shí)此刻,AI 在風(fēng)口浪尖,大公司、拿了巨額風(fēng)投的獨(dú)角獸 startup,一個(gè)個(gè)拿出千金市馬骨的氣概,將不可思議的高薪狠狠砸向 AI 領(lǐng)域的頂尖學(xué)者,順便捧起了一批年輕的博士,也引來(lái)了世人的垂涎。
這種情形能維持多久?商業(yè)企業(yè)能承受多少年不掙錢只燒錢?待潮涌過(guò)后,行業(yè)回歸理性,模型還是要用來(lái)掙錢的。
到了那個(gè)階段,大小企業(yè)不會(huì)去算成本收益嗎?他們會(huì)意識(shí)不到將資源投入數(shù)據(jù)和算法的不同產(chǎn)出比嗎?
企業(yè)為了創(chuàng)造利潤(rùn)應(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)工作未來(lái)職業(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ì)類似的人員中脫穎而出的問(wèn)題。
還有就是如何與越來(lái)越多的自動(dòng)化標(biāo)注技術(shù)共處的問(wèn)題。
因此,筆者個(gè)人建議的數(shù)據(jù)標(biāo)注職業(yè)提升路徑:經(jīng)驗(yàn)+業(yè)務(wù)+管理。大致步驟為:
通過(guò)實(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
未來(lái)也許會(huì)出現(xiàn)一個(gè)“數(shù)據(jù)經(jīng)理”之類稱謂的職位:其職責(zé)以負(fù)責(zé)提供高質(zhì)量標(biāo)注數(shù)據(jù)為基礎(chǔ),技術(shù)上銜接工程領(lǐng)域的 ETL 和數(shù)據(jù)處理,產(chǎn)品上對(duì)接業(yè)務(wù),帶領(lǐng)團(tuán)隊(duì)為公司產(chǎn)品或服務(wù)的 revenue 提供直接貢獻(xiàn)。
4. 認(rèn)清形勢(shì),腳踏實(shí)地
近來(lái)一段時(shí)間,能明顯感到,想入行AI的人越來(lái)越多,而且增幅越來(lái)越大。
為什么這么多人想入行AI呢?真的是對(duì)計(jì)算機(jī)科學(xué)研究或者擴(kuò)展人類智能抱著無(wú)限的熱忱嗎?說(shuō)白了,大多數(shù)人是為了高薪。
人們?yōu)榱双@得更高的回報(bào)而做出選擇、努力工作,原本是非常正當(dāng)?shù)氖虑椤jP(guān)鍵在于,找對(duì)路徑。
尋求入行的人雖多,能真的認(rèn)清市場(chǎng)當(dāng)前的需求,了解不同層次人才定位,并結(jié)合自己實(shí)際尋找一條可行之路的人太少。
人人都想“做算法”,卻不想想:大公司里的研究院養(yǎng)著一群高端科學(xué)家,有得是讀了十幾二十年論文始終站在AI潮頭的資深研究人員。
想要與他們?yōu)槲樽鏊惴?,須有可以與之并列的成就:要么有足夠分量的學(xué)術(shù)成果,要么解決過(guò)大用戶量產(chǎn)品的實(shí)際業(yè)務(wù)問(wèn)題——你占哪一條呢?
僅僅是學(xué)過(guò)課程,做過(guò)練習(xí)或?qū)嵙?xí)性質(zhì)的小項(xiàng)目,是不足以去做算法的。
誰(shuí)在自己的想象世界里不是屠龍的劍客?但現(xiàn)實(shí)當(dāng)中能屠龍的人又有幾個(gè)?留給人去屠的龍又有幾條?養(yǎng)豬雖然沒(méi)那么高大上,有豬肉吃是實(shí)實(shí)在在的。
好高騖遠(yuǎn)只會(huì)虛擲光陰,腳踏實(shí)地才能實(shí)現(xiàn)理想——這也是筆者寫作此文的初衷。
5. 小公司的AI之路
有開(kāi)頭的Case 1,多說(shuō)幾句筆者通過(guò)個(gè)人觀察和思考,對(duì)小企業(yè)應(yīng)用AI提出的建議。
小公司沒(méi)有那么多錢可燒,不可能像大公司那樣,負(fù)擔(dān)研究院、科學(xué)家。因此,真心不建議小公司以技術(shù)儲(chǔ)備為目的雇傭做算法的人。
試想:真要是花費(fèi)百萬(wàn)年薪聘請(qǐng)到一位博士畢業(yè)生,過(guò)了半年TA什么交付都沒(méi)有,或者即使有幾個(gè)看起來(lái)很炫酷的模型,卻既不能增加流量,也無(wú)法吸引用戶付費(fèi),對(duì)公司收入沒(méi)有任何幫助,到時(shí)候,作為雇主,又如何判斷是AI技術(shù)的發(fā)展還沒(méi)有成熟到能在公司業(yè)務(wù)上落地,還是這個(gè)人尸位素餐呢?
當(dāng)然,不是說(shuō)小公司就不能聘用算法工程師,而是說(shuō),這種高成本的付出應(yīng)該有的放矢,且公司原有成員具備評(píng)判交付成果質(zhì)量的能力。
作為用人方,得知道招人進(jìn)來(lái)做什么,有什么事情可以應(yīng)用AI技術(shù)提高其質(zhì)量或效率,而這種提升又可以用什么樣的指標(biāo)來(lái)衡量。換言之,就是:小公司用AI,先定好KPI再招人。
筆者個(gè)人意見(jiàn):大部分小企業(yè)真的用不著算法工程師,完全可能通過(guò):
業(yè)務(wù)數(shù)據(jù) + ML/DL工具 =》 工作模型
來(lái)實(shí)現(xiàn)應(yīng)用AI技術(shù)的目的。
如此一來(lái),小企業(yè)真正需要的是:
i)少量了解模型原理,能夠直接應(yīng)用現(xiàn)成框架、工具、算法庫(kù)訓(xùn)練模型的程序員(2中所描述的做工程的人);
ii)針對(duì)業(yè)務(wù)提出模型應(yīng)用需求并提供數(shù)據(jù)的人——不僅僅是數(shù)據(jù)標(biāo)注,而是綜合了業(yè)務(wù)、數(shù)據(jù)、技術(shù)的復(fù)合型人才。3中所述“數(shù)據(jù)經(jīng)理”很可能首先批量地從小企業(yè)中涌現(xiàn)。
-END-
評(píng)論
查看更多