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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

AI:IPPR的模式生成-CNN模块学习/训练方式(基本结构)

發布時間:2023/12/31 ChatGpt 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AI:IPPR的模式生成-CNN模块学习/训练方式(基本结构) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:
???? ?? 一個完備的模式識別系統,必然包含一個模式識別模型,此外還要附加一個評價模型,以及為了構建識別模型而構建的學習模型,并選擇在學習模型中使用的學習方法。

??? ?? 表示(Representation) : ?? 一個分類器必須用計算機可以處理的某種形式語言來表示。反過來講,為模式識別模型選擇一種表示,就意味選擇一個特定的分類器集合。學習器可能學出的分類器只能在這個集合中。這個集合被稱為學習器的假設空間(hypothesis space)。如果某個分類器不在該空間中,它就不可能被該學習器學到。與此相關的一個問題是如何表示輸入,即使用哪些特征,本文稍后介紹。

??? ?? 評價(Evaluation): ?????? 我們需要一個評價函數(亦稱為目標函數或打分函數)來判斷分類器的優劣。機器學習算法內部使用的評價函數和我們希望分類器進行優化的外部評價函數有所不同。這是為了便于優化和最終評價。

????? 學習/訓練模型(Learning): ????? 可表示的模式識別模型,若想得到最優結果,也應該是可學習的。我們需要一個構建模式識別模型的方法,即學習/訓練模型。用于構建學習出模式識別模型。

????? 優化(Optimization)-學習方法?? :????? 最后,我們需要一個搜索方法,能夠在假設空間中找到評價函數得分最高的那個分類器。

????? 機器學習模型不僅要求模型是可表示的,而且是可學習的。傳統方法要求可以通過明確的函數范疇的子集合來表示模型,且一定能根據函數本身獲得一般的函數參數優化方式,即學習方法。

????? 對于預先選擇的一個模式識別表示方法,會有配套的整個模式識別系統。一旦選定某個分類器,則應選用對應的訓練模型,使用適合的學習方法,并使用相應的評價方法,逐步優化模型到最優。參考文章:PAC機器學習理論:機器學習那些事?????????

????? 參考文章:模式識別兩種方法:知識和數據??????

????

模式識別的專家系統

? ?? ?? 模式識別的傳統意義的專家系統,是由人類專家構建知識,使用謂詞邏輯,構建的超大型知識圖譜,并由已知圖譜推導直至遍歷路徑和節點。專家問題的既然是人類專家獲取的知識,必然有其粒度劃分范圍的限制,在某些情況下,推演可能會導致矛盾:不同的路徑會產生矛盾-相反的結果。或者粒度較大時,問題空間不能被遍歷,導致無法解析。

??????? 風熱和風寒的癥狀區別是什么?專家根據個人經驗列出一個表格,給出什么癥狀是風熱什么是風寒,以至于以后什么癥狀出現,根據推理規則推理出風熱還是風寒,規則是明確的,準確度取決于粒度。

??????? 專家系統出問題的根源在于粒度,若不到原子層,定義域集合元素的粒度再小規則也是一個非確定性規則,即概率規則。這就引出了,使用概率規則的模式識別方法—機器學習方法。

模式識別的機器學習方法

??? ? ? 機器學習系統是一個專家系統,與傳統專家系統的區別在于規則構建的方式。傳統機器學習由專家構建規則,而機器學習系統由人類專家設置特定邊界或等價形式,由數據來構建規則。比如,一個醫療專家系統給出了整個表象的陳述(知識節點),并構建出詳細邏輯關系(推理路徑-因果關系),而機器學習系統給出知識的邊界,設定或不設定映射結構,由數據來構建出邏輯關系。

??? ? ? 風熱和風寒的區別是什么?機器學習會找很多人給標注一下,那些癥狀是風熱,那些是風寒,然后設定一個樣本邊界或者映射限制,使用預測-反饋的方法,反復調整推理,構建推理路徑的具體參數。準確度取決于函數的參數密度。

機器學習方法的判別模型

?? ? ? ML方法劃分出示例學習和非示例學習,對應了監督學習和非監督學習。示例學習需要給出示例,即人工標記,根據已知關系得到規則,叫做歸納,而根據已知關系推到未知關系,叫做演繹。示例學習根據規則的表述形式不同,又劃分為弱學習模型和強學習模型。弱學習模型一般直接對應了近鄰方法,相似即相近,此種方法一般進行系統判別時需要一定程度的遍歷,此種方法有KNN,決策樹模型等;強學習模型把系統描述為可遍歷系統的等價形式,以避免判別時必須的遍歷過程。

機器學習中的歸納方式

? ? ??? 根據粒度進行劃分,劃分的規則即為歸納方式。

? ? ? ? ..........................

模式映射的形成-監督訓練

??? ?? 參數化的函數映射,必須有一個復合條件的最優形式,在固定模型里面表現為最優參數,模型參數調優使用監督訓練的方法。

Bayes方法

?? ? ?? 貝葉斯方法是所見即所得的直觀描述形式,統計樣本的后驗概率,根據條件概率來推到先驗概率的一般形式,bayes方法的錯誤率是泛用的,是專家歸納知識的錯誤極限,沒有任何實際意義。

??????? Markov方法是一種多層貝葉斯網絡的方法..............

參數模型方法的訓練方式——殘差反饋/反向傳播

????? ? 歸納方法的規則終點表述為最優映射,描述為最優參數。通用方法是計算預測標簽 f(x)與 標定標簽Yi的差值 ,獲取差值,反饋調整模型參數。常用的ML算法的殘差反饋—模型優化方法如下圖,為一層反向傳播的各種表現形式。

?????

???? ?? 支持向量機把殘差問題再次轉化為近鄰查找問題,使用二維搜索尋找最優支持向量之間的超平面,其中SMO方法直接使用了輪換柱搜索方法,并用支持向量表示模式函數。邏輯斯特遞歸等線性判別方法把函數優化問題轉化為一個殘差最小化問題,即最小二乘問題,可通過解析方程的方法得到解析最優參數。

??????? 貝葉斯網絡和CRF方法的訓練方法為使用遍歷搜索的方法,尋找最大概率路徑,有有名的前向后向算法、維比特算法。

??????? 感知器算法作為一類簡單的線性分類器,使用了近似的反向傳播算法。以訓練樣本被錯分的程度為目標函數,訓練中每次出現錯誤時,便使權系數朝著目標函數相對于權系數負梯度的方向更新,直到目標函數取得極小值即沒有訓練樣本被錯分,即梯度下降法的核心思想。

???? ?? 反向傳播:預測函數與標簽差值反饋到權系數,對權系數進行更新,是為反向傳播。不斷調整參數,直至預測函數誤差最小或者達到學習準則約束,誤差不再反傳。

?

CNN網絡參數反傳

?????? ? CNN方法使用CNN結構,使用卷積核的概念,使用廣泛的數據調整卷積核的參數,訓練得到卷積核,來完成適用于特定數據集的特征提取。理論上效果應該超過廣泛使用的特征提取方法比如SIFT和HOG特征,而事實上對于大量數據也是如此。那么CNN的進行逐層訓練,也有相應的殘差反向傳播的方法。

? ? ? ? ? ........................

?

一、SoftMax函數層反傳參數更新

????? ? 學習頁面:http://ufldl.stanford.edu/wiki/index.php/Softmax???????

??????? 參考文章:詳解SoftMax函數極其求導過程???????????????????????

??????? softmax函數作為最后一層輸出層,也是第一層反傳層,若使用交叉熵作為損失函數,有較為巧妙的參數更新方式。

????? ? 計算模型:

???????

?????? 反傳模型:

? ? ??

