眾所周知,深度學(xué)習(xí)在實時視頻通信端到端系統(tǒng)里有很多的應(yīng)用,比如說我們用它做超分辨率,能取得比較好的效果;我們用它做圖像恢復(fù),也能取得比較好的效果。如果說提及挑戰(zhàn)的話,在支持移動端的應(yīng)用里,我們必須考慮復(fù)雜性的限制,必須要以一個小的模型,能夠在移動平臺上實時運行,而且功耗、CPU 占比都得到合適的限制。另外應(yīng)該在相對合理的數(shù)據(jù)集上取得比較好的學(xué)習(xí)效果,讓它的泛化能力很強。
簡單展示一下結(jié)果,我們用傳統(tǒng)的算法得到的效果通常比較模糊,基于深度學(xué)習(xí)的算法我們則能恢復(fù)出更多細(xì)節(jié)、甚至生成出一些細(xì)節(jié)。
從計算量來看,我們目前能做到把 480x360 放大到 960x720 在 iPhone6 的 GPU 上達(dá)到 120fps,使得復(fù)雜性得到比較有效的控制。
我們用生成對抗網(wǎng)絡(luò)的方式來做超分,生成對抗網(wǎng)絡(luò)最近兩三年比較熱,在人工智能學(xué)習(xí)算法的學(xué)術(shù)會議上,這兩年甚至達(dá)到了 2/3 以上的論文都是跟生成對抗網(wǎng)絡(luò)有關(guān)。生成對抗網(wǎng)絡(luò)通常包括一個生成器和一個判別器,生成器盡量模擬真實數(shù)據(jù),要像真實數(shù)據(jù)一樣來欺騙判別器,讓判別器認(rèn)為生成的數(shù)據(jù)是真實的,符合真實數(shù)據(jù)的分布。判別器的任務(wù)正好相反,它要盡量的讓生成的數(shù)據(jù)通不過考驗,這個標(biāo)準(zhǔn)越高,通不過的概率就越高。所以生成器和判別器在彼此的矛盾沖突中共同進(jìn)步,最終達(dá)到判別器也判別不出來是真是假這樣一個程度。
生成器就是把一個隨機(jī)的分布,一個噪聲 Z,經(jīng)過生成器之后產(chǎn)生一個圖像能跟真的很像。下圖形象地表示生成器在逼近真實數(shù)據(jù)的分布,綠色是這個模型產(chǎn)生的分布,在相互矛盾沖突之中逐漸達(dá)到真實數(shù)據(jù)就是黑色虛線的分布。Z,就是我剛才說的,比如說一個隨機(jī)變量,它能生成出我們想要的結(jié)果,從公式上說實際上生成器在做一件事,它是使判別器犯錯的概率最大,就是判別器分不出真假,分不出生成東西是假的,就是要讓它犯錯。
這個判別器,它是要首先最大化一個真實數(shù)據(jù)為真的這個概率,最小化生成器為真的概率就是我剛才說的矛盾沖突,用公式也是可以表示出來的。這個判別器的最佳解是有數(shù)學(xué)解的,就是達(dá)到納什均衡。把這兩個生成器和判別器綜合到一起就是一個價值函數(shù)的最大最小優(yōu)化。
這個有什么問題?這個生成器為了通過判別器的檢驗,就找了一些它比較好生成的模式來生成,所以訓(xùn)練完之后比如就大概率生成 1,因為 1 很好通過,就是一豎,所以生成器的學(xué)習(xí)某種意義上會耍點小聰明,它會試圖學(xué)習(xí)那些最容易學(xué)的樣本,多產(chǎn)生一些容易判對的樣本,這就是生成器在做的情形,但這是不理想的情形。
換一個圖來看,比如分布是一個均勻的圓,生成器可能最后收斂到某一個地方,總收斂到某一個地方也總通過。判別器因為總通過,網(wǎng)絡(luò)狀態(tài)最后就收斂這么一個狀況。生成器比較難于生成這種多模態(tài)、有多個聚類的分布,我們把這個現(xiàn)象叫模式坍塌。
具體的挑戰(zhàn)涉及什么,我簡單說一下,我們怎么樣緩解這個模式坍塌,就是使得生成器別陷入耍小聰明騙過了判別器的狀態(tài)。第二是我們給定一個卷積神經(jīng)網(wǎng)絡(luò),它表現(xiàn)有多好、學(xué)習(xí)能力有多強。換句話問,我們給定一個深度學(xué)習(xí)的任務(wù),深度卷積神經(jīng)網(wǎng)絡(luò)能做到多小,還能達(dá)到比較好的效果。
為了降低模式坍塌出現(xiàn)的概率,首先通常會要求加一個局域的限制,要求生成器不僅要騙過判別器,而且要讓它帶有噪聲的輸入要像真實的樣本,這樣的話生成出來跟真實樣本不會差太多。就相當(dāng)于在損失函數(shù)上,加了一項,生成的東西要跟目標(biāo)像,即監(jiān)督學(xué)習(xí)。
再換一個角度看,實際上深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它是一個流形,這個流形是一個拓?fù)淇臻g,能把流形同胚映射到 N 維的實數(shù)空間,同胚映射的意思就是正映射和逆映射都是連續(xù)的。我簡單說一下這個概念,比如一個三維空間中的曲面,是一個二維的流形,從編碼的角度來說,它可以對應(yīng)一個隱空間,隱空間是二維的,正映射是降維,是個編碼的過程,或者在分類的問題里我們會試圖在隱空間里分的更好。反過來講從隱空間到流形就是變成一個生成器,就是解碼的過程,從精簡的數(shù)據(jù)恢復(fù)到它看起來的外觀是我們希望的樣子。
這個曲面在三維空間,我們叫環(huán)境空間。Wasserstein 設(shè)計了一個生成對抗網(wǎng)絡(luò)其實也有很多層,到達(dá)十層的網(wǎng)絡(luò)。他要做的事情就是把兩個高斯分布:一個在零點,一個在 40×40 的地方,把分布學(xué)會。結(jié)果發(fā)現(xiàn)這個多達(dá)十層的一個深度學(xué)習(xí)網(wǎng)絡(luò)居然學(xué)不會,當(dāng)收斂之后表現(xiàn)為橘色這些點,就是最后收斂的狀態(tài)。當(dāng)數(shù)據(jù)分布有多個聚類或者多個峰值混合分布的時候,這樣的流形對生成對抗網(wǎng)絡(luò)是有挑戰(zhàn)的。
卷積神經(jīng)網(wǎng)絡(luò)是什么?我們來看基于矯正的線性單元(ReLU)的卷積神經(jīng)網(wǎng)絡(luò), 它可以看成是一個分段線性的映射,我們看這幾個常用的激活函數(shù)其實都是分段線性,不管有參數(shù)還是隨機(jī)的,都是分段線性的一個映射。
所以這個流形就被這些分段線性的映射分成了很多子空間,分成很多小的立方體,所以這個流形經(jīng)過編碼器之后就變成很多小空間,都是分段線性的,是多個小的多面體。
怎么理解這個模式坍塌是怎么來的?當(dāng)編碼器 E,把流形 M 映射到隱空間 E(M)之后,它的分布往往是極其不均勻的,在這個不均勻的奇異分布里要進(jìn)行分類或者控制都是很難的。提一個問題,我們是否能引入另外一個隱空間,它能映射到 Z,與生成器 G 復(fù)合起來 G*T,能把這個 Z’分布比較好比較均勻的分布映射回流形,這樣不管做分類,還是做采樣點的控制,都應(yīng)該是比較容易的。丘成桐教授等做了一些分析工作,用最佳質(zhì)量映射,能把我剛才說的立方體又較好地重新映射回去。
如果不做最佳質(zhì)量映射,直接應(yīng)用解碼器,會有問題。在編碼域上進(jìn)行均勻的采樣(通常有規(guī)律的、比如均勻是我們最能掌握的,非均勻的東西我們很難控制得好),那么我把它重疊在編碼域的圖上,對這些采樣出來的點,如果直接用生成器(也是解碼器)重構(gòu),恢復(fù)出來這些點,放到原來的圖上,可以看到頭部非常稀疏,這個稀疏可以理解成在編碼以后的隱空間用這些均勻采樣點來解碼,很難解出在頭部也能均勻恢復(fù)的效果,這也是模式坍塌的一種。
如果加上這個最佳質(zhì)量傳輸映射,在這個 Z’隱空間做均勻采樣,再恢復(fù)。就是剛才說的把最佳質(zhì)量映射和生成器在一塊,恢復(fù)出來的效果就是比較均勻的。可以看到這個質(zhì)量是會更好,所以這個最佳質(zhì)量映射,能在均勻分布的隱空間上使得控制變得非常容易。
丘成桐教授等發(fā)現(xiàn)解碼器和編碼器在數(shù)學(xué)上有閉式公式可以關(guān)聯(lián)起來,簡單說只要有其中一個就可以推導(dǎo)出另外一個,這個在數(shù)學(xué)上是保證了的。有了這個結(jié)論,用到深度學(xué)習(xí),就是只要訓(xùn)練好其中一個,就通過幾何計算的方法來恢復(fù)出另外一個,不需要訓(xùn)練另外一個,免除了數(shù)據(jù)的擔(dān)憂。但實際上高維空間中去推導(dǎo)最佳質(zhì)量映射,是比較困難的,基本上在有限的計算資源下不太容易做到的。所以并沒有完全顛覆我們對深度神經(jīng)網(wǎng)絡(luò)的認(rèn)識。
這里有一個問題,這個最佳質(zhì)量映射也可以通過深度神經(jīng)網(wǎng)絡(luò)的方式來學(xué)習(xí)。第二個自然產(chǎn)生的問題,我們是不是要學(xué)兩次?我們能不能一次把這個復(fù)合映射學(xué)會?顯然這是很有實際意義的問題:有兩個模型把它合成一個模型。
再換一個視角來看模式坍塌,這個視角可能更好理解一點。舉例子來說,三維空間中有一個二維曲面,每一個點上有一個切面,對較為規(guī)范的流形來說這個切面應(yīng)該是一個二維的平面,當(dāng)這個二維的平面退化成一條線甚至是零維的一個點,這時候模式坍塌一定發(fā)生。因為退化成一條線的時候,在其法向量方向上,另外一個坐標(biāo)軸再怎么變都不影響結(jié)果,這是模式坍塌。退化成零維的時候更是如此了。
我們可以在損失函數(shù)中加上另外一項懲罰項,這個懲罰項表示跟一個恒等矩陣的差,這一項加到損失函數(shù)里。它試圖使得切空間是滿秩的,不會退化到一維或者零維,這樣也能有效的減低模式坍塌的出現(xiàn),這是從另外一個視角看這個問題。
下一個問題,如果給了一個基于矯正分段線性激活函數(shù)(ReLU)的卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力究竟能有多強?換句話說給定一個任務(wù),我們能設(shè)計多小的一個神經(jīng)網(wǎng)絡(luò)來完成任務(wù)?我們希望還是能限定它的復(fù)雜性,而不是完全開放式的摸索。這樣的話多少能給我們探索在移動設(shè)備上的深度學(xué)習(xí)算法,提供一些指導(dǎo)原則。
剛才我提到了編碼器和解碼器都是分段線性函數(shù),解碼器把立方體分的更小,立方體越多越能把縫隙填滿,這個逼近的質(zhì)量決定了編碼器和解碼器最終的效果。這個很容易理解,一條曲線如果用一段線逼近它和用四條線逼近它,四段肯定逼近的更好,甚至用更多線段來無窮逼近,這個當(dāng)然對原來的曲線是有一定限定的,比如是凸曲面等等。
這個矯正的復(fù)雜度,一個分段映射的復(fù)雜性是表征逼近能力的一個度量。它定義成,在 N 維的時空間上,最大的連通子集數(shù),在每一個連通子集上編碼器都是線性的,說穿了是分段線性。這是表征了這個解碼器的能力。一個 K+2 層的深度卷積神經(jīng)網(wǎng)絡(luò),由它所能表征的最復(fù)雜的分段線性映射來表征。
每一組不同的參數(shù)就定義了一組分段線性函數(shù),當(dāng)然參數(shù)不同的時候,它的能力不同。那么就有這么一個結(jié)論,深度神經(jīng)網(wǎng)絡(luò)的復(fù)雜性是有上界的,這是一個很好的結(jié)論。如果我們知道我們要學(xué)習(xí)的任務(wù),它的復(fù)雜性是高于這個上限的時候,我們這個深度神經(jīng)網(wǎng)絡(luò)就設(shè)計得太小,肯定學(xué)不好。學(xué)不好有很多表現(xiàn),比如泛化能力會比較差。不管你訓(xùn)練多少樣本,你可能學(xué)到的分布跟實際數(shù)據(jù)的分布都是不一致的,都是有偏差的。我們可以想像在實際應(yīng)用中,肯定有些數(shù)據(jù)的實際效果不是那么好。
同時,它也有一個下界,下界的理解比較簡單,某個權(quán)重,使得網(wǎng)絡(luò)復(fù)雜度最小的權(quán)重。
這樣深度卷積神經(jīng)網(wǎng)絡(luò)的表征能力有上界也有下界,基本回答我剛才說的那個問題。我有幾點體會。一個是因為要求拓?fù)淇臻g上來做同胚映射,這個限制其實是較強的制約,其實只能學(xué)比較簡單的幾個拓?fù)浣Y(jié)構(gòu),不能學(xué)太復(fù)雜的東西,或者只能學(xué)一個局部,一個局部學(xué)的很好,全局學(xué)起來有困難。最佳質(zhì)量映射,能夠有幫助,但在高維空間中計算出這個最佳質(zhì)量映射,也算是一個比較挑戰(zhàn)的事。第三個結(jié)論,給定任何一個深度卷積神經(jīng)網(wǎng)絡(luò),一定能找到一個流形嵌入到這個它輸入的環(huán)境空間中,而它的分布不能被這個神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)。我們對模式坍塌是有一定辦法來緩解;對算法復(fù)雜性,我們能有一定的辦法,能使神經(jīng)網(wǎng)絡(luò)的復(fù)雜性有所界定。
-
通信
+關(guān)注
關(guān)注
18文章
6042瀏覽量
136138 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5507瀏覽量
121270
原文標(biāo)題:應(yīng)用于實時視頻通信的深度學(xué)習(xí)算法研究
文章出處:【微信號:shengwang-agora,微信公眾號:聲網(wǎng)Agora】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論