深度學習模型和算法細節

論文題目:Data-driven soft sensor development based on deep learning technique 算法

摘要:利用深度學習來創建常減壓裝置的軟測量回歸模型,對之後的課題學習有用,主要本人是化工集成和數據挖掘方向的,因此這篇文章仍是對我比較有吸引力的,至於文章難度如何我就不置臧否。 網絡

1---深度神經網絡結構的理解 機器學習

之前最普通的反向傳播(back-propagation)訓練的神經網絡基本上都是隨機生成一組初始參數而後再用梯度降低法來調正參數,從而達到一個較好的擬合效果。通常用的神經網絡最多的就是3層結構,輸入層、單隱層和一個輸出層,這種結構的神經網絡據柯爾莫哥洛夫定理證實是能夠逼近任意連續函數到任意精度,因此通常來講3層結構的也夠了。但這種方法的缺點是梯度最後會變得很小,學習過程很慢,會優化到一個局部極小值。深度學習(deep learning)則是採用多層隱含層來訓練,並且採用的訓練方法也是半監督(semi-supervised)的訓練算法。深度學習技術的訓練過程主要包括兩個階段(就是在這解釋啥叫半監督),無監督的預訓練階段和監督模式的反向傳播訓練。在無監督的預訓練階段,首先創建的是一個深度信任網絡(deep belief network, DBN),並對其進行預訓練,預訓練獲得的結果做爲下一步的監督的反向傳播訓練初始參數。接下來即是對已經預訓練的網絡進行反向傳播訓練。這裏的DBN的構建就要提到一個叫restricted Boltzmann machines (RBMs)的東西了,反正這玩意兒也是機器學習裏面的一個模型,好像是叫什麼Boltzmann機的。那麼這裏的DBN的層次結構的構建就是好幾個這個RBMs堆起來的。以下圖所示:(請原做者原諒我盜圖) 函數

我所理解的就是每一個虛線框都是一個RBMs,而後下面一個RBMs的輸出就是做爲上面的RBMs的輸入,管他對不對先這樣理解吧。InputDatah1就構成了最下面的一個RBMs,因此下面來就是一個一個的訓練RBMs吧,就是所謂的預訓練了吧。那麼這個DBN的訓練就是一個逐層訓練的方案(greedy layer-wise scheme,從最下面一層一直到最上一層。RBM theta1最早訓練,而後是RBM theta2,……,依次類推,那麼在這個訓練過程當中的特徵是逐層抽取的,並逐層向上傳播的,訓練的目標或者是方向是使每一個RBMP(vl)達到最大,就是一個使該RBM的輸入向量v做爲自變量的某個函數值最大的方向。(我以爲)在預訓練的過程當中,每一個RBM都是隻對本身的這一層負責,而不牽涉到其餘層的參數的改變。總結的來講就是,預訓練的過程徹底是無監督的訓練過程。 學習

2---DBN的預訓練過程 測試

在談到具體的RBMs訓練,就要到了具體的數學上的細節了。 優化

RBM的基礎 spa

最開始要介紹的是基本的基於能量的RBM模型(basic energy-based model),這裏其實就是給每一個輸入向量一個標量值,在後面是做爲一個優化指標的,在這裏就喊他能量(energy)。那麼這個函數的定義是: 翻譯

其中Z是: rest

也就是每一個輸入向量所獲得的值(就是exp()所算出來的)的和,那麼P(v)就是對應向量v所佔的比,給這個過程一個名字就是歸一化(normalization),Z就是這個normalizing factor。那麼到這來了就只有Energy(v)這個函數不明瞭,那麼這個Energy(v)到底是啥呢?

基於能量的模型有不一樣的能量函數,在RBM中的能量函數是一個二階的多項式(a second-order polynomial),若是中文沒有翻譯錯的話。

我擦,明明以前Energy這個函數的參數只有一個向量v,這咋又多了一個h捏?不急,論文中又說了,這個vh都是二進制值(01)組成的向量,

theta呢是能量函數的參數集,即Wbc都是咱們要訓練的參數的。

上面所講的能量函數模型是二進制的RBMsbinary RBMs),據論文中說在實際中用的最多的,可是想一想v是二進制的,這樣的話變量只能是離散的,那麼直接拿來作連續變量的迴歸確定是大大的不行,這裏呢,爲了處理連續的輸入變量,將二進制的RBMs擴展爲Gaussian RBMs

看看有啥變化,多了呢是原來的輸入向量v的第i個份量這是沒啥問題的,

而後是高斯分佈的平均和標準誤差(mean and standard deviation of the Gaussian distribution),對i來講。這裏呢v從原來的二進制變爲連續變量了,可是這裏的h仍然是二進制變量。

若是是到這而的話,咱們的要訓練的參數有。在實際中輸入數據都會歸一化到(01),高斯分佈(也就是標準的正態分佈好像是這樣的參數),那麼Gaussian RBMs就會被化簡爲normalized Gaussian RBMs

(註記:到這兒的話我以爲沒有normalizedGaussian RBMs那個公式:

好像少了一項,應該是的)

到這的話,Energy函數就肯定了要用normalized Gaussian RBMs了。

   

如今咱們知道的就是輸入v了,由於你確定的有輸入的樣原本訓練嘛,若是沒有請自行生成。那麼咱們要經過v來預估h了。預估的方向(也就是計算的方向)就是:

即最大後面的那個P了。

這裏仍是用到的是gradient descent(梯度降低算法了,簡單又實用),可是求導過程真的不堪入目有木有,每次求導都讓你想屎。呵呵,以下面的公式:

至於前面的那個求對數的是求極值的時候的一種處理手段,我以爲沒必要深究了。

面對這麼一大串公式咱們應怎樣解毒呢?

論文裏又忽然冒出個,這真是讓我不知所措。

在這兒,光看該文而後本身推到仍然推不倒,只怪我太搓……而後又參考了以下文獻:

http://machinelearning.wustl.edu/mlpapers/paper_files/NIPS2006_739.pdf

Bengio Y, Lamblin P, Popovici D, et al. Greedy layer-wise training of deep networks[J]. Advances in neural information processing systems, 2007, 19: 153.

   

下面這步變成,多了一個求和指標集,由前面咱們知道這個是一個二進制的向量。這一步變過來應該沒有啥問題。

   

   

   

   

到這裏來了終於感覺到高等數學求導的用處了,雖然不是數學分析,又要被嘲諷了。反正直接看原文我是不知道咋推的,參考了其餘的資料以後終於能夠推出論文中的公式。其實這公式看着一大串,一點技術含量都沒有的……

的計算是很簡單的,我也這麼以爲,由於前面也說過能量函數是一個二階的多項式,多項式的求導還能複雜到哪兒去(但願不要被打臉)。

   

   

3---的計算過程

那麼接下來的關鍵之處就是了。這個呢,大牛們也找出瞭如何算的方法。若是對概論的一點知識還有印象的話,是一個條件機率,反正我是快忘了,這裏的意思目測是給定了以後,算出在條件下的,的機率。

對於二進制的RBM,條件機率和條件機率計算公式以下:

   

   

我以爲這個都是二進制的時候,是否是就是把其中一個份量設爲1,而後其餘的都設爲0這樣子輪詢的來算。是在機器學習裏面很常見的一個函數。

而若是對於Gaussian RBM來講呢,則變成下面的兩個式子:

仍然是二進制,而已經變爲連續變量了,並且第二個公式也給出了是符合以爲中心的正態分佈(normal distribution)。到這兒已經能夠算了。

   

4----的計算過程:

二階段吉布斯採樣?(two-stage Gibbs Sampler),是一個高效的逼近採樣的方法(到這裏出來了一個新東西,不太懂)。經過迭代下面的式子構建(馬爾科夫鏈):

是初始的,我以爲這裏的意思就是都是彼此輪着算。就這樣一直算下去能夠收斂,獲得最終的真正的聯合分佈(true joint distribution都像是從的理想採樣。這樣一直算下去的缺點就是你要一直計算梯度,可見這樣算下去很花時間。這裏的方法就是用來代替,做一個二階的逼近,這就是所謂的contrastive divergence algorithm吧。

   

5---的計算過程以及更新參數

對於二進制的RBM和高斯RBM都有以下的計算公式,這個求下導基本上也出來了:

求導求完了以後就可計算新舊變量之間的差值,來更新參數了

是經過一步馬爾科夫鏈計算出來的,公式裏面出現了是利用了條件指望代替馬爾科夫鏈計算出來的binary states,避免出現計算波動(反正這個是原文中所說的)。

   

   

而後根據公式的正項和負項來分別計算,下層的RBMs是較低級的特徵,而上面的RBMs是高級的特徵,包含input-vector的那層是用的Gaussian RBMs而上面的都是binary RBMs。當無監督的DBN的訓練結束以後,就開始了有監督的訓練。前面的待優化的參數如:

都的初始值都已經有了,而後最後一層的須要隨機生成,即最後一個隱含層到輸出層之間的參數在無監督的預訓練過程當中是沒有的。而後多層神經網絡的參數都有了以後就能夠用back-propagation來調節了。

   

   

利用deep neural network來創建所須要模型的步驟能夠總結以下:

step 1:首先須要對數據要歸一化處理,樣本處理的目標是zero meanunit variance

step 2:肯定DNN的結構,而後以無監督的方式預訓練DBN每一層的RBM

step 3:用預訓練的DBN的結果做爲deep neural network的初始參數

step 4:用back-propagation的方法來調節參數

step 5:用另外的數據集來驗證所創建的deep network,若是存在過擬合那麼須要返回step 4

step 6:用測試數據來測試所創建的模型是否正確,若是不滿意則返回step 2

相關文章
相關標籤/搜索