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