Skip to content

Stanford机器学习笔记——Neural Network

1. Neural Network

  • ai(j):第 j 层的第 i 个单元
  • Θ(j):第 j 层到第 j+1 层映射的权重矩阵
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))

假设第 j 层单元数为 sj(不包括偏置单元),第 j+1 层单元数为 sj+1,则 Θjsj+1×(sj+1)

2. Cost Function

  • L:总层数
  • sl:第 l 层的单元数(不包括偏置单元)
  • m:样本个数
  • K:输出单元数
J(Θ)=1mi=1mk=1K[yk(i)log(hΘ(x(i)))k+(1yk(i))log(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θji(l))2

3. Backpropagation

假设只有一个样本 (x,y) 的情况,神经网络如下:

在 forward propagation 阶段:

a(1)=xz(2)=Θ(1)a(1)a(2)=g(z(2))    (add a0(2))z(3)=Θ(2)a(2)a(3)=g(z(3))    (add a0(3))z(4)=Θ(3)a(3)a(4)=hΘ(x)=g(z(4))

在 backpropagation 阶段,令 δj(l) 表示第 l 层第 j 个节点的误差,则:

δ(4)=a(4)yδ(3)=(Θ(3))Tδ(4).g(z(3))δ(2)=(Θ(2))Tδ(3).g(z(2))No δ(1)

其中 g(z(l))=a(l)(1a(l)) (sigmoid函数求导)。

推导过程

对于隐藏层:

δi(l)=Jzi(l)=Jai(l)ai(l)zi(l)

其中:

Jai(l)=Jz1(l+1)z1(l+1)ai(l)+Jz2(l+1)z2(l+1)ai(l)+...+Jzsl+1(l+1)zsl+1(l+1)ai(l)=j=1sl+1Jzj(l+1)zj(l+1)ai(l)=j=1sl+1Jzj(l+1)Θji(l)=j=1sl+1δj(l+1)Θji(l)ai(l)zi(l)=ai(l)(1ai(l))

因此:

δi(l)=(j=1sl+1δj(l+1)Θji(l))ai(l)(1ai(l))

所以:

δ(l)=(Θ(l))Tδ(l+1).a(l).(1a(l))

有了上面的推导之后,可以得到:

Θij(l)J(Θ)=J(Θ)zi(l+1)zi(l+1)Θij(l)=δi(l+1)aj(l)

4. 直观理解

在 forward propagation 阶段:

a1(3)=g(Θ11(2)a1(2)+Θ12(2)a2(2))

在 backpropagation 阶段:

δ1(2)=Θ11(2)δ1(3)+Θ21(2)δ2(3)

TIP

这里只是一个直观的解释,因此并未考虑偏置单元 a0(2) 以及 a1(2)z1(2)