迷人的神經(jīng)網(wǎng)絡(luò)——機(jī)器學(xué)習(xí)筆記1

開始接觸神經(jīng)網(wǎng)絡(luò)(Neural Network,NN)的入門例子 MNIST及其論文 Y. LeCun, L. Bottou, Y. Bengio and P. Haffner: Gradient-Based Learning Applied to Document Recognition, Proceedings of the IEEE, 86(11):2278-2324, November 1998 時,難免會有很多疑問:例如:

  • 什么是CNN、RNN、LSTM?什么是卷積(convolution)層、池化(pooling)層、全連接(fully connected)層、Dropout層?
  • 為什么需要激活函數(shù)?為什么ReLU不處處可微卻性能優(yōu)良?
  • 什么是反向傳播?怎么實現(xiàn)?
  • 損失函數(shù)如何設(shè)置?
  • 優(yōu)化算法如何選取?什么是貝葉斯正則化?如何設(shè)置學(xué)習(xí)率可以保證最速訓(xùn)練且收斂到全局最優(yōu)?
  • 學(xué)習(xí)率、Batch_Size和Epoch的如何設(shè)置?

帶著這些疑問找到了一本講述傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的書《神經(jīng)網(wǎng)絡(luò)設(shè)計(第二版)》,讀之后感覺豁然開朗,學(xué)了多年的《線性代數(shù)》終于明白了怎么用,而且順便復(fù)習(xí)了很多學(xué)過的課程:線性代數(shù)、高等數(shù)學(xué)、概率論與數(shù)理統(tǒng)計、離散信號處理、隨機(jī)信號處理、數(shù)字圖像處理、數(shù)學(xué)物理方法,收獲良多,故而整理下作為學(xué)習(xí)筆記。本文所有配圖及其版權(quán)歸原作者所有,本文僅供學(xué)習(xí)。另外中文翻譯版內(nèi)容有些許錯誤,強(qiáng)烈建議對照著原版pdf一起學(xué)習(xí)。

原書名為《NEURAL NETWORK DESIGN (Second Edition)》,作者:Mattin T.Hagan、Howard B.Demuth、Mark H.Bearle 和 Orlando De Jesus。

配套的演示軟件、書籍pdf版及ppt下載頁面如下:

第1章 神經(jīng)元模型及網(wǎng)絡(luò)結(jié)構(gòu)

1.1 神經(jīng)元模型

1.1.1 單輸入神經(jīng)元

標(biāo)量輸入 p 乘以權(quán)值(weight) w 得到 wp,作為其中的一項進(jìn)入累加器,另一個輸入"1"乘以一個偏置值(bias)b ,再送入累加器。累加器的輸出結(jié)果 n ,通常稱作 凈輸入 (net input) ,送給 傳輸函數(shù)(transfer function) f 作用后,產(chǎn)生標(biāo)量 a ,作為神經(jīng)元的輸出(一些作者使用“激活函數(shù)”而不是“傳輸函數(shù)”,“補(bǔ)償”而不是“偏置值”)。權(quán)值 w 對應(yīng)生物神經(jīng)元的突觸連接的強(qiáng)度,胞體由累加器和激活函數(shù)來表述,神經(jīng)元的輸出 a 代表突觸上的信號。神經(jīng)元的實際輸出依賴于不同激活函數(shù)的選擇。

a = f(wp+b)

1.1.2 激活函數(shù)

激活函數(shù)可以是一個關(guān)于凈輸入 n 的線性或非線性函數(shù)。

(1)硬限值:如果自變量小于0,神經(jīng)元輸出0;如果函數(shù)大于等于0,神經(jīng)元輸出1。
a= \begin{cases} 1 & n \ge 0\\ 0 & n < 0 \end{cases}
輸入/輸出特性如下

image

(2)線性:輸出等于輸入
a=n
輸入/輸出特性如下圖:

(3)對數(shù)-S型(log-sigmoid):
a=\frac{1}{1+e^{-n}}
輸入/輸出特性如下

image

(4)Tanh (hyperbolic tangent sigmoid 雙曲正切S型),用于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(recurrent neural networks):
a=\frac{e^{n}-e^{-n}}{e^{n}+e^{-n}}

(5)ReLU (rectified linear units),目前卷積神經(jīng)網(wǎng)絡(luò)CNN(convolutional neural networks)中喜歡使用的激活函數(shù):
a= \begin{cases} n & n \ge 0\\ 0 & n < 0 \end{cases}

1.1.3 多輸入神經(jīng)元

R 個輸入權(quán)值 p_{1}p_{2} ,... , p_{r}對應(yīng)權(quán)值矩陣 W

共享神經(jīng)元的偏置 b
a = f(Wp+b)

1.2 網(wǎng)絡(luò)結(jié)構(gòu)

1.2.1 單層神經(jīng)網(wǎng)絡(luò)

R個輸入,S個神經(jīng)元的權(quán)值矩陣:
W=\left[ \begin{matrix} w11 & w12 & {\dots} & w1r \\ w21 & w22 & {\dots} & w2r\\ {\vdots} & {\vdots} & {} & {\vdots} \\ ws1 & ws2 & {\dots} & wsr \end{matrix} \right]

1.2.2 多層神經(jīng)網(wǎng)絡(luò)

image

1.2.3 循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent network , RNN)

延遲器:
a(t)=u(t-1)
假設(shè)時間步長的更新是離散的,并且只取整數(shù)值

積分器:
a(t)=\int{u(\tau)d(\tau)+a(0)}
a(0)代表初始條件

循環(huán)神經(jīng)網(wǎng)絡(luò)是一個帶有反饋的網(wǎng)絡(luò),它的部分輸出連接到它的輸入。
延遲器、積分器和循環(huán)神經(jīng)網(wǎng)絡(luò)RNN如圖所示:


第2章 一個小例子

三種網(wǎng)絡(luò):前饋網(wǎng)絡(luò)(感知機(jī)為代表)、競爭網(wǎng)絡(luò)(Hamming 網(wǎng)絡(luò)為代表)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Hopfield 網(wǎng)絡(luò)為代表)

2.1 問題描述:模式識別

水果的三種特征:形狀、紋理和重量

  • 形狀感知器:近似圓輸出 1 ,近似橢圓輸出 -1
  • 紋理感知器:表面光滑輸出 1 , 表面粗糙輸出 -1
  • 重量感知器:大于1磅輸出 1 , 小于1磅輸出 -1

輸入、標(biāo)準(zhǔn)的橘子和標(biāo)準(zhǔn)的蘋果為:
p= \left[ \begin{matrix} 形狀 \\ 紋理 \\ 重量 \end{matrix} \right], p_{橘子}= \left[ \begin{matrix} 1 \\ -1 \\ -1 \end{matrix} \right], p_{蘋果}= \left[ \begin{matrix} 1 \\ 1 \\ -1 \end{matrix} \right]

2.2 感知機(jī)

采用對稱硬限值激活函數(shù) handlims 的單層感知機(jī)

2.2.1 兩個輸入的實例

單神經(jīng)元的感知機(jī)能把輸入向量分為兩類

a=hardlinms(n)=hardlinms([w_{1,1} , w_{1,2}]p+b)
如果輸入權(quán)值矩陣(這里是一個行向量)和輸入向量的內(nèi)積大于或者等于 -b ,則感知機(jī)的輸出為 1 ,如果內(nèi)積小于 -b ,則輸出 -1 。這樣將空間劃分為兩個部分

邊界條件為:
Wp+b=0

2.2.2 模式識別實例

a=hardlinms(n)=hardlinms([w_{1,1} ,w_{1,2},w_{1,3}] \left[ \begin{matrix} p_{1} \\ p_{2} \\ p_{3} \end{matrix} \right]+b)

偏置值 b=0 , 權(quán)值矩陣 W=[0,1,0],權(quán)值矩陣正交與決策邊界

感知機(jī)的決策邊界與標(biāo)準(zhǔn)向量:


image

2.3 Hamming 網(wǎng)絡(luò)

為了解決二值模式識別的問題而特別設(shè)計的(輸入向量中的每個元素都只有2個可能的取值)

包含一層前饋層和一層反饋層,兩層神經(jīng)元個數(shù)相同,標(biāo)準(zhǔn)的Hamming 網(wǎng)絡(luò)如下:


image

Hamming 網(wǎng)絡(luò)的目標(biāo)是判斷哪個標(biāo)準(zhǔn)向量最接近輸入向量。判斷結(jié)果由反饋層的輸出表示。對于每一個標(biāo)準(zhǔn)模式而言,在反饋層中都有與之對應(yīng)的神經(jīng)元。當(dāng)反饋層收斂后,只有一個神經(jīng)元會輸出非零值,該神經(jīng)元就表示哪一個標(biāo)準(zhǔn)模式最接近輸入向量。

2.3.1 前饋層

前饋層用來計算每個標(biāo)準(zhǔn)模式輸入模式之間的相關(guān)性或內(nèi)積。為了達(dá)到計算相關(guān)性的目的,前饋層中權(quán)值矩陣用連接矩陣 W^{1} 表示,該矩陣每一行設(shè)置為一個標(biāo)準(zhǔn)模式。在蘋果和橘子實例中:
\mathbf{W}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}}\end{array}\right]=\left[ \begin{array}{cc}{1} & {-1} & {-1} \\ {1} & {1} & {-1}\end{array}\right]
前饋層中使用線性傳輸函數(shù),偏置向量中的每個元素都等于 r ,其中 r 等于輸入向量中元素的個數(shù),偏置向量為:
\mathbf{b}^{1}=\left[ \begin{array}{l}{3} \\ {3}\end{array}\right]
通過選擇權(quán)值和偏置向量,前饋層的輸出為:
\mathbf{a}^{1}=\mathbf{W}^{1} \mathbf{p}+\mathbf{b}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}}\end{array}\right] \mathbf{p}+\left[ \begin{array}{l}{3} \\ {3}\end{array}\right]=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T} \mathbf{p}+3} \\ {\mathbf{p}_{2}^{T} \mathbf{p}+3}\end{array}\right]

注意:前饋層的輸出等于每個標(biāo)準(zhǔn)模式和輸入向量的內(nèi)積加上 r 。對于兩個長度(范數(shù))相同的向量而言,當(dāng)它們方向相同時內(nèi)積最大,方向相反時內(nèi)積最小。通過給內(nèi)積加上 r ,來確保前饋層的輸出永遠(yuǎn)不會為負(fù)數(shù),這也是反饋層所需要的。

2.3.2 反饋層

反饋層正是所謂的 競爭層 。初始值為前饋層的輸出,這個輸出代表著標(biāo)準(zhǔn)模式和輸入向量的相關(guān)性。然后該層的神經(jīng)元互相競爭決定一個勝者。競爭結(jié)束后,只會有一個神經(jīng)元的輸出為零。獲勝的神經(jīng)元表明了網(wǎng)絡(luò)輸入的類別。
a= \begin{cases} \mathbf{a}^{2}(0)=\mathbf{a}^{1} & (初始條件)\\ \mathbf{a}^{2}(t+1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(t)\right) & n < 0 \end{cases}
其中上標(biāo)表示網(wǎng)絡(luò)層數(shù)

權(quán)值矩陣為:
\mathbf{W}^{2}=\left[ \begin{array}{cc}{1} & {-\varepsilon} \\ {-\varepsilon} & {1}\end{array}\right]
其中 \varepsilon 是一個小于 1/(s-1) 的數(shù), s 為反饋層中神經(jīng)元的個數(shù)。

反饋層一次迭代計算過程為:

\mathbf{a}^{2}(t+1)=\operatorname{ReLU}\left(\left[ \begin{array}{cc}{1} & {-\varepsilon} \\ {-\varepsilon} & {1}\end{array}\right] \mathbf{a}^{2}(t)\right)=\operatorname{ReLU}\left(\left[ \begin{array}{c}{a_{1}^{2}(t)-\varepsilon a_{2}^{2}(t)} \\ {a_{2}^{2}(t)-\varepsilon a_{1}^{2}(t)}\end{array}\right]\right)

向量中每一個元素都要同等比例減去另一個元素的一部分,值較大的元素減幅小一些,值較小的元素減幅大一些,因此值較大的元素與值較小元素之間的差異就會增大。反饋層的作用就在于將除了初始值最大的神經(jīng)元外的其他所有神經(jīng)元的輸出逐步縮小為0(最終輸出值最大的神經(jīng)元對應(yīng)著與輸入的 Hamming 距離最小的標(biāo)準(zhǔn)輸入模式)

運行過程如下:
考慮用于驗證感知機(jī)的橢圓形橘子
\mathbf{p}=\left[ \begin{array}{c}{-1} \\ {-1} \\ {-1}\end{array}\right]
前饋層的輸出為:
\mathbf{a}^{1}=\left[ \begin{array}{rrr}{1} & {-1} & {-1} \\ {1} & {1} & {-1}\end{array}\right] \left[ \begin{array}{c}{-1} \\ {-1} \\ {-1}\end{array}\right]+\left[ \begin{array}{l}{3} \\ {3}\end{array}\right] = \left[ \begin{array}{c}{(1+3)} \\ {(-1+3)}\end{array}\right] = \left[ \begin{array}{l}{4} \\ {2}\end{array}\right]

上式的結(jié)果是反饋層的初始條件:

反饋層第一次迭代結(jié)果:

\mathbf{a}^{2}(1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(0)\right) = \begin{cases} \operatorname{ReLU}\left(\left[ \begin{array}{rr}{1} & {-0.5} \\ {-0.5} & {1}\end{array}\right] \left[ \begin{array}{l}{4} \\ {2}\end{array}\right]\right) \\ \\ \operatorname{ReLU}\left(\left[ \begin{array}{l}{3} \\ {0}\end{array}\right]\right)=\left[ \begin{array}{l}{3} \\ {0}\end{array}\right] \end{cases}

反饋層第二次迭代結(jié)果:

\mathbf{a}^{2}(1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(1)\right) = \begin{cases} \operatorname{ReLU}\left(\left[ \begin{array}{rr}{1} & {-0.5} \\ {-0.5} & {1}\end{array}\right] \left[ \begin{array}{l}{3} \\ {0}\end{array}\right]\right) \\ \\ \operatorname{poslin}\left(\left[ \begin{array}{r}{3} \\ {-1.5}\end{array}\right]\right)=\left[ \begin{array}{l}{3} \\ {0}\end{array}\right] \end{cases}

由于后續(xù)迭代的輸出都相同,所以網(wǎng)絡(luò)是收斂的。因為只有第一神經(jīng)元輸出了非零值,所以選擇第一個標(biāo)注模式 橘子 作為匹配結(jié)果。因為 橘子 的標(biāo)準(zhǔn)模式與輸入模式的 Hamming 距離為 1 ,而蘋果的標(biāo)準(zhǔn)模式和輸入模式的 Hamming 距離為2 ,所以網(wǎng)絡(luò)做出的選擇是正確的。

2.4 Hopfield 網(wǎng)絡(luò)

循環(huán)網(wǎng)絡(luò),可以完成 Hamming 網(wǎng)絡(luò)兩層結(jié)構(gòu)才能完成的工作。Hopfield 網(wǎng)絡(luò)的一種變形如下圖:

image

使用輸入向量來初始化該網(wǎng)絡(luò)的神經(jīng)元,然后網(wǎng)絡(luò)不斷迭代直到收斂。當(dāng)網(wǎng)絡(luò)結(jié)果正確時,其輸出結(jié)果將會是某一個標(biāo)準(zhǔn)向量。

在 Hamming 網(wǎng)絡(luò)中由輸出非零值的神經(jīng)元來表明選定了哪種標(biāo)準(zhǔn)模式,而 Hopfield 網(wǎng)絡(luò)則是直接生成一個選定的標(biāo)準(zhǔn)模式作為輸出。

網(wǎng)絡(luò)運算:

\begin{cases} \mathbf{a}(0)=\mathbf{p}\\ \mathbf{a}(t+1)=\operatorname{satlins}(\mathbf{W} \mathbf{a}(t)+\mathbf{b}) \end{cases}

satlins 表示對稱飽和輸出函數(shù),其輸入輸出為:
a= \begin{cases} -1 & n<-1 \\ n & -1 \le n \le 1 \\ 1 & n>1 \end{cases}

Hamming 網(wǎng)絡(luò)的前饋層的權(quán)值為標(biāo)準(zhǔn)模式,在Hopfield 網(wǎng)絡(luò)中權(quán)值矩陣和偏置向量的設(shè)置要復(fù)雜許多。

2.5 總結(jié)

感知機(jī)是前饋網(wǎng)絡(luò)的一個實例。在這些網(wǎng)絡(luò)中,輸出是直接根據(jù)輸入計算得到的,中間沒有任何形式的反饋。前饋網(wǎng)絡(luò)可以用于模式識別,也可以用于函數(shù)逼近。函數(shù)逼近在自適應(yīng)濾波和自動控制等領(lǐng)域已有所應(yīng)用。

以 Hamming 網(wǎng)絡(luò)為代表的競爭網(wǎng)絡(luò)由兩個主要的特性。第一,它們計算了已存儲的標(biāo)準(zhǔn)模式和輸入模式之間的距離。第二,它們通過競爭來決定哪個神經(jīng)元所代表的標(biāo)準(zhǔn)模式最接近輸入。

以 Hopfield 網(wǎng)絡(luò)為代表的循環(huán)網(wǎng)絡(luò),最初是受統(tǒng)計力學(xué)的啟發(fā)。它們被用作聯(lián)想記憶,其中已存儲的數(shù)據(jù)可以通過與輸入數(shù)據(jù)的關(guān)聯(lián)關(guān)系而不是基于地址被提取。循環(huán)網(wǎng)絡(luò)已經(jīng)被用來解決各種優(yōu)化問題。

第3章 感知機(jī)學(xué)習(xí)規(guī)則

在不能可視化決策邊界的情況下,如何確定多輸入感知機(jī)網(wǎng)絡(luò)的權(quán)值矩陣和偏置值?
單層感知機(jī)網(wǎng)絡(luò)的優(yōu)點和局限性

3.1 學(xué)習(xí)規(guī)則

指修改網(wǎng)絡(luò)權(quán)值和偏置值的方法和過程,也稱為訓(xùn)練算法。學(xué)習(xí)規(guī)則是為了訓(xùn)練網(wǎng)絡(luò)來完成某些任務(wù)。學(xué)習(xí)規(guī)則可以歸納為三大類:

  • 有監(jiān)督學(xué)習(xí)
  • 無監(jiān)督學(xué)習(xí)
  • 增強(qiáng)(評分)學(xué)習(xí) :適合應(yīng)用于決策等控制系統(tǒng)

3.2 感知機(jī)結(jié)構(gòu)

image

網(wǎng)絡(luò)的輸出為:

網(wǎng)絡(luò)中的每個神經(jīng)元把輸入空間劃分成了兩個區(qū)域

3.2.1 單神經(jīng)元感知機(jī)

考慮兩個輸入,輸出為:
\begin{aligned} a &= \operatorname{hardlim}(n)=\operatorname{hardlim}(\mathbf{W} \mathbf{p}+b) \\ &= \operatorname{hardlim}\left(\mathbf{w}^{T} \mathbf{p}+b\right)=\operatorname{hardlim}\left(w_{1,1} p_{1}+w_{1,2} p_{2}+b\right) \end{aligned}

決策邊界(descision boundary)通過網(wǎng)絡(luò)的凈輸入 n 等于 0 的輸入向量來確定
_{1} \mathbf{w}^{T} \mathbf{p}+b=0
對于決策邊界上的所有點而言,輸入向量與權(quán)值向量間的內(nèi)積都相等。

3.2.2 多神經(jīng)元感知機(jī)

每個神經(jīng)元都有一個決策邊界:
_{i} \mathbf{w}^{T} \mathbf{p}+b_{i}=0

3.3 感知機(jī)學(xué)習(xí)規(guī)則

有監(jiān)督訓(xùn)練的學(xué)習(xí)過程是從一組能夠正確反映網(wǎng)絡(luò)行為的樣本集中獲得的:

\left\{\mathbf{p}_{1}, \mathbf{t}_{1}\right\},\left\{\mathbf{p}_{2}, \mathbf{t}_{2}\right\}, \ldots,\left\{\mathbf{p}_{Q}, \mathbf{t}_{Q}\right\}

其中 {p}_{q} 是網(wǎng)絡(luò)的輸入, t_{q} 是該輸入相應(yīng)的目標(biāo)輸出。當(dāng)每個輸入作用到網(wǎng)絡(luò)上時,將網(wǎng)絡(luò)的實際輸出與目標(biāo)輸出相比較。為了使網(wǎng)絡(luò)的實際輸出盡量靠近目標(biāo)輸出,學(xué)習(xí)規(guī)則將調(diào)整該網(wǎng)絡(luò)的權(quán)值和偏置值。

統(tǒng)一的學(xué)習(xí)規(guī)則:
定義感知機(jī)誤差 e
e=t-a
其中 t 代表目標(biāo)輸出, a 代表實際輸出
權(quán)值學(xué)習(xí)規(guī)則:
_{1} \mathbf{w}^{n e w}=_{1} \mathbf{w}^{o l d}+e \mathbf{p}=_{1} \mathbf{w}^{o l d}+(t-a) \mathbf{p}
將偏置值看作一個輸入總是1的權(quán)值,則偏置值學(xué)習(xí)規(guī)則:
b^{n e w}=b^{o l d}+e

通常將權(quán)值和偏置值初始化為較小的隨機(jī)數(shù)

3.4 收斂性證明

可以證明:

該規(guī)則總能收斂到能實現(xiàn)正確分類的權(quán)值上(假設(shè)權(quán)值存在)
感知機(jī)的學(xué)習(xí)規(guī)則將在有限次迭代后收斂

局限性:

無法解決 “異或”門 (兩個輸入值相同輸出0,輸入值不同輸出1)問題

3.5 小結(jié)

決策邊界總與權(quán)值向量正交

單層感知機(jī)只能對線性可分的向量進(jìn)行分類

學(xué)習(xí)規(guī)則:
\begin{cases} e=t-a \\ \mathbf{w}^{n e w}=\mathbf{w}^{o l d}+e \mathbf{p}=\mathbf{w}^{o l d}+(t-a) \mathbf{p} \\ b^{n e w}=b^{o l d}+e \end{cases}

由于簡書一篇文章的字?jǐn)?shù)不能太多,更多的內(nèi)容請轉(zhuǎn)如下鏈接:
迷人的神經(jīng)網(wǎng)絡(luò)——機(jī)器學(xué)習(xí)筆記1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容