注:本文为学习笔记,描述与截图多来自课件和百科,学习网站为:https://www.coursera.org/learn/machine-learning/lecture/OAOhO/non-linear-hypotheses
面对很多非线性问题,我们需要采用神经网络的算法,比如图片的识别,当特征向量较多时,计算复杂度较高,传统的线性回归与逻辑回归将无法解决问题。
一、假设模型
要表示假设模型,需要先理解我们大脑中的神经元的工作原理,神经元是大脑中的细胞 ,神经元有如下图所示的细胞主体 神经元有一定数量的输入神经,这些输入神经叫做树突,可以把它们想象成输入电线,它们接收来自其他神经元的信息,神经元的输出神经叫做轴突,这些输出神经是用来给其他神经元传递信号或者传送信息的
简而言之神经元是一个计算单元,它从输入神经接受一定数目的信息并做一些计算。
在我们的模型中,树突类似于输入特征⋯,而输出则是假设函数的结果。 在此模型中,我们的输入节点有时称为``偏置单元''。 它始终等于1。
在神经网络中,我们使用与分类中相同的逻辑函数,我们有时称其为S型(逻辑)激活函数,在这种情况下,我们的“ theta”参数有时称为“权重”。
在视觉上,简单化的表示形式如下:
我们的输入节点(第1层),也称为“输入层”,进入另一个节点(第2层),该节点最终输出假设函数,称为“输出层”。
我们可以在输入和输出层之间有节点的中间层,称为“隐藏层”。
在此示例中,我们标记这些中间或“隐藏”层节点⋯,并将它们称为“激活单元”
如果只有一个隐藏层,函数将会如下:
每一个激励激活节点定义如下:
这就是说,我们通过使用3×4参数矩阵来计算激活节点。 我们将参数的每一行应用于输入,以获得一个激活节点的值。 我们的假设输出是应用于我们的激活节点的值之和的逻辑函数,该逻辑函数已与包含我们第二层节点权重的另一个参数矩阵相乘。
每个层都有自己的权重矩阵。
这些权重矩阵的维数确定如下:
如果网络在第j层有个单元,在第j + 1层有个单元,则的维数将为。
+1来自中的“偏置节点” 和.
换句话说,输出节点将不包括偏置节点,而输入节点将包括偏置节点。 下图总结了我们的模型表示:
示例:如果第1层有2个输入节点,而第2层有4个激活节点。的维数将为4×3,其中 = 2,sj+1=4, 所以。
二、假设模型的向量化表示
再次重申,以下是神经网络的示例:
我们将对上述函数进行矢量化实现。 我们将定义一个新变量包含我们g函数内部的参数。 在前面的示例中,如果用变量z替换为所有参数,则将得到:
换句话说,对于层j = 2和节点k,变量z将为:
向量表示为:
设置, 我们可以重写方程式为:
我们将维数为的矩阵(其中为激活节点的个数)乘以高度为(n+1)的向量 ,得到了高度为的向量.
现在,我们可以获取第j层的激活节点的向量,如下所示:
计算完之后,我们可以在第j层添加一个偏置单元(等于1),这将是元素,值为1。
为了计算最终假设,我们首先计算另一个z向量:
通过之后的下一个theta矩阵乘以所有激活节点的值,可以得到最终的z向量。最后一个矩阵将仅具有一行乘以一列,这样我们的结果就是一个数字。 然后,我们得到最终结果:
请注意,在最后一步中,在第j层和第j + 1层之间,我们所做的事情与在逻辑回归中所做的完全相同。 在神经网络中添加所有这些中间层,使我们可以更优雅地产生有趣且更复杂的非线性假设。
三、示例
预测 AND 的并运算,只有当与都为1时,运算结果才为1.
函数表示如下:
注:为偏差变量,值为1。
让我们将第一个theta矩阵设置为:
这个矩阵的设置只有在与都为1时,结果才为1,如下所示:
因此,我们通过使用小型神经网络模拟了计算机中的基本逻辑运算AND。下面来模拟OR运算,即与任意结果为1,结果都为1.
以此,我们可以得到对于AND, NOR, 和OR操作的矩阵:
我们可以合并这个结果,得到XNOR逻辑运算,即与都为0或与都为1。
在第一层过渡到第二层时,我们合并AND 和NOR运算,得到的如下:
在第二层到第三层时,我们使用OR运算,此时为:
所有的节点值如下:
最后可以看到,我们的XNOR运算符,使用了带有两个节点的隐藏层! 算法如下:
四、多类别分类
将数据分类为多个类别,我们让假设函数返回值为向量。 假设我们想将数据分类为四个类别之一,以下示例将演示如何完成此分类。 该算法将图像作为输入并相应地对其进行分类:
我们可以将结果类集定义为y:
每一个代表与汽车,行人,卡车或摩托车对应的不同图像。