第九章 神经网络简介
非线性假设
非线性分类的例子:
非线性假设,会因为特征量的增多导致二次项数的剧增。
举个例子,在房价预测中,一栋房屋拥有的特征量为10000,那么它的二次项数为100*100/2,大约为5000个
关于计算机视觉的例子:
假设需要使用机器学习算法训练一个分类器,用来检测图像判断是否是汽车。
现在需要做一个非线性假设尽量分开这两类样本。
在这样的图像识别中,一个50*50像素的图片,拥有的特征量为2500,那么它的二次项数为2500*2500/2,大约为3百万个,这样的量级是比较离谱的。
因此,只是包括平方项或立方项,简单的logistic回归算法并不是一个在n很大时学习复杂的非线性假设的好方法,而神经网络被认为在学习复杂的非线性假设很好的算法。
神经元与大脑
介绍神经网络的背景知识。
起源:人们想尝试设计出模仿大脑的算法,它兴起于20世纪80年代。
如果能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,就是人工智能方向的发展。
模型展示I
这一节中将介绍运用神经网络时该如何表示假设或模型。
在一个神经网络里或在我们实现的人工神经网络里。将使用一个很简单的模型来模拟神经元的工作,将神经元模拟成一个逻辑单元。
这就是一个简单的模型,模拟神经元,可以将上图中的黄色圈看成类似于神经元细胞的东西,通过输入通道传递给它一些信息,经过神经元做一些计算,通过输出通道输出计算结果,这里的。
通常是参数向量:
现在讨论一个关于神经网络的术语,这是一个带有sigmoid或logistic激活函数的人工神经元,在神经网络中,激活函数是指代非线性函数,这里的。
神经网络其实是一组神经元连接在一起的集合:
上图是一个三层神经网络,第一层为输入层,第二层为隐藏层(隐藏层可能不止一个),第三层为输出层。增加一个额外的x0,它有时也被称作偏置单元或偏置神经元,一般x0=1。
为了更好的解释这个神经网络具体的计算步骤,下面介绍符号解释:
表示第j层第i个神经元或单位的激活项(指由一个具体神经元计算并输出的值);
表示权重矩阵,它控制从某一层到某一层的映射。
这就是计算的过程,通过这些方程,得出三个隐藏单元的激活值,利用这些值最终输出假设函数。
总结:从上述的图中,定义一个人工神经网络,其中的神经网络定义了函数h从输入x到输出y的映射,这些假设被参数化,将参数记为θ,也可以叫做权重。这样,只要改变θ就能得到不同的假设。
模型展示Ⅱ
在这一节中,将介绍如何高效进行计算,并展示一个向量化的实现方法。
将g函数里的参数设为,上标表示与第i层有关。得出:
向量化实现方法的过程:
这是计算的过程,也称为前向传播:依次计算激活项,从输入层到隐藏层再到输出层的过程。
神经网络架构图:
例子与直觉理解Ⅰ、Ⅱ
这一节将通过例子来介绍神经网络如何计算复杂非线性函数的输入。
单层神经元的案例:
And运算
Or运算
逻辑非运算
上面介绍了通过构造一个2层神经网络实现and函数、or函数和逻辑非运算的过程。
多层神经元的案例:
(x1 XNOR x2)逻辑运算
通过这些例子,可以对神经网络所学习的相当复杂的函数有一个直观的理解,例如:对于手写数字识别来说,所输入的图像或者原始的像素点通过第一个隐藏层计算出一系列的特征,再通过下一个隐藏层计算出更复杂的特征,然后往下更复杂,最后这些特征被用于逻辑回归分类器的最后一层来准确的预测出神经网络所看到的的数字。
多元分类
这一节讲述如何用神经网络解决多类别分类问题。
手写识别分类就是一个多类别分类问题,实现方法采用的本质是一对多法的拓展。
对于多分类问题,我们可以通过设置多个输出值来实现:
输出将是含4个数的向量,具体在程序中,可以通过每个输出值取最大值来判断属于哪一类。