深度學習的本質(zhì)
深度學習從興起到現(xiàn)在,將近10年了。剛開始因為獲取了一些驚艷的奇效,而被很多人所神話。但是越來越多人熟悉了深度學習,祛魅之后,又開始把它庸俗化,說深度學習其實沒什么了不起,就是一個函數(shù)擬合。
簡單來說,深度學習是在一個給定的假設空間里面,尋找對數(shù)據(jù)擬合效果最好的一個映射,這是個偏數(shù)學的定義。以圖片分類為例,要訓練AI讓它能夠?qū)z像機拍出來的圖片打標簽,看圖片里面有沒有汽車、人、水果,就是完成一個從圖像的像素到語言標簽的映射??蛇x的映射有無窮多種,但最好的實現(xiàn)就是人腦。
所謂擬合,就是希望讓計算機在一個映射構(gòu)成的空間里自動搜索到一個與人腦功能非常接近的映射。深度學習為人們提供了一個非常好的初始搜索空間,也就是多層非線性映射構(gòu)成函數(shù)空間,而且給出了一套在這個空間中自動搜索“最優(yōu)”映射的算法。
深度學習有一個萬能逼近的能力,理論上任何一個映射,不管多復雜,深度學習理論上都有能力去近似它。如上面右圖所示,一層感知機模型只能用超平面劃分空間,兩層神經(jīng)網(wǎng)絡已經(jīng)可以表示凸多邊形了,三層神經(jīng)網(wǎng)絡已經(jīng)可以表達空洞或凹多邊形了。
加上大數(shù)據(jù)和算力的提升,深度學習一面世就在各個領域打敗了傳統(tǒng)機器學習算法,把數(shù)據(jù)驅(qū)動人工智能的算法統(tǒng)一為神經(jīng)網(wǎng)絡,也就是完成了算法的標準化?;叵胍幌略谏疃葘W習之前,一位人工智能的研究生要學習多少種算法,支持向量機、決策樹、隱馬爾可夫模型、貝葉斯網(wǎng)絡、馬爾科夫隨機場等等,每個算法背后都有自己的一套數(shù)學方法,每個領域都有自己的最有效算法。但是到今天,你會發(fā)現(xiàn)所有領域,基本上SOTA算法都是神經(jīng)網(wǎng)絡,而神經(jīng)網(wǎng)絡背后都是BP算法。
所以神經(jīng)網(wǎng)絡和深度學習的厲害之處,在于標準化一統(tǒng)天下。標準化還在發(fā)生,甚至不同領域的神經(jīng)網(wǎng)絡結(jié)構(gòu)也在趨同。大家如果關注趨勢的話,會發(fā)現(xiàn)Transformer開始進入到計算機視覺了,自然語言處理領域也有人開始用卷積網(wǎng)絡,神經(jīng)網(wǎng)絡結(jié)構(gòu)越來越簡化、統(tǒng)一。
算法標準化最大的好處是,不需要為每個算法都寫一套軟件,只要一套軟件(也就是深度學習框架)就能服務所有領域。
深度學習的局限性
深度學習本質(zhì)上也是機器學習里的統(tǒng)計學習,所以也有機器學習的局限性。
比如,既然深度學習是在一個假設空間(hypothesis space)里去找一個擬合數(shù)據(jù)質(zhì)量還比較好的函數(shù),就會出現(xiàn)一個問題:如果預先給定的假設空間里面不包含真實的解,那無論怎么求解都只能找到一個離真正的答案比較近似的解而已,而非最優(yōu)解。特別是,當真實的解距離這個假設空間很遠時,要找到這個近似解也會變得很難。
以左圖為例,目標要分清楚圓圈和叉,我們一眼就可以看出最合適解的是一個二次曲線。假如說剛開始限定在線性模型里搜索,那無論如何都只能學出一條線,這就是假設空間太小,欠擬合。給它一個三次方程,理論上有可能學到這個二次方程,算法不一定能找得到。如果一步到位讓算法在二次方程里去搜索,當然是最好了。
熟悉機器學習的朋友知道,這是選取假設空間的問題,即算法科學家最核心的工作——給定一個問題,確定一個比較好的算法假設空間,使問題對機器學習來說是可行的。假設空間就像一塊大石頭,算法科學家就像雕刻家,不斷的用刀去削它,把那些沒用的石片都砍掉,當剩下的石頭比較接近我們想雕刻的目標時,才把石頭交給機器去加工和打磨,最終形成一個美妙的雕塑。
同時,深度學習也得符合統(tǒng)計學習的規(guī)律——如果這個問題的假設空間非常復雜,就可能需要特別多樣本才能指導這個算法收斂到令人滿意的解(即樣本復雜性問題)。這就影響到了深度學習的成本,收集和標注到足夠的數(shù)據(jù)成本有多高,以及訓練模型需要多少算力等等。
通過深度學習本質(zhì)與局限性的探討,我們就能理解AI所經(jīng)歷的種種高潮與低谷,即深度學習是有效但并非萬能的。因此,在AI發(fā)展高潮時,我們不應過于樂觀,遭遇低谷時也無須過于悲觀。
深度學習是泡沫還是浪潮
那AI到底是一個大潮,還是一個小浪花?我覺得要在一個更大的上下文,也就是信息技術(shù)發(fā)展的的上下文來理解。
信息技術(shù)實質(zhì)上就是把現(xiàn)實或物理的事物通過建模變成程序代碼,然后在計算機里運行來模擬現(xiàn)實世界,因為這個模擬的過程要比現(xiàn)實世界運行更快,成本更低,就可以用模擬結(jié)果對現(xiàn)實世界進行預測和反饋。這是計算機能在所有場合給人類帶來幫助的本質(zhì)原因。
以前人們借助計算機解決問題的時候,必須先通過工程師和科學家來理解現(xiàn)實世界的機制,建立一個模型,再表達成程序,這是一種白盒建模方式。建模是用計算機模擬現(xiàn)實世界時最難的步驟。
而AI帶來了一種不求甚解的新辦法,也就是黑盒建?!灰凶銐蚨嗟臄?shù)據(jù),無須人工理解,它能擬合出匹配甚至超越白盒的模型,可以取代白盒方式。
舉個例子,不用深度學習,讓人去寫識別圖片的程序,計算機視覺的研究者搞了幾十年都沒搞定,但深度學習搞定了。這種新的機制,能大大加速現(xiàn)實世界往虛擬世界遷移的進程。我的理解,這是AI和數(shù)據(jù)驅(qū)動的技術(shù)帶來的最本質(zhì)進步,從這個角度來說,AI絕對是能載入科技史冊的技術(shù)進步。
白+黑,深度學習的正確打開方式
按照搭建信息系統(tǒng)來解決問題的不同手段,我們畫一個圖。
最左邊這兩列都是深度學習崛起前的白盒方式,都需要人去寫程序。第一種方式是不分模塊,囫圇吞棗地去寫代碼,有編程經(jīng)驗的朋友對這種解法的缺陷有切身體會,軟件復雜度超過人的理解能力而失控。所以,實踐中會引入非常多的編程技術(shù)來克服,面向?qū)ο?、隔離、解耦、模塊化、架構(gòu)、設計模式等等,也就是第二列所展示的方法。
如果我們對深度學習的能力充滿信息,認為無論多難的問題都能學習出來,就會傾向于采用第三個做法,收集到原始的輸入和期待的輸出構(gòu)成訓練數(shù)據(jù),不問青紅皂白就直接交給AI來學習。對大部分場景來說,這個方法肯定是過于樂觀了。往往是這個問題太復雜,需要的訓練數(shù)據(jù)太多、需要的計算量太大,如果非要在假設空間太大而數(shù)據(jù)不足的情況下去學習,只能大失所望。
這說明即使拿深度學習來解這個問題,也必須做模塊化,把大問題分解成多個小問題,這些小問題之間有特定的組合關系。比如自動駕駛里分解成感知、決策等一系列子問題,每個子問題限制在AI或者深度學習能解決的范疇之內(nèi),而不是期待AI能囫圇吞棗地解決整個問題。
在實際場景中,不見得對每個子問題用深度學習都是最優(yōu)選擇。比如有些模塊的機理本身已經(jīng)很清晰,用白盒方式很容易求解(譬如一個數(shù)學公式即可),那就沒必要殺雞用牛刀。
所以,最終可能比較合理的解決方案是最右側(cè)展示的“白+黑”的方式。對一個業(yè)務來說,業(yè)務專家和AI專家合作把問題分解,看什么問題適合AI來解決,什么問題必須用人工去解決,需要作出客觀判斷與合理選擇。
軟件2.0:數(shù)據(jù)編程的時代
有很多思想領袖對深度學習的價值做了很好的總結(jié)和概括。比如特斯拉人AI負責人Andrej Karpathy,他在17年寫了篇博客叫《Software 2.0》。他的觀點,以前是軟件1.0,也就是所有軟件都要人寫,但現(xiàn)在2.0可以用數(shù)據(jù)編程的方式來做。
訓練神經(jīng)網(wǎng)絡的權(quán)重,本質(zhì)就是在編程。
最近曾經(jīng)因為賭對了特斯拉、比特幣而名噪一時的ARK基金寫了一份報告,羅列了他們眼中會影響未來的最重要的一二十項技術(shù),第一項就是深度學習。ARK就從軟件2.0數(shù)據(jù)編程的角度來解釋深度學習的重要性,他們預測2037年AI創(chuàng)造的市場價值會超過以前所有信息技術(shù)之和,高達30多萬億美金。
總結(jié)一下,我們對AI的判斷——它是史詩級的技術(shù)進步,而且是一種通用的技術(shù),它一定會成為數(shù)字化基礎設施非常重要的組成部分。從歷史的角度,工業(yè)革命從蒸汽機到電力突破了人的體力極限,信息技術(shù)、AI突破人的腦力極限。所以對AI的技術(shù)創(chuàng)造社會價值,我是非常樂觀的。AI既有本質(zhì)優(yōu)勢,也有它的局限性,我們應該對它既不報過高期待,也不過度貶低。
最近,產(chǎn)業(yè)AI化好像起來了,很多是甲方掌握了場景,加一點AI就取得了很好的效果,這反倒是比較健康的一個模式。我接下來重點聊一下AI產(chǎn)業(yè)化,很多技術(shù)出身的人在思考這個問題,有一個好錘子,怎么拿它去掙錢?近幾年的探索其實是碰了不少壁,主要是AI不夠標準化,所以有人說AI不存在標準化的可能性,質(zhì)疑AI是不是有產(chǎn)業(yè)化的機會,我對此是不同意的。
要預測AI產(chǎn)業(yè)化的機會,我覺得要從平民化、標準化、自動化、工具化、服務化等角度來看。
人工智能的標準化趨勢
AI的標準化趨勢其實正在發(fā)生。除了算法的標準化,其實還有各個層面的標準化。算法的標準化帶來了軟件標準化的機會,深度學習框架正在走向標準化,硬件、技術(shù)平臺、最佳實踐也在標準化。
以深度學習框架為例,我們能注意到的一個標準化的趨勢是接口的標準化,工程師最喜歡PyTorch的接口算法,我們會發(fā)現(xiàn)所有的框架在API設計層面都去學它,各個框架之間有遷移的需求,訓練和部署不是用的同一種框架,中間格式的標準化其實也在發(fā)生,每個框架自己做的IR都大同小異。
硬件層面,雖然芯片市場也打的如火如荼,但是API設計層面也越來越像。首先大家的API應該會模仿CUDA,圖編譯器層面也有一些標準化的趨勢,有一些通用組件出現(xiàn),比如MLIR。這些芯片和上層軟件對接的接口比較一致,從芯片到集群層面的架構(gòu)也非常接近。
技術(shù)平臺的話,有的人會有痛點——如果個人要搞一臺服務器去裝框架,會發(fā)現(xiàn)要處理驅(qū)動、版本,裝好幾個框架,可能還有沖突;訓練模型的時候,有一些文件訪問可能在別的網(wǎng)絡文件系統(tǒng),如果這個服務器是多個用戶共享的話,還要協(xié)調(diào)時間,可能還涉及到數(shù)據(jù)權(quán)限,文件隔離等等一系列問題。但現(xiàn)在也出現(xiàn)了K8S、Docker這些越來越標準化的解法,有的企業(yè)會需要彈性擴容,有的在私有云上去用,有的偶爾需要擴容去公有云用等,這需要多云的支持。
我們探討深度學習的本質(zhì)和局限性提到的調(diào)參問題,在實際落地業(yè)務的時候也會涉及到,比如哪些模塊用AI解決,哪些模塊不用?要標多少數(shù)據(jù),怎么標這些數(shù)據(jù)?模型用CNN、BERT,還是用Transformer?這樣一系列問題,比較大的企業(yè)可能已經(jīng)發(fā)現(xiàn)和沉淀出了一些最佳實踐,有的東西不需要工程師去重復踩坑。
最近有個比較熱門的詞叫MLOps,一系列原則和理念都準確應對了上面提及的問題。比如,它能自動化,有很多模型、超參,能跟蹤每個模型訓練中間的結(jié)果和過程,能debug,能測試監(jiān)控可視化,將這些持續(xù)集成,訓練完之后自動上線。
我們會看到,從數(shù)據(jù)準備、模型加工到測試監(jiān)控、資源管理,所有這些標準化之后,在一個平臺上就可以完成。算法科學家或業(yè)務人員在這樣的平臺上去工作時,使用最少的算力成本,同時流程又非常科學,工作效率最高,人力成本極大的降低。
我們相信標準化的趨勢,從框架標準化到平臺標準化、工作流標準化,要在不久的將來,能給企業(yè)客戶提供一個像現(xiàn)在使用數(shù)據(jù)庫一樣的AI產(chǎn)品,傳統(tǒng)企業(yè)不需要有非常專業(yè)的科學家,只要懂接口,通過非常標準化的操作,就能獲得 AI的能力。
歷史總在重演。數(shù)據(jù)庫幾十年的歷史形成了非常大的產(chǎn)業(yè),現(xiàn)在結(jié)合云又有新的商業(yè)機會,數(shù)據(jù)庫經(jīng)歷了什么,對人工智能產(chǎn)業(yè)化也很有啟發(fā)。
最早人們做信息系統(tǒng)時沒有數(shù)據(jù)庫,每個信息系統(tǒng)都要單獨基于文件系統(tǒng)去研發(fā),后來有人發(fā)現(xiàn)不同的信息系統(tǒng)里面有些結(jié)構(gòu)化數(shù)據(jù)是通用的,增刪查改有固定的套路,用關系代數(shù)就能描述,關系型數(shù)據(jù)庫就出來了。
如果垂直行業(yè)的每家公司都自己去做一套數(shù)據(jù)庫,都要付出很大的研發(fā)成本,而且每一家企業(yè)都可能做得不太好,就逐漸地出現(xiàn)了專門做數(shù)據(jù)庫的企業(yè)。
我們會發(fā)現(xiàn),在每個垂直的行業(yè)場景里面有類似的業(yè)務需求,需要搭建各種信息系統(tǒng)。這個信息系統(tǒng)從哪采購?有兩個渠道,一個是專門做數(shù)據(jù)庫的企業(yè),一個是做數(shù)據(jù)庫和用戶特定需求結(jié)合的信息系統(tǒng)集成,比如財務、人力、供應鏈等,這樣的中間企業(yè)出現(xiàn)了很多。
專做數(shù)據(jù)庫的出現(xiàn)了一些大企業(yè),比如Oracle、IBM、微軟,現(xiàn)在數(shù)據(jù)庫開始往云原生的數(shù)據(jù)倉庫發(fā)展,中間的集成商也出現(xiàn)了標準化的機會,原來一套軟件都是用授權(quán)的方式到各個企業(yè)去賣,可能涉及到一些定制化,用戶的粘性也不夠強。現(xiàn)在,如果所有客戶業(yè)務都上云,它可以在云上提供標準化的產(chǎn)品和服務,這個時候出現(xiàn)了做垂直應用集成的比較大的SaaS企業(yè)。
按照數(shù)據(jù)庫產(chǎn)業(yè)的發(fā)展歷程,實際上分了三層,AI會不會也分這么三層?我們可以看到,前幾年最活躍的是AI算法供應商層,非常像數(shù)據(jù)庫領域,SaaS出現(xiàn)之前的系統(tǒng)信息的集成商,壁壘較低,也不夠標準化,有朝一日,是不是也能實現(xiàn)標準化,實現(xiàn)AI as a service的模式。
以前整個行業(yè)忽視的是最底層的標準化基礎設施,但隨著中間算法供應商模式受阻,以及標準化行程的演進,最近一年越來越受到關注,人工智能產(chǎn)業(yè)格局的趨勢越來越明朗。
最后,總結(jié)一下我的觀點:
1、深度學習的本質(zhì)是提供了一種黑盒建模的方式。正是因為黑盒特性,才可以標準化,才能在任何地方都能用;如果它是可解釋的白盒,也就意味著它和每個領域相關,標準化程度可能就降低了。
2、相對于傳統(tǒng)機器學習,深度學習最大的進步就是標準化,標準化帶來了產(chǎn)業(yè)化的機會。它的局限性是什么?需要預先給定合適的假設空間,否則就可能出現(xiàn)像鑰匙掉在黑暗處,卻在路燈下尋找的尷尬。
3、站在數(shù)據(jù)編程軟件2.0的角度,AI是一個技術(shù)革命,不是一個泡沫。
4、未來的AI產(chǎn)業(yè)格局,很可能向數(shù)據(jù)庫這種分層的專業(yè)化分工趨勢發(fā)展。所以,我們相信會出現(xiàn)標準化的基礎設施的市場機會,這種機會在前幾年算法集成大紅大紫的背景下被人們忽略掉了。
5、AI產(chǎn)業(yè)化機會在于標準化的基礎設施和云原生的趨勢。