您的位置:首页 > 运维架构

Coursera机器学习-第四周-Neural Network ForwardPropagation

2016-05-14 10:24 274 查看

Neural NetWork的由来

先考虑一个非线性分类,当特征数很少时,逻辑回归就可以完成了,但是当特征数变大时,高阶项将呈指数性增长,复杂度可想而知。如下图:对房屋进行高低档的分类,当特征值只有x1,x2,x3时,我们可以对它进行处理,分类。但是当特征数增长为x1,x2....x100时,分类器的效率就会很低了。

这里的g(z)=1/(1+e−z)





符号说明:

a(j)i表示第j层网络的第i个神经元,例如下图a(2)1就表示第二层的第一个神经元

θ(j)表示从第j层到第j+1层的权重矩阵,例如下图所有的θ(1)表示从第一层到第二层的权重矩阵

θ(j)uv表示从第j层的第v个神经元到第j+1层的第u个神经的权重,例如下图中θ(1)23表示从第一层的第3个神经元到第二层的第2个神经元的权重,需要注意到的是下标uv是指v->u的权重而不是u->v,下图也给出了第一层到第二层的所有权重标注

一般地,如果第j层有sj个神经元(不包括bias神经元),第j+1层有sj+1个神经元(也不包括bias神经元),那么权重矩阵θj的维度是(sj+1×(sj+1))

Forward propagation



第一层,称之为input Layer x={x1,x2,x3}

第二层至最后一层,成为hidden layers: a(2)2,a(2)1,a(2)3

最后一层是output layer: hθ(x)

通俗点说,向前传播就是上层处理完的数据作为你的输入数据,然后进行处理(权重),再传给下一层,这样逐层处理,最后输出。

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)
a(2)4=g(θ(1)40x0+θ(1)41x1+θ(1)42x2+θ(1)43x3)
hθ(x)=a(3)1=g(θ(2)10a(2)0+θ(2)11a(2)1+θ(2)12a(2)2+θ(2)13a(2)3)

由上述公式,我们可以看出: 第二层的第一个神经元a(2)1,等于g(θ(1)10x0+θ(1)11x1+θ(1)12x2+θ(1)13x3),其中,θ(1)10x0代表第一层的第0个神经元(也就是bias unit)与第二层的第1个神经元的权重乘以x0+θ(1)11x1第一层的第1个神经元与第二层的第1个神经元的权重乘以x1+θ(1)12x2第一层的第2个神经元与第二层的第1个神经元的权重乘以x2+θ(1)13x3第一层的第3个神经元与第二层的第1个神经元的权重乘以x3。也就是第二层的每个神经元都需要通过上一层的每个神经元经过一个权重的处理,作为自己的初始值。a(2)2,a(2)3,a(2)4也是如此。当到输出层时,hθ(x)=a(3)1=g(θ(2)10a(2)0+θ(2)11a(2)1+θ(2)12a(2)2+θ(2)13a(2)3), 这时候轮到第二层的权重矩阵来进行处理了,跟上面类似,不赘述了。

Vectorized Implementation



将上图内容提取出来:

a(1)=x=⎡⎣⎢⎢⎢x0x1x2x3⎤⎦⎥⎥⎥,z(2)=⎡⎣⎢⎢⎢z(2)1z(2)1z(2)1⎤⎦⎥⎥⎥,θ(1)=⎡⎣⎢⎢⎢θ(1)10θ(1)20θ(1)30θ(1)11θ(1)21θ(1)31θ(1)12θ(1)22θ(1)32θ(1)13θ(1)23θ(1)33⎤⎦⎥⎥⎥,

更新公式简化为:

z(2)=θ(1)a(1)

a(2)=g(z(2))

z(3)=θ(2)a(2)

a(3)=g(z(3))=hθ(x)

可以看到,我们由第一层的值,经过第一层的权重处理,得到第二层的值;由第二层的值,经过第二层的权重处理,计算第三层的值,得到预测的输出,计算的方式一层一层往前走的,这也是前向传播的名称由来。

与Logistic Regression的关系:



将上述图片抽离出来:



将a(2)1,a(2)2,a(2)3记为x1,x2,x3, 这是不是一个没有隐藏层的神经网络了?hθ(x)=a(2)1=g(θ0x0+θ1x1+θ2x2+θ3x3)=g(θTx),这不就是逻辑回归的表达式么?

线性不可分问题:



实现AND操作:


图中{-30,20,20}分别表示{θ(1)10,θ(1)11,θ(1)12},代入g(z),得到如下图所示的真值表:



实现OR操作:


实现NOT操作:


实现NAND操作:


实现XNOR操作:
该神经网络用到了之前的AND操作(用红色表示)、NAND操作(用青色表示)和OR操作(用绿色表示),从真值表可以看出,该神经网络成功地将(0, 0)(1,1)分为一类,(1,0)(0,1)分为一类,很好解决了线性不可分的问题。



神经网络的代价函数(Cost Function):


符号说明:

m — 训练example的数量

K — 最后一层(输出层)的神经元的个数,也等于分类数(分K类,K≥3)

y(i)k — 第i个训练exmaple的输出(长度为K个向量)的第k个分量值

(hθ(x(i)))k — 对第i个example用神经网络预测的输出(长度为K的向量)的第k个分量值

L — 神经网络总共的层数(包括输入层和输出层)

Θ(l) — 第l层到第l+1层的权重矩阵

sl — 第l层神经元的个数, 注意i从1开始计数,bias神经元的权重不算在正则项内

sl+1 — 第l+1 层神经元的个数

参考文章:

机器学习公开课笔记(4):神经网络(Neural Network)——表示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习