?????? ? 對任一標記樣本(Xi,yi),若模式函數映射為(Xi,f(x)')

??????? 假設我們有一個數組,V,Vi表示V中的第i個元素,那么這個元素的softmax值就是????

??????? 選用損失函數為交叉熵函數形式如下:,交叉熵是用來衡量我們的預測的低效性。

??????? 其中y代表我們的真實值,a代表我們softmax求出的值。j是w的函數,所以整個代價函數是w的函數,要想求最小就要對w求偏導,利用鏈式求導法則推導過程看這里求導。i代表的是輸出結點的標號!

??????? 這里認為訓練數據的真實輸出為第j個為1,其它均為0!那么Loss就變成了,累和已經去掉

??????? 其中,那么形式變為

?? ? ?? 最后更新規則就是:
?????????????? 當上層節點p=類別節點j時, w=w?1
?????????? ? ? 否則 ,?w=w

??????? 這樣,每個神經的權值向量的更新要么減1,要么不變,就不用受激活函數的制約了。

???? ?? 舉個例子,通過若干層的計算,最后得到的某個訓練樣本的向量的分數是[ 2, 3, 4 ], 那么經過softmax函數作用后概率分別就是=[,,]? =? [0.0903,0.2447,0.665], 如果這個樣本正確的分類是第二個的話,那么計算出來的偏導就是[0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665],是不是非常簡單!!然后再根據這個進行back propagation就可以了。

?

二、ANN的多層反向傳播——全連接層BP算法

? ? ? ? ANN一般使用非線性激活函數構建多層感知器模型,進而可以理論上擬合任意的非線性映射。

?????? 多層感知機的監督式訓練的算法為反向傳播算法。基本的流程如下:

  1、將訓練樣本通過神經網絡進行前向傳播計算。

  2、計算輸出誤差,常用均方差:

? ? ? ? ?

   其中?t?是目標值,?y?是實際的神經網絡計算輸出。其它的誤差計算方法也可以,但MSE(均方差)通常是一種較好的選擇。

? ? ? ? ? ? ? ? ?

  3、網絡誤差通過 隨機梯度下降/梯度下降法 的方法來尋找最小值。

  梯度下降很常用,但在神經網絡中,輸入參數是一個訓練誤差的曲線。每個權重的最佳值應該對應誤差曲線中的全局最小值(上圖中的?global minimum)。在訓練過程中,權重以特定的步幅改變(在每個樣本或每小組樣本訓練完成后)以找到全局最小值,但這可不容易,訓練通常會結束在局部最小值上(上圖中的local minima)。如例子中的,如果當前權重值為0.6,那么要向0.4方向移動。

   這個圖表示的是最簡單的情況,誤差只依賴于單個參數。但是,網絡誤差依賴于每一個網絡權重,誤差函數非常、非常復雜。

   好消息是反向傳播算法提供了一種通過利用輸出誤差來修正兩個神經元之間權重的方法。關系本身十分復雜,但對于一個給定結點的權重修正按如下方法(簡單):

      

   其中?E?是輸出誤差,?w_i?是輸入?i?的權重。

   實質上這么做的目的是利用權重?i來修正梯度的方向。關鍵的地方在于誤差的導數的使用,這可不一定好計算:你怎么樣能給一個大型網絡中隨機一個結點中的隨機一個權重求導數呢?

   答案是:通過反向傳播。誤差的首次計算很簡單(只要對預期值和實際值做差即可),然后通過一種巧妙的方法反向傳回網絡,讓我們有效的在訓練過程中修正權重并(期望)達到一個最小值。

?????? 4. 反傳函數:起初的ANN普遍使用非線性激活函數sigmod函數,

????????

???????? 從?/wi 里面可以分離出sigmod函數的導數?f(x),即 △wi = -a*?f(x)*K,用于前一層的參數更新。

???????? 參考:聊一聊深度學習的激活函數

????????

???????? 圖片來之知乎:??DNN activation function的具體作用是什么?

???????? 對激活函數的導數?f(x)反傳,查看sigmod函數可以看出,在輸入為X>一特定值時,其偏導數接近于0,這便是飽和特性,梯度丟失導致殘差無法反傳用于上一層的參數更新。而ReLU函數沒有飽和特性。且ReLU函數在計算量上小于sigmod函數。目前的2016年2017年,ReLU由于其理論和實驗優勢,一般被用作默認激活函數。

?

三、CNN卷積-池化層誤差反傳——旋轉卷積核

??????? 此段請拜訪上述標題中的原文鏈接...........

??????? 特意提取從卷基層到池化層.......卷積層是CNN特征提取哈希層保持旋轉不變性的根源,通過調整卷積核的參數來實現對圖像塊主方向的確定,反傳時要旋轉卷積核。

? ? ? ? 注意:此處反傳計算輸入的是誤差矩陣;

CNN由卷積層到池化層

??????? 有一個非常關鍵的的步驟就是將某個卷積(Convolve)層的誤差傳到前一層的池化(Pool)層上,方法是:反向傳播的時候要把卷積核旋轉180°,并采用full的形式來進行卷積運算

?????? 因為在CNN中是2D反傳,與傳統神經網絡中的1D反傳有點細節上的不同,下面通過一個簡單的例子來詳細分解一下這個反傳步驟。

? ? ? ?假設在一個CNN網絡中,P代表某個池化層,K代表卷積核,C代表卷基層,首先來看一下前向(feed forward)計算,從一個池化層經過與卷積核(Kernel)的運算得到卷積層:

? ? ? ?將前向計算的步驟進行分解,可以得到以下公式:

? ? ? ?下面根據這個前向計算的步驟來分解出反向傳播的步驟:

? ? ? ?首先要確定誤差傳播的目的地,從deltaC到deltaP,所以先從deltaP1開始分析

? ? ? ?從前面的前向計算過程中可以找出P1參與了C中哪些元素的計算,并且可以根據對應的前向計算得出反向傳播的計算公式:

? ? ? ?依次類推,還有如下公式:

? ? ? ?對于P2

? ? ? ?對于P3

? ? ? ?對于P4

? ? ? ?對于P5

? ? ? ?一直可以推到P9.

? ? ? ?總結這9個反向傳播的公式到一起:

? ? ? ?進一步可以發現,這9個公式可以用如下的卷積過程來實現

? ? ? ? 至此,從計算的細節上解釋了為什么反向傳播的時候要把卷積核旋轉180°,并采用full的形式來進行卷積運算

? ? ? ? (注:上文所說的“卷積”被認為是一種不會180°旋轉第二個因子的的計算過程,實際上matlab中的的conv2(a,b)會自動180°旋轉b,換句話說,在matlab中實現這個步驟的時候不用提前旋轉,留給conv2函數自行旋轉即可)

?

四、綜述DL論文筆記之四-CNN推導和實現

? ?? ?? 以下為全部摘抄,此段請拜訪上述原文鏈接..........

???? ?? 應該參考:DL-CNN的反向傳導和練習??

???? ?? 還有這個大雜燴:DL-DL模型之CNN總結?????????

全連接的反向傳播算法

???????? 典型的CNN中,開始幾層都是卷積和下采樣的交替,然后在最后一些層(靠近輸出層的),都是全連接的一維網絡。這時候我們已經將所有兩維2D的特征maps轉化為全連接的一維網絡的輸入。這樣,當你準備好將最終的2D特征maps輸入到1D網絡中時,一個非常方便的方法就是把所有輸出的特征maps連接成一個長的輸入向量。然后我們回到BP算法的討論。(更詳細的基礎推導可以參考UFLDL中“反向傳導算法”)。

2.1、Feedforward Pass前向傳播

???????? 在下面的推導中,我們采用平方誤差代價函數。我們討論的是多類問題,共c類,共N個訓練樣本。

???????? 這里表示第n個樣本對應的標簽的第k維。表示第n個樣本對應的網絡輸出的第k個輸出。對于多類問題,輸出一般組織為“one-of-c”的形式,也就是只有該輸入對應的類的輸出節點輸出為正,其他類的位或者節點為0或者負數,這個取決于你輸出層的激活函數。sigmoid就是0,tanh就是-1.

???????? 因為在全部訓練集上的誤差只是每個訓練樣本的誤差的總和,所以這里我們先考慮對于一個樣本的BP。對于第n個樣本的誤差,表示為:

????? ? 傳統的全連接神經網絡中,我們需要根據BP規則計算代價函數E關于網絡每一個權值的偏導數。我們用l來表示當前層,那么當前層的輸出可以表示為:

????? ?? 輸出激活函數f(.)可以有很多種,一般是sigmoid函數或者雙曲線正切函數。sigmoid將輸出壓縮到[0, 1],所以最后的輸出平均值一般趨于0。所以如果將我們的訓練數據歸一化為零均值和方差為1,可以在梯度下降的過程中增加收斂性。對于歸一化的數據集來說,雙曲線正切函數也是不錯的選擇。

?

2.2、Backpropagation Pass反向傳播

???????? 反向傳播回來的誤差可以看做是每個神經元的基的靈敏度sensitivities( 靈敏度的意思就是我們的基b變化多少,誤差會變化多少,也就是誤差對基的變化率,也就是導數了),定義如下:(第二個等號是根據求導的鏈式法則得到的)

???????? 因為?u/?b=1,所以?E/?b=?E/?u=δ,也就是說bias基的靈敏度?E/?b=δ和誤差E對一個節點全部輸入u的導數?E/?u是相等的。這個導數就是讓高層誤差反向傳播到底層的神來之筆。反向傳播就是用下面這條關系式:(下面這條式子表達的就是第l層的靈敏度,就是)

?公式(1

???????? 這里的“?”表示每個元素相乘。輸出層的神經元的靈敏度是不一樣的:

?????? 公式1.X

???????? 最后,對每個神經元運用delta(即δ)規則進行權值更新。具體來說就是,對一個給定的神經元,得到它的輸入,然后用這個神經元的delta(即δ)來進行縮放。用向量的形式表述就是,對于第l層,誤差對于該層每一個權值(組合為矩陣)的導數是該層的輸入(等于上一層的輸出)與該層的靈敏度(該層每個神經元的δ組合成一個向量的形式)的叉乘。然后得到的偏導數乘以一個負學習率就是該層的神經元的權值的更新了:

???????????? 公式(2

???????? 對于bias基的更新表達式差不多。實際上,對于每一個權值(W)ij都有一個特定的學習率ηIj。

?

3、Convolutional Neural Networks 卷積神經網絡

3.1、Convolution Layers卷積層

??????? 我們現在關注網絡中卷積層的BP更新。在一個卷積層,上一層的特征maps被一個可學習的卷積核進行卷積,然后通過一個激活函數,就可以得到輸出特征map。每一個輸出map可能是組合卷積多個輸入maps的值:

??????? 這里Mj表示選擇的輸入maps的集合,那么到底選擇哪些輸入maps呢?有選擇一對的或者三個的。但下面我們會討論如何去自動選擇需要組合的特征maps。每一個輸出map會給一個額外的偏置b,但是對于一個特定的輸出map,卷積每個輸入maps的卷積核是不一樣的。

?????? 也就是說,如果輸出特征map j和輸出特征map k都是從輸入map i中卷積求和得到,那么對應的卷積核是不一樣的。

?

3.1.1、Computing the Gradients梯度計算

???????? 我們假定每個卷積層l都會接一個下采樣層l+1。對于BP來說,根據上文我們知道,要想求得層l的每個神經元對應的權值的權值更新,就需要先求層l的每一個神經節點的靈敏度δ(也就是權值更新的公式(2))。為了求這個靈敏度我們就需要先對下一層的節點(連接到當前層l的感興趣節點的第l+1層的節點)的靈敏度求和(得到δl+1),然后乘以這些連接對應的權值(連接第l層感興趣節點和第l+1層節點的權值)W。再乘以當前層l的該神經元節點的輸入u的激活函數f的導數值(也就是那個靈敏度反向傳播的公式(1)的δl的求解),這樣就可以得到當前層l每個神經節點對應的靈敏度δl了。

?????? ? 然而,因為下采樣的存在,采樣層的一個像素(神經元節點)對應的靈敏度δ對應于卷積層(上一層)的輸出map的一塊像素(采樣窗口大小)。因此,層l中的一個map的每個節點只與l+1層中相應map的一個節點連接。

???????? 為了有效計算層l的靈敏度,我們需要上采樣upsample這個下采樣downsample層對應的靈敏度map(特征map中每個像素對應一個靈敏度,所以也組成一個map),這樣才使得這個靈敏度map大小與卷積層的map大小一致,然后再將層l的map的激活值的偏導數與從第l+1層的上采樣得到的靈敏度map逐元素相乘(也就是公式(1)。

?????? ? 在下采樣層map的權值都取一個相同值β,而且是一個常數。所以我們只需要將上一個步驟得到的結果乘以一個β就可以完成第l層靈敏度δ的計算。

????? ? 我們可以對卷積層中每一個特征map j重復相同的計算過程。但很明顯需要匹配相應的子采樣層的map(參考公式(1))

????? ?? up(.)表示一個上采樣操作。如果下采樣的采樣因子是n的話,它簡單的將每個像素水平和垂直方向上拷貝n次。這樣就可以恢復原來的大小了。實際上,這個函數可以用Kronecker乘積來實現:

????????? 好,到這里,對于一個給定的map,我們就可以計算得到其靈敏度map了。然后我們就可以通過簡單的對層l中的靈敏度map中所有節點進行求和快速的計算bias基的梯度了:

????????????公式(3

????? ?? 最后,對卷積核的權值的梯度就可以用BP算法來計算了(公式(2)。另外,很多連接的權值是共享的,因此,對于一個給定的權值,我們需要對所有與該權值有聯系(權值共享的連接)的連接對該點求梯度,然后對這些梯度進行求和,就像上面對bias基的梯度計算一樣:

? ? ??? 這里,是中的在卷積的時候與逐元素相乘的patch,輸出卷積map的(u, v)位置的值是由上一層的(u, v)位置的patch與卷積核k_ij逐元素相乘的結果。

?? ?? ? 咋一看,好像我們需要煞費苦心地記住輸出map(和對應的靈敏度map)每個像素對應于輸入map的哪個patch。但實際上,在Matlab中,可以通過一個代碼就實現。對于上面的公式,可以用Matlab的卷積函數來實現:

???? ?? 我們先對delta靈敏度map進行旋轉,這樣就可以進行互相關計算,而不是卷積(在卷積的數學定義中,特征矩陣(卷積核)在傳遞給conv2時需要先翻轉(flipped)一下。也就是顛倒下特征矩陣的行和列)。然后把輸出反旋轉回來,這樣我們在前向傳播進行卷積的時候,卷積核才是我們想要的方向。

?

3.2、Sub-sampling Layers子采樣層

???????? 對于子采樣層來說,有N個輸入maps,就有N個輸出maps,只是每個輸出map都變小了。

??????? down(.)表示一個下采樣函數。典型的操作一般是對輸入圖像的不同nxn的塊的所有像素進行求和。這樣輸出圖像在兩個維度上都縮小了n倍。每個輸出map都對應一個屬于自己的乘性偏置β和一個加性偏置b。

?

3.2.1、Computing the Gradients梯度計算

???????? 這里最困難的是計算靈敏度map。一旦我們得到這個了,那我們唯一需要更新的偏置參數β和b就可以輕而易舉了(公式(3)。如果下一個卷積層與這個子采樣層是全連接的,那么就可以通過BP來計算子采樣層的靈敏度maps。

???????? 我們需要計算卷積核的梯度,所以我們必須找到輸入map中哪個patch對應輸出map的哪個像素。這里,就是必須找到當前層的靈敏度map中哪個patch對應與下一層的靈敏度map的給定像素,這樣才可以利用公式(1那樣的δ遞推,也就是靈敏度反向傳播回來。另外,需要乘以輸入patch與輸出像素之間連接的權值,這個權值實際上就是卷積核的權值(已旋轉的)。

? ? ?? 在這之前,我們需要先將核旋轉一下,讓卷積函數可以實施互相關計算。另外,我們需要對卷積邊界進行處理,但在Matlab里面,就比較容易處理。Matlab中全卷積會對缺少的輸入像素補0。

?? ? ? 到這里,我們就可以對b和β計算梯度了。首先,加性基b的計算和上面卷積層的一樣,對靈敏度map中所有元素加起來就可以了:

?? ???? 而對于乘性偏置β,因為涉及到了在前向傳播過程中下采樣map的計算,所以我們最好在前向的過程中保存好這些maps,這樣在反向的計算中就不用重新計算了。我們定義:

這樣,對β的梯度就可以用下面的方式計算:

?

3.3、Learning Combinations of Feature Maps學習特征map的組合

???????? 大部分時候,通過卷積多個輸入maps,然后再對這些卷積值求和得到一個輸出map,這樣的效果往往是比較好的。在一些文獻中,一般是人工選擇哪些輸入maps去組合得到一個輸出map。但我們這里嘗試去讓CNN在訓練的過程中學習這些組合,也就是讓網絡自己學習挑選哪些輸入maps來計算得到輸出map才是最好的。我們用αij表示在得到第j個輸出map的其中第i個輸入map的權值或者貢獻。這樣,第j個輸出map可以表示為:

???????? 需要滿足約束:

???????? 這些對變量αij的約束可以通過將變量αij表示為一個組無約束的隱含權值cij的softmax函數來加強。(因為softmax的因變量是自變量的指數函數,他們的變化率會不同)。

???????? 因為對于一個固定的j來說,每組權值cij都是和其他組的權值獨立的,所以為了方面描述,我們把下標j去掉,只考慮一個map的更新,其他map的更新是一樣的過程,只是map的索引j不同而已。

???????? Softmax函數的導數表示為:

??????? 這里的δ是Kronecker delta。對于誤差對于第l層變量αi的導數為:

???????? 最后就可以通過鏈式規則去求得代價函數關于權值ci的偏導數了:

?

3.3.1、Enforcing Sparse Combinations加強稀疏性組合

????????? 為了限制αi是稀疏的,也就是限制一個輸出map只與某些而不是全部的輸入maps相連。我們在整體代價函數里增加稀疏約束項?(α)。對于單個樣本,重寫代價函數為:

?????? 然后尋找這個規則化約束項對權值ci求導的貢獻。規則化項?(α)對αi求導是:

???????? 然后,通過鏈式法則,對ci的求導是:

???????? 所以,權值ci最后的梯度是:

3.4、Making it Fast with MATLAB

??????? CNN的訓練主要是在卷積層和子采樣層的交互上,其主要的計算瓶頸是:

1)前向傳播過程:下采樣每個卷積層的maps;

2)反向傳播過程:上采樣高層子采樣層的靈敏度map,以匹配底層的卷積層輸出maps的大小;

3)sigmoid的運用和求導。

???????? 對于第一和第二個問題,我們考慮的是如何用Matlab內置的圖像處理函數去實現上采樣和下采樣的操作。對于上采樣,imresize函數可以搞定,但需要很大的開銷。一個比較快速的版本是使用Kronecker乘積函數kron。通過一個全一矩陣ones來和我們需要上采樣的矩陣進行Kronecker乘積,就可以實現上采樣的效果。對于前向傳播過程中的下采樣,imresize并沒有提供在縮小圖像的過程中還計算nxn塊內像素的和的功能,所以沒法用。一個比較好和快速的方法是用一個全一的卷積核來卷積圖像,然后簡單的通過標準的索引方法來采樣最后卷積結果。例如,如果下采樣的域是2x2的,那么我們可以用2x2的元素全是1的卷積核來卷積圖像。然后再卷積后的圖像中,我們每個2個點采集一次數據,y=x(1:2:end,1:2:end),這樣就可以得到了兩倍下采樣,同時執行求和的效果。

???????? 對于第三個問題,實際上有些人以為Matlab中對sigmoid函數進行inline的定義會更快,其實不然,Matlab與C/C++等等語言不一樣,Matlab的inline反而比普通的函數定義更費時間。所以,我們可以直接在代碼中使用計算sigmoid函數及其導數的真實代碼。

?

總結

??????? 此文主要描述了基本CNN的反向傳播過程。包括作為分類器的SoftMax層和FCN層,以及作為特征提取的卷積層和Pooling層的參數更新。

?

?

?

總結

以上是生活随笔為你收集整理的AI:IPPR的模式生成-CNN模块学习/训练方式(基本结构)的全部內容,希望文章能夠幫你解決所遇到的問題。

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