开发者学堂课程【神经网络概览及算法详解:其他神经网络】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/950
其他神经网络
内容介绍
一.径向基函数神经网络 RBF NN
二.深度神经网络 DNN
三.卷积神经网络 CNN
四.递归神经网络 INN
五.长短期记忆网络 LSTM
六.自动编码器
七.深度信念网络 DBN
八.生成对抗网络 GAN
一.径向基函数神经网络 RBF NN
在这一部分,将简单的给大家介绍一下其他几种常见的简单的神经网络。
第一种叫径向基函数神经网络 RBF NN ,1988年由 John Moody和 Christian J Darken 提出的一种网络结构。它属于一种前向型神经网络,理论上可以任意精读逼近任意连续函数,适合解决分类问题。径向基函数( RBF )就是R点函数,它是某种沿径向对称的标量函数,通常定义为空间中某点到另外一个中心点的欧式距离的单调函数,其特点是,如果一个点离中心距离较远,则这个函数的值就较小;如果这个点离中心点的距离较近,则这个函数的取值就较大。
最常见的径向减函数就是高斯径向基函数,它的表达式就是, h(x) 等于 e 的 r 方分之负的 X 减 C 的方,在它的中心 C 这里,取值是最大的。 X 离这个 C 越远,它的值就越小。这是最常见的一个高斯径向基函数。
径向基函数神经网络的特点
1. 网络结构是三层前向网络
2. 从输入层到隐藏层是没有权重连接的,
3. 隐藏层的激活函数为径向基函数( RBF ),这也是径向基函数型网络名字的由来
4. 从输入层(空间)到隐藏层(空间)的变换是非线性的
5. 从隐藏层(空间)到输出层(空间)的变换是线性的
它有三层的前馈网络,只不过它的激活函数选择了径向基函数中最常见的高斯径向基函数。它输出的时候,其激化函数也不是一个非线性的,而是一个线性的函数,这就是它最大的特点。用 RBF 作为隐单元的“基”构成隐含层空间,即可把输入矢量直接(即不需要通过权连接)映射到隐空间,低维空间不可分的数据到了高维空间就会变得更有可能可分。隐藏的功能就是把低维空间的输入通过非线性函数映射到一个高维空间里,然后在这个高维空间进行曲线或者叫做超平面的拟合,这就是原理。
其实我们后续会很多的用到这个算法,简单的说,我们面对的大部分问题都是线性不可分的问题,比如我们的一个平台上一堆点,它是线性不可分的,是二维空间里的,那我们能不能用一个函数把它移植到高维空间里去。
在这个高维空间里,它实际上是有可能可分的,包括我们后面的内容讲 SVM 就是直向升量机的时候,其实也是这个思路,包括很多类似的算法也都是这个思路,即当前的问题无法处理,把这个问题转换之后再处理。这个地方的转化是通过径向基函数把数据从低维空间映设到高维空间,或者是在高维空间里进行了一些加工,在高维空间里把这个数据分开,然后再通过这个映射函数把高维空间里的这个数据映射到低位空间里,形成一个分类的超平面,它是曲线。
二.深度神经网络 DNN
深度神经网络 DNN 是很多人工智能应用的基础,它在语音识别、图像识别等有很多突破性的提高。这是因为他用了统计学习方法从原始感官数据中提取高层特征,然后在大量的数据中获取输入空间的有效表征。简单理解,深度神经网络就是多个隐层的多层感知器网络。我们在学 MIP 的时候呢,我们讲到它是单隐层的。
实际上,那个隐层还可以一直放大下去,有的人可以做到100多层。当然,这个隐层也不是,数量越多越好,要考虑综合的因素,比如是不是有这个必要性。因为隐层过多了之后,如果输入数节点过少,就会造成数据稀疏,去算那么多的权重的时候·,不仅计算量大,如果样本数据不够多,实际上就得不到稳定的权重值。
深度神经网络就是多个隐层的多层感知器网络,当然需要确定的东西会很多,比如有多少层,每个层有多少个节点等。我们在选 MRP 的时候就说了,事实上,如果有两个隐藏的话,它理论上就能逼近任意的函数。
三.卷积神经网络 CNN
卷积神经网络 CNN ,现在它也非常火。它是由杨立坤( Yann LeCun )提出的,最早时候它是应用在手写字体识别即 MINST 识别上,识别效果非常好。它的实质是一种多层前馈网络,擅长处理图像,特别是大图像的处理和识别。
一个最典型的卷积网络,是由卷积层、池化层、全连接层组成的,其中卷积层与池化层配合组成多个卷积层,逐层提取特征,最终通过若干个全连接层完成分类。也就是说它看这个图像的时候不再是一个一个的点它,而是通过一层一层的来提取它的高维特征,通过这个特征去对它进行分类。
四.递归神经网络 INN
这个我们在前面也讲了一些 INN 的例子,其实对于这个前馈神经网络,我们介绍的比较多。那递归神经网络,我们之前也讲了几个,比如反复性神经网络,我们也讲了几个例子。递归神经网络,它本身也是一个反馈,也是一个反馈神经网络。简单的讲,它的输出会在下一个时间点作为输入,从而形成一个循环。
它解决什么问题呢?我们通常在使用 NLP 这种典型结构的前馈神经网络的时候,会认为不同的输入之间是相互独立,没有联系的,实际上,很多输入之间是有序列关系的,这个时候就需要使用这个递归神经网络,也称循环神经网络,它就是引入一个记忆的概念,描述了当前输出和之前的输入信息的关系。
递归的含义是指每个神经元都执行相同的任务,但是输出依赖于输入和记忆,比如常用语 NLP、 记忆分析、语音识别、图像描述生成、文本相似度等,都经常会用到 RNN网络。
五.长短期记忆网络 LSTM
长短期记忆网络 LSTM(Long Short-Term Memory,LSTM), 它是一种时间递归神经网络,适合用于处理和预测时间序列中间隔和延迟较长的重要事件。基于 LSTM 的系统可以学习翻译语言、控制机器人、图像分析、文件摘要、语音识别图像识别等等任务。 LSTM 区别于 RNN 的地方,主要就在于它在算法中加入了一个判断信息有用与否的“处理器”,就是说它会有一个判断的处理器,如果它认为这个信息是有用的则被记忆,如果是没有用的则被遗忘。
目前已经证明,LSTM 是解决长序依赖问题的有效技术,并且这种技术普适性很高,带来的可能性变化非常多。这个就相当于加了一些判断处理器,来判断信息的作用,这个和我们之前学的 LVQ 即学习向量,是比较像的,那里面也有一些控制器,它通过一些控制器来决定网络下一步如何运行。 LSTM 最近使用的也比较多。
六.自动编码器
自动编码器( AutoEncoder ):
是人工神经网络的一种,主要用来处理数据压缩,其数据的压缩和解压缩函数是数据相关的、有损的、从样本中自动学习的。它的原理是,我们在训练神经网络的时候,通过捕捉可以代表输入信息的最关键的因素,简单的说,在做压缩的时候是有损的,并不是把所有的数据全部压缩,而是从这些数据中提取出最关键的因素和特征,然后让其输入能近似的复制到输出,即让输入内容和输出内容近似一样。
一般压缩完了之后,解压缩的时候可以根据这关键特征恢复出一个数据。这个数据和我输入的内容相似性比较高。
七.深度信念网络 DBN
深度信念网络呢或者叫做深度置信网络,也是由多个受限波尔兹曼机组成的。我们在介绍波尔兹曼机的时候,讲了一下受限波尔兹曼机,它把波尔兹曼机的一些东西进行了简化,比如它的隐藏层和可见层之间没有连接了,做了个简化。大家可以看到波尔兹曼机和受限波尔兹曼机的不同, RBM 比 BM 简化多了。然后把多个受限波尔兹曼机就可以连接组成一个 DBN ,它主要可以用于非监督学习,有点像一个自编码,也可以用于监督学习。我们在讲 BM 的时候也讲了要根据自己情况来判断,是让它进行一个有监督学习还是无监督学习。如果是非监督学习的话,就没有监督,就是样本里没有结果,目的就是尽可能的保留原子特征的特点,同时降低特征的维度。如果是监督学习的话,主要是分类,让分类的错误尽可能的小。 DBN 的本质,实际上就是一个特征学习的过程,就是如何得到更好的特征表达。
八.生成对抗网络 GAN
生成对抗网络 (Generative Adversarial Network,GAN),由 Goodfellow 在2014年的时候提出,其核心思想来自于博弈论的“纳什均衡”。
它包含两个网络模型,一个生成模型,一个判别模型。生成模型捕捉样本数据的分布,判定模型是一个二分类器的分类器。生成模型接受一个随机的噪声,结合学习到的样本数据特征,生成一个新的数据,然后交由分类模型去判断分类模型能否判断出这个数据的真假,在训练过程中,生成模型尽量生成新数据去欺骗判断模型,判断模型会尽量的去识别出不真实的数据,两者实际上是一个“二元极小极大博弈问题”。最终得到一个生成模型可以来生成一些新的数据。
这个应用也比较多,实际上,这个神交网络模型和人还是有明显区别的,比如一个数据如果缺失了一点,假如这个数据是一个图像,其中一点被改变后,人眼是分不出来的,也不会去对最终结果,比如分类,产生大的影响。
但是神经网络不一样,有可能输入样本只改变了一个像素,改变了一点就导致它识别的结果完全不同。生成对抗网络主要是通过这种生成识别,再生成再识别的过程去训练一个生成器,那这个生成的模型就可以生成一些新的数据。
神经网络模型的内容非常多,常见的列出一个表来也有100多种,并且还在不断的增加。我们也可以总结一下这个神经网络模型,它如何派生出来这么多模型,比如从它的层次上来讲,可以有单层的、多层的、多隐层的,从它的信息、流向来讲,比如有前馈的、反馈的、双向的,还有一类就是,激活函数选择不一样,它也不一样,比如有离散的、连续的,如果选了这种径向机函数,它叫径向机函数神经网络等等。另外,不同的神经网络结合到一块儿,还可能派生出一些衍生的模型,比如波尔兹曼机进行一些简化之后,出现受限波尔兹曼机,使多个受限波尔兹曼机连接起来,它又变成了这种信念网络等。所以它这种衍生或者是说派生出新的模型的路子还是很多的,能派生出无数的模型。我们讲过的这些或者常用的这些,都有一些理论支持,或者能解决一些关键的实际问题,可能自己衍生出来的一些无法解决实际问题,或者说没有一些基础、依据去快速的处理这些模型。
总之这神经网络模型,在继续的学习里是非常重要的一部分。包括我们现在人工智能,用到的一些模型,很多也都是深度学习的模型,其实就是一个神经网络模型,希望大家能自己多花点儿时间去了解一下,如果对之前的知识不了解,学习起来会比较困难。我们还是要先有一个基本的知识体系,对神经网络有了解,我们对它的一些基本概念、基本理念有了解,然后我们真的要去用一些模型的时候,再去仔细的研究它。