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

原创 2016年05月14日 10:24:30

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

这里写图片描述

第一层,称之为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)2a(2)3a(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类,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)——表示

版权声明:本文为博主原创文章,未经博主允许不得转载。

前向传播算法(Forward propagation)与反向传播算法(Back propagation)

虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解。因此特意先对深度学习中的相关基础概念做一下总结。先看看前向传播算法(Forward propagation)与...
  • bitcarmanlee
  • bitcarmanlee
  • 2017年12月16日 11:45
  • 203

AndrewNg机器学习第四周作业:关于使用逻辑回归、神经网络训练数据并应用之的心得

ex3的作业是根据已有的数据集 (20*20像素的图片,每个像素是一个feature,总共400个features,400个features作为输入X,数据集已经包含输出的y,代表这是什么数字) ...
  • csd54496
  • csd54496
  • 2016年10月30日 21:57
  • 1093

斯坦福大学Coursera机器学习作业答案

  • 2016年03月28日 14:25
  • 28.49MB
  • 下载

Stanford机器学习---第四周.神经网络模型

第四周 神经网络的表示Neural Networks:Representation 关键词:        复杂的非线性分类器、大脑的学习算法、神经网络模型、手写识别 写在前面的话:        初...
  • u012717411
  • u012717411
  • 2016年01月20日 20:28
  • 1175

machine-learning第四周 上机作业

本周开始学习大名鼎鼎的神经网络,赶脚忽然高大上了有木有,一键识别直男腐女,想想都醉了。话不多说,本期作业要点:...
  • dialoal
  • dialoal
  • 2016年01月12日 18:11
  • 1291

Coursera—machine learning(Andrew Ng)第四周编程作业

lrCostFunction.m function [J, grad] = lrCostFunction(theta, X, y, lambda) %LRCOSTFUNCTION Compu...
  • ccblogger
  • ccblogger
  • 2017年11月08日 10:59
  • 264

Coursera机器学习 week4 神经网络的表示 编程作业代码

这是Coursera上 Week4 的 “神经网络的表示” 的编程作业代码。经过测验,全部通过。下面是 lrCostFunction.mlrCostFunction.m 的代码:% lrCostFun...
  • Artprog
  • Artprog
  • 2016年05月21日 13:46
  • 5223

Coursera Machine Learning 第四周 quiz Neural Networks: Representation

Which of the following statements are true? Check all that apply. 答案CD Suppose you have...
  • mupengfei6688
  • mupengfei6688
  • 2016年11月11日 00:00
  • 4354

机器学习第四周

可怕,我已经overdue了两个星期的课程了,看到最后全部程序测试通过,我真的好感动。...
  • Clifnich
  • Clifnich
  • 2016年09月02日 10:40
  • 479

Stanford机器学习 第四周:神经网络学习

1 代价函数 神经网络分类表述: 代价函数(cost function) 2 反向传播算法 得到了神经网络的代价函数后,接下来要做的就是找到参数Θ使J(Θ)取得最小值: 假...
  • king_jie0210
  • king_jie0210
  • 2017年03月28日 18:31
  • 279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Coursera机器学习-第四周-Neural Network ForwardPropagation
举报原因:
原因补充:

(最多只允许输入30个字)