接上篇:6. 深度學習實踐:深度前饋網路
萬能近似定理:乙個fnn如果具有線性輸出層和至少一層具有任何一種擠壓性質的啟用函式的隱藏層,只要給予網路足夠數量的隱藏單元,它能夠以任意精度來近似任何從乙個有限維空間到另乙個有限維空間的borel可測函式。
該定理意味著:無論我們試圖學習什麼函式,乙個大的mlp一定能夠表示這個函式。很完美,是不是?
但是,我們不能保證訓練演算法能夠學得這個函式。一是優化演算法可能找不到用於期望函式的引數值。二是訓練演算法可能過擬合而選擇了錯誤的函式。
no free lunch 告訴我們,不存在萬能的過程,既能夠驗證訓練集上的特殊樣本,又能選擇乙個函式來擴充套件到訓練集外的點。
具有單層的fnn足以表示任何函式,但是網路層可能大得無法實現,無法正確學習和泛化。怎麼辦?使用更深的模型,可以減少期望函式所需的單元的數量,同時可以減少泛化誤差。
即其是深度的指數級的函式。那麼增加深度就很好了。當然不保證所有都有這樣的性質,但提供了某種方面的支撐。
一圖勝千言。根據經驗,更深的模型似乎確實在廣泛任務中泛化得更好,也算提供了先驗。
雜談。特定任務上:用於cv的cnn,用於序列處理的rnn。有其自身考慮。
許多架構構建了乙個主鏈,新增了額外的架構,比如從更高層的跳躍鏈結,使得梯度更容易從輸出層流向淺層。(想起fcn了)
如何將層與層間連線起來?fnn用矩陣描述的線性變換。一些專用網路具有較少連線,減少了參數量,但通常高度依賴於問題。如cnn用於cv的稀疏連線。
關於bp演算法,在cs231n課程中已學習,並手推、程式偽**都已見識過。應該說講得很清楚。此處瀏覽下書的內容做補充。
實際上bp僅僅指用於計算梯度的方法。另一種演算法,如sgd演算法,則利用該梯度進行學習。
原則上bp可以計算任何函式的導數。在學習演算法中,最常需要的梯度是代價函式關於引數的梯度,bp可算但不侷限於此。
概率中的鏈式法則:p(
a1a2
...a
n)=p
(an|
a1a2
...a
n−1)
...p
(a2|
a1)p
(a1)
此處討論的是微積分中的鏈式法則,用於計算復合函式的導數。y=
g(x)
,z=f
(y) ,則鏈式法則就是:dz
dx=d
zdyd
ydx 。
將標量進行推廣:
向量記法就是:
αx是
g 的 n×
m的雅克比矩陣(一階排列的)。bp演算法由每乙個這樣的雅克比矩陣與梯度的乘積操作所組成。
bp演算法可應用於任意維度的張量。與向量唯一區別在於如何將數字排列成網格以形成張量。所以本質上,bp仍然只是將雅克比矩陣乘以梯度。
緊跟著論述的幾節,內容上比cs231n討論的多。但描述上沒有後者清晰。對初學者來講,看cs231n可能更容易理解到bp的精華和方便。這就是寫書者(學者)和老師者的不同。
fnn可以看做是一種高效的非線性函式近似器。使用梯度下降來最小化函式近似誤差。從這個角度看,現代前饋網路是一般函式近似任務的幾個世紀進步的結晶。
fnn的核心思想自20世紀80年代以來沒有發生重大變化,相同的bp演算法和相同的梯度下降法。其進步在於:
演算法變化一: 損失函式的交叉熵,代替均方誤差。後者上世紀較流行,逐漸被前者代替。最大似然原理廣泛傳播。使用交叉熵損失,大大提高了具有sigmoid函式和softmax輸出的模型的效能。使用均方誤差損失會存在飽和、學習緩慢的問題。
演算法變化二:分段線性隱藏單元來替代sigmoid隱藏單元。例如整流線性單元。也是命運翻覆,大器晚成。
fnn的很多亮點,從被人捨棄,到今天又被揀起,大放異彩。印證了計算機作業系統那位前輩的話:計算機界的東西反反覆覆。
深度學習 深度前饋網路
1 學習xor 2 基於梯度的學習 3 隱藏單元 4 架構設計 5 反向傳播 和其他微分演算法 6 歷史小計 reference 原文 joselynzhao.top 夏木青 深度前饋網路 資訊流過 x 的函式,流經用於 定義 f 的中間計算過程,最終到達輸出 y。前饋神經網路被稱作網路 netwo...
ML 深度前饋網路
華為雲學院 單個感知器的表達能力有限,它只能表達線性決策面 超平面 如果把多個感知器連線起來,就可以表達種類繁多的非線性曲面。神經網路基於感知器模型做了三點擴充套件 1 加入隱藏層,隱藏層可以有多層,增強模型的表達能力 2 多個輸出層神經元,靈活應用於分類回歸,分類,語義分割等。3 擴充套件啟用函式...
深度學習 前饋神經網路
神經元模型,由兩部分組成。一部分將訊號進行累加,得到得分函式,還有偏置項 bias 相當於函式的截距項或者常數項。z bias i 1mxi wi i 0m xiwiz bias i 1mxi wi i 0m xiwi 第二部分是啟用函式,這是神經元的關鍵,通常使用某類啟用函式,就稱為某類神經元。如...