一、深度学习背景与人工神经网络
- 一、基礎(chǔ)知識(shí)
- 二、神經(jīng)網(wǎng)絡(luò)
- 2.1 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):
- 2.2 為什么神經(jīng)網(wǎng)絡(luò)在分類問題中的效果比較好:
- 2.3 BP算法
一、基礎(chǔ)知識(shí)
線性分類器:
工業(yè)界有很多算法完成分類的問題,比如線性分類器,輸入一張32x32x3的矩陣,利用f(wx+b)得到屬于不同類別的得分向量,
方便演示,x列向量只選了4個(gè)值,w為3x4的矩陣,偏置項(xiàng)是為了讓分類線可以上下平移,更好的分類,我們希望正確類別的得分比較高。
兩種理解方式:
1. 空間劃分
可以把w看成三個(gè)行向量,因?yàn)槊總€(gè)行都控制著不同類別的得分,三行w分別對(duì)應(yīng)不同的直線。當(dāng)我們確定了w和b之后,會(huì)確定一條直線,相當(dāng)于對(duì)平面進(jìn)行了一個(gè)劃分。
不同的w和b對(duì)應(yīng)空間中不同的超平面,對(duì)平面做區(qū)域劃分,在不同區(qū)域內(nèi),屬于不同的類。
2. 模板匹配
將每一行w看成每個(gè)類別的模板,
對(duì)同一個(gè)輸入x,用不同的模板去匹配它,看哪個(gè)模板的匹配度最高。
損失函數(shù):
損失函數(shù)是衡量預(yù)測和真實(shí)值的差別的,隨機(jī)初始化一組w之后,會(huì)根據(jù)最小化損失函數(shù)的方法來優(yōu)化w,使得損失函數(shù)最小。
不同的損失函數(shù),對(duì)應(yīng)不同的評(píng)估手段,不同的手段都能體現(xiàn)模型的學(xué)習(xí)能力,比如hingeloss,或softmax。
Hinge 損失
正確的得分比錯(cuò)誤的得分大于delta的時(shí)候,不做懲罰,如果兩者的差小于delta,則利用兩者的差+delta作為損失值。
交叉熵?fù)p失
為什么可以用交叉熵?fù)p失函數(shù)來衡量網(wǎng)絡(luò)?
熵的本質(zhì)是信息量的期望值,H(p)=∑pi×H(pi)H(p)=∑pi×H(pi),現(xiàn)在有關(guān)于樣本集的兩個(gè)分布p和q,其中p為真實(shí)分布,q為預(yù)測分布,比如深度學(xué)習(xí)的手寫體識(shí)別,預(yù)測得到的屬于每類的概率為q(0)=0.0,q(1)=0.1,q(2)=0.1,q(3)=0.8,q(4)=0,…q(0)=0.0,q(1)=0.1,q(2)=0.1,q(3)=0.8,q(4)=0,…,q是真實(shí)的分布。最后肯定會(huì)選擇概率最大的3作為輸出,而真實(shí)分布為p(0)=0,p(1)=0,p(2)=0,p(3)=1,p(4)=0...p(0)=0,p(1)=0,p(2)=0,p(3)=1,p(4)=0...,于是,我們想做的就是讓p和q的分布盡可能一樣。
概率論或信息論中,利用KL散度(相對(duì)熵)來衡量兩個(gè)分布間的距離,且是非對(duì)稱的,也就是D(P||Q)≠D(Q||P)D(P||Q)≠D(Q||P),信息論中,也用D(P||Q)D(P||Q)來衡量利用概率分布Q來擬合真實(shí)分布P的時(shí)候,產(chǎn)生的信息損耗。當(dāng)KL散度的值越大,表示兩個(gè)概率分布的差距越大,KL散度和交叉熵的關(guān)系如下:
KL散度:
DKL=∑pilogpiqiDKL=∑pilogpiqi交叉熵(CH):
交叉熵=熵+KL散度
而H(pi)H(pi)是一個(gè)真實(shí)分布的期望,因此與訓(xùn)練無關(guān),是一個(gè)常數(shù)項(xiàng),所以將原本的最小化相對(duì)熵,轉(zhuǎn)化為最小化交叉熵,
一般情況,我們希望將得分函數(shù)轉(zhuǎn)化為分為某一類的概率,多分類情況下利用softmax來完成。
softmax:某個(gè)類別的得分的指數(shù)值,和所有得分的指數(shù)值的比值
為什么用指數(shù),因?yàn)橹笖?shù)可以避免負(fù)值的出現(xiàn)。
Si=eVi∑jeVjSi=eVi∑jeVj
softmax可以將不同的得分函數(shù)轉(zhuǎn)化為屬于該類的概率值,轉(zhuǎn)化之后,概率之和為1。
eVieVi表示某個(gè)類別的線性得分函數(shù),SiSi表示屬于該類的概率輸出,由于log變換不會(huì)影響函數(shù)的單調(diào)性,故對(duì)SiSi進(jìn)行l(wèi)og變換,我們希望SiSi越大越好,即對(duì)應(yīng)正確類別的相對(duì)概率越大越好,所以對(duì)SiSi前面加一個(gè)負(fù)號(hào),來表示損失函數(shù),這就稱為交叉熵?fù)p失函數(shù)。
交叉熵?fù)p失函數(shù):
Li=?log(eVi∑eVj)Li=?log(eVi∑eVj)對(duì)上式進(jìn)行進(jìn)一步處理,約掉指數(shù):
Li=?logeVi?log∑jeVj=?Vj+log∑jeVjLi=?logeVi?log∑jeVj=?Vj+log∑jeVj
假設(shè)線性輸出為:
計(jì)算損失函數(shù):
損失函數(shù)越小越好
二、神經(jīng)網(wǎng)絡(luò)
2.1 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):
由輸入+隱層+輸出來構(gòu)成
從邏輯回歸到神經(jīng)元感知器:
已最簡單的結(jié)構(gòu)來剖析神經(jīng)網(wǎng)絡(luò):感知器
線性輸出:
z=θ0+θ1+θ2z=θ0+θ1+θ2
經(jīng)過sigmoid映射到0~1的范圍內(nèi)的概率:
a=g(z)=11+e?za=g(z)=11+e?z
利用閾值0.5作為判定是正類還是負(fù)類
添加少量的隱藏層:
2.2 為什么神經(jīng)網(wǎng)絡(luò)在分類問題中的效果比較好:
LR或SVM是線性分類器,是利用一條決策邊界,去將正負(fù)樣本區(qū)分開
對(duì)于非線性可以的情況:
SVM會(huì)用核函數(shù)來升維,但是做不了可視化,無法看到升維之后的樣本是什么樣子的,維度很高,無法判斷哪些特征有用,不可控性高。
如何用線性分類器做非線性分類——GBDT或kernel SVM,但是這些方法對(duì)劃分的準(zhǔn)確率卻沒有那么高。
神經(jīng)網(wǎng)絡(luò)如果劃分線性不可分的數(shù)據(jù):
左圖兩類樣本點(diǎn)的分割,線性分類器實(shí)現(xiàn)不了,右圖是利用兩條直線,將空間區(qū)分成了兩部分,求兩個(gè)直線的交集即可。
神經(jīng)元完成邏輯與:
如果X1=0,X2=0,經(jīng)過sigmoid之后,輸出p->0;
如果X1=0,X2=1,那么-10經(jīng)過sigmoid之后,p結(jié)果仍然接近于0
如果X1=1,X2=0,那么-10經(jīng)過sigmoid之后,p結(jié)果仍然接近于0
如果X1=1,X2=1,那么10經(jīng)過sigmoid之后,p結(jié)果接近于1
所以,感知器可以完成and的操作,當(dāng)兩個(gè)輸入都為1的時(shí)候,輸出才為1
神經(jīng)元完成邏輯或:
只要有1出現(xiàn),那么輸出都為1
神經(jīng)網(wǎng)絡(luò)如何完成非線性的分類:
構(gòu)建多個(gè)線性分類器,利用and操作來截出一個(gè)多邊形區(qū)域。找到三個(gè)綠色的區(qū)域,對(duì)綠色區(qū)域進(jìn)行一個(gè)or操作,就可以得到所有的綠色區(qū)域。
利用神經(jīng)網(wǎng)絡(luò)可以做任意的劃分
多加一個(gè)神經(jīng)元,可以多一條線,多加一層,可以多加一個(gè)or操作,多層可以實(shí)現(xiàn)異或問題。
神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):
如果不添加非線性的激活函數(shù)的話,相當(dāng)于線性變換的堆疊,還是沒有逼近任何非線性信號(hào)的能力。
沒有必要去深扣每個(gè)神經(jīng)元到底在提取什么信號(hào)
2.3 BP算法
正向傳播:求損失
反向傳播:回傳誤差,根據(jù)誤差信號(hào)修正每層的權(quán)重
前面的所有層都要對(duì)最后的預(yù)測負(fù)責(zé),所以要將誤差一層一層的往前傳,更新每個(gè)神經(jīng)元的參數(shù)。
以3層感知器為例:
標(biāo)準(zhǔn)答案是[d1,d2,…,dL](回歸利用L2損失)
求函數(shù)的最小值,一般用一階的方式來求解,二階的Hessian矩陣存儲(chǔ)所需內(nèi)存很大,難以實(shí)現(xiàn)。
SGD最小化誤差函數(shù):
復(fù)合函數(shù)f(g(h(x)))f(g(h(x)))的導(dǎo)數(shù),是鏈?zhǔn)椒▌t,也就是h′(x)?g(h(x))?f′(g(h(x)))h′(x)?g(h(x))?f′(g(h(x))),需要一步步往前推導(dǎo),得到f對(duì)x的偏導(dǎo)。
BP算法的示例:
希望找到合適的w和b,使得結(jié)果為0.01和0.99。
前向傳播計(jì)算誤差:
反向傳播計(jì)算梯度:
前向傳播計(jì)算損失
計(jì)算對(duì)w5的更新
計(jì)算對(duì)w1的更新
w1對(duì)Etotal都會(huì)起作用,也就是Etotal=Etotal1+Etotal2,是一個(gè)求和的過程。
反向傳播是將誤差對(duì)該權(quán)值的梯度回傳,利用該梯度進(jìn)行權(quán)重的更新。
總結(jié)
以上是生活随笔為你收集整理的一、深度学习背景与人工神经网络的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年汇算清缴怎么操作
- 下一篇: 三、深度学习框架Tensorflow