当前位置:首页 » 手机软件 » 哪些神经网络结构会发生权共享
扩展阅读
2021西安网络安全主题 2025-05-14 00:27:53
无线网络ar接入安装视频 2025-05-14 00:03:35

哪些神经网络结构会发生权共享

发布时间: 2022-09-09 07:08:26

如何理解卷积神经网络中的权值共享

所谓的权值共享就是说,给一张输入图片,用一个filter去扫这张图,filter里面的数就叫权重,这张图每个位置是被同样的filter扫的,所以权重是一样的,也就是共享。 这么说可能还不太明白,如果你能理解什么叫全连接神经网络的话,那么从一个尽量减少参数个数的角度去理解就可以了。 对于一张输入图片,大小为W*H,如果使用全连接网络,生成一张X*Y的feature map,需要W*H*X*Y个参数,如果原图长宽是10^2级别的,而且XY大小和WH差不多的话,那么这样一层网络需要的参数个数是10^8~10^12级别。 这么多参数肯定是不行的,那么我们就想办法减少参数的个数对于输出层feature map上的每一个像素,他与原图片的每一个像素都有连接,每一个链接都需要一个参数。但注意到图像一般都是局部相关的,那么如果输出层的每一个像素只和输入层图片的一个局部相连,那么需要参数的个数就会大大减少。假设输出层每个像素只与输入图片上F*F的一个小方块有连接,也就是说输出层的这个像素值,只是通过原图的这个F*F的小方形中的像素值计算而来,那么对于输出层的每个像素,需要的参数个数就从原来的W*H减小到了F*F。如果对于原图片的每一个F*F的方框都需要计算这样一个输出值,那么需要的参数只是W*H*F*F,如果原图长宽是10^2级别,而F在10以内的话,那么需要的参数的个数只有10^5~10^6级别,相比于原来的10^8~10^12小了很多很多。

哪些神经网络结构会发生权重共享

说的确定应该就是训练方法吧,神经网络的权值不是人工给定的。而是用训练集(包括输入和输出)训练,用训练集训练一遍称为一个epoch,一般要许多epoch才行,目的是使得目标与训练结果的误差(一般采用均方误差)小到一个给定的阈值。以上所说是有监督的学习方法,还有无监督的学习方法。

Ⅲ 卷积神经网络

关于花书中卷积网络的笔记记录于 https://www.jianshu.com/p/5a3c90ea0807 。

卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种具有 局部连接、权重共享 等特性的深层前馈神经网络。卷积神经网络是受生物学上感受野的机制而提出。 感受野(Receptive Field) 主要是指听觉、视觉等神经系统中一些神经元的特性,即 神经元只接受其所支配的刺激区域内的信号

卷积神经网络最早是主要用来处理图像信息。如果用全连接前馈网络来处理图像时,会存在以下两个问题:

目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练。 卷积神经网络有三个结构上的特性:局部连接,权重共享以及汇聚 。这些特性使卷积神经网络具有一定程度上的平移、缩放和旋转不变性。

卷积(Convolution)是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维卷积。

一维卷积经常用在信号处理中,用于计算信号的延迟累积。假设一个信号发生器每个时刻t 产生一个信号 ,其信息的衰减率为 ,即在 个时间步长后,信息为原来的 倍。假设 ,那么在时刻t收到的信号 为当前时刻产生的信息和以前时刻延迟信息的叠加:

我们把 称为 滤波器(Filter)或卷积核(Convolution Kernel) 。假设滤波器长度为 ,它和一个信号序列 的卷积为:

信号序列 和滤波器 的卷积定义为:

一般情况下滤波器的长度 远小于信号序列长度 ,下图给出一个一维卷积示例,滤波器为 :

二维卷积经常用在图像处理中。因为图像为一个两维结构,所以需要将一维卷积进行扩展。给定一个图像 和滤波器 ,其卷积为:

下图给出一个二维卷积示例:

注意这里的卷积运算并不是在图像中框定卷积核大小的方框并将各像素值与卷积核各个元素相乘并加和,而是先把卷积核旋转180度,再做上述运算。

在图像处理中,卷积经常作为特征提取的有效方法。一幅图像在经过卷积操作后得到结果称为 特征映射(Feature Map)

最上面的滤波器是常用的高斯滤波器,可以用来对图像进行 平滑去噪 ;中间和最下面的过滤器可以用来 提取边缘特征

在机器学习和图像处理领域,卷积的主要功能是在一个图像(或某种特征)上滑动一个卷积核(即滤波器),通过卷积操作得到一组新的特征。在计算卷积的过程中,需要进行卷积核翻转(即上文提到的旋转180度)。 在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销。

互相关(Cross-Correlation)是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现 。给定一个图像 和卷积核 ,它们的互相关为:

互相关和卷积的区别仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积 。当卷积核是可学习的参数时,卷积和互相关是等价的。因此,为了实现上(或描述上)的方便起见,我们用互相关来代替卷积。事实上,很多深度学习工具中卷积操作其实都是互相关操作。

在卷积的标准定义基础上,还可以引入滤波器的 滑动步长 零填充 来增加卷积多样性,更灵活地进行特征抽取。

滤波器的步长(Stride)是指滤波器在滑动时的时间间隔。

零填充(Zero Padding)是在输入向量两端进行补零。

假设卷积层的输入神经元个数为 ,卷积大小为 ,步长为 ,神经元两端各填补 个零,那么该卷积层的神经元数量为 。

一般常用的卷积有以下三类:

因为卷积网络的训练也是基于反向传播算法,因此我们重点关注卷积的导数性质:

假设 。

, , 。函数 为一个标量函数。

则由 有:

可以看出, 关于 的偏导数为 和 的卷积

同理得到:

当 或 时, ,即相当于对 进行 的零填充。从而 关于 的偏导数为 和 的宽卷积

用互相关的“卷积”表示,即为(注意 宽卷积运算具有交换性性质 ):

在全连接前馈神经网络中,如果第 层有 个神经元,第 层有 个神经元,连接边有 个,也就是权重矩阵有 个参数。当 和 都很大时,权重矩阵的参数非常多,训练的效率会非常低。

如果采用卷积来代替全连接,第 层的净输入 为第 层活性值 和滤波器 的卷积,即:

根据卷积的定义,卷积层有两个很重要的性质:

由于局部连接和权重共享,卷积层的参数只有一个m维的权重 和1维的偏置 ,共 个参数。参数个数和神经元的数量无关。此外,第 层的神经元个数不是任意选择的,而是满足 。

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。

