此系列为 Coursera 网站机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning
参考资料:http://blog.csdn.net/scut_arucee/article/details/50144225
一、前言
1.1 分类器
当我们用机器学习算法构造一个汽车识别器时,我们需要一个带标签的样本集,其中一部分是汽车,另一个部分可以是其他任何东西,然后我们将这些样本输入给学习算法,以训练一个分类器。训练完毕后,我们输入一幅新的图像,让分类器判定这是否为汽车。
1.1 神经网络的优势
对于复杂的非线性分类问题,当特征变量个数
n
很大时,用逻辑回归时 logistic 函数
而神经网络能很好的解决上面那种复杂的非线性分类问题。
二、神经网络的模型
2.1 神经元的模型
在一个神经网络里,我们将神经元模拟成一个逻辑单元(logistic unit),如下图黄色圆圈所示。
x1,x2,x3 是它的输入,向神经元传输一些信息,神经元通过一些计算 hθ(x) ,然后输出计算结果。这里, hθ(x)=g(θTx)=11+e−θTx 。我们称之为由logistic 函数作为激励函数的人工神经元。与前面内容相对,有时,输入单元中会加一个偏置单元 (如上图浅蓝色圆圈所示) x0 , x0=1 。
2.2 神经网络的模型
神经网络是一组神经元的组合,如下:
同样的,有时我们会加上偏置单元,它们的值永远为 1 。图中网络的第一层也叫做输入层(Input Layer),第二层叫做隐藏层(Hidden Layer),隐藏层可以有多层,第三层叫做输出层(Output Layer)。
2.3 神经网络的假设函数
为了解释神经网络具体的计算步骤,我们先来说明一些符号:
Θj
——权重矩阵,控制着从第
j
层到第
下面我们看一下隐藏层的神经元是怎么计算它们的值的:
如果神经网络第
j
层有
如上图,
Θ1
是
3×4
的矩阵,
Θ2
是
1×4
的矩阵。
三、前向传播
下面我们引入符号 z(j)k 来代替上面式子中括号里的部分:
总之,对于第二层的第 k 个节点:
我们用向量表示
x
和
根据上面的映射关系, a(1)=x ,可知:
第 j 层激励单元的向量表示:
-
计算完
a(j)
后,我们可以给第
j
层添加上偏置单元(
假设第 (j+1) 层为输出层,则:
这种从输入层的激励开始向前传播到隐藏层,再传播到输出层的行为叫做前向传播(Forward Propagation)。
看了这么多,神经网络到底在做什么呢?
对于上面神经网络的模型那张图,如果不看输入层,只看后面两层:
写出计算公式:
忽略一些上下标,看上去很像逻辑回归。
神经网络所做的事情很像逻辑回归,但它不是使用 x0,x1,x2,x3 作为输入特征来训练逻辑回归,而是通过另一组参数 Θ(1) 将 x0,x1,x2,x3 映射为隐藏层的 a(2)1,a(2)2,a(2)3 作为输入特征。
四、利用神经网络解决非线性问题
首先,我们先来看下面两张图:
如左图所示, x1,x2 只能取0和1,图中只画了4个样本,我们可以把左图看做是右图的简化版本,用叉来代表正样本,圆圈代表负样本。在以前的例子中,我们会通过学习一个非线性的决策边界来区分正负样本,那么神经网络是如何做到的?
下面我们通过几个例子来看一下:
4.1 与运算(AND)
x1,x2∈{0,1},y=x1 and x2 ,按下图给神经网络分配权重:
-
又由于logistic函数
g(z)
有在
z>4.6
时越来越接近
1
,在
故我们可以得到神经网络的输出和输入的关系: