您當前的位置:首頁 > 繪畫

對於特徵空間與機器學習,深度學習的深夜思考

作者:由 Nick Huang 發表于 繪畫時間:2019-04-22

一個矩陣A的特徵向量v能使Av=λv。特徵向量為什麼會有這樣的魔力呢?向量v左乘矩陣A可以看成是做了一個線性變換,假如是可逆變換就相當於換了一個表示方法(換了一個座標系)。相對應的λ越大,說明這個變換(可以看作一個特徵空間)中對應的特徵向量權重越大。

將矩陣A看成一個特徵空間,那麼A的特徵向量就是A的一組基向量,特徵值意義在於:特徵值越大,對應的基向量在該特徵空間中的重要性也就越大!一個向量經過矩陣A對應的線性變換也好換個座標系也好,如果特徵值越大,那麼經過變換以後向量在這個特徵值對應的特徵方向上得到的權重就越大。或者說特徵值就是這個特徵空間上特徵向量所對應的刻度,特徵值越大對應的單位特徵向量刻度越大,比如一個在各個特徵向量方向上都為1的向量,左乘這個特徵空間A,得出的向量就是特徵值對應的向量,然則變換結果不是全1。我們可以分解矩陣A為n列(每一列代表的是一種特徵),每一列都是一個向量,每個向量都是特徵向量的線性組合,特徵向量與特徵向量之間相互正交。因此我們可以將特徵向量左乘這個矩陣A看成是一次向量之間的運算(a1,a2。。an)v,a1v乘法,a1中的非v部分會因為特徵向量相互正交剛好被抵消掉了。比如一個對角陣((2,0),(0,1))。一個向量(1,1)。第一維度代表城市第二維度代表面積,要求的是房價。城市對房價影響大,那麼(1,1)變換後成了(2,1),向量放大了城市的作用。假如把矩陣做得更復雜點,秩低點,就相當於做了一次特徵篩選。不是對角陣,就相當於對特徵做了線性組合,形成新的加權特徵。

從這個角度思考為什麼深度學習會厲害,深度學習每一層的W都相當於做了一次線性的特徵提取以及特徵篩選,經過非線性變換以後對映到不一樣的空間(彎曲了的空間什麼的?)。透過多層疊加,形成一系列的特徵提取。特徵提好以後就線性可分了,最後再做一個邏輯迴歸,done。

再去思考傳統的特徵提取。傳統的特徵提取需要人為的給定一些設定的條件,或者根據一些人類的想法去進行特徵提取。比如PCA要對協方差矩陣(認為這組資料中方差較小的特徵沒什麼用,對於分類沒有起到決定性作用,因此過濾掉)進行特徵分解,提取特徵的時候就會對原有特徵進行線性組合以及filter。pca人為的設定了主成分特徵的個數,透過主成分把不太重要(可能有點用,未必沒用,假如滿秩全都有用,當然也有可能有噪聲)把原有特徵向量做一個降維,從而起到了特徵提取的功能。這裡邊的主成分個數就可以看成一個超參。深度學習的每一層都可以看成pca的一種近似操作,只不過沒有超參,或者說超參需要從資料分佈中學習。

從泰勒公式的角度來講,任何一個可微函式都可以在鄰域n階展開近似擬合原函式。那麼深度學習可以看成是泰勒公式的類似版本,對於泰勒公式的x^n,在越深的層擬合出來越高階的x^n,同時需要去學習每一階對應的導數。因此層越深,理論上來說擬合能力越強(基於使用同樣的啟用函式)。由於泰勒公式展開越高階,相加的項越多。基於這個思考那麼,越深的層理論上應該需要更多的神經元,也就相當於越深越寬。

再對ResNet殘差學習進行思考,為什麼ResNet會奏效呢?首先resnet使梯度反向傳播多了一條捷徑減緩梯度爆炸與梯度消失的作用。同時給了low-level的特徵重新做人的機會哈哈。雖然後邊進行提取了,部分特徵被filter掉了,但不代表這些特徵就沒有用了,可以給他們一次重新做人的機會“溫故而知新”。殘差學習甚至可以認為是一種防止過擬合的方法。假如認為深度學習是一種類似n階展開的泰勒公式,那麼越深就展開的越開,從而對鄰域擬合得更加徹底。然而加上之前之間的特徵,相當於把前邊學習到的低階特徵也拿出來進行利用,不單單利用了高階特徵,減緩過擬合。當然也可能因為梯度的反向傳播更加快反而擬合得更好,但比較用的特徵不那麼單純的高階了,應該也能起到防止過擬合的作用。

再對我熟悉的SENet進行思考。SENet首先做一個global pooling對每一種特徵做一個全域性的平均池化,把特徵提取做到極致(不同於以往的在空間上的attention),SE在我看來就是徹徹底底的特徵提取特徵篩選。池化以後對維度進行壓縮,relu做一個非線性變換。再把濃縮的精華提出來放回原來的每個特徵對應的維度上,對原有特徵在通道上做一次加權。徹徹底底的特徵篩選。