特征映射(Feature Map)为一幅图像(或其它特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征。 为了提高卷积网络的表示能力,可以在每一层使用多个不同的特征映射,以更好地表示图像的特征。

在输入层,特征映射就是图像本身。如果是灰度图像,就是有一个特征映射,深度 ;如果是彩色图像,分别有RGB三个颜色通道的特征映射,深度 。

不失一般性,假设一个卷积层的结构如下:

为了计算输出特征映射 ,用卷积核 分别对输入特征映射 进行卷积,然后将卷积结果相加,并加上一个标量偏置 得到卷积层的净输入 再经过非线性激活函数后得到输出特征映射 。

在输入为 ,输出为 的卷积层中,每个输出特征映射都需要 个滤波器以及一个偏置。假设每个滤波器的大小为 ,那么共需要 个参数。

汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进行特征选择,降低特征数量,并从而减少参数数量。

常用的汇聚函数有两种:

其中 为区域 内每个神经元的激活值。

可以看出,汇聚层不但可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野。

典型的汇聚层是将每个特征映射划分为 大小的不重叠区域,然后使用最大汇聚的方式进行下采样。汇聚层也可以看做是一个特殊的卷积层,卷积核大小为 ,步长为 ,卷积核为 函数或 函数。过大的采样区域会急剧减少神经元的数量,会造成过多的信息损失。

一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。

目前常用卷积网络结构如图所示,一个卷积块为连续 个卷积层和 个汇聚层( 通常设置为 , 为 或 )。一个卷积网络中可以堆叠 个连续的卷积块,然后在后面接着 个全连接层( 的取值区间比较大,比如 或者更大; 一般为 )。

目前,整个网络结构 趋向于使用更小的卷积核(比如 和 )以及更深的结构(比如层数大于50) 。此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用变得也越来越小,因此目前比较流行的卷积网络中, 汇聚层的比例也逐渐降低,趋向于全卷积网络

在全连接前馈神经网络中,梯度主要通过每一层的误差项 进行反向传播,并进一步计算每层参数的梯度。在卷积神经网络中,主要有两种不同功能的神经层:卷积层和汇聚层。而参数为卷积核以及偏置,因此 只需要计算卷积层中参数的梯度。

不失一般性,第 层为卷积层,第 层的输入特征映射为 ,通过卷积计算得到第 层的特征映射净输入 ,第 层的第 个特征映射净输入

由 得:

同理可得,损失函数关于第 层的第 个偏置 的偏导数为:

在卷积网络中,每层参数的梯度依赖其所在层的误差项 。

卷积层和汇聚层中,误差项的计算有所不同,因此我们分别计算其误差项。

第 层的第 个特征映射的误差项 的具体推导过程如下:

其中 为第 层使用的激活函数导数, 为上采样函数(upsampling),与汇聚层中使用的下采样操作刚好相反。如果下采样是最大汇聚(max pooling),误差项 中每个值会直接传递到上一层对应区域中的最大值所对应的神经元,该区域中其它神经元的误差项的都设为0。如果下采样是平均汇聚(meanpooling),误差项 中每个值会被平均分配到上一层对应区域中的所有神经元上。

第 层的第 个特征映射的误差项 的具体推导过程如下:

其中 为宽卷积。

LeNet-5虽然提出的时间比较早,但是是一个非常成功的神经网络模型。基于LeNet-5 的手写数字识别系统在90年代被美国很多银行使用,用来识别支票上面的手写数字。LeNet-5 的网络结构如图:

不计输入层,LeNet-5共有7层,每一层的结构为:

AlexNet是第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的一些技术方法,比如采用了ReLU作为非线性激活函数,使用Dropout防止过拟合,使用数据增强来提高模型准确率等。AlexNet 赢得了2012 年ImageNet 图像分类竞赛的冠军。

AlexNet的结构如图,包括5个卷积层、3个全连接层和1个softmax层。因为网络规模超出了当时的单个GPU的内存限制,AlexNet 将网络拆为两半,分别放在两个GPU上,GPU间只在某些层(比如第3层)进行通讯。

AlexNet的具体结构如下:

在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题。 在Inception网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception模块。Inception网络是由有多个inception模块和少量的汇聚层堆叠而成

v1版本的Inception模块,采用了4组平行的特征抽取方式,分别为1×1、3× 3、5×5的卷积和3×3的最大汇聚。同时,为了提高计算效率,减少参数数量,Inception模块在进行3×3、5×5的卷积之前、3×3的最大汇聚之后,进行一次1×1的卷积来减少特征映射的深度。如果输入特征映射之间存在冗余信息, 1×1的卷积相当于先进行一次特征抽取

Ⅳ 如何理解人工智能神经网络中的权值共享问题

权值(权重)共享这个词是由LeNet5模型提出来的。以CNN为例,在对一张图偏进行卷积的过程中,使用的是同一个卷积核的参数。比如一个3×3×1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。说的再直白一些,就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片(当然CNN中每一层不会只有一个卷积核的,这样说只是为了方便解释而已)。

Ⅳ CNN卷积神经网络结构有哪些特点

局部连接,权值共享,池化操作,多层次结构。
1、局部连接使网络可以提取数据的局部特征;

2、权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积;

3、池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。

Ⅵ 人工神经网络综述

文章主要分为:
一、人工神经网络的概念;
二、人工神经网络的发展历史;
三、人工神经网络的特点;
四、人工神经网络的结构。
。。

人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型。该模型以并行分布的处理能力、高容错性、智能化和自学习等能力为特征,将信息的加工和存储结合在一起,以其独特的知识表示方式和智能化的自适应学习能力,引起各学科领域的关注。它实际上是一个有大量简单元件相互连接而成的复杂网络,具有高度的非线性,能够进行复杂的逻辑操作和非线性关系实现的系统。

神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),神经网络就是通过这种方式来模拟人类的记忆。网络的输出则取决于网络的结构、网络的连接方式、权重和激活函数。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。神经网络的构筑理念是受到生物的神经网络运作启发而产生的。人工神经网络则是把对生物神经网络的认识与数学统计模型相结合,借助数学统计工具来实现。另一方面在人工智能学的人工感知领域,我们通过数学统计学的方法,使神经网络能够具备类似于人的决定能力和简单的判断能力,这种方法是对传统逻辑学演算的进一步延伸。

人工神经网络中,神经元处理单元可表示不同的对象,例如特征、字母、概念,或者一些有意义的抽象模式。网络中处理单元的类型分为三类:输入单元、输出单元和隐单元。输入单元接受外部世界的信号与数据;输出单元实现系统处理结果的输出;隐单元是处在输入和输出单元之间,不能由系统外部观察的单元。神经元间的连接权值反映了单元间的连接强度,信息的表示和处理体现在网络处理单元的连接关系中。人工神经网络是一种非程序化、适应性、大脑风格的信息处理,其本质是通过网络的变换和动力学行为得到一种并行分布式的信息处理功能,并在不同程度和层次上模仿人脑神经系统的信息处理功能。

神经网络,是一种应用类似于大脑神经突触连接结构进行信息处理的数学模型,它是在人类对自身大脑组织结合和思维机制的认识理解基础之上模拟出来的,它是根植于神经科学、数学、思维科学、人工智能、统计学、物理学、计算机科学以及工程科学的一门技术。

在介绍神经网络的发展历史之前,首先介绍一下神经网络的概念。神经网络主要是指一种仿造人脑设计的简化的计算模型,这种模型中包含了大量的用于计算的神经元,这些神经元之间会通过一些带有权重的连边以一种层次化的方式组织在一起。每一层的神经元之间可以进行大规模的并行计算,层与层之间进行消息的传递。

下图展示了整个神经网络的发展历程:

