【机器学习】神经网络 I

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

非线性假设

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

神经元与大脑

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

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

模型表示 I

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

在这里插入图片描述

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

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

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

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

h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 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)}) hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))

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

模型表示 II

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

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

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

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

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

这种方式称为前向传播

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

在这里插入图片描述

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

多元分类

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

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

在这里插入图片描述

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

在训练集中, y ( i ) y^{(i)} y(i) 用 4 维列向量表示 4 种不同的物体, x ( i ) x^{(i)} x(i) 为 4 种物体中的一种。因此训练集表示为 ( x ( 1 ) , y ( 1 ) ) , … , ( x ( m ) , y ( m ) ) (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)} hΘ(x)=y(i)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值