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