神经网络模型 订阅
模拟人类实际神经网络的数学方法问世以来,人们已慢慢习惯了把这种人工神经网络直接称为神经网络。神经网络在系统辨识、模式识别、智能控制等领域有着广泛而吸引人的前景,特别在智能控制中,人们对神经网络的自学习功能尤其感兴趣,并且把神经网络这一重要特点看作是解决自动控制中控制器适应能力这个难题的关键钥匙之一。 展开全文
模拟人类实际神经网络的数学方法问世以来,人们已慢慢习惯了把这种人工神经网络直接称为神经网络。神经网络在系统辨识、模式识别、智能控制等领域有着广泛而吸引人的前景,特别在智能控制中,人们对神经网络的自学习功能尤其感兴趣,并且把神经网络这一重要特点看作是解决自动控制中控制器适应能力这个难题的关键钥匙之一。
信息
外文名
Neural Networks,NN
反映 
人脑功能的许多基本特征
中文名
神经网络模型
性    质
数学方法
神经网络模型介绍
神经网络(Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。神经网络的基础在于神经元。神经元是以生物神经系统的神经细胞为基础的生物模型。在人们对生物神经系统进行研究,以探讨人工智能的机制时,把神经元数学化,从而产生了神经元数学模型。大量的形式相同的神经元连结在—起就组成了神经网络。神经网络是一个高度非线性动力学系统。虽然,每个神经元的结构和功能都不复杂,但是神经网络的动态行为则是十分复杂的;因此,用神经网络可以表达实际物理世界的各种现象。神经网络模型是以神经元的数学模型为基础来描述的。人工神经网络(ArtificialNuearlNewtokr)s,是对人类大脑系统的一阶特性的一种描。简单地讲,它是一个数学模型。神经网络模型由网络拓扑.节点特点和学习规则来表示。神经网络对人们的巨大吸引力主要在下列几点:1.并行分布处理。2.高度鲁棒性和容错能力。3.分布存储及学习能力。4.能充分逼近复杂的非线性关系。在控制领域的研究课题中,不确定性系统的控制问题长期以来都是控制理论研究的中心主题之一,但是这个问题一直没有得到有效的解决。利用神经网络的学习能力,使它在对不确定性系统的控制过程中自动学习系统的特性,从而自动适应系统随时间的特性变异,以求达到对系统的最优控制;显然这是一种十分振奋人心的意向和方法。人工神经网络的模型现在有数十种之多,应用较多的典型的神经网络模型包括BP神经网络、Hopfield网络、ART网络和Kohonen网络。学习是神经网络一种最重要也最令人注目的特点。在神经网络的发展进程中,学习算法的研究有着十分重要的地位。目前,人们所提出的神经网络模型都是和学习算法相应的。所以,有时人们并不去祈求对模型和算法进行严格的定义或区分。有的模型可以有多种算法。而有的算法可能可用于多种模型。在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器。神经网络在学习中,一般分为有教师和无教师学习两种。感知器采用有教师信号进行学习,而认知器则采用无教师信号学习的。在主要神经网络如Bp网络,Hopfield网络,ART络和Kohonen网络中;Bp网络和Hopfield网络是需要教师信号才能进行学习的;而ART网络和Khonone网络则无需教师信号就可以学习49[]。所谓教师信号,就是在神经网络学习中由外部提供的模式样本信号。 [1] 
收起全文
精华内容
下载资源
问答
  • 神经网络模型

    千次阅读 2015-07-30 17:25:48
    什么是神经网络 神经网络(Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。神经网络...



    什么是神经网络

       神经网络(Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。


       神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。


       神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。


    通俗的说:神经网络就是模拟人的神经系统而实现的一种算法。我们都知道计算机擅长处理精确的事情,要么1,要么0.而神经网络算法可以让计算机像人一样去思考。处理一些不精确的事情。



    工作原理

    模型图


    人工神经网络是由大量的简单基本元件——神经元相互联接而成的自适应非线性动态系统。每个神经元的结构和功能比较简单,但大量神经元组合产生的系统行为却非常复杂。


    人工神经网络反映了人脑功能的若干基本特性,但并非生物系统的逼真描述,只是某种模仿、简化和抽象。


    与数字计算机比较,人工神经网络在构成原理和功能特点等方面更加接近人脑,它不是按给定的程序一步一步地执行运算,而是能够自身适应环境、总结规律、完成某种运算、识别或过程控制。


    人工神经网络首先要以一定的学习准则进行学习,然后才能工作。



    通过例子理解原理

    其实神经网络的工作过程就是 根据少部分具有代表性的样本学习,不断调整自身权重的过程。


    现以人工神经网络对于写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。


    所以网络学习的准则应该是:如果网络作出错误的的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。


    首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图象模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。

    在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能作出正确的判断。


    如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。


    如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。


    这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够作出迅速、准确的判断和识别。一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。




    特点


    自适应与自组织

    人类大脑有很强的自适应与自组织特性,后天的学习与训练可以开发许多各具特色的活动功能。


    如盲人的听觉和触觉非常灵敏;聋哑人善于运用手势;训练有素的运动员可以表现出非凡的运动技巧等等。


    普通计算机的功能取决于程序中给出的知识和能力。显然,对于智能活动要通过总结编制程序将十分困难。


    人工神经网络也具有初步的自适应与自组织能力。在学习或训练过程中改变突触权重值,以适应周围环境的要求。


    同一网络因学习方式及内容不同可具有不同的功能。


    人工神经网络是一个具有学习能力的系统,可以发展知识,以致超过设计者原有的知识水平。


    通常,它的学习训练方式可分为两种,一种是有监督或称有导师的学习,这时利用给定的样本标准进行分类或模仿;另一种是无监督学习或称无为导师学习,这时,只规定学习方式或某些规则,则具体的学习内容随系统所处环境 (即输入信号情况)而异,系统可以自动发现环境特征和规律性,具有更近似人脑的功能。


    泛化能力

    泛化能力指对没有训练过的样本,有很好的预测能力和控制能力。特别是,当存在一些有噪声的样本,网络具备很好的预测能力。


    非线性映射能力

    当对系统对于设计人员来说,很透彻或者很清楚时,则一般利用数值分析,偏微分方程等数学工具建立精确的数学模型。


    但当对系统很复杂,或者系统未知,系统信息量很少时,建立精确的数学模型很困难时,神经网络的非线性映射能力则表现出优势,因为它不需要对系统进行透彻的了解,但是同时能达到输入与输出的映射关系,这就大大简化设计的难度


    高度并行性

    并行性具有一定的争议性。

    承认具有并行性理由:神经网络是根据人的大脑而抽象出来的数学模型,由于人可以同时做一些事,所以从功能的模拟角度上看,神经网络也应具备很强的并行性。


    多少年以来,人们从医学、生物学、生理学、哲学、信息学、计算机科学、认知学、组织协同学等各个角度企图认识并解答上述问题


    在寻找上述问题答案的研究过程中,这些年来逐渐形成了一个新兴的多学科交叉技术领域,称之为“神经网络”。


    神经网络的研究涉及众多学科领域,这些领域互相结合、相互渗透并相互推动。不同领域的科学家又从各自学科的兴趣与特色出发,提出不同的问题,从不同的角度进行研究。


    人工神经网络与通用的计算机对比

    下面将人工神经网络与通用的计算机工作特点来对比一下:


    若从速度的角度出发,人脑神经元之间传递信息的速度要远低于计算机,前者为毫秒量级,而后者的频率往往可达几百兆赫。


    但是,由于人脑是一个大规模并行与串行组合处理系统,因而,在许多问题上可以作出快速判断、决策和处理,其速度则远高于串行结构的普通计算机。


    人工神经网络的基本结构模仿人脑,具有并行处理特征,可以大大提高工作速度。


    人脑存贮信息的特点为利用突触效能的变化来调整存贮内容,也即信息存贮在神经元之间连接强度的分布上,存贮区与计算机区合为一体。


    虽然人脑每日有大量神经细胞死亡 (平均每小时约一千个),但不影响大脑的正常思维活动。


    普通计算机是具有相互独立的存贮器和运算器,知识存贮与数据运算互不相关,只有通过人编出的程序使之沟通,这种沟通不能超越程序编制者的预想。元器件的局部损坏及程序中的微小错误都可能引起严重的失常。




    应用场景

    场景

    以我完成的一个场景为例:

    房屋建筑中的建筑形态    分为 独栋别墅  双拼别墅  叠拼别墅  联排别墅   花园洋房   多层   小高层   中高层    高层   超高层

    之前每调查一个楼盘  都需要人工去判断它的建筑形态。

    因为 它涉及的元素比较多。

    要综合 最高楼层  是否有商业  总套数   住宅套数     4个元素才能判断  出 建筑形态

    计算机不可能收集到所有的 可能性 再去判断

    所以我们打算使用   神经网路 

    也就是 通过 少量的 标准样本学习   

    实现对大量样本的 预测判断

    最后设计了如下程序

    最终实现了    准确率 100%的预测

    软件样式



    学习样本




    预测结果



    具体的关键步骤在下一篇文章中记录。



    展开全文
  • 一文看懂25个神经网络模型

    万次阅读 多人点赞 2017-06-17 10:26:08
    光是知道各式各样的神经网络模型缩写(如:DCIGN、BiLSTM、DCGAN……还有哪些?),就已经让人招架不住了。因此,这里整理出一份清单来梳理所有这些架构。其中大部分是人工神经网络,也有一些完全不同的怪物。尽管...

    1. 引言

    在深度学习十分火热的今天,不时会涌现出各种新型的人工神经网络,想要实时了解这些新型神经网络的架构还真是不容易。光是知道各式各样的神经网络模型缩写(如:DCIGN、BiLSTM、DCGAN……还有哪些?),就已经让人招架不住了。

    因此,这里整理出一份清单来梳理所有这些架构。其中大部分是人工神经网络,也有一些完全不同的怪物。尽管所有这些架构都各不相同、功能独特,当我在画它们的节点图时……其中潜在的关系开始逐渐清晰起来。

    把这些架构做成节点图,会存在一个问题:它无法展示神经网络架构内部的工作原理。举例来说,变分自编码机(VAE:variational autoencoders )看起来跟自编码机(AE:autoencoders)差不多,但它们的训练过程却大不相同。训练后的模型在使用场景上差别更大:VAE是生成器,通过插入噪音数据来获取新样本;而AE仅仅是把他们所收到的任何信息作为输入,映射到“记忆中”最相似的训练样本上。

    在介绍不同模型的神经元和神经细胞层之间的连接方式前,我们一步一步来,先来了解不同的神经元节点内部是如何工作的。

    1.1 神经元

    对不同类型的神经元标记不同的颜色,可以更好地在各种网络架构之间进行区分。但是,这些神经元的工作方式却是大同小异。在下图的基本神经元结构后面,你会看到详细的讲解:

    基本的人工神经网络神经元(basic neural network cell)相当简单,这种简单的类型可以在常规的前馈人工神经网络架构里面找到。这种神经元与其它神经元之间的连接具有权重,也就是说,它可以和前一层神经网络层中的所有神经元有连接。

    每一个连接都有各自的权重,通常情况下是一些随机值(关于如何对人工神经网络的权重进行初始化是一个非常重要的话题,这将会直接影响到之后的训练过程,以及最终整个模型的性能)。这个权重可以是负值,正值,非常小,或者非常大,也可以是零。和这个神经元连接的所有神经元的值都会乘以各自对应的权重。然后,把这些值都求和。

    在这个基础上,会额外加上一个bias,它可以用来避免输出为零的情况,并且能够加速某些操作,这让解决某个问题所需要的神经元数量也有所减少。这个bias也是一个数字,有些时候是一个常量(经常是-1或者1),有些时候会有所变化。这个总和最终被输入到一个激活函数,这个激活函数的输出最终就成为这个神经元的输出。

    这里写图片描述

    1.2卷积神经元(Convolutional cells)

    和前馈神经元非常相似,除了它们只跟前一神经细胞层的部分神经元有连接。因为它们不是和某些神经元随机连接的,而是与特定范围内的神经元相连接,通常用来保存空间信息。这让它们对于那些拥有大量局部信息,比如图像数据、语音数据(但多数情况下是图像数据),会非常实用。

    1.3 解卷积神经元

    恰好相反:它们是通过跟下一神经细胞层的连接来解码空间信息。这两种神经元都有很多副本,它们都是独立训练的;每个副本都有自己的权重,但连接方式却完全相同。可以认为,这些副本是被放在了具备相同结构的不同的神经网络中。这两种神经元本质上都是一般意义上的神经元,但是,它们的使用方式却不同。

    1.4 池化神经元和插值神经元(Pooling and interpolating cells)

    经常和卷积神经元结合起来使用。它们不是真正意义上的神经元,只能进行一些简单的操作。

    池化神经元接受到来自其它神经元的输出过后,决定哪些值可以通过,哪些值不能通过。在图像领域,可以理解成是把一个图像缩小了(在查看图片的时候,一般软件都有一个放大、缩小的功能;这里的图像缩小,就相当于软件上的缩小图像;也就是说我们能看到图像的内容更加少了;在这个池化的过程当中,图像的大小也会相应地减少)。这样,你就再也不能看到所有的像素了,池化函数会知道什么像素该保留,什么像素该舍弃。

    插值神经元恰好是相反的操作:它们获取一些信息,然后映射出更多的信息。额外的信息都是按照某种方式制造出来的,这就好像在一张小分辨率的图片上面进行放大。插值神经元不仅仅是池化神经元的反向操作,而且,它们也是很常见,因为它们运行非常快,同时,实现起来也很简单。池化神经元和插值神经元之间的关系,就像卷积神经元和解卷积神经元之间的关系。

    1.5均值神经元和标准方差神经元(Mean and standard deviation cells)(作为概率神经元它们总是成对地出现)

    是一类用来描述数据概率分布的神经元。均值就是所有值的平均值,而标准方差描述的是这些数据偏离(两个方向)均值有多远。比如:一个用于图像处理的概率神经元可以包含一些信息,比如:在某个特定的像素里面有多少红色。举个例来说,均值可能是0.5,同时标准方差是0.2。当要从这些概率神经元取样的时候,你可以把这些值输入到一个高斯随机数生成器,这样就会生成一些分布在0.4和0.6之间的值;值离0.5越远,对应生成的概率也就越小。它们一般和前一神经元层或者下一神经元层是全连接,而且,它们没有偏差(bias)。

    1.6 循环神经元(Recurrent cells )

    不仅仅在神经细胞层之间有连接,而且在时间轴上也有相应的连接。每一个神经元内部都会保存它先前的值。它们跟一般的神经元一样更新,但是,具有额外的权重:与当前神经元之前值之间的权重,还有大多数情况下,与同一神经细胞层各个神经元之间的权重。当前值和存储的先前值之间权重的工作机制,与非永久性存储器(比如RAM)的工作机制很相似,继承了两个性质:

    • 第一,维持一个特定的状态;
    • 第二:如果不对其持续进行更新(输入),这个状态就会消失。

    由于先前的值是通过激活函数得到的,而在每一次的更新时,都会把这个值和其它权重一起输入到激活函数,因此,信息会不断地流失。实际上,信息的保存率非常的低,以至于仅仅四次或者五次迭代更新过后,几乎之前所有的信息都会流失掉。

    1.7 长短期记忆神经元(Long short term memory cells)

    用于克服循环神经元中信息快速流失的问题。

    LSTM是一个逻辑回路,其设计受到了计算机内存单元设计的启发。与只存储两个状态的循环神经元相比,LSTM可以存储四个状态:输出值的当前和先前值,记忆神经元状态的当前值和先前值。它们都有三个门:输入门,输出门,遗忘门,同时,它们也还有常规的输入。

    这些门它们都有各自的权重,也就是说,与这种类型的神经元细胞连接需要设置四个权重(而不是一个)。这些门的工作机制与流门(flow gates)很相似,而不是栅栏门(fence gates):它们可以让所有的信息都通过,或者只是通过部分,也可以什么都不让通过,或者通过某个区间的信息。

    这种运行机制的实现是通过把输入信息和一个在0到1之间的系数相乘,这个系数存储在当前门中。这样,输入门决定输入的信息有多少可以被叠加到当前门值。输出门决定有多少输出信息是可以传递到后面的神经网络中。遗忘门并不是和输出神经元的先前值相连接,而是,和前一记忆神经元相连接。它决定了保留多少记忆神经元最新的状态信息。因为没有和输出相连接,以及没有激活函数在这个循环中,因此只会有更少的信息流失。

    1.8 门控循环神经元(Gated recurrent units (cells))

    是LSTM的变体。它们同样使用门来抑制信息的流失,但是只用两个门:更新门和重置门。这使得构建它们付出的代价没有那么高,而且运行速度更加快了,因为它们在所有的地方使用了更少的连接。

    从本质上来说LSTM和GRU有两个不同的地方:

    • 第一:GRU神经元没有被输出门保护的隐神经元;
    • 第二:GRU把输出门和遗忘门整合在了一起,形成了更新门。核心的思想就是如果你想要一些新的信息,那么你就可以遗忘掉一些陈旧的信息(反过来也可以)。

    1.9 神经细胞层(Layers)

    形成一个神经网络,最简单的连接神经元方式是——把所有的神经元与其它所有的神经元相连接。这就好像Hopfield神经网络和玻尔兹曼机(Boltzmann machines)的连接方式。当然,这也就意味着连接数量会随着神经元个数的增加呈指数级地增加,但是,对应的函数表达力也会越来越强。这就是所谓的全连接(completely (or fully) connected)。

    经历了一段时间的发展,发现把神经网络分解成不同的神经细胞层会非常有效。神经细胞层的定义是一群彼此之间互不连接的神经元,它们仅跟其它神经细胞层有连接。这一概念在受限玻尔兹曼机(Restricted Boltzmann Machines)中有所体现。现在,使用神经网络就意味着使用神经细胞层,并且是任意数量的神经细胞层。其中一个比较令人困惑的概念是全连接(fully connected or completely connected),也就是某一层的每个神经元跟另一层的所有神经元都有连接,但真正的全连接神经网络相当罕见。

    1.10 卷积连接层(Convolutionally connected layers)

    相对于全连接层要有更多的限制:在卷积连接层中的每一个神经元只与相邻的神经元层连接。图像和声音蕴含了大量的信息,如果一对一地输入到神经网络(比如,一个神经元对应一个像素)。卷积连接的形成,受益于保留空间信息更为重要的观察。实践证明这是一个非常好的猜测,因为现在大多数基于人工神经网络的图像和语音应用都使用了这种连接方式。然而,这种连接方式所需的代价远远低于全连接层的形式。从本质上来讲,卷积连接方式起到重要性过滤的作用,决定哪些紧紧联系在一起的信息包是重要的;卷积连接对于数据降维非常有用。

    当然了,还有另外一种选择,就是随机连接神经元(randomly connected neurons)。这种形式的连接主要有两种变体:

    • 第一,允许部分神经元进行全连接。
    • 第二,神经元层之间只有部分连接。
      随机连接方式有助于线性地降低人工神经网络的性能;当全连接层遇到性能问题的时候,在大规模人工神经网络中,使用随机连接方式非常有益。拥有更多神经元且更加稀疏的神经元层在某些情况下运行效果更好,特别是很多的信息需要被存储起来,但是,需要交换的信息并不多(这与卷积连接层的运行机制很相似,但是,它们是随机的)。非常稀疏的连接网络(1%或2%)也有被使用,比如ELMs, ESNs 和LSMs。这特别适用于脉冲网络(spiking networks),因为一个神经元拥有更多的连接,它对应的权重具有的能量也就更少,这也就意味着将会有更少的扩展和重复模式。

    1.11 时间滞后连接(Time delayed connections)

    是指相连的神经元(通常是在同一个神经元层,甚至于一个神经元自己跟自己连接),它们不从前面的神经元层获取信息,而是从神经元层先前的状态获取信息。这使得暂时(时间上或者序列上)联系在一起的信息可以被存储起来。这些形式的连接经常被手工重新进行设置,从而可以清除神经网络的状态。和常规连接的主要区别是,这种连接会持续不断地改变,即便这个神经网络当前没有处于训练状态。

    下图展示了以上所介绍的神经网络及其连接方式。当我卡在哪种神经元与哪个神经细胞层该连到一起的时候,就会拿这张图出来作为参考(尤其是在处理和分析LSTM与GRU神经元时):

    这里写图片描述

    显而易见,整理一份完整的清单是不切实际的,因为新的架构正被源源不断地发明出来。所以,接下来这份清单的目的,只想带你一窥人工智能领域的基础设施。对于每一个画成节点图的架构,我都会写一个非常非常简短的描述。你会发现这些描述还是很有用的,毕竟,总还是有一些你并不是那么熟悉的架构。

    这里写图片描述

    值得一提的是,虽说大多数的简写都已被普遍接受,但总会出现一些冲突。RNNs有时表示递归神经网络(recursive neural networks),但大多时候,它们指的是循环神经网络(recurrent neural networks)。这还没完,它们在许多地方还会泛指各种循环架构,这包括在LSTMs、GRU甚至是双向变体。AEs也经常会面临同样的问题,VAEs、DAEs及其相似结构有时都被简称为AEs。很多缩写后面的“N”也常常会有所变化,因为同一个架构你既可称之为卷积神经网络(convolutional neural network),也可简称为卷积网络(convolutional network),这样就出现了CNN和CN两种形式。

    2. 前馈神经网络(FFNN)

    前馈神经感知网络与感知机(FF or FFNN:Feed forward neural networks and P:perceptrons)非常简单,信息从前往后流动(分别对应输入和输出)。

    一般在描述神经网络的时候,都是从它的层说起,即相互平行的输入层、隐含层或者输出层神经结构。单独的神经细胞层内部,神经元之间互不相连;而一般相邻的两个神经细胞层则是全连接(一层的每个神经元和另一层的每一个神经元相连)。一个最简单却最具有实用性的神经网络由两个输入神经元和一个输出神经元构成,也就是一个逻辑门模型。给神经网络一对数据集(分别是“输入数据集”和“我们期望的输出数据集”),一般通过反向传播算法来训练前馈神经网络(FFNNs)。

    这就是所谓的监督式学习。与此相反的是无监督学习:我们只给输入,然后让神经网络去寻找数据当中的规律。反向传播的误差往往是神经网络当前输出和给定输出之间差值的某种变体(比如MSE或者仅仅是差值的线性变化)。如果神经网络具有足够的隐层神经元,那么理论上它总是能够建立输入数据和输出数据之间的关系。在实践中,FFNN的使用具有很大的局限性,但是,它们通常和其它神经网络一起组合成新的架构。

    参考文献:
    Rosenblatt, Frank. “The perceptron: a probabilistic model for information storage and organization in the brain.” Psychological review 65.6 (1958): 386.

    3. 径向基神经网络(RBF)

    径向神经网络(RBF:Radial basis function)是一种以径向基核函数作为激活函数的前馈神经网络。没有更多描述了。这不是说没有相关的应用,但大多数以其它函数作为激活函数的FFNNs都没有它们自己的名字。这或许跟它们的发明年代有关系。

    参考文献:
    Broomhead, David S., and David Lowe. Radial basis functions, multi-variable functional interpolation and adaptive networks. No. RSRE-MEMO-4148. ROYAL SIGNALS AND RADAR ESTABLISHMENT MALVERN (UNITED KINGDOM), 1988.

    4. 霍普菲尔网络(HN)

    霍普菲尔网络(HN:Hopfield network)是一种每一个神经元都跟其它神经元相互连接的网络。

    这就像一盘完全搅在一起的意大利面,因为每个神经元都在充当所有角色:训练前的每一个节点都是输入神经元,训练阶段是隐神经元,输出阶段则是输出神经元。

    该神经网络的训练,是先把神经元的值设置到期望模式,然后计算相应的权重。在这以后,权重将不会再改变了。一旦网络被训练包含一种或者多种模式,这个神经网络总是会收敛于其中的某一种学习到的模式,因为它只会在某一个状态才会稳定。值得注意的是,它并不一定遵从那个期望的状态(很遗憾,它并不是那个具有魔法的黑盒子)。它之所以会稳定下来,部分要归功于在训练期间整个网络的“能量(Energy)”或“温度(Temperature)”会逐渐地减少。每一个神经元的激活函数阈值都会被设置成这个温度的值,一旦神经元输入的总和超过了这个阈值,那么就会让当前神经元选择状态(通常是-1或1,有时也是0或1)。

    可以多个神经元同步,也可以一个神经元一个神经元地对网络进行更新。一旦所有的神经元都已经被更新,并且它们再也没有改变,整个网络就算稳定(退火)了,那你就可以说这个网络已经收敛了。这种类型的网络被称为“联想记忆(associative memory)”,因为它们会收敛到和输入最相似的状态;比如,人类看到桌子的一半就可以想象出另外一半;与之相似,如果输入一半噪音+一半桌子,这个网络就能收敛到整张桌子。

    参考文献:
    Hopfield, John J. “Neural networks and physical systems with emergent collective computational abilities.” Proceedings of the national academy of sciences 79.8 (1982): 2554-2558.

    5. 马尔可夫链(MC)

    马尔可夫链(MC:Markov Chain)或离散时间马尔可夫链(DTMC:MC or discrete time Markov Chain)在某种意义上是BMs和HNs的前身。可以这样来理解:从从我当前所处的节点开始,走到任意相邻节点的概率是多少呢?它们没有记忆(所谓的马尔可夫特性):你所得到的每一个状态都完全依赖于前一个状态。尽管算不上神经网络,但它却跟神经网络类似,并且奠定了BM和HN的理论基础。跟BM、RBM、HN一样,MC并不总被认为是神经网络。此外,它也并不总是全连接的。

    参考文献:
    Hayes, Brian. “First links in the Markov chain.” American Scientist 101.2 (2013): 252.

    6. 玻尔兹曼机(BM)

    玻尔兹曼机(BM:Boltzmann machines)和霍普菲尔网络很接近,差别只是:一些神经元作为输入神经元,剩余的则是作为隐神经元。

    在整个神经网络更新过后,输入神经元成为输出神经元。刚开始神经元的权重都是随机的,通过反向传播(back-propagation)算法进行学习,或是最近常用的对比散度(contrastive divergence)算法(马尔可夫链用于计算两个信息增益之间的梯度)。

    相比HN,大多数BM的神经元激活模式都是二元的。BM由MC训练获得,因而是一个随机网络。BM的训练和运行过程,跟HN大同小异:为输入神经元设好钳位值,而后让神经网络自行学习。因为这些神经元可能会得到任意的值,我们反复地在输入和输出神经元之间来回地进行计算。激活函数的激活受全局温度的控制,如果全局温度降低了,那么神经元的能量也会相应地降低。这个能量上的降低导致了它们激活模式的稳定。在正确的温度下,这个网络会抵达一个平衡状态。
    参考文献:
    Hinton, Geoffrey E., and Terrence J. Sejnowski. “Learning and releaming in Boltzmann machines.” Parallel distributed processing: Explorations in the microstructure of cognition 1 (1986): 282-317.

    8. 受限玻尔兹曼机(RBM)

    这里写图片描述

    受限玻尔兹曼机(RBM:Restricted Boltzmann machines)与BM出奇地相似,因而也同HN相似。

    它们的最大区别在于:RBM更具实用价值,因为它们受到了更多的限制。它们不会随意在所有神经元间建立连接,而只在不同神经元群之间建立连接,因此任何输入神经元都不会同其他输入神经元相连,任何隐神经元也不会同其他隐神经元相连。

    RBM的训练方式就像稍微修改过的FFNN:前向通过数据之后再将这些数据反向传回(回到第一层),而非前向通过数据然后反向传播误差。之后,再使用前向和反向传播进行训练。

    参考文献:
    Smolensky, Paul. Information processing in dynamical systems: Foundations of harmony theory. No. CU-CS-321-86. COLORADO UNIV AT BOULDER DEPT OF COMPUTER SCIENCE, 1986.

    9. 自编码机(AE)

    多图|一文看懂25个神经网络模型

    自编码机(AE:Autoencoders)和FFNN有些相近,因为它更像是FFNN的另一种用法,而非本质上完全不同的另一种架构。

    自编码机的基本思想是自动对信息进行编码(像压缩一样,而非加密),它也因此而得名。整个网络的形状酷似一个沙漏计时器,中间的隐含层较小,两边的输入层、输出层较大。自编码机总是对称的,以中间层(一层还是两层取决于神经网络层数的奇偶)为轴。最小的层(一层或者多层)总是在中间,在这里信息压缩程度最大(整个网络的关隘口)。在中间层之前为编码部分,中间层之后为解码部分,中间层则是编码部分。

    自编码机可用反向传播算法进行训练,给定输入,将误差设为输入和输出之差。自编码机的权重也是对称的,因此编码部分权重与解码部分权重完全一样。

    参考文献:
    Bourlard, Hervé, and Yves Kamp. “Auto-association by multilayer perceptrons and singular value decomposition.” Biological cybernetics 59.4-5 (1988): 291-294.

    10. 稀疏自编码机(SAE)

    多图|一文看懂25个神经网络模型

    稀疏自编码机(SAE:Sparse autoencoders)某种程度上同自编码机相反。稀疏自编码机不是用更小的空间表征大量信息,而是把原本的信息编码到更大的空间内。因此,中间层不是收敛,而是扩张,然后再还原到输入大小。它可以用于提取数据集内的小特征。

    如果用训练自编码机的方式来训练稀疏自编码机,几乎所有的情况,都是得到毫无用处的恒等网络(输入=输出,没有任何形式的变换或分解)。为避免这种情况,需要在反馈输入中加上稀疏驱动数据。稀疏驱动的形式可以是阈值过滤,这样就只有特定的误差才会反向传播用于训练,而其它的误差则被忽略为0,不会用于反向传播。这很像脉冲神经网络(并不是所有的神经元一直都会输出)。

    Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra, and Yann LeCun. “Efficient learning of sparse representations with an energy-based model.” Proceedings of NIPS. 2007.

    11.变分自编码机(VAE)

    多图|一文看懂25个神经网络模型

    变分自编码机(VAE:Variational autoencoders)和AE有着相同的架构,却被教会了不同的事情:输入样本的一个近似概率分布,这让它跟BM、RBM更相近。

    不过,VAE却依赖于贝叶斯理论来处理概率推断和独立(probabilistic inference and independence),以及重新参数化(re-parametrisation)来进行不同的表征。推断和独立非常直观,但却依赖于复杂的数学理论。基本原理是:把影响纳入考虑。如果在一个地方发生了一件事情,另外一件事情在其它地方发生了,它们不一定就是关联在一起的。如果它们不相关,那么误差传播应该考虑这个因素。这是一个有用的方法,因为神经网络是一个非常大的图表,如果你能在某些节点排除一些来自于其它节点的影响,随着网络深度地增加,这将会非常有用。

    Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013).

    12. 去噪自编码机(DAE)

    去噪自编码机(DAE:Denoising autoencoders)是一种自编码机,它的训练过程,不仅要输入数据,还有再加上噪音数据(就好像让图像变得更加模糊一样)。

    但在计算误差的时候跟自动编码机一样,降噪自动编码机的输出也是和原始的输入数据进行对比。这种形式的训练旨在鼓励降噪自编码机不要去学习细节,而是一些更加宏观的特征,因为细微特征受到噪音的影响,学习细微特征得到的模型最终表现出来的性能总是很差。

    Vincent, Pascal, et al. “Extracting and composing robust features with denoising autoencoders.” Proceedings of the 25th international conference on Machine learning. ACM, 2008.
    http://machinelearning.org/archive/icml2008/papers/592.pdf

    13. 深度信念网络(DBN)

    多图|一文看懂25个神经网络模型

    深度信念网络(DBN:Deep belief networks)之所以取这个名字,是由于它本身几乎是由多个受限玻尔兹曼机或者变分自编码机堆砌而成。

    实践表明一层一层地对这种类型的神经网络进行训练非常有效,这样每一个自编码机或者受限玻尔兹曼机只需要学习如何编码前一神经元层的输出。这种训练技术也被称为贪婪训练,这里贪婪的意思是通过不断地获取局部最优解,最终得到一个相当不错解(但可能不是全局最优的)。可以通过对比散度算法或者反向传播算法进行训练,它会慢慢学着以一种概率模型来表征数据,就好像常规的自编码机或者受限玻尔兹曼机。一旦经过非监督式学习方式,训练或者收敛到了一个稳定的状态,那么这个模型就可以用来产生新的数据。如果以对比散度算法进行训练,那么它甚至可以用于区分现有的数据,因为那些神经元已经被引导来获取数据的不同特定。

    Bengio, Yoshua, et al. “Greedy layer-wise training of deep networks.” Advances in neural information processing systems 19 (2007): 153.
    https://papers.nips.cc/paper/3048-greedy-layer-wise-training-of-deep-networks.pdf

    14. 卷积神经网络(CNN)

    多图|一文看懂25个神经网络模型

    卷积神经网络(CNN:Convolutional neural networks)或深度卷积神经网络(DCNN:deep convolutional neural networks)跟其它类型的神经网络大有不同。它们主要用于处理图像数据,但可用于其它形式数据的处理,如语音数据。对于卷积神经网络来说,一个典型的应用就是给它输入一个图像,而后它会给出一个分类结果。也就是说,如果你给它一张猫的图像,它就输出“猫”;如果你给一张狗的图像,它就输出“狗”。

    卷积神经网络是从一个数据扫描层开始,这种形式的处理并没有尝试在一开始就解析整个训练数据。比如:对于一个大小为200X200像素的图像,你不会想构建一个40000个节点的神经元层。而是,构建一个20X20像素的输入扫描层,然后,把原始图像第一部分的20X20像素图像(通常是从图像的左上方开始)输入到这个扫描层。当这部分图像(可能是用于进行卷积神经网络的训练)处理完,你会接着处理下一部分的20X20像素图像:逐渐(通常情况下是移动一个像素,但是,移动的步长是可以设置的)移动扫描层,来处理原始数据。

    注意,你不是一次性移动扫描层20个像素(或其它任何扫描层大小的尺度),也不是把原始图像切分成20X20像素的图像块,而是用扫描层在原始图像上滑过。这个输入数据(20X20像素的图像块)紧接着被输入到卷积层,而非常规的神经细胞层——卷积层的节点不是全连接。每一个输入节点只会和最近的那个神经元节点连接(至于多近要取决于具体的实现,但通常不会超过几个)。

    这些卷积层会随着深度的增加而逐渐变小:大多数情况下,会按照输入层数量的某个因子缩小(比如:20个神经元的卷积层,后面是10个神经元的卷积层,再后面就是5个神经元的卷积层)。2的n次方(32, 16, 8, 4, 2, 1)也是一个非常常用的因子,因为它们在定义上可以简洁且完整地除尽。除了卷积层,池化层(pooling layers)也非常重要。

    池化是一种过滤掉细节的方式:一种常用的池化方式是最大池化,比如用2X2的像素,然后取四个像素中值最大的那个传递。为了让卷积神经网络处理语音数据,需要把语音数据切分,一段一段输入。在实际应用中,通常会在卷积神经网络后面加一个前馈神经网络,以进一步处理数据,从而对数据进行更高水平的非线性抽象。

    LeCun, Yann, et al. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE 86.11 (1998): 2278-2324.
    http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

    15. 解卷积网络(DN)

    多图|一文看懂25个神经网络模型

    解卷积网络(DN:Deconvolutional networks),又称为逆图形网络(IGNs:inverse graphics networks),是逆向的卷积神经网络。

    想象一下,给一个神经网络输入一个“猫”的词,就可以生成一个像猫一样的图像,通过比对它和真实的猫的图片来进行训练。跟常规CNN一样,DN也可以结合FFNN使用,但没必要为这个新的缩写重新做图解释。它们可被称为深度解卷积网络,但把FFNN放到DNN前面和后面是不同的,那是两种架构(也就需要两个名字),对于是否需要两个不同的名字你们可能会有争论。需要注意的是,绝大多数应用都不会把文本数据直接输入到神经网络,而是用二元输入向量。比如<0,1>代表猫,<1,0>代表狗,<1,1>代表猫和狗。

    CNN的池化层往往也是被对应的逆向操作替换了,主要是插值和外推(基于一个基本的假设:如果一个池化层使用了最大池化,你可以在逆操作的时候生成一些相对于最大值更小的数据)。

    Zeiler, Matthew D., et al. “Deconvolutional networks.” Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on. IEEE, 2010.
    http://www.matthewzeiler.com/pubs/cvpr2010/cvpr2010.pdf

    16. 深度卷积逆向图网络(DCIGN)

    多图|一文看懂25个神经网络模型

    深度卷积逆向图网络(DCIGN:Deep convolutional inverse graphics networks),这个名字具有误导性,因为它们实际上是VAE,但分别用CNN、DNN来作编码和解码的部分。

    这些网络尝试在编码过程中对“特征“进行概率建模,这样一来,你只要用猫和狗的独照,就能让它们生成一张猫和狗的合照。同理,你可以输入一张猫的照片,如果猫旁边有一只恼人的邻家狗,你可以让它们把狗去掉。很多演示表明,这种类型的网络能学会基于图像的复杂变换,比如灯光强弱的变化、3D物体的旋转。一般也是用反向传播算法来训练此类网络。

    Kulkarni, Tejas D., et al. “Deep convolutional inverse graphics network.” Advances in Neural Information Processing Systems. 2015.
    https://arxiv.org/pdf/1503.03167v4.pdf

    17. 生成式对抗网络(GAN)

    多图|一文看懂25个神经网络模型

    生成式对抗网络(GAN:Generative adversarial networks)是一类不同的网络,它们有一对“双胞胎”:两个网络协同工作。

    GAN可由任意两种网络组成(但通常是FF和CNN),其中一个用于生成内容,另一个则用于鉴别生成的内容。

    鉴别网络(discriminating network)同时接收训练数据和生成网络(generative network)生成的数据。鉴别网络的准确率,被用作生成网络误差的一部分。这就形成了一种竞争:鉴别网络越来越擅长于区分真实的数据和生成数据,而生成网络也越来越善于生成难以预测的数据。这种方式非常有效,部分是因为:即便相当复杂的类噪音模式最终都是可预测的,但跟输入数据有着极为相似特征的生成数据,则很难区分。

    训练GAN极具挑战性,因为你不仅要训练两个神经网络(其中的任何一个都会出现它自己的问题),同时还要平衡两者的运行机制。如果预测或生成相比对方表现得过好,这个GAN就不会收敛,因为它会内部发散。

    Goodfellow, Ian, et al. “Generative adversarial nets.” Advances in Neural Information Processing Systems. 2014.
    https://arxiv.org/pdf/1406.2661v1.pdf

    18. 循环神经网络(RNN)

    多图|一文看懂25个神经网络模型

    循环神经网络(RNN:Recurrent neural networks)是具有时间联结的前馈神经网络:它们有了状态,通道与通道之间有了时间上的联系。神经元的输入信息,不仅包括前一神经细胞层的输出,还包括它自身在先前通道的状态。

    这就意味着:你的输入顺序将会影响神经网络的训练结果:相比先输入“曲奇饼”再输入“牛奶”,先输入“牛奶”再输入“曲奇饼”后,或许会产生不同的结果。RNN存在一大问题:梯度消失(或梯度爆炸,这取决于所用的激活函数),信息会随时间迅速消失,正如FFNN会随着深度的增加而失去信息一样。

    直觉上,这不算什么大问题,因为这些都只是权重,而非神经元的状态,但随时间变化的权重正是来自过去信息的存储;如果权重是0或1000000,那之前的状态就不再有信息价值。

    原则上,RNN可以在很多领域使用,因为大部分数据在形式上不存在时间线的变化,(不像语音或视频),它们能以某种序列的形式呈现出来。一张图片或一段文字可以一个像素或者一个文字地进行输入,因此,与时间相关的权重描述了该序列前一步发生了什么,而不是多少秒之前发生了什么。一般来说,循环神经网络是推测或补全信息很好的选择,比如自动补全。

    Elman, Jeffrey L. “Finding structure in time.” Cognitive science 14.2 (1990): 179-211.
    https://crl.ucsd.edu/~elman/Papers/fsit.pdf

    19. 长短期记忆(LSTM)

    多图|一文看懂25个神经网络模型

    长短期记忆(LSTM:Long / short term memory)网络试图通过引入门结构与明确定义的记忆单元来解决梯度消失/爆炸的问题。

    这更多的是受电路图设计的启发,而非生物学上某种和记忆相关机制。每个神经元都有一个记忆单元和三个门:输入门、输出门、遗忘门。这三个门的功能就是通过禁止或允许信息流动来保护信息。

    输入门决定了有多少前一神经细胞层的信息可留在当前记忆单元,输出层在另一端决定下一神经细胞层能从当前神经元获取多少信息。遗忘门乍看很奇怪,但有时候遗忘部分信息是很有用的:比如说它在学习一本书,并开始学一个新的章节,那遗忘前面章节的部分角色就很有必要了。

    实践证明,LSTM可用来学习复杂的序列,比如像莎士比亚一样写作,或创作全新的音乐。值得注意的是,每一个门都对前一神经元的记忆单元赋有一个权重,因此会需要更多的计算资源。

    Hochreiter, Sepp, and Jürgen Schmidhuber. “Long short-term memory.” Neural computation 9.8 (1997): 1735-1780.
    http://deeplearning.cs.cmu.edu/pdfs/Hochreiter97_lstm.pdf

    20. 门循环单元(GRU)

    多图|一文看懂25个神经网络模型

    门循环单元(GRU : Gated recurrent units)是LSTM的一种轻量级变体。它们少了一个门,同时连接方式也稍有不同:它们采用了一个更新门(update gate),而非LSTM所用的输入门、输出门、遗忘门。

    更新门决定了保留多少上一个状态的信息,还决定了收取多少来自前一神经细胞层的信息。重置门(reset gate)跟LSTM遗忘门的功能很相似,但它存在的位置却稍有不同。它们总是输出完整的状态,没有输出门。多数情况下,它们跟LSTM类似,但最大的不同是:GRU速度更快、运行更容易(但函数表达力稍弱)。

    在实践中,这里的优势和劣势会相互抵消:当你你需要更大的网络来获取函数表达力时,这样反过来,性能优势就被抵消了。在不需要额外的函数表达力时,GRU的综合性能要好于LSTM。

    Chung, Junyoung, et al. “Empirical evaluation of gated recurrent neural networks on sequence modeling.” arXiv preprint arXiv:1412.3555 (2014).
    https://arxiv.org/pdf/1412.3555v1.pdf

    21. 神经图灵机(NTM)

    多图|一文看懂25个神经网络模型

    神经图灵机(NTM: Neural Turing machines)可以理解为对LSTM的抽象,它试图把神经网络去黑箱化(以窥探其内部发生的细节)。

    NTM不是把记忆单元设计在神经元内,而是分离出来。NTM试图结合常规数字信息存储的高效性、永久性与神经网络的效率及函数表达能力。它的想法是设计一个可作内容寻址的记忆库,并让神经网络对其进行读写操作。NTM名字中的“图灵(Turing)”是表明,它是图灵完备(Turing complete)的,即具备基于它所读取的内容来读取、写入、修改状态的能力,也就是能表达一个通用图灵机所能表达的一切。

    Graves, Alex, Greg Wayne, and Ivo Danihelka. “Neural turing machines.” arXiv preprint arXiv:1410.5401 (2014).
    https://arxiv.org/pdf/1410.5401v2.pdf

    22. BiRNN、BiLSTM、BiGRU

    双向循环神经网络(BiRNN:Bidirectional recurrent neural networks)、双向长短期记忆网络(BiLSTM:bidirectional long / short term memory networks )和双向门控循环单元(BiGRU:bidirectional gated recurrent units)在图表中并未呈现出来,因为它们看起来与其对应的单向神经网络结构一样。

    所不同的是,这些网络不仅与过去的状态有连接,而且与未来的状态也有连接。比如,通过一个一个地输入字母,训练单向的LSTM预测“鱼(fish)”(在时间轴上的循环连接记住了过去的状态值)。在BiLSTM的反馈通路输入序列中的下一个字母,这使得它可以了解未来的信息是什么。这种形式的训练使得该网络可以填充信息之间的空白,而不是预测信息。因此,它在处理图像时不是扩展图像的边界,而是填补一张图片中的缺失。

    Schuster, Mike, and Kuldip K. Paliwal. “Bidirectional recurrent neural networks.” IEEE Transactions on Signal Processing 45.11 (1997): 2673-2681.
    http://www.di.ufpe.br/~fnj/RNA/bibliografia/BRNN.pdf

    23. 深度残差网络(DRN)

    多图|一文看懂25个神经网络模型

    深度残差网络(DRN: Deep residual networks)是非常深的FFNN网络,它有一种特殊的连接,可以把信息从某一神经细胞层传至后面几层(通常是2到5层)。

    该网络的目的不是要找输入数据与输出数据之间的映射,而是致力于构建输入数据与输出数据+输入数据之间的映射函数。本质上,它在结果中增加一个恒等函数,并跟前面的输入一起作为后一层的新输入。结果表明,当层数超过150后,这一网络将非常擅于学习模式,这比常规的2到5层要多得多。然而,有证据表明这些网络本质上只是没有时间结构的RNN,它们总是与没有门结构的LSTM相提并论。

    He, Kaiming, et al. “Deep residual learning for image recognition.” arXiv preprint arXiv:1512.03385 (2015).
    https://arxiv.org/pdf/1512.03385v1.pdf

    24. 回声状态网络(ESN)

    多图|一文看懂25个神经网络模型

    回声状态网络(ESN:Echo state networks)是另一种不同类型的(循环)网络。

    它的不同之处在于:神经元之间的连接是随机的(没有整齐划一的神经细胞层),其训练过程也有所不同。不同于输入数据后反向传播误差,ESN先输入数据、前馈、而后更新神经元状态,最后来观察结果。它的输入层和输出层在这里扮演的角色不太常规,输入层用来主导网络,输出层作为激活模式的观测器随时间展开。在训练过程中,只有观测和隐藏单元之间连接会被改变。

    Jaeger, Herbert, and Harald Haas. “Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication.” science 304.5667 (2004): 78-80.
    https://pdfs.semanticscholar.org/8922/17bb82c11e6e2263178ed20ac23db6279c7a.pdf

    25. 极限学习机(ELM)

    多图|一文看懂25个神经网络模型

    极限学习机(ELM:Extreme learning machines)本质上是拥有随机连接的FFNN。

    它们与LSM、ESN极为相似,除了循环特征和脉冲性质,它们还不使用反向传播。相反,它们先给权重设定随机值,然后根据最小二乘法拟合来一次性训练权重(在所有函数中误差最小)。这使ELM的函数拟合能力较弱,但其运行速度比反向传播快多了。

    Cambria, Erik, et al. “Extreme learning machines [trends & controversies].” IEEE Intelligent Systems 28.6 (2013): 30-59.
    http://www.ntu.edu.sg/home/egbhuang/pdf/ieee-is-elm.pdf

    26. 液态机(LSM)

    多图|一文看懂25个神经网络模型

    液态机(LSM:Liquid state machines)换汤不换药,跟ESN同样相近。

    区别在于,LSM是一种脉冲神经网络(spiking neural networks),用阈值激活函数(threshold functions)取代了sigmoid激活函数,每个神经元同时也是具有累加性质的记忆单元。因此,当神经元状态更新时,其值不是相邻神经元的累加值,而是它自身状态值的累加。一旦累加到阈值,它就释放能量至其它神经元。这就形成了一种类似于脉冲的模式:神经元不会进行任何操作,直至到达阈值的那一刻。

    Maass, Wolfgang, Thomas Natschläger, and Henry Markram. “Real-time computing without stable states: A new framework for neural computation based on perturbations.” Neural computation 14.11 (2002): 2531-2560.
    https://web.archive.org/web/20120222154641/http://ramsesii.upf.es/seminar/Maass_et_al_2002.pdf

    27. 支持向量机(SVM)

    多图|一文看懂25个神经网络模型

    支持向量机(SVM:Support vector machines)能为分类问题找出最优方案。

    传统意义上,它们只能处理线性可分的数据;比如找出哪张图片是加菲猫、哪张是史努比,此外就无法做其它输出了。

    训练过程中,SVM可以理解为:先在平面图表上标绘所有数据(加菲猫、史努比),然后找出到那条能够最好区分这两类数据点的线。这条线能把数据分为两部分,线的这边全是史努比,线的那边全是加菲猫。而后移动并优化该直线,令两边数据点到直线的距离最大化。分类新的数据,则将该数据点画在这个图表上,然后察看这个数据点在分隔线的哪一边(史努比一侧,还是加菲猫一侧)。

    通过使用核方法,SVM便可用来分类n维空间的数据。这就引出了在3维空间中标绘数据点,从而让SVM可以区分史努比、加菲猫与西蒙,甚至在更高的维度对更多卡通人物进行分类。SVM并不总被视为神经网络。

    Cortes, Corinna, and Vladimir Vapnik. “Support-vector networks.” Machine learning 20.3 (1995): 273-297.
    http://image.diku.dk/imagecanon/material/cortes_vapnik95.pdf

    28. Kohonen 网络

    多图|一文看懂25个神经网络模型

    最后,我们来介绍一下Kohonen网络(KN,也称之为自组织(特征)映射(SOM/SOFM:self organising (feature) map))。

    KN利用竞争学习来对数据进行分类,不需要监督。先给神经网络一个输入,而后它会评估哪个神经元最匹配该输入。然后这个神经元会继续调整以更好地匹配输入数据,同时带动相邻的神经元。相邻神经元移动的距离,取决于它们与最佳匹配单元之间的距离。KN有时也不被认为是神经网络。

    参考文献:
    Kohonen, Teuvo. “Self-organized formation of topologically correct feature maps.” Biological cybernetics 43.1 (1982): 59-69.
    http://cioslab.vcu.edu/alg/Visualize/kohonen-82.pdf
    原文链接:

    展开全文
  • 1.前言 我的毕设做的是基于opencv和卷积神经网络的人脸识别项目。...2.卷积神经网络模型概览 ** 从一开始的LeNet到后来的VGGNet,再到google的Inception系列,再到ResNet系列,每一种神经网络模型都有其创新...

    1.前言

    我的毕设做的是基于opencv和卷积神经网络的人脸识别项目。在做完这个项目之后,我一直想好好总结一下所学到的关于卷积神经网络的知识。现在趁着有点空闲,随手记录一点以前学过的,或者正在学习的知识点,相当于一个备忘录。

    **

    2.卷积神经网络模型概览

    **
    常见的卷积神经网络结构
    从一开始的LeNet到后来的VGGNet,再到google的Inception系列,再到ResNet系列,每一种神经网络模型都有其创新的点,下面我们就来按照历史脉络好好讲解一下各种模型的特点。(里面涉及到的各种卷积神经网络的基础知识要点可以参见我的另一篇基础博客)

    2.1LeNet模型结构

    LeNet网络结构是再1998年由lecun提出的。它被创造出来的目的是解决手写数字识别的问题。即它是一个10分类任务的解决办法。下图是它的一个基本的网络结构。
    LeNet网络结构
    网络结构图中显示的很清楚。它包括了两个卷积层,两个下采样层,两个全连接层和一个激活层,最后有一个sotfmax分类层。可以说,LeNet麻雀虽小,五脏俱全。包括了基本的卷积神经网络的所有单元。

    2.2 AlexNet

    话不多说,我们直接上来看AlexNet的网络结构:
    在这里插入图片描述
    我们可以看到,它的网络结构被分成了两支,这是因为当时的GPU计算能力不够,显存容量不够大。为了完成模型的训练,作者使用了两块显卡来进行分布式的训练。我们现在想要训练这样一个模型,只需要实现其中一条就好了。
    emmmm我其实个人是想知道怎么进行分布式训练的,但是我没有两块显卡(贫穷限制了我的发展) 找不到相关技术资料,这里就不赘述了。
    对比刚刚的LeNet,我们可以发现从结构上来看,它并没有很大的改变。我们看它的网络结构:输入层是224* 224的数据,然后进行了多轮卷积(提取特征),其中包括11* 11的卷积核,5* 5的卷积核,3* 3的卷积核。虽然在图片上我们只画了卷积层,但我们应该知道,每一个卷积层之后都会跟上一个激活层(用来增加模型的非线性表达能力),一个降采样pooling层(减小数据量,提取主要特征),以及一个局部归一化处理(对数据进行一定的约束,使我们的数据约束在一定的范围内,使网络更好的收敛)。经过多个卷积层之后,就会有三个fc层(全连接层)。同样的,在每一个fc层之后,也会有有一个relu激活层,以及一个dropout层(减小参数量,防止过拟合,增加i网络结构变化)。最后呢,通过一个fc层+softmax层来将我们的数据映射到一个一千维的向量上去(因为实现的是一千种物品的分类网络),这个向量就是我们输入的图像在这一千个类别上的概率分布。其中概率值最高的那个类别就是网络判断出来图像所属的类别。相较与LeNet网络,它的网络深度更深,并且成功运用了gpu进行运算,为后面的人们打开了新世界大门。整个网络的参数量在60兆以上,最中训练出来的模型文件在200兆以上。它最大的意义在于,通过这次实验,证明了更深层次的卷积神经网络,可以提取出更加鲁棒的特征信息,并且这些特征信息能更好的区分物品类别。

    我个人的意见是,这个更深层网络提取更高维度的特征,它是这么个意思:前面的卷积层提取一些浅层的特征,比如纹理,形状(我们输入的是颜色特征),然后中间的卷积层呢,提取的是一些更复杂的特征,这些特征难以描述,就类似于我们中国说看山不是山,看水不是水的境界,只可意会,不可言传。而最后的分类信息,就是最后的看山还是山,看水还是水的境界。

    在AlexNet网络中,有以下特点:

    • 增加了relu非线性激活函数,增强了模型的非线性表达能力。成为以后卷积层的标配。
    • dropout层防止过拟合。成为以后fc层的标配。
    • 通过数据增强,来减少过拟合。
    • 引入标准化层(Local Response Normalization):通过放大那些对分类贡献较大的神经元,抑制那些对分类贡献较小的神经元,通过局部归一的手段,来达到作用。

    当然后来人们通过研究发现,这个LRN层并没有啥太好的作用,所以在后来的网络结构中,它被BN层(批归一化层)取代了。

    2.3 ZFNet

    在这里插入图片描述
    ZFNet在AlexNet的基础上做了小小的改进:

    • 调整第一层卷积核大小为7*7
    • 设置卷积参数stride=2

    通过更小的卷积核和更小的步长,来提取更多的信息,确保网络提取出来的信息更加有效。其次,它增加了卷积核数量,导致网络更加庞大。
    最重要的是:它从可视化的角度出发,解释了CNN有非常好的性能的原因。
    在这里插入图片描述

    如图所示,右半边是我们一个正常的神经网络的数据流向:对于一副输入图像,我们通过pooling层来进行下采样,再通过卷积层进行特征提取,通过relu层来提升非线性表达能力。对于最后的输出结果,我们怎么把它还原成原始的图片呢?
    实际上,如果我们想进行100%的还原是不可能的,因为每一次的pooling层都会丢失一些信息。因此我们在可视化的时候,更主要的是对它的特征的语义进行更高层次的分析。通过对输出层进行上采样,可以得到与我们原始图像大小一致的特征图。通过观察这些特征图,作者得出了这样的一些结论:

    • 特征分层次体系结构(就是我前面说的三层)
    • 深层特征更鲁棒(区分度高,不受图片微小的影响)
    • 深层特征收敛更慢

    2.4 VGGNet

    它由牛津大学计算机视觉组和Google Deepmind共同设计。主要是为了研究网络深度对模型准确度的影响,并采用小卷积堆叠的方式,来搭建整个网络。它的参数量达到了138M,整个模型的大小>500M.网络结构如下:
    在这里插入图片描述
    从上面的结构中我们可以看到,VGGNet的网络结构被分为11,13,16,19层。每层都包含了不同数量的卷积层(需要注意的是,每层卷积层之后都有激活层和池化层,只是由于长度限制没有在表中列出来),最后通过三个fc层来将我们的特征进行最后的向量化,最终得到一个1000维的向量,这个向量经过softmax之后,就会得到最终我们类别上的概率分布。而概率值最高的那个,就是我们所要分类的那个类别。
    VGGNet的特点:

    • 网络深,卷积层多。结构哦更加规整,简单。
    • 卷积核都是3* 3的或者1* 1的,且同一层中channel的数量都是相同的。最大池化层全是2*
      2。
    • 每经过一个pooling层后,channel的数量会乘上2.
      也就是说,每次池化之后,Feature Map宽高降低一半,通道数量增加一倍。VGGNet网络层数更多,结构更深,模型参数量更大。

    VGGNet的意义:

    • 证明了更深的网络,能更好的提取特征。
    • 成为了后续很多网络的backbone。

    2.5 GoogleNet/Inception v1

    在设计网络结构时,不仅仅考虑网络的深度,也会考虑网络的宽度,并将这种结构定义为Inception结构(一种网中网(Network in Network)的结构,即原来的节点也是一个网络)。
    值得一提的是,GoogleNet网络的参数量只有6.9兆,模型大小大约50M.
    为什么GoogleNet网络的参数这么少呢?我们先来看一下它的基本单元的结构:
    在这里插入图片描述
    主要原因就是它有效的利用了1* 1 的卷积核。不同于VGGNet从上到下的类似于一个串的结构,Inception的结构表现为一个网中网的结构。也就是说,对于我们中间的一个隐藏层层,它的每个节点也都是一个卷积网络。对于前一层传入进来的特征图,这层的每一个节点对它进行了1* 1 ,3* 3,5* 5的卷积和3* 3的pooling操作。其中值得一提的是,在3* 3和5* 5 的卷积操作之前,该网络用1* 1 的卷积核降低了输入层的channel的数量。例如:我们的输入是一个56* 56 * 128维的这么一个特征(这时候128就是我们channel的数量)。我们通过一个1* 1 的卷积核,可以将通道数降为32,然后我们将它再输入到3* 3的卷积核中。大大减少了计算量。最后,我们将所有的Feature Map进行连接,最后得到这个层的输出。
    在ZFNet的学习中我们知道,更深层的网络收敛的速度就越慢。在GoogleNet中,为了保证网络更深之后,能够哦收敛的比较好,它采用了两个loss来对网络参数进行调节,进而确保在网络变深之后,依然能够达到一个比较好的收敛效果。
    这里需要解释一下什么叫网络宽度:网络深度指的是当前的这个网络一共有多少层,宽度则是说在同一层上channel的数量。
    在这里插入图片描述
    这里我们举了一个例子,来说明如何通过1* 1 的卷积核来进行计算量的一个节省,以及参数规模的一个降低。大家自行体会。

    2.6 Inception v2/v3

    在提出了Inception v1之后,google又提出了Inception v2/v3/v4.在前面介绍视觉感受野的时候,我们曾经说过,一个大的卷积核可以由多个小的卷积核来替代。在v2/v3中,他们有效的利用了这个知识。在Inceptiion v2中,伟大的作者们通过两层3* 3的卷积核代替掉了5* 5的卷积核。而在Inception v3中,更是桑心病狂 别出心裁的用n* 1 + 1* n的卷积核代替了n* n的卷积核。
    在这里插入图片描述
    通过这样的操作,我们能够实现什么样的效果呢?

    • 参数量降低,计算量减少。
    • 网络变深,网络非线性表达能力更强(因为在每一个卷积层后面都可以增加一个激活层)

    要注意的是,在实验中伟大的先行者们发现,并不是拆分都能达到很好的效果。卷积的拆分最好是用在中间的部分,不要在图像的开始就进行这样的拆分。

    2.7 ResNet

    它是在2015年,有何凯明团队提出,引入了跳连的结构来防止梯度消失的问题,进而可以进一步加大网络深度。它的结构如下所示:
    在这里插入图片描述
    跳连的结构如下所示:
    在这里插入图片描述
    可以发现,其他的网络中,都是从上到下的串联的结构 ,而resnet网络则是跳连结构,它的意思是将输入特征直接传输到输出层,和经过卷积之后的特征相加,共同组成输出层的一部分。
    那么,为什么通过跳连结构就可以加深网络的深度呢?在VGG网络中,我们知道当网络深度达到一定界限的时候,在训练中就较难收敛。较难收敛的原因就是随着网络深度的加深,产生了梯度消失的问题。什么是梯度消失呢?有基础的人应该知道,卷积神经网络在进行BP时,都是通过梯度来计算权重修改量的。而梯度的计算遵循的是链式法则,即一个参数的梯度是多个梯度相乘之后的结果。假如每个梯度都小于1的话,那么,x1 * x2* x3* x4…,当n趋于无穷的时候,limxn=0,即梯度消失。假如每个梯度都大于1的话,那么,x1 * x2 x3 * x4…,当n趋于无穷的时候,limxn=正无穷,即梯度爆炸。(这里的n其实就是卷积的层数)所以理论上来说,伴随着网络的加深,我们可以提取到更好的特征,但是网络的参数是非常难以调节的,因为这时候我们求解出来的梯度是没办法来调节参数的。而resnet通过跳连的结构,就可以缓解这个问题。
    我们可以很清楚的从跳连结构示意图中看到,加入了跳连结构之后,并没有增加模型的参数量,尽管它改变了网络结构。
    从ResNet的网络结构中我们可以发现,它在一开始时设置卷积核大小为7
    7,这是因为一开始的时候我们的输入图像的channel只有3,与7* 7的卷积核进行计算的话并不会增加多少计算量。而在ResNet网络的最后,伟大的作者们又一次别出心裁,用average pool层代替了全连接层。这一手操作也是大大的降低了参数量和计算量。因为我们知道,全连接层的参数多,且计算最为复杂,在VGG中,全连接层的参数量占到了总参数量的80%。而pooling层并没有参数。
    接下来我们来讨论一下,为什么ResNet网络可以缓解梯度消失的问题呢? 跳连结构实际上也被称为恒等映射:H(x)=F(x)+x。当F(x)=0时,H(x)=x,这就是所谓的恒等映射。这个跳连的这根线,可以实现差分放大的效果,将梯度放大,来缓解梯度的消失(具体的我也不太明白,等以后有时间再更一篇专门写的吧)。举个例子,假设F(x)=2x,当x从5变化成为5.1时,F(x)从10变为10.2.如果这时候求F(x)的导数的话,公式为(10.2-10)/(5.1-5)=2.而如果变成H(x)的话,导数为(10.2+5.1-(10.0+5))/(5.1-5)=3.这样就放大了导数,即梯度。
    在ResNet中有两种跳连结构:
    在这里插入图片描述
    左边的是当层数较小时,不用1* 1的卷积核来降低参数量和计算量,后面的是在50,101,152层的网络中,用1* 1 的卷积核来降低参数量和计算量。
    在ResNet中,除了跳连结构之外,它还采用了BatchNormalization批归一化来对数据scale和分布进行约束,同时BN层也可以进行简单的正则化,提高网络抗过拟合能力(每个卷积之后配合一个BN层)。
    ResNet的设计特点:

    • 核心单元简单堆叠。
    • 跳连结构解决网络梯度消失问题。
    • Average Pooling层代替fc层。
    • BN层加快网络训练速度和收敛时的稳定性。
    • 加大网络深度,提高模型的特征抽取能力。

    **

    3.卷积神经网络结构对比

    **

    在这里插入图片描述

    展开全文
  • 对抗神经网络模型(GANs)作为当下最火的神经网络模型
    
    
    对抗神经网络模型(GANs)作为当下最火的神经网络模型 使用GANs我们可以还原图像原始颜色 可以还原马赛克: 可以把漫画变成真实图像 可以把文字变成图像 还可以进行视频下一帧预测. 本期介绍深度卷积对抗神经网络(DC-GAN), 让模型学会如何生成一只猫 直播主题:使用对抗神经网络(GANs)生成猫 直播时间:2017年08月30日 周三晚 20:00 直播地址:https://www.dou
    展开全文
  • 人工神经网络之BP神经网络模型

    万次阅读 2017-07-08 20:25:58
    BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射...
  • import shelve class A: def __init__(self,name,a): self.name=name self.a=a def rewrite(self,args): self.a=args obj1=A("qw","1") obj2=A("qa","2") obj3=A("qs","3") #写入文件 db=shelve.open("userinfo...
  • 深度神经网络模型剪枝

    千次阅读 2020-04-20 23:43:13
    深度神经网络模型剪枝 神经网络剪枝 Neural Network Pruning
  • 神经网络模型学习笔记(ANN,BPNN)

    万次阅读 多人点赞 2017-08-30 20:55:51
    神经网络模型
  • 神经网络模型简述 实例:交通运输能力预测设计 MATLAB程序及仿真结果 由于货物运输、地方经济及企业发展的紧密联系,因此作为反映货物运输需求的一项重要指标, 货运量预测研究和分析具有较强的实际意义。 常用的...
  • 经典神经网络模型的介绍及应用

    万次阅读 多人点赞 2019-01-14 15:03:32
    经典神经网络模型的介绍及应用 摘要:人工智能、深度学习、机器视觉等概念如今充斥我们生活的整个社会,小到小区内的车牌自动识别系统,大到火星探测车的实现都离不开深度学习的应用。读研究生之后一直在学习障碍物...
  • 购买课程后,添加小助手微信(微信号:csdn500)回复【唐宇迪】 进入学习群,获取唐宇迪老师社群答疑 通过机器学习的实例实战,将复杂的神经网络模型分解成一个个小的知识点,逐个攻破,详细分析神经网络结构中的每...
  • 神经网络模型分类

    千次阅读 2014-12-08 18:48:00
    本文主要介绍一下几种不同类型的神经网络模型,主要有前馈神经网络,反馈神经网络,自组织神经网络,随机神经网络 1.前馈神经网络 1)自适应线性神经网络(Adaline) 自适应线性神经网络(Adaptive Linear,简称...
  • 神经网络模型训练基本流程

    千次阅读 2019-11-19 15:27:31
    简单的神经网络模型是:前向回馈神经网络(feed-forward), 其包括以下几层: 输入、多个层次的对输入的回馈以及最终的输出。 简单的神经网络的训练过程包括以下几个步骤: 定义一个包含多个可学习参数(权重)的...
  • sql server搭建神经网络模型 在前面的几篇博文中,已经介绍了决策树和朴素贝叶斯模型,这两类模型在机器学习中具有非常重要的地位,属于经典的机器学习十大算法中的内容,今天介绍的算法是神经网络模型,这里对于...
  • MLP(多层感知器神经网络)即多层全连接神经网络模型。 from keras.datasets import mnist from keras.utils import np_utils from keras.models import Sequential from keras.layers import Dense,Dropout,...
  • 提高神经网络模型的泛化能力

    千次阅读 2019-11-19 07:41:37
    提高神经网络模型的泛化能力
  • 神经网络模型量化论文小结

    万次阅读 多人点赞 2018-07-22 13:25:54
    随着卷积神经网络模型堆叠的层数越来越多,网络模型的权重参数数量也随之增长,专用硬件平台可以很好的解决计算与存储的双重需求,但目前还不成熟,存在些亟待解决的问题,没能大规模商用。对模型进行参数量化的主要...
  • 神经网络模型 The Graph Neural Network Model

    万次阅读 多人点赞 2019-01-12 15:24:32
    本文提出了一种新型的神经网络模型,称为图神经网络(GNN)模型,对现有的神经网络模型进行了拓展,适用于处理可以表示为图的数据。GNN模型通过一个函数τ(G,n)∈Rm\tau(G,n) \in \mathbb{R}^mτ(G,n)∈Rm将图GGG和...
  • Python 提供了许多方法来保存神经网络模型,以下是使用 pickle 来完成这项任务: import pickle pickle.dump(fit, open('Boston_fit.pkl', 'wb')) 其中,fit 表示训练好的神经网络模型 以下是打开之前保存的网络,...
  • 神经网络模型地评估

    千次阅读 2018-07-16 17:15:47
    当训练好一个神经网络模型时,首先看准确率如何,如果准确率很低即偏差很高,甚至无法拟合数据,则先检查训练集的性能,如果没问题,则需要选择一个新的网络模型(更大的网络或者训练更长的时间)重新训练。...
  • 1. RNN神经网络模型原理

    千次阅读 2019-02-12 19:22:00
    1. RNN神经网络模型原理 2. RNN神经网络模型的不同结构 3. RNN神经网络-LSTM模型结构 1. 前言 循环神经网络(recurrent neural network)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络。 传统的机器学习...
  • BP神经网络模型
  • 机器学习——人工神经网络模型LSTM

    千次阅读 2019-12-03 15:20:32
    在谈人工神经网络模型之前我们先来了解一下生理上的神经网络。 下面是个对比图: Neural Science Computer Science 人工神经网络实际上就是模仿人类的神经元之间连结,就像图灵模型也是基于人类运算行为而提出的一...
  • 机器学习——BP神经网络模型

    万次阅读 2016-04-26 19:04:46
    "BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射...
  • BP神经网络模型与学习算法

    万次阅读 2016-11-27 19:59:17
    在感知器神经网络模型与线性神经网络模型学习算法中,理想输出与实际输出之差被用来估计神经元连接权值误差。当解决线性不可分问题而引入多级网络后,如何估计网络隐含层神经元的误差就成了一大难题。因为在实际中,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,861
精华内容 19,144
关键字:

神经网络模型