Machine Learning(5)—Lessons by Andrew Ng
来源:互联网 发布:js设置placeholder颜色 编辑:程序博客网 时间:2024/06/15 20:09
终于学习到了一个久仰大名的算法—神经网络算法(Neural Networks)!
Neural Networks的必要性
之前我们已经学习过linear regression和logistic regression,为什么还需要neural networks呢。举个例子:
在此图中,想要将两者分开,显然不太容易。如果使用logistic regression,需要添加很多x1和x2的非线性features,如:
这是对于仅有x1和x2的情况,一旦features的数量比较多时,非线性的features数量将会十分庞大,一方面十分容易over-fitting,一方面计算成本也过高。因此对于实际的机器学习问题,并不适合用logistic regression和linear regression去实现非线性的hypothesis。
Neural Networks模型建立
neural networks的建立就是为了模仿人类的大脑,这是我们目前所知的最棒的学习系统。因此神经网络的模型模仿了神经元。如图所示:
我们都知道,神经元有树突轴突,负责输入输出电信号,再传递给其他神经元。于是neural networks就建立了类似的多层的具备输入输出的网络。如图:每一个圆圈就类比着一个神经元,具有input(x1,x2,x3)和output(h(x))。
有时候输入会再加上一项x0,称为bias unit,基本默认为1:
其中表示h(x)依然应用的是sigmoid function,这是一个neuron with sigmoid activation function。而之前总是被称为parameter的θ,也可以称为weights。
以上是一个最简单的神经网络的模型,接下来我们看一下稍微复杂的更普遍的结构:
在这里有三层,input layer,hidden layer,output layer。其实hidden layer中的每一项a1,a2,a3都是上一个最简模型中的output。
Neural Networks运算
如图所示,一般input layer中的x1,x2,x3……就是来自training sets中的features,将其与θ组合,代入sigmoid activation function后得到的就是第二层的几个单元:a1,a2,a3,其实hidden layer就是第一层的输出(预测)。之后将a1,a2,a3当作输入,重复上一步,就得到了下一步的输出,在这个只有三层的神经网络中,也就是整个网络的输出(最后的结果)。
由于神经网络的层次性,这里的表示方式一定要区分清楚。比如上标表示的都是第几层,而下标表示的则是某一层的第几个单元。重点是θ的维度:行数为下一层的单元个数,列数为本层的单元个数。因为针对下一层的每个单元,都是上一层的每个单元与θ进行线性组合后得到的。因此θ的每一行表示的是组成该单元的那几个θ值。
一般情况下bias unit会被添加进来,就用z表示θ与x的组合:
Multi-class Classification
多类的分类问题对应的神经网络应该有multiple output units,最终的output layer不只有一个单元。用向量表示h(x)就应该是一个列向量:
分到哪一类里,那一类别对应的output unit就为1(事实上,output unit并不是直接输出1,而是哪一个output unit的输出最大,表示那个类别的可能性就最大,就将其分到那个类别里,然后人工地生成类似上图的列向量)。
Cost Function
neural networks的cost function形式和logistic regression很像:
其中K = number of output units/classes。
和logistic regression的cost function相比:
神经网络的增添了一个求和,是针对于每一个输出单元的。因为输出不仅仅有一个,我们取了最大的那个作为分类训练的结果,则其他所有的类别都被视为错误的,就会产生cost。
需要注意的是:神经网络cost function的第二部分正则化中,有三重的累加,其中的i并不是指training sets的个数。
Backpropagation Algorithm的引出
得到cost function后,就应该通过求出梯度使其为零,进而得到使cost function最小的合适的θ值。
在神经网络中,我们会使用一个叫做backpropagation的算法,来得到梯度。由于这个算法略微复杂,当时找了一些参考资料,综合理解了一下,打算在下一篇文章中详细介绍。
- Machine Learning(5)—Lessons by Andrew Ng
- Machine Learning(2)—Lessons by Andrew Ng
- Machine Learning(3)—Lessons by Andrew Ng
- Machine Learning(4)—Lessons by Andrew Ng
- Machine Learning(1)—Lessons by Andrew Ng
- 【机器学习】Machine Learning by Andrew Ng
- Machine Learning by Andrew Ng-----note
- Machine Learning by Andrew Ng --- K-means
- Machine Learning课程 by Andrew Ng
- Machine Learning(by Andrew Ng) 学习笔记
- Machine Learning by Andrew Ng --- Support Vector Machine
- Machine Learning by Andrew Ng --- neural network learning
- Machine Learning by Andrew Ng --- Logistic Regression by using Regularization
- Machine Learning (Andrew Ng )-Week 5
- Machine Learning by Andrew Ng ---Linear Regression with one variable
- Machine Learning by Andrew Ng---Linear Regression with multiple variables
- Machine Learning by Andrew Ng --- Logistic Regression with two classes
- Machine Learning by Andrew Ng --- Anomaly Detection and Recommender systems
- python网络爬虫1.1requests库
- scanf函数对异常输入的处理
- [BZOJ]2742 [HEOI2012] Akai的数学作业
- spring cloud + spring boot + springmvc+mybatis微服务云架构
- CentOS6.5 gcc-4.8.2安装步骤
- Machine Learning(5)—Lessons by Andrew Ng
- JAVA 实现Runnable接口
- AI3.0:哈希图来了!它将如何变革AI与区块链技术?
- CNN高效感受野的惊奇发现
- SQL优化
- 卸载lnmp,与卸载前该该备份的文件
- css字体缩放scale()使用实例
- IntelliJ IDEA 2017.2.4 x64 插件: .properties一键转.yml
- 命令行生成并直接运行jar包