1. 程式人生 > >深度學習-常見神經網路

深度學習-常見神經網路

目錄
  • 一、深度信念網路(DBN)
    • 玻爾茲曼機(BM)
    • 受限玻爾茲曼機(RBM)
  • 二、生成對抗網路(GAN)
    • 生成器(generator)
    • 判別器(discriminator)
  • 三、迴圈神經網路(RNN)
    • 雙向RNN
    • 深度RNN
    • 遞迴RNN
  • 四、長短期記憶網路(LSTM)
    • 4種組成
  • 五、卷積神經網路(CNN)
    • 卷積是什麼
      • 擲骰子
      • 做饅頭
      • 做魚
      • 影象處理
    • 卷積神經網路特性
    • 卷積神經網路分層

一、深度信念網路(DBN)

深度信念,就是要有至尊寶一樣戴金箍的信念

2006年,神經網路之父Geoffrey Hinton祭出神器深度信念網路,一舉解決了深層神經網路的訓練問題,推動了深度學習的快速發展。
深度信念網路(Deep Belief Nets),是一種概率生成模型,能夠建立輸入資料和輸出類別的聯合概率分佈。
深度信念網路通過採用逐層訓練的方式,解決了深層次神經網路的優化問題,通過逐層訓練為整個網路賦予了較好的初始權值,使得網路只要經過微調就可以達到最優解。
深度信念網路的每個隱藏層都扮演著雙重角色:它既作為之前神經元的隱藏層,也作為之後神經元的可見層。
在逐層訓練的時候起到最重要作用的是“受限玻爾茲曼機”
結構上看,深度信念網路可以看成受限玻爾茲曼機

組成的整體

玻爾茲曼機(BM)

玻爾茲曼機,(Boltzmann Machines,簡稱BM),1986年由大神Hinton提出,是一種根植於統計力學的隨機神經網路,這種網路中神經元只有兩種狀態(未啟用、啟用),用二進位制0、1表示,狀態的取值根據概率統計法則決定。
由於這種概率統計法則的表達形式與著名統計力學家L.E.Boltzmann提出的玻爾茲曼分佈類似,故將這種網路取名為“玻爾茲曼機”。
在物理學上,玻爾茲曼分佈是描述理想氣體在受保守外力的作用時,處於熱平衡態下的氣體分子按能量的分佈規律。
在統計學習中,如果我們將需要學習的模型看成高溫物體,將學習的過程看成一個降溫達到熱平衡的過程。能量收斂到最小後,熱平衡趨於穩定,也就是說,在能量最少的時候,網路最穩定,此時網路最優。

玻爾茲曼機(BM)可以用在監督學習和無監督學習中。
在無監督學習中,隱變數可以看做是可見變數的內部特徵表示,能夠學習資料中複雜的規則。玻爾茲曼機代價是訓練時間很長很長很長。

受限玻爾茲曼機(RBM)

受限玻爾茲曼機(Restricted Boltzmann Machines,簡稱RBM)
將“玻爾茲曼機”(BM)的層內連線去掉,對連線進行限制,就變成了“受限玻爾茲曼機”(RBM)
一個兩層的神經網路,一個可見層和一個隱藏層。
可見層接收資料,隱藏層處理資料,兩層以全連線的方式相連,同層之前不相連。
受限玻爾茲曼機需要將輸出結果反饋給可見層,通過讓重構誤差在可見層和隱藏層之間迴圈往復地傳播,從而重構出誤差最小化的一組權重係數。

傳統的反向傳播方法應用於深度結構在原則上是可行的,可實際操作中卻無法解決梯度彌散的問題

梯度彌散(gradient vanishing),當誤差反向傳播時,傳播的距離越遠,梯度值就變得越小,引數更新的也就越慢。

這會導致在輸出層附近,隱藏層的引數已經收斂;而在輸入層附近,隱藏層的引數幾乎沒有變化,還是隨機選擇的初始值。

二、生成對抗網路(GAN)

就像孫悟空和牛魔王一樣搶奪紫霞仙子,進入對抗狀態

GAN(Generative Adversarial Network)是由Goodfellow等人於2014年設計的生成模型,受博弈論中的零和博弈啟發,將生成問題視作生成器和判別器這兩個網路的對抗和博弈。

該方法由是由Goodfellow等人於2014年提出,生成對抗網路由一個生成器與一個判別器組成,
生成網器從潛在空間中隨機取樣作為輸入,其輸出結果需要儘量模仿訓練集中的真實樣本。
判別器的輸入為真實樣本或生成器的輸出,其目的是將生成器的輸出從真實樣本中儘可能分辨出來。

GAN主要優點是超越了傳統神經網路分類和特徵提取的功能,能夠按照真實資料的特點生成新的資料。
兩個網路在對抗中進步,在進步後繼續對抗,由生成式網路得的資料也就越來越完美,逼近真實資料,從而可以生成想要得到的資料(圖片、序列、視訊等)。

生成器(generator)

生成器從給定噪聲中(一般是指均勻分佈或者正態分佈)產生合成數據。試圖產生更接近真實的資料。
生成器像是白骨精,想方設法從隨機噪聲中模擬真實資料樣本的潛在分佈,以生成以假亂真的資料樣本

判別器(discriminator)

判別器分辨生成器的的輸出和真實資料。試圖更完美地分辨真實資料與生成資料。

判別器是孫悟空,用火眼金睛來判斷是人畜無害的真實資料還是生成器假扮的偽裝者

生成器和判別器都可以採用深度神經網路實現,建立資料的生成模型,使生成器儘可能精確你有沒出資料樣本的分佈,從學習方式上對抗性學習屬於無監督學習,

網路訓練可以等效為目錄函式的極大-極小問題

  • 極大:讓判別器區分真實資料和偽造資料的準確率最大化
  • 極小:讓生成器生成的資料被判別器發現的概率最小化

傳統生成模型定義了模型的分佈,進而求解引數。比如在已知資料滿足正態分佈的前提下,生成模型會通過極大似然估計等方法根據樣本來求解正態的均值和方差。

生成對抗網路擺脫了對模型分佈的依賴,也不限制生成的維度,大大拓寬了生成資料樣本的範圍,還能融合不同的損失函式,增加了設計的自由度。

三、迴圈神經網路(RNN)

迴圈網路,如同月光寶盒,時間在不停地迴圈

迴圈神經網路(Recurrent Neural Network),也可以表示遞迴神經網路(Recursive Neural Network)。迴圈神經網路可以看成是遞迴神經網路的特例,遞迴神經網路可以看成是迴圈神經網路的推廣。
卷積神經網路具有空間上的引數共享的特性,可以讓同樣的核函式應用在影象的不同區域。
把引數共享調整到時間維度上,讓神經網路使用相同權重係數來處理具有先後順序的資料,得到的就是迴圈神經網路。

  • 時間
    迴圈神經網路引入了”時間“的維度,適用於處理時間序列型別的資料。
    迴圈神經網路就是將長度不定的輸入分割為等長的小塊,再使用相同的權重系統進行處理,從而實現對變長輸入的計算與處理。
    比方說媽媽在廚房裡突然喊你:“菜炒好了,趕緊來......”,即使後面的話沒有聽清楚,也能猜到十有八九是讓你趕緊吃飯。

  • 記憶
    迴圈神經網路t時刻的輸出取決於當前時刻的輸入,也取決於網路前一時刻t-1甚至更早的輸出。
    從這個意義上來講,迴圈神經網路引入引入了反饋機制,因而具有了記憶功能。記憶功能使迴圈神經網路能夠提取來自序列自身的資訊,
    輸入序列的內部資訊儲存在神經網路的隱藏層中,並隨著時間的推移在隱藏層中流轉。迴圈網路的記憶特性可以用公式表示為
    \(h_t=f(Wx_t+Uh_{t-1})\)

解釋:將時刻的輸入\(x_t\)的加權結果和時刻\(t-1\)的隱藏層狀態\(h_{t-1}\)的加權結果共同作為傳遞函式
的輸入,得到的是隱藏層在時刻\(t\)的輸出\(h_t\)。
\(W\)表示從輸入到狀態的權重矩陣,\(U\)表示從狀態到狀態的轉移矩陣。
對迴圈神經網路的訓練就是根據輸出結果和真實結果之間的誤差不斷調整引數\(W\)和\(U\),直到達到預設要求的過程,訓練方法也是基於梯度的反向傳播演算法。

前饋神經網路某種程式上也具有記憶特性,只要神經網路引數經過最優化,優化的引數就會包含以往資料的蹤跡,但是優化的記憶只侷限於訓練資料集上,當訓練的醋應用到新的測試資料集上時,其引數並不會根據測試資料的表現做出進一步調整。

雙向RNN

比如有一部電視劇,在第三集的時候才出現的人物,現在讓預測一下在第三集中出現的人物名字,你用前面兩集的內容是預測不出來的,所以你需要用到第四,第五集的內容來預測第三集的內容,這就是雙向RNN的想法

如果想讓迴圈神經網路利用來自未來的資訊,就要讓當前的狀態和以後時刻的狀態建立直聯絡,就是雙向迴圈神經網路。
雙向迴圈網路包括正向計算和反向計算兩個環節

  • 正向計算中,時刻t的隱藏層狀態\(h_t\)和過去\(h_{t-1}\)相關
  • 反向計算中,時間t的隱藏層狀態\(h_t\)和未來的\(h_{t+1}\)相關
    雙向迴圈網路需要分別計算正向和反向的結果,並將兩者作為隱藏層的最終引數。

深度RNN

將深度結構引入迴圈神經網路就可以得到深度迴圈網路。
比如你學習英語的時候,背英語單詞一定不會就看一次就記住了所有要考的單詞,一般是帶著先前幾次背過的單詞,然後選擇那些背過但不熟的內容或者沒背過的單詞來背

深層雙向RNN 與雙向RNN相比,多了幾個隱藏層,因為他的想法是很多資訊記一次記不下來,
深層雙向RNN就是基於這麼一個想法,每個隱藏層狀態\(h_t^i\)既取決於同一時刻前一隱藏層的狀態\(h_t^{i-1}\),也取決於同一隱藏層的狀態h_{t-1}^{i}$
深度結構的作用在於建立更清晰的表示。用“完形填空”來說,需要根據上下文,來選擇合適的詞語。有些填空只需要根據它所在的句子便可以推斷出來,這對應著單個隱藏層在時間維度上的依賴性;有些填空則可能要通讀整段或全文才能確定,這對應了時間維度和空間維度共有的依賴性。

遞迴RNN

遞迴神經網路能夠處理具有層次化結構的資料,可以看成迴圈網路的推廣

迴圈神經網路特點是在時間維度上共享引數,從而展開處理序列,如果展開成樹狀態結構,用到的就是遞迴神經網路。遞迴神經網路首先將輸入資料轉化為某種拓撲結構,再在相同的結構上遞迴使用相同的權重係數,通過遍歷方式得到結構化的預測。

例如,“兩個大學的老師”有歧義,如果單純拆分為詞序列無法消除歧義。
遞迴神經網路通過樹狀結構將一個完整的句子打散為若干分量的組合,生成的向量不是樹結構的根節點。

四、長短期記憶網路(LSTM)

如果非要給記憶加一個期限,希望是一萬年

長短期記憶網路(LSTM,Long Short-Term Memory)是一種時間迴圈神經網路,為了解決一般的RNN(迴圈神經網路)存在的長期依賴問題而專門設計出來的,論文首次發表於1997年。由於獨特的設計結構,LSTM適合於處理和預測時間序列中間隔和延遲非常長的重要事件。

RNN通過在時間共享引數引入了記特性,從而可以將先前的資訊應用在當前的任務上,可是這種記憶通常只有有限的深度。

例如龍珠超或者火影每週更新一集,即使經歷了一週的空檔期,我們還是能將前一集的內容和新一集的情節無縫銜接起來。但是RNN的記憶就沒有這麼強的延續性,別說一個星期,5分鐘估計都已經歇菜了。

LSTM可以像人的記憶中選擇性地記住一些時間間隔更久遠的資訊,它會根據組成元素的特性,來判斷不同資訊是被遺忘或被記住繼續傳遞下去。
LSTM就是實現長期記憶用的,實現任意長度的記憶。要求模型具備對資訊價值的判斷能力,結合自身確定哪些資訊應該儲存,哪些資訊該捨棄,元還要能決定哪一部分記憶需要立刻使用。

4種組成

LSTM通常由下面4個模組組成

  • 記憶細胞(memory cell)
    作用是儲存數值或狀態,儲存的時限可以是長期也可以是短期
  • 輸入門(input gate)
    決定哪些資訊在記憶細胞中儲存
  • 遺忘門(forget gate)
    決定哪些資訊從記憶細胞中丟棄
  • 輸出門(output gate)
    決定哪些資訊從記憶細胞中輸出

五、卷積神經網路(CNN)

將鮮花用包裝紙沿著對角線捲成起來,顧名思義卷積

卷積神經網路(convolutional neural network)指至少某一導中用了卷積運算(convolution)來代替矩陣乘法的神經網路。

卷積是什麼

卷積是對兩個函式進行的一種數學運算,我們稱\((f*g)(n)\)為f,g的卷積

  • 連續定義
    \((f*g)(n) = \int_{-\infty }^{\infty}f(τ)g(n-τ)dτ\)
  • 離散定義
    \((f*g)(n) = \sum_{τ=-\infty }^{\infty}f(τ)g(n-τ)\)

我們令\(x=τ\),\(y=n-τ\),那麼\(x+y=n\),相當於下面的直線

如果遍歷這些直線,就像毛巾捲起來一樣,顧名思義“卷積”

在卷積網路中,卷積本質就是以核函式g作為權重係數,對輸入函式f進行加權求和的過程。
其實把二元函式\(U(x,y) = f(x)g(y)\)捲成一元函式\(V(t)\),俗稱降維打擊
\(V(t)=\int_{x+y=t}U(x,y)d_x\),函式 f 和 g 應該地位平等,或者說變數 x 和 y 應該地位平等,一種可取的辦法就是沿直線 x+y = t 捲起來;

擲骰子

求兩枚骰子點數加起來為4的概率,這正是卷積的應用場景。

  • 第一枚骰子概率為為f(1)、f(2)、...f(6)
  • 第二八骰子概率為g(1)、g(2)、...g(m)

兩枚骰子加起來為4的概率為:\(f(1)g(3)+f(2)g(2)+f(3)g(1)\)
標準形式是:\((f*g)(4)=\sum_{m=1}^3f(4-m)g(m)\)

做饅頭

機器不斷的生產饅頭,假設饅頭生產速度是f(t),
那麼一天生產出來的饅頭總量為
\(\int_{0 }^{24}f(t)dt\)
生產出來後會逐漸腐敗,腐敗函式為g(t),比如10個饅頭,24小時會腐敗
\(10*g(t)\)
一天生產出來的饅頭就是
\(\int_{0 }^{24}f(t)g(24-t)dt\)

做魚

卷積看做做菜,輸入函式是原料,核函式是菜譜,對於同一輸入函式鯉魚來說

  • 核函式中的醬油權重較大,輸出紅燒魚
  • 核函式中的糖和醋權重大較大,輸出西湖醋魚
  • 核函式中的辣椒權重較大,輸出朝鮮辣魚

影象處理

假設一幅圖有噪點,要將它進行平滑處理,可以把影象轉為一個矩陣

如果要平滑\(a_{1,1}\)點,就把\(a_{1,1}\)點附近的組成矩陣\(f\),和\(g\)進行卷積運算,再填充回去

\(f\)和\(g\)的計算如下,其實就是以相反的方向進行計算,像捲毛巾一樣

計算\(c_{1,1}\)寫成公式為\((f*g)(1,1)=\sum_{k=0}^2\sum_{h=0}^2f(h,k)g(1-h,1-k)\)

具體參考 :

  • 如何通俗易懂地解釋卷積?
  • 卷積為什麼叫「卷」積?

卷積神經網路特性

卷積運算的特性決定了神經網路適用於處理具有網路狀結構的資料。
典型的網路型資料就是數字影象,無論是灰度還是彩色影象,都是定義在二維畫素網路上的一組標題或向量。
卷積神經網路廣泛地應用於影象與文字識別之中,並逐漸擴充套件到自然語言處理等其他領域。

  • 稀疏感知性
    卷積層核函式的大小通常遠遠小於影象的大小。
    影象可能在兩個維度上都有幾千個畫素,但核函式最大不會超過幾十個畫素。
    選擇較小的核函式有助於發現影象中細微的區域性細節,提升演算法的儲存效率和執行效率。
  • 引數共享性
    一個模型中使用相同的引數。每一輪訓練中用單個核函式去和影象的所有分塊來做卷積。
  • 平移不變性
    當卷積的輸入產生平衡時,其輸出等於原始輸出相同數量的平移,說明平移操作和核函式的作用是可以交換的。

卷積神經網路分層

當輸入影象被送入卷積神經網路後,先後要迴圈通過卷積層、啟用層和池化層,最後從全連線層輸出分類結果。

  • 輸入層
    輸入資料,通常會做一些資料處理,例如去均值、歸一化、 PCA/白化等
  • 卷積層
    卷積層是卷積神經網路的核心部分,引數是一個或多個隨機初始化的核函式,核函式就像按照燈一樣,逐行逐列掃描輸入影象。掃描完畢後計算出的所有卷積結果可以構成一個矩陣,這個新的矩陣叫特徵對映(feature map)。卷積層得到的特徵一般會送到激勵層處理
  • 激勵層
    主要作用是將卷積層的結果做非線性對映。常見的激勵層函式有sigmoid、tanh、Relu、Leaky Relu、ELU、Maxout
  • 池化層
    在連續的卷基層和激勵層中間,用於壓縮資料和引數的量,用於減少過擬合。
    簡而言之,如果輸入是影象的話,那麼池化層的最主要作用就是壓縮影象。
    常見的最大池化做法就是將特徵對映劃分為若干個矩形區域,挑選每個區域中的最大值。
  • 全連線層
    兩層之間所有神經元都有權重連線,通常全連線層在卷積神經網路尾部,輸出分類結果。

在卷積神經網路的訓練裡,待訓練的引數是卷積核。

卷積核:也就是用來做卷積的核函式。

卷積神經網路的作用是逐層提取輸入物件的特徵,訓練採用的也是反向傳播的方法,引數的不斷更新能夠提升影象特徵提取的精度

學海無涯,且行且珍惜,以上由chenqionghe整理,如有雷同,純屬巧