发表于|更新于
|阅读量:
一个隐藏层、单输出的全链接神经网络
考虑如下所示的一个全连接的简单神经网络
该神经网络的两个输入分别为x1和x2,输出为y^。input Layer 和 Hidden Layer 之间 weight 为
w11(1)w21(1)w31(1)w12(1)w22(1)w22(1)R3×2
Hidden Layer 和 Output Layer 之间的 weight 为[w11(2)w12(2)w13(2)]R1×3。
我们用 sigmoid 函数 δ 作为激活函数,对于 δ(x),有 δ′(x)=δ(x)(1−δ(x))
我们来看这个神经网络的工作过程
w11(1)w21(1)w31(1)w12(1)w22(1)w22(1)⋅[x1x2]=[z1z2]
δ(Z)=δ(z1)δ(z2)δ(z3)=h1h2h3
[w11(2)w12(2)w13(2)]⋅h1h2h3=y^
现在我们采用最小二乘法来定义 Cost。即
E=21⋅(y^−y)2
我们最终的目标,是求 E 对每个 weight 的偏导来进行梯度下降。根据微分的链式法则(Chain rule),有
∂wmn(1)∂E=∂y^∂E⋅∂hm∂y^⋅∂zm∂hm⋅∂wmn(1)∂zm
在这个例子里,m∈(1,2,3),n∈(1,2)
易得
∂y^∂E=y^−y(1.1)
∂hm∂y^=w1m(2)(1.2)
∂zm∂hm=hm⋅(1−hm)(1.3)
∂wmn(1)∂zm=xn(1.4)
于是
∂wmn(1)∂E=∂y^∂E⋅∂hm∂y^⋅∂zm∂hm⋅∂wmn(1)∂zm=(y^−y)⋅w1m(2)⋅δ′(zm)⋅xn=(y^−y)⋅w1m(2)⋅hm⋅(1−hm)⋅xn
一个隐藏层、多输出的全链接神经网络
该神经网络的输入为x1x2x3x4
输出为y1^y2^y3^y4^
input Layer 和 Hidden Layer 之间 weight 为w11(1)w21(1)w31(1)w41(1)w51(1)w61(1)w12(1)w22(1)w32(1)w42(1)w52(1)w62(1)w13(1)w23(1)w33(1)w43(1)w53(1)w63(1)w14(1)w24(1)w34(1)w44(1)w54(1)w64(1)R6×4
Hidden Layer 和 Output Layer 之间的 weight 为w11(2)w21(2)w31(2)w12(2)w22(2)w32(2)w13(2)w23(2)w33(2)w14(2)w24(2)w34(2)w15(2)w25(2)w35(2)w16(2)w26(2)w36(2)R3×6
令E=∑i=1321⋅(yi^−yi)2
则∂yi^∂E=yi^−yi
根据链式法则
∂wmn(1)∂E=i=1∑p∂yi^∂E⋅∂hm∂yi^⋅∂zm∂hm⋅∂wmn(1)∂zm=i=1∑p(yi^−y)⋅w1m(2)⋅δ′(zm)⋅xn=i=1∑p(yi^−y)⋅w1m(2)⋅hm⋅(1−hm)⋅xn
其中,p表示输出的向量个数,m表示隐藏层的神经元个数,n表示输入的特征数
多个隐藏层,多输出的全链接神经网络
(未完待续)
PS:梯度消失和梯度爆炸本质上是一样的,都是因为网络层数太深而引发的梯度反向传播中的连乘效应。