神经网络的发展有悠久的历史。其发展过程大致可以概括为如下4个阶段。

(1)、M-P神经网络模型:20世纪40年代,人们就开始了对神经网络的研究。1943 年,美国心理学家麦克洛奇(Mcculloch)和数学家皮兹(Pitts)提出了M-P模型,此模型比较简单,但是意义重大。在模型中,通过把神经元看作个功能逻辑器件来实现算法,从此开创了神经网络模型的理论研究。
(2)、Hebb规则:1949 年,心理学家赫布(Hebb)出版了《The Organization of Behavior》(行为组织学),他在书中提出了突触连接强度可变的假设。这个假设认为学习过程最终发生在神经元之间的突触部位,突触的连接强度随之突触前后神经元的活动而变化。这一假设发展成为后来神经网络中非常着名的Hebb规则。这一法则告诉人们,神经元之间突触的联系强度是可变的,这种可变性是学习和记忆的基础。Hebb法则为构造有学习功能的神经网络模型奠定了基础。
(3)、感知器模型:1957 年,罗森勃拉特(Rosenblatt)以M-P 模型为基础,提出了感知器(Perceptron)模型。感知器模型具有现代神经网络的基本原则,并且它的结构非常符合神经生理学。这是一个具有连续可调权值矢量的MP神经网络模型,经过训练可以达到对一定的输入矢量模式进行分类和识别的目的,它虽然比较简单,却是第一个真正意义上的神经网络。Rosenblatt 证明了两层感知器能够对输入进行分类,他还提出了带隐层处理元件的三层感知器这一重要的研究方向。Rosenblatt 的神经网络模型包含了一些现代神经计算机的基本原理,从而形成神经网络方法和技术的重大突破。
(4)、ADALINE网络模型: 1959年,美国着名工程师威德罗(B.Widrow)和霍夫(M.Hoff)等人提出了自适应线性元件(Adaptive linear element,简称Adaline)和Widrow-Hoff学习规则(又称最小均方差算法或称δ规则)的神经网络训练方法,并将其应用于实际工程,成为第一个用于解决实际问题的人工神经网络,促进了神经网络的研究应用和发展。ADALINE网络模型是一种连续取值的自适应线性神经元网络模型,可以用于自适应系统。

人工智能的创始人之一Minsky和Papert对以感知器为代表的网络系统的功能及局限性从数学上做了深入研究,于1969年发表了轰动一时《Perceptrons》一书,指出简单的线性感知器的功能是有限的,它无法解决线性不可分的两类样本的分类问题,如简单的线性感知器不可能实现“异或”的逻辑关系等。这一论断给当时人工神经元网络的研究带来沉重的打击。开始了神经网络发展史上长达10年的低潮期。
(1)、自组织神经网络SOM模型:1972年,芬兰的KohonenT.教授,提出了自组织神经网络SOM(Self-Organizing feature map)。后来的神经网络主要是根据KohonenT.的工作来实现的。SOM网络是一类无导师学习网络,主要用于模式识别﹑语音识别及分类问题。它采用一种“胜者为王”的竞争学习算法,与先前提出的感知器有很大的不同,同时它的学习训练方式是无指导训练,是一种自组织网络。这种学习训练方式往往是在不知道有哪些分类类型存在时,用作提取分类信息的一种训练。
(2)、自适应共振理论ART:1976年,美国Grossberg教授提出了着名的自适应共振理论ART(Adaptive Resonance Theory),其学习过程具有自组织和自稳定的特征。

