[DeepLearning]神经网络基础Poll的笔记

目前,深度学习(DeepLearning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网、人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革。要学习深度学习,那么首先要熟悉神经网络(NeuralNetworks,简称NN)的一些基本概念。当然,这里所说的神经网络不是生物学的神经网络,我们将其称之为人工神经网络(ArtificialNeuralNetworks,简称ANN)貌似更为合理。神经网络最早是人工智能领域的一种算法或者说是模型,目前神经网络已经发展成为一类多学科交叉的学科领域,它也随着深度学习取得的进展重新受到重视和推崇。

下图为生物学上的神经元结构示意图:

1943年,McCulloch和Pitts将上图的神经元结构用一种简单的模型进行了表示,构成了一种人工神经元模型,也就是我们现在经常用到的“M-P神经元模型”,如下图所示:

从上图M-P神经元模型可以看出,神经元的输出

$y=f(\sum_{i=1}^{n}w_{i}x_{i}-\theta)$

其中$\theta$为我们之前提到的神经元的激活阈值,函数$f(·)$也被称为是激活函数。如上图所示,函数$f(·)$可以用一个阶跃方程表示,大于阈值激活;否则则抑制。但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数函数$f(·)$。

sigmoid函数的表达式和分布图如下所示:

$f(x)=\frac{1}{1+e^{-x}}$

感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。下图表示了一个输入层具有三个神经元(分别表示为$x_{0}$、$x_{1}$、$x_{2}$)的感知机结构:

根据上图不难理解,感知机模型可以由如下公式表示:

$y=f(wx+b)$

其中,$w$为感知机输入层到输出层连接的权重,$b$表示输出层的偏置。事实上,感知机是一种判别式的线性分类模型,可以解决与、或、非这样的简单的线性可分(linearlyseparable)问题,线性可分问题的示意图见下图:

关于感知机解决异或问题还有一段历史值得我们简单去了解一下:感知器只能做简单的线性分类任务。但是当时的人们热情太过于高涨,并没有人清醒的认识到这点。于是,当人工智能领域的巨擘Minsky指出这点时,事态就发生了变化。Minsky在1969年出版了一本叫《Perceptron》的书,里面用详细的数学证明了感知器的弱点,尤其是感知器对XOR(异或)这样的简单分类任务都无法解决。Minsky认为,如果将计算层增加到两层,计算量则过大,而且没有有效的学习算法。所以,他认为研究更深层的网络是没有价值的。由于Minsky的巨大影响力以及书中呈现的悲观态度,让很多学者和实验室纷纷放弃了神经网络的研究。神经网络的研究陷入了冰河期。这个时期又被称为“AIwinter”。接近10年以后,对于两层神经网络的研究才带来神经网络的复苏。

我们知道,我们日常生活中很多问题,甚至说大多数问题都不是线性可分问题,那我们要解决非线性可分问题该怎样处理呢?这就是这部分我们要引出的“多层”的概念。既然单层感知机解决不了非线性问题,那我们就采用多层感知机,下图就是一个两层感知机解决异或问题的示意图:

构建好上述网络以后,通过训练得到最后的分类面如下:

由此可见,多层感知机可以很好的解决非线性可分问题,我们通常将多层感知机这样的多层结构称之为是神经网络。但是,正如Minsky之前所担心的,多层感知机虽然可以在理论上可以解决非线性问题,但是实际生活中问题的复杂性要远不止异或问题这么简单,所以我们往往要构建多层网络,而对于多层神经网络采用什么样的学习算法又是一项巨大的挑战,如下图所示的具有4层隐含层的网络结构中至少有33个参数(不计偏置bias参数),我们应该如何去确定呢?

所谓神经网络的训练或者是学习,其主要目的在于通过学习算法得到神经网络解决指定问题所需的参数,这里的参数包括各层神经元之间的连接权重以及偏置等。因为作为算法的设计者(我们),我们通常是根据实际问题来构造出网络结构,参数的确定则需要神经网络通过训练样本和学习算法来迭代找到最优参数组。

说起神经网络的学习算法,不得不提其中最杰出、最成功的代表——误差逆传播(errorBackPropagation,简称BP)算法。BP学习算法通常用在最为广泛使用的多层前馈神经网络中。

BP算法的主要流程可以总结如下:

输入:训练集$D={(x_k,y_k)}_{k=1}^{m}$;学习率;

过程:

1.在(0,1)范围内随机初始化网络中所有连接权和阈值

2.repeat:

3.forall$(x_{k},y_{k})\inD$do

4.根据当前参数计算当前样本的输出;

5.计算输出层神经元的梯度项;

6.计算隐层神经元的梯度项;

7.更新连接权与阈值

8.endfor

9.until达到停止条件

输出:连接权与阈值确定的多层前馈神经网络

备注:后续补充BP算法的公式推导。

神经网络中有一类模型是为网络状态定义一个“能量”,能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数。Boltzmann(玻尔兹曼)机就是基于能量的模型,其神经元分为两层:显层和隐层。显层用于表示数据的输入和输出,隐层则被理解为数据的内在表达。Boltzmann机的神经元都是布尔型的,即只能取0、1值。标准的Boltzmann机是全连接的,也就是说各层内的神经元都是相互连接的,因此计算复杂度很高,而且难以用来解决实际问题。因此,我们经常使用一种特殊的Boltzmann机——受限玻尔兹曼机(RestrictedBoltzmannMechine,简称RBM),它层内无连接,层间有连接,可以看做是一个二部图。下图为Boltzmann机和RBM的结构示意图:

RBM常常用对比散度(ConstrastiveDivergence,简称CD)来进行训练。

RBF(RadialBasisFunction)径向基函数网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。下图为一个RBF神经网络示意图:

训练RBF网络通常采用两步:

1>确定神经元中心,常用的方式包括随机采样,聚类等;

2>确定神经网络参数,常用算法为BP算法。

ART(AdaptiveResonanceTheory)自适应谐振理论网络是竞争型学习的重要代表,该网络由比较层、识别层、识别层阈值和重置模块构成。ART比较好的缓解了竞争型学习中的“可塑性-稳定性窘境”(stability-plasticitydilemma),可塑性是指神经网络要有学习新知识的能力,而稳定性则指的是神经网络在学习新知识时要保持对旧知识的记忆。这就使得ART网络具有一个很重要的优点:可进行增量学习或在线学习。

SOM(Self-OrganizingMap,自组织映射)网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维),同事保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的临近神经元。下图为SOM网络的结构示意图:

