ML 06 - Neural Network

186 阅读5分钟

神经网络表示

神经网络是一种机器学习算法,有别于线性回归、逻辑回归。

一、非线性假设

1. 引例

  1. 利用逻辑回归求解非线性分类问题

    1. 问题:房子如何能卖出?

      下面是两个特征的情况:

      image-20220504134418555.png

      然而当特征数量比较多时,如房子尺寸、卧室个数、层数、房龄等,那么假设函数中的 z 项就会复杂得多,带来了巨大的计算复杂度。

    2. 假设函数:

      g(θ0+θ1x1+θ2x2+θ3x1x2+θ4x12x2+θ5x13x2+θ6x1x22+)\begin{array}{l} g\left(\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}\right. +\theta_{3} x_{1} x_{2}+\theta_{4} x_{1}^{2} x_{2} \left.+\theta_{5} x_{1}^{3} x_{2}+\theta_{6} x_{1} x_{2}^{2}+\ldots\right) \end{array}

      若是特征个数比较多,比如说有 100 个,那么最终 z 就会有 大约 5000 个 x 项,这就造成了运算量过大的问题。

  2. 汽车分类问题(是否为汽车)

    1. 计算机眼中的汽车

      彩色图像是由BGR三层灰度叠加而成,而灰度图只有一层,一般灰度级的取值范围为[0, 255]

      image-20220504135109738.png

    2. 汽车检测模型

      1. 一般方法

        1. 收集图像信息(汽车与非汽车)

      image-20220504135845549.png

      1. 调出对应的训练像素点训练

      image-20220504135908350.png

      1. 形成模型,用以判别新图像

      image-20220504135948985.png

      1. 推广

        由两个像素点推广到整幅图像的像素点,进行处理。一副 50 * 50的灰度图由 2500 个灰度像素点,而一副RGB图拥有 3 * 2500 = 7500 个灰度像素点。

      image-20220504140017185.png

二、神经元和大脑

  1. 神经网络

    1. 起源:试图去模仿大脑的算法
    2. 发展历程:兴起于上世纪8、90年代,但是在90年代末期销声匿迹;但是最近几年又重现江湖。
  2. 假设

    1. 只需要用一个假设函数就能完成人脑的日常功能
    2. 神经重接实验:若一块大脑区域能处理光、声或触觉信号,那么可能存在着一种算法能同时处理视觉、听觉和触觉(通感)。也就不需要成百上千个程序来实现不同的功能。
  3. 大脑中的传感器互联

    image-20220504140335786.png

三、模型展示

  • 神经元在大脑中的陈列方式:

    image-20220504140557998.png

    1. 树突(dendrite):输入层
    2. 轴突(axon):输出层
    3. 细胞核(Nucleus):隐藏层,处理信息
  • 多个神经元协同工作:

    image-20220504141150377.png

1. 模型一

  1. 神经模型(逻辑单元)
    1. 术语:

      image-20220504142511808.png

      1. 激活函数:

        sigmoid,也即是神经元

      2. 参数(权重)

        θ\theta

      3. 偏移量

        bbx0x_{0},通常设置为 1

  2. 神经网络
    1. 展示

      image-20220504142720220.png

      其中的ai(j)a_{i}^{(j)}是第j层第i个神经元的激活函数,θ(j)\theta^{(j)}是从第 j 层到 第 j+1 层的权重阵列,图中的θ(j)\theta^{(j)}的尺为 3 * 4。

      另外,如果神经网络的第 j 层有有sjs_{j}个神经元,同时第 j + 1层有 sj+1s_{j+1}个神经元,那么 θ(j)\theta^{(j)}的尺寸就为: sj+1sj+1s_{j+1} * (s_{j} + 1)

    2. 术语:

      1. 输入层
      2. 隐藏层(全连接层)
      3. 输出层
    3. 计算过程

      a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))\begin{array}{l} a_{1}^{(2)}={g}\left({\left.\Theta_{10}^{(1)} x_{0}+\Theta_{11}^{(1)} x_{1}+\Theta_{12}^{(1)} x_{2}+\Theta_{13}^{(1)} x_{3}\right)}\right.\\ a_{2}^{(2)}={g}\left({\left.\Theta_{20}^{(1)} x_{0}+\Theta_{21}^{(1)} x_{1}+\Theta_{22}^{(1)} x_{2}+\Theta_{23}^{(1)} x_{3}\right)}\right.\\ a_{3}^{(2)}={g\left(\Theta_{30}^{(1)} x_{0}+\Theta_{31}^{(1)} x_{1}+\Theta_{32}^{(1)} x_{2}+\Theta_{33}^{(1)} x_{3}\right)} \quad \\ h_{\Theta}(x)=a_{1}^{(3)}=g\left(\Theta_{10}^{(2)} a_{0}^{(2)}+\Theta_{11}^{(2)} a_{1}^{(2)}+\Theta_{12}^{(2)} a_{2}^{(2)}+\Theta_{13}^{(2)} a_{3}^{(2)}\right) \end{array}

