簡單的反向傳播神經網路可以說就是將基本單元如感知器,組成層級結構,劃分出輸入層、隱含層、輸出層;不同層之間通過連線來形成耦合,從而組成乙個有功用的網狀演算法結構。
感知器可以通過迭代計算來逼近想獲取的結果,迭代過程中感知器不斷和計算結果反饋,較為常用的迭代計算方法有梯度下降法。當感知器組成網路之後,每個感知器如果獲得結果反饋就比較麻煩,這裡就要用到反向傳播方法。
假設我們有乙個計算過程y=
a∗b+
c ,其中a,
b,c 都是輸入變數,y是輸出。按照梯度下降法,針對
a 的迭代計算過程為ak
+1=a
k+η∂
y∂a=
ak−η
b。其中
η 是學習率,是乙個經驗值。以上對於b和c同理。如果我們把乘法提公升到加法的上一層,每一層之間用connect連線來耦合: co
nnec
t1:q
=a∗b
conn
ect2
:y=q
+c那麼a,
b,c 的迭代計算過程都要相應變化: ck
+1=c
k−η∗
1gra
d(q)
=1,q
k+1=
qk−η
∗1ak
+1=a
k−ηg
rad(
q)∗b
注意到這裡將q=
a∗b 單獨提取出來,其實是可以用微積分的鏈式法則來推導的。另外,
η 一般是個很小的值,是不能傳遞的,因此每一層之間要傳遞與
η 無關的提低。實際應用中需要使用鏈式法則來計算神經網路的反饋。
一般而言神經網路每一層的輸出是一堆資料,這裡我只推導簡單的反向傳播神經網路。前向單次計算過程是:先計算連線,輸入為上次的輸出;然後用h函式啟用連線計算後的結果,作為下一次的輸入。第k層的感知器輸入之後需要經過濾波,定義為啟用函式oq
=h(q
1,q2
...)
,層之間的連線函式為[q
1,q2
...]
=∑wq
piq 。其中iq
=op 。我們要反饋修正的是權值w。這裡定義神經網路層名為j->p->q。
設總的代價函式為co
st(o
)=12
(t−o
)2,則根據鏈式法則,修正量計算為gr
ad(w
qp)=
∂cos
t(o)
∂wqp
=∂co
st(o
)∂oq
∂oq∂
qq∂q
q∂wq
p=∂c
ost(
o)∂o
qδhq
iq=−
(t−o
q)δh
q(qq
)iq
其中t表示目標輸出,是人工標記結果。oq
是神經網路輸出層的輸出。輸出層沒有前向連線,修正量為δw
qp=−
ηgra
d(wq
p)。 然後是隱含層,隱含層是中間層,受到前方多重連線的影響,且不知道中間目標輸出t應該是多少,因此需要從輸出層向前遞推,其中nq
是第q層的感知器數量: gr
ad(w
pj)=
∂cos
t(o)
∂op∂
op∂q
p∂qp
∂wpj
=∑q=
1nq∂
cost
(o)∂
qq∂q
q∂op
δhpi
p=∑q
=1nq
∂cos
t(o)
∂qqw
qpδh
pip=
∑q=1
nq∂c
ost(
o)∂o
q∂oq
∂qqw
qpδh
pip=
∑q=1
nqgr
ad(w
qp)i
qwqp
δhpi
p 注意這裡的代價函式是cost(o),只和輸出有關,而不是co
st(o
p)等中間代價函式,後者是無法傳遞計算的。設h
(x)=
11−e
x ,即si
gmoi
d 函式,有δh
(qq)
=h(q
q)(1
−h(q
q))=
oq(1
−oq)
,則輸出端修正量為δw
qp=η
(t−o
q)oq
(1−o
q)iq
隱藏層修正量為δw
pj=−
η∑q=
1nqg
rad(
wqp)
iqwq
pop(
1−op
)ip=
−η∑q
=1nq
grad
(wqp
)wqp
op(1
−op)
卷積神經網路反向傳播推導
以tensorflow的卷積神經網路為例 卷積 池 卷積 池 全連線 softmax c1層 卷積神經網路的輸入是28 28的矩陣 a 經過f1 個5 5的卷積核k1 i i 1,2,f1 的卷積生成f1 個24 24大小的feature maps c1 i co nv2 a,k1 i,v alid...
機器學習10 神經網路反向傳播演算法
一,神經網路的代價函式 首先引入一些便於稍後討論的新標記方法 假設神經網路的訓練樣本有 m 個,每個包含一組輸入 x 和一組輸出訊號 y,l 表示神經網路層數,sl 表示每層的 neuron 個數 sl 表示輸出層神經元個數 sl 代表最後一層中處理單元的個數。將神經網路的分類定義為兩種情況 二類分...
神經網路學習引入 反向傳播
反向傳播技術是神經網路的核心技術之一。如果乙個運算我們能夠使用計算圖表式出來,那麼我們就能夠利用反向傳播的方法,即從後往前遞迴地呼叫鏈式法則來計算梯度。乙個簡單的函式f x y,z x y zf x,y,z x y z f x,y,z x y z的計算圖如下所示。假設輸入為 x 2,y 5,z 4,...