PRML5-神經網絡(2)

本節來自《pattern recognition and machine learning》第5章。

接(PRML5-神經網絡(1))

5.5NN中的正則化

        NN的輸入層和輸出層的單元個數都是按照數據集定義的,只有中間的隱藏層的單元個數是自由參數,通過最大似然求得一個最優值,防止出現欠擬合和過擬合。不過泛化誤差不是一個簡單的關於的函數,因爲在誤差函數中有許多的局部最小存在,如下圖所示:


圖5.5.1網絡中隱藏單元數量不同(x軸)的情況下平方和誤差函數在測試集上的誤差,在每個網絡size上有30個隨機初始化。每個初始化權重向量都是通過對一個高斯分佈(0均值,10方差)採樣得到的。

        如上圖,通過在選定M的基礎上不同的初始化權重導致不同的結果,結果顯示M=8的時候驗證集上的錯誤最少(個人:我也看不出來是8的時候最好)。同樣的,在實際中,我們也是通過畫這種圖來選擇M的值。而且就拿之前的多項式擬合來說,是先選取一個較大的多項式階數也就是,然後在誤差函數上加上一個正則化項來防止過擬合:

                                                                            (5.5.1)

該正則化項叫做權重衰減,這個模型的複雜度可以由前面的係數(超參數)來控制,正如前面介紹的,這一項可以看出是基於權重向量的有着0均值高斯先驗分佈的負log函數。 

5.5.1 一致的高斯先驗(consistent gaussian priors)

        上面這權重衰減的一個侷限性在於沒法自適應網絡映射的縮放屬性。假設我們有一個2層權重層和線性輸出單元的MLP,第一層隱藏層的激活函數:

                                                                            (5.5.1.1)

輸出層單元的激活函數:

                                                                                      (5.5.1.2)

假設我們先對輸入數據進行一個線性轉換:

                                                                                         (5.5.1.3)

我們可以讓該網絡的映射關係(輸入層映射到輸出層)不變,只要在輸入層到隱藏層的權重和偏置也執行一個對應的線性轉換就行(個人:這時候一個處理就相當於將輸入的線性轉換抵消掉了):

                                                           (5.5.1.4)

同樣的,要想求得該網絡的輸出對應的如下的一個線性轉換關係:

                                                                            (5.5.1.5)

只要接着將第二層的權重和偏置再接着做一個線性轉換就行(個人:這個處理是爲了讓目標變量進行轉換,之前輸入的轉換的影響被第一層權重的改變所抵消掉了):

                                                                    (5.5.1.6)

         如果我們使用原始的數據訓練一個網絡和轉換後的數據來訓練另一個網絡,可以發現這原始網絡和新網絡的對應的權重之間也是有着這麼一個轉換關係。我們要的也就是正則化器需要在這種情況下保持一致。而正如(5.5.1)式子中的那個權重衰減,明顯無法符合這種網絡的縮放屬性,因爲通過這個權重衰減訓練的兩個網絡的權重肯定沒有如上面這個轉換關係。所以這裏需要尋找的正則化方法是能夠在如上面的(5.5.1.4)和(5.5.1.6)的線性轉換下保持不變性的。也就是需要正則化能夠對權重的縮放和偏置的偏移能夠保持不變性,如下面這種正則化方法:

                                                                   (5.5.1.7)

        這裏表示第一層權重集合;表示第二層權重集合。偏置不計算在內(5.5.1那個也是不計算偏置的)。通過對該正則化的超參數進行縮放,使得既能達到權重轉換的目的,又能讓該正則化保持不變性。

       如(5.5.1.7)中的正則化對應的先驗形式爲:


        這個形式的先驗叫做improper(無法被歸一化),因爲偏置參數是無約束的。使用improper先驗會導致對正則化參數(超參數)的選擇和與貝葉斯框架的模型對比變得困難,因爲對應的evidence是0(個人:暫時不知道evidence代表什麼含義)。所以通常對於偏置來說是選取獨立的先驗(這會打破平移不變性)並使用自己的超參數。我們可以通過從這些先驗中採樣然後將對應的網絡函數結果畫出來,從而觀察這四個超參數的影響,如下圖:


(上圖中的數據1,10,100,1000都是錯的,應該都是有着-2的冪,比如應該是)圖5.5.1.1 上面的圖是基於1個輸入、12個tanh激活函數的隱藏單元、1個線性輸出的網絡模型,超參數用來控制基於權重和偏置的先驗分佈。該先驗由4個超參數控制的,表現爲第一層偏置,第一層權重,第二層偏置和第二層權重的高斯分佈的精度。超參數控制函數的垂直縮放範圍(在上面兩個圖上不同垂直軸上的範圍);控制着函數的值變化的水平縮放範圍(應該是這個值越大整個函數的曲線的所有突變的總的範圍越大,估計上圖沒完全表現出來而後面這個參數控制着突變內的範圍);控制基於發生變化的水平範圍(應該是比如上圖下面兩個子圖的紅色突變範圍,100的時候小,1000的時候大,仔細看形狀只是放大了);參數的影響這裏沒畫出來,是控制着函數豎直偏移範圍。

 不過,更通用的做法是將先驗中的權重分成組:


這裏:


        這就是先驗的一個特殊情況,如果我們選擇的是與一個輸入單元相關連的權重集合的分組,然後優化關於對應參數的邊緣似然,那麼就得到了如7.2.2中介紹的自動相關性確定(automatic relevance determination)。

5.5.2早期停止

        所謂的早期停止,也是另一種正則化方法,就是在訓練集和驗證集上,一次迭代之後計算它們上面的錯誤率,當在驗證集上錯誤率最小,而沒開始增大的時候就停止,因爲再接着訓練的話,訓練集上誤差應該是接着下降的,而驗證集上的誤差就會上升了,這時候就是要過擬合了,所以及時的停止,從而得到泛化最好的模型。如下圖:


圖5.5.2.1 訓練集和驗證集隨着訓練次數的增加所表現的誤差結果:左邊訓練集,右邊驗證集

這種行爲的解釋:對於模型中有效的自由度的數量(這裏應該指的是能作爲決策的參數,打個比方開始所有的權重都沒法決策,隨着訓練,能決策的參數越來越多,形象的比喻)來說,隨着訓練的過程是先很小然後不斷的增長的,也對應着模型有效複雜度的穩定性增長,在訓練誤差最小值前停止也就意味着對模型有效複雜度的一個限制。

       就拿二次誤差函數來說,我們可以驗證這個觀點,而且早期停止其實很像使用最簡單的權重衰減項的正則化的行爲。如下圖:


圖5.5.2.2:在點上的早期停止就相當於,加了權重衰減的正則化項然後網絡訓練到剛好該正則化誤差的最小值位置。可以和書中圖3.15比較

        在上圖中權重空間中的軸已經旋轉到與hessian矩陣中特徵向量平行了。如果沒有權重衰減項,權重向量就會先從原點開始,然後隨着訓練朝着局部負梯度向量的方向前進(sgd方法),也就是最開始會朝着與軸平行的方向前進,然後經過點,然後朝着誤差函數最小值的方向前進,直到點。這具體的路徑隨着誤差表面的形狀和hessian不同的特徵值的不同而不同。在點周圍的停止訓練,就類似於權重衰減。早期停止和權重衰減之間的關係可以量化,所以關係(其中表示第幾次迭代,而表示學習率)扮演着正則化參數的角色,所以網絡中有效的參數就會隨着訓練的過程而不斷的增長。(其實就是網絡中參數參與的會越來越多,這是一種形象的解釋)。

5.5.3不變性

        在模式識別中,當輸入變量有着一個或者多個的變換,而輸出的預測不變,那麼這叫做不變性。比如手寫數字識別中,每張圖片內數字的位置的改變(平移不變性)和數字的大小不同(縮放不變性)都需要對應到正確的分類結果。或者說在語音識別中,在時間軸(保留了時間順序)上很小的非線性扭曲(即波形的小程度扭曲),不應該讓信號的解釋發生改變。

        如果有足夠多的訓練樣本,那麼就可以訓練一個自適應網絡例如NN來學習不變性,至少能夠逼近。這涉及到訓練集必須有足夠多不同變換影響的樣本。所以,對於圖像的平移不變性來說,需要對象在不同位置上足夠多的圖片用作訓練集。然而當訓練樣本不夠多或者只有幾種不變性的時候,該方法的實用性不高(因爲不同的變換的組合得到的數量也就是你需要的訓練集是基於這些變換的種類呈指數型增長的)。所以我們需要找其他方法來讓自適應模型自己呈現所需的不變性。這大致可以分爲四個方面:

      1、訓練集可以使用訓練樣本的副本形式來增強(augmented),並在裏面加上合適的不變性的轉換。例如在我們的數字識別例子中,可以對每個樣本進行多個複製,在每個複製中讓數字出現在圖像的不同地方;

      2、在誤差函數上增加一個正則化項來懲罰當輸入有不同變換的時候輸出的變化情況,這在5.5.4中有種技術叫做切線傳播,後續介紹。

      3、通過特徵提取來預處理,從而在這個階段建立不變性(比如sift),任何後續的迴歸或者分類系統使用這樣的輸入都是體現了不變性的。

      4、最後的選擇就是將不變性屬性放入NN的結構中(或者通過技術,比如定義核函數的方法,如相關向量機)。一種實現的方法就是使用局部感受野和權重共享,正如在5.5.6介紹的CNN。

       方法1通常來說是相對簡單實現的,可以用來構建複雜的不變性,如下圖所示:


圖5.5.3.1 手寫數字的合成扭曲。左邊的是原始圖片,後面上面的三個是扭曲的數字圖片,下面的三個是對應的位移場(displacement fields)。這些位移場都是通過在每個像素上隨機位移,然後採樣生成的,接着使用寬度爲0.01、30、60的高斯卷積平滑一下(其實就是濾波一下)。

對於連續訓練算法來說,這可以通過在放入模型之前先對輸入樣本進行轉換(如果樣本會被循環用作訓練的話)那麼每次就增加一個不同的轉換形式(從一個合適的分佈中提取)。對於批量方法來說,相似的方法就是先多次複製樣本,然後每個複製樣本上使用不同的轉換。這些增強數據(augmented data)的使用可以明顯提高泛化能力(simard et al 2003

),雖然會更耗時。

      方法2是保持數據集不變,而通過增加額外的正則化來修改誤差函數。在5.5.5中,會介紹與該方面相關的方法

      方法3的一個優點就是它可以正確的推斷遠遠超出訓練集上變換範圍之外的變換。然而,同時也很難在不丟棄信息的情況下找到有助於判別的那些手動設計的不變性特徵(個人:因爲這是更通用的適用不變性,相對來說手動設計的特徵是專爲判別而設定的,所以靠模型自己來的話,勢必會需要更多的信息,因爲模型可分不清哪些是易於被鑑別的特徵,哪些不是)

5.5.4 tangent傳播(切線傳播)

       我們可以使用正則化來讓模型對轉換的輸入數據具有不變性,該技術叫做切線傳播(simard et al 1992)。這裏主要舉例在一個具體的輸入向量上轉換的影響。假設轉換是連續的(例如平移或者旋轉,不過不是鏡面反射),轉換後的樣本將掃出(sweep out,這個真心不知道怎麼在流行這個領域上術語的翻譯)一個D維輸入空間的流行,如下圖:


圖5.5.4.1 在一個2維的輸入控件中在一個具體的輸入向量上一個連續變換的影響。由連續變量參數化的一個1維的變換,將其應用在掃出一個1維的流行。局部的來說,這個轉換的影響可以通過切線向量來逼近。

圖中是簡化的將D=2時候的例子。假設轉換由一個參數(例如旋轉的角度)所控制。那麼由掃出的子空間也是1維的,並且是被參數化的。用表示在向量上變換得到的向量,而且。曲線上的斜率可以通過方向導數計算得到,而且在點上的切線向量是:

                                                                                  ( 5.5.4.1)

在對輸入向量進行轉換之後,網絡的輸出向量通常來說也會變的。輸出單元 k 關於的導數爲:

                                                (5.5.4.2)

這裏是jacobian矩陣上的元素,正如5.3.4部分介紹的。上面這個式子可以可以用來修改標準誤差函數,從而可以用來保證樣本週邊的局部不變性。通過在原始的誤差函數上增加額外的正則化函數,總的形式爲:

                                                                          (5.5.4.3)

這裏是正則化項的參數:

                        (5.5.4.4)

該正則化函數當網絡映射函數在對每個輸入向量轉換後還能保持不變的情況下結果爲0,參數用來權衡擬合訓練數據和學習不變性之間的重要性。在實際使用中,切線向量可以用有限差分來逼近得到,也就是先在向量上往前移動,然後將後面的向量減去然後除以它兩的自變量的差即可。如下圖所示:


圖5.5.4.2 (a)元素圖片;(b)一個對應的無窮小順時針旋轉對應的切線向量,其中藍色表示正值,黃色表示負值;(c)將從切線向量中一小部分貢獻加到元素圖像上:,其中度;(d)將原始圖像進行旋轉之後的結果,用作對比圖

該正則化函數是依賴於jacobian矩陣上的網絡權重的。可以通過5.3部分介紹的使用BP方法來計算正則化項關於網絡權重的導數。如果轉換是受到參數控制(即表示在2維圖像中將平移和in-plane旋轉結合起來),從而流行就會有維度爲,對應的正則化項的形式爲上面那個式子的和,其中的和中是一個變換一個式子。如果同時有好幾個變換,那麼網絡映射先分別應對不同的不變性,然後將不同的變換結合起來(simard et al 1992)使網絡擁有(局部)不變性。

       一個相關的技術,叫做切線距離(tangent distance)可以用來將不變性特性放入基於距離的方法中,例如最近鄰分類器(simard et al 1993)。

5.5.5使用轉換後的數據訓練

        通過使用變換的數據來訓練的方法與切線傳播這種技術密切相關(bishop1995b;leen 1995)。正如5.5.4介紹的,假設變換是通過一個參數控制的,表示成函數形式爲而且,同樣使用的的是平方誤差和函數。該誤差函數當未使用變換的時候,形式爲(數據集爲無限狀態):

                                                       (5.5.5.1)

正如1.5.5介紹的那樣。並且爲了介紹方便,這裏使用的輸出爲單一神經元。如果我們對每個樣本都進行無限次的複製,每個複製上使用從分佈上採樣的變換擾動來增強數據。那麼使用擴展的數據集後,該誤差函數爲:

                                     (5.5.5.2)

現在,假設分佈式0均值,而且方差很小,所以我們只是對原始輸入向量引入很小的變換。我們可以將變換函數以冪次的泰勒展開:

                                     (5.5.5.3)

這裏表示在的位置上函數關於的二階導數。從而得到模型的函數爲:

                (5.5.5.4)

將上面式子帶入到(5.5.5.2),然後展開:

        ()              (5.5.5.5)

(作者:上面的式子第三項改成

因爲變換的分佈式爲0均值,所以。同樣的,可以通過來表示。忽略項。那麼該平均誤差函數就表示爲:

                                                                                                   (5.5.5.6)

這裏表示原始的平方誤差和函數,所需要加上的正則化項爲:


(作者:上面改成

這是基於上積分得到的。我們可以將該正則化項以下面的方式進行簡化:如1.5.5.部分介紹的最小化平方和函數的函數可以通過目標變量的條件平均代替;而從(5.5.5.6)中正則化後的誤差其實就等於未正則化的平方誤差和函數加上複雜度爲(作者:改成)的項,所以,最小化網絡總誤差的函數可以表示爲:

(作者:改成

爲了 階數(作者:改成的平方),將正則化項中第一項忽略掉,留下第二項:


這等效於切線傳播正則化(5.5.4.4)。如果我們考慮這麼一個特殊情況,輸入的變換簡單的只加上隨機噪音,即,那麼該正則化項爲:


這被稱之爲Tikhonov 正則化(tikhonov and arsenin 1977;bishop 1995b)。該正則化關於網絡權重的導數可以通過使用擴展的BP算法求出(bishop 1993)。對於很小的噪音振幅,Tikhonov正則化是對輸入加上隨機噪音,這被證明是有助於在合適的環境下改善泛化性能(sietsma and dow 1991)。

5.5.6卷積網絡

        (該小節長話短說,估計現在這麼火,沒幾個不知道的)另一個讓模型具有不變性的方法就是直接將對輸入變換的不變性構建到網絡中,這也是CNN的基礎。對於2維的圖片來說,其不變性主要還是平移不變性、縮放不變性、和很小的旋轉不變性。更多的,網絡還需要有更多微妙的不變性,例如彈性形變(elastic deformations),如圖5.5.3.1所示。一個方法就是建立一個完整的全連接MLP,不過這可需要足夠大的訓練數據集,這樣得到的最好結果才能好。不過這種簡單粗糙的方法卻忽略了一個問題,圖像的像素值是與周圍的像素點的值密切相關的。所以現有的計算機視覺模型都是通過提取局部特徵,依賴於圖像的子區域提取的特徵。然後將局部提取的特徵融合到後期的處理中來檢測更高階的特徵,最後產生的特徵來表示整張圖片。而且在圖像一個區域上提取的特徵對於其他區域來說也是很有用的,比如圖像平移之後。

      CNN當然就是三大特性:局部感受野、權值共享、子採樣了。對於卷積層每個特徵圖來說,所需要學習的參數就是一個卷積核外帶一個偏置,如果將卷積層每個特徵圖中的卷積核當做是一個特徵提取器,那麼一個特徵圖就相當於對整張圖提取相同的特徵,即在圖片的不同位置提取相同的特,這樣如果輸入圖片平移了,那麼特徵圖上的的激活值也會對應的平移,不過卻不會變。這就是網絡輸出針對輸入圖片的平移和扭曲不變性的基礎(一定程度,所以文中用的是逼近)。對於子採樣(不是池化),是將現在流行的池化比如meanpool上計算局部區域的平均值,然後乘以一個權重再加上一個偏置,然後送入sigmoidal激活函數(這裏不重疊),所以子採樣層中單元的響應對於圖像的微小平移具有相對的不敏感特性。在實際中,是多層卷積層和子採樣層對的,隨着層數的增加,對於輸入的變換有着更高程度的不變性。而且空間分辨率的逐漸減少可以通過增加的特徵數量來補償。最終層通常還會與一個全連接層相連,之後再加上一個softmax層用來多分類。

5.5.7軟權重共享(soft weight sharing)

        上面是通過將某些權重分成不同的組,組內的權重值都相等。然而這隻適用於特定的問題上,也就是約束形式已經提前固定了。這裏介紹一種軟權重共享的方式(nowlan and hinton 1992),將以往的等值權重的硬約束替換成一個正則化的形式,其中不同組的權重傾向於有着相似的值。也就是先將權重劃分成不同的組,每組的平均權重值和值的組內擴散都是通過學習過程決定的。

      回顧之前那個簡單的權重衰減正則項(就是),可以被認爲是基於權重的高斯先驗分佈的負log函數。通過引入高斯混合的概率分佈方法讓權重值形成幾個不同的組,而不是一組。不同高斯成分的中心和方差還有混合的係數,都是作爲學習過程的一部分。所以,我們得到了一個概率密度形式:


這裏:


其中是混合係數。使用負log函數,該正則化函數的形式爲:


總的誤差函數爲:

(作者,因爲有的引入,所以正則化係數是不相關的,公式中這一項可以丟去)

這裏爲正則化項係數(作者:如上,這裏丟棄)。該誤差會在關於權重和關於混合模型的參數下達到最小值。如果權重是常量,那麼混合模型的參數就可以通過第9章介紹的EM算法來求出。不過權重自身的分佈也是在學習過程中確定的,而且爲了避免數值的不穩定性,需要計算一個關於權重和混合模型參數的聯合優化。這可以通過例如共軛梯度或者擬牛頓法來搞定。

       爲了最小化總的誤差函數,需要計算關於各個不同的參數的導數。爲了方便,我們可以將看成是先驗概率,然後引入如書中(2.192)的後驗分佈,該後驗分佈可以通過下面的貝葉斯分佈求得:


總的誤差函數關於權重的導數爲:


        正則化項的影響就是將每個權重拉向第 j 個高斯的中心,與在給定權重上高速的後驗概率成一定比例。這就是我們想要找的那種effect。誤差函數關於高斯中心的導數爲:

(作者:右邊(r.h.s.)的分子改成

一個簡單的直觀解釋就是,它是將推向權值的均值方向,然後會通過後驗概率來進行加權,各自的權重參數都是通過成分 j  生成的(個人:這句話意思就是上面式子的應該是什麼樣子)。同樣的,關於方差的導數爲:


這會驅使朝着對應中心附近的權重的平方偏差的權重化均值方向移動(個人:其實就是解釋上面那個式子最小的時候的值是什麼樣子),這裏和上面一樣,後驗概率給出權重化係數,每個權重都是通過成分j 生成的。注意在實際中,需要引入新的變量

(作者:換成

最小值是在關於(作者:換成上計算得到的。這樣就能確保參數仍然是正的。不過這也有不好的影響,因爲一個或者多個的值會變成0,對應着的就是告訴成分會陷入其中一個權重參數值上。這些更詳細的介紹在9.2.1章節的GMM部分。

       對於關於混合係數的導數的計算,我們需要考慮下面這個約束:


這是基於作爲先驗概率的解釋的前提下計算的。這可以通過將混合係數表示成任意變量的集合然後使用softmax函數計算得到:


正則化後的誤差函數關於的導數爲:

(該式子右邊少乘了

我們可以看到會被推向成分 j 的平均後驗概率的方向。

5.6混合密度網絡

        有監督學習的目標是對條件分佈進行建模,當然對於很多簡單的迴歸問題來說,自然的選擇就是高斯了。然而實際上ML的問題很多都是非高斯分佈。例如逆問題(inverse problems),在其中的分佈可以是多模態的,而這時候使用高斯導致的結果就會非常差。舉個逆問題的簡單例子,機器人手臂的運動學,如下圖所示:


圖5.6.1 左邊的那個是一個2連機器人手臂,其中手臂末端的笛卡爾座標是由兩個聯合角度和兩個固定的手臂長度唯一確定的。這被稱之爲手臂的前向運動。在實際中,我們需要找到能夠得到合適的手臂末端位置時的聯合角度,正如上面右圖所示,這個逆運動有兩個對應的解叫做“曲向上”和“曲向下”。

上面機器人手臂任務中的前向問題涉及到需要在給定聯合角度基礎上找到手臂末端的位置並得到唯一解。然而,在實際中,我們還是希望將手臂末端移動到其他的位置,而這就需要有合適的聯合角度,所以我們需要解決後面的逆問題。前向問題在物理學中通常是有因果關係的,所以通常會有個唯一解。例如人生病時相同的症狀可能包含着多種病因。而在模式識別中通常需要去解決一個逆問題,在這種多對一映射的前向問題上,那麼逆問題就會有多個不同的解。

       在上面的機器人手臂中,運動學是基於集合等式定義的,很明顯會有多個模態存在。然而在ML問題中,多模態的存在特別是涉及到高維空間的問題上,卻不那麼被容易觀察到。所以通常是先考慮一個能夠容易可視化多模態的簡單問題,然後在逐步深入。假設某個任務的數據變量的值是通過在區間上平均採樣得到的,集合爲,對應的目標變量是先計算函數然後加上區間均勻分佈的噪音得到的(這是在建立數據集)。然後通過保持數據樣本不變,只交換x  和  t  的角色來獲取逆問題。下圖就是有關前向問題和逆問題的數據集:


圖5.6.2 左邊的是一個簡單的“前向問題”的數據集,其中紅曲線表示用一個2層NN通過最小化平方和函數得到的擬合結果;右邊是對應的逆問題,是通過交換x 和 t 的角色,然後使用相同的網絡結構,在最小化平方和誤差函數後得到的對數據的擬合,因爲數據集中多模態的存在,所以擬合效果很差。

上圖就是針對前向問題和逆問題的數據集,結果是通過一個6個隱藏單元和一個線性輸出單元的網絡,通過最小化平方誤差和函數來進行擬合的結果。最小平方對應着假設是高斯分佈下的最大似然函數。我們可以發現對於高度非高斯逆問題來說,得到的結果非常差。

      所以需要一個更通用的框架來對條件概率分佈進行建模。這可以通過對條件分佈使用混合模型,在其中的混合係數和成分密度都是關於輸入向量的靈活函數。該方法叫做混合密度網絡(mixture density network)。對於任何給定的的值來說,混合模型提供了一個通用的形式來對任意條件密度函數進行建模。假設我們有一個足夠靈活的網絡,那麼我們就可以逼近任意條件分佈了。

       這裏先顯式的提出關於高斯成分的模型(假設混合模型中都是高斯成分):

         (作者,方差項需要)                   (5.6.1)

這是一個叫做異方差(heteroscedastic)模型的例子,因爲數據上的噪音方差是關於輸入向量的函數。通過將高斯成分換掉,可以使用其他的分佈,例如當目標變量是二值而不是連續的時候,使用伯努利分佈。即使混合密度網絡能夠讓一般的協方差矩陣擴展成使用Cholesky 分解(矩陣論中的知識)(williams,1996)來計算得到其中的協方差,我們這裏也只是簡單的介紹當成分之間是各向同性(isotropic)的情況。(個人:不同的成分在各個方向上具有相同性質時稱各向同性)。而且就算成分都是是各向同性的,條件分佈也不會假設關於目標變量 (相比標準的平方和迴歸模型)成分的分解是混合分佈的結果。(個人:這句話意思就是就算其實成分是相同的,該條件概率也不會假設目標變量是不同成分相加的結果,只是當成一個整體考慮。)

         現在來介紹如何計算混合模型的各個參數:混合係數、均值、和方差,這三個都是受到將作爲輸入的傳統NN的輸出控制的,混合密度網絡的結構如下圖:


圖5.6.3 混合密度網絡可以表示成同樣的條件概率密度 ,只要將目標變量的分佈看成是參數化的混合模型,而且其中的參數都是由作爲輸入向量的NN的輸出控制的。

       混合密度網絡和後面14.5.3部分介紹的專家混合系統關聯密切,不過其中主要的不同在於混合密度網絡是使用相同的函數去預測所有成分密度的參數和混合係數,而且非線性隱藏單元在輸入依賴函數之間是共享的。

        上圖5.6.3中是一個2層網絡,其中的隱藏單元是sigmoid(tanh)函數,如果在式子(5.6.1)這種混合模型中有個成分,而個成分(個人:即 L分類),那麼該網絡將會有個輸出單元激活值來決定混合係數,同時該網絡中還會有個輸出決定着核的寬度個輸出決定着核中心的成分。和普通的只有個輸出的網絡(簡單的預測目標變量的條件均值)相比,該網絡輸出的的總數爲(個人:這段的L、K作者有些亂用,如果這裏看不懂,請看原文自己琢磨,按照個人理解加修正,就是(L+2)×K  個輸出  )。

        混合係數必須滿足下面的條件:


這可以通過softmax輸出計算得到:


同樣的,方差必須滿足,所以可以表示成對應網絡激活值的指數形式:


最後,因爲均值有真實成分(real components)(),它們可以直接用網絡的輸出激活值表示:


其中該網絡的權重和偏置構成的向量是混合密度網絡的學習參數,可以用最大似然或者最小化似然函數定義的負lg函數定義的誤差函數計算得到,該誤差函數爲:


       爲了最小化誤差函數,需要計算關於的導師。這可以通過使用標準的BP方法計算,因爲是上面的誤差函數是不同項的和,所以可以針對每個獨立的訓練樣本,先求出它們各自的導數,然後加起來就行。因爲我們需要處理的是混合分佈,所以將混合係數看成是依賴的先驗概率是很方便的,對應的後驗概率爲:

這裏表示。並且關於網絡輸出激活值的導數決定着混合係數的值:


同樣的,關於網絡輸出的導數還決定着成分的均值:


最後,關於網絡輸出激活值的導數還決定着成分的方差:


        接下來通過介紹一個toy的逆問題的例子來說明混合密度網絡的用法,如下圖:


圖5.6.4 :(a)在圖5.6.2呈現的數據上訓練一個混合密度網絡(其中有三個核函數),混合係數爲關於 x 的函數。該模型有3個高斯成分,網絡結構:1個2層NN的網絡和5個隱藏單元(tanh激活函數),9個輸出(3個均值、3個方差、3個混合係數)。當x的值很小或者很大的時候,目標變量的條件概率密度是單峯的,只有在其中一個核的先驗概率值很大,而且 x 的值處在中間位置,這時候條件密度是三峯的,這時候三個混合係數纔有着相似大小的值;(b)均值的圖示,其中相同的顏色爲同一個核函數(即網絡成分);(c)混合密度網絡的目標變量對應的條件概率密度的輪廓圖;(d)條件密度的條件逼近模型的圖示,圖中紅點所示。

       上圖呈現了混合係數、均值、和對應於的條件密度輪廓圖。NN的輸出(也就是混合模型的參數)必須是輸入變量的連續單值函數。不過從上圖的(c)中可以發現該模型可以生成一個條件密度,對於某些x值是單峯的,而對於其他的通過調製混合成分的振幅使得值是三峯的。

        一旦混合密度網絡訓練好了,它就能夠預測在給定輸入向量的情況下目標變量的條件密度函數。該條件密度是對目標變量生成的完整描述。從這個密度函數中,我們可以計算不同應用中不同的感興趣數值,最簡單的就是對應着目標變量條件平均的均值(期望):


這裏用到了式子(5.6.1)。因爲通過最小平方訓練的標準NN可以逼近條件均值,所以可以發現混合密度網絡可以將傳統的最小平方當成其一個特殊情況。當然,正如前面說的,對於一個多模態分佈來說,條件均值的值也是有限制的。

        關於條件平均的密度函數的方差:


這裏用到了式子(5.6.1)和上面那個式子。這比對應的最小平方更通用是因爲其方差是關於X的函數。

       總結:對於多模態分佈,條件均值對數據的表示是很差的。例如在簡單機器人手臂控制中,需要挑兩個可能的聯合角度中的一個來得到合適的手臂末端位置,然而這兩個解的平均並不是一個解(個人:即這裏不滿足閉包)。在這種情況下,條件模型可能有更多的值,因爲混合密度網絡的條件模型沒有個單一的解析解,所以需要數值迭代。一個簡單的方法就是採用那個最可能成分的均值(即混合係數最大的那個成分)。如圖5.6.4的(d)。

5.7 貝葉斯NN

      到目前爲止關於NN的討論都是通過最大似然來決定網絡的參數(權重和偏置)。正則化的最大似然可以看成是一個MAP(最大後驗),其中正則化可以被認爲是先驗參數分佈的log函數。不過在貝葉斯解決方法中,還需要基於這些參數分佈進行邊緣化才能進行預測。在3.3節中,針對簡單的線性迴歸模型(假設是高斯噪音),提出了一個貝葉斯解決方法,其中可以看到後驗分佈(高斯)可以準確的被計算,而且可以在封閉形式(closed form)中找到可預測的分佈。而在多層網絡中,網絡參數的的高度非線性依賴意味着不能找到準確的貝葉斯解決方法了,因爲後驗分佈的log函數已經是非凸函數了,也就是在誤差函數中會有多個極小值存在。

    在第十章介紹的可變推論可以用在貝葉斯NN上,通過對後驗分佈使用一個因子化的高斯逼近和一個全方差(fullcovariance)高斯。接下來將會用一個高斯來逼近後驗分佈,以真正的後驗作爲模型的中心。然後假設高斯的方差很小以至於網絡函數對於參數空間上的參數來說逼近於線性,並且後驗概率顯然是非零的。有了這兩個逼近方法,可以將之前介紹的線性迴歸和分類結果用到這裏。並使用點估計來獲得超參數,並比較幾種可替代的模型。

5.7.1 後驗參數分佈

    假設我們需要預測一個單一連續目標變量t ,輸入爲向量 x 。我們這裏先假設條件分佈是高斯,形式如下:

                                                          (5.7.1.1)

同樣的,選擇基於權重W 的先驗分佈爲高斯:

                                                                      (5.7.1.2)

假設數據是i.i.d的,樣本爲,對應的目標值,似然函數如下:

                                   (5.7.1.3)

得到的後驗分佈爲:

                                               (5.7.1.4)

作爲在W 上的非線性依賴函數來說,它就是非高斯了。我們可以通過使用拉普拉斯逼近的方法來得到一個有關後驗分佈的高斯逼近。所以,首先需要找到後驗的一個局部最大值,而這可以通過數值優化迭代來完成。和之前一樣,對後驗的log函數計算最大值往往比較方便:

                         (5.7.1.5)

這對應着一個正則化後的平方誤差和函數。假設此時都是固定的,我們可以找到後驗的一個最大值,表示成。通過標準的非線性優化算法比如共軛梯度來計算,並使用BP計算所需要的導數。

       假設已經找到了模型的,現在可以通過計算負log後驗分佈的二階導數矩陣來建立一個局部高斯逼近:

                                            (5.7.1.6)

這裏H 是hessian矩陣,平方和函數關於W的二階導數矩陣。對應的後驗高斯逼近可以從(4.134)中得到:

                                             (5.7.1.7)

       通過對後驗分佈進行邊緣操作得到預測變量的分佈:

                                  (5.7.1.8)

然而,就算是對後驗進行高斯逼近,該積分還是難於分析的,因爲網絡函數是非線性的。所以現在假設相比於的W的可變範圍來說,後驗分佈的方差是很小的,這樣就能夠對網絡函數圍繞着進行泰勒展開,然後只保留線性部分:

                      (5.7.1.9)

這裏假定:

                                                   (5.7.1.10)

這樣就得到了一個爲高斯分佈的線性高斯模型,其中的高斯的均值爲W的線性函數:

                   (5.7.1.11)

然後通過使用(2.115)的通用結果的邊緣分佈得到:

                                      (5.7.1.12)

其中依賴輸入的方差爲:

                                                              (5.7.1.13)

從上面的式子可以看出預測分佈是一個高斯分佈,它的均值通過計算得到。該方差有兩項。第一項爲從目標變量的內在噪音獲得;第二項爲X依賴項,表示內插值中的不確定性,因爲模型參數W是不確定的。

5.7.2 超參數優化


5.7.3 用於分類的貝葉斯NN






2015/07/27,第0次修改!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章