1. 程式人生 > >Chuyu Xiong

Chuyu Xiong

深度學習取得了巨大的成功,這是無容置疑的。對此,我們不必再多說什麼。但是,其理論基礎仍然有很大的空白。例如:究竟深度學習在做什麼?為什麼可以學習很多東西?這些問題極為重要。但是直到現在,仍然眾說紛紜,沒有定論。

我最近寫了一篇文章來討論這個事情。文章題目是:What Realy is Deep Learning Doing? 翻譯成中文就是:究竟深度學習在幹什麼?英文原文的連結:https://arxiv.org/pdf/1711.03577.pdf 請大家查閱。

這裡是我寫的短文,用中文把原文的想法從新寫一遍,希望更容易理解一些。由於這裡寫數學公式不方便,就儘量不採用數學公式,僅用文字說明。請有興趣的讀者檢視原文。歡迎大家聯絡做更深入討論。我的微訊號是:niuyuelaoxiong,歡迎聯絡。

············

我們對待深度學習的基本思路是從梳理最基本的概念入手,一步一步推進,來逐步搞清楚裡面的問題。

先從最簡單也是最基本的說起,那就是IPU,即資訊處理單元(Information Processing Unit)。其實這個概念真的是資訊處理中最基本的。一個資訊進來,即是一個N維的布林向量進來,經過處理,一個資訊出去,即一個M維的布林向量出去,這就形成了一個IPU。也就是說,我們有了一個從N維布林空間到M維布林空間的對映(函式,變換,或者其他術語)。可以很容易想到,IPU是很寬泛的,有太多的東西都是IPU。如通常的CPU就是一個IPU,GPU也是,一個數學函式也是一個IPU,一個程式也是,等等。當然,我們最關心的是機器學習。一個機器學習的模型,如果我們停止它的學習,它也是一個IPU。

僅僅是IPU,就沒有什麼重要性。機器學習的模型,最重要的特徵是可以學習。講得更精確一些,就是可以在輸入資料的驅動下,改變自己處理資訊的能力。因此我們定義這樣一個概念:即在輸入資料的驅動下,可以改變自己處理資訊能力的IPU,我們稱為學習機。而這個學習過程,就是機械式學習。之所以強調機械式學習,是想把人為因素排除,使得學習僅是通過輸入資料,而沒有人工干預。在排除了各種人工干預的因素後,我們可以仔細考慮各種情況,進而梳理清楚這裡面的問題。

這樣,我們就進一步有了學習機的概念:學習機是一個IPU,但是,這個IPU可以在其輸入資料的驅動下而改變自己處理資訊的能力。很清楚,任何機器學習模型,如果排除人工干預,就是一個學習機(深度學習模型也是如此,概率學習模型也是如此)。這當然是我們做這些梳理的目的。

讓我們從學習機倒回去看看IPU。前面說了,IPU就是一個處理資訊的東西。我們問,這個東西里面有什麼?其實就是有一個處理資訊的機制。我們這裡抽象地看這個處理資訊的機制,我們把它稱為Processing,中文可以叫做處理。我們可以不用管這個處理具體是怎麼實現的,我們可以僅定義一個處理就是能夠處理資訊,一個N維的布林向量進來,經過處理,一個M維的布林向量出去。

一個最基本問題來了:一個N-M的IPU有多少可能的處理呢?這很容易回答,有2的(M乘2的N次方)次方。這是一個極端驚人的數目。如果僅看文字沒有感覺的話,可以試試M=1,N=10,在代入之後,可以看到這個數遠大於2的1000次方,或者10的300次方。這還僅是N=10的情況!如果N=100?N=1000?要知道,對於資訊處理來說,N=1000都非常小的,N可能很大。那樣的話,IPU的處理的數目就非常非常巨大了。

這個超乎尋常的巨大的量其實是反映學習的本質的(乃至於智慧的本質的)。不過只能在別的地方細談,此處只能放過。

所謂的學習,精確定義到IPU上面,那就是IPU裡面的處理改變了。處理改變了,處理資訊的能力就改變了,這就是機械式學習的精確定義。因此學習機就是:它是一個IPU,在輸入資料的驅動下,它的處理會改變。

我們再仔細追問,一個IPU的處理是什麼?其實可以有非常多種的實現方式。例如,可以是硬體來實現的,也可以是軟體來實現的,可以是通過生物機制來實現的,也可以是純數學的方式來實現的,可以是神經網路來實現的,也可以是通過某種統計模型來實現的。總之,只要能做相應的資訊處理,就好。但是經過一些仔細的推論,我們可以看到,無論IPU內部的處理是通過什麼方式實現的,都必須遵循一定的數學原則,因此原則上講,這個處理必然等價於一組邏輯閘的組合。我們因此定義一個數學物件,它是用與或非三個邏輯閘反覆組合形成的,稱之為X-形式。之所以叫X-形式,是因為它的確是一個數學形式,而我們目前對這個形式還相當未知,所以冠以X。我們證明了,任何一個處理,都可以用一個X-形式表達。這樣,我們就知道IPU中間其實就是一個X-形式。而學習就是改變IPU的X-形式。那麼,學習機就是在輸入資料的驅動下,它的X-形式從一個變成另一個。

