03.31 維度災難如何解決?

如果要給從事機器學習領域的人建議的話,那會是:永遠不要忘記維度災難。傳統的解釋是這樣的:“如果你有很多輸入維度,那麼問題就變得很昂貴並且難以解決。”事實如此,但為什麼會這樣呢?讓我們來更詳細地討論這個問題吧。

維度災難最直觀的解釋之一就是看單位超球面及其體積。那是什麼意思?數據點主要表示為d維向量。我們假設特定問題中的所有數據點都位於單位超球面中。我們都知道3D中超球面的體積,它是:

維度災難如何解決?


要將其擴展為d維,我們可以忽略體積方程中的常數並將它們放在變量c中,然後體積方程採用以下形式:


維度災難如何解決?


觀察下面的圓圈,幾何上,好像大多數點落在外殼之間(藍線和紅線之間的空間)。換句話說,半徑為0.95的單位圓的殼層也只佔圓圈面積的一小部分:


維度災難如何解決?

一個單位圓,其中生成隨機數據點


現在,想象一下當我們觀察一個d維超球面時,這種情況怎麼樣?大多數人會說這是差不多的情況,大部分體積都會超出超球體的外殼。但大多數人都錯了。事實是人類並不能真正思考高維空間。它不直觀,我們無法想象。我們來看看實際發生了什麼。我們可以寫出外殼從d維超球面佔據的體積分數,如下所示:

維度災難如何解決?


觀察一下如果我們取殼體的超球面半徑的5%,分數會有什麼樣的變化,現在問題就很清晰了。隨著輸入維度d的增加,駐留在殼體中的體積的數量顯著增加,如下圖所示:


維度災難如何解決?


該圖顯示了殼體在超球面佔據的體積分數隨著數據維數的增加而增加。

我們可以看到,殼體的體積分數呈指數增長,朝向1,1的維數是其極限。即使對於少量的r,殼的分數也迅速增加到1。

這是什麼意思,何時會產生這樣的問題?為了來觀察這個變化,讓我們來看一下機器學習中最常用的分佈,即高斯分佈。如果我們觀察三維輸入空間的高斯密度,它就像一個超球面,其中概率隨著半徑的平均值而減小,這通常適用於超過3個維度,通過下圖你就能明白:


維度災難如何解決?


二維高斯分佈的高斯密度。注意密度是如何投射到類似橢圓的對象上的,在更高維空間中可以預期類似的行為。

在高維空間中,高斯的密度集中在其超球面的外殼中,這是由於超球面體積是殼體的一部分,這在高維空間中變得顯著。這意味著在在採用高斯採樣的情況下,結果將是來自超球面的外殼具有最高概率的數據點。

我們可以從經驗風險最小化的角度思考維度災難。簡而言之,我們希望從我們的數據中獲取代表性的訓練樣本,以便能夠推廣到不可見的數據。現在,在超球面的例子中,我們檢查了當球體的球體半徑厚度為5%時,數據維數大約為400維,球體的外殼將包含超過90%的體積。想象一下,我們在球體中心(0%半徑)和95%半徑之間有數據樣本。在這種情況下,我們覆蓋了半徑範圍的95%,但我們只覆蓋了不到10%的體積。顯然,在這種情況下很難獲得代表性樣品。

幸運的是,維度災難並不意味著我們無法建立有效的模型。通常我們對數據有一些平滑性保證,數據空間不能如此密集地填充或減少維度(機器學習研究的很大一部分)。也許最好的例子是所有可能的64x64 RGB圖像的空間。數據的維度為64x64x3 = 12288。如果我們考慮一個超球面的例子,這顯然是一個問題。但實際上,大多數像素的各種組合對於任何類型的分類都沒有意義。此外,計算機視覺方法有許多有用的先驗決策,這使得問題更容易解決。

維度災難如何解決?


分享到:


相關文章: