美文网首页python小白
人工神经网络(1)

人工神经网络(1)

作者: Byte猫 | 来源:发表于2019-03-22 12:15 被阅读0次

    神经网络其实是一个非常宽泛的称呼,它包括两类,一类是用计算机的方式去模拟人脑,这就是我们常说的ANN(人工神经网络),另一类是研究生物学上的神经网络,又叫生物神经网络。对于计算机人士而言,肯定是研究前者。
    人工神经网络(Artificial Neural Network,即ANN),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。

    一、神经网络三次热潮

    历史上,神经网络的发展并不是一帆风顺...
    二十世纪四十年代 M-P 神经元模型、Hebb 学习律出现后,五十年代出现了以感知机、Adaline 为代表的一系列成果。后来因为单层神经网络无法解决非线性问题,而多层网络的训练算法尚看不到希望,神经网络研究进入“冰河期”。哈佛大学的 Paul Werbos 在 1974 年发明 BP 算法时,正值“冰河期”,因此未受到重视。
    1983 年,物理学家 John Hopfield 利用神经网络,在旅行商问题这个 NP 完全问题的求解上获得了当时最好的结果,引起轰动。稍后,UCSD 的 Rumelhart 等人重新发明了 BP 算法,再次掀起研究神经网络的热潮。二十世纪九十年代中期,随着统计学习理论和支持向量机的兴起,神经网络学习的理论性质不够清楚、试错性强、在使用中充斥大量“窍门”的弱点更为明显,于是神经网络的研究又进入低谷。
    2010 年前后,随着计算能力的迅猛提升和大数据的涌现,神经网络研究在“深度学习”的名义下又重新崛起,先是在 ImageNet 等若干竞赛上以大优势夺冠,此后谷歌、百度、脸书等公司纷纷投入巨资进行研发,神经网络迎来第三次高潮。



    从单层神经网络,到两层神经网络,再到多层神经网络,下图说明了,随着网络层数的增加,以及激活函数的调整,神经网络的非线性分界拟合能力不断增强。


    二、神经网络组成单元——人工神经元(neuron)

    人工神经元(neuron)是神经网络中最基本的结构,也可以说是神经网络的基本单元,它的设计灵感完全来源于生物学上神经元的信息传播机制。我们学过生物的同学都知道,神经元有两种状态:兴奋和抑制。一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。
    在人工神经网络中也是如此——



    人工神经元接收来自 n 个其他神经元传递过来的输入信号 x,这些输入信号通过带权重 w 的连接(connection)进行传递,加权求和后通过“激活函数”(activation function) f 处理产生神经元的输出 y。
    在此基础上,科学家又提出了偏置的概念。



    偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。
    因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。W参数的作用是决定分割面的方向,b参数的作用是移动分割面。
    根据激活函数的不同人工神经元可以分成两类:

    1、线性神经元

    线性单元的激励函数是线性函数。



    线性函数的公式如下:



    也就是

    2、非线性神经元

    自然界中很多问题都是非线性的,而线性函数不管怎么组合都是线性的,这就需要用到非线性函数,用非线性函数作激活函数的神经元叫非线性神经元。
    非线性激活函数提高了模型的表达能力。
    激活函数的作用有二:一是加入非线性因素,二是可以充分组合特征。

    (1)Sgn函数---阶跃函数

    sgn函数的数学形式是:




    在当做激活函数时,常常使用sgn函数的一种变体。


    Sgn函数优缺点
    优点:简单直观;
    缺点:不光滑,不连续。

    (2)Sigmoid函数---S函数

    Sigmoid函数(也叫Logistic 函数)是一个有着优美S形曲线的数学函数,在逻辑回归、人工神经网络中有着广泛的应用。Sigmoid函数的值域范围限制在(0,1)之间(exp函数使得结果一定是正数),我们知道[0,1]与概率值的范围是相对应的,这样sigmoid函数就能与一个概率分布联系起来了。它可以将一个实数映射到(0,1)的区间,可以用来做二分类。
    Sigmoid函数的数学形式是:



    在图形上sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。输入越强,神经元激活得越快(激活率越高)

    Sigmoid函数优缺点
    优点:能够把输入的连续实值压缩到0到1之间;
    缺点:容易饱和
    反向传播求误差梯度时,因求导涉及除法,当输入非常大或非常小的时候很容易就会出现梯度消失的情况(反向传播接近于0的梯度),导致最终权重基本没什么更新从而无法完成深层网络的训练

    (3)tanh函数---双曲正切函数

    tanh 函数是sigmoid函数的一种变体,以0点为中心。取值范围为 [-1,1] ,而不是sigmoid函数的 [0,1] 。
    tanh函数的数学形式是:



    Tanh函数优缺点
    优点:0均值,能够压缩数据到-1到1之间;
    缺点:同Sigmoid缺点,容易梯度饱和

    (4)ReLU函数---修正线性单元

    ReLU起源于神经科学的研究(2001年,Dayan、Abott从生物学角度模拟出了脑神经元接受信号更精确的激活模型),常常使用在深度神经网络中作为激活函数。
    ReLU函数的数学形式是:



    ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制。可别小看这个简单的操作,正因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。尤其体现在深度神经网络模型(如CNN)中,当模型增加N层之后,理论上ReLU神经元的激活率将降低2的N次方倍。

    ReLU函数优缺点
    优点:
    由于非负区间的梯度为常数,因此不存在梯度消失问题(Vanishing Gradient Problem),使得模型的收敛速度维持在一个稳定状态;
    相比于Sigmoid/Tanh需要计算指数,ReLU只需要一个阈值就可以得到激活值,所以运行速度快;
    缺点:
    不以零为中心;
    训练的时候很脆弱,有可能导致神经元坏死(解决方法为设置合适的较小的learning rate);

    三、神经元的连接结构

    人之所以拥有智能,则是因为数量庞大的神经细胞以某种非常特殊的方式互相连接着,可见计算网络中节点如何连接对构建智能机器至关重要。
    可以将神经元的连接结构分成以下几种类型:

    1、顺序结构(前馈神经网络)

    前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元的输入只来自前一层的神经元的输出,各层间没有反馈。
    前馈神经网络是目前应用最广泛、发展最迅速的人工神经网络之一,对外界输入样本有非常强的识别与分类能力。

    前馈神经网络的特点:感知

    2、循环结构(反馈神经网络)

    循环网络是一种节点定向连接成环(输出经过时移再接入到输入层)的人工神经网络。不同于前馈神经网络的是,循环网络可以利用它内部的记忆来处理变长并且有序的输入序列。

    反馈神经网络的特点:联想记忆

    四、神经网络的学习过程

    在人工神经网络设计及应用研究中通常须要考虑三个方面的内容,即神经元激活函数、神经元之间的连接形式和网络的学习。
    网络的学习主要是指使用学习算法来调整神经元间的连接权,使得网络输出更符合实际。学习算法分为有导师学习与无导师学习两类。

    1、有导师学习

    有导师学习也称为有监督学习。在概念上来说,导师是对外界环境有认知知识的。这些知识通过配对的输入输出训练样本来传入神经网络。通过这些知识,任意一个训练向量的输入,导师都可以给出输出,而这个输出也同时是希望从神经网络中获取的输出。实际上,希望得到的输出代表了神经网络的最佳输出表达。神经网络中的自由参数通过输入向量以及输出误差来调节。其中误差是神经网络的实际输出与希望输出的差。

    2、无导师学习

    无导师学习,顾名思义就是没有导师对学习进行监督,即神经网络的学习输入中不包含有标签的实例。

    相关文章

      网友评论

        本文标题:人工神经网络(1)

        本文链接:https://www.haomeiwen.com/subject/tzjcvqtx.html