日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

深度学习中的卷积网络简介

發(fā)布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习中的卷积网络简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????????卷積網絡(convolutional network)也叫做卷積神經網絡(convolutional neural network, CNN),是一種專門用來處理具有類似網格結構的數(shù)據(jù)的神經網絡。例如時間序列數(shù)據(jù)(可以認為是在時間軸上有規(guī)律地采樣形成的一維網格)和圖像數(shù)據(jù)(可以看作是二維的像素網格)。卷積網絡在諸多應用領域都表現(xiàn)優(yōu)異。”卷積神經網絡”一詞表明該網絡使用了卷積(convolution)這種數(shù)學運算。卷積是一種特殊的線性運算。卷積網絡是指那些至少在網絡的一層中使用卷積運算來替代一般的矩陣乘法運算的神經網絡。

????????通常來說,卷積神經網絡中用到的卷積運算和其他領域(例如工程領域以及純數(shù)學領域)中的定義并不完全一致。卷積網絡是神經科學原理影響深度學習的典型代表。

????????1. 卷積運算

????????在通常形式中,卷積是對兩個實變函數(shù)的一種數(shù)學運算。卷積運算通常用星號表示。在卷積網絡的術語中,卷積的第一個參數(shù)通常叫做輸入,第二個參數(shù)叫做核函數(shù)。輸出有時被稱作特征映射(feature map)。在機器學習的應用中,輸入通常是多維數(shù)組的數(shù)據(jù),而核通常是由學習算法優(yōu)化得到的多維數(shù)組的參數(shù)。我們把這些多維數(shù)組叫做張量。因為在輸入與核中的每一個元素都必須明確地分開存儲,我們通常假設在存儲了數(shù)值的有限點集以外,這些函數(shù)的值都為零。這意味著在實際操作中,我們可以通過對有限個數(shù)組元素的求和來實現(xiàn)無限求和。我們經常一次在多個維度上進行卷積運算。卷積是可交換的(commutative)。

????????卷積運算可交換性的出現(xiàn)是因為我們將核相對輸入進行了翻轉(flip),從m增大的角度來看,輸入的索引在增大,但是核的索引在減小。我們將核翻轉的唯一目是實現(xiàn)可交換性。盡管可交換性在證明時很有用,但在神經網絡的應用中卻不是一個重要的性質。與之不同的是,許多神經網絡庫會實現(xiàn)一個相關的函數(shù),稱為互相關函數(shù)(cross-correlation),和卷積運算幾乎一樣但是并沒有對核進行翻轉,如下式,把一張二維的圖像I作為輸入,使用一個二維的核K:

????? ?許多機器學習的庫實現(xiàn)的是互相關函數(shù)但是稱之為卷積。在機器學習中,學習算法會在核合適的位置學得恰當?shù)闹?#xff0c;所以一個基于核翻轉的卷積運算的學習算法所學得的核,是對未進行翻轉的算法學得的核的翻轉。單獨使用卷積運算在機器學習中是很少見的,卷積經常與其它的函數(shù)一起使用,無論卷積運算是否對它的核進行了翻轉,這些函數(shù)的組合通常是不可交換的。我們限制只對核完全處在圖像中的位置進行輸出,在一些上下文中稱為”有效”卷積。

????????2. 動機

????????卷積運算通過三個重要的思想來幫助改進機器學習系統(tǒng):稀疏交互(sparse interactions)、參數(shù)共享(parameter sharing)、等變表示(equivariant representations)。另外,卷積提供了一種處理大小可變的輸入的方法。

????????傳統(tǒng)的神經網絡使用矩陣乘法來建立輸入與輸出的連接關系。其中,參數(shù)矩陣中每一個單獨的參數(shù)都描述了一個輸入單元與一個輸出單元間的交互。這意味著每一個輸出單元與每一個輸入單元都產生交互。然而,卷積網絡具有稀疏交互(sparse interactions)(也叫做稀疏連接(sparse connectivity)或者稀疏權重(sparse weights))的特征。這是使核的大小遠小于輸入的大小來達到的。舉個例子,當處理一張圖像時,輸入的圖像可能包含成千上萬個像素點,但是我們可以通過只占用幾十到上百個像素點的核來檢測一些小的有意義的特征,例如圖像的邊緣。這意味著我們需要存儲的參數(shù)更少,不僅減少了模型的存儲需求,而且提高了它的統(tǒng)計效率。這也意味著為了得到輸出我們只需要更少的計算量。這些效率上的提高往往是很顯著的。如果有m個輸入和n個輸出,那么矩陣乘法需要m*n 個參數(shù)并且相應算法的時間復雜度為O(m*n)(對于每一個例子)。如果我們限制每一個輸出擁有的連接數(shù)為k,那么稀疏的連接方法只需要k *n個參數(shù)以及O(k*n)的運行時間。在很多實際應用中,只需保持k比m小幾個數(shù)量級,就能在機器學習的任務中取得好的表現(xiàn)。在深度卷積網絡中,處在網絡深層的單元可能與絕大部分輸入是間接交互的,這允許網絡可以通過只描述稀疏交互的基石來高效地描述多個變量的復雜交互。

????????參數(shù)共享(parameter sharing)是指在一個模型的多個函數(shù)中使用相同的參數(shù)。在傳統(tǒng)的神經網絡中,當計算一層的輸出時,權重矩陣的每一個元素只使用一次,當它乘以輸入的一個元素后就再也不會用到了。作為參數(shù)共享的同義詞,我們可以說一個網絡含有綁定的權重(tiedweights),因為用于一個輸入的權重也會被綁定在其他的權重上。在卷積神經網絡中,核的每一個元素都作用在輸入的每一位置上(是否考慮邊界像素取決于對邊界決策的設計)。卷積運算中的參數(shù)共享保證了我們只需要學習一個參數(shù)集合,而不是對于每一位置都需要學習一個單獨的參數(shù)集合。這雖然沒有改變前向傳播的運行時間(仍然是O(k*n)),但它顯著地把模型的存儲需求降低至k個參數(shù),并且k通常要比m小很多個數(shù)量級。因為m和n通常有著大致相同的大小,k在實際中相對于m*n 是很小的。因此,卷積在存儲需求和統(tǒng)計效率方面極大地優(yōu)于稠密矩陣的乘法運算。

????????對于卷積,參數(shù)共享的特殊形式使得神經網絡層具有對平移等變(equivariance)的性質。如果一個函數(shù)滿足輸入改變,輸出也以同樣的方式改變這一性質,我們就說它是等變(equivariant)的。特別地,如果函數(shù)f(x)與g(x)滿足f(g(x)) = g(f(x)),我們就說f(x)對于變換g具有等變性。對于卷積來說,如果令g是輸入的任意平移函數(shù),那么卷積函數(shù)對于g具有等變性。舉個例子,令I表示圖像在整數(shù)坐標上的亮度函數(shù),g表示圖像函數(shù)的變換函數(shù)(把一個圖像函數(shù)映射到另一個圖像函數(shù)的函數(shù))使得I’= g(I),其中圖像函數(shù)I’滿足I’(x, y) = I(x-1,y)。這個函數(shù)把I中的每個像素向右移動一個單位。如果我們先對I進行這種變換然后進行卷積操作所得到的結果,與先對I進行卷積然后再對輸出使用平移函數(shù)g得到的結果是一樣的。當處理時間序列數(shù)據(jù)時,這意味著通過卷積可以得到一個由輸入中出現(xiàn)不同特征的時刻所組成的時間軸。如果我們把輸入中的一個事件向后延時,在輸出中仍然會有完全相同的表示,只是時間延后了。圖像與之類似,卷積產生了一個2維映射來表明某些特征在輸入中出現(xiàn)的位置。如果我們移動輸入中的對象,它的表示也在輸出中移動同樣的量。當處理多個輸入位置時,一些作用在鄰居像素的函數(shù)是很有用的。例如在處理圖像時,在卷積網絡的第一層進行圖像的邊緣檢測是很有用的。相同的邊緣或多或少地散落在圖像的各處,所以應當對整個圖像進行參數(shù)共享。但在某些情況下,我們并不希望對整幅圖進行參數(shù)共享。例如,在處理已經通過剪裁而使其居中的人臉圖像時,我們可能想要提取不同位置上的不同特征(處理人臉上部的部分網絡需要去搜尋眉毛,處理人臉下部的部分網絡就需要去搜尋下巴了)。

????????卷積對其他的一些變換并不是天然等變的,例如對于圖像的放縮或者旋轉變換,需要其他的一些機制來處理這些變換。最后,一些不能被傳統(tǒng)的由(固定大小的)矩陣乘法定義的神經網絡處理的特殊數(shù)據(jù),可能通過卷積神經網絡來處理。

????????3. 池化

????????卷積網絡中一個典型層包含三級。在第一級中,這一層并行地計算多個卷積產生一組線性激活響應。在第二級中,每一個線性激活響應將會通過一個非線性的激活函數(shù),例如整流線性激活函數(shù)。這一級有時也被稱為探測級(detector stage)。在第三級中,我們使用池化函數(shù)(pooling function)來進一步調整這一層的輸出

????????池化函數(shù)使用某一位置的相鄰輸出的總體統(tǒng)計特征來代替網絡在該位置的輸出。例如, 最大池化(max pooling)函數(shù)給出相鄰矩形區(qū)域內的最大值。其他常用的池化函數(shù)包括相鄰矩形區(qū)域內的平均值、L2范數(shù)以及基于據(jù)中心像素距離的加權平均函數(shù)。不管采用什么樣的池化函數(shù),當輸入作出少量平移時,池化能夠幫助輸入的表示近似不變(invariant)對于平移的不變性是指當我們對輸入進行少量平移時,經過池化函數(shù)后的大多數(shù)輸出并不會發(fā)生改變。局部平移不變性是一個很有用的性質,尤其是當我們關心某個特征是否出現(xiàn)而不關心它出現(xiàn)的具體位置時。例如,當判定一張圖像中是否包含人臉時,我們并不需要知道眼睛的精確像素位置,我們只需要知道有一只眼睛在臉的左邊,有一只在右邊就行了。但在一些其他領域,保存特征的具體位置卻很重要。例如當我們想要尋找一個由兩條邊相交而成的拐角時,我們就需要很好地保存邊的位置來判定它們是否相交。

????????使用池化可以看作是增加了一個無限強的先驗:這一層學得的函數(shù)必須具有對少量平移的不變性。當這個假設成立時,池化可以極大地提高網絡的統(tǒng)計效率。因為池化綜合了全部鄰居的反饋,這使得池化單元少于探測單元成為可能,我們可以通過綜合池化區(qū)域的k個像素的統(tǒng)計特征而不是單個像素來實現(xiàn)。

????????一些理論工作對于在不同情況下應當使用哪種池化函數(shù)給出了一些指導。將特征一起動態(tài)地池化也是可行的,例如,對于感興趣特征的位置進行聚類算法。這種方法對于每幅圖像產生一個不同的池化區(qū)域集合。另一種方法是先學習一個單獨的池化結構,再應用到全部的圖像中。

????????4. 卷積與池化作為一種無限強的先驗

????????先驗被認為是強或者弱取決于先驗中概率密度的集中程度。弱先驗具有較高的熵值,例如方差很大的高斯分布。這樣的先驗允許數(shù)據(jù)對于參數(shù)的改變具有或多或少的自由性。強先驗具有較低的熵值,例如方差很小的高斯分布。這樣的先驗在決定參數(shù)最終取值時起著更加積極的作用。一個無限強的先驗需要對一些參數(shù)的概率置零并且完全禁止對這些參數(shù)賦值,無論數(shù)據(jù)對于這些參數(shù)的值給出了多大的支持。

????????我們可以把卷積網絡類比成全連接網絡,但對于這個全連接網絡的權重有一個無限強的先驗。這個無限強的先驗是說一個隱藏單元的權重必須和它鄰居的權重相同,但可以在空間上移動。這個先驗也要求除了那些處在隱藏單元的小的空間連續(xù)的接受域內的權重以外,其余的權重都為零。總之,我們可以把卷積的使用當作是對網絡中一層的參數(shù)引入了一個無限強的先驗概率分布。這個先驗說明了該層應該學得的函數(shù)只包含局部連接關系并且對平移具有等變性。類似的,使用池化也是一個無限強的先驗:每一個單元都具有對少量平移的不變性。當然,把卷積神經網絡當作一個具有無限強先驗的全連接網絡來實現(xiàn)會導致極大的計算浪費。但把卷積神經網絡想成具有無限強先驗的全連接網絡可以幫助我們更好地洞察卷積神經網絡是如何工作的。

????????其中一個關鍵的洞察是卷積和池化可能導致欠擬合。與任何其他先驗類似,卷積和池化只有當先驗的假設合理且正確時才有用。如果一項任務依賴于保存精確的空間信息,那么在所有的特征上使用池化將會增大訓練誤差。一些卷積網絡結構為了既獲得具有較高不變性的特征又獲得當平移不變性不合理時不會導致欠擬合的特征,被設計成在一些通道上使用池化而在另一些通道上不使用。當一項任務涉及到要對輸入中相隔較遠的信息進行合并時,那么卷積所利用的先驗可能就不正確了。

????????另一個關鍵洞察是當我們比較卷積模型的統(tǒng)計學習表現(xiàn)時,只能以基準中的其他卷積模型作為比較的對象。其他不使用卷積的模型即使我們把圖像中的所有像素點都置換后依然有可能進行學習。對于許多圖像數(shù)據(jù)集,還有一些分別的基準,有些是針對那些具有置換不變性(permutation invariant)并且必須通過學習發(fā)現(xiàn)拓撲結構的模型,還有一些是針對模型設計者將空間關系的知識植入了它們的模型。

????????5. 基本卷積函數(shù)的變體

????????當在神經網絡的上下文中討論卷積時,我們通常不是特指數(shù)學文獻中使用的那種標準的離散卷積運算。實際應用中的函數(shù)略有不同。

????????首先,當我們提到神經網絡中的卷積時,我們通常是指由多個并行卷積組成的運算。這是因為具有單個核的卷積只能提取一種類型的特征,盡管它作用在多個空間位置上。我們通常希望網絡的每一層能夠在多個位置提取多種類型的特征。

????????另外,輸入通常也不僅僅是實值的網格,而是由一系列觀測數(shù)據(jù)的向量構成的網格。例如,一幅彩色圖像在每一個像素點都會有紅綠藍三種顏色的亮度。在多層的卷積網絡中,第二層的輸入是第一層的輸出,通常在每個位置包含多個不同卷積的輸出。當處理圖像時,我們通常把卷積的輸入輸出都看作是3維的張量,其中一個索引用于標明不同的通道(例如紅綠藍),另外兩個索引標明在每個通道上的空間坐標。軟件實現(xiàn)通常使用批處理模式,所以實際上會使用4維的張量,第四維索引用于標明批處理中不同的實例。

????????因為卷積網絡通常使用多通道的卷積,所以即使使用了核翻轉,也不一定保證網絡的線性運算是可交換的。只有當其中的每個運算的輸出和輸入具有相同的通道數(shù)時,這些多通道的運算才是可交換的。

????????我們有時會希望跳過核中的一些位置來降低計算的開銷(相應的代價是提取特征沒有先前那么好了)。我們可以把這一過程看作是對全卷積函數(shù)輸出的下采樣(downsampling)。如果我們只想在輸出的每個方向上每間隔s個像素進行采樣。我們把s稱為下采樣卷積的步幅(stride)。當然也可以對每個移動方向定義不同的步幅

