当前位置: 首页 > 科技观察

一篇文章搞懂四种基本神经网络架构

时间:2023-03-14 23:21:09 科技观察

刚入门神经网络,经常被众多的神经网络架构搞糊涂,神经网络看似复杂多样,但这么多架构无非就是三种,前馈神经网络、循环网络、对称连接网络,本文将介绍四种常见的神经网络,分别是CNN、RNN、DBN、GAN。通过这四种基本的神经网络架构,我们对神经网络有了一定的了解。什么是神经网络神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依赖于系统的复杂性,通过调整大量内部节点之间的互连关系来达到处理信息的目的。总的来说,神经网络的体系结构可以分为三类:前馈神经网络这是实际应用中最常见的一类神经网络。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算一系列改变样本相似性的变换。每层神经元的活动是前一层活动的非线性函数。循环网络在它们的连接图中有定向循环,这意味着你可以沿着箭头回到你开始的地方。它们可能具有复杂的动态,使它们难以训练。它们在生物学上更现实。循环网络的目的是处理顺序数据。在传统的神经网络模型中,从输入层到隐藏层再到输出层,层与层之间是全连接的,各层之间的节点是不连接的。但是这个普通的神经网络对很多问题都无能为力。例如,如果要预测句子中的下一个单词是什么,一般需要使用前面的单词,因为句子中的前后单词不是独立的。循环神经网络,即一个序列的当前输出也与之前的输出相关。具体表现是网络会记住之前的信息,并将其应用到当前输出的计算中,即隐藏层之间的节点不再是连通而是连通,并且隐藏层的输入不仅包括输入层的输出还包括前一时刻隐藏层的输出。对称连接网络:对称连接网络有点像循环网络,但单元之间的连接是对称的(它们在两个方向上的权重相同)。对称连接的网络比循环网络更容易分析。这个网络中有更多的约束,因为它们服从能量函数的规律。没有隐藏单元的对称连接网络称为“Hopfield网络”。具有隐藏单元对称连接的网络称为玻尔兹曼机。感知器其实之前的帖子讲了一些关于感知器的内容,这里再重复一遍。首先这张图是一个M-P神经元。一个神经元有n个输入,每个输入对应一个权重w。神经元将输入和权重相乘,然后求和。将求和的结果与偏差进行比较。差,最后把结果放到激活函数中,激活函数给出最好的输出,输出往往是二元的,0状态代表抑制,1状态代表激活。感知器可分为单层感知器和多层感知器。我们这里主要讲的是单层感知器。感知器由两层神经网络组成。输入层接收外部输入信号并将其传输到输出层。输出层是M-P神经元。感知器可以看作是n维实例空间中的超平面决策面。对于超平面,对于一侧的样本,感知器输出1,对于另一侧的实例,它输出0。决策超平面方程为w?x=0。那些可以被某个超平面分开的正负样本集称为线性可分(linearlyseparable)样本集,它们可以用图中的感知器来表示。And,or,andnon-problems都是线性可分的问题,可以很容易的用一个有两个输入的感知器来表示,而XOR不是线性可分的问题,所以用单层的感知器是不行的。这时候就需要用到多层感知机来解决拼图问题了。如果我们要训练一个感知器呢?我们将从随机权重开始,并将感知器重复应用于每个训练示例,每当错误分类示例时修改感知器的权重。重复此过程,直到感知器正确分类所有示例。每一步根据感知器训练规则修改权重,即修改输入xi对应的权重wi,规则如下:这里t是当前训练样例的目标输出,o是感知器的输出,η是一个正常数,称为学习率。学习率的作用是缓和每一步权重调整的程度。通常设置为较小的值(如0.1),有时会随着权重调整次数的增加而衰减。多层感知器,或者说多层神经网络,无非就是在输入层和输出层之间加入多个隐藏层。后续的CNN、DBN等神经网络只是重新设计了每一层的类型。.感知器可以说是神经网络的基础。后续更复杂的神经网络都离不开最简单的感知器模型。卷积神经网络CNN说到机器学习,我们经常会跟上一个词叫模式识别,但是现实环境中的模式识别往往会出现各种各样的问题。例如:图像分割:真实场景总是与其他物体混合在一起。很难分辨哪些部分属于同一个对象。对象的一部分可以隐藏在其他对象后面。对象照明:像素的强度受照明的强烈影响。图像变形:对象可以以各种非仿射方式变形。例如,手写体也可以有一个大圆圈或只有一个点。上下文支持:对象所属的类别通常由它们的使用方式定义。例如,椅子是为人们坐下而设计的,因此它们有多种物理形状。卷积神经网络与普通神经网络的区别在于,卷积神经网络包含一个由卷积层和下采样层组成的特征提取器。在卷积神经网络的卷积层中,一个神经元只连接到相邻层中的一些神经元。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap)。每个特征平面由一些排列成矩形的神经元组成。同一特征平面的神经元共享权重。这里的共享权重是体积。积累。卷积核一般以随机十进制矩阵的形式进行初始化,卷积核在网络的训练过程中会学习获得合理的权重。共享权重(卷积核)的直接好处是减少网络各层之间的连接,同时降低过拟合的风险。子采样也称为池化,通常有两种形式:均值池化和最大池化。子采样可以看作是一种特殊的卷积过程。卷积和子采样大大简化了模型的复杂度,减少了模型的参数。卷积神经网络由三部分组成。第一部分是输入层。第二部分由n个卷积层和池化层的组合组成。第三部分由一个完全连接的多层感知器分类器组成。这里以AlexNet为例:输入:224×224大小的图片,3通道***层卷积:11×11大小的卷积核96个,每个GPU上48个。***层最大池化:2×2内核。第二层卷积:256个5×5的卷积核,每个GPU上128个。第二层max-pooling:2×2kernel。第三层卷积:与上一层全连接,共有384个3*3的卷积核。在两个GPU上除以192。第四层卷积:384个3×3卷积核,两个GPU各192个。本层与上一层的连接不经过池化层。第五层卷积:256个3×3卷积核,两个GPU上128个。第五层max-pooling:2×2kernel。第一层全连接:4096维,第五层max-pooling的输出连接成一个一维向量作为本层的输入。第二层全连接:4096维Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。卷积神经网络在模式识别领域有着重要的应用。当然,这只是对卷积神经网络最简单的解释。卷积神经网络的知识还是很多的,比如局部感受野、权值共享、多卷积核等。等等内容,以后有机会再说明。递归神经网络(RecurrentNeuralNetwork)RNN传统的神经网络很难处理很多问题。比如要预测一个句子的下一个词,一般需要用到前一个词,因为一个句子的前后词不是独立的。RNN之所以被称为递归神经网络,是因为一个序列的当前输出也与之前的输出有关。具体表现是网络会记住之前的信息,并将其应用到当前输出的计算中,即隐藏层之间的节点不再是连通而是连通,并且隐藏层的输入不仅包括输入层的输出还包括前一时刻隐藏层的输出。理论上,RNN可以处理任意长度的序列数据。这是一个简单的RNN结构,可以看出隐藏层本身是可以和自己相连的。那么为什么RNN的隐藏层可以看到隐藏层前一时刻的输出呢?其实我们展开这个网络就很清楚了。网络在t时刻接收到输入Xt后,隐藏层的值为St,输出值为Ot。关键是,is的值不仅取决于Xt,还取决于St-1。式1是输出层的计算公式。输出层是全连接层,即它的每个节点都连接到隐藏层的每个节点。V是输出层的权重矩阵,g是激活函数。等式2是隐藏层的计算公式,隐藏层是循环层。U为输入x的权重矩阵,W为本次输入的最后一个值St-1的权重矩阵,f为激活函数。从上面的公式我们可以看出循环层和全连接层的区别在于循环层多了一个权重矩阵W。如果我们反复将式2带入式1,我们将得到:由上式我们可以看到循环神经网络的输出值受前面输入值Xt,Xt-1,Xt-2,X-3,X-4...的影响,这就是为什么循环神经网络可以看提前到任意数量的输入值。DeepBeliefNetworkDBN在讲DBN之前,我们需要对DBN的基本单元,即RBM,restrictedBoltzmannmachine有一定的了解。首先,什么是玻尔兹曼机?如图,是玻尔兹曼机,蓝色节点是隐藏层,白色节点是输入层。玻尔兹曼机和循环神经网络的区别体现在以下几点:1.循环神经网络的本质是学习一个函数,所以有输入层和输出层的概念,而玻尔兹曼机的用处在于学习一个功能。组数据的“内在表示”,因此它没有输出层的概念。2、循环神经网络的节点连接成有向环,而玻尔兹曼机的节点连接成无向完全图。什么是受限玻尔兹曼机?最简单的说,就是加了一个限制条件,把完全图变成了二分图。也就是说,它由显层和隐层组成,显层和隐层中的神经元是双向全连接的。h表示隐藏层,v表示显示层在RBM中,任意两个连接的神经元之间有一个权重w表示其连接强度,每个神经元本身有一个偏置系数b(对显示层神经元)和c(对于隐藏层神经元)来表示它自己的权重。具体的公式推导这里就不展示了。DBN是一种概率生成模型。与传统判别模型的神经网络相比,生成模型是建立观测数据和标签之间的联合分布,对于P(Observation|Label)和P(Label|Observation)已经进行了评价,而判别模型只评价后者,即P(Label|Observation)。DBN由多个受限玻尔兹曼机(RestrictedBoltzmannMachines)层组成,典型的神经网络类型如图所示。这些网络“限于”一个可见层和一个隐藏层,层与层之间有连接,但层内单元之间没有连接。隐藏层单元经过训练以捕获可见层中显示的高阶数据相关性。生成对抗网络GAN生成对抗网络其实之前的帖子已经讲解过了,这里再说明一下。生成对抗网络的目标是生成。我们传统的网络结构往往是判别模型,即判断一个样本的真伪。另一方面,生成模型能够根据提供的样本生成类似的新样本,注意这些样本是由计算机学习的。GAN一般由两个网络组成,生成模型网络和判别模型网络。生成模型G捕获样本数据的分布,生成与真实训练数据相似的样本,噪声z服从一定分布(均匀分布、高斯分布等),追求效果尽可能接近可能到真实样品;判别模型D是一个二元分类器,估计样本来自训练数据(而不是生成数据)的概率。如果样本来自真实的训练数据,则D输出高概率,否则,D输出小概率。例如:生成网络G就像一个造假币的团伙,专门制造假币,鉴别网络D就像警察,专门检测所用货币的真假。D的目标是找到检测G生成的假币的方法。传统判别网络:生成对抗网络:训练过程中,固定一方,更新另一方的网络权重,交替迭代。在这个过程中,双方都尽力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的时候,生成模型G恢复训练数据的分布(创建与真实样本完全相同的样本data),判别模型已经无法区分结果,准确率为50%。下面展示了cDCGAN(写在前一篇文章中)生成网络判别网络最终结果的例子,使用MNIST作为初始样本,通过学习后生成的数字可以看出学习效果还是好的。总结本文简单介绍了CNN、RNN、DBN、GAN这四种神经网络的架构。当然,这只是简单介绍,并没有深入解释其内涵。这四种神经网络的架构非常普遍,应用广泛。当然,神经网络的知识不可能几篇帖子就讲完。这里的知识讲解一些基础知识,帮助大家快速进入(zhuang)门(bi)。后面的帖子会讲解deepautoencoder,Hopfield网络长短期记忆网络(LSTM)。