我们前面提到过,一般的神经网络都是先指定好网络结构,训练的目的是利用训练样本来确定合适的连接权、阈值等参数。与此不同的是,结构自适应网络则将网络结构也当做学习的目标之一,并希望在训练过程中找到最符合数据特点的网络结构。

Elman网络是最常用的递归神经网络之一,其结构如下图所示:

深度学习指的是深度神经网络模型,一般指网络层数在三层或者三层以上的神经网络结构。

理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。就像前面多层感知机带给我们的启示一样,神经网络的层数直接决定了它对现实的刻画能力。但是在一般情况下,复杂模型的训练效率低,易陷入过拟合,因此难以受到人们的青睐。具体来讲就是,随着神经网络层数的加深,优化函数越来越容易陷入局部最优解(即过拟合,在训练样本上有很好的拟合效果,但是在测试集上效果很差)。同时,不可忽略的一个问题是随着网络层数增加,“梯度消失”(或者说是梯度发散diverge)现象更加严重。我们经常使用sigmoid函数作为隐含层的功能神经元,对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本接收不到有效的训练信号。

为了解决深层神经网络的训练问题,一种有效的手段是采取无监督逐层训练(unsupervisedlayer-wisetraining),其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,这被称之为“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)训练。比如Hinton在深度信念网络(DeepBeliefNetworks,简称DBN)中,每层都是一个RBM,即整个网络可以被视为是若干个RBM堆叠而成。在使用无监督训练时,首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM进行训练;然后,将第一层预训练号的隐节点视为第二层的输入节点,对第二层进行预训练;...各层预训练完成后,再利用BP算法对整个网络进行训练。

事实上,“预训练+微调”的训练方式可被视为是将大量参数分组,对每组先找到局部看起来较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。

另一种节省训练开销的做法是进行“权共享”(weightsharing),即让一组神经元使用相同的连接权,这个策略在卷积神经网络(ConvolutionalNeuralNetworks,简称CNN)中发挥了重要作用。下图为一个CNN网络示意图:

CNN可以用BP算法进行训练,但是在训练中,无论是卷积层还是采样层,其每组神经元(即上图中的每一个“平面”)都是用相同的连接权,从而大幅减少了需要训练的参数数目。

THE END
1.几种常见的神经网络了解简述常用的神经网络有哪些几种常见的神经网络了解 神经网络技术起源-感知机 神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的。但是,https://blog.csdn.net/studyeboy/article/details/54376676
2.《常见神经网络模型》课件.pptx《常见神经网络模型》ppt课件神经网络简介常见神经网络模型神经网络的训练与优化神经网络的未来发展与挑战目录01神经网络简介描述神经网络的基本单元,包括输入、权重、激活函数等。神经元模型神经网络结构训练与优化介绍神经网络的层次结构,包括输入层、隐藏层和输出层。阐述神经网络的训练过程和优化算法,如梯度下降法等。0302https://www.renrendoc.com/paper/310738553.html
3.神经网络的基本概念以及常见的神经网络(一)(3)硬声是电子发烧友旗下广受电子工程师喜爱的短视频平台,推荐神经网络的基本概念以及常见的神经网络(一)(3) 视频给您,在硬声你可以学习知识技能、随时展示自己的作品和产品、分享自己的经验或方案、与同行畅快交流,无论你是学生、工程师、原厂、方案商、代理商、终端商https://www.elecfans.com/v/396845
4.神经网络的重要特征神经网络的基本特点神经网络的学习过程,就是根据训练数据来调整神经元之间的连接权(connection weight)以及每个功能神经元的阈值,简言之,神经网络模型要学得就是连接权和阈值。下面就要看用什么算法来学习出神经网络模型的权值和阈值。 5.3误差逆传播算法 误差逆传播算法(error BackPropagation,BP算法)是训练多层前馈神经网络模型的常见算法https://blog.51cto.com/u_75269/8272128
5.下列不属于常见的深度神经网络结构有()。参考解析: 单一神经网络 AI解析 重新生成最新题目 【单选题】如果将人眼比作照相机的话,则相当于暗盒的是( )。 查看完整题目与答案 【单选题】道德是人类社会生活中依据社会舆论、( )和内心信念,以善恶评价为标准的意识、规范、行为和活动的总称。 查看完整题目与答案 【单选题】人眼由( )组成。 查看完整题目https://www.shuashuati.com/ti/c1b8334732fe4635abc21bc6f13a62b1.html
6.“花朵分类“手把手搭建卷积神经网络腾讯云开发者社区本文介绍卷积神经网络的入门案例,通过搭建和训练一个模型,来对几种常见的花朵进行识别分类; 使用到TF的花朵数据集,它包含5类,即:“雏菊”,“蒲公英”,“玫瑰”,“向日葵”,“郁金香”;共 3670 张彩色图片;通过搭建和训练卷积神经网络模型,对图像进行分类,能识别出图像是“蒲公英”,或“玫瑰”,还是其它。 https://cloud.tencent.com/developer/article/1822920
7.常用的卷积神经网络模型有哪些?常用的卷积神经网络模型有很多,每个模型都有不同的结构和应用领域。以下是一些常见的卷积神经网络模型: LeNet-5:LeNet-5 是最早的卷积神经网络之一,由Yann LeCun等人在1998年提出。它主要应用于手写数字识别,包含卷积层、池化层和全连接层。 AlexNet:AlexNet 是在2012年由Alex Krizhevsky等人提出的,是第一个在大https://www.cda.cn/view/203005.html
8.什么是神经网络?IBM神经网络可分为不同类型,用于不同的目的。虽然这并不是一个全面的类型列表,但下面列出的是最常见的神经网络类型,您会在常见的使用案例中遇到: 感知器是最古老的神经网络,由 Frank Rosenblatt 在 1958 年创建。 前馈神经网络或多层感知器 (MLP) 是本文的主要研究对象。它们由一个输入层、一个或多个隐藏层和一https://www.ibm.com/cn-zh/topics/neural-networks
9.17个机器学习的常用算法深度学习算法是对人工神经网络的发展。在近期赢得了很多关注, 特别是百度也开始发力深度学习后, 更是在国内引起了很多关注。 在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼https://aidc.shisu.edu.cn/78/aa/c13626a161962/page.htm
10.机器学习(一)2万多字的监督学习模型总结常见的库: - scikit-learn:MLPClassifier 和MLPRegressor,只包含神经网络潜在应用的一部分 - keras:既可以用tensor-flow 也可以用theano。 - lasagna:基于theano 库构建的 - tensor-flow:谷歌的深度学习框架 ? 这些库提供了更为灵活的接口,可以用来构建神经网络并跟踪深度学习研究的快速发展。所有流行的深度学习库https://www.flyai.com/article/515
11.常用的nlp语言模型有哪些问答神经网络语言模型(Neural Network Language Model):神经网络语言模型利用神经网络来学习句子的概率分布。常见的神经网络语言模型包括循环神经网络语言模型(RNNLM)和变换器模型(Transformer)等。 预训练语言模型(Pretrained Language Model):预训练语言模型是通过在大规模文本语料上进行无监督学习得到的模型。常见的预训练语言模https://www.yisu.com/ask/54616002.html
12.几种常见的循环神经网络结构RNNLSTMGRU与传统的循环神经网络相比,LSTM仍然是基于xt和ht?1来计算ht,只不过对内部的结构进行了更加精心的设计,加入了输入门it 、遗忘门ft以及输出门ot三个门和一个内部记忆单元ct。输入门控制当前计算的新状态以多大程度更新到记忆单元中;遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉;输出门控制当前的输出有多大https://www.jianshu.com/p/0cf7436c33ae