公众号:尤而小屋
编辑:Peter
作者:Peter
大家好,我是Peter~
今天给大家分享一下10大经典的深度学习算法。
首先,对比一下传统机器学习和深度学习的训练过程差异:
下图展示了传统机器学习算法与深度学习技术在数据量方面的性能比较。从图表中可以明显看出,随着数据量的增加,深度学习算法的性能也随之提升。
相比之下,传统机器学习算法的性能虽然会在一定程度上提升,但之后会趋于稳定(表现为一条水平线)。
随着数据量的持续增长,深度学习算法的性能优势将更加显著
从数据量角度出发,深度学习模型,尤其是深度神经网络,需要大量的数据进行训练。这种对大数据的需求使得深度学习能够在处理大规模数据集时表现出色。相比之下,传统机器学习算法在处理大数据集时可能会遇到计算瓶颈或性能下降的问题。
什么是深度学习中的神经网络
上述图像可以直观地表示神经网络(Neural Network)的基本结构,主要由三个部分组成:
输入层(Input Layer) 隐藏层(Hidden Layers) 输出层(Output Layer)
上述图像中仅展示了一个隐藏层,我们可以将其称为人工神经网络(Artificial Neural Network)或简称神经网络。另一方面,深度神经网络(Deep Neural Network)则包含多个隐藏层,这也是它被称为“深度”的原因。
这些隐藏层之间相互连接,用于让我们的模型学习如何给出最终输出。通过增加隐藏层的数量,深度神经网络能够处理更复杂的数据和任务,捕捉数据中的高级抽象特征。
每个带有信息的节点以输入的形式传递,该节点将输入与随机的权重值相乘,并加上一个偏置项,然后进行计算。
之后,应用一个非线性函数或激活函数来确定哪个特定的节点将决定输出。这个过程是神经网络中信息处理的基本单元,其中权重和偏置是可学习的参数,通过训练过程进行调整,以优化网络的性能。
激活函数的选择对于网络的性能和学习能力至关重要,因为它引入了非线性,使得网络能够学习复杂的数据表示和模式。
下面介绍值得关注和学习的10个深度学习算法:
多层感知机Multilayer Perceptrons (MLPs) 径向基函数网络Radial Basis Function Networks (RBFNs) 卷积神经网络Convolutional Neural Networks (CNN) 循环神经网络Recurrent Neural Networks (RNNs) 长短期记忆模型Long Short-Term Memory Networks (LSTMs) 受限玻尔兹曼机Restricted Boltzmann Machines (RBMs) 自组织图Self Organizing Maps (SOMs) 生成对抗网络Generative Adversarial Networks (GANs) 自编码器Autoencoders 深度信念网络Deep Belief Networks
1 多层感知机Multilayer Perceptrons (MLPs)
什么是MLP
MLP(多层感知机,Multi-Layer Perceptron)是最基本的深度学习算法之一,也是最早的深度学习技术之一。
深度学习的初学者建议你从MLP开始学起。MLP可以被视为一种前馈神经网络(Feedforward Neural Network)的形式。
前馈神经网络是一种人工神经网络,其中信息(或信号)只向一个方向流动,即从前一层的神经元流向后一层的神经元,不形成环路。
MLP通过堆叠多个这样的层(包括至少一个隐藏层)来构建,每个层都包含一定数量的神经元,层与层之间通过权重和偏置进行连接。通过训练过程,MLP能够学习输入数据中的复杂模式,并用于预测、分类或回归等任务。
工作原理
第一层即输入层,接收输入数据,而最后一层则基于隐藏层的结果产生输出。
每个隐藏层都被赋予了一些权重(随机分配的值)。这些权重与输入的组合被送入一个激活函数,激活函数的输出再进一步传递给下一层,以确定最终的输出。MLP通常使用sigmoid函数、修正线性单元(Rectified Linear Unit,ReLU)和双曲正切(tanh)作为激活函数。
在MLP中,每一层的每个节点都与下一层的每个节点相连,因此信息在多层之间不断向前传递。
MLP使用
反向传播(Backpropagation)
来进行训练:首先,在训练过程中,网络首先通过前向传播接收输入数据并生成预测输出。 然后,将预测输出与真实输出(即标签或目标值)进行比较,计算误差(也称为损失)。 接下来,通过反向传播算法,将误差从输出层反向传播回输入层,并在这个过程中调整每一层中神经元之间的权重和偏置,以最小化误差。 这个过程会重复进行多次,直到达到某个停止标准(如误差小于某个阈值、达到最大迭代次数等),从而完成网络的训练。
2 径向基函数网络Radial Basis Function Networks (RBFNs)
什么是径向基函数网络
一种基于径向基函数(Radial Basis Function)的神经网络。来自维基百科的解释:
常用的径向基函数:
工作原理
一种简单的RBFN(径向基函数网络)类型是三层前馈神经网络,包括一个输入层、一个隐藏层(由多个RBF非线性激活单元组成)和一个线性输出层。 隐藏层中的RBF单元用于对输入数据进行非线性变换。 输出层则作为求和单元,将隐藏层的输出进行线性组合,以给出最终输出。
如何确定网络结构
RBFN(径向基函数网络)使用试错法来确定网络的结构,这一过程主要分为两个步骤:
在第一阶段,使用无监督学习算法(如k-均值聚类)来确定隐藏层的中心。这些中心代表了输入空间中的关键点或代表性数据点,它们将用于计算RBF函数的值。 在第二阶段,使用线性回归来确定权重。这里,目标是找到一组权重,使得网络的输出能够最好地逼近目标值。均方误差(MSE)被用作衡量误差的指标,通过调整权重来最小化MSE,从而使网络的输出更加接近真实值。这个过程通常是通过迭代优化算法(如梯度下降法)来实现的。
总之,RBFN通过无监督学习确定隐藏层中心,然后通过线性回归和误差最小化来确定权重,从而构建出能够处理复杂非线性关系的神经网络模型。
3 卷积神经网络Convolutional Neural Networks (CNN)
什么是CNN
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习的代表算法之一。
工作原理
通过卷积、池化等操作来提取特征,将输入数据映射到一个高维特征空间中,再通过全连接层对特征进行分类或回归。
其核心思想是利用局部连接和权值共享来减少模型参数,提高模型泛化能力。
卷积神经网络通常由以下几个部分组成:
输入层:接收原始数据,如图像、视频帧等。 卷积层:通过卷积操作提取特征,每个卷积层通常包含多个卷积核,每个卷积核对输入数据进行卷积运算,得到一个特征图。卷积操作可以理解为滑动窗口对输入数据进行局部计算。 池化层:通过降采样来减少特征图的尺寸,增强模型的鲁棒性和特征提取能力。常用的池化操作包括最大池化和平均池化。 激活函数层:引入非线性因素,使模型能够处理非线性问题。常用的激活函数包括ReLU、sigmoid等。 全连接层:将特征映射到一个高维特征空间中,再通过softmax函数进行分类或回归。
4 循环神经网络Recurrent Neural Networks (RNNs)
什么是RNN
循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。
循环神经网络是一种特殊的神经网络结构,它通过引入循环连接(即节点的输出可以作为其输入),使得网络具有记忆能力,能够处理序列数据中的时间依赖关系。
工作原理
RNN由输入层、隐藏层和输出层组成,但与传统的神经网络不同,RNN的隐藏层之间存在循环连接,即隐藏层的输出会作为下一个时间步的输入之一。这种结构使得RNN能够保留并传递序列中的历史信息
RNN的工作过程可以分为以下几个步骤:
输入阶段:在每个时间步,RNN接收当前的输入数据(如一个单词的嵌入表示)和前一个时间步的隐藏状态。输入数据通过输入层进入网络。 隐藏阶段:在隐藏层,RNN根据当前的输入数据和前一个时间步的隐藏状态计算当前时间步的隐藏状态。这个计算过程通常包括线性变换和激活函数的应用。隐藏状态不仅包含了当前时间步的信息,还融合了之前所有时间步的信息,因此RNN能够捕捉到序列数据中的上下文信息。 输出阶段:在输出层,RNN根据当前的隐藏状态生成输出。输出可以是序列中的下一个元素(如预测的单词),也可以是整个序列的某种表示(如分类结果)。
RNN的工作过程可以用以下公式来描述:
5 长短期记忆模型 Long Short-Term Memory Networks (LSTMs)
什么是LSTM
LSTM,全称Long Short-Term Memory,即长短期记忆网络,是一种特殊的循环神经网络(RNN)结构。
LSTM通过引入具有长期记忆性的门控单元,解决了传统RNN在处理长序列数据时容易出现的长期依赖问题。
工作原理
Deep-Learning-LSTM:https://zh.d2l.ai/chapter_recurrent-modern/lstm.html
遗忘门:决定从记忆单元中丢弃哪些信息。它通过sigmoid函数计算得到一个介于0和1之间的值,表示记忆单元中每个元素的保留程度。 输入门:决定哪些新信息将被添加到记忆单元中。它同样通过sigmoid函数计算得到一个值,用于控制新信息的流入,并通过一个tanh函数生成新的候选值向量。 记忆单元:存储序列中的信息,并根据遗忘门和输入门的控制进行更新。 输出门:控制从记忆单元中输出哪些信息。它通过一个sigmoid函数计算得到一个值,用于控制记忆单元中信息的输出程度,并与通过tanh函数处理的记忆单元状态相乘,得到最终输出。
6 受限玻尔兹曼机Restricted Boltzmann Machines (RBMs)
什么是RBM?
受限玻尔兹曼机是一种双层神经网络,具有特定的拓扑结构,即两层之间的神经元完全连接,但同一层的神经元之间互不相连。RBM是一种可通过输入数据集学习概率分布的随机生成神经网络。
工作原理
RBM由两个主要部分组成:
可见层(visible layer) 隐藏层(hidden layer)
可见层对应于输入数据,而隐层则用于捕捉数据中的隐藏特征。两层之间的神经元通过权重连接,但同一层内的神经元之间无连接。
在RBM中,对于单个输入x,如果输入层有两个节点而隐藏层有四个节点,那么总共会有8个权重(每个输入节点与每个隐藏节点之间都有一个权重)。
这些权重决定了输入信号如何传递到隐藏层。除了权重之外,每个隐藏节点还会接收一个偏置值。
7 自组织图Self-Organizing Maps (SOMs)
什么是SOPs
假如你正在处理一个包含成百上千个特征的数据集,并且你希望通过可视化数据来理解每个特征之间的相关性。但使用散点图或成对图(pair plots)来直接分析这样的高维数据分布几乎是不可能的。
此时,自组织映射(Self-Organizing Maps, SOMs)就派上了用场。SOMs通过降低数据的维度(即去除不那么相关的特征)来帮助我们可视化特征值的分布。这样,即使原始数据集是高维的,我们也能通过SOMs得到的低维表示来直观地理解和分析数据。
SOMs作用:当数据集特征过多,难以直接用常规方法可视化时,自组织映射(SOMs)通过降低数据维度,帮助我们更好地理解和分析数据特征之间的分布和关系。
工作原理
SOMs(自组织映射)通过创建一个一维或二维的映射图来将相似的数据项分组在一起。
每个节点的权重都是随机初始化的。在每一步中,都会从输入数据集中随机选取一个样本向量x,并计算x与所有其他向量之间的距离。
在所有其他向量中进行“投票”后,选择出与x最接近的最佳匹配单元(Best-Matching Unit, BMU)。一旦确定了BMU,就会更新权重向量,并将BMU及其拓扑邻居在输入空间中向输入向量x移动,以使它们更接近x。这个过程会重复进行,直到我们得到预期的输出。
8 生成对抗网络Generative Adversarial Networks (GANs)
什么是GAN
Generative Adversarial Networks(GANs,生成对抗网络)是由Ian Goodfellow等人在2014年提出的一种深度学习模型。
其核心理念是通过两个神经网络——生成器(Generator)和判别器(Discriminator)——的对抗过程,来生成与真实数据分布相似的新数据。
工作原理
生成器(Generator):生成器的任务是从一个随机噪声(通常是高斯噪声)中生成逼真的数据样本。它是一个神经网络,接受一个随机向量作为输入,并输出一个与真实数据分布相似的样本。生成器的目标是欺骗判别器,使其认为生成的数据是真实的。
判别器(Discriminator):判别器是另一个神经网络,用于区分真实数据和生成器生成的假数据。它的输入是一个数据样本,输出是一个标量值,表示输入数据是真实的概率。判别器的目标是最大化区分真实数据和生成数据的准确性。
9 自编码器Autoencoders
什么是自编码器
自编码器是一种神经网络,其输入和输出是一致的,目标是使用稀疏的高阶特征重新组合来重构自己。
在自动编码器中,数据首先被压缩成一个潜在空间表征(或称为编码),然后通过这个表征来重构原始数据。
自编码器和PCA(降维算法)的作用是比较类似的。它们被用于将高维数据转换为低维数据。如果我们需要原始数据,我们可以将其重新生成回来。
工作原理
编码器(Encoder)——编码器将输入压缩成一个潜在空间表示(latent space representation),这个表示之后可以被重构以得到原始的输入。
代码(Code)——这是编码后得到的压缩部分(潜在空间表示)。它是输入数据经过编码处理后的结果。也称之为Bottleneck,它用于决定输入数据的哪些方面是重要的,哪些可以忽略。
解码器(Decoder)——解码器的目的是将代码重构回其原始形式。然而,得到的重构输出可能不如原始数据准确,并可能存在一定的损失。
10 深度信念网络Deep Belief Networks(DBNs)
什么是DBNs
深度信念网络是一种基于无监督学习的生成模型,具有多层的堆叠结构,由多层受限玻尔兹曼机(Restricted Boltzmann Machines,RBM)
堆叠而成。
工作原理
贪心算法(Greedy Algorithm):DBN使用贪心算法进行预训练。这个算法通过逐层的方式学习每一层的生成性权重(generative weights)和自上而下的方法。每一层的权重决定了该层中的变量如何依赖于上一层中的变量。
吉布斯采样(Gibbs Sampling):在预训练过程中,对网络的顶部两层隐藏层执行多个步骤的吉布斯采样。吉布斯采样是一种用于从指定多元概率分布中近似获取观测序列的马尔可夫链蒙特卡洛方法,特别是在直接采样困难时。这里的目标是从由顶部两层隐藏层定义的RBM中抽取一个样本。
原始采样(Ancestral Sampling):在吉布斯采样之后,通过模型的其余部分执行一次祖先采样,以从可见单元中抽取一个样本。祖先采样是一种生成模型中的采样技术,它从顶层开始,逐层向下生成样本。
参考资料
原文地址:https://www.projectpro.io/article/deep-learning-algorithms/443 https://zh.d2l.ai/chapter_recurrent-modern/lstm.html https://zh.wikipedia.org/wiki/径向基函数