歐式空間到雙曲空間

摘要:表示學習(Representation Learning)是人工智能領域一直在探討的話題,也是走向強人工智能的路上必需要解決的一道難題。目前爲止,大多數表示學習方法停留在了歐式空間(Euclidean Space),但事實上除了簡單的歐式空間,還存在不少其餘的非歐式空間能夠用來構建AI模型,而且咱們也發現了近兩年愈來愈多的學者也開始在這個領域作出了一些有意思的工做。在本文中,咱們通俗易懂地講解了歐式空間與其餘非歐式空間好比雙曲空間(Hyperbolic Space)的區別,以及使用這類空間來建模的背後的動機。閱讀本文不須要雙曲空間相關知識。html

 

 

1. 什麼是好的表示(Good Representation)?git

 

表示學習(Representation Learning)是當今機器學習領域常常被討論的話題,尤爲深度學習的崛起,讓不少學者加入到了表示學習的研究當中。那什麼是表示學習? 通俗易懂的解釋就是用數字(向量、矩陣...)來表達現實世界中的物體(object),並且這種表達方式有利於後續的分類或者其餘決策問題。跟表示學習有緊密關聯的是特徵工程(feature engineering),但工業界的特徵工程更多的是利用人爲的經驗去設計一套適合某個特定領域特徵的過程,整個時間成本很高,並且一個領域的特徵一般很難去解決其餘相似的問題。相反,在表示學習中,咱們但願經過算法自動從給定的數據中學出合理的特徵或者表示。github

 

好比在下面這幅圖中,給定一個輸入input, 咱們但願經過一層層的模型參數來學出一個表示,而且這個表示能夠很好地支持上層應用 A,B,C。 算法

 

   圖片來自於[1] 網絡

 

在圖像識別領域,CNN已經成爲最主流的算法,經過一層層的卷積層,Pooling層來對原始的圖片數據(當作是像素)作非線性轉換,整個過程其實能夠看作是表示學習的過程,咱們但願經過這樣一層層的轉換,可以學出表明每一個圖像的「最好的表達方法」,同時這種表達有利於後續的分類或者其餘的任務。相似的,在天然語言處理領域,詞嵌入(word embedding)必然是近幾年最重要的成果之一,通俗來說就是用一個低維的向量來表達每個單詞,也稱做分佈式表示法(distributed representation)[2]。在單詞的表示學習過程當中咱們常常會用到 Skip-Gram[4], CBOW[3], Glove[5]等算法,找到可以用來表達每個單詞的最合理的向量。最後,在語音識別領域,端到端的模型也逐漸成爲主流,經過原始語音信號的表示學習,是否可以學習出比傳統語音特徵(好比MFCCs),更加有效的表示也是不少人研究的話題。架構

 

說到這裏,給定一個問題,咱們能夠嘗試着用各種算法來去學習不一樣的表示方法,那這裏的關鍵問題是咱們怎麼去判斷哪些表示是好的,哪些表示是很差的? 好比咱們設計了一套CNN架構,怎麼判斷從圖片裏學出來的表示(representation)是好是壞的? 最簡單的評估標準,也是不少人目前使用的是,針對於一個任務(task)的準確率-這種「終極」指標,因此不少人會誤認爲準確率高的就是好的表示,或者根本不去關心除了準確率以外的事情。包括在學術界,這種缺少本質思考的研究也致使了近幾年低質量論文的「氾濫」,造成了比拼準確率的「競賽」,但在本質層面上並無給科學的發展帶來了較大的影響。機器學習

 

事實上,準確率僅僅是其中一個方面,其實還有不少其餘的因素須要考慮進去。Bengio等學者在[1] 提出了好的表示所須要具有的一些特性。首先, 一個好的表示能夠學出Disentangle Factors,並且這些factor能夠泛化(generalize)到其餘相似的任務中。好比給定一個有人物的圖片,咱們能夠想象每一張圖片由 「圖片中的人物」,「人物的角度」, 「表情」, 「有沒有帶眼鏡」 這些不一樣因素來組成,並且能夠看做這些因素是具備相互獨立性的。分佈式

 

好比在下面的圖片中,有些圖片主要用來描述角度、有些主要用來描述髮型和表情。舉個簡單的例子,假設咱們用神經網絡對圖片進行了學習,並且最後用一個四維的向量來表達這幅圖片。那這時候,咱們但願第一個hidden unit可用來控制角度、第二個unit能夠用來控制是否帶眼鏡,以此類推。ide

 


那這樣的結果是,假設咱們知道哪部分表示針對的是圖片中的人物,則只須要在這部分表示中添加分類算法則能夠達到分類人物的目的。其實,這種思惟方式跟人類去看世界是相似的,人類是有能力從複雜的信息中把每個獨立的信號抽取出來。好比一個美食愛好者,每次去新的城市可能只會關注當地的美食,而不是其餘不須要關注的信息。 函數

 

另外,具備相似層次結構(hierachical representation)的表示也是咱們重要的關注點。在現實世界的不少場景下,物體是有層次結構的。好比對於上面提到的單詞的表示,「蘋果」,「葡萄」和「水果」並非平行的關係,而是具備「屬於」這種關係。相似的,「北京」,「上海」 均屬於 「城市」。那咱們的問題是,經過詞嵌入算法(word embedding)學出來的表示是否可以復現這種層次關係? 咱們都知道相似於Skip-gram這些算法更多的是依賴單詞之間語義的類似度,但不必定是這些單詞之間的層次關係。 另外,不少網絡也是具備層次結構的,好比網絡中的意見領袖一般位於層次結構中的最頂層。那對於網絡中的節點來講,什麼樣的表示可以還原原始數據中應有的層次結構呢?

 

除了這兩個特性,Bengio在[1]中也提到了其餘須要考慮的特性,感興趣的讀者能夠查閱相關文檔。到此爲止,都是一些背景知識,只是用來講明爲何有時候須要考慮雙曲空間的一個動機(motivation)。

 

2. 目前絕大多數表示學習方法論依賴於歐式空間

 

歐式空間是你們最熟悉不過的概念,從小學開始學的數學裏面基本都是在跟歐式空間打交道。好比咱們很清楚「給定兩個點,只能找到一條直線經過這兩個點」, 「給定一個點和一條直線,咱們只能找到一個平行的直線」。並且咱們知道怎麼作兩個向量的加法、減法,甚至向量的線性變換。對於歐式空間,一個最簡單的理解就是它是「平」的,好比二維空間就是一個平面。相反,那是否存在一些空間是「彎」的?這是接下來咱們討論的重點。 

 

在機器學習領域,咱們目前所討論的絕大部分模型都是依賴於歐式空間中的運算。從咱們所熟悉的線性迴歸、邏輯迴歸到深度學習中的CNN, RNN, LSTM, Word2Vec 這些都依賴於歐式空間。實際上,除了歐式空間這種「平」的空間,在有些問題上咱們也會去面對其餘「彎」的空間,好比這篇文章要討論的雙曲空間(hyperbolic space)。舉個例子,假設給定了兩個城市的座標,咱們都知道在一個2D地圖上計算出這兩個城市之間的距離,其實就是歐式距離。但若是咱們考慮「地球是圓的」,那計算兩個城市之間的距離再也不是直線距離了,而是相似於一個曲線的距離。因此對這類問題,歐式距離公式再也不直接適合。相似的,宇宙空間也是彎曲的,因此也須要依賴於非歐式空間的性質。

 

本文章主要討論非歐式空間家族中的一個重要空間,叫作雙曲空間(hyperbolic space),以及它在常見機器學習建模中的應用。 雙曲空間能夠看作是一個空間,但它的曲率是負的(constant negative curvature),也是常曲率黎曼空間(Riemannian space of constant curvature)的特例(固然,歐式空間也屬於常曲率黎曼空間,但曲率是0)。本文主要圍繞2017年NIPS一篇Spotlight論文「Poincaré Embeddings for Learning Hierarchical Representations」來展開討論。據個人瞭解,這應該算是第一篇在計算機領域出現的聚焦於應用場景的、討論雙曲空間的文章,預測會帶來必定的影響力。美國東北大學的Dmitri等學者也嘗試過把雙曲空間的理論應用到複雜網絡分析上,但侷限於二維空間[6]。

 

具體瞭解細節以前,咱們先來看一個Demo,來理解雙曲空間具體作了什麼樣的工做。在這裏咱們使用了WordNet數據集,它包含了不少概念以及概念之間的層次關係,以下圖所示。

 

 

   WordNet數據集[7]

 

下面的Demo展現的是當咱們把雙曲空間模型應用到此類數據集時表示變化的過程。能夠看到,一開始每一個點均勻分散在整個空間裏,但隨着學習過程的進行,這些點的分佈在空間裏明顯呈現出一種相似於樹狀結構,也就是層次結構。

 

  
Demo 來自於 [8]

 