(1)、Hopfield模型:1982年,美国物理学家霍普菲尔德(Hopfield)提出了一种离散神经网络,即离散Hopfield网络,从而有力地推动了神经网络的研究。在网络中,它首次将李雅普诺夫(Lyapunov)函数引入其中,后来的研究学者也将Lyapunov函数称为能量函数。证明了网络的稳定性。1984年,Hopfield 又提出了一种连续神经网络,将网络中神经元的激活函数由离散型改为连续型。1985 年,Hopfield和Tank利用Hopfield神经网络解决了着名的旅行推销商问题(Travelling Salesman Problem)。Hopfield神经网络是一组非线性微分方程。Hopfield的模型不仅对人工神经网络信息存储和提取功能进行了非线性数学概括,提出了动力方程和学习方程,还对网络算法提供了重要公式和参数,使人工神经网络的构造和学习有了理论指导,在Hopfield模型的影响下,大量学者又激发起研究神经网络的热情,积极投身于这一学术领域中。因为Hopfield 神经网络在众多方面具有巨大潜力,所以人们对神经网络的研究十分地重视,更多的人开始了研究神经网络,极大地推动了神经网络的发展。
(2)、Boltzmann机模型:1983年,Kirkpatrick等人认识到模拟退火算法可用于NP完全组合优化问题的求解,这种模拟高温物体退火过程来找寻全局最优解的方法最早由Metropli等人1953年提出的。1984年,Hinton与年轻学者Sejnowski等合作提出了大规模并行网络学习机,并明确提出隐单元的概念,这种学习机后来被称为Boltzmann机。
Hinton和Sejnowsky利用统计物理学的感念和方法,首次提出的多层网络的学习算法,称为Boltzmann 机模型。
(3)、BP神经网络模型:1986年,儒默哈特(D.E.Ru melhart)等人在多层神经网络模型的基础上,提出了多层神经网络权值修正的反向传播学习算法----BP算法(Error Back-Propagation),解决了多层前向神经网络的学习问题,证明了多层神经网络具有很强的学习能力,它可以完成许多学习任务,解决许多实际问题。
(4)、并行分布处理理论:1986年,由Rumelhart和McCkekkand主编的《Parallel Distributed Processing:Exploration in the Microstructures of Cognition》,该书中,他们建立了并行分布处理理论,主要致力于认知的微观研究,同时对具有非线性连续转移函数的多层前馈网络的误差反向传播算法即BP算法进行了详尽的分析,解决了长期以来没有权值调整有效算法的难题。可以求解感知机所不能解决的问题,回答了《Perceptrons》一书中关于神经网络局限性的问题,从实践上证实了人工神经网络有很强的运算能力。
(5)、细胞神经网络模型:1988年,Chua和Yang提出了细胞神经网络(CNN)模型,它是一个细胞自动机特性的大规模非线性计算机仿真系统。Kosko建立了双向联想存储模型(BAM),它具有非监督学习能力。
(6)、Darwinism模型:Edelman提出的Darwinism模型在90年代初产生了很大的影响,他建立了一种神经网络系统理论。
(7)、1988年,Linsker对感知机网络提出了新的自组织理论,并在Shanon信息论的基础上形成了最大互信息理论,从而点燃了基于NN的信息应用理论的光芒。
(8)、1988年,Broomhead和Lowe用径向基函数(Radialbasis function, RBF)提出分层网络的设计方法,从而将NN的设计与数值分析和线性适应滤波相挂钩。
(9)、1991年,Haken把协同引入神经网络,在他的理论框架中,他认为,认知过程是自发的,并断言模式识别过程即是模式形成过程。
(10)、1994年,廖晓昕关于细胞神经网络的数学理论与基础的提出,带来了这个领域新的进展。通过拓广神经网络的激活函数类,给出了更一般的时滞细胞神经网络(DCNN)、Hopfield神经网络(HNN)、双向联想记忆网络(BAM)模型。
(11)、90年代初,Vapnik等提出了支持向量机(Supportvector machines, SVM)和VC(Vapnik-Chervonenkis)维数的概念。
经过多年的发展,已有上百种的神经网络模型被提出。

深度学习(Deep Learning,DL)由Hinton等人于2006年提出,是机器学习的一个新领域。深度学习本质上是构建含有多隐层的机器学习架构模型,通过大规模数据进行训练,得到大量更具代表性的特征信息。深度学习算法打破了传统神经网络对层数的限制,可根据设计者需要选择网络层数。

突触是神经元之间相互连接的接口部分,即一个神经元的神经末梢与另一个神经元的树突相接触的交界面,位于神经元的神经末梢尾端。突触是轴突的终端。
大脑可视作为1000多亿神经元组成的神经网络。神经元的信息传递和处理是一种电化学活动.树突由于电化学作用接受外界的刺激,通过胞体内的活动体现为轴突电位,当轴突电位达到一定的值则形成神经脉冲或动作电位;再通过轴突末梢传递给其它的神经元.从控制论的观点来看;这一过程可以看作一个多输入单输出非线性系统的动态过程。
神经元的功能特性:(1)时空整合功能;(2)神经元的动态极化性;(3)兴奋与抑制状态;(4)结构的可塑性;(5)脉冲与电位信号的转换;(6)突触延期和不应期;(7)学习、遗忘和疲劳。

神经网络从两个方面模拟大脑:
(1)、神经网络获取的知识是从外界环境中学习得来的。
(2)、内部神经元的连接强度,即突触权值,用于储存获取的知识。
神经网络系统由能够处理人类大脑不同部分之间信息传递的由大量神经元连接形成的拓扑结构组成,依赖于这些庞大的神经元数目和它们之间的联系,人类的大脑能够收到输入的信息的刺激由分布式并行处理的神经元相互连接进行非线性映射处理,从而实现复杂的信息处理和推理任务。
对于某个处理单元(神经元)来说,假设来自其他处理单元(神经元)i的信息为Xi,它们与本处理单元的互相作用强度即连接权值为Wi, i=0,1,…,n-1,处理单元的内部阈值为θ。那么本处理单元(神经元)的输入为:

