Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 4——神经网络(一)

此系列为 Coursera 网站机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning
参考资料:http://blog.csdn.net/scut_arucee/article/details/50144225


一、前言

1.1 分类器

当我们用机器学习算法构造一个汽车识别器时,我们需要一个带标签的样本集,其中一部分是汽车,另一个部分可以是其他任何东西,然后我们将这些样本输入给学习算法,以训练一个分类器。训练完毕后,我们输入一幅新的图像,让分类器判定这是否为汽车。


1.1 神经网络的优势

对于复杂的非线性分类问题,当特征变量个数 n 很大时,用逻辑回归时 logistic 函数g(θTx)中的 θTx 如果用二次多项式表示,则二次项数目很多,约为 n2 ,计算复杂度达到 O(n2) ;如果用三次多项式表示,则三次项数目更多,复杂度达 O(n3)

而神经网络能很好的解决上面那种复杂的非线性分类问题。


二、神经网络的模型

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 神经网络的假设函数

为了解释神经网络具体的计算步骤,我们先来说明一些符号:

a(j)i——第 j 层第 i 个神经元的激励(神经元读入数据后计算并输出的值);
Θj ——权重矩阵,控制着从第 j 层到第 j+1 层的函数映射。

下面我们看一下隐藏层的神经元是怎么计算它们的值的:

如果神经网络第 j 层有 sj 个单元,第 (j+1) 层有 sj+1 个单元,则 Θj 就是一个 sj+1(sj+1) 维的矩阵。(第 (j+1) 层的偏置单元 a(j+1)0 不必求,始终为 1 ,但第 j偏置单元对第 (j+1) 层有影响)
如上图, Θ1 3×4 的矩阵, Θ2 1×4 的矩阵。


三、前向传播

下面我们引入符号 z(j)k 来代替上面式子中括号里的部分:

a(2)1=g(z(2)1)
a(2)2=g(z(2)2)
a(2)3=g(z(2)3)

总之,对于第二层的第 k 个节点:

z(2)k=Θ(1)k,0x0+Θ(1)k,1x1++Θ(1)k,nxn

我们用向量表示 x z(j)

x=x0x1xnz(j)=z(j)1z(j)2z(j)n

根据上面的映射关系, a(1)=x ,可知:

z(j)=Θ(j1)a(j1)

j 层激励单元的向量表示:

a(j)=g(z(j))

-
计算完 a(j) 后,我们可以给第 j 层添加上偏置单元(a(j)0=1)。同前面一层,我们可以得到下一层激励单元的值:

z(j+1)=Θ(j)a(j)a(j+1)=g(z(j+1))

假设第 j+1 层为输出层,则:

hΘ(x)=a(j+1)=g(z(j+1))

这种从输入层的激励开始向前传播到隐藏层,再传播到输出层的行为叫做前向传播(Forward Propagation)。

看了这么多,神经网络到底在做什么呢?

对于上面神经网络的模型那张图,如果不看输入层,只看后面两层:

写出计算公式:

hΘ(x)=Θ(2)1,0a(2)0+Θ(2)1,1a(2)1+Θ(2)1,2a(2)2+Θ(2)1,3a(2)3

忽略一些上下标,看上去很像逻辑回归。

神经网络所做的事情很像逻辑回归,但它不是使用 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 ,按下图给神经网络分配权重:

hΘ(x)=a(2)=g(30+20x1+20x2)

-
又由于logistic函数 g(z) 有在 z>4.6 时越来越接近 1 ,在z<4.6时越来越接近 0 的趋势,如下图:

故我们可以得到神经网络的输出和输入的关系:

x1 x2 hΘ(x) 0 0 g(30)0 0 1 g(10)0 1 0 g(10)0 1 1 g(10)1

可以看到, hΘ(x)x1 or x2 ,该神经网络实现了与运算。

4.2 或运算(OR)

x1,x2{0,1},y=x1 and x2 ,按下图给神经网络分配权重:

hΘ(x)=a(2)=g(10+20x1+20x2)

画出真值表:

x1 x2 hΘ(x)
0 0 g(10)0
0 1 g(10)1
1 0 g(10)1
1 1 g(30)1

可以看到, hΘ(x)x1 or x2 ,该神经网络实现了或运算。

4.3 逻辑非(NOT)

x1{0,1},y= not x_{1}$,按下图给神经网络分配权重:

hΘ(x)=a(2)=g(1020x1)

画出真值表:

x1 hΘ(x)
0 g(10)1
1 g(10)0

可以看到, hΘ(x) not x_{1}$,该神经网络实现了逻辑非运算。

4.4 (NOT x1) AND (NOT x2 )

按下图给神经网络分配权重:

可以自己画真值表验证。

4.5 同或运算(XNOR)

按下图给神经网络分配权重:

仔细观察,可知

a(2)1=x1 and x2 ,即红色部分实现的是AND;
a(2)2= (not x1) and (not x2) ,即蓝色部分实现的是(NOT x1 ) AND (NOT x2 );
hΘ(x)=a(3)1=a(2)1 or a(2)2 ,即绿色部分实现的是OR;

通过真值表,我们会发现这个神经网络确实实现了同或运算(XNOR)。

通过这个例子我们可以看到,复杂函数可以通过一些简单函数的组合来实现。

比如神经网络的第二层可以计算输入层特征变量的函数;第三层可以以第二层为基础,计算更复杂的函数;第四层可以以第三层为基础计算比第三层还要复杂的函数,以此类推。神经网络运用更深的层数可以计算更复杂的函数,使其作为特征传递给最后一层的逻辑回归分类器,更准确地预测分类结果。


五.神经网络在多类别分类中的应用

在多类别分类中,我们的输出并不是一个数,而是一个向量,例如有一个三类别分类问题,我们要识别一个物体是行人,小汽车,摩托车还是卡车,则神经网络的模型可以如下图:

最后一层的输出层相当于有4个逻辑回归的分类器, hΘ(x)R4 ,更具体的说:

训练数据集是 (x(1),y(1)),(x(2),y(2)),,(x(m),y(1)) y(i) 一定是上面4个列向量中的一个。神经网络的目标是使 hΘ(x)y(i)

添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值