2. 模型二

  1. 模型一:基于向量实现(前向传播)

    1. 处理过程

      a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))\begin{array}{l} a_{1}^{(2)}={g}\left({\left.\Theta_{10}^{(1)} x_{0}+\Theta_{11}^{(1)} x_{1}+\Theta_{12}^{(1)} x_{2}+\Theta_{13}^{(1)} x_{3}\right)}\right.\\ a_{2}^{(2)}={g}\left({\left.\Theta_{20}^{(1)} x_{0}+\Theta_{21}^{(1)} x_{1}+\Theta_{22}^{(1)} x_{2}+\Theta_{23}^{(1)} x_{3}\right)}\right.\\ a_{3}^{(2)}={g\left(\Theta_{30}^{(1)} x_{0}+\Theta_{31}^{(1)} x_{1}+\Theta_{32}^{(1)} x_{2}+\Theta_{33}^{(1)} x_{3}\right)} \quad \\ h_{\Theta}(x)=a_{1}^{(3)}=g\left(\Theta_{10}^{(2)} a_{0}^{(2)}+\Theta_{11}^{(2)} a_{1}^{(2)}+\Theta_{12}^{(2)} a_{2}^{(2)}+\Theta_{13}^{(2)} a_{3}^{(2)}\right) \end{array}

      前向传播:从输入层输入数据,前向传播至第一隐藏层、第二隐藏层,然后再送入输出层输出

    2. 简化计算表示:

      1. 引入 z ,用来装载 g 的参数列表,例如 : z1(2)=Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3 z _{1}^{(2)} = \Theta_{10}^{(1)} x_{0}+\Theta_{11}^{(1)} x_{1}+\Theta_{12}^{(1)} x_{2}+\Theta_{13}^{(1)} x_{3},表示 第二层 第一个神经元的 x 多项式,对应的激活函数 a1(2)=g(z1(2))a^{(2)}_{1} = g( z^{(2)}_{1})。以此类推可以简化各个神经元的激活函数。
      2. x=[x0x1x2x3]z(2)=[z1(2)z2(2)z3(2)]z(2)=Θ(1)xa(2)=g(z(2))\begin{array}{l} x=\left[\begin{array}{l} x_{0} \\ x_{1} \\ x_{2} \\ x_{3} \end{array}\right] \quad {z^{(2)}}{}=\left[\begin{array}{c} z_{1}^{(2)} \\ z_{2}^{(2)} \\ z_{3}^{(2)} \end{array}\right] \\ z^{(2)}=\Theta^{(1)} x \\ a^{(2)}=g\left(z^{(2)}\right) \end{array}​.其中 Θ(1)\Theta ^{(1)}​是一个 3 * 4 的矩阵:[Θ10(1)x0Θ11(1)x1Θ12(1)x2Θ13(1)x3Θ20(1)x0Θ21(1)x1Θ22(1)x2Θ23(1)x3Θ30(1)x0Θ31(1)x1Θ32(1)x2Θ33(1)x3]\begin{bmatrix} \Theta_{10}^{(1)} x_{0} & \Theta_{11}^{(1)} x_{1} & \Theta_{12}^{(1)} x_{2} & \Theta_{13}^{(1)} x_{3}\\ \Theta_{20}^{(1)} x_{0} & \Theta_{21}^{(1)} x_{1} & \Theta_{22}^{(1)} x_{2} & \Theta_{23}^{(1)} x_{3}\\ \Theta_{30}^{(1)} x_{0} & \Theta_{31}^{(1)} x_{1} & \Theta_{32}^{(1)} x_{2} & \Theta_{33}^{(1)} x_{3} \end{bmatrix}.而 a(2)a^{(2)}是一个三维列向量。
      3. 同时在计算过程中,为了便于计算,我们也会加入一些项,会在隐藏层中加入激活函数a0(2)=1x0=1a^{(2)}_0 = 1 和 x_{0} = 1a(2)a^{(2)}也就变成了 4 维 向量, 从而 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)})
  2. 神经网络学习自身特征

    将之前层的输出作为最后一层隐藏层的特征输入,将神经网络的最后一层隐藏层和输出层挑选出来,则会得到一个类逻辑回归的假设函数:

    image-20220504150600048.png

    z=Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2)z = \Theta^{(2)}_{10}a^{(2)}_{0} + \Theta^{(2)}_{11}a^{(2)}_{1} + \Theta^{(2)}_{12}a^{(2)}_{2} + \Theta^{(2)}_{13}a^{(2)}_{3},则 hΘ(x)=g(z)h_{\Theta}(x) = g(z),本质上是逻辑回归算法。

  3. 其余的网络结构

    image-20220504152601752.png

