神经网络 (Neural Networks)

来源:互联网 发布:福岛核事故知乎 编辑:程序博客网 时间:2024/05/27 00:29

1. Hypothesis 函数

1.二元分类:

以如下神经网络为例:

x0x1x2x3a(2)1a(2)2a(2)3hθ(x)

其Hypothesis函数为:

a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3)a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3)a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3)hΘ(x)=a(3)1=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3)

2.多元分类:

对如下神经网络:

x0x1x2xna(2)0a(2)1a(2)2a(3)0a(3)1a(3)2hΘ(x)1hΘ(x)2hΘ(x)3hΘ(x)4

有:

h(i)Θ(x)=h(i)Θ(x)1h(i)Θ(x)2h(i)Θ(x)3h(i)Θ(x)4,y(i){1000,0100,0010,0001}

其中h(i)Θ(x)计算方法与二元分类类似。
这一计算过程称为前向传播(forward propagation)。


2. Cost 函数

1. 定义

对多元分类神经网络,定义:
L = 网络层数
sl = 第l层的神经元数目(不包含bias units)
K = 分类数目

则其Cost函数为(加入了正则项):
J(Θ)=1mi=1mk=1K[y(i)klog((hΘ(x(i)))k)+(1y(i)k)log(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θ(l)j,i)2

要获得使Cost函数值最小的Θ值,需求得Θ(l)i,jJ(Θ)
这一过程可通过反向传播(backpropagation)算法实现:

2. 反向传播算法

给定训练样本{(x(1),y(1))(x(m),y(m))}
对所有(l,i,j),使Δ(l)i,j:=0作为初始值。

针对每个训练样本,做如下循环(t=1:m):
1. 使a(1):=x(t)
2. 通过前向传播,计算出 l=2,3,,La(l)的值
3. 借助y(t),计算出δ(L)=a(L)y(t)
4. 使用公式δ(l)=((Θ(l))Tδ(l+1)) . a(l) . (1a(l)),得到δ(L1),δ(L2),,δ(2)的值
5. Δ(l)i,j:=Δ(l)i,j+a(l)jδ(l+1)i
循环结束。

根据循环结果,可求得:
D(l)i,j:=1m(Δ(l)i,j+λΘ(l)i,j), if j0
D(l)i,j:=1mΔ(l)i,j, if j=0

最后,有:
Θ(l)ijJ(Θ)=D(l)ij

原创粉丝点击