學(xué)習(xí)資料:
網(wǎng)易云課堂:神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)(吳恩達(dá))
知乎專欄:無痛的機(jī)器學(xué)習(xí)第一季
神經(jīng)元與神經(jīng)網(wǎng)絡(luò)
說到神經(jīng)網(wǎng)絡(luò),我們第一個(gè)概念就是在高中生物學(xué)習(xí)到的神經(jīng)元(neuro)的概念,神經(jīng)元從樹突接收到刺激信號(hào),經(jīng)過神經(jīng)元的傳導(dǎo),再通過軸突將信號(hào)傳遞下去,我們將神經(jīng)元的數(shù)據(jù)模型通過圖片的形式展現(xiàn)出來:

類比于上述的神經(jīng)元數(shù)據(jù)模型,下面我們給出一個(gè)最基本的神經(jīng)網(wǎng)絡(luò)(SNN):

在吳恩達(dá)的課程中,神經(jīng)網(wǎng)絡(luò)分為淺層神經(jīng)網(wǎng)絡(luò)和深層神經(jīng)網(wǎng)絡(luò)
一個(gè)神經(jīng)元被稱為logistic回歸。
隱層(hidden layer)較少的被稱為淺層,而隱層較多的被稱為深層。
基本上是層次越深越好,但是帶來的計(jì)算成本都會(huì)增加,有時(shí)候不知道個(gè)該用多少的時(shí)候,就從logistic回歸開始,一層一層增加。
此外,神經(jīng)網(wǎng)絡(luò)還有卷積神經(jīng)網(wǎng)絡(luò)(CNN)與循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。

剛才所說的只是大體上對(duì)神經(jīng)網(wǎng)絡(luò)的介紹,現(xiàn)在我們來研究一下神經(jīng)網(wǎng)絡(luò)具體模型。
神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單模型
上文說到一個(gè)神經(jīng)元就是一個(gè)logistic回歸,那我們先來介紹一下logistic回歸:
logistic回歸是一種廣義上的線性回歸,因此與多重線性回歸分析有很多相同之處,它們的模型形式基本上相同,都具有z=w‘x+b。其中x是我們給出的數(shù)據(jù),它可以是一個(gè)數(shù),也可以是一個(gè)n維向量,w與b是我們的待求量。而logistic回歸中通過函數(shù)L將z對(duì)應(yīng)一個(gè)隱狀態(tài)p,p =L(z),然后根據(jù)p 與1-p的大小決定因變量的值。如果L是logistic函數(shù),就是logistic回歸。
其中l(wèi)ogistic回歸的因變量可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋。
在了解了logistics回歸之后我們來繼續(xù)研究神經(jīng)網(wǎng)絡(luò),我們采用的數(shù)據(jù)是二分類的,所以我們可以把它描述為(x,y),其中x是一個(gè)n維向量,y是0或1。

之后我們就要對(duì)輸入信號(hào)進(jìn)行處理,信號(hào)處理函數(shù)分為兩部分,也就是logistic回歸的處理方法
1.權(quán)重加權(quán) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
對(duì)每個(gè)輸入信號(hào)x1, x2, x3,乘以對(duì)應(yīng)的權(quán)重分別為w1, w2, w3,然后加上內(nèi)部強(qiáng)度 b
2.激活函數(shù)
z可以取到R中任意值,不利于處理,所以我們需要進(jìn)行處理數(shù)據(jù),這就要用到激活函數(shù) a=σ(z) 。一般來講,我們經(jīng)常采用sigmoid函數(shù):


之前我們所說的是對(duì)單個(gè)神經(jīng)元進(jìn)行處理,一個(gè)神經(jīng)元不可能只處理一組數(shù)據(jù),而且神經(jīng)網(wǎng)絡(luò)不可能只包含一個(gè)神經(jīng)元,所以我們擴(kuò)大我們的樣本數(shù)量:

