Coursera机器学习-第四周-Neural Network ForwardPropagation
2016-05-14 10:24
309 查看
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) |
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操作: |
神经网络的代价函数(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)——表示
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误
- 机器学习常见的算法面试题总结
- 不平衡数据处理技术——RUSBoost