????????在任何卷積網絡的實現(xiàn)中都有一個重要性質,那就是能夠隱含地對輸入V用零進行填充(pad)使得它加寬。如果沒有這個性質,表示的寬度在每一層就會縮減,縮減的幅度是比核少一個像素這么多。對輸入進行零填充允許我們對核的寬度和輸出的大小進行獨立的控制。如果沒有零填充,我們就被迫面臨二選一的局面,要么選擇網絡空間寬度的快速縮減,要么選擇一個小型的核----這兩種情境都會極大得限制網絡的表示能力。

????????有三種零填充設定的情況值得注意。第一種是無論怎樣都不使用零填充的極端情況,并且卷積核只允許訪問那些圖像中能夠完全包含整個核的位置。在MATLAB的術語中,這稱為有效(valid)卷積。在這種情況下,輸出的所有像素都是輸入中相同數(shù)量像素的函數(shù),這使得輸出像素的表示更加規(guī)范。然而,輸出的大小在每一層都會縮減。如果輸入的圖像寬度是m,核的寬度是k,那么輸出的寬度就會變成m-k+1。如果卷積核非常大的話縮減率會非常顯著。因為縮減數(shù)大于0,這限制了網絡中能夠包含的卷積層的層數(shù)。當層數(shù)增加時,網絡的空間維度最終會縮減到1*1,這種情況下增加的層就不可能進行有意義的卷積了。第二種特殊的情況是只進行足夠的零填充來保持輸出和輸入具有相同的大小。在MATLAB的術語中,這稱為相同(same)卷積。在這種情況下,只要硬件支持,網絡就能包含任意多的卷積層,這是因為卷積運算不改變下一層的結構。然而,輸入像素中靠近邊界的部分相比于中間部分對于輸出像素的影響更小。這可能會導致邊界像素存在一定程度的欠表示。這使得第三種極端情況產生了,在MATLAB中稱為全(full)卷積。它進行了足夠多的零填充使得每個像素在每個方向上恰好被訪問了k次,最終輸出圖像的寬度為m+k -1。在這種情況下,輸出像素中靠近邊界的部分相比于中間部分是更少像素的函數(shù)。這將導致學得一個在卷積特征映射的所有位置都表現(xiàn)不錯的單核更為困難。通常零填充的最優(yōu)數(shù)量(對于測試集的分類正確率)處于”有效卷積”和”相同卷積”之間的某個位置。

????????在一些情況下,我們并不是真的想使用卷積,而是想用一些局部連接的網絡層。在這種情況下,我們的多層感知機對應的鄰接矩陣是相同的,但每一個連接都有它自己的權重。這有時也被稱為非共享卷積(unsharedconvolution),因為它和具有一個小核的離散卷積運算很像,但并不橫跨位置來共享參數(shù)。當我們知道每一個特征都是一小塊空間的函數(shù)并且相同的特征不會出現(xiàn)在所有的空間上時,局部連接層是很有用的。例如,如果我們想要辨別一張圖片是否是人臉圖像時,我們只需要去尋找嘴是否在圖像下半部分即可。

????????平鋪卷積(tiled convolution)對卷積層和局部連接層進行了折衷。這里并不是對每一個空間位置的權重集合進行學習,我們學習一組核使得當我們在空間移動時它們可以循環(huán)利用。這意味著在近鄰的位置上擁有不同的過濾器,就像局部連接層一樣,但是對于這些參數(shù)的存儲需求僅僅會增長常數(shù)倍,這個常數(shù)就是核的集合的大小,而不是整個輸出的特征映射的大小。

????????這三種運算----卷積、從輸出到權重的反向傳播和從輸出到輸入的反向傳播----對于訓練任意深度的前饋卷積網絡,以及訓練帶有(基于卷積的轉置的)重構函數(shù)的卷積網絡,這三種運算都足以計算它們所需的所有梯度。對于完全一般的多維、多樣例情況下的公式,完整的推導可以參考Goodfellow。

????????一般來說,在卷積層從輸入到輸出的變換中我們不僅僅只用線性運算。我們一般也會在進行非線性運算前,對每個輸出加入一些偏置項。這樣就產生了如何在偏置項中共享參數(shù)的問題。對于局部連接層,很自然地對每個單元都給定它特有的偏置,對于平鋪卷積,也很自然地用與核一樣的平鋪模式來共享參數(shù)。對于卷積層來說,通常的做法是在輸出的每一個通道上都設置一個偏置,這個偏置在每個卷積映射的所有位置上共享。然而,如果輸入是已知的固定大小,也可以在輸出映射的每個位置學習一個單獨的偏置。分離這些偏置可能會稍稍降低模型的統(tǒng)計效率,但同時也允許模型來校正圖像中不同位置的統(tǒng)計差異。例如,當使用隱含的零填充時,圖像邊緣的探測單元接收到較少的輸入,因此需要較大的偏置

????????6. 結構化輸出:卷積神經網絡可以用于輸出高維的結構化對象,而不僅僅是預測分類任務的類標簽或回歸任務的實數(shù)值。通常這個對象只是一個張量,由標準卷積層產生。

????????7. 數(shù)據(jù)類型:卷積網絡使用的數(shù)據(jù)通常包含多個通道,每個通道是時間上或空間中某一點的不同觀測量。

????????注意,使用卷積處理可變尺寸的輸入,僅對輸入是因為包含對同種事物的不同量的觀察(時間上不同長度的記錄,空間上不同寬度的觀察等)而導致的尺寸變化這種情況才有意義。如果輸入是因為它可以選擇性地包括不同種類的觀察而具有可變尺寸,使用卷積是不合理的。例如,如果我們正在處理大學申請,并且我們的特征包括成績等級和標準化測試分數(shù),但不是每個申請人都進行了標準化測試,則使用相同的權重來對成績特征和測試分數(shù)特征進行卷積是沒有意義的。

????????8. 高效的卷積算法

????????9. 隨機或無監(jiān)督的特征

????????通常,卷積網絡訓練中最昂貴的部分是學習特征。輸出層的計算代價通常相對不高,因為在通過若干層池化之后作為該層輸入的特征的數(shù)量較少。當使用梯度下降執(zhí)行監(jiān)督訓練時,每步梯度計算需要完整地運行整個網絡的前向傳播和反向傳播。減少卷積網絡訓練成本的一種方式是使用那些不是由監(jiān)督方式訓練得到的特征。

????????有三種基本策略可以不通過監(jiān)督訓練而得到卷積核。其中一種是簡單地隨機初始化它們。另一種是手動設計它們,例如設置每個核在一個特定的方向或尺度來檢測邊緣。最后,可以使用無監(jiān)督的標準來學習核。使用無監(jiān)督的標準來學習特征,使得它們能夠與位于網絡結構頂層的分類層相互獨立地確定。然后只需提取一次全部訓練集的特征,構造用于最后一層的新訓練集。

????????隨機過濾器經常在卷積網絡中表現(xiàn)得出乎意料得好。Saxe說明,由卷積和隨后的池化組成的層,當賦予隨機權重時,自然地變得具有頻率選擇性和平移不變性。他們認為這提供了一種廉價的方法來選擇卷積網絡的結構:首先通過僅訓練最后一層來評估幾個卷積網絡結構的性能,然后選擇最好的結構并使用更昂貴的方法來訓練整個網絡。

????????一個中間方法是學習特征,但是使用那種不需要在每個梯度計算步驟中都進行完整的前向和反向傳播的方法。與多層感知機一樣,我們使用貪心逐層預訓練,單獨訓練第一層,然后一次性地從第一層提取所有特征,之后用那些特征單獨訓練第二層,以此類推。大多數(shù)卷積網絡以純粹監(jiān)督的方式訓練,在每次訓練迭代中使用通過整個網絡的完整的前向和反向傳播。

????????10.??卷積網絡的神經科學基礎

????? ? 11. 卷積網絡與深度學習的歷史

????? ? 以上內容摘自:?《深度學習中文版》

????? ? GitHub:?https://github.com/fengbingchun/NN_Test?

總結

以上是生活随笔為你收集整理的深度学习中的卷积网络简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。