人工智能首页 > 深度学习 > 正文

深度学习中的神经网络(六)

2018-10-20 阅读888次

  原力君在系列的第五篇《人工智能系列(五) 深度学习简介》中提到深度学习可以看作是一种更高级的函数拟合方法;人工神经网络、激活函数、代价函数、梯度下降、反向传播是深度学习的几个关键点;常见的深度学习神经网络结构有多层感知机、DNN、CNN、RNN等。从另一个角度看,不管是哪种网络结构,其根本还是从传统的神经网络、多层感知机发展而来的。本篇聊聊神经网络和多层感知机。

  

人工智能系列(六)深度学习中的神经网络


  我们在上一篇中提到高中学过的线性拟合,线性回归。神经网络在深度学习中的作用,就类似于线性回归方程y=ax+b的作用。从另一个角度看,线性回归方程y=ax+b就是一个最简单的神经网络。在实际工程中,我们的研究对象可能比较复杂,很难用一个线性方程来表示其模型。值得高兴的是,研究者已经证明了一个事实:人工神经网络可以用来表征任何形式的函数。

  人工神经元是人工神经网络的基础

  与人的大脑神经网络类似,人工神经网络的基础是人工神经元。我们先介绍一种简单的人工神经元:感知机。感知机,顾名思义就是用来感知输入数据是否符合某一类特性或者是否属于某一类物体的;它的输出是0或1,其中0表示不属于,1表示属于);感知机的结构如图所示。

  

人工智能系列(六)深度学习中的神经网络


  感知机的输出是输入的分段线性函数,输出的表达式如下:

  

人工智能系列(六)深度学习中的神经网络


  可能有朋友会问:就这么简单一个东西,能用来搞深度学习吗?哲学中有一句话说得好,那就是量变引起质变。我们看看,这么一个简单的感知器组合起来是什么样子:

  

人工智能系列(六)深度学习中的神经网络


  所以说,不要小瞧一个简单的东西。话不多说,我们继续回到深度学习。我们希望的是能够通过调整那些参数w1,w2,…,wn和b从而使得其output连续的变化,进而可以利用已知的输入数据和输出数据来优化这些参数,使得神经网络可以更好地拟合输入输出数据的函数关系。但是感知器的output函数输出只有两个数,显然是不连续的,参数的微调并不能带来输出的微量变化。

  为了让我们可以通过微调神经网络的参数来拟合函数关系,实践家们给出了一种更实用的人工神经元:sigmoid神经元。Sigmoid神经元与感知器的结构是一模一样的,唯一不同的是output不再是一个分段函数,而变成了一个sigmoid连续函数。如下图所示,它相当于把感知机的分段函数给用一个圆滑的曲线连续化了。

  

人工智能系列(六)深度学习中的神经网络


  Sigmoid函数的表达式为

  

人工智能系列(六)深度学习中的神经网络


  因此sigmoid神经元的输出表达式为

  

人工智能系列(六)深度学习中的神经网络


  

人工智能系列(六)深度学习中的神经网络


  上面的描述中,不管output是输入的分段函数形式还是sigmoid函数形式,这些函数都称为神经元的激活函数。

  多层感知机、DNN、RNN与CNN

  

人工智能系列(六)深度学习中的神经网络


  前面我们提到,无数个简单的人工神经元可以组成一个复杂的神经网络。在深度学习中,神经网络的结构大概可以用上图表示。图中可以看到,神经网络分为很多层。输入端的网络称为输入层,输出端的网络称为输出层,输入层和输出层中间的所有网络都称为隐藏层。隐藏层数目比较多的神经网络,常常被称为多层感知机;但是有时候隐藏层数非常多,而且为了应对层数增多带来的梯度消失问题引入了新的激活函数(如ReLU、maxout等函数),人们常常用深度神经网络(DNN)来表示这种网络。

  值得一提的是,我们提到的神经网络的输出都是只与输入有关,相当于给定输入和参数,就可以计算得到输出,我们称这样的网络为前馈神经网络。有时候为了解决复杂的问题,神经网络的输出不仅仅与输入有关,还与输出有关。这样相当于把输出反馈到了神经网络的输入端,形成了一个反馈闭环,我们称这样的网络为递归神经网络(RNN)。

  深度神经网络DNN的网络节点之间通常是全联接的,随着网络层数的增加,需要优化的变量参数会出现深度爆炸。为了解决这个问题,深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级:输入层 -卷积层 -降维层 -卷积层 - 降维层 -- .... -- 隐藏层 -输出层。CNN大大减少了网络参数的数量,CNN常见结构如下图所示(不明觉厉,看看就好,还是啃啃专业资料才能懂):

  

人工智能系列(六)深度学习中的神经网络


  一句话总结:人工神经网络的基础是人工神经元,常用的神经元激活函数为sigmoid,应对深度学习的激活函数为ReLU、maxout等函数;多层感知机与DNN结构一致,激活函数有区别;CNN可以用来解决DNN网络参数太多的问题;RNN为带有反馈的神经网络。


随意打赏