神經(jīng)網(wǎng)絡(luò)(Neural Network)
? ? 爆發(fā)要素:大數(shù)據(jù)、計(jì)算能力(GPU)、算法
單層感知器

? ? 輸入節(jié)點(diǎn):x1,x2,x3
? ? 輸出節(jié)點(diǎn):y
? ? 權(quán)向量:w1,w2,w3
? ? 偏置因子:b
? ? 激活函數(shù):,上圖中為
感知器學(xué)習(xí)規(guī)則:
????,
,
是網(wǎng)絡(luò)輸出,
是
函數(shù)
????,
學(xué)習(xí)率,
表示正確的標(biāo)簽,
與
取值為
????, ?? (權(quán)值改變的情況)
????
eg:

? ? 設(shè)
? ? step1:
????
????
????
? ? step2:
????
????
????
? ? step3:
????
????
????
????
學(xué)習(xí)率:取值一般取0-1之間,太大容易造成權(quán)值調(diào)整不穩(wěn)定,太小則權(quán)值調(diào)整太慢,迭代次數(shù)太多。
模型收斂條件:誤差小于某個(gè)預(yù)先設(shè)定的較小的值
? ? ? ? ? ? ? ? ? ? ? ?? 兩次迭代之間的權(quán)值變化已經(jīng)很小
? ? ? ? ? ? ? ? ? ? ? ?? 設(shè)定最大迭代次數(shù),當(dāng)?shù)^最大次數(shù)就停止(常用)
例:假設(shè)平面坐標(biāo)系上有4個(gè)點(diǎn),(3,3),(4,3)這兩個(gè)點(diǎn)的標(biāo)簽為1,(1,1),(0,2)這兩個(gè)點(diǎn)的標(biāo)簽為-1,構(gòu)建神經(jīng)網(wǎng)絡(luò)來分類。
思路:已知要分類的數(shù)據(jù)是2維數(shù)據(jù),所以只需要2個(gè)輸入節(jié)點(diǎn),可把偏置值也設(shè)為一個(gè)節(jié)點(diǎn),即3個(gè)輸入節(jié)點(diǎn)。即,輸入數(shù)據(jù)數(shù)據(jù)有4個(gè)(1,3,3),(1,4,3),(1,1,1),(1,0,2)數(shù)據(jù)對(duì)應(yīng)標(biāo)簽為(1,1,-1,-1),初始化權(quán)值w0,w1,w2,取-1-1的隨機(jī)數(shù),學(xué)習(xí)率(learning rate)設(shè)置為0.11,激活函數(shù)為sign函數(shù)
代碼見——九、神經(jīng)網(wǎng)絡(luò)代碼
線性神經(jīng)網(wǎng)絡(luò)
? ? 感知器的激活函數(shù)只能輸出兩種可能的值,而線性神經(jīng)網(wǎng)絡(luò)的輸出可以取任意值,其激活函數(shù)是線性函數(shù)。線性神經(jīng)網(wǎng)絡(luò)采用Widrow-Hoff學(xué)習(xí)規(guī)則,即LMS(Least Mean Square)算法來調(diào)整網(wǎng)絡(luò)的權(quán)值和偏置。
????線性神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)上與感知器非常相似,僅是激活函數(shù)不同,在訓(xùn)練模型時(shí)把原來的sign函數(shù)改成了purelin函數(shù):y=x。
激活函數(shù)(Activation Function)
????如果不用激活函數(shù),每一層輸出都是上層輸入的線性函數(shù),無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合,如果使用的話,激活函數(shù)給神經(jīng)元引入了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù),這樣神經(jīng)網(wǎng)絡(luò)就可以應(yīng)用到眾多的非線性模型中
常見激活函數(shù)見:附、常見激活函數(shù) - 簡書
Delta學(xué)習(xí)規(guī)則
????學(xué)習(xí)規(guī)則,也可以稱為連續(xù)感知器學(xué)習(xí)規(guī)則,是一種利用梯度下降法的一般性的學(xué)習(xí)規(guī)則。
代價(jià)函數(shù):
? ? 其中y是預(yù)測值,誤差是權(quán)向量
的函數(shù),想使得
最小,
應(yīng)與誤差的負(fù)梯度成正比,即
????
????,
解決異或問題
? ? madaline可以用一種間接的方式解決線性不可分的問題,方法是用多個(gè)線性函數(shù)對(duì)區(qū)域進(jìn)行劃分,然后對(duì)各個(gè)神經(jīng)元的輸出做邏輯運(yùn)算。


? ? 線性神經(jīng)網(wǎng)絡(luò)解決異或不可分問題的另一個(gè)方法是,對(duì)神經(jīng)元添加非線性輸入,從而引入非線性成分,這樣做會(huì)使等效的輸入維度變大,如圖:

BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)
? ? BP算法:
????????
????????
???????? ?? (Delta學(xué)習(xí)規(guī)則)
????????
???????? ? ? ?? (
第
層學(xué)習(xí)信號(hào),
輸出層學(xué)習(xí)信號(hào),
第
層權(quán)值,
第
層輸入信號(hào))
? ? 激活函數(shù)常使用ReLu,因?yàn)?img class="math-inline" alt="\delta^L = (t-y)f’(X^LW^L)" src="https://math.jianshu.com/math?formula=%5Cdelta%5EL%20%3D%20(t-y)f%E2%80%99(X%5ELW%5EL)" mathimg="1">
? ? 調(diào)整權(quán)值的原則是使誤差不斷的減小,因此應(yīng)使權(quán)值的調(diào)整量與誤差的梯度下降成正比
注:激活函數(shù)的取值盡量不要選取趨近飽和的值,否則幾乎學(xué)不到東西
? ? ?? 隱藏層太高會(huì)導(dǎo)致梯度消失的問題
? ? ?? 導(dǎo)數(shù)不能大于1,否則會(huì)導(dǎo)致梯度爆炸問題
? ? ?? W的初始化采用正則初始化方式更好?
? ? ?? 使用sigmoid或tanH激活與標(biāo)準(zhǔn)初始化方式,效果較差,收斂慢。會(huì)收斂到一個(gè)局部最小值中
? ? ?? 使用softsign激活與正則初始化,比較健壯
? ? ?? tanH使用正則初始化,效果也不錯(cuò),最好使用預(yù)訓(xùn)練,pre-training