1. 程式人生 > >淺析卷積神經網路為何能夠進行特徵提取

淺析卷積神經網路為何能夠進行特徵提取

CNN在分類領域,有著驚人的效果。我們今天來聊聊為何CNN能有這麼大的能力。

在此之前,我們先了解兩個數學概念,特徵值和特徵向量。

這裡先放3個傳送門:

前兩個是有關特徵值和特徵向量的部落格,最後一個是一個求解特徵值和特徵向量的部落格。OK,進入正題,這裡引用以上部落格的資料和例項。

這裡引用部落格的一句話:

也就是說,我們有一個方陣(n x n),總能找到一些向量,這個矩陣跟這些向量的作用效果,只是對這個向量造成了拉伸的作用,換句話說,矩陣的作用跟一個係數的作用是等價的。也就是如下這個式子:

那為什麼要做這一步操作呢。來,咱們繼續引用部落格的例子,因為他實在是講得太好了,看如下幾個圖:

我們換個通俗易懂的說法。假設我們要判斷一個人是男的還是女的,第一反應可能是“頭髮”,其次是“聲音”,或者“衣著”之類的,一般通過以上3個特徵就能非常直觀地判斷出來是男的還是女的。

但是呢,出題人A特別壞,出題人A說:這個人,他有一雙明亮的大眼睛,有一頭烏黑的頭髮,喜歡出入酒吧,一般十點鐘上班,聲音比較細膩,走路比較急,還有,喜歡吃零食,喜歡穿淺色衣服。

出題人B比較好,出題人B說:他頭髮比較長,說話比較溫柔,穿的比較陽光,聲線比較細。

我們一聽B的說法,就很直觀地覺得這個人八九不離十是位女生,而從A的判斷中,我們還是模稜兩個。這個就涉及到資訊量的問題。A給的特徵非常多,資訊量很大,但是。。。似乎沒什麼用,而B給的特徵少,但是基本足夠了。就像圖1,他的資料分佈特別散漫,而圖3的分佈相對集中,是一個道理的。相對於資訊量大的特徵,我們去挑選特徵、做出判斷是非常困難的。

所以!!!我們就需要想辦法對特徵做特徵提取。也就是說,提取主要的、關鍵的特徵就夠了!!!而這個提取的方法就是:特徵向量!!!

咱們繼續以橢圓舉例:

以上幾個圖,全都可以分類為橢圓,但是因為形狀各異,導致資料也是不對稱的,尤其體現在rgb值上(當然在對影象的資料處理,還有很多,比如subtraction,BN),其次體現在在各個軸的投影。但是,如果如果我們可以對它做旋轉,縮放,平移等操作,變成如下的圖:

那,是不是就非常好辨認了,而且資料也非常集中,至少在某一維度上。於是乎,我們就需要去找這麼一個特徵向量。卷積的過程,就是通過反向傳播,無限去擬合這麼一個非常非常非常逼近的特徵向量集(這個特徵向量集其實就是咱們的卷積核)!!!!為什麼是特徵向量集呢(其實單個特徵向量(一個列向量或者行向量)也行)?因為一個列向量,我們只能在一種維度做變換,多個列向量,就意味著多個維度聯合進行特徵提取或者曰之為特徵對映。

來,總結一下。卷積核≈特徵向量,反向傳播≈求解特徵向量集,我們的圖片≈矩陣A,注意,這些概念不是等價的,只是用易懂的方式去解釋這些原理。

卷積神經網路中,第一步一般用卷積核去提取特徵,這些初始化的卷積核會在反向傳播的過程中,在迭代中被一次又一次的更新,無限地逼近我們的真實解。其實本質沒有對影象矩陣求解,而是初始化了一個符合某種分佈的特徵向量集,然後在反向傳播中無限更新這個特徵集,讓它能無限逼近數學中的那個概念上的特徵向量,以致於我們能用特徵向量的數學方法對矩陣進行特徵提取。