應用於實時視訊通訊的深度學習演算法

聲網Agora發表於2018-09-26

本文整理了聲網首席科學家鐘聲,在 RTC 2018實時網際網路大會上的乾貨演講。如果對於演講內容有任何希望與演講人交流的問題,歡迎留言。以下為演講內容,如需要 PPT 與演講視訊,請於文末獲取。

作者簡介:鐘聲,現任聲網首席科學家,北京大學數學系本科和博士畢業,美國馬里蘭大學自動化研究中心博士後。約有 100 項發明專利。曾是 MPEG/JVT (H.264) 與 INCITS 主要成員,IEEE 成員,並發表了 30 餘篇學術論文,內容覆蓋了模式識別、視訊編解碼、計算機視覺等技術領域。曾任美國博通公司資深主任科學家和技術總監、華亞微電子公司技術副總裁、海信集團晶片公司總經理等職。


眾所周知,深度學習在實時視訊通訊端到端系統裡有很多的應用,比如說我們用它做超解析度,能取得比較好的效果;我們用它做影象恢復,也能取得比較好的效果。如果說提及挑戰的話,在支援移動端的應用裡,我們必須考慮複雜性的限制,必須要以一個小的模型,能夠在移動平臺上實時執行,而且功耗、CPU 佔比都得到合適的限制。另外應該在相對合理的資料集上取得比較好的學習效果,讓它的泛化能力很強。

簡單展示一下結果,我們用傳統的演算法得到的效果通常比較模糊,基於深度學習的演算法我們則能恢復出更多細節、甚至生成出一些細節。

從計算量來看,我們目前能做到把 480x360 放大到 960x720 在 iPhone6 的 GPU 上達到 120fps,使得複雜性得到比較有效的控制。

我們用生成對抗網路的方式來做超分,生成對抗網路最近兩三年比較熱,在人工智慧學習演算法的學術會議上,這兩年甚至達到了 2/3 以上的論文都是跟生成對抗網路有關。生成對抗網路通常包括一個生成器和一個判別器,生成器儘量模擬真實資料,要像真實資料一樣來欺騙判別器,讓判別器認為生成的資料是真實的,符合真實資料的分佈。判別器的任務正好相反,它要儘量的讓生成的資料通不過考驗,這個標準越高,通不過的概率就越高。所以生成器和判別器在彼此的矛盾衝突中共同進步,最終達到判別器也判別不出來是真是假這樣一個程度。

生成器就是把一個隨機的分佈,一個噪聲 Z,經過生成器之後產生一個影象能跟真的很像。下圖形象地表示生成器在逼近真實資料的分佈,綠色是這個模型產生的分佈,在相互矛盾衝突之中逐漸達到真實資料就是黑色虛線的分佈。Z,就是我剛才說的,比如說一個隨機變數,它能生成出我們想要的結果,從公式上說實際上生成器在做一件事,它是使判別器犯錯的概率最大,就是判別器分不出真假,分不出生成東西是假的,就是要讓它犯錯。

應用於實時視訊通訊的深度學習演算法

這個判別器,它是要首先最大化一個真實資料為真的這個概率,最小化生成器為真的概率就是我剛才說的矛盾衝突,用公式也是可以表示出來的。這個判別器的最佳解是有數學解的,就是達到納什均衡。把這兩個生成器和判別器綜合到一起就是一個價值函式的最大最小優化。

這個有什麼問題?這個生成器為了通過判別器的檢驗,就找了一些它比較好生成的模式來生成,所以訓練完之後比如就大概率生成 1,因為 1 很好通過,就是一豎,所以生成器的學習某種意義上會耍點小聰明,它會試圖學習那些最容易學的樣本,多產生一些容易判對的樣本,這就是生成器在做的情形,但這是不理想的情形。

換一個圖來看,比如分佈是一個均勻的圓,生成器可能最後收斂到某一個地方,總收斂到某一個地方也總通過。判別器因為總通過,網路狀態最後就收斂這麼一個狀況。生成器比較難於生成這種多模態、有多個聚類的分佈,我們把這個現象叫模式坍塌。