其中每個(gè)xn都是n維的向量,y屬于{0,1}。
對(duì)第一層神經(jīng)元而言,第一步計(jì)算z:
簡(jiǎn)化一下,就是
第二步計(jì)算a:
抽象一下,第 l-1 層輸出到第 l 層的公式就是:
注意這里,用 a[l-1]替代了 x,因?yàn)?,?shí)際上而言a[0]就是輸入層x。
以上就是基本神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單模型,之后我們會(huì)介紹一下神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練
對(duì)于神經(jīng)網(wǎng)絡(luò)來說,我們不可能在一開始就給出神經(jīng)網(wǎng)絡(luò)的最優(yōu)解,所以我們需要足夠的樣本來訓(xùn)練它。
簡(jiǎn)單總結(jié)一下,對(duì)于單個(gè)神經(jīng)元來說,其logistic回歸為:


其中?為我們計(jì)算的輸出標(biāo)簽,實(shí)際上它會(huì)與實(shí)際值y有所偏差,所以我們需要引入函數(shù)來計(jì)算偏差的大?。?/p>
LOSS FUNCTION(損失函數(shù)):
一般來說,我們高數(shù)課上講的比較?與y的函數(shù)是:

可是上述函數(shù)的缺點(diǎn)為它會(huì)給出很多局部數(shù)據(jù)的最優(yōu)解,在我們繪圖是它會(huì)出現(xiàn)類似波浪形狀的圖形,在整體上會(huì)有很多點(diǎn)是非凸的,無法用梯度下降法找到最優(yōu)解,于是我們引入如下函數(shù):

在這個(gè)公式中,當(dāng)?越接近于y時(shí),這個(gè)函數(shù)的值就越小,也就說明我們的神經(jīng)網(wǎng)絡(luò)越好。我們簡(jiǎn)單地代入兩個(gè)極限值0和1來證明這個(gè)函數(shù)的正確性。
1.如果 y=1,則 L(?, y)=-log(?),只有當(dāng)?趨近于最大值1時(shí),-log(?) 才達(dá)到最小
2.如果 y=0,則 L(?, y)=-log(1-?),只有當(dāng) ? 趨近于最小值0時(shí),-log(1-?) 才達(dá)到最小
損失函數(shù)只是針對(duì)單個(gè)樣本數(shù)據(jù)的,當(dāng)我們面對(duì)m個(gè)樣本時(shí),我們就要引入成本函數(shù)。
COST FUNCTION(成本函數(shù)):
很簡(jiǎn)單,對(duì)多個(gè)損失函數(shù)的解計(jì)算其數(shù)學(xué)期望(求平均值)

展開函數(shù)得:

很明顯,成本函數(shù)越小,證明我們的訓(xùn)練效果越好,那我們?nèi)绾螠p小成本函數(shù)呢,之后我們會(huì)介紹梯度下降法。
梯度下降法
我們都知道,對(duì)于一個(gè)多元函數(shù)來說,梯度即是某一點(diǎn)最大的方向?qū)?shù),沿梯度方向函數(shù)有最大的變化率(正向增加,逆向減少)。(?u/?L)M0=n?l=|n|cosθ當(dāng)θ=0時(shí),該方向?yàn)楹瘮?shù)的梯度方向,梯度表示為:

所以在我們求出成本函數(shù)值后,我們要對(duì)w進(jìn)行修正,我們對(duì)損失函數(shù)L(?,y)取一個(gè)截面,假設(shè)我們?cè)诂F(xiàn)有的數(shù)據(jù)在A點(diǎn)


其中,無論是在最小值的左右,每進(jìn)行一次迭代都會(huì)是w點(diǎn)向最小值靠近,只要訓(xùn)練樣本足夠多,我們就會(huì)找出一個(gè)成本函數(shù)在預(yù)期范圍內(nèi)的神經(jīng)網(wǎng)絡(luò)。