,而处理单元的输出为:

式中,xi为第i个元素的输入,wi为第i个处理单元与本处理单元的互联权重即神经元连接权值。f称为激活函数或作用函数,它决定节点(神经元)的输出。θ表示隐含层神经节点的阈值。

神经网络的主要工作是建立模型和确定权值,一般有前向型和反馈型两种网络结构。通常神经网络的学习和训练需要一组输入数据和输出数据对,选择网络模型和传递、训练函数后,神经网络计算得到输出结果,根据实际输出和期望输出之间的误差进行权值的修正,在网络进行判断的时候就只有输入数据而没有预期的输出结果。神经网络一个相当重要的能力是其网络能通过它的神经元权值和阈值的不断调整从环境中进行学习,直到网络的输出误差达到预期的结果,就认为网络训练结束。

对于这样一种多输入、单输出的基本单元可以进一步从生物化学、电生物学、数学等方面给出描述其功能的模型。利用大量神经元相互连接组成的人工神经网络,将显示出人脑的若干特征,人工神经网络也具有初步的自适应与自组织能力。在学习或训练过程中改变突触权重wij值,以适应周围环境的要求。同一网络因学习方式及内容不同可具有不同的功能。人工神经网络是一个具有学习能力的系统,可以发展知识,以至超过设计者原有的知识水平。通常,它的学习(或训练)方式可分为两种,一种是有监督(supervised)或称有导师的学习,这时利用给定的样本标准进行分类或模仿;另一种是无监督(unsupervised)学习或称无导师学习,这时,只规定学习方式或某些规则,而具体的学习内容随系统所处环境(即输入信号情况)而异,系统可以自动发现环境特征和规律性,具有更近似于人脑的功能。
在人工神经网络设计及应用研究中,通常需要考虑三个方面的内容,即神经元激活函数、神经元之间的连接形式和网络的学习(训练)。

Ⅶ 循环神经网络

花书中关于RNN的内容记录于 https://www.jianshu.com/p/206090600f13 。

在前馈神经网络中,信息的传递是单向的,这种限制虽然使得网络变得更容易学习,但在一定程度上也减弱了神经网络模型的能力。在生物神经网络中,神经元之间的连接关系要复杂的多。 前馈神经网络可以看作是一个复杂的函数,每次输入都是独立的,即网络的输出只依赖于当前的输入。但是在很多现实任务中,网络的输入不仅和当前时刻的输入相关,也和其过去一段时间的输出相关 。因此,前馈网络难以处理时序数据,比如视频、语音、文本等。时序数据的长度一般是不固定的,而前馈神经网络要求输入和输出的维数都是固定的,不能任意改变。因此,当处理这一类和时序相关的问题时,就需要一种能力更强的模型。

循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。 和前馈神经网络相比,循环神经网络更加符合生物神经网络的结构。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上。循环神经网络的参数学习可以通过 随时间反向传播算法 来学习。

为了处理这些时序数据并利用其历史信息,我们需要让网络具有短期记忆能力。而前馈网络是一个静态网络,不具备这种记忆能力。

一种简单的利用历史信息的方法是建立一个额外的延时单元,用来存储网络的历史信息(可以包括输入、输出、隐状态等)。比较有代表性的模型是延时神经网络。

延时神经网络是在前馈网络中的非输出层都添加一个延时器,记录最近几次神经元的输出。在第 个时刻,第 层神经元和第 层神经元的最近 次输出相关,即:

延时神经网络在时间维度上共享权值,以降低参数数量。因此对于序列输入来讲,延时神经网络就相当于卷积神经网络

自回归模型(Autoregressive Model,AR) 是统计学上常用的一类时间序列模型,用一个变量 的历史信息来预测自己:

其中 为超参数, 为参数, 为第 个时刻的噪声,方差 和时间无关。

有外部输入的非线性自回归模型(Nonlinear Autoregressive with ExogenousInputs Model,NARX) 是自回归模型的扩展,在每个时刻 都有一个外部输入 ,产生一个输出 。NARX通过一个延时器记录最近几次的外部输入和输出,第 个时刻的输出 为:

其中 表示非线性函数,可以是一个前馈网络, 和 为超参数。

循环神经网络通过使用带自反馈的神经元,能够处理任意长度的时序数据。

给定一个输入序列 ,循环神经网络通过下面
公式更新带反馈边的隐藏层的活性值 :

其中 , 为一个非线性函数,也可以是一个前馈网络。

从数学上讲,上式可以看成一个动力系统。动力系统(Dynamical System)是一个数学上的概念,指 系统状态按照一定的规律随时间变化的系统 。具体地讲,动力系统是使用一个函数来描述一个给定空间(如某个物理系统的状态空间)中所有点随时间的变化情况。因此, 隐藏层的活性值 在很多文献上也称为状态(State)或隐状态(Hidden States) 。理论上,循环神经网络可以近似任意的非线性动力系统。

