前言
感知機可以表示部分復(fù)雜函數(shù),但是在設(shè)定權(quán)重的工作各墨,確定能符合預(yù)期的輸入與輸出權(quán)重需要由人工進(jìn)行肥印,而神經(jīng)網(wǎng)絡(luò)可以自動從數(shù)據(jù)中學(xué)習(xí)到合適的權(quán)重參數(shù)
1、從感知機到神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)最左邊的一列稱為輸入層赠潦,最右邊的一列稱為輸出層,中間的一列稱為中間層草冈。中間層有時也稱為隱藏層她奥。“隱藏”一詞的意思是怎棱,隱藏層的神經(jīng)元(和輸入層哩俭、輸出層不同)肉眼看不見。把輸入層到輸出層依次稱為第0層拳恋、第1層凡资、第2層。上圖中谬运,第0層對應(yīng)輸入層隙赁,第1層對應(yīng)中間層垦藏,第2層對應(yīng)輸出層。
1.1復(fù)習(xí)感知機
感知機抽象后的數(shù)據(jù)函數(shù)如下:
引用新函數(shù)改造感知機函數(shù):
輸入信號的總和會被函數(shù)h(x)轉(zhuǎn)換伞访,轉(zhuǎn)換后的值就是輸出y掂骏。
1.2激活函數(shù)登場
上面感知機變形調(diào)整的函數(shù)h(x)會將輸入信號的總和轉(zhuǎn)換為輸出信號,這種函數(shù)稱為激活函數(shù)(activation function)厚掷。激活函數(shù)的作用在于決定如何來激活輸入信號的總和弟灼。
感知機數(shù)據(jù)公式可以改造由兩部分構(gòu)成:
上圖神經(jīng)元的○中明確顯示了激活函數(shù)的計算過程,即信號的加權(quán)總和為節(jié)點a蝗肪,然后節(jié)點a被激活函數(shù)h()轉(zhuǎn)換成節(jié)點y袜爪。
2、激活函數(shù)
從上面提到的激活函數(shù)可以看出激活函數(shù)以閾值為界薛闪,一旦輸入超過閾值,就切換輸出俺陋。這樣的函數(shù)稱為“階躍函數(shù)”豁延。
2.1sigmoid函數(shù)
函數(shù)中的exp(-x)表示e-X的意思。 e是納皮爾常數(shù)2.7182 . . .腊状。sigmoid函數(shù)看上去有些復(fù)雜诱咏,但它也僅僅是個函數(shù)而已。而函數(shù)就是給定某個輸入后缴挖,會返回某個輸出的轉(zhuǎn)換器袋狞。比如,向sigmoid函數(shù)輸入1.0或2.0后映屋,就會有某個值被輸出苟鸯,類似h(1.0) = 0.731 . . .、 h(2.0) = 0.880 棚点。
sigmoid函數(shù)是一條平滑的曲線早处,輸出隨著輸入發(fā)生連續(xù)性的變化,圖形如下:
2.2階躍函數(shù)
當(dāng)輸入超過0時瘫析,輸出1砌梆,否則輸出0。圖像信息如下:
2.3sigmoid函數(shù)和階躍函數(shù)
如圖所示兩個函數(shù)的不同點有:
1咸包、sigmoid函數(shù)是一條平滑的曲線,輸出隨著輸入發(fā)生連續(xù)性的變化杖虾。而階躍函數(shù)以0為界烂瘫,輸出發(fā)生急劇性的變化。
2亏掀、相對于階躍函數(shù)只能返回0或1忱反, sigmoid函數(shù)可以返回0.731 . . .泛释、 0.880 . . .等實數(shù)。
兩者共同點:
1温算、兩者的結(jié)構(gòu)均是“輸入小時怜校,輸出接近0(為0);隨著輸入增大注竿,輸出向1靠近(變成1)”茄茁。即當(dāng)輸入信號為重要信息時,階躍函數(shù)和sigmoid函數(shù)都會輸出較大的值巩割;當(dāng)輸入信號為不重要的信息時裙顽,兩者都輸出較小的值。
2宣谈、不管輸入信號有多小愈犹,或者有多大,輸出信號的值都在0到1之間闻丑。
3漩怎、兩者均為非線性函數(shù)。sigmoid函數(shù)是一條曲線嗦嗡,階躍函數(shù)是一條像階梯一樣的折線勋锤。
2.4ReLU函數(shù)
神經(jīng)網(wǎng)絡(luò)發(fā)展的歷史上, sigmoid函數(shù)很早就開始被使用了侥祭,而最近則主要叁执、使用ReLU(Rectifed Linear Unit)函數(shù)。ReLU函數(shù)在輸入大于0時矮冬,直接輸出該值谈宛;在輸入小于等于0時,輸出0欢伏。
2.5神經(jīng)網(wǎng)絡(luò)激活函數(shù)要求
神經(jīng)網(wǎng)絡(luò)的激活函數(shù)必須使用非線性函數(shù)而不能使用線性函數(shù)入挣,因為線性函數(shù)的問題在于,不管如何加深層數(shù)硝拧,總是存在與之等效的“無隱藏層的神經(jīng)網(wǎng)絡(luò)”径筏。比如:線性函數(shù) h(x) = cx 作為激活函數(shù),把y(x) = h(h(h(x)))的運算對應(yīng)3層神經(jīng)網(wǎng)絡(luò) A障陶。這個運算會進(jìn)行y(x) = c × c × c × x的乘法運算滋恬,但是同樣的處理可以由y(x) = ax(注意,a = c3)這一次乘法運算(即沒有隱藏層的神經(jīng)網(wǎng)絡(luò))來表示抱究。使用線性函數(shù)時恢氯,無法發(fā)揮多層網(wǎng)絡(luò)帶來的優(yōu)勢。為了發(fā)揮疊加層所帶來的優(yōu)勢,激活函數(shù)必須使用非線性函數(shù)勋拟。
神經(jīng)網(wǎng)絡(luò)計算:
3勋磕、3層神經(jīng)網(wǎng)絡(luò)計算
上圖的3層神經(jīng)網(wǎng)絡(luò):輸入層(第0層)有 2個神經(jīng)元,第1個隱藏層(第1層)有3個神經(jīng)元敢靡,
第2個隱藏層(第2層)有 2個神經(jīng)元挂滓,輸出層(第3層)有 2個神經(jīng)元
3.1符號說明
3.2各層間信號傳遞的實現(xiàn)
上圖增加了表示偏置的神經(jīng)元“1”。
通過加權(quán)信號和偏置的和按如下方式進(jìn)行計算下一層節(jié)點值:
使用矩陣的乘法運算啸胧,則可以將第1層的加權(quán)和表示成下面
其中赶站, A(1)、 X纺念、 B (1)贝椿、 W (1)如下所示:
神經(jīng)網(wǎng)絡(luò)向向前運算過程如下:
A1 = np.dot(X, W1) + B1
Z1 = sigmoid(A1)
隱藏層的加權(quán)和(加權(quán)信號和偏置的總和)用a表示,被激活函數(shù)轉(zhuǎn)換后的信號用z表示陷谱。
A2 = np.dot(Z1, W2) + B2
Z2 = sigmoid(A2)
A3 = np.dot(Z2, W3) + B3
輸出層使用激活函數(shù)得出最終結(jié)果烙博。輸出層所用的激活函數(shù)回歸問題可以使用恒等函數(shù),二元分類問題可以使用 sigmoid函數(shù)叭首,多元分類問題可以使用 softmax函數(shù)习勤。
3.3恒等函數(shù)
恒等函數(shù)會將輸入按原樣輸出,對于輸入的信息焙格,不加以任何改動地直接輸出。
3.4softmax函數(shù)
softmax函數(shù)可以計算得出每個結(jié)果所占的比例夷都。exp(x)是表示ex的指數(shù)函數(shù)(e是納皮爾常數(shù)2.7182 . . .)眷唉。假設(shè)輸出層共有n個神經(jīng)元,計算第k個神經(jīng)元的輸出yk囤官。softmax函數(shù)的分子是輸入信號ak的指數(shù)函數(shù)冬阳,分母是所有輸入信號的指數(shù)函數(shù)的和。softmax函數(shù)的輸出通過箭頭與所有的輸入信號相連党饮,輸出層的各個神經(jīng)元都受到所有輸入信號的影響肝陪。
softmax函數(shù)的實現(xiàn)中要進(jìn)行指數(shù)函數(shù)的運算,但是此時指數(shù)函數(shù)的值很容易變得非常大刑顺,容易造成溢出氯窍。
改進(jìn)后的softmax函數(shù)過程如下:
在分子和分母上都乘上C這個任意的常數(shù)(因為同時對分母和分子乘以相同的常數(shù),所以計算結(jié)果不變)蹲堂。然后狼讨,把這個C移動到指數(shù)函數(shù)(exp)中,記為log C柒竞。最后政供,把log C替換為另一個符號C' 。為了防止溢出,一般會把C'使用輸入信號中的最大值布隔。
softmax特性:
函數(shù)的輸出是0.0到1.0之間的實數(shù)离陶。并且, softmax函數(shù)的輸出值的總和是1衅檀。輸出總和為1是softmax函數(shù)的一個重要性質(zhì)招刨。有了這個性質(zhì),才可以把softmax函數(shù)的輸出解釋為“概率”术吝。