我們更進一步證明了,一個處理,其實可以對應多個X-形式。也就是說,對一個處理來說,有多個X-形式可以產生這同一個處理。因此,問題自然就來了,這多個X-形式中間,是否有好壞的差別?當然有,而且這個好壞差別還非常重要。因此,學習機的學習就是在改進其內在的X-形式。因此,我們知道了機械式學習,就是在輸入資料的驅動下,學習機內部的X-形式在改變。

前面說了,如果一個機器學習模型沒有人工干預,就是在做機械式學習,因此,我們也就可以說一個機器學習模型是在輸入資料的驅動下,改變自己內在的X-形式。

如果一個學習機可以學會任何處理,那麼這個學習機就是通用學習機。

這就是對通用學習機和X形式的簡介

············

現在我們從機械式學習的角度來看深度學習。

首先說明,深度學習經過這幾年的大發展,已經發展成了一個非常龐大的集合體,已經有了很多模型很多方法。為了清楚和容易入手起見,我們選取Hinton的原初的深度學習模型來展開討論,Hinton的原初模型,非常具有代表性,可以使得我們的討論相對容易一些。

可以這樣描述Hinton的原初深度學習模型:它是一系列RBM的疊加,而RBM是單層人工神經網路,深度學習就是多層神經網路。我們正好可以比較深入地看RBM。我們從2–1 RBM看起,這是最簡單的神經網路,有兩個實引數。這樣的模型,當然是一個學習機。因為僅有兩個實引數,學習就是調整這兩個實引數,學習也就相當於在引數在一個二維平面R上的運動。這樣,我們從前面講的機械式學習的角度看,就很清楚,2–1 RBM是這樣一回事:這個二維平面R被切成6個區域,每一個區域對於一個X-形式,在學習中,如果引數從一個區域跨到另一個區域,就相當於X-形式換成了另一個X-形式。更具體的討論,請參考英文原文。雖然2–1 RBM是一個很簡單很特殊的例子,但是這裡揭示的情況:把引數空間切成若干區域,而每一個區域對應一個X-形式,卻是普遍的。

我們然後對3–1 RBM,N-1 RBM,N-M RBM都做了討論,也都清楚地看到這個情況:把引數空間切成若干區域,而每一個區域對應一個X-形式,卻是普遍的。

然後,我們把RBM層疊起來,就組成了Hinton的原初的深度學習模型。同樣,對這個模型,我們也看到了:把引數空間切成若干區域,而每一個區域對應一個X-形式。

這樣,我們就清楚了深度學習模型究竟在幹什麼!總結一下:1. 當模型在形成時,就相當於把引數空間切成了若干區域。2. 在任何一個這樣的區域中,雖然引數可以很不同,但是,其實都代表同一個X-形式,而相應的處理也是相同的。僅有在引數跨過邊界,進入不同區域時,才會發生不同的X-形式,才會有不同的處理。3. 深度學習就是在資料的驅動下,從一個X-形式變到另一個X-形式。

更具體的討論,請參考英文原文。

當然Hinton的原初深度學習模型僅是深度學習模型的一種,而且是最簡單的一種。現在深度學習已經加入了更多的東西和方法,如卷積,池化,剪枝,等等。而且其中的非線性切斷函式也是多樣的,不僅僅是Sign函式,如ReLU。這些都給深度學習模型帶來很多變化。但是這個基本情況仍然如此:把引數空間切成有限塊若干區域,而每一個區域對應一個X-形式。當然切出來的區域就更復雜,不是簡單的超平面和直積切成的區域。

············

前面講的這個深度學習的基本情況非常重要,它決定了深度學習的基本能力和特徵。當我們清楚了這個基本情況後,我們就可以對深度學習的一些方面做一些評論:

*為什麼深度學習能很有效為什麼深度學習很有效?我認為,有兩個基本的原因:其一:一個深度學習模型建立之時,其實就決定了這個模型是否有效,因為在這時,這個模型能夠觸及的全部X-形式已經到位,不可能再有新的X-形式來參與了。如果我們期望的X-形式已經在裡面,我們就有可能找到它。如果期望的X-形式不在裡面,那麼無論我們付出多大的努力和具備多大的資料,都不可能學習到期望的東西。因此,深度學習模型的建立是決定性的。其二:已經發展出了一套比較有效的方法來尋找期望的X-形式(當然如果這個X-形式不在,那麼這些方法也就無效)。需要指出,這套方法基本上建立線上性代數運算的基礎上,可以做到高度平行化。高度平行化是在現有計算結構下充分利用計算能力的必需。但是如果要加入動態調整(如最新的“膠囊”方法),這種高度平行化,就可能失去。

