深度学习-人工神经网络概述

人工神经网络

  • 简述
    • 很多术语听起来很唬人,“人工神经网络”就属于其中之一。在很多人看来,我们对人类的神经系统还没有研究透彻,这就来了一个“人工的”神经网络,人脑这样复杂,那么人工神经网络一定相当高深莫测。如果遇到一个耐心的学术专家,花上一两个小时给你讲讲人工神经网络的底细,那么你会发现,就这么回事而已。但是,如果遇到一个不太耐心或者喜好卖弄的,那么不好意思,你除了对他肃然起敬剩下的就是“这东西此生与我无缘了”。
    • 人工神经网络这个名词听起来像是用人工的办法来模拟人脑,加上他使用了与生物有关的名词如“神经元”,让人感觉神秘的同时又会联想到仿生学或者认知科学等知识。但是,除了借用生物学上的一些名词,并且做了一些形象的比喻外,人工神经网络和人脑没有半点关系,它的本质就是数据结构中必定提到的一种概念—有向图,只不过这个有向图有一点特殊罢了。它的节点被称为神经元,它的有向弧被称为连接神经元的神经。
    • 深度学习-人工神经网络概述
      • 如图,所有的节点都是分层的,每一层节点可以通过有向弧指向下一层的节点,但是同一层的节点之间没有弧连接,而且每一个节点不能跨层到达某个节点。图中只有三层节点,但是理论上,人工神经网络的层数是任意的。但是,实际应用中不会设计超过5层的网络,因为层数过多,计算相当复杂。
      • 每一条弧上有一个值,称为权重或者权值,根据这些值可以使用一个非常简单的公式算出它们所指向节点的值。至于具体如何计算,暂时不说明。
      • 当然,为了方便交流,有一些约定俗成的说法。上图中最左边第一层被称为输入层,因为在各种应用中,这个模型的输入值只是赋予了这一层节点,图中其他节点的值都是根据这些输入值直接或者间接得到的。同样的,最右边那一层称为输出层,节点称为输出节点,因为我们想要通过这个模型获得的输出值都是这一层节点得到的。当然,中间各层被称为中间层,由于对外不可见,又叫做隐藏层(隐含层)。
      • 有弧上的值作为参数,前一层节点的值作为变量组成一个计算下一层节点值的函数,称为神经元函数。
    • 到此,人工神经网络的原理就讲完了,就是这样一个很基础很简单的模型却在如今被广泛使用。因为,如今很多人工智能的问题其实本质上都是多维空间进行模式分类的问题,而人工神经网络最擅长的就是模式分类。如今,模式分类广泛使用,如语音识别。机器翻译、人脸识别、疾病预测、股市预测等。
  • 原理
    • 一个模式的特征值(如坐标),从输入层开始,按照一定的规则和公式一层层向后传递,最后在输出层,哪个节点数值最大,输入的模式就被分在哪一类中。这就是人工神经网络的基本原理。
    • 在人工神经网络中,需要设计的部分只有两个,一个是它的结构,即网络分几层、每层几个节点、节点之间如何连接等;第二就是非线性函数f的设计,常用的是指数函数。(使用指数函数,人工神经网络的模式分类能力等价于最大熵模型)。
    • 值得一说的是,如果把不同输出节点上得到的值看成一种概率分布,那么这个神经网络就是一个概率模型了。
    • 但是,模型的参数,也就是弧上的权重是如何得到的呢,其实,和传统机器学习模型一样,也是训练得到的。
    • 人工神经网络的训练也分为有监督训练和无监督训练。对于成本函数的设计这里不多叙述。对于复杂的人工神经网络,训练计算量是非常巨大的,而且这还是一个NP-complete问题,因此很多机器学习专家投入其中寻找优秀的近似方法。
  • 与贝叶斯网络的关系
    • 其实,从图上看来,人工神经网络和贝叶斯网络十分类似,对于上面的那个有向图,说是贝叶斯网络也完全正确
    • 它们有很多共同之处。
      • 都是有向图,每一个节点的取值只取决于前一级的节点,与更前面的节点无关,也就是遵循马尔可夫假设。
      • 训练方法类似,且训练计算量都很大。使用人工神经网络是要有训练等待的准备。
      • 对于很多模式分类问题,效果上类似,两者都能解决,但是,效率不同。如果都看成统计模型,准确性也是类似的。
    • 它们有很多不同之处。
      • 人工神经网络在结构上是完全标准化的,而贝叶斯网络很灵活。有利有弊。
      • 虽然神经元函数为非线性函数,但是各个变量只能先进行线性组合,最后对一个变量(即前面组合出来的结果)进行非线性变换,因此计算机实现容易。而在贝叶斯网络中,变量可以组合成任意的函数,毫无限制,获得灵活性的同时大大加大了复杂性。
      • 贝叶斯网络更容易考虑上下文前后的相关性,因此可以解码一个输入的序列,比如将一段语音识别为文字。而人工神经网络的输出相对孤立,它可以识别一个个字,但很难处理一个序列,因此它主要的应用常常是估计一个概率模型的参数,比如机器翻译中语言模型参数的训练等,而不是作为一个解码器。
  • 补充说明
    • 这部分有趣的数学解释可以查看吴军的《数学之美》。
    • 如果你真的对神经网络感兴趣,尤其是对卷积神经网络感兴趣,那么不妨看看这本《深度学习之PyTorch实战计算机视觉》,我的下载区提供了下载,这虽然是讲PyTorch的书,但是前面一半几乎都是在详细讲解神经网络的构成和搭建,是我所见的为数不多的能把神经网络讲明白的书。(前提你有一定的线性代数基础)
    • 上面书籍下载仅供试读,不得用于商业用途,侵删。