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