简单循环网络(Simple Recurrent Network,SRN)是一个非常简单的循环神经网络,只有一个隐藏层的神经网络。

在一个两层的前馈神经网络中,连接存在相邻的层与层之间,隐藏层的节点之间是无连接的。而 简单循环网络增加了从隐藏层到隐藏层的反馈连接

假设在时刻 时,网络的输入为 ,隐藏层状态(即隐藏层神经元活性值) 不仅和当前时刻的输入 相关,也和上一个时刻的隐藏层状态 相关:

其中 为隐藏层的净输入, 是非线性激活函数,通常为Logistic函数或Tanh函数, 为状态-状态权重矩阵, 为状态-输入权重矩阵, 为偏置。上面两式也经常直接写为:

如果我们把每个时刻的状态都看作是前馈神经网络的一层的话,循环神经网络可以看作是在时间维度上权值共享的神经网络 。下图给出了按时间展开的循环神经网络。

由于循环神经网络具有短期记忆能力,相当于存储装置,因此其计算能力十分强大。 前馈神经网络可以模拟任何连续函数,而循环神经网络可以模拟任何程序。

定义一个完全连接的循环神经网络,其输入为 ,输出为 :

其中 为隐状态, 为非线性激活函数, 和 为网络参数。

这样一个完全连接的循环神经网络可以近似解决所有的可计算问题

循环神经网络可以应用到很多不同类型的机器学习任务。根据这些任务的特点可以分为以下几种模式: 序列到类别模式、同步的序列到序列模式、异步的序列到序列模式

序列到类别模式主要用于序列数据的分类问题:输入为序列,输出为类别。比如在文本分类中,输入数据为单词的序列,输出为该文本的类别。

假设一个样本 为一个长度为 的序列,输出为一个类别 。我们可以将样本 按不同时刻输入到循环神经网络中,并得到不同时刻的隐藏状态 。我们可以将 看作整个序列的最终表示(或特征),并输入给分类器 进行分类:

其中 可以是简单的线性分类器(比如Logistic 回归)或复杂的分类器(比如多层前馈神经网络)

除了将最后时刻的状态作为序列表示之外,我们还可以对整个序列的所有状态进行平均,并用这个平均状态来作为整个序列的表示:

同步的序列到序列模式 主要用于序列标注(Sequence Labeling)任务,即每一时刻都有输入和输出,输入序列和输出序列的长度相同 。比如词性标注(Partof-Speech Tagging)中,每一个单词都需要标注其对应的词性标签。

输入为序列 ,输出为序列 。样本 按不同时刻输入到循环神经网络中,并得到不同时刻的隐状态 。每个时刻的隐状态 代表当前和历史的信息,并输入给分类器 得到当前时刻的标签 。

异步的序列到序列模式也称为 编码器-解码器(Encoder-Decoder)模型,即输入序列和输出序列不需要有严格的对应关系,也不需要保持相同的长度。 比如在机器翻译中,输入为源语言的单词序列,输出为目标语言的单词序列。

在异步的序列到序列模式中,输入为长度为 的序列 ,输出为长度为 的序列 。经常通过 先编码后解码 的方式来实现。先将样本 按不同时刻输入到一个循环神经网络(编码器)中,并得到其编码 。然后再使用另一个循环神经网络(解码器)中,得到输出序列 。为了建立输出序列之间的依赖关系,在解码器中通常使用非线性的自回归模型。

其中 分别为用作编码器和解码器的循环神经网络, 为分类器, 为预测输出 的向量表示。

循环神经网络的参数可以通过梯度下降方法来进行学习。给定一个训练样本 ,其中 为长度是 的输入序列, 是长度为 的标签序列。即在每个时刻 ,都有一个监督信息 ,我们定义时刻 的损失函数为:

其中 为第 时刻的输出, 为可微分的损失函数,比如交叉熵。那么整个序列上损失函数为:

整个序列的损失函数 关于参数 的梯度为:

即每个时刻损失 对参数 的偏导数之和。

循环神经网络中存在一个递归调用的函数 ,因此其计算参数梯度的方式和前馈神经网络不太相同。在循环神经网络中主要有两种计算梯度的方式: 随时间反向传播(BPTT)和实时循环学习(RTRL)算法。

随时间反向传播(Backpropagation Through Time,BPTT) 算法的主要思想是通过类似前馈神经网络的错误反向传播算法来进行计算梯度。

BPTT算法将循环神经网络看作是一个展开的多层前馈网络,其中“每一层”对应循环网络中的“每个时刻”。在“展开”的前馈网络中,所有层的参数是共享的,因此参数的真实梯度是将所有“展开层”的参数梯度之和

