Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 4——神经网络(一)
此系列为 Coursera 网站机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning
参考资料:http://blog.****.net/scut_arucee/article/details/50144225
一、前言
1.1 分类器
当我们用机器学习算法构造一个汽车识别器时,我们需要一个带标签的样本集,其中一部分是汽车,另一个部分可以是其他任何东西,然后我们将这些样本输入给学习算法,以训练一个分类器。训练完毕后,我们输入一幅新的图像,让分类器判定这是否为汽车。
1.1 神经网络的优势
对于复杂的非线性分类问题,当特征变量个数
而神经网络能很好的解决上面那种复杂的非线性分类问题。
二、神经网络的模型
2.1 神经元的模型
在一个神经网络里,我们将神经元模拟成一个逻辑单元(logistic unit),如下图黄色圆圈所示。
2.2 神经网络的模型
神经网络是一组神经元的组合,如下:
同样的,有时我们会加上偏置单元,它们的值永远为
2.3 神经网络的假设函数
为了解释神经网络具体的计算步骤,我们先来说明一些符号:
下面我们看一下隐藏层的神经元是怎么计算它们的值的:
如果神经网络第
如上图,
三、前向传播
下面我们引入符号
总之,对于第二层的第
我们用向量表示
根据上面的映射关系,
第
-
计算完
假设第
这种从输入层的激励开始向前传播到隐藏层,再传播到输出层的行为叫做前向传播(Forward Propagation)。
看了这么多,神经网络到底在做什么呢?
对于上面神经网络的模型那张图,如果不看输入层,只看后面两层:
写出计算公式:
忽略一些上下标,看上去很像逻辑回归。
神经网络所做的事情很像逻辑回归,但它不是使用
四、利用神经网络解决非线性问题
首先,我们先来看下面两张图:
如左图所示,
下面我们通过几个例子来看一下:
4.1 与运算(AND)
-
又由于logistic函数
故我们可以得到神经网络的输出和输入的关系:
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
可以看到,
4.2 或运算(OR)
画出真值表:
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
可以看到,
4.3 逻辑非(NOT)
画出真值表:
|
|
---|---|
|
|
|
|
可以看到,
4.4 (NOT x1 ) AND (NOT x2 )
按下图给神经网络分配权重:
可以自己画真值表验证。
4.5 同或运算(XNOR)
按下图给神经网络分配权重:
仔细观察,可知
通过真值表,我们会发现这个神经网络确实实现了同或运算(XNOR)。
通过这个例子我们可以看到,复杂函数可以通过一些简单函数的组合来实现。
比如神经网络的第二层可以计算输入层特征变量的函数;第三层可以以第二层为基础,计算更复杂的函数;第四层可以以第三层为基础计算比第三层还要复杂的函数,以此类推。神经网络运用更深的层数可以计算更复杂的函数,使其作为特征传递给最后一层的逻辑回归分类器,更准确地预测分类结果。
五.神经网络在多类别分类中的应用
在多类别分类中,我们的输出并不是一个数,而是一个向量,例如有一个三类别分类问题,我们要识别一个物体是行人,小汽车,摩托车还是卡车,则神经网络的模型可以如下图:
最后一层的输出层相当于有4个逻辑回归的分类器,
训练数据集是