Andrew Ng机器学习入门学习笔记(四)之神经网络(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SCUT_Arucee/article/details/50144225

一.神经网络的优势

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

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

二.神经网络的模型

1.神经元的模型

这里写图片描述

图中橘黄色部分即为一个神经元, x1,x2,x3 是其输入, hθ(x)=g(θTx)=11+eθTx ,我们称这是一个以S型函数作为激励函数的人工神经元。

2.神经网络的模型

神经网络是一组神经元的组合,如下:

这里写图片描述

神经网络的模型分为输入层,隐藏层和输出层,其中隐藏层可能有多层。每个层次包含一个或多个单元。如上图中输入层包括 x0,x1,x2,x3 四个单元,其中 x0=1 是偏置单元。上图的隐藏层只有一层,加上偏置单元一共有四个单元。上图的输出层只有一个单元。

三.神经网络的相关参数及前向传播计算

a(j)i ——第 j 层第 i 个神经元的激励

Θ(j) ——权重矩阵,控制着从第 j 层到第 j+1 层的函数映射。(为了以示区别,这里是大写的 Θ )

具体映射关系表现为:

a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3)=g(z(2)1)
a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3)=g(z(2)2)
a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3)=g(z(2)3)

hΘ(x)=a(3)1=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3)

如果神经网络第 j 层有 sj 个单元,第 (j+1) 层有 sj+1 个单元,则 Θ(j) 就是一个 sj+1(sj+1) 维的矩阵。

如上图, Θ(1) 是3*4的矩阵, Θ(2) 是1*4的矩阵。

x=x0x1x2x3z(2)=z(2)1z(2)2z(2)3R3

根据上面的映射关系以及 a(1)=x ,可知
z(2)=Θ(1)x=Θ(1)a(1)
a(2)=g(z(2))R3

给第二层增加偏置单元 a(2)0=1 之后, a(2)R4 ,同理
z(3)=Θ(2)a(2)
hΘ(x)=a(3)=g(z(3))
这种从输入层的激励开始向前传播到隐藏层,再传播到输出层的行为叫做前向传播(Forward Propagation)。

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

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

hΘ(x)=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3)
如果忽略一些上下标,则这看上去很像逻辑回归。

神经网络所做的事情很像逻辑回归,但它不是使用 x0,x1,x2,x3 作为输入特征来训练逻辑回归,而是通过另一组参数 Θ(1) x0,x1,x2,x3 映射为隐藏层的 a(2)1a(2)2a(2)3 作为输入特征。

四.利用神经网络解决复杂的非线性问题

1.首先用神经网络实现几个较为简单的例子:

①AND(与运算),其中 x1,x2{0,1} y=x1 AND x2

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

这里写图片描述

hΘ(x)=a(2)=g(z(2))=g(Θ(1)a(1))=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2)=g(30+20x1+20x2)

又由于S型函数 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 AND x2 ,该神经网络实现了与运算。

②OR(或运算),其中 x1,x2{0,1} y=x1 OR x2

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

这里写图片描述

hΘ(x)=a(2)=g(z(2))=g(Θ(1)a(1))=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2)=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 ,该神经网络实现了或运算。

③NOT(逻辑非),其中 x1{0,1} y= NOT x1

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

这里写图片描述

hΘ(x)=a(2)=g(z(2))=g(Θ(1)a(1))=g(Θ(1)10x0+Θ(1)11x1)=g(1020x1)

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

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

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

2.用神经网络实现稍复杂的函数

①(NOT x1 ) AND (NOT x2 )

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

这里写图片描述

hΘ(x)=a(2)=g(z(2))=g(Θ(1)a(1))=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2)=g(1020x120x2)

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

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

可以看到,该神经网络实现了(NOT x1 ) AND (NOT x2 )

②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;

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

这里写图片描述

该神经网络确实实现了 hΘ(x)=x1 XNOR x2

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

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

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

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

这里写图片描述

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

hΘ(x)=1000 代表预测结果为行人 ; hΘ(x)=0100 代表预测结果为小汽车;

hΘ(x)=0010 代表预测结果为摩托车; hΘ(x)=0001 代表预测结果为卡车。

训练数据集是 (x(1),y(1))(x(2),y(2))(x(m),y(m))

y(i) 一定是 1000010000100001 中的一个。

神经网络的目标是使 hΘ(x(i))y(i)

关于是神经网络更为深入的内容和反向传播等的学习笔记将在Andrew Ng机器学习入门学习笔记(四)之神经网络(二)记录。

猜你喜欢

转载自blog.csdn.net/SCUT_Arucee/article/details/50144225
今日推荐