經過一段時間的學習過程,最終能夠生成相似以下圖的表示。這是二維空間中的可視化結果。咱們能夠看到一個有趣的現象,好比WordNet裏面「Entity」這種位於偏向於Root的概念在雙曲空間裏位於離中心比較近的地方。相反,很細節性的概念好比「tiger」就會位於空間中邊緣的地方,並且具備相似含義的概念也位於相鄰的位置上。                                        

 

    圖片來自於 [9]

 

因此,從圖中咱們能夠看出學出來的表示具備必定的層次結構(hierarhical structure)。這就是跟歐式空間的很大的區別,在歐式空間裏學出來的表示,只包含類似的信息,但不具有相似的層次結構。

 

 

3. 雙曲空間的特色

 

雙曲空間具備幾個比較明顯的特色,並且這些特色是歐式空間不具有的。第一個特色是,它具備表達層次結構的能力(如上面咱們所討論的例子同樣)。好比咱們的數據自己具備必定的層次結構,它則能夠在雙曲空間裏面復原這種層次結構(固然數據稀疏的時候是很難)。第二個重要特色是它自己具有的空間大小(capacity)跟歐式空間很不同。在生活中,好比咱們買一個1升大小的桶,則能夠用來裝1升的水,固然這是發生在歐式空間的例子。假設咱們擁有一樣大小的桶,但考慮的是雙曲空間則會有什麼不同?

 

左邊的圖表明一個雙曲空間的可視化,裏面包含了不少具備一樣文理的圖片,每一個圖片形狀相同,但大小不同(至少在歐式空間裏)。可是,一個有趣的現象是,在雙曲空間裏面,其實這些圖片的大小都是同樣的,並且隨着它們的位置更靠近球的邊緣,肉眼看到的圖片大小會愈來愈小,但實際在空間中的大小是同樣的。這說明什麼現象呢? 也就說,隨着往球的邊緣走,空間所承載的大小會指數級增大,因此可容納指數級多的紋理圖片。這其實說明,雙曲空間的capacity要遠遠大於歐式空間。好比咱們回到一開始的例子,假設一樣大小的水桶,在雙曲空間裏有可能能夠裝上幾萬升或者幾千萬升的水。固然,從數學角度這種例子不算嚴謹,但至少便於理解。右邊的圖表示的意思是:在雙曲空間裏,通過一個點而且跟一個給定的直線平行的直線有無數個。這是從空間特性角度來看,跟歐式空間最大的不一樣。


空間大小對於表示學習有什麼影響呢? 在深度學習裏面,咱們常常會討論隱式層(hidden layer),並且每一個hidden layer都有必定數量的hidden units,好比64, 128等。一個具備64的hidden units能表示的空間大小有多大呢? 這個問題其實很重要,至關於咱們須要對模型的複雜度有個提早認識。假如每個hidden unit的取值是0或者1(像RBM),那很容易計算出來64個hidden units能表示的全部組合個數是2的64次方,也能夠理解成容量或者空間大小(capacity)。相似的,若是在雙曲空間考慮這個問題,多少個hidden units能夠帶來2的64方空間大小呢? 不嚴謹的答案多是遠遠少於64位。因此咱們的假設是:咱們在雙曲空間能夠利用更少的參數來表達具備在歐式空間中一樣容量(capacity)的模型。

 

 

4. 雙曲空間的不一樣表示方法

 

爲了在雙曲空間作運算,咱們須要基於一些標準化的模型來計算。有幾個模型適合用來表達雙曲空間好比 Beltrami-Klein  model,  the  hyperboloid  model,   and  the Poincare half-plane  model [1]。其中Pointcare ball model模型是比較適合大數據的場景,由於不少優化理論只須要經過簡單的修改就能夠用在Pointcare模型上。好比歐式空間裏的隨機梯度降低法(SGD),經過簡單的修改便可以用來優化雙曲空間中的優化問題。

 

 

5. 例子:利用雙曲空間來學習網絡的表示

 

利用這個案例來詳細地闡述整個建模的過程,相似的過程能夠直接應用到其餘的場景。詳細的推導過程能夠先關注「貪心科技」公衆號(本公衆號),回覆關鍵詞「表示學習」來得到。

 

5.1 問題定義: 

給定一個網絡,咱們但願學習出每個網絡節點的表示。其實這個問題也叫作網絡嵌入(network embedding)。假設網絡中有N個節點,以及咱們知道全部相連的邊。咱們用y=1表示兩個邊相連,y=0表示沒有相連。

 

5.2 目標函數的構建:

對於每一條邊(相連或者不相連),咱們能夠定義一個條件機率:

其中d_ij表明節點i 和 j在雙曲空間中的距離,因此d_ij越小,則兩個節點相鏈接的機率越大。r, h是模型的超參數(hyperparameter)。hi, hj 表明節點i, j在雙曲空間中的向量表示(vector representation),一般須要通過調參的過程。當咱們有了針對於每一條邊的條件機率,咱們就能夠很容易寫出整個目標函數:

也就是把全部的邊(相連或者不相連)考慮了進去。這種目標函數也稱做entropy loss, 在邏輯迴歸中也會常常提到。

 

這裏面有幾個運算須要從新定義,一個是針對於每個節點在雙曲空間的表示,另外是在這裏刻畫距離的d()函數。由於這些運算咱們都須要在雙曲空間中從新定義。

 

5.3 運算符的定義

 

首先,對於每一個節點的表示來講,在pointcare模型下咱們定義它必須在半徑爲1的圓形以內,不能超出這個範圍。利用數學,咱們能夠定義成:

其中||x||<1表示向量x的norm要小於1. 若是在更新過程當中發現norm不知足此條件,則能夠經過projection方式把它映射到知足的區域裏面。 其次,對於兩個節點在pointcare模型下的距離是這樣定義的:

其中||.||表明歐式空間中的norm。arcosh是inverse hyperbolic cosine function。咱們很容易觀測到,隨着hi,hj的norm趨向於1, 也就是靠近圓形的邊緣,arcosh裏面的值會不斷地變大,並且這種變化是指數級的。這也從另外一個層面解釋,爲何雙曲空間的容量會隨着靠近邊緣變得愈來愈大。

 

到此,咱們已經定義好目標函數以及所須要的運算符,接下來就是經過一些優化算法去找到目標函數的最優解(一般局部最優)。

 

5.4 找出最優解

 

利用Pointcare模型的一個重要好處是能夠把歐式空間中像隨機梯度降低法經過簡單修改便可以拿來使用。總體的思路就是首先在歐式空間中計算梯度,而後經過一些簡單的轉換獲得雙曲空間中的梯度,從而在雙曲空間中作隨機梯度降低。那這裏所提到的轉換怎麼作呢? 經過所謂的metric tensor咱們很容易把計算出來的梯度轉換成雙曲空間所需的梯度。好比在以下圖,表示一個梯度更新的過程,惟一跟常規梯度更新算法的區別在於前面多了一個項,其實就是inverse of metric tensor。

 

6.  總結

 

在本文咱們只給出了很是基礎的描述,目的是讓讀者可以直觀上理解雙曲空間的優點以及何時須要用雙曲空間來建模。固然,這方面的研究目前還處於比較初級的階段,但相信將來會有更多相關的工做會呈現出來。

 

不少人認爲神經網絡是用來模擬大腦的。這句話最多在描述卡通版的大腦,其實即便神經科學家也未必對大腦的機制有很清晰的瞭解。目前的神經網絡大多運行在2D平面,但大腦自己存在三維空間裏,並且神經元之間具備必定的幾何特性,那會不會結合非歐式空間的神經網絡更適合來模擬其內在運行機制呢?只有更多地探索才能給出正確答案。

 

 

參考:

[1] Bengio, Yoshua, Aaron Courville, and Pascal Vincent. "Representation learning: A review and new perspectives." IEEE transactions on pattern analysis and machine intelligence 35, no. 8 (2013): 1798-1828.

 

[2] Hinton, Geoffrey E., James L. McClelland, and David E. Rumelhart. Distributed representations. Pittsburgh, PA: Carnegie-Mellon University, 1984.

 

[3] Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).

 

[4] Mikolov, Tomas, Ilya Sutskever, Kai Chen, Greg S. Corrado, and Jeff Dean. "Distributed representations of words and phrases and their compositionality." In Advances in neural information processing systems, pp. 3111-3119. 2013.

 

[5] Pennington, Jeffrey, Richard Socher, and Christopher Manning. "Glove: Global vectors for word representation." In Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP), pp. 1532-1543. 2014.

 

[6] Krioukov, Dmitri, Fragkiskos Papadopoulos, Maksim Kitsak, Amin Vahdat, and Marián Boguná. "Hyperbolic geometry of complex networks." Physical Review E 82, no. 3 (2010): 036106.

 

[7] Miller, George A., Richard Beckwith, Christiane Fellbaum, Derek Gross, and Katherine J. Miller. "Introduction to WordNet: An on-line lexical database." International journal of lexicography 3, no. 4 (1990): 235-244.

 

[8] https://www.facebook.com/ceobillionairetv/posts/1599234793466757 

 

[9] https://github.com/facebookresearch/poincare-embeddings

轉自:https://www.itcodemonkey.com/article/8616.html,感謝分享

相關文章
相關標籤/搜索