上篇:机器学习(五) -- 监督学习(8) --神经网络2
下篇:
前言
tips:标题前有“***”的内容为补充内容,是给好奇心重的宝宝看的,可自行跳过。文章内容被“
文章内容”删除线标记的,也可以自行跳过。“!!!”一般需要特别注意或者容易出错的地方。
本系列文章是作者边学习边总结的,内容有不对的地方还请多多指正,同时本系列文章会不断完善,每篇文章不定时会有修改。
由于作者时间不算富裕,有些内容的《算法实现》部分暂未完善,以后有时间再来补充。见谅!
文中为方便理解,会将接口在用到的时候才导入,实际中应在文件开始统一导入。
四、典型神经网络相关结构简述
1、神经网络神经元(Cell)简述:
1.0、权重(神经元的连接)
每一个连接都有各自的权重,通常情况下是一些随机值。这个权重可以是负值,正值,非常小,或者非常大,也可以是零。和这个神经元连接的所有神经元的值都会乘以各自对应的权重。然后,把这些值都求和。
在这个基础上,会额外加上一个bias,它可以用来避免输出为零的情况,并且能够加速某些操作,这让解决某个问题所需要的神经元数量也有所减少。这个bias也是一个数字,有些时候是一个常量(经常是-1或者1),有些时候会有所变化。这个总和最终被输入到一个激活函数,这个激活函数的输出最终就成为这个神经元的输出。
1.1、基本神经元(basic cell,前馈神经元):
属于常规性前馈架构之中的类型,且非常简单。细胞通过权重连接到前一层中的所有神经元(全连接),每个连接都有各自的权重。
1.2、卷积神经元(Convolutional cells)和解卷积神经元(Deconvolutional cells,反卷积神经元):
与前馈神经元非常相似,不同之处在于它们通常只连接到前一层的几个神经元。因为它们不是和某些神经元随机连接的,而是与特定范围内的神经元相连接,通常用来保存空间信息。这让它们对于那些拥有大量局部信息,比如图像数据、语音数据(但多数情况下是图像数据),会非常实用。
解卷积神经元和卷积神经元恰恰相反,解卷积神经元是通过跟下一神经细胞层的局部连接来解码空间信息。
这两种神经元通常有独自训练的克隆(clone),每个克隆各有其权重,但连接方式完全相同。这些克隆可被看做具有相同结构的分离网络。两者本质上和常规单元相同,但是使用方式不同。
1.3、池化神经元(Pooling cells)和插值神经元(interpolating cells)
经常与卷积神经元结合使用。这些神经元并不是真正意义上的神经元,只是一些简单的原始操作。
池化神经元接受到来自其它神经元的输出过后,决定哪些值可以通过,哪些值不能通过。在图像领域,可以理解成是把一个图像缩小了。(在查看图片的时候,一般软件都有一个放大、缩小的功能;这里的图像缩小,就相当于软件上的缩小图像;也就是说我们能看到图像的内容更加少了;在这个池化的过程当中,图像的大小也会相应地减少)。这样,你就再也不能看到所有的像素了,池化函数会知道什么像素该保留,什么像素该舍弃。
插值神经元恰好是相反的操作:它们获取一些信息,然后映射出更多的信息。额外的信息都是按照某种方式制造出来的,这就好像在一张小分辨率的图片上面进行放大。插值神经元不仅仅是池化神经元的反向操作,而且,它们也是很常见,因为它们运行非常快,同时,实现起来也很简单。池化神经元和插值神经元之间的关系,就像卷积神经元和解卷积神经元之间的关系。
1.4、均值神经元(Mean cells)和标准差神经元(standard deviation cells )
几乎只作为概率神经元它们总是成对地出现。
用来描述数据概率分布的神经元。均值就是所有值的平均值,而标准差描述的是这些数据偏离均值的程度(两个方向上)。
比如:一个用于图像处理的概率神经元可以包含在某个特定的像素里面有多少红色。
举个例来说:均值为0.5,标准差为0.2。从这些概率神经元中采样时,可以输入一个高斯随机数生成器,从而生成一些分布在0.4和0.6之间的值;值离0.5越远,对应生成的概率也就越小。它们一般和前一神经元层或者下一神经元层是全连接,而且,它们没有偏差(bias)。
1.5、循环神经元(Recurrent cells)
循环神经元不仅在神经网络层之间有连接,而且在时间步上也有相应的连接。每一个神经元内部保存它以前的值。它们像一般的神经元一样更新,但具有额外的权重:连接到当前神经元之前的值的权重,并且大多数时候也连接到同一层中的所有神经元。当前值和存储的先前值之间权重的工作机制,与随机存取存储器(如RAM)很相似,继承了两个性质:
- 具有特定状态
- 如果不更新则消失
由于前一个的值是通过激活函数得到的,而在每一次的更新时,都会把这个值和其它权重一起输入到激活函数,因此,信息会不断地丢失。实际上,信息的保存率非常的低,以至于仅仅四五次迭代后,几乎所有信息都丢失了。
1.6、长短期记忆神经元(Long short term memory cells ,LSTM cells)
用于解决循环神经元中发生的信息快速丢失问题。
LSTM是一个逻辑回路,其设计受到了计算机存储单元设计的启发。
与存储两个状态的循环神经元相比,LSTM可以存储四个状态:输出值的当前值和先前值,以及“存储单元”状态的当前值和先前值。它们都有三个门:输入门(input),输出门(output),遗忘门(forget),同时,它们也还有常规的输入(input)。这些门都有各自的权重,也就是说,连接这种类型的神经元需要设置四个权重(而不是一个)。这些门的工作机制与流门(flow gates)很相似,而不是栅栏门(fence gates):它们可以让所有的信息都通过,或者只是通过部分,也可以什么都不让通过,或者通过某个区间的信息。其工作原理是将输入的信息乘以 0 到 1 之间的值,该值存储在此门值中。然后,输入门决定输入的信息有多少可以被添加到当前门值。输出门决定有多少输出信息是可以传递到后面的神经网络中。遗忘门并不是和输出神经元的先前值相连接,而是,和前一记忆神经元相连接。它决定了保留多少记忆神经元最新的状态信息。因为没有和输出相连接,以及没有激活函数在这个循环中,因此只会有更少的信息流失。
1.7、门控循环神经元(Gated recurrent units cells,GRU cells)
是LSTM的变体。它们也使用门来防止信息丢失,但是只有两个门:更新门(update)和重置门(reset)。这使得它们的表现力略低,但也略快,因为它们在任何地方使用的连接更少。
从本质上来说LSTM和GRU有两个不同的区别:
- GRU神经元没有被输出门保护的隐神经元
- GRU把输入门和遗忘门组合成了更新门
核心的思想就是如果你想要一些新的信息,那么你就可以遗忘掉一些陈旧的信息(反之亦然)。
2、神经网络层(Layer,层连接方式)简述
2.0、全连接
最简单的连接神经元方式——把所有的神经元与其它所有的神经元相连接,即“全连接(completely (or fully) connected)”。这也就意味着连接的数量会随着神经元个数的增加呈指数级地增加,但是,对应的函数表达力也越来越强。
这在霍普菲尔网络(Hopfield Network,HN)和玻尔兹曼机( Boltzmann Machine,BM)中可以看到。
2.1、全连接层(全连接):
一段时间后发现,将网络分解为不同的层是一个有用的功能。其中层的定义是一个集合或一组神经元,它们彼此之间没有连接,而只连接到其他集合或组的神经元。
例如,这个概念用于受限玻尔兹曼机(Restricted Boltzmann Machines)。现在,使用神经网络就意味着使用神经细胞层,并且是任意数量的神经细胞层。这里也是“全连接(fully connected or completely connected)”,但是是某一层的所有神经元跟另一层的所有神经元都有连接,而不是每一个神经元和其他所有神经元都有连接,因为实际上完全连接的网络非常罕见。
某一层上的所有神经元和上一层的所有神经元都连接,则该层叫全连接层(Fully Connected Layer),一般多指隐藏层。神经网络中,除输入层外,每层每个神经元均和上一层的所有神经元都连接,则该神经网络叫全连接神经网络(Fully Connected Neural Network)。
相同输入、网络层数的情况下,全连接的网络是最复杂的、参数是最多的、模型文件最大的。
2.2、卷积连接层(局部连接)
卷积连接层相对于全连接层有更多的限制,卷积连接层(Convolutionally connected layers)中的每个神经元只与附近其他层中与其相邻的神经元连接。
图像和声音蕴含了大量的信息,不能一对一地输入到神经网络(比如,一个神经元对应一个像素)。卷积连接的形成,受益于保留重要空间信息的观察。事实证明,这是一个很好的猜测,因为现在大多数基于人工神经网络的图像和语音应用都使用了这种连接方式。然而,这种连接方式所需的代价远远低于全连接层的形式。从本质上来讲,卷积连接方式是一种“重要性”过滤方式,决定哪些紧密分组的信息包是重要的,卷积连接非常适合数据降维。
2.3、随机连接神经元(随机连接)Time delayed connection
随机连接神经元(randomly connected neuron)。这种形式的连接主要有两种变体:
- 允许部分神经元全连接
- 神经元层之间只进行部分连接
随机连接方式有助于线性地降低神经网络的性能,在大型的全连接层神经网络中遇到性能问题时非常有用。在某些情况下,拥有更多神经元且更加稀疏的神经元层运行效果更好,特别是很多的信息需要存储起来,但需要交换的信息并不多(与卷积连接层的运行机制很相似,但它们是随机的)。非常稀疏的连接网络(1%或2%)也有被使用,比如ELMs, ESN和LSM。这特别适用于脉冲网络(spiking network),因为一个神经元拥有更多的连接,它对应的权重具有的能量也就更少,这也就意味着将会有更少的传播和重复模式。
2.4、延时连接
延时连接(Time delayed connection)是神经元之间的连接(通常来自同一层,甚至与自身相连),它们不是从前一层获取信息,而是从过去的一层(主要是前一迭代)获取信息。
这允许存储与时间 (时间、序列或顺序) 相关的信息。这些类型的连接通常会不时手动重置,以清除网络的 “状态”。
与常规连接的主要区别在于,这些连接会不断变化,即使网络没有经过训练也是如此。
下图展示了以上所介绍的神经网络及其连接方式
3、神经网络整体结构简述
下图为大部分神经网络结构:
tips:
RNN有时表示递归神经网络(recursive neural network),但大多时候,它们指的是循环神经网络(recurrent neural network),甚至它们在许多地方还会泛指各种循环架构,包括在LSTM、GRU甚至是双向变体(分别是双向循环网络,双向LSTM、双向GRU)。
AEs也经常会面临同样的问题,VAE、DAE及其相似结构有时都被简称为AE。
很多缩写前面的“D”和后面的“N”也常常会有所变化,因为同一个架构你既可称之为深度卷积神经网络(deep convolutional neural network,DCNN)卷积神经网络(convolutional neural network,CNN),也可简称为卷积网络(convolutional network,CN),这样就出现了DCNN、CNN和CN多种形式。
3.0、感知机(Perceptron)
最简单的神经网络,它仅有2层神经元,前面说过,这里就不细说。
3.1、不同概念解析
从不同方面描述神经网络:
3.1.0、人工神经网络(ANN)与多层感知机(MLP)
人工神经网络(Artificial Neural Network,ANN)是更广泛的术语,是神经网络总的概念。
多层感知机(Multi-Layer Perceptron,MLP)最开始其实等价于多层神经网络,但现在一般都指的是两层(带一个隐藏层的)神经网络。
3.1.1、前馈神经网络(FNN)与反馈神经网络、图神经网络
前馈神经网络(Feedforward Neural Network, FNN/FFNN):信息只能单向流动,即从输入层到隐藏层,再到输出层,不能反向流动,也没有反馈或循环连接。同一层内的神经元互不相连,可用一个有向无环图表示。而一般相邻的两个神经细胞层则是全连接(一层的每个神经元和另一层的每一个神经元相连)。
常见的前馈神经网络包括卷积神经网络(CNN)、生成对抗网络(GAN)等。
反馈神经网络(Feedback Neural Network)中神经元不但可以接收其他神经元的信号,而且可以接收自己的反馈信号。和前馈神经网络相比,反馈神经网络中的神经元具有记忆功能,在不同时刻具有不同的状态。反馈神经网络中的信息传播可以是单向也可以是双向传播,因此可以用一个有向循环图或者无向图来表示。
常见的反馈神经网络包括循环神经网络(RNN)、长短期记忆网络(LSTM)、Hopfield网络和玻尔兹曼机等。
前馈神经网络和反馈神经网络的输入都可表示为向量或者向量序列,但实际应用中很多数据都是图结构的数据,比如知识图谱、社交网络和分子网络等。这时就需要用到图网络来进行处理。
图网络是定义在图结构数据上的神经网络,图中每个结点都由一个或者一组神经元组成。结点之前的连接可以是有向的,也可以是无向的。每个结点可以收到来自相邻结点或自身的信息。
一个最简单却最具有实用性的神经网络由两个输入神经元和一个输出神经元构成,也就是一个(感知机)逻辑门模型。给神经网络一对数据集(分别是“输入数据集”和“我们期望的输出数据集”),一般通过反向传播算法来训练前馈神经网络(FNN),这就是所谓的监督式学习。
与此相反的是无监督学习:我们只给输入,然后让神经网络去寻找数据当中的规律。反向传播的误差往往是神经网络当前输出和给定输出之间差值的某种变体(比如MSE或者仅仅是差值的线性变化)。如果神经网络具有足够的隐层神经元,那么理论上它总是能够建立输入数据和输出数据之间的关系。在实践中,FFN的使用具有很大的局限性,但是,它们通常和其它神经网络一起组合成新的架构。
3.1.2、全连接神经网络(FCNN)
全连接神经网络(Fully Connected Netural Network,FCNN)是最基本的一种人工神经网络结构,它由多层节点组成,每个节点与与前一层的所有节点相连。一般来讲,说全连接神经网络就是在说前馈神经网络。
(从连接方式来形容的一种网络结构。如局部连接形成的卷积神经网络,延时连接形成的循环神经网络,以及随机连接可以构成随机失活(Dropout))
3.1.3、BP神经网络(BPNN)
BP神经网络(back propagation,反向传播神经网络),使用反向传播算法的神经网络。在严格一点是:按照误差逆向传播算法训练的多层前馈神经网络。
3.1.4、深度神经网络(DNN)与浅层神经网络
从层数层面来描述神经网络,一般单层神经网络(感知机)和双层神经网络称为浅层神经网络,而两层以上的神经网络称为深度神经网络(Deep Neural Network,DNN)。
3.2、卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Network,CNN)或深度卷积神经网络(Deep Convolutional Neural Network,DCNN),CNN专门用于处理类似网格的数据,如图像和视频,它使用称为卷积层的专门层将一系列滤波器应用于输入图像,生成一组特征图。然后,这些特征图通过池化层传递,降低它们的维度,使网络在计算上更有效率;最后,一个或多个全连接层执行分类。训练过程涉及反向传播,类似于人工神经网络,但专门设计了用于保留特征的空间层次结构。
卷积神经网络从一个数据扫描层开始,不是尝试在一开始就解析整个训练数据。比如:一个大小为200X200像素的图像,不是构建一个40000个节点的神经元层。而是,构建一个20X20像素的输入扫描层,然后,把原始图像第一部分的20X20像素图像(通常是从图像的左上方开始)输入到这个扫描层。当这部分图像(用于进行卷积神经网络的训练)处理完,你会接着处理下一部分的20X20像素图像:逐渐(通常情况下是移动一个像素,但是,移动的步长是可以设置的)移动扫描层,来处理原始数据。
注意,你不是一次性移动扫描层20个像素(或其它任何扫描层大小的尺度),也不是把原始图像切分成20X20像素的图像块,而是用扫描层在原始图像上滑过。这个输入数据(20X20像素的图像块)紧接着被输入到卷积层,而非常规的神经元层(全连接层)。每一个输入节点只会和最近的那个神经元节点连接(至于多近要取决于具体的实现,但通常不会超过几个)。
这些卷积层会随着深度的增加而逐渐变小:大多数情况下,会按照输入层数量的某个因子缩小(比如:20个神经元的卷积层,后面是10个神经元的卷积层,再后面就是5个神经元的卷积层)。2的n次方(32, 16, 8, 4, 2, 1)也是一个非常常用的因子,因为它们在定义上可以简洁且完整地除尽。除了卷积层,池化层(pooling layers)也非常重要。
池化是一种过滤掉细节的方式:一种常用的池化方式是最大池化,比如用2X2的像素,然后取四个像素中值最大的那个传递。为了让卷积神经网络处理语音数据,需要把语音数据切分,一段一段输入。在实际应用中,通常会在卷积神经网络后面加一个前馈神经网络,以进一步处理数据,从而对数据进行更高水平的非线性抽象。
CNN广泛应用于计算机视觉任务,如图像分类,目标检测和图像分割。
3.2.1、反卷积网络 (DN,IGN)
反卷积网络(Deconvolutional Network,DN,解卷积网络),又称为逆图形网络(Inverse Graphics Network),是逆向的卷积神经网络。给一个神经网络输入一个“猫”的词,就可以生成一个像猫一样的图像,通过比对它和真实的猫的图片来进行训练。跟常规CNN一样,DN也可以结合FFNN使用,它们可被称为深度解卷积网络。
需要注意的是,绝大多数应用都不会把文本数据直接输入到神经网络,而是用二元输入向量。比如<0,1>代表猫,<1,0>代表狗,<1,1>代表猫和狗。
CNN的池化层往往也是被对应的逆向操作替换了,带有偏差假设的插值和外推(如果池化层使用最大池化,可以在逆操作的时候生成一些相对于最大值更小的数据)。
3.2.2、深度卷积逆向图网络(DCIGN)
深度卷积逆向图网络(Deep convolutional inverse graphics network,DCIGN),名字具有误导性,因为它们实际上是VAE,但分别用CNN、DNN来作编码和解码的部分。
这些网络尝试在编码过程中对“特征”进行概率建模,这样一来,你只要用猫和狗的独照,就能让它们生成一张猫和狗的合照。同理,你可以输入一张猫的照片,如果猫旁边有一只恼人的邻家狗,你可以让它们把狗去掉。很多演示表明,这种类型的网络能学会基于图像的复杂变换,比如灯光强弱的变化、3D物体的旋转。一般也是用反向传播算法来训练此类网络。
3.2.3、残差神经网络(Res Net)
残差神经网络 (Residual Neural Network,ResNet,深度残差网络,DRN) 是非常深的 FFNN,它通过引入残差连接来解决深度神经网络训练中的梯度消失或梯度爆炸问题。残差连接允许网络中的信息直接传播到更深的层,从而使得网络能够更容易地学习和训练。
3.3、循环神经网络(RNN)
循环神经网络(Recurrent Neural Network,RNN )专为处理序列数据设计,输入的顺序对结果影响重大;这类网络特有的循环连接结构,能够将信息从一个时间点传递至下一个,因此非常适合处理时间序列数据;在这一过程中,每个神经元都能通过其内部状态,记忆并利用之前时间点的信息。
在处理数据时,网络能够同时处理当前和之前的输入,这为其提供了一种短期记忆的功能;然而,RNN存在梯度消失和梯度爆炸的问题,信息会随时间迅速消失,这些问题使得网络难以学习数据中的长期相关性。正如FFNN会随着深度的增加而失去信息一样。感觉这不算什么大问题,因为这些都只是权重,而非神经元的状态,但随时间变化的权重正是来自过去信息的存储;如果权重是0或1000000,那之前的状态就不再有信息价值。
为了解决这些问题,人们开发了更先进的模型,例如长短期记忆网络(LSTM)和门控循环单元(GRU)。
原则上,RNN可以在很多领域使用,因为大部分数据在形式上不存在时间线的变化(不像语音或视频),它们能以某种序列的形式呈现出来。一张图片或一段文字可以一个像素或者一个文字地进行输入,因此,与时间相关的权重描述了该序列前一步发生了什么,而不是多少秒之前发生了什么。一般来说,循环神经网络是推测或补全信息很好的选择,比如自动补全。
RNN广泛应用于自然语言处理、语音识别和时间序列分析等领域。
3.3.1、长短期记忆网络(LSTM)
长短期记忆网络(Long Short-Term Memory Network,LSTM )属于循环神经网络(RNN)的一种,试图通过引入门结构与明确定义的记忆单元来解决梯度消失/爆炸的问题(受电路的启发)。使得网络能够更好地处理序列数据中的长期依赖性。
每个神经元都有一个记忆单元和三个门:输入门(input gate)、输出门(output gate)、遗忘门(forget gate)。这三个门的功能就是通过禁止或允许信息流动来保护信息。输入门决定了有多少前一神经细胞层的信息可留在当前记忆单元,输出门在另一端决定下一神经细胞层能从当前神经元获取多少信息。遗忘门乍看很奇怪,但有时候遗忘部分信息是很有用的:比如说它在学习一本书,并开始学一个新的章节,那遗忘前面章节的部分角色就很有必要了。
实践证明,LSTM可用来学习复杂的序列,比如像莎士比亚一样写作,或创作原创音乐。值得注意的是,每一个门都对前一神经元的记忆单元赋有一个权重,因此会需要更多的计算资源。LSTM尤其适合于处理那些需要识别和预测时间序列中复杂模式的任务。
3.3.2、门控循环单元(GRU)
门控循环单元(Gated Recurrent Unit,GRU )与长短期记忆网络(LSTM)一样,是一种循环神经网络, 是 LSTM 的细微变化。它有效地解决了梯度消失的问题,并且能更好地学习长期依赖关系;由于GRU结构相对简单,当计算效率成为重要考虑因素时,它通常会被优先选择。
它少了一个门,同时连接方式也稍有不同:它们采用了一个更新门(update gate)和重置门(reset gate),而非LSTM所用的输入门、输出门、遗忘门。
更新门决定了保留多少上一个状态的信息,还决定了收取多少来自前一神经细胞层的信息。重置门跟LSTM的遗忘门的功能很相似,但它存在的位置却稍有不同。它们总是输出完整的状态,没有输出门。多数情况下,它们跟LSTM类似,但最大的不同是:GRU速度更快、运行更容易(但函数表达力稍弱)。
在实践中,这里的优势和劣势会相互抵消:当你你需要更大的网络来获取函数表达力时,这样反过来,性能优势就被抵消了。在不需要额外的函数表达力时,GRU的综合性能要好于LSTM。
3.3.3、双向循环神经网络、双向长/短期记忆网络和双向门控循环单元(分别为 BiRNN、BiLSTM 和 BiGRU)
双向循环神经网络(BiRNN:Bidirectional recurrent neural network)、双向长短期记忆网络(BiLSTM:bidirectional long / short term memory network)和双向门控循环单元(BiGRU:bidirectional gated recurrent units)它们的图形结构和单向完全相同,不同的是,这些网络不仅与过去的状态有连接,而且与未来的状态也有连接。
比如,通过一个一个地输入字母,训练单向的LSTM预测“鱼(fish)”(在时间轴上的循环连接记住了过去的状态值)。在BiLSTM的反馈通路输入序列中的下一个字母,这使得它可以了解未来的信息是什么。这种形式的训练使得该网络可以填充信息之间的空白,而不是预测信息。因此,它在处理图像时不是扩展图像的边界,而是填补一张图片中的缺失。
3.4、生成对抗网络(GAN)
生成对抗网络(Generative adversarial network,GAN )是一类不同的网络,由两个神经网络协同工作构成的系统。GAN可由任意两种网络组成(但通常是FNN和CNN),其中一个用于生成内容(生成器,生成网络),另一个则用于鉴别生成的内容(鉴别器,判别器,鉴别网络)。这两个网络在一种竞争式的训练环境中相互对抗;生成器的任务是创造出难以与真实数据区分的数据,而鉴别器的任务则是尽可能准确地识别出哪些是真实数据,哪些是生成器产生的数据。
鉴别网络(discriminating network)同时接收训练数据和生成网络(generative network)生成的数据。鉴别网络的准确率,被用作生成网络误差的一部分。这就形成了一种竞争:鉴别网络越来越擅长于区分真实的数据和生成数据,而生成网络也越来越善于生成难以预测的数据。这种方式非常有效,因为即使是相当复杂的类似噪声的模式最终也是可预测的,但生成的内容与输入数据特征相似,更难学习区分。
训练GAN极具挑战性,因为你不仅要训练两个神经网络(其中的任何一个都会出现它自己的问题),同时还要平衡两者的运行机制。如果预测或生成相比对方表现得过好,这个GAN就不会收敛,因为它会内部发散。
生成对抗网络广泛应用于图像生成、风格转换和数据增强等领域。
3.5、自编码器(AE)
自编码器(Autoencoder,AE )类似于 FFNN,更像是 FFNN 的不同用途,而不是不同的架构。自编码器的基本思想是自动对信息进行编码(像压缩一样,而非加密)。整个网络的形状酷似一个沙漏,中间的隐含层较小,两边的输入层、输出层较大。自编码器总是对称的,以中间层(一层还是两层取决于神经网络层数的奇偶)为轴。最小的层(一层或者多层)总是在中间,在这里信息压缩程度最大(整个网络的关隘口)。在中间层之前为编码部分(编码器),中间层之后为解码部分(解码器),中间层则是编码。编码器负责将输入数据转换为低维的潜在表示,而解码器则从这种潜在表示中重构出原始数据。
主要应用于无监督学习和特征提取,自编码器广泛用于降维,异常检测等多种任务。
3.5.1、变分自编码器(VAE)
变分自编码器(Variational Autoencoder,VAE)和AE有着相同的架构,却被教会了不同的事情:输入样本的一个近似概率分布,这让它跟BM、RBM更相近。
不过,VAE却依赖于贝叶斯理论来处理概率推断和独立(probabilistic inference and independence),以及重新参数化(re-parametrisation)来进行不同的表征。推断和独立非常直观,但却依赖于复杂的数学理论。基本原理是:把影响纳入考虑。如果在一个地方发生了一件事情,另外一件事情在其它地方发生了,它们不一定就是关联在一起的。如果它们不相关,那么误差传播应该考虑这个因素。这是一个有用的方法,因为神经网络是一个非常大的图表,如果你能在某些节点排除一些来自于其它节点的影响,随着网络深度地增加,这将会非常有用。
3.5.2、降噪自编码器(DAE)
去噪自编码器(Denoising autoencoders,DAE)是一种自编码器,它的训练过程,不仅要输入数据,还有再加上噪音数据(就好像让图像变得更加模糊一样)。
但在计算误差的时候跟自动编码器一样,降噪自动编码器的输出也是和原始的输入数据进行对比。这种形式的训练旨在鼓励降噪自编码器不要去学习细节,而是一些更加宏观的特征,因为细微特征受到噪音的影响,学习细微特征得到的模型最终表现出来的性能总是很差。
3.5.3、稀疏自编码器(SAE)
稀疏自编码器(Sparse autoencoders,SAE)某种程度上与自编码器相反。稀疏自编码机器是用更小的空间表征大量信息,而是把原本的信息编码到更大的空间内。因此,中间层不是收敛,而是扩张,然后再还原到输入大小。它可以用于提取数据集内的小特征。
如果用训练自编码器的方式来训练稀疏自编码器,几乎所有的情况,都是得到毫无用处的恒等网络(输入=输出,没有任何形式的变换或分解)。为避免这种情况,需要在反馈输入中加上稀疏驱动数据。稀疏驱动的形式可以是阈值过滤,这样就只有特定的误差才会反向传播用于训练,而其它的误差则被忽略为0,不会用于反向传播。这很像脉冲神经网络(并不是所有的神经元一直都会输出)。
3.6、Transformer
Transformer采用了一种全新的方法,摒弃了递归结构,完全依赖注意力机制来学习序列元素之间的关系,这些关系是基于元素的整体重要性来确定的;研究人员已经将Transformers应用于自然语言处理领域,通过开发像谷歌的BERT和OpenAI的GPT-3这样的模型,在机器翻译、文本分类和语言建模等方面取得了突破性的成果;Transformers对于提升深度学习模型处理语言数据的能力做出了显著贡献。
由经典的Encoder-Decoder模型组成。在上图中,整个Encoder层由6个左边Nx部分的结构组成。整个Decoder由6个右边Nx部分的框架组成,Decoder输出的结果经过一个线性层变换后,经过softmax层计算,输出最终的预测结果。
3.7、自组织映射(SOM)
Kohonen 网络(KN,也称自组织(特征)映射(Self-Organizing(feature) Map,SOM))利用竞争性学习在没有监督的情况下对数据进行分类。先给神经网络一个输入,而后它会评估哪个神经元最匹配该输入。然后这个神经元会继续调整以更好地匹配输入数据,同时带动相邻的神经元。相邻神经元移动的距离,取决于它们与最佳匹配单元之间的距离。KN有时也不被认为是神经网络。
3.8、深度信念网络(DBN)
深度信念网络(Deep belief network,DBN )由多个受限玻尔兹曼机或者变分自编码机构成;可以有效地逐层训练的,其中每个 AE 或 RBM 只需要学习对前一个网络层进行编码。
这种技术也称为贪婪训练,其中贪婪意味着可以不断地获取局部最优解,最终得到一个相当不错解(但可能不是全局最优的),可以通过对比散度算法或者反向传播算法进行训练,它会慢慢学着以一种概率模型来表征数据,就好像常规的自编码机或者受限玻尔兹曼机。一旦经过非监督式学习方式,训练或者收敛到了一个稳定的状态,那么这个模型就可以用来产生新的数据。如果以对比散度算法进行训练,那么它甚至可以用于区分现有的数据,因为那些神经元已经被引导来获取数据的不同特定。
3.9、图神经网络(GNN)
图神经网络(Graрh Neural Netwоrk,GNN )许多神经网络主要处理的是像图像或文本这样的欧几里得数据,而图神经网络则是为了处理图数据而特别设计的,这种数据包含了复杂的元素间关系;图神经网络扩展了传统卷积网络的技术,比如将滤波方法应用于图结构数据,并能够根据图的结构和节点的特性来学习节点的表示。
图神经网络在链接预测,节点分类和社区检测等多种网络任务中表现出了极高的准确性;这些网络在处理密切相关数据的应用场景中展现了巨大的潜力。
未完……
旧梦可以重温,且看 :机器学习(五) -- 监督学习(8) --神经网络2
欲知后事如何,且看: