流形學習


1. 什么是流形

  1. 兩個例子:

    現在我們想表示一個圓,

    • 在平面直角坐標系中,這個圓可以被一個二維點集{(x,y)| x^2 + y^2 <=R^2}表示。所以圓是二維的object

    • 在極坐標系中,這個圓可以這樣表示:圓心在原點,然后給定半徑R。所以圓是一維的object

    • 上述描述可以畫個兩個圖(更加形象,有助於理解)

  2. 流形的定義:

    • 流形學習的一個觀點:任何現實世界中的object均可以看做是低維流形高維空間嵌入(嵌入可以理解為表達),舉例說:圓是一維流形二維空間的嵌入,球是二維流形在三維空間的嵌入(三維坐標系中的球可以用二維的經緯度來表達)

      流形學習的觀點是認為,我們所能觀察到的數據實際上是由一個低維流形映射到高維空間上的。由於數據內部特征的限制,一些高維中的數據會產生維度上的冗余,實際上只需要比較低的維度就能唯一地表示。

    • 個人的感覺:這個好像是個拓撲變換的感覺,你看到的是高維的數據點,但是可以借助一些拓撲變換,轉化為低維的表達(但是這種低維表達要確保某些“合理性”)

2. 流形有什么用

  1. outline

    • 數據非線性降維
    • 刻畫數據的本質
  2. 流形用於數據降維

    高維空間有冗余,低維空間沒冗余。也就是說,流形可以作為一種數據降維的方式。傳統很多降維算法都是用歐氏距離作為評價兩個點之間的距離函數的。但是仔細想想這種歐氏距離直覺上並不靠譜。“我們只是看到了三維數據,就要用三維坐標系內的尺度去對事物進行評價?”總覺得有些怪怪的。

    舉例來說:

    • 你要測量從廣州到深圳的距離,有兩種做法:(1)基於已有的經緯度地圖體系,拿個卷尺到地球儀 上固定兩點做個測量;(2)構建關於地球的三維坐標系,在地球上這兩點之間打洞連個直線測量。現任正常人都是選擇第一種方案。
    • 再比如我們想基於距離對廣東省內所有小城市進行聚類,聚合形成幾個超大城市,這個時候你用的距離當然是地表距離(用經緯度體系構建的二維地圖來計算距離),而不會說要根據三維坐標系下的兩點之間的歐氏距離
    • 而對於降維算法來說,如果使用傳統的歐氏距離來作為距離尺度,顯然會拋棄“數據的內部特征”。舉例說, 如果測量球面兩點距離采用空間歐氏距離,那就會忽略掉“這是個球面”這個信息。(這兩點不僅是三維空間上的點,而且還同屬於一個球面,這個關鍵信息要利用起來)

    (最后來副周志華的西瓜書的圖!)非線性降維因為考慮到了流形的問題,所以降維的過程中不但考慮到了距 離,更考慮到了生成數據的拓撲結構。

  3. 刻畫數據的本質:

    既然學習到了“將數據從高維空間降維到低維空間,還能不損失信息”的映射,那這個映射能夠輸入原始數據,輸出數據更本質的特征(就像壓縮一樣,用更少的數據能盡可能多地表示原始數據)。

    這方面也是深度學習一直在搞的事情。深度學習主要的特點就是“特征學習”,所謂特征,就是能“表示事物本質的內容”,一般來說特征的維度應該小於數據本身。有一些實證證實,大腦處理數據其實是通過記憶、重現的方式。數據那么多,大腦怎么能一一記住?那就可以只記住“特征”!例如我們知道“人”都是兩只眼睛一個鼻子一張嘴。而具體到每一個人則是再這個基本特征之上添加了一些其他的特異性的內容僅此而已。

    深度學習一直以來就是在模仿大腦的結構,或者說在模仿大腦對數據的處理能力:從底層感受器輸入原始數據,逐步求精得到特征。

    深度學習中所謂的特征,在一定程度上就可以用流形的概念來解釋。我們希望我們的模型能夠學習到“數據在流型空間中的表示”。(流形空間相比原空間是低維的)如果能做到這一點,則說明我們的模型離“模擬大腦”又前進了一步。

3. 如何證明模型學習到了流形

  1. 觀測學習的過程:

    前面提到了高維數據其實是由低維流形生成的。如果我們能模擬這個生成過程,再通過對低維流形的微調,應該能得到對應的“有意義且有道理”的高維數據。

    • 下面是利用生成對抗網絡(GAN)生成的人臉:

    img

    ​ 如果對GAN不了解的話,就可以把生成過程看作:輸入一個特征空間的低維編碼,得到一個輸出空間的

    高維圖像。如何證明我們學習到的這個生成過程就是像人腦一樣從低維流形映射到高維空間呢?還 記得

    ​ 我們之前說過,流型空間一般應該是連續的,而映射到的高維空間的數據也應該在流形連續調整時變得

    連續且有意義

    • 再舉個例子,再另一篇介紹了GAN的一個擴展的DCGAN的文章中,做了這樣一件事:

      尋找兩個編碼,這兩個編碼都能生成有意義的內容,將這兩個編碼插值得到好多編碼。也就是說這些編碼實際上描述了從編碼A到編碼B緩慢轉變的過程。編碼A是起點,編碼B是目標,A和B之間的連續轉變的編碼則應該讓生成的圖像處於“從A向B”的過渡過程!事實如何呢?請看下圖:

4. 流形學習的關鍵

  1. 如何找到這個從高維到低維映射
  2. 哪怕不能直接找到這個映射,那我們可以找到某種方法實現一種等價:在高維空間處理數據,等效於: 將高維空間映射到低維空間、再處理數據、再映射回高維空間”的這種操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM