Neural Networks Learning
Neural network model
Forward propagation:
cost function
notation:
a(j)i
= “activation” of unit i in layer j
Θ(j)
= matrix of weights controlling function mapping from layer j to layer j+1
hθ(x(i))k=a(3)k
is the activation (output value) of the k-th output unit
y=⎡⎣⎢⎢⎢⎢⎢⎢⎢yk=11yk=20yk=30⋮yk=100⎤⎦⎥⎥⎥⎥⎥⎥⎥,⎡⎣⎢⎢⎢⎢⎢⎢⎢010⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥,…or⎡⎣⎢⎢⎢⎢⎢⎢⎢100⋮1⎤⎦⎥⎥⎥⎥⎥⎥⎥
是one-hot编码。
【备注:one-hot编码的优点:不同数字如(0,1,….9)之间的欧式距离是相等的。】
y(i)k=
第i个样本的的第j个输出单元。the k-th output unit of the i-th example
L=
网络层的总数,包括输入层与输出层。the number of the layers,include input layer and output layer
J(θ)=−1m∑i=1m∑k=1k[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1s(l+1)(Θ(l)j,i)2
backpropagation algorithm
Backpropagation:
Training set {
(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))
} .m examples.
Set
Δ(l)ij=0
(for all l,i,j) ,used to comput
∂∂Θ(l)i,jJ(Θ),
Cycle accumulation
For training example t=1 to m:
1. Set
a(1):=x(t)
2.执行前向传播,分别计算
a(l)
for
l=2,3,…,L
3.用
y(i)
,通过
δ(L)=a(L)−y(t)
计算输出层的损失。
4.Compute
δ(L−1),δ(L−2),…,δ(2).δ(l)=((Θ(l))Tδ(l+1)).∗a(l).∗(1−a(i))
//
g′(z(l))=a(l).∗(1−a(i))
5.
Δ(l)i,j:=Δ(l)i,j+a(l)jδ(l+1)i
or with vectorization,
Δ(l):=Δ(l)+δ(l+1)(a(l))T
.
ENDFOR
hense we update our new
Δ
matrix.
-
D(l)i,j:=1m(Δ(l)i,j+λΘ(l)i,j),ifj≠0
-
D(l)i,j:=1mΔ(l)i,j,ifj=0
Thus we get
∂∂Θ(l)i,jJ(Θ)=D(l)i,j
partial derivative work processes
g′(z(l))=a(l).∗(1−a(i))
推导过程:
已知:
g(z(l))=11+e−z(l)=a(l)
g′(z(l))=(sigmoid(z(l)))′
=(11+e−z(l))′
=−1⋅1(1+e−z(l))2⋅(1+e−z(l))′
=−1(1+e−z(l))2⋅(e−z(l))′
=−1(1+e−z(l))2⋅e−z(l)⋅(−z(l))′
=−1(1+e−z(l))2⋅e−z(l)⋅−1
=(e−z(l)+1)−1(1+e−z(l))2
=11+e−z(l)−1(1+e−z(l))2
=g(z(l))⋅(1−g(z(l)))
=a(l)⋅(1−a(l))
反向传播部分的计算比较繁琐,特别作了一张简化了的网络示意图。实际效果与课程中样例是一致的。
a(1)=x(i)
是样本的输入层,图中示意X有两个特征,另外增加一个偏置量
a(1)0
a(2)
层是隐藏层,有三个节点,
a(1)∗θ(1)
后输出
z(2)
,
z(2)
再经过激活函数sigmoid输出
a(2)
。隐藏层添加一个偏置量
a(2)0
a(3)
是输出层,也有激活的过程,输出的
a(3)1=y1
对应公式里的
(hθ(x(i)))k=1,a(3)2=y2
对应公式里的
(hθ(x(i)))k=2
,
hθ(x(i))=[y(i)1,y(i)2]
回顾一下神经网络的损失函数:
J(θ)=−1m∑i=1m∑k=1k[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1s(l+1)(Θ(l)j,i)2
计算损失:
已知前提:
1)
hθ(x(i))
就是输出层的输出结果,那么
hθ(x(i))=a(L)=sigmoid(z(L))
2)
z(L)=θ(L−1)⋅a(L−1)
3)
J(Θ)
考虑单条训练样本省略m,将输出值作为整体计算,即将
yk
表达为
y
,同时省略正则项可以表示为:
J(θ)=−[y⋅log(a(L))+(1−y)log(1−a(L))]
。
4) 输出层的误差定义为
δ(L)=a(L)−y
θ(L)
的梯度:
∂J(Θ)∂θ(L)
,在上图的3层网络中
θ(L)=θ(2)
计算该梯度目的是为了计算
θ(L):=θ(L)−∂J(Θ)∂θ(L)
∂J(Θ)∂θ(L)=∂J(Θ)∂a(L)⋅∂a(L)∂z(L)⋅∂z(L)∂θ(L)
∂J(Θ)∂a(L)=a(L)−y(1−a(L))⋅a(L)
∂a(L)∂z(L)=a(L)⋅(1−a(L))
∂z(L)∂θ(L)=a(L−1)
合并:
∂J(Θ)∂θ(L)=a(L−1)⋅(a(L)−y)
(非输出层)
δ(l)=a(l)⋅δ(l+1)