【AI科普 池化以及維度縮減】

王柏鈞
4 min readApr 4, 2020

--

電腦視覺相關技術 Pooling(池化)與Dimension Reduction(維度縮減)

前情提要

在電腦視覺中,目前最有效的技術幾乎都是來自於深度學習這種技術。深度學習屬於機器學習的分支,而機器學習則是用來實現人工智慧的一門領域。

Nvidia官網可以找到的人工智慧、機器學習、深度學習其領域重疊的示意圖。

Pooling用在哪裡

言歸正傳,在深度學習中,我們通常會使用包含Counvolution Layer(卷積層)的神經網路,卷積層可以從圖片中萃取特徵,讓神經網路可以透過特徵來對圖片進行分類。而卷積層通常都會連接一個Pooling Layer(池化層),這個池化層通常有兩個作用:

1. 維度縮減 (Dimension Reduction)

在高解析度的圖片中,因為像素較多所以需要較多的運算資源,如果使用5*5的pooling方法,這5*5區間中的像素只會保留其中1個,像素會減少25倍。

ex: 500*500 pixels >> ( 5*5 pooling) >> 100*100

2. 對於旋轉、位移能保有不變性的特徵的特徵萃取

保有不變性的特徵表示在進行旋轉與位移時,依然能夠維持受改變的特徵。因為有效的特徵往往會出現在圖片中的不同位置,萃取有旋轉、位移不變性的特徵,通常會讓模型有更好的效果。

進行pooling時,事實上,會先對圖片切塊,並同時對每一塊做維度縮減,而這種維度縮減會同時造成 a. 隨機性的旋轉 b. 隨機性的位移。

接下來會針對維度縮減的部分做深入一點的分享。

「為什麼需要維度縮減」

在深度學習中,我們對維度縮減通常的理解就是減少特徵以減少運算量。

但如果更深入的理解其中意義,我們應該思考維度其實就是特徵,維度縮減事實上會導致特徵喪失,但特徵喪失卻有其好處。

舉例而言: 維度詛咒。

對於深度學習或其他特定算法而言,高維的特徵會非常難以訓練,這些維度詛咒大部分都是相似或相關的,不過在不同的演算法上發生時,其影響截然不同。

維度詛咒的項目留待下次討論

而想要避免維度詛咒,最直觀的解決方法就是進行維度縮減。

舉例來說:

在這次武漢肺炎的蔓延中,我們會有相當多的消息,假設我們萃取出消息中的關鍵字,將他們組成一個龐大的資料集。而我們想利用這個資料集來預測下一周病例發展狀況,我們可以使用深度學習模型來做這件事。

但首先我們很直觀的可以理解到,會有非常多的關鍵字,而且每一個關鍵字可能都來自不同的語系,或是地區、平台,所以恐怕不能混之一談。

那麼有這麼多的關鍵字,就相當於一個高維度的特徵組合,直接使用一定會難以訓練,甚至無法訓練。

這個時候我們可以利用維度縮減的技術,來將特徵減少,並進而使模型能夠訓練,而且有更好的特徵可以被使用,也可以將有些相似的特徵區分開來。

這種維度縮減的效果,對於非監督式學習的分群問題會非常非常重要,因為他們往往是使用「距離」來進行任務。

補充: 常見的維度縮減方法

  1. PCA (Principal Component Analysis
  2. LDA (Linear Discriminant Analysis)
  3. t-SNE (t-Distributed Stochastic Neighbor Embedding)

參考:

「Pooling的意義」

https://www.quora.com/What-is-the-motivation-for-pooling-in-convolutional-neural-networks-CNN

「為什麼需要維度縮減」

https://towardsdatascience.com/getting-data-ready-for-modelling-feature-engineering-feature-selection-dimension-reduction-39dfa267b95a

「維度詛咒」

https://www.quora.com/What-is-the-curse-of-dimensionality

--

--

No responses yet