1. 程式人生 > >關於稀疏自編碼器的自己的理解

關於稀疏自編碼器的自己的理解

一個稀疏自編碼器為什麼最後視覺化得到這樣的結果呢?
首先輸入是隨機的10000張圖片的任意區域性裁剪出來的8x8的圖片,隨機抽取200張出來看看就是這樣
很亂,沒有任何規律,可以理解成自然界的所有影象的區域性的縮影,然後通過隨機的W,b得到第二層的輸出,這個輸出因為經過sigmoid所以範圍為(0,1),我們把輸出接近1的理解為該神經元被啟用,而接近0的理解為被抑制。那麼對於一個特定的神經元來講,輸入10000張圖片有10000個響應,對這些響應取平均值如果接近0那麼就說明大多數情況下都是被抑制的,接近1同理。
這時候,看到有的解釋說從生物學的角度來講,大腦接受某一刺激也是隻有單一的神經元興奮,或者說某個神經元只對某種刺激興奮,以這種形式構成的神經網路更符合人腦的思維方式,更能夠得到好的結果。
事實證明,確實如此,我們希望一個神經元對所有圖片的響應的均值接近0,人為加上的這種限制就叫做稀疏性(Sparsity)限制,但往往是不可能為0的,試想10000張圖片幾乎包含了所有模式,不管你再怎麼變化W,b,都不可能為0,所以一般定一個接近0的值,如0.01,0.05,來限制這個平均響應,這個值就可以這樣理解了,10000張圖片裡有10000*0.01張產生了完全的響應,就是圖片模式與權值剛好對應,公式就是xi = wi, 這樣能產生最大輸出,而其餘所有圖片都剛好相反,輸出為0,那對於這個神經元就達到了我們的稀疏性要求。
當然不可能一開始就達到,需要經過訓練,那就是計算當前所有神經元的響應p與目標p=0.01的距離(相對熵,KL,因為p是隱藏層的所有的響應是列向量),對W,b求偏導,做梯度下降,就可以得到我們想要的那個目標了,最後輸出就是這樣一個邊緣的圖形。
再來看這些邊緣圖形,似乎確實滿足了這樣的要求,他們可以對所有的輸入響應平均進行求和後達到最低,如果再反過來看得到了這些W,那什麼樣的輸入影象可以讓它得到最大響應呢,結果貌似更好看,是更標準的不同方向不同大小的邊緣:


也就證明了機器學習到的這些權值可以檢測出一幅影象的邊緣,輸入邊緣影象時響應最大。