机器学习笔记--神经网络简介

注:本文为学习笔记,描述与截图多来自课件和百科,学习网站为:https://www.coursera.org/learn/machine-learning/lecture/OAOhO/non-linear-hypotheses


面对很多非线性问题,我们需要采用神经网络的算法,比如图片的识别,当特征向量较多时,计算复杂度较高,传统的线性回归与逻辑回归将无法解决问题。

一、假设模型

要表示假设模型,需要先理解我们大脑中的神经元的工作原理,神经元是大脑中的细胞 ,神经元有如下图所示的细胞主体 神经元有一定数量的输入神经,这些输入神经叫做树突,可以把它们想象成输入电线,它们接收来自其他神经元的信息,神经元的输出神经叫做轴突,这些输出神经是用来给其他神经元传递信号或者传送信息的

简而言之神经元是一个计算单元,它从输入神经接受一定数目的信息并做一些计算。

在我们的模型中,树突类似于输入特征X_1X_n,而输出则是假设函数的结果。 在此模型中,我们的X_0输入节点有时称为``偏置单元''。 它始终等于1。

在神经网络中,我们使用与分类中相同的逻辑函数\frac{1}{1+e^{-\theta^{T}X}},我们有时称其为S型(逻辑)激活函数,在这种情况下,我们的“ theta”参数有时称为“权重”。

在视觉上,简单化的表示形式如下:

我们的输入节点(第1层),也称为“输入层”,进入另一个节点(第2层),该节点最终输出假设函数,称为“输出层”。

我们可以在输入和输出层之间有节点的中间层,称为“隐藏层”。

在此示例中,我们标记这些中间或“隐藏”层节点a_{0}^{2}a_{n}^{2},并将它们称为“激活单元”

如果只有一个隐藏层,函数将会如下:

每一个激励激活节点定义如下:

这就是说,我们通过使用3×4参数矩阵来计算激活节点。 我们将参数的每一行应用于输入,以获得一个激活节点的值。 我们的假设输出是应用于我们的激活节点的值之和的逻辑函数,该逻辑函数已与包含我们第二层节点权重的另一个参数矩阵\Theta ^{(2)}相乘。

每个层都有自己的权重矩阵\Theta ^{(j)}

这些权重矩阵的维数确定如下:

如果网络在第j层有s_{j}个单元,在第j + 1层有s_j_+_1个单元,则\Theta ^{(j)}的维数将为s_j_+_1\times(s_j+1)

+1来自\Theta ^{(j)}中的“偏置节点” x_0\Theta_{0}^{(j)}.

换句话说,输出节点将不包括偏置节点,而输入节点将包括偏置节点。 下图总结了我们的模型表示:

示例:如果第1层有2个输入节点,而第2层有4个激活节点。\Theta^{(1)}的维数将为4×3,其中s_j = 2,s_{j+1} = 4sj+1​=4, 所以s_{j+1} \times (s_j + 1) = 4 \times 3

 

二、假设模型的向量化表示

再次重申,以下是神经网络的示例:

我们将对上述函数进行矢量化实现。 我们将定义一个新变量z_k^{(j)}包含我们g函数内部的参数。 在前面的示例中,如果用变量z替换为所有参数,则将得到:

换句话说,对于层j = 2和节点k,变量z将为:

向量表示为:

设置x = a^{(1)}, 我们可以重写方程式为:

我们将维数为s_j\times (n+1)的矩阵\Theta ^{(j-1)}(其中s_j为激活节点的个数)乘以高度为(n+1)的向量a^{(j-1)} ,得到了高度为s_j的向量z^{(j)}.

现在,我们可以获取第j层的激活节点的向量,如下所示:

计算完a^{(j)}之后,我们可以在第j层添加一个偏置单元(等于1),这将是元素a_0^{(j)},值为1。

为了计算最终假设,我们首先计算另一个z向量:

通过\Theta ^{(j-1)}之后的下一个theta矩阵乘以所有激活节点的值,可以得到最终的z向量。最后一个矩阵\Theta ^{(j)}将仅具有一行乘以一列a^{(j)},这样我们的结果就是一个数字。 然后,我们得到最终结果:

请注意,在最后一步中,在第j层和第j + 1层之间,我们所做的事情与在逻辑回归中所做的完全相同。 在神经网络中添加所有这些中间层,使我们可以更优雅地产生有趣且更复杂的非线性假设。

三、示例

预测x_{1} AND x_{2}的并运算,只有当x_{1}x_{2}都为1时,运算结果才为1.

函数表示如下:

注:x_{0}为偏差变量,值为1。

让我们将第一个theta矩阵设置为:

这个矩阵的设置只有在x_{1}x_{2}都为1时,结果才为1,如下所示:

因此,我们通过使用小型神经网络模拟了计算机中的基本逻辑运算AND。下面来模拟OR运算,即x_{1}x_{2}任意结果为1,结果都为1.

以此,我们可以得到对于AND, NOR, 和OR操作的\Theta ^{(1)}矩阵:

我们可以合并这个结果,得到XNOR逻辑运算,即x_{1}x_{2}都为0或x_{1}x_{2}都为1。

在第一层过渡到第二层时,我们合并AND 和NOR运算,得到的\Theta ^{(1)}如下:

在第二层到第三层时,我们使用OR运算,此时\Theta^{(2)}为:

所有的节点值如下:

最后可以看到,我们的XNOR运算符,使用了带有两个节点的隐藏层! 算法如下:

四、多类别分类

将数据分类为多个类别,我们让假设函数返回值为向量。 假设我们想将数据分类为四个类别之一,以下示例将演示如何完成此分类。 该算法将图像作为输入并相应地对其进行分类:

我们可以将结果类集定义为y:

每一个y^{(i)}代表与汽车,行人,卡车或摩托车对应的不同图像。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值