课时8 神经网络

8.1 非线性假设

 

 

 

假如有一个监督学习分类问题,其训练集如图所示。你可以构造一个包含很多非线性项的逻辑回归问题来解决这个问题,当多项式足够多时,你就可以得到可以将正负样本分开的假设。当只有两个特征x1x2时,这种方法的确能得到不错的效果,因为你可以把x1x2的所有组合都包含在多项式中。但许多机器学习问题的特征远不止两项,假设我们预测未来半年内某个房子能否售出,对于房子可能会有上百个特征。这种情况下,尽管只考虑二次项,n=100时也会有5000个特征,而三次项更是有17000个。因此,包含所有的二次项并不是一个好方法,而且由于项数过多最后的结果很有可能是过拟合的。所以当n很大时,我们增加特征来建立非线性分类器并不是一个好做法。

 

 

 

 

 

如何让计算机在一组数据矩阵中识别出,这是一个汽车门把手?理想情况中,我们要做的就是给计算机一个带标签的数据集,告诉他哪个是汽车哪个不是,然后用一个新图片测试分类器,它可以识别出这是一个汽车。

 

 

 

 

 

我们从学习算法的样本中,找出一些汽车图片,和一些非汽车图片。并从图片中选择一组像素点位,图中用像素点(pixel)1和2标出,在坐标系中标出这幅汽车的位置,车的位置取决于像素点1和2的强度。用同样的方法处理其他图片,同样观察这两个像素点的像素强度,并把汽车标为+,非汽车标为-。最终,我们将发现坐标样本和非坐标样本分布在不同区域。因此,我们现在需要一个非线性假设,来尽量分开这两类样本,这里的特征空间的维数是多少?假设我们用50*50像素的图片,这已经很小了,但依然有2500个像素点,因此特征向量的元素数量已经达到2500,如果使用RGB彩色图像,那么每个像素点包含RGB三个值,n=7500。因此,我们要通过包含所有二次项特征,来学习得到非线性假设,总共有300万个特征,数字大的离谱。

 

8.2 神经元与大脑

神经网络的起源是人们想设计出模仿大脑的算法。大脑能学习处理各种各样不同的问题,那么如果让你写一个软件模拟大脑,可能会写成千上万的程序来分别模拟大脑能做的各种事情。但是我们假设不需要写这么多程序,只需要一个学习算法来模拟大脑处理的方法就可以了。有实验表明,当你切断耳朵与大脑负责听觉的皮层的神经,或皮肤与躯体触觉皮层的神经,将其联系到眼睛上,那么这两块皮层都可以学会视觉,这个实验被称之为神经重接实验。其理念就是如果有一块脑组织可以处理光、声音和触觉信号,那么也许存在一个学习算法,可以同时处理这些信号,而不是需要运行各种不同的程序。

 

 

 

非常令人惊奇的是,你几乎可以把任何传感器接入大脑,大脑的学习算法就可以找出学习数据的方法,并处理这些数据。如果我们能找出大脑的学习算法,那将是我们向人工智能迈进的最好尝试。

 

8.3-4 模型展示

神经网络模仿了大脑中的神经元或神经网络。我们的大脑中充满了这样的神经元,它是一个计算单元,它从输入通道接受一定数目的信息,并做一些计算,然后将结果输出到其他神经元节点。

 

 

 

我们将神经元模拟成一个逻辑单元,黄色圆圈代表一个神经元细胞体,我们通过输入通道传递给他一些信息,神经元做一些计算后通过输出通道输出结果。当画出如上图一个图表时,就表示对h(x)的计算,这是一个简单的模型。

有时我们会说这是一个带有sigmoid或logistic激活函数的人工神经元。在神经网络术语中,激活函数是指非线性函数g(z)。目前为止,我们一直称θ为模型参数,在一些文献中,也称其为权重。

 

 

 

神经网络就是一组神经元连接在一起的集合,具体来说,最左边是输入单元x123,有时也可以画上一个额外的节点x0(由于x0常等于1 所以也可以省略),中间是三个神经元,也可以再添加一个a0(一个额外的偏置单元)它的值永远是1。最后一层有第三个节点输出最后假设函数的计算结果。

术语:网络中的第一层也被称为输入层,我们在这一层输入特征。最后一层也称为输出层,它输出假设的最终计算结果。中间的那一层被称为隐藏层,在监督学习中,你能看到输入和输出,而隐藏层的值在训练集里是看不到的,实际上任何非输入输出层都可以被称为隐藏层。

注意第二层字母a右上角的角标表示其为第二层,a1(2)表示第二层的第一个激活项。在隐藏层中,所谓激活项是指由一个具体神经元计算并输出的值。

 

 

 

此外我们的神经网络被这些矩阵参数化,θ(j)就是权重矩阵,它控制从某一层,比如说从第一层到到第二层,或第二层到第三层的映射。下方就是图中所表示的计算。a1(2)等于sigmoid函数(也称为sigmoid/logistic激活函数)作用在这种输入的线性组合上的效果。在这里我们有三个输入单元和三个隐藏单元,θ(1)就是控制着从三个输入单元到三个隐藏单元的映射的参数矩阵,因此θ(1)就是一个3*4矩阵。更一般地,在j+1层有sj+1个单元,那么矩阵θ(j)即控制着第j层到j+1层的映射。它维度为图中最后一行。

最后在输出层,我们还有一个单元,它计算h(x)。另外,以上表示参数矩阵的Θ应当用大写。

 

 

 

之前我们说计算出假设输出的步骤是左边的这些方程,现在我们把g括号中的线性组合定义为z,与隐藏层的神经元命名规则相似,这三个z分别定义为z1(2)  z2(2)  z3(2),那么a1(2)=g(z1(2))。那么z即是某个特定的神经元的输入值x0x1x2x3的加权线性组合。现在观察灰色方框中的部分,可以观察出,我们非常容易将神经网络的计算向量化。具体而言,我们将特征向量x定义为x0x1x2x3组成的向量,再将z图所示定义,并且注意z是一个三维向量。接着我们可以向量化a的计算步骤如图所示,并且注意到a也是一个三维向量。

为了让我们的符号和接下来的工作相一致,在输入层中我们输入x,但也可以想象是第一层的激活项,并且定义a(1)=x,这样就可以把x替换掉。如此我便可以通过公式计算出a1(2) a2(2) a3(2)的值,但我还需要一个a0(2)的值才能计算出h(x),它对应于隐藏层的得到这个输出的偏置单元。加上这个值以后,a(2)就是一个四维特征向量,然后就可以通过公式计算出a(3)也就是输出层的h(x)。

这个计算h(x)的过程也称为前向传播,我们从输入单元的激活项开始然后进行前向传播给隐藏层,计算隐藏层的激活项,然后继续向前传播,计算出输出层的激活项。

 

 

 

如果只看神经网络最后的这一部分,这个计算用蓝色字体写出,看起来非常像标准的逻辑回归模型,只有字母写法不同。这实际上就是逻辑回归,但输入逻辑回归的特征是隐藏层计算出来的,也就是说这个神经网络做的事情就像是逻辑回归,但不是用最开始的输入作为特征,而是将原始特征做一系列变化后产生新特征,自己训练逻辑回归的特征。可以想象,根据参数选择的不同,有时可以学习到复杂而有趣的特征,以得到一个更好的假设函数。

 

 

 

神经网络的连接方式称为神经网络的架构,架构是指神经元不同的连接方式,上图包括了不同的神经网络架构。

 

8.5-6 例子与理解

 

 

 

假如我们有两个输入特征x1x2,它们都是二进制的,即这两个特征共能构成四个结果,但此例中的两个正样本和两个负样本可以看作一个复杂的机器学习问题的简化版本。我们需要学习一个非线性的判断边界来区别正样本和负样本。

具体来说,我们需要计算目标函数y=x1 XOR x2 或者 y=x1 XNOR x2 (XNOR 是NOT(x1 XOR X2)的另一种写法)

y=x1 XOR x2表示恰好这两个值其中一个等于1时,此式为真。 而y=x1 XNOR x2表示两者同时为真或同时为假时y=1。这个例子中,我们使用第二个式子结果会好一些(也许是因为选择了×为正样本,圆圈为负样本)

 

为了构建能够拟合XNOR运算的神经网络,先从一个较为简单的拟合AND运算的神经网络开始:

 

 

 

 

 

假设有两个二进制输入,任何拟合AND运算的神经网络呢?为此要在图中上面加入一个偏置单元,也称为+1单元。现在我对神经网络中的权重或说参数进行赋值,如图所示。在神经网络中标出参数,会比较方便,把参数想象成是网络边界中连接这些参数的权值,会更加容易理解。

再回顾一下S型激活函数g(z)的形状,取4.6时函数值为0.99,由对称性得-4.6时为0.01。试试两个特征对应的四种组合,从粉色框的表中可以看出,这个神经网络确实拟合了逻辑“与”的运算。而右图的神经网络可以实现或运算的功能。这样我们就可以理解神经网络中的单个神经元时如何被用来计算逻辑函数的。

 

 

 

上图实现了一个逻辑非运算,我们发现若要实现逻辑非运算,大体思想就是在预期得到非结果的变量前面放一个很大的负权重。现在思考一下如何实现(NOT x1)AND(NOT x2),首先只有当x1=x2=0时该式才为真,所以将这两个变量前面放两个较大的负权重即可实现。

 

 

 

现在我们把之前举例的三个逻辑运算组合到网络中,我们要实现一开始的那个复杂的例子,显然我们需要一个非线性的决策边界。

如图我们将之前的三个逻辑运算,按照颜色可以区分出下图中它们时如何组合在一起的。右上角是我们要拟合的数据,右下角是真值表,注意隐藏层有一个偏执单元。吴恩达说这就是为什么神经网络可以计算这种复杂的函数,但是我还是不太清楚为什么,他要表达的意思可能是 因为输入层输入后,需要经过几层的计算才能输出结果,所以复杂。

 

 

 

层次越多,最终得到的函数就越复杂。

 

 

 

这是一个早期的通过神经网络识别数字手写体的视频截图。你所输入的图像或者说原始的像素点,通过第一个隐藏层计算出一系列特征,再通过下一个隐藏层计算出更复杂的特征,最后这些特征被用于逻辑回归分类器的最后一层来准确的预测出神经网络所看到的数字。

 

8.7 多元分类

实际上,上面的数字手写体识别就是多元分类问题,它有十个分类结果。

 

 

 

多类别分类的方法实际上是一对多方法的拓展,这样的话,我们要做的就是建立一个有四个输出单元的神经网络,现在神经网络的输出是一个四维向量,用某一项置1其余项置0来表示预测结果。

 

posted @   诸葛村夫CC  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示