• 吴恩达机器学习笔记五_多元分类和神经网络


    为什么要使用神经网络

    在笔记三中,曾提到非线性拟合的问题。当时是通过构造特征向量,即由两个或以上的变量构造一个新的变量,增加( heta)的维度,以拟合出更细腻的曲线。下面是课件中类似的例子:

    可以看到,随着变量即数据集的维度增加,这种做法将会导致“维度灾难”,越来越不可行。就上述例子,以100维的数据集为例,二次项的构造复杂度是(O(n^2)),实际是5000;三次项复杂度是(O(n^3)),实际达到17000;当构造一百次项时,复杂度可能已经超出计算机所能处理的范围了。即使我们可以使用正则使假设函数简化,但正则化的过程也需要大量的数据集和大量的时间,同样不大可行。

    NG的例子举到这里就戛然而止,后面就引入神经网络(Neuron Network)了。就我个人来说,把本章的视频看完后,隐约感觉到,神经网络的思想和之前提到的构造特征向量有相似之处,同时避免了维度灾难。如下:

    上图是课件后面的部分。NG在这里根据各个层的特点进行分类:Layer1是输入层,Layer2是隐藏层,Layer3是输出层。对神经网络而言,输入层和输出层各只有一个,隐藏层根据实际情况可以有多个。看上去,每一个隐藏层都与上一层的输入量有关,同时根据各连接线的权值不同,实质上也是利用原有特征向量构造了新的特征向量。当然,这只是个人很主观的感觉。

    神经网络组成

    上面已经说到了,神经网络一般可以分成三个层次:输入层、隐藏层和输出层。对比着生物学上的神经系统,神经网络是由多个神经单元组成的。神经单元,即多个节点指向下一层的单节点这一结构,就是之前学过的多元对率回归所使用的结构。因而,我们可以把神经网络看成许多个神经单元的组合体。

    上图的神经单元中,我们发现在原有的特征值上添加了(x_0),这个值叫做“偏正量(bias unit)”。事实上神经网络的每一层都有这个偏正量。

    前向传播算法

    前向传播,直观上理解,就是从左向右赋权值,一层一层地构造隐藏层。对于每一层节点,它只能获取前一层节点的信息。

    需要注意的是,最后构造出来的特征向量维度是这样的:(S( heta^{(j)})=s_{j+1} imes(s_j+1)),其中j表示所在隐藏层的层数。最后得出的假设函数如下:

    [h_ heta(x)=g( heta^{(j)}a^{(j)}) ]

    [a^{(j)}=g( heta^{(j-1)}a^{(j-1)}) ]

    神经网络的例子

    逻辑运算

    在本例中,使用sigmoid函数的特殊性质,构造了上面三个基本的逻辑门:与门、或门和非门。理论上,这三个逻辑门可以通过复杂组合表示所有数学逻辑。同样的,可以使用这些神经单元的组合来构造“或非门”的神经网络。

    多分类问题

    先前提及的都是二元分类问题,现实中的分类问题往往是多元的。之前我们的做法是通过分割,将多元问题化解为多个二元问题.在神经网络中,我们可以通过多个节点的输出组合,来区分类型的不同。

  • 相关阅读:
    Com组件的两种复用方式:包容与集合的区别
    LAPACK/CLAPACK超级无敌算法库
    转:.h头文件 .lib库文件 .dll动态链接库文件关系
    python中类的变量与对象的变量
    重温:Martin Fowler的持续集成
    转:OOD的五个设计原则
    文章资源分享
    代码奔腾 Code Rush
    非ie6、ie7和ie8中iframe在dom中位置改变会引起iframe的指向重新加载
    前端开发利器webStorm
  • 原文地址:https://www.cnblogs.com/ChanWunsam/p/9867021.html
Copyright © 2020-2023  润新知