文章發佈於公號【數智物語】 (ID:decision_engine),關注公號不錯過每一篇乾貨。瀏覽器
原標題 | An Easy Guide to Gauge Equivariant Convolutional Networks網絡
做者 | Michael Kissner框架
譯者 | AI小山(工程師)、Mr-UC(中國科學院大學)ide
幾何深度學習是個很使人興奮的新領域,可是它的數學運算逐漸轉移到代數拓樸和理論物理的範圍。函數
在Cohen等人的論文《規範等變卷積網絡和二十面體CNN》中,這種現象尤爲明顯。這篇論文也正是本文要探討的對象。論文中使用了規範場理論的用辭,那些喜歡把「量子」和「場」兩個詞合起來使用的全部的物理學當中,規範場理論居於中心地位。論文承諾對規範場理論的基礎知識提供一個直觀的解讀,其實,我也不得不認可,它作到了,並且它也許是目前我看到的最棒的入門介紹。然而,它終究是個很難的學科。工具
我在這裏想作的,是純直觀的解讀,不涉及數學。我並不徹底依照論文的順序,可是你仍然能夠打開論文對照閱讀,而我也儘可能標出全部重要的術語。學習
下面我將假設你已經知道卷積神經網絡(CNN)的工做原理,可是不明白它與流形(manifold)的關係。如今,讓咱們開始吧!ui
01流形spa
流形是很簡單的東西。你看到的每個二維平面均可以算作流形。球體表面,立方體表面,都是流形。可是它並不嚴格限定於二維,甚至不侷限於能想像到的東西,真是見鬼。曲線是流形,四維時空是流形。它至關廣泛,可以描繪出一個空間。可是,讓咱們只專一於二維表面。最簡單的表面是平面,就像電腦屏幕。當咱們用CNN作卷積時,咱們每每都是針對這些平面圖像來作的。插件
假設,咱們想用CNN來預測天氣。對一個單獨的國家,這很容易:用當地的天氣數據做爲輸入,而後keras-keras-咚,你有了一個訓練好的模型。若是咱們想對全球天氣分類呢?你怎樣安置在一張圖片裏?也許是:
(來自 Pixabay 的圖片)
但有一個問題。在現實中,左邊緣和右邊緣是同一個地點。並且,整個上邊緣對應一個點,下邊緣也是如此。整個對應關係都扭曲了。有沒有試過攤平一個乒乓球?是的,確實沒弄好。當咱們嘗試應用卷積時,咱們會獲得奇怪的結果。邊緣會出現不合常理的狀況。它可能會預測圖片的最右側會有強東風,然而圖片左邊什麼也沒有,即便它們表明相同的地點。CNN根本不知道地球是環回的。
或者,咱們能夠對地球生成多個重疊的地圖,而後對它們應用CNN。這些地圖的集合也稱做地圖冊。在確保下一張地圖開始於上一張地圖相同的重合點的狀況下,把CNN在這些單獨的地圖上平移,這樣應該能讓它認識到地球是圓的。這是幾何深度學習的基本思想:直接應用深度學習於表面或流形上,以保留幾何結構。然而,這有一個問題。一個大問題。
02咱們去新加坡吧!
如今,讓咱們暫時忘掉天氣,而後拿出指南針。假設你在新加坡。面朝北方,通過泰國,穿越中國、蒙古直到北極。保持方向不變,一直往前走。你將會穿越加拿大、美國,直到你抵到美洲中部的某個地方。在那裏止步,而後開始橫向游泳,穿越太平洋,保持方向不變!通過無數次奮力擊水,你會最終回到新加坡。可是等一等。你從沒改變方向,可是爲何如今倒是面朝南方?
讓咱們再重複一次旅程,但此次咱們抵達北極後,朝左橫向移動。咱們會到達尼日利亞附近,而後開始向後走,此時仍是不改變方向。等咱們回到新加坡,此次咱們竟然朝向西方?奇怪……不相信我?你本身試一試,帶一個指南針,而後開始游泳……
這個問題是由球面曲度形成的,咱們把「不改變方向的移動」叫做平移。你也看到了平移很是依賴於球體上的路徑。然而,在二維平面上不受影響。你能夠保持方向行走任何一條路徑,回到起點後,方向不變。所以,咱們說平面是可平行的(回到起點後,你的方向矢量仍舊保持平行),而球面不是。
你會發現這對於咱們在球面上的CNN來講是一個問題。當咱們把CNN在全部地圖上朝四面八方移動時,方向彷佛會改變。咱們須要想辦法確保這種怪現象不會影響到咱們的結果!或者,至少咱們應該知道如何解決它。
03毛茸茸的球
咱們必須引入更多的數學概念才能找到答案。指南針上的指針能夠看做是平面上指向某個方向的矢量,基本都指向北方。指針轉動所造成的平面與地球表面相切,咱們把它稱做這一地點的地球切線空間。儘管地球是圓的,但切線空間倒是純平的。它就像是一個本地座標系統,以北和東做爲座標矢量。由於咱們能夠在地球任一地點掏出指南針,因此每個地點都有本身的切線空間。但咱們也能夠把40°和130°定義爲咱們的座標矢量。在這種狀況下,北以及其它方向都沒特別之處,能夠任意選擇。
如今,讓咱們在切線空間中任選一個方向,並沿此方向朝前走一步。咱們確保走最短路徑(曲面上的),而後到達一個新點。你也許會稱之爲「前進」,可是,讓各位糊塗的是,咱們把這個過程叫做指數映射(之因此叫這個名字,是由於全部這些微小的步伐神奇地類似於指數函數的級數展開……但這如今不重要)。
讓咱們再看看指南針的指針。指南針爲地球上「每一個」地點指定了一個矢量的現象叫做(切線)矢量場。風也能夠看做是矢量場,由於它爲每個點指定了一個方向。我特別把「每一個」加上引號,是由於當你站在磁北極或磁南極時,指南針會出錯。事實上,在球面的每個非零連續矢量場上,它都會出錯。球體的磁場中必須有極地存在。這種現象叫毛球定理,由於跟梳理毛球就必然產生漩毛渦的狀況很像:
(圖片來自Wikipedia)
矢量場不須要跟切線空間有相同維度。相反,在每一點,它能夠有本身任意維度的矢量空間。這很重要,由於咱們也想能在地球的每個點上指定三維或99維矢量,而不只僅是二維方向。場中每個點上的矢量空間也被稱做纖維叢。
(一個特殊類型的場叫做標量場。它只有一個維度,溫度就能夠看做是這樣的標量場)
04規範
每一個地方測量溫度都不同。在德國這裏,咱們用攝氏度。在美國用華氏度。這種不一樣的選擇,叫做規範。是的,這個詞是從測量工具那裏派生來的。如今,每當我看一條來自美國的天氣預報,我不得不計算一下華氏度等於多少攝氏度。咱們有不一樣的準則。這種計算叫做規範變換。注意,實際的溫度沒有改變,只不過咱們用來表示的數值不一樣,並且變換是簡單的線性函數。
若是咱們考察矢量場,好比風的方向,狀況就變得複雜起來。極端一點,咱們假設有個國家叫規範國,它並不在意南北,而是以星座或受驚刺蝟逃跑的方位做爲他們方向系統的基礎。這些人描述風時,咱們必須作規範變換才能知道他們在說哪一個方向。如今,規範變換變成了可逆矩陣的乘法(顯然必須是雙向的)。這種矩陣的羣,叫做通常線性羣,或GL。
對於理論上平坦的地面,選擇出一個風的規範,處處均可以適用。可是在球面,咱們遇到一些問題。咱們無法定義一個統一的規範,而是不得不依賴多個規範和地圖。至於爲何必須是這樣,從平行化問題和毛球定理中,咱們能夠得到一些啓發。
這天然意味着咱們須要多個風向地圖。可是,咱們再也不容許規範國亂來,規定至少他們所使用的矢量的大小(風速)必須跟咱們的一致。咱們只容許他們使用不一樣的方向。由此,每個規範變換都簡化爲了旋轉。這些變換也構成一個羣,名叫特殊正交羣,或SO,它是GL的子羣。經過選擇不一樣結構的羣,咱們有效地減小了規範場理論可能會有的變換。
05回到深度學習
咱們回到原來的問題,想要在風向矢量場上進行卷積。這裏,風表明輸入特徵。假設咱們想要找龍捲風方向做爲輸出。咱們能夠對「small patch」執行卷積以從風向提取這些輸出特徵。(注意:我不知道這是否具備氣象意義...輸入向量到輸出向量...這就是咱們須要知道的所有)
但「small patch」是一個很是模糊的描述。在二維平面上,它是直截了當的,咱們能夠把一些球內的全部東西都放在補丁的中心周圍。這在某種程度上也適用於完美的球體。但在任意的多個面?事情變得棘手。看看這個時髦的流形:
圖像來自維基百科
它被稱爲Klein瓶,咱們能夠看到,點之間的原始距離是有問題的。咱們可能永遠不會須要Klein瓶進行深度學習,但咱們但願儘量保持通常性。
咱們須要的是一種僅在流形附近包含卷積點的方法。咱們確實有辦法作到這一點。回想一下,指數圖在咱們的流形上作了微小的步驟來找到附近的點。因此讓咱們用它。從中心開始,咱們向切線空間容許的每一個方向邁出一步,並將這一點包含在咱們的卷積中。
咱們如今須要的是一些與卷積相關的函數。所以,咱們定義了一個內核,爲每一個指針分配一個矩陣......等待,不,咱們用指數映射的切線空間的每一個方向。這有點奇怪,可是當你看到經典的2-D卷積時,它實際上也是如此。它不是那麼明顯,由於它在飛機上。
該矩陣乘以輸入矢量併產生輸出矢量。在這裏,做者肯定了第一個問題。該矩陣僅針對中心定義。可是咱們將它應用於附近點的場矢量,它們有本身奇怪的屬性。在一個平面上,這不是問題,但在咱們的領域,它們略有不一樣,咱們不能只應用內核。
讓咱們解決這個問題並將這些點上的向量傳輸回咱們small batch的中心。在這裏,咱們能夠應用咱們的矩陣,而沒必要擔憂奇怪的曲率問題。
06規範等價
到目前爲止咱們定義的卷積彷佛是明智的。咱們應用咱們的內核來獲取數據並獲得一個很好的結果:龍捲風向東移動。但不知何故,與所謂的規範國相比,咱們仍然獲得不一樣的結果?他們預測龍捲風正在向左移動?
啊,是的:咱們須要衡量將他們的結果轉化爲咱們的框架aaa和voila:他們預測龍捲風會向西走..仍是錯的..
發生了什麼?咱們忘了讓咱們的卷積規範變得相同。簡而言之,內核的結果必須依賴於所選擇的規格而且等效地變換。若是沒有,咱們只會獲得沒法相互關聯或相互比較的奇怪結果。
可是輸出矢量多是一個不一樣的維度,或者與輸入有不一樣的解釋,咱們如何將輸入的規範變換與輸出的等變「規範變換」聯繫起來?好吧,由於結構組僅做用於輸入,因此想法是找到做用於輸出向量的同一組的表示。例如,具備旋轉組做爲其結構組的2-D輸入矢量的變換能夠由圍繞單個軸旋轉的3-D輸出矢量表示。當2-D矢量旋轉時,3-D輸出也圍繞固定軸旋轉。一般,能夠存在許多表示,例如在3D中能夠存在許多不一樣的旋轉軸。關鍵是,它作了表明相同動做的事情。
有了表示的概念,咱們可使卷積規範變得相同。咱們只須要確保輸入矢量的規範變換致使輸出矢量的等變變換(即,相同的變換,但在適當的表示中)。
如今,使用規範等價,當咱們在不一樣的地圖上執行卷積時,咱們在數字上獲得不一樣的結果,可是他們的結果是一致的。這是咱們定義卷積以在整個範圍內有意義的最佳方式。
07二十面體?
就像咱們用多個地圖覆蓋地球時同樣,讓咱們用五個重疊的地圖覆蓋二十面體(重疊用小的全白三角形表示):
圖像來自論文
美麗,地圖甚至大小相同。難怪他們選擇了這種多樣性。咱們也能夠將其視爲圖表。注意,每一個節點,即每一個交叉點,是具備輸入特徵向量的歧管上的點(在上圖中不可見)。每一個小三角形都有3個角,每一個角都是這些節點之一。他們是咱們感興趣的。
那麼,讓咱們作卷積!
首先,咱們須要看看咱們的指數地圖是什麼樣的。好吧,在咱們的離散流形上,這很容易。咱們只是從節點開始向任何方向邁出一步。方向在上圖中可見爲鏈接節點的線。所以,大多數節點有6個鄰居,除了在二十面體的角落有5個鄰居。
接下來,咱們須要一個內核函數。但咱們很懶,不想從新發明輪子。所以,咱們只使用標準2D卷積的3 x 3濾波器。這些3 x 3濾波器具備中心點和8個鄰居。這比咱們須要的還要多。因此,讓咱們忽略3 x 3網格中的右上角和左下角鄰居,將它們設置爲0並僞裝它只有6個鄰居。
剩下的就是讓這個東西變得規範。那麼,讓咱們來看看咱們的二十面體的結構組。咱們已經注意到,咱們只能進入6個不一樣的方向。若是咱們在這個結構上描述風,咱們將只有6個不一樣的參照系,每一個參考系旋轉60°。這也能夠配製成具備6級或C6的環狀基團做爲其結構基團。
最後,我提到咱們的地圖是重疊的。所以,若是咱們想要在具備重疊的區域上移動卷積濾波器,咱們基本上使用來自不一樣映射的值。咱們如何處理這些值?在咱們使用它們以前,咱們會測量它們到正確的幀。瞧,咱們正在對二十面體進行卷積。
08結論
在我看來,本文爲幾何深度學習領域提供了基本的結果。在進行卷積時理解規範等價的整體思路和重要性是這裏的主要內容。
我但願個人非數學解釋有助於理解論文中提出的想法。若是你發現這類事情頗有趣並想要硬核數學,那麼必定要看看Nakahara的「幾何,拓撲和物理」。
星標我,天天多一點智慧