本文为机器学习的学习总结,讲解神经网络。欢迎交流

非线性假设

如果我们有一个分类问题,其训练集如下:

【机器学习】神经网络 I

如果我们使用逻辑回归模型进行拟合,这样复杂的图形需要高阶多项式,而当特征变量数量增加时,其二次项会呈 O(n2)O(n^2) 的速度增长,即解空间会随着特征变量的增加而急剧膨胀。这样的模型很容易出现过拟合的问题,并且计算量极大。但如果选取的特征变量较少时,很难拟合出上图中复杂的决策边界。

例如下面的例子,我们构造一个识别汽车的分类器。为画图方便,取车上的 2 个像素点,画出训练集如下:

【机器学习】神经网络 I

此时汽车与非汽车被分为两类:

【机器学习】神经网络 I

假设图像是 50×50 像素,则特征空间的维数为 2500。如果要包含所有的二次项特征来学习得到的非线性假设,大约需要 300 万个特征。

因此,在 nn 很大时,简单的逻辑回归模型不是学习复杂的非线性假设的好方法,因为特征过多。而神经网络被证明是学习复杂非线性假设的很好的算法,即使输入特征空间很大也能轻松解决。

神经元与大脑

神经网络算法是一种很古老的算法,但因为计算量过大,后来人们很少使用。随着计算机计算能力的突飞猛进,神经网络算法由出现在人们的视野中。

神经网络起源于人类用计算机对大脑的模拟。神经网络中神经元的连接方式称为神经网络的架构。

模型表示 I

我们使用一个很简单的模型来模拟神经元的工作,将神经元模拟成一个逻辑单元。

【机器学习】神经网络 I

神经元的左边的输入通道传递一些信息,由神经元进行计算,并通过右边的输出通道输出计算到的结果。这里 hθ(x)=11+eθTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}},其中 x,θx,\theta 分别为特征和参数的列向量。有时我们还会在输入层添加一个额外结点 x0x_0,被称为偏置神经元。在神经网络中,**函数代指非线性函数 g(z)=11+ezg(z)=\frac{1}{1+e^{-z}},参数 θ\theta 被称为权重。

神经网络的计算步骤如下:
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3) a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)

a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3) a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)

a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3) a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)

hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2)) h_\Theta(x)=a_1^{(3)}=g(\Theta_{10}^{(2)}a_0^{(2)}+\Theta_{11}^{(2)}a_1^{(2)}+\Theta_{12}^{(2)}a_2^{(2)}+\Theta_{13}^{(2)}a_3^{(2)})

我们用 ai(j)a_i^{(j)} 表示第 jj 层中第 ii 个神经元的**项,即输出值。Θ(j)\Theta^{(j)} 为控制从第 jj 层到第 j+1j+1 层映射的参数矩阵,维度为 sj+1×sjs_{j+1}×s_j,其中 sjs_j 表示第 jj 层的神经元个数。通过改变 Θ\Theta,我们得到不同的假设(函数)。

模型表示 II

我们需要高效计算,并展示一个向量化的实现方法,可以帮助我们学习复杂的非线性假设函数。

在神经网络的计算步骤中,我们将 gg 函数括号内的部分定义为 z1(2)z^{(2)}_1,有 a1(2)=g(z1(2))a_1^{(2)}=g(z^{(2)}_1)。**项的计算中,可以将其对应到矩阵乘法。设 x=[x0x1x2x3],x0=1x=\left[ \begin{matrix} x_0\\ x_1\\x_2\\x_3 \end{matrix} \right],x_0=1z(2)=[z1(2)z2(2)z3(2)]z^{(2)}=\left[ \begin{matrix} z_1^{(2)}\\ z_2^{(2)}\\z_3^{(2)} \end{matrix} \right]。**项的计算可以参数化为:
z(2)=Θ(1)x z^{(2)}=\Theta^{(1)}x

a(2)=g(z(2)) a^{(2)}=g(z^{(2)})

gg 作用于 z(2)z^{(2)} 中的每个元素。因为 xx 为第一层的**项,为符号统一,定义 x=a(1)x=a^{(1)},则此时 z(2)=Θ(1)a(1)z^{(2)}=\Theta^{(1)}a^{(1)}。再加上偏置神经元 a0(2)=1a^{(2)}_0=1,则:
z(3)=Θ(2)a(2) z^{(3)}=\Theta^{(2)}a^{(2)}

hΘ(x)=a(3)=g(z(3)) h_\Theta(x)=a^{(3)}=g(z^{(3)})

这种方式称为前向传播

我们盖住左边的部分,最右边的部分是一个逻辑回归模型:

【机器学习】神经网络 I

神经网络中,算法自己训练逻辑回归模型中的输入特征 a1,a2,a3a_1,a_2,a_3,因此逻辑回归模型将得到更复杂的特征,从而实现更多的功能。

多元分类

数字识别是一个典型的神经网络用于多元分类问题的例子,我们再举一个例子来说明如何将神经网络运用到多元分类问题上。

有行人、汽车、摩托车、火车 4 类图片,我们需要将输入的图片进行分类。建立一个有 4 个输出单元的神经网络,则此时 hΘ(x)R4h_\Theta(x)\in \mathbb{\mathbb{R}}^4,输出变为了 4 维的向量。

【机器学习】神经网络 I

我们用 4 个输出单元分别判断是否是行人、汽车、摩托车、火车。当为行人时,网络输出 hΘ(x)[1000]h_\Theta(x)≈\left[ \begin{matrix} 1\\ 0\\0\\0 \end{matrix} \right],其余同理。

在训练集中,y(i)y^{(i)} 用 4 维列向量表示 4 种不同的物体,x(i)x^{(i)} 为 4 种物体中的一种。因此训练集表示为 (x(1),y(1)),,(x(m),y(m))(x^{(1)},y^{(1)}),…,(x^{(m)},y^{(m)})。我们希望找到一个方法,让 hΘ(x)=y(i)h_\Theta(x)=y^{(i)}

相关文章:

  • 2022-01-31
  • 2021-11-09
  • 2021-04-10
  • 2022-12-23
  • 2021-11-23
猜你喜欢
  • 2021-11-28
  • 2021-05-15
  • 2021-11-26
  • 2021-04-23
  • 2021-07-09
  • 2021-12-06
相关资源
相似解决方案