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

Neural NetWork的由来

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

符号说明:

  • 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

Coursera机器学习-第四周-Neural Network ForwardPropagation_第1张图片
第一层,称之为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

Coursera机器学习-第四周-Neural Network ForwardPropagation_第2张图片
将上图内容提取出来:
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的关系:
Coursera机器学习-第四周-Neural Network ForwardPropagation_第3张图片
将上述图片抽离出来:

Coursera机器学习-第四周-Neural Network ForwardPropagation_第4张图片
a(2)1 , a(2)2 , a(2)3 记为 x1,x2,x3 , 这是不是一个没有隐藏层的神经网络了? hθ(x)=a(2)1=g(θ0x0+θ1x1+θ2x2+θ3x3)=g(θTx) ,这不就是逻辑回归的表达式么?

线性不可分问题:

Coursera机器学习-第四周-Neural Network ForwardPropagation_第5张图片

实现AND操作:

Coursera机器学习-第四周-Neural Network ForwardPropagation_第6张图片
图中{-30,20,20}分别表示{ θ(1)10 , θ(1)11 , θ(1)12 },代入 g(z) ,得到如下图所示的真值表:
Coursera机器学习-第四周-Neural Network ForwardPropagation_第7张图片

实现OR操作:

实现NOT操作:

Coursera机器学习-第四周-Neural Network ForwardPropagation_第8张图片

实现NAND操作:

Coursera机器学习-第四周-Neural Network ForwardPropagation_第9张图片

实现XNOR操作:

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

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

这里写图片描述

符号说明:

  • m — 训练example的数量
  • K  — 最后一层(输出层)的神经元的个数,也等于分类数(分 K 类, K3
  • 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)——表示

你可能感兴趣的:(机器学习)