參考文獻:深度學習如何提取特征
引題:
一個粗糙的想法,簡單粗暴:
法1:每幅圖我讓機器一個一個像素看,從像素來說,它最能准確地表達某個具體的物體具體的姿勢。可以想到,來了一個像素,你能干嘛,你能判斷它是誰?逐像素,你只能:(1)對比一張圖片和你有損壓縮之后相差多少(2)設一個閥值,然后灰度分級。一旦涉及特征,不會只是像素(盡管有raw features ,但這是輸入,之后會對它自動提取特征)。
法2:我可能直觀地想到,把圖片分成若干塊,這些若干塊中逐部分去和其他圖像對比,選擇和它相似的塊數最多的。這樣的分割有點滑稽,比如你分割到物體中間的部分,全是一種顏色,你去搜索和它相似的?那你只能夠搜到衣服相同的人了,不同的只是少部分。比如,你看一個陌生人的衣服,你能記住他嗎?
法3:提取某種特征。手動選,如sift,hog,harris...
法4:......
法N(N>=4):其實對於圖片來說,如果表達式很關鍵的。比如,對於我們人類來講,輪廓是一種特征。人類如果只用輪廓就能達到很高的識別度,如素描。機器也應該存在某種描述方式。因此,描述方式才是最重要。
思路:
竟然描述方式這么重要,那我給出人腦的粗糙分層習慣:
先看眼睛感受到一些聚集的像素,然后逐漸判斷出分別是手,腳,腰,頭,然后再上半身,下半身,然后整個人,最終判斷出誰。看起來有點詭異,貌似我們就看高度、肥胖、臉,甚至是先整個人,然后看細節(判斷方式)。也許這么說是對的,但是從描述的方式來看,底層到高層是沒有問題的,因為他們是組合關系。你不可能先有整體的描述,在分解出細節的描述。假如有,先整體描述,整體怎么描述?(描述方式)。
講個故事:
1995年,兩個學者找到許多黑白照片,他們從中精心挑選出400個patches,記為si,i=1,2,...,400。然后從黑白照片中任意找一個patches 記為T,他們發現:
那么,如果“精心挑選”呢?他們這樣做( 稀疏編碼):
稀疏編碼是一個重復迭代的過程,每次迭代分兩步:
1)選擇一組 S[k],然后調整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。
2)固定住 a[k],在 400 個碎片中,選擇其它更合適的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。
經過幾次迭代后,最佳的 S[k] 組合,被遴選出來了。令人驚奇的是,被選中的 S[k],基本上都是照片上不同物體的邊緣線,這些線段形狀相似,區別在於方向。
這意味着:
復雜圖形,往往由一些基本結構組成。比如下圖:一個圖可以通過用64種正交的edges(可以理解成正交的基本結構)來線性表示。比如樣例的x可以用1-64個edges中的三個按照0.8,0.3,0.5的權重調和而成。而其他基本edge沒有貢獻,因此均為0 。
擴展:
另外,大牛們還發現,不僅圖像存在這個規律,聲音也存在。他們從未標注的聲音中發現了20種基本的聲音結構,其余的聲音可以由這20種基本結構合成。
分層的思想:
既然這樣,我們可以創建更多的層次:
例子1:
例子2: