1. 程式人生 > >《深度學習》摘記之前饋神經網路(1)

《深度學習》摘記之前饋神經網路(1)

前饋神經網路也叫作深度前饋網路或者多層感知機,是典型的深度學習模型。前饋神經網路的目標是近似某個函式f*。例如,對於分類器,y=f*(x)對映到一個類別標籤y。通過定義一個x到y的對映y=f(x;θ),並學習引數θ的值,使對映能夠得到最佳的函式近似。

之所以被稱為前饋網路,是因為資訊流過x的函式,流經用於定義f的中間計算過程,最終到達輸出y。在模型的輸出和模型本身之間沒有反饋連線。當前饋神經網路被擴充套件成包含反饋連線時,我們稱之為迴圈神經網路(RNN)。

前饋神經網路被稱作網路是因為通常使用許多不同函式複合在一起來表示。該模型類似於一個有向無環圖,而圖描述了函式是如何複合在一起的。例如,我們有三個函式f(1),f(2),f(3)連線在一個鏈上形成:f(x)=f(3)(f(2)(f(1)(x)))。這種鏈式結構是神經網路中最常用的結構。在這裡,我們通常將f(1)稱為網路的第一層,f(2)為網路的第二層,以此類推。鏈的長度則為模型的深度。正是因為可以堆疊很多層,才有了深度學習這個名字。前饋神經網路的最後一層稱為輸出層。

在訓練神經網路的時候,讓f(x)去進行f*(x)的值,訓練資料提供了含有噪聲的f*(x)的近似例項。每個樣本對應一個標籤y≈f*(x)。訓練樣本直接指明瞭輸出層在每個x上必須產生一個接近y的值。但是訓練樣本沒有直接指明其他網路層應該做什麼、怎麼做。學習演算法必須決定如何使用這些層來產生想要的輸出,但是訓練資料並沒有說每個單獨的層應該做什麼。相反,學習演算法必須決定如何使用這些層來最好地實現f*的近似。因為訓練資料並沒有給出這些層中每一層所需的輸出,所以這些層被稱為隱藏層。

網路中的每個隱藏層都是向量形式的,這些隱藏層的維數決定了模型的寬度。向量的每個元素都可以被視為一個神經單元。除了將層比作向量到向量的單個函式,我們也可以把層想象成由許多並行操作的單元組成,每個單元表示一個向量到標量的函式。每個單元接受前面單元的輸出作為輸入,然後使用啟用函式進行計算。

一種理解前饋神經網路的方式是從線性模型開始,並考慮如何克服它的侷限性。線性模型諸如邏輯迴歸或者線性迴歸,有明顯的缺陷,這些模型的能力被限制線上性函式裡,它們無法理解任何兩個輸入變數之間的相互作用。

為了擴充套件線性模型來表示x的非線性函式,可以不把線性模型用於x本身,而是用在一個變換後的輸入Φ(x)上,這裡Φ是一個非線性變換。同樣,我們可以使用類似於SVM中的核技巧,來得到一個基於隱含地使用Φ對映地非線性學習演算法。我們可以認為Φ提供了一組描述x地特徵,或者認為它提供了x地一個新的表示。

那麼我們該如何選擇對映Φ呢?

1)一種選擇是使用一個通用地Φ,例如具有無限維的Φ,它隱含地用在基於RBF核的核機器上。如果Φ(x)具有足夠高的維數,我們通常總是有足夠的能力來擬合訓練資料,但是對於測試資料的泛化往往效果不佳。非常通用的特徵對映通常只基於區域性光滑的原則,並且沒有將足夠的先驗資訊進行編碼來解決高階問題。

2)另一種選擇是手動設計Φ。在深度學習出現之前,這一直是主流的方法。這種方法對於每個單獨的任務都需要人們數十年的努力從業者各自擅長特定的領域,並且不同領域之間很難遷移。

3)深度學習的策略是去學習Φ。在這種方法中,我們有一個模型y=f(x;θ,w)=Φ(x;θ)Tw。現在有兩種引數:用於從一大類函式中學習Φ的引數θ,以及用於將Φ(x)對映到所需的輸出的引數w。其中Φ定義了一個隱藏層。這是三種方法中唯一一種放棄訓練問題的凸性的方法。在這種方法中,我們將表示引數化為Φ(x;θ),並且使用優化演算法來尋找θ,使它能得到一個好的表示。