*邏輯或者概率通過我們的這個角度,可以很清楚看清楚,一個深度學習模型在處理輸入資訊到輸出資訊時,是遵循一個邏輯陳述(即其內部的X-形式),是完全邏輯的,並無隨機因素。當然,它是如何獲得這個邏輯陳述(即X-形式)的,就不排除隨機因素。而且在實踐中,隨機因素的成分可以相當大。

*資料和深度學習深度學習中,最重要的是資料驅動。但是,有一個根本的問題就是,需要多少資料才能夠有效學習?目前沒有理論來說明。如果是一個完全概率的學習模型,有足夠的統計學理論來說明需要多少資料。但是,如前所說,深度學習的核心是X-形式,而且這個X-形式可能相當複雜(這就是深度嘛),不可能憑空得到這個X-形式。只有在足夠的資料支援下,才有希望獲得這個X-形式。那麼需要多少資料,什麼資料?我們已經有了一些初步理論來說明要什麼資料,多少資料。對此請檢視我們的英文原文。

*深度學習的重大不足其1:深度學習的基本特性,決定了深度學習的能力極限,那就是,深度學習模型建立的時候,就已經確定了所有可能的X-形式,就是說,當模型一旦確定,它能夠學習什麼,不能學習什麼,已經定下了極限,再不能超越。這個特性使得很多事情成為不可能,例如,轉移學習成為很困難的事情。尤其,不可能做到通用學習機。其2:深度學習是在一個非常巨大的歐式空間中活動的,這個歐式空間可能有上千萬維。但是,真正的學習卻不在這個巨大的歐式空間中,而是在那些切成的區域中,這樣的間接性就使得深度學習的很多性質很模糊,例如很難清晰獲得學習的動力學。其3:這樣的間接性極大侷限了深度學習的效能。非常可能大量的計算是浪費在不必要的運算上面。其4:這樣把X-形式間接嵌入到區域中的方式,使得深度學習很難做得可以解釋。而可解釋是非常需要的。其5:需要大量的資料。而無監督學習有重大困難。

*展望通用學習機我們現在比較清楚了深度學習的各種問題。那麼,要克服這些問題,走向更高效能的機器學習,我們認為就需要展望通用學習機。

通用學習機就是可以學習任何東西的機器,我們可以用一句話來講:通用學習機不需要人工的干預,只要有資料,就可以高效能學習,學會資料裡面隱含的東西。尤其,不需要像深度學習那樣,需要預先人工搭好一個模型,才能學習。我們對此已經對通用學習機做了一些理論工作,也發明了一些具體實現的方法,並且申請了專利。歡迎有更多的朋友一起來探索理論,發明方法,促進應用。

············

最後,要對看到這裡的朋友表示深深的謝意。穿過了很多艱澀的概念,一直讀到這裡,一定是對這些問題有極大的興趣,而且對這些問題已經有深入思考,才能讀到這裡。謝謝大家。對讀到這裡的朋友們,我就多說兩句務虛的話。這個時代是激動人心的時代,這是我們終於可以開始用數學和科學對人類最關鍵的知識領域 — — 認識論 — — 做探討的時代。在這之前,我們用數學和科學對我們的外部世界(也包括人自己的身體)做了許多偉大的探索,形成了偉大的學問。但是,對這個根本問題:為什麼人腦可以反射大千世界怎樣反射大千世界,還是基本停留在哲學層面,沒有也不可能深入到科學原理和數學細節上面。請注意,現在偉大的帷幕已經在開啟,我們很快就可以在這個偉大的領域有所作為了。而這個領域的突破,就意味整個科學和數學的巨大昇華。我們碰到了這樣的大時代,是我們的幸運,不是很多人有這種幸運的。我們要珍惜這個幸運。現有的深度學習僅是偉大帷幕開啟的先聲號角,而通用學習機也僅是在這個方向做探索的一個小努力。帷幕正在開啟,大時代正在到來。讓我們一起來迎接這個大時代。

兩年前在中國,因時差而反側困頓,夢境依稀中得一打油詩,願意和大家分享:記夢機械學習創新知,學習機器待奇思,反側猶覺洞天地,一行一步漸趨之。

這裡的洞天地,指的是認識史上的高峰:獲取用機器來反射大千世界的基本規律,並且建造機器來幫助我們獲得更高層次的認識。這個高峰,我恐怕是看不到的。但是,當感覺(或者幻覺)到可以一行一步趨近的時候,那種愉悅,的確非常好!以此和大家交流。

這裡是我寫的短文,用中文把原文的想法從新寫一遍,希望更容易理解一些。由於這裡寫數學公式不方便,就儘量不採用數學公式,僅用文字說明。請有興趣的讀者檢視原文。歡迎大家聯絡做更深入討論。我的微訊號是:niuyuelaoxiong,歡迎聯絡。