具體的挑戰涉及什麼,我簡單說一下,我們怎麼樣緩解這個模式坍塌,就是使得生成器別陷入耍小聰明騙過了判別器的狀態。第二是我們給定一個卷積神經網路,它表現有多好、學習能力有多強。換句話問,我們給定一個深度學習的任務,深度卷積神經網路能做到多小,還能達到比較好的效果。


應用於實時視訊通訊的深度學習演算法

為了降低模式坍塌出現的概率,首先通常會要求加一個局域的限制,要求生成器不僅要騙過判別器,而且要讓它帶有噪聲的輸入要像真實的樣本,這樣的話生成出來跟真實樣本不會差太多。就相當於在損失函式上,加了一項,生成的東西要跟目標像,即監督學習。

再換一個角度看,實際上深度學習的神經網路,它是一個流形,這個流形是一個拓撲空間,能把流形同胚對映到 N 維的實數空間,同胚對映的意思就是正對映和逆對映都是連續的。我簡單說一下這個概念,比如一個三維空間中的曲面,是一個二維的流形,從編碼的角度來說,它可以對應一個隱空間,隱空間是二維的,正對映是降維,是個編碼的過程,或者在分類的問題裡我們會試圖在隱空間裡分的更好。反過來講從隱空間到流形就是變成一個生成器,就是解碼的過程,從精簡的資料恢復到它看起來的外觀是我們希望的樣子。

這個曲面在三維空間,我們叫環境空間。Wasserstein 設計了一個生成對抗網路其實也有很多層,到達十層的網路。他要做的事情就是把兩個高斯分佈:一個在零點,一個在 40×40 的地方,把分佈學會。結果發現這個多達十層的一個深度學習網路居然學不會,當收斂之後表現為橘色這些點,就是最後收斂的狀態。當資料分佈有多個聚類或者多個峰值混合分佈的時候,這樣的流形對生成對抗網路是有挑戰的。

應用於實時視訊通訊的深度學習演算法

卷積神經網路是什麼?我們來看基於矯正的線性單元(ReLU)的卷積神經網路, 它可以看成是一個分段線性的對映,我們看這幾個常用的啟用函式其實都是分段線性,不管有引數還是隨機的,都是分段線性的一個對映。

所以這個流形就被這些分段線性的對映分成了很多子空間,分成很多小的立方體,所以這個流形經過編碼器之後就變成很多小空間,都是分段線性的,是多個小的多面體。

怎麼理解這個模式坍塌是怎麼來的?當編碼器 E,把流形 M 對映到隱空間 E(M)之後,它的分佈往往是極其不均勻的,在這個不均勻的奇異分佈裡要進行分類或者控制都是很難的。提一個問題,我們是否能引入另外一個隱空間,它能對映到 Z,與生成器 G 複合起來 G*T,能把這個 Z’分佈比較好比較均勻的分佈對映回流形,這樣不管做分類,還是做取樣點的控制,都應該是比較容易的。丘成桐教授等做了一些分析工作,用最佳質量對映,能把我剛才說的立方體又較好地重新對映回去。

應用於實時視訊通訊的深度學習演算法

如果不做最佳質量對映,直接應用解碼器,會有問題。在編碼域上進行均勻的取樣(通常有規律的、比如均勻是我們最能掌握的,非均勻的東西我們很難控制得好),那麼我把它重疊在編碼域的圖上,對這些取樣出來的點,如果直接用生成器(也是解碼器)重構,恢復出來這些點,放到原來的圖上,可以看到頭部非常稀疏,這個稀疏可以理解成在編碼以後的隱空間用這些均勻取樣點來解碼,很難解出在頭部也能均勻恢復的效果,這也是模式坍塌的一種。

應用於實時視訊通訊的深度學習演算法

如果加上這個最佳質量傳輸對映,在這個 Z’隱空間做均勻取樣,再恢復。就是剛才說的把最佳質量對映和生成器在一塊,恢復出來的效果就是比較均勻的。可以看到這個質量是會更好,所以這個最佳質量對映,能在均勻分佈的隱空間上使得控制變得非常容易。

丘成桐教授等發現解碼器和編碼器在數學上有閉式公式可以關聯起來,簡單說只要有其中一個就可以推匯出另外一個,這個在數學上是保證了的。有了這個結論,用到深度學習,就是隻要訓練好其中一個,就通過幾何計算的方法來恢復出另外一個,不需要訓練另外一個,免除了資料的擔憂。但實際上高維空間中去推導最佳質量對映,是比較困難的,基本上在有限的計算資源下不太容易做到的。所以並沒有完全顛覆我們對深度神經網路的認識。