因为参数 和隐藏层在每个时刻 的净输入 有关,因此第 时刻的损失函数 关于参数 的梯度为:

其中 表示“直接”偏导数,即公式 中保持 不变,对 求偏导数,得到:

其中 为第 时刻隐状态的第 维; 除了第 个值为 外,其余都为 的行向量。

定义误差项 为第 时刻的损失对第 时刻隐藏神经层的净输入 的导数,则:

从而:

写成矩阵形式为:

由此得到整个序列的损失函数 关于参数 的梯度:

同理可得, 关于权重 和偏置 的梯度为:

在BPTT算法中,参数的梯度需要在一个完整的“前向”计算和“反向”计算后才能得到并进行参数更新。如下图所示。

与反向传播的BPTT算法不同的是,实时循环学习(Real-Time Recurrent Learning)是通过前向传播的方式来计算梯度。

假设循环神经网络中第 时刻的状态 为:

其关于参数 的偏导数为:

RTRL算法从第1 个时刻开始,除了计算循环神经网络的隐状态之外,还依次前向计算偏导数 。

两种学习算法比较:

RTRL算法和BPTT算法都是基于梯度下降的算法,分别通过前向模式和反向模式应用链式法则来计算梯度。 在循环神经网络中,一般网络输出维度远低于输入维度,因此BPTT算法的计算量会更小,但BPTT算法需要保存所有时刻的中间梯度,空间复杂度较高。RTRL算法不需要梯度回传,因此非常适合于需要在线学习或无限序列的任务中

循环神经网络在学习过程中的主要问题是由于 梯度消失或爆炸问题 ,很难建模长时间间隔(Long Range)的状态之间的依赖关系。

在BPTT算法中,我们有:

如果定义 ,则:

若 ,当 时, ,会造成系统不稳定,称为梯度爆炸问题;相反,若 ,当 时, ,会出现和深度前馈神经网络类似的梯度消失问题。

虽然简单循环网络理论上可以建立长时间间隔的状态之间的依赖关系,但是由于梯度爆炸或消失问题,实际上只能学习到短期的依赖关系。这样,如果t时刻的输出 依赖于 时刻的输入 ,当间隔 比较大时,简单神经网络很难建模这种长距离的依赖关系,称为 长程依赖问题(Long-Term dependencies Problem)

一般而言,循环网络的梯度爆炸问题比较容易解决,一般 通过权重衰减或梯度截断来避免。 权重衰减是通过给参数增加 或 范数的正则化项来限制参数的取值范围,从而使得 。梯度截断是另一种有效的启发式方法,当梯度的模大于一定阈值时,就将它截断成为一个较小的数。

梯度消失是循环网络的主要问题。除了使用一些优化技巧外,更有效的方式就是改变模型,比如让 ,同时使用 ,即:

其中 是一个非线性函数, 为参数。

上式中, 和 之间为线性依赖关系,且权重系数为1,这样就不存在梯度爆炸或消失问题。但是,这种改变也丢失了神经元在反馈边上的非线性激活的性质,因此也降低了模型的表示能力。

为了避免这个缺点,我们可以采用一种更加有效的改进策略:

这样 和 之间为既有线性关系,也有非线性关系,并且可以缓解梯度消失问题。但这种改进依然存在两个问题:

为了解决这两个问题,可以通过引入 门控机制 来进一步改进模型。

为了改善循环神经网络的长程依赖问题,一种非常好的解决方案是引入门控机制来控制信息的累积速度,包括 有选择地加入新的信息,并有选择地遗忘之前累积的信息 。这一类网络可以称为基于门控的循环神经网络(Gated RNN)。本节中,主要介绍两种基于门控的循环神经网络: 长短期记忆网络和门控循环单元网络。

长短期记忆(Long Short-Term Memory,LSTM)网络 是循环神经网络的一个变体,可以有效地解决简单循环神经网络的梯度爆炸或消失问题。

在 基础上,LSTM网络主要改进在以下两个方面:

其中 和 三个门(gate)来控制信息传递的路径; 为向量元素乘积; 为上一时刻的记忆单元; 是通过非线性函数得到的候选状态:

在每个时刻 ,LSTM网络的内部状态 记录了到当前时刻为止的历史信息。

在数字电路中,门(Gate)为一个二值变量{0, 1},0代表关闭状态,不许任何信息通过;1代表开放状态,允许所有信息通过。LSTM网络中的“门”是一种“软”门,取值在(0, 1) 之间,表示 以一定的比例运行信息通过 。LSTM网络中三个门的作用为:

(1)遗忘门 控制上一个时刻的内部状态 需要遗忘多少信息。
(2)输入门 控制当前时刻的候选状态 有多少信息需要保存。
(3)输出门