1. 程式人生 > >PRML5-神經網路(2)

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值是單峰的,而對於其他的通過調製混合成分的振幅使得值是三峰的。

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