這裡有一個問題,這個最佳質量對映也可以通過深度神經網路的方式來學習。第二個自然產生的問題,我們是不是要學兩次?我們能不能一次把這個複合對映學會?顯然這是很有實際意義的問題:有兩個模型把它合成一個模型。

再換一個視角來看模式坍塌,這個視角可能更好理解一點。舉例子來說,三維空間中有一個二維曲面,每一個點上有一個切面,對較為規範的流形來說這個切面應該是一個二維的平面,當這個二維的平面退化成一條線甚至是零維的一個點,這時候模式坍塌一定發生。因為退化成一條線的時候,在其法向量方向上,另外一個座標軸再怎麼變都不影響結果,這是模式坍塌。退化成零維的時候更是如此了。

應用於實時視訊通訊的深度學習演算法

我們可以在損失函式中加上另外一項懲罰項,這個懲罰項表示跟一個恆等矩陣的差,這一項加到損失函式裡。它試圖使得切空間是滿秩的,不會退化到一維或者零維,這樣也能有效的減低模式坍塌的出現,這是從另外一個視角看這個問題。

下一個問題,如果給了一個基於矯正分段線性啟用函式(ReLU)的卷積神經網路的學習能力究竟能有多強?換句話說給定一個任務,我們能設計多小的一個神經網路來完成任務?我們希望還是能限定它的複雜性,而不是完全開放式的摸索。這樣的話多少能給我們探索在移動裝置上的深度學習演算法,提供一些指導原則。

剛才我提到了編碼器和解碼器都是分段線性函式,解碼器把立方體分的更小,立方體越多越能把縫隙填滿,這個逼近的質量決定了編碼器和解碼器最終的效果。這個很容易理解,一條曲線如果用一段線逼近它和用四條線逼近它,四段肯定逼近的更好,甚至用更多線段來無窮逼近,這個當然對原來的曲線是有一定限定的,比如是凸曲面等等。

這個矯正的複雜度,一個分段對映的複雜性是表徵逼近能力的一個度量。它定義成,在 N 維的時空間上,最大的連通子集數,在每一個連通子集上編碼器都是線性的,說穿了是分段線性。這是表徵了這個解碼器的能力。一個 K+2 層的深度卷積神經網路,由它所能表徵的最複雜的分段線性對映來表徵。

每一組不同的引數就定義了一組分段線性函式,當然引數不同的時候,它的能力不同。那麼就有這麼一個結論,深度神經網路的複雜性是有上界的,這是一個很好的結論。如果我們知道我們要學習的任務,它的複雜性是高於這個上限的時候,我們這個深度神經網路就設計得太小,肯定學不好。學不好有很多表現,比如泛化能力會比較差。不管你訓練多少樣本,你可能學到的分佈跟實際資料的分佈都是不一致的,都是有偏差的。我們可以想像在實際應用中,肯定有些資料的實際效果不是那麼好。

同時,它也有一個下界,下界的理解比較簡單,某個權重,使得網路複雜度最小的權重。

這樣深度卷積神經網路的表徵能力有上界也有下界,基本回答我剛才說的那個問題。我有幾點體會。一個是因為要求拓撲空間上來做同胚對映,這個限制其實是較強的制約,其實只能學比較簡單的幾個拓撲結構,不能學太複雜的東西,或者只能學一個區域性,一個區域性學的很好,全域性學起來有困難。最佳質量對映,能夠有幫助,但在高維空間中計算出這個最佳質量對映,也算是一個比較挑戰的事。第三個結論,給定任何一個深度卷積神經網路,一定能找到一個流形嵌入到這個它輸入的環境空間中,而它的分佈不能被這個神經網路學習。我們對模式坍塌是有一定辦法來緩解;對演算法複雜性,我們能有一定的辦法,能使神經網路的複雜性有所界定。

如果你想了解得更加詳細,點選這裡獲取 RTC 大會PPT 。同時,大會有兩個直播回放地址:視訊回放地址一視訊回放地址二



相關文章