在一家AI公司工作四年多,經(jīng)常有人問(wèn)我做好人工智能的核心是什么。當(dāng)前的AI發(fā)展階段,我的回答是:
- 應(yīng)用場(chǎng)景理解
- 工程能力
-
算法能力
催化劑是團(tuán)隊(duì)的銜接
1. 應(yīng)用場(chǎng)景理解
? ? ? ?基于現(xiàn)有的AI技術(shù),訓(xùn)練時(shí)必須大規(guī)模的數(shù)據(jù)。訓(xùn)練數(shù)據(jù)和應(yīng)用場(chǎng)景的match程度決定了算法的上限。很多互聯(lián)網(wǎng)或者傳統(tǒng)公司都會(huì)遇到類(lèi)似的情況:某某頂尖的AI公司給出的解決方案,號(hào)稱(chēng)全球領(lǐng)先,在實(shí)際場(chǎng)景中測(cè)試后發(fā)現(xiàn)問(wèn)題很多。其核心原因之一在于:
? ? ? ?真實(shí)用戶場(chǎng)景的數(shù)據(jù)和AI公司訓(xùn)練的數(shù)據(jù)match程度較低?;谀壳暗腁I技術(shù),無(wú)法做到全場(chǎng)景的泛化。
? ? ? ?以目前比較成熟的人臉檢測(cè)為例,現(xiàn)在極少有公司能夠通過(guò)一個(gè)模型覆蓋所有場(chǎng)景,通常的做法是在基礎(chǔ)模型上,增加對(duì)應(yīng)場(chǎng)景大量的數(shù)據(jù),做到比較優(yōu)良的效果,比如以人臉應(yīng)用的場(chǎng)景:
1. AI智能安防:臉比較小,攝像頭比較員通道內(nèi)光線比較暗,有俯仰角各種情況;
2. 人臉解鎖:人臉比較大,使用是一個(gè)過(guò)程(手臂抬起,會(huì)有移動(dòng)),光線各種情況;
3. 拍照:人臉大小不定,光線一般稍好;
? ? ? ?如果把場(chǎng)景1中的安防場(chǎng)景,應(yīng)用在人臉解鎖中,問(wèn)題基本會(huì)非常大。
基于以上結(jié)論,在AI的應(yīng)用的過(guò)程中,對(duì)于應(yīng)用場(chǎng)景和業(yè)務(wù)的理解是最基本,最核心的。需要整個(gè)Team對(duì)應(yīng)用場(chǎng)景和業(yè)務(wù)有很深的理解,包括但不限于:
1. 數(shù)據(jù)采集,標(biāo)注和清洗人員;
2. 研究員;
3. 工程(包括產(chǎn)品經(jīng)理)和測(cè)試;
對(duì)應(yīng)用場(chǎng)景和業(yè)務(wù)的理解,同樣可以協(xié)助整個(gè)團(tuán)隊(duì)做出更好的解決方案。原因在于應(yīng)用需要的不僅僅是算法,還包括整個(gè)solution。以IPhone的人臉解鎖為例,其核心模塊包括比對(duì)和活體等,但是在實(shí)際錄入使用時(shí)發(fā)現(xiàn)錄入和解鎖時(shí)的過(guò)程,有很多成像模糊,對(duì)比對(duì)和活體算法造成很大的干擾。基于此的核心解決方案是:
1. 增加質(zhì)量模塊;
2. 在錄入時(shí),提高質(zhì)量標(biāo)準(zhǔn),保證錄入時(shí),圖片清晰;
3. 解鎖時(shí),通過(guò)質(zhì)量過(guò)濾掉算法無(wú)法識(shí)別的圖像,提高通過(guò)率和安全性;
通過(guò)以上方式之后,算法的整體表現(xiàn)大大提升。
2. 工程能力
PS:這段摘自知乎,和我思想是一致的;
? ? ? ?做好AI應(yīng)用,不僅是要懂AI“算法”,更重要的是軟件工程能力和系統(tǒng)能力。在實(shí)踐中,寫(xiě)程序是不是有良好的風(fēng)格,版本控制是不是成為習(xí)慣,是不是掌握基本的網(wǎng)絡(luò)服務(wù)構(gòu)架,這些基本功比會(huì)用Keras/TensorFlow重要多了。有想法的人很多,具體工程去做的人就少了,應(yīng)先從最底層的工程練起。沒(méi)有具體的工程經(jīng)驗(yàn),就是清談,是浪費(fèi)時(shí)間。先過(guò)了系統(tǒng)運(yùn)維關(guān)、數(shù)據(jù)庫(kù)關(guān)、代碼習(xí)慣關(guān)、基本軟件工程關(guān),才能談得上落地一個(gè)AI的系統(tǒng)。
現(xiàn)實(shí)系統(tǒng)里行之有效的人工智能算法,都是很簡(jiǎn)單的。能不能發(fā)揮好的根本,都在于如何把這些簡(jiǎn)單的東西因地制宜綜合運(yùn)用。為1%的核心算法代碼跑好,要99%的“工程”代碼的支持。
比如對(duì)機(jī)器學(xué)習(xí),無(wú)免費(fèi)午餐定理告訴我們,一個(gè)算法如果在一類(lèi)問(wèn)題上特別有效,那一定有一些問(wèn)題它比隨機(jī)算法還差。一個(gè)現(xiàn)實(shí)中可用的機(jī)器學(xué)習(xí)系統(tǒng),幾乎一定是多種問(wèn)題的混合問(wèn)題。不會(huì)存在一種算法是一個(gè)現(xiàn)實(shí)問(wèn)題的靈丹妙藥。現(xiàn)實(shí)的問(wèn)題的解決,一定是用一個(gè)良好的工程架構(gòu),讓多種算法混合在一起解決問(wèn)題。能拿捏這個(gè)架構(gòu)設(shè)計(jì)的“度”,就是人工智能工程師最核心的能力。
又比如邏輯這個(gè)分支。概念上其實(shí)沒(méi)有比邏輯更簡(jiǎn)單的語(yǔ)言了:與、非、存在量詞。但是為了工程化這個(gè)簡(jiǎn)單的東西,就衍生出巨大的一門(mén)學(xué)科:知識(shí)工程、語(yǔ)義網(wǎng)、知識(shí)圖譜。知識(shí)工程之所以難不在“知識(shí)”,而在“工程”。當(dāng)關(guān)注“知識(shí)”的時(shí)候,總是可以映射最優(yōu)秀的人的智能。但工程化的時(shí)候,必須適應(yīng)群體無(wú)限的奇葩,和不可避免的各種成本的折衷。
AI應(yīng)用落地,核心是工程問(wèn)題,不是算法問(wèn)題,更不是“哲學(xué)”問(wèn)題。一定要特別特別“土”,踏踏實(shí)實(shí)從樸素的運(yùn)維、數(shù)據(jù)庫(kù)、數(shù)據(jù)清洗做起,從實(shí)際的工程中逐步演化。如何按天迭代? 如何構(gòu)造聯(lián)調(diào)系統(tǒng)? 如何無(wú)標(biāo)注數(shù)據(jù)啟動(dòng)? 如何分離準(zhǔn)確度和召回率要求? 如何統(tǒng)一運(yùn)用規(guī)則和統(tǒng)計(jì)? 如何適應(yīng)無(wú)明確衡量標(biāo)準(zhǔn)的開(kāi)發(fā)? 如何設(shè)計(jì)可演進(jìn)的數(shù)據(jù)模式? 如何提升數(shù)據(jù)可理解性? 如何逐步提升規(guī)則系統(tǒng)的表達(dá)力? 如何平衡黑箱和白箱模型的優(yōu)缺點(diǎn)? 如何在優(yōu)雅架構(gòu)和工期間取舍? 等等,這些都是教科書(shū)上沒(méi)有的答案。只有扎扎實(shí)實(shí)從工程出發(fā),才能實(shí)事求是地發(fā)展出低成本的、有生命力的AI系統(tǒng)。
如果僅僅是因?yàn)槟硞€(gè)東西時(shí)髦就去學(xué),比如因?yàn)檫@兩年AI火就去學(xué)AI,滿口ConvolutionalNN、RNN、LSTM,卻沒(méi)有興趣去理解這些東西背后的基本原理和應(yīng)用范圍,對(duì)工程也是無(wú)益的。比如只知道“卷積”這個(gè)詞,卻不理解不同的卷積核對(duì)于圖像到底起什么作用;只知道深度網(wǎng)絡(luò),卻連其他的神經(jīng)網(wǎng)絡(luò)一概不知;只知道word2vec分布式表示,卻連TFIDF和LDA都沒(méi)用過(guò)。這種趕時(shí)髦,對(duì)工程實(shí)踐害處大于用處。
掌握分很多層次。會(huì)用包是一個(gè)層次,會(huì)改進(jìn)是一個(gè)層次,發(fā)優(yōu)秀論文再進(jìn)一個(gè)層次。至于懂得方法的邊界、工程上和其他方法融匯使用,就只有鳳毛麟角的人了。到AI架構(gòu)師的層次,又需要通透理解多種方法的前沿。這樣的人,學(xué)校、研究院都培養(yǎng)不出來(lái),都是通過(guò)工程逼出來(lái)、練出來(lái)、打出來(lái)的。光是懂算法不行,還必須通透理解實(shí)踐的前沿;光是理解一個(gè)分支也不行,還必須通透理解幾個(gè)分支。
沒(méi)有銀彈,沒(méi)有奇跡。都是扎扎實(shí)實(shí)的工程,多年的細(xì)節(jié)的打磨才能解決一點(diǎn)小事。也從來(lái)沒(méi)有一個(gè)所謂的偉大的想法,能跳過(guò)工程的考驗(yàn)而就成功的。工程才是做好AI的鑰匙。
3. 算法能力
? ? ? ?曾經(jīng)我司的產(chǎn)品總監(jiān)級(jí)別的人說(shuō)過(guò)一句話:我司的整體還是很強(qiáng)的,就是缺少兩個(gè)字:靠譜;
? ? ? ?現(xiàn)在改編一下:市場(chǎng)上,大家整體的算法能力還是很強(qiáng)的,大部分人缺少兩個(gè)字:靠譜;
一個(gè)靠譜的算法通常會(huì)考慮到以下,包括不限于:
1. 應(yīng)用場(chǎng)景和業(yè)務(wù);
2. 數(shù)據(jù)match程度和清晰;
3. 算法的上限(性能和效果)以及原因;
4. 測(cè)試評(píng)估方案;
5. 最優(yōu)使用方式;
6. 升級(jí)和可維護(hù)性;
不靠譜的算法一般都給出:效果還可以,你們測(cè)一下。
算法能力決定了單個(gè)算法模塊的上限,算法能力不僅僅包括模型training,更大的程度上是用算法解決應(yīng)用場(chǎng)景的整體方案,并系統(tǒng)的思考和執(zhí)行。
結(jié)語(yǔ):
? ? ? ?AI看似酷炫吊炸天,其實(shí)沒(méi)有銀彈,沒(méi)有光環(huán),都是扎扎實(shí)實(shí)的基礎(chǔ),長(zhǎng)期細(xì)節(jié)的打磨才能解決用戶的部分問(wèn)題。人工智能~先有人工,才有智能。