每层依次为:输入层、隐藏层 1 、 隐藏层 2 、 输出层。

3. 示例和直觉理解

  1. 示例一(非线性分类示例:XOR/XNOR)

    1. x1x2x_{1}、 x_{2}是二值变量(0, 1)

    image-20220504152814129.png

    1. y = x1x_{1} XOR x2 x_{2}

      y = x1x_{1} XNOR x2 x_{2}

      y = NOT (x1x_{1} XOR x2 x_{2})

    2. 简例:AND

      神经元图例:

    image-20220504152913836.png

    其中的 + 1 表示为 x0=1x_{0} = 1,图中的 -30、+20、+20分别为 θ0\theta_{0}θ1\theta_{1}θ2\theta_{2}的值。所以假设函数为: hθ(x)=g(30+20x1+20x2)h_{\theta}(x) = g(-30 + 20 x_{1} + 20 x _ {2})

    g(z) [sigmoid] 函数图像如下:

    image-20220504153354246.png

    可以将 x1x_{1}x2x_{2}分别以值为0、1代入 函数可得 结果为:

    x1x_{1}x2x_{2}hθ(x)h_{\theta}(x)
    00g(30)0g(-30) \approx 0
    01g(10)0g(-10) \approx 0
    10g(10)0g(-10) \approx 0
    11g(10)1g(10) \approx 1
    1. 简例:OR

      hθ(x)=g(10+20x1+20x2)h_{\theta}(x) = g(-10 + 20 x_{1} + 20 x _ {2})

      x1x_{1}x2x_{2}hθ(x)h_{\theta}(x)
      00g(10)0g(-10) \approx 0
      01g(10)1g(10) \approx 1
      10g(10)1g(10) \approx 1
      11g(30)1g(30) \approx 1
    2. 简例:NOT

      这个例子只有一个变量,所以假设函数可以为 : hΘ(x)=g(1020x1)h_{\Theta}(x ) = g(10 - 20x_{1})

    3. 简例:(NOT x1x_{1})AND(NOTx2x_{2})

      1. 对于比较复杂的项,可以先进行展开
      2. 展开为 只有当 x1=x2=0x_{1} = x_{2} = 0时,整个式子才为 1,表示为:NOT(x1x_{1}ORx2x_{2}),将上面的OR例子中的各参数取反就行了,也即是 : hθ(x)=g(1020x120x2)h_{\theta}(x) = g(10 - 20 x_{1} - 20 x _ {2})

    主要就是给对应的变量乘上较大的权重,利用sigmoid函数取值来用概率输出对应分类。

  2. 示例二(x1x_{1} XNOR x2x_{2})

    1. 总结上面的 AND、NOT(x1x_{1}ORx2x_{2})、OR三者各自关系:

      image-20220504162043823.png

    2. 计算过程:

      1. 神经网络构成:

      image-20220504162145418.png

      第一层是输入层,第二层是包含了两个激活函数和a02=1a^{2}_{0} = 1的隐藏层,第三层还是一个隐藏层,将第二层的处理结果进行处理并将结果传入第四层输出层。其中a1(2)a^{(2)}_{1}a2(2)a^{(2)}_{2}a1(3)a^{(3)}_{1}分别表示了 AND、NOT - AND、OR关系。

四、多元分类

引例:判别公路上的物体

  1. 类型:行人、汽车、摩托、卡车

  2. 神经网络的构成:

    image-20220504162738713.png

  3. 输出层的规定:和之前的二值分类不同(可以直接返回数字),多分类长返回一个向量:

    hΘ(x)[1000],hΘ(x)[0100],hΘ(x)[0010],hΘ(x)[0001]h_{\Theta}(x) \approx\left[\begin{array}{l} 1 \\ 0 \\ 0 \\ 0 \end{array}\right], \quad h_{\Theta}(x) \approx\left[\begin{array}{l} 0 \\ 1 \\ 0 \\ 0 \end{array}\right], \quad h_{\Theta}(x) \approx\left[\begin{array}{l} 0 \\ 0 \\ 1 \\ 0 \end{array}\right], \quad h_{\Theta}(x) \approx\left[\begin{array}{l} 0 \\ 0 \\ 0 \\ 1 \end{array}\right].分别代表了不同的分类:行人、汽车、摩托、卡车等。​

  4. 训练集设置:

    (x(1),y(1))(x^{(1)},y^{(1)})(x(2),y(2))(x^{(2)},y^{(2)})(x(3),y(3))(x^{(3)},y^{(3)})(x(4),y(4))(x^{(4)},y^{(4)})、......、(x(m),y(m))(x^{(m)},y^{(m)}),其中 y(i)y^{(i)}为上面的四维向量,并且hθ(x(i))y(i)h_{\theta}(x^{(i)})\approx y^{(i)}