一、前言
??在大多數(shù)資料中,神經(jīng)網(wǎng)絡(luò)都被描述成某種正向傳播的矩陣乘法。而本篇博文通過將神經(jīng)網(wǎng)絡(luò)描述為某種計算單元,以一種更加簡單易懂的方式介紹神經(jīng)網(wǎng)絡(luò)的功能及應(yīng)用。
二、神經(jīng)網(wǎng)絡(luò)的架構(gòu)——以手寫數(shù)字識別
??廣義上講,神經(jīng)網(wǎng)絡(luò)就是要在輸入數(shù)據(jù)中找尋某種規(guī)律,就像這個經(jīng)典的例子:手寫數(shù)字識別。即給定一個手寫數(shù)字圖像,如何識別圖像中的是數(shù)字幾呢?神經(jīng)網(wǎng)絡(luò)通過對大量帶標簽圖像的訓練,找到其中的規(guī)律,進而解決手寫數(shù)字識別問題。
??我們將手寫數(shù)字圖像的像素值作為神經(jīng)網(wǎng)絡(luò)的輸入,然后通過隱藏層處理,最終輸出層有10個對應(yīng)類別。我們選取輸出層中最大值的神經(jīng)元作為最終的識別結(jié)果。
??有了這些信息,神經(jīng)網(wǎng)絡(luò)就能夠對從未見過的圖像進行分類,這是它的用處所在。也就是說,我們不僅能夠用神經(jīng)網(wǎng)絡(luò)對函數(shù)進行建模,還可以用其對數(shù)據(jù)進行分類。
??神經(jīng)網(wǎng)絡(luò)是一種分層結(jié)構(gòu),它有輸入層、隱藏層和輸出層,其每一層都有許多神經(jīng)元組成。此例中,輸入層是由圖像的像素值組成(28*28=784)。由于每個數(shù)字只有10種可能,所以輸出層將有10個神經(jīng)元用來表示識別到的數(shù)字。隱藏層的層級以及其神經(jīng)元的個數(shù)都要通過反復(fù)試驗來確定。
三、神經(jīng)網(wǎng)絡(luò)的工作
1、單輸入單輸出感知器函數(shù)
??神經(jīng)網(wǎng)絡(luò)到底是如何工作的呢?讓我們從最簡單的單輸入單輸出網(wǎng)絡(luò)開始講起。假設(shè)這個神經(jīng)網(wǎng)絡(luò)是用來將天氣分為好壞兩種類型:假定輸出為1時表示好天氣,0表示壞天氣,這種輸出二值型的神經(jīng)網(wǎng)絡(luò)也叫感知器。
??可以把感知器想象成一個開關(guān),如果打開它,就輸出1,否則輸出0。假設(shè)溫度高于20℃時,為好天氣。該例的輸入空間就是一維的,就像一條數(shù)軸,決策邊界就是在20℃處畫一條線,任何大于或等于20℃的輸入都將激活感知器。而對于低于20℃的輸入,感知器都出于未激活狀態(tài)。
??實際上,當我們訓練一個神經(jīng)網(wǎng)絡(luò)時,我們所作的就是確定這些邊界的位置。讓我們討論一下,為什么其輸出可以表示成y=H(x-20)這種形式。其中H代表躍遷函數(shù),當x≥0時,其輸出為1;當x≤0時,其輸出為0.即:正1負0。而H(x-20)則表示,當x-20≥0時,其輸出為1;當x-20<0時,其輸出為0。如果我們假設(shè)超過20℃為壞天氣,則相應(yīng)的式子變?yōu)閥=H(-x+20)即可。
??通常,我們可以將單輸入單輸出的感知器函數(shù)寫作y=H(wx+b)。
2、二維輸入?yún)?shù)
??如果我們在例子中再添加一個輸入,也就是說確定天氣是否糟糕要看溫度和濕度兩個指標。這時相當于給輸入空間增加了一個維度,即輸入空間變?yōu)槎S的了。
??即當我們假定當溫度或濕度值較大時,則為壞天氣,反之為好天氣。我們可以再輸入空間劃上一條直線,在其上方的點輸出1,其下方點輸出0。此時輸出函數(shù)則可以寫成y=H(w1x1+w2x2+b),此時的決策邊界可以看做是一個平面,其與輸入平面相交形成一條分界線。
??我們也可以將上式寫作矩陣相乘的形式:
??我們可以用W來代替矩陣,用x代替向量。從專業(yè)的角度講,W為權(quán)重矩陣,b為偏置:
3、三維輸入?yún)?shù)
??三維的情況也能夠描述,比如我們再考慮風速的影像?,F(xiàn)在輸入就是三維的了,所以決策邊界可以用一個超平面來表示。此時的輸入矩陣是3*1的,式子的輸出任然是0或1。
??一般來說,神經(jīng)元的輸入x是一個多維向量,然后將其乘以一個權(quán)重矩陣,然后加上偏置,再傳給激活函數(shù),最終得到神經(jīng)元的輸出。此例中,激活函數(shù)使用的是躍遷函數(shù)。
四、激活函數(shù)
1、激活函數(shù)
??讓我們再看看其他激活函數(shù)。有時候,連續(xù)輸出會比這種二值輸出函數(shù)更有用。也就是說,比如傳遞給激活函數(shù)的值是0.0001,雖然它非常接近0,但躍遷函數(shù)還是輸出1。我們可以用這種函數(shù)來產(chǎn)生連續(xù)的輸出:
??我們可以將該激活函數(shù)的輸出看作頻率。如果該激活函數(shù)的輸出為0.5,那么我們可以預(yù)測該事件發(fā)生的概論為50%。我們之所以能將其看作概率,是因為該激活函數(shù)的輸出值在0到1之間。
2、ReLU激活函數(shù)
??另一個常用的激活函數(shù)是ReLU。ReLU有兩部分,輸入為負,輸出為0;輸入為正,輸出為輸入本身,即max(0,x)。ReLU常用于神經(jīng)網(wǎng)絡(luò)的隱藏層中。需要注意的是:這些函數(shù)都不是線性的,這點非常重要。
??至此,我們有了一個可以用來劃分數(shù)據(jù)的模型。如果我們的數(shù)據(jù)集變得越發(fā)復(fù)雜時,該怎么辦呢?
3、非線性激活函數(shù)
??以這個數(shù)據(jù)集為例子,我們希望創(chuàng)建一個模型,在給定x和y坐標的情況下來預(yù)測該點的顏色。我們可以用一個兩個輸入的感知器來完成,其決策邊界如上方的黃線所示,我們稱這種類型的數(shù)據(jù)集是線性可分的。
??但如果我們的數(shù)據(jù)集變成這種樣子,此時就不能用一條線性函數(shù)來作劃分了。
??我們可以組合多個神經(jīng)元,利用其激活函數(shù)的非線性就能構(gòu)造出非常復(fù)雜的決策邊界。為了理解神經(jīng)網(wǎng)絡(luò)是如何工作的,讓我們來看一個兩輸入兩輸出的神經(jīng)網(wǎng)絡(luò):
(1)二輸入二輸出的神經(jīng)網(wǎng)絡(luò)的架構(gòu)
??首先來看第一個輸出神經(jīng)元,其輸出為:y=σ(w11x1+w12x2+b),其中激活函數(shù)選擇sigma。權(quán)重的第一個下標表示該神經(jīng)元在本層的序號,第二個下標為其輸入在上一層的序號。類似的,我們可以寫出第二個輸出神經(jīng)元的輸出表達式。有沒有辦法將這兩個方程合二為一呢?
(2)方程矢量化
??首先,我們可以對方程進行矢量化,將輸入輸出都寫成向量形式。此時我們再將系數(shù)轉(zhuǎn)換為矩陣形式,即權(quán)重矩陣。這樣我們就能將其推廣到任意數(shù)量的輸入、輸出神經(jīng)元中了。
(3)設(shè)置不同的權(quán)重矩陣和偏置因子
??此外,我們可以對每一層都使用相同的方程,差別僅僅是各層的權(quán)重矩陣和偏置因子不同。現(xiàn)在讓我們在這兩者之間加一個隱藏層,該層的輸入輸出關(guān)系如上所示。
(4)其他矩陣變換
??注意:隱藏層使用的激活函數(shù)是ReLU,也可以使用其他的激活函數(shù),比如sigmoid。接下來就是輸出層的關(guān)系表達式了,矩陣與向量相乘,其實質(zhì)就是線性變換。現(xiàn)在,讓我們先忽略激活函數(shù),只考慮Wx+b的結(jié)果。如何理解線性變換呢?我們可以將矩陣的第一列看成線性變換后的單位向量i,矩陣的第二列為線性變換后的單位向量j。在線性變換中,我們只允許進行旋轉(zhuǎn)、縮放、翻轉(zhuǎn)等操作,即線性變換后坐標原點保持不變。文章來源:http://www.zghlxwxcb.cn/news/detail-584734.html
4、線性激活函數(shù)和非線性激活函數(shù)
??回到神經(jīng)網(wǎng)絡(luò),假設(shè)該神經(jīng)網(wǎng)絡(luò)權(quán)值和偏置已經(jīng)進行隨機初始化了。首先讓我們從輸入數(shù)據(jù)集開始,本例中,它是一個正方形中均勻分布的一組點:
??第一個操作時乘以權(quán)重矩陣,這是一個線性變換(旋轉(zhuǎn)、縮放、翻轉(zhuǎn)等操作的組合)。接下來加上權(quán)重因子,可以將其理解為平面內(nèi)的移動。
??現(xiàn)在我們來看激活函數(shù),這里我們使用的是ReLU作為激活函數(shù),也就是說,任何負的輸出都是0,只留下正的部分。顯然,第一象限是唯一一個符合要求的象限,ReLU會將其他象限的值映射到第一象限上,其結(jié)果就剩下第一象限這一塊了。注意:若采用線性變換,你將無法得到這樣的結(jié)果:
??這就是激活函數(shù)非線性的重要性,它能夠幫助我們構(gòu)造復(fù)雜的決策邊界。接著,我們再乘以一個矩陣,加上偏置,最后sigmoid函數(shù)將其壓縮至這個單元格中,因為sigmoid函數(shù)的輸出是0到1之間的值。
??我們也可以在三維空間中進行上述變換,例如有一個神經(jīng)網(wǎng)絡(luò),其隱藏層有三個神經(jīng)元,假定權(quán)值與偏置都已隨機初始化了。
??本例的數(shù)據(jù)集也是平面中一個正方形內(nèi)均勻分布的一組點,但現(xiàn)在我們是要將其映射到三維空間中(隱藏層有三個神經(jīng)元)。我們將平面旋轉(zhuǎn),然后增加一個維度,然后我們就可以將其乘以權(quán)重矩陣(也就是線性變換),再加上偏置。然后我們再實現(xiàn)ReLU,只保留輸入中為正的部分。二維時,其輸出只再第一象限,推廣到三維,其輸出只在第一卦限。因此,我們將其他卦限上的點都折疊到第一卦限上來:
??然后我們接著進行下一個線性變換并添加偏置。注意:用線性變換永遠得不到如下的圖像:
??這也再次強調(diào)了激活函數(shù)非線性的重要性,它能幫助我們建立復(fù)雜的決策模型。文章來源地址http://www.zghlxwxcb.cn/news/detail-584734.html
到了這里,關(guān)于[深度學習入門]什么是神經(jīng)網(wǎng)絡(luò)?[神經(jīng)網(wǎng)絡(luò)的架構(gòu)、工作、激活函數(shù)]的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!