一.深度学习
1.简介
首先,有些新手会问,到底什么是深度学习?深度学习如何去理解?怎么才能更好的学习深度学习等一些问题。然后,针对这些疑问,开始学习台湾老师李宏毅的视频、吴恩达的视频或者国内知名学者的一些视频,接着寻找一系列学习资源,最后,开始怀疑自己,到底在学习什么。
以上出现的情景,正是本人遇到的。当然,或许有的人,一开始就非常理解明白以上老师讲解的内容。我们言归正传,接下来,让我们看一下什么是深度学习。
深度学习是一种基于神经网络的机器学习方法,那么什么叫做基于神经网络的机器学习方法???我们可以这样理解,深度学习就是为了模拟我们大脑中的神经元,神经元是什么,在高中生物会讲解,即便是文科生,相信也会了解一些。那么有人就会提问了,如何模拟呢?我们的大脑需要一系列复杂的操作才能完成一件事情,如果我们想要读书,那么大脑就需要接收到这个信号,然后去处理,处理这个动作需要多个神经元进行辅助完成,这就构成了一层又一层的网路。有了这样的启发,深度学习便应运而生。讲到这里,是不是觉得自己有点理解什么是深度神经网络,但是又觉得不是太明白,再简单的说,就是我们做一件事情,开始的信息就是深度学习的输入,经过一些大脑自动处理(可能这里涉及大脑的多次处理,也就是多层的神经网络叠加),最终我们完成了这件事情,对于大脑内部究竟怎么处理的,我们不知道。这就是我针对深度神经网络的理解。
其实,深度学习在语音识别、图像识别、自然语言处理等领域取得了重大突破。深度学习的核心就是我们提到的深度神经网络,它由多个层次构成,每个层次都可以提取不同抽象程度的特征,从而实现对复杂数据的高效处理。深度学习的训练过程通常使用反向传播算法,该算法通过不断调整网络参数,使得输出结果与实际结果尽可能接近。但最近有许多优化算法被提出,因为预训练模型的出现,导致反向传播训练的数据量太大,无法反向传播。这里只是简单的提到,后续会不断的更新相关的自己学习的内容。
接下来,我们谈谈深度学习的应用。深度学习的应用包括图像分类、目标检测、人脸识别、自然语言生成等多个领域。此外,深度学习还可以结合其他技术,如强化学习和迁移学习,进一步提升其性能。虽然深度学习在许多领域都取得了巨大成功,但它仍然存在许多挑战,如训练样本不足、过拟合等问题。未来,深度学习将继续在人工智能领域发挥重要作用,并为各行各业带来更多的创新和应用。
2.深度学习下的反向传播的简洁介绍
反向传播是深度学习中最常用的训练神经网络的方法之一。其基本思想是通过计算误差的梯度值来调整神经网络的权重和偏置,以使模型的输出结果与实际结果更加接近。 具体来说,反向传播算法可以分为两个阶段:前向传播和反向传播。 在前向传播阶段,输入数据通过神经网络的多个层次进行处理,最终得到输出结果。在这个过程中,每一层的输出结果会成为下一层的输入数据,并且每个神经元都会对输入数据进行加权和运算,再通过激活函数进行非线性变换。 在反向传播阶段,首先计算输出结果与实际结果之间的误差,然后根据误差的梯度值来调整神经网络的权重和偏置。这个过程从输出层开始,一直向前传递到输入层,每个神经元都会接收到来自后一层的误差信号,并计算出梯度值,用于调整前一层的权重和偏置。 反向传播算法的优点是可以训练深度神经网络,处理大规模的数据集和高维度的特征,同时也可以处理多分类和回归等复杂任务。但是反向传播算法也存在一些问题,例如容易陷入局部最优解、容易出现梯度消失和梯度爆炸等问题,需要通过优化算法和正则化方法来解决。
基于只是对于反向传播的基本概念理解,想要更深层次的理解,后续将会进一步研究后分享给大家。
3.总结
深度学习的不断发展,给人工智能带来了突破性的进展,相信大家都已经知道一个叫做Chatgpt的神奇预训练模型,它的出现可能会导致一些人类的失业,但是
二.卷积神经网络
1.简洁介绍
什么是深度学习下的卷积神经网络?
深度学习下的卷积神经网络(Convolutional Neural Network,CNN)一般被用于图像、语音、文本等提取特征方面。它主要由卷积层、池化层、全连接层等组成。卷积层通过卷积操作提取图像中的特征;池化层则用于压缩特征图的大小,减小计算量;全连接层用于将卷积层和池化层提取的特征进行分类或回归预测。
2.卷积层的简单介绍
卷积层(Convolutional Layer)是卷积神经网络(CNN)中的一个重要层,主要用于提取图像、语音、文本等数据中的特征。卷积层通过卷积操作提取图像中的局部特征,并保留空间结构信息。卷积操作可以看作是一个滤波器(Filter)在图像上滑动,计算每个位置的加权和,从而得到特征图(Feature Map)。卷积层的参数包括滤波器的大小、深度、步长和填充方式等。 卷积层的优势在于它可以自动提取图像的本质特征,而不需要手动设计特征提取器。此外,多个卷积层可以逐层提取更加抽象和高级的特征,从而提高模型的识别准确率。卷积层在图像识别、目标检测、语音识别等领域都有广泛应用。
卷积神经网络(CNN)是一种被广泛应用于计算机视觉任务的人工神经网络。它的核心层级结构是卷积层,其中卷积操作是其关键所在。本文将从卷积的原理、卷积层的构成、卷积核的设计等方面进行1000字的简单介绍。
2.1 卷积的原理
卷积是一种数学运算,它可以通过将两个函数重叠并求积分的方式来产生一个新的函数。在卷积神经网络中,卷积操作也是类似的:将输入数据和卷积核进行卷积运算,得到输出的特征图。具体来说,卷积核会在输入数据上滑动,每次计算一个局部区域与卷积核的内积,然后将结果存储在输出特征图相应位置上。这样一来,卷积操作就可以从输入数据中提取出各种特征,并转换为输出特征图。
2.2 卷积层的构成
卷积层通常由下面三个组成部分构成:
-
卷积核。卷积核是卷积层的核心组件,它的形状和大小可以根据实际的需求进行调整。对于RGB图片,通常使用3x3或5x5的卷积核,对于更高级别的图片,可能需要更大的卷积核。确定好卷积核的大小和形状之后,我们就可以开始训练网络了。
-
步长。步长是指卷积核在输入数据上移动的距离,通俗点就是控制卷积核滑行时每次移动的步数。步长越小,输出特征图的大小就越大,计算量也越多;步长越大,输出特征图的大小就越小,计算量也越少。因此,需要在实际应用中根据需要进行选择。
-
填充。填充是指在输入数据的周围添加一些额外的像素值,以便更准确地表示边缘像素的信息。填充可以使输出大小不变,并且帮助保留输入特征图的边缘信息,从而有助于提高卷积层的性能。
三、卷积核的设计
卷积核的设计是卷积神经网络中非常重要的一个方面。根据需要,卷积核可以设计成不同的形状和大小,以便从输入数据中提取出不同的特征。例如,在图像分类中,通常会设计多个卷积核,用于检测图像的各种特征,如边缘、角、纹理等。在实际设计卷积核时,需要考虑多方面的因素,如卷积核的深度、卷积核的交叉性、卷积核的可学习性等等。
总之,卷积层是卷积神经网络中非常重要的组成部分,它是对输入数据进行卷积操作并生成特征图的核心部分。同时,卷积核的设计也是影响卷积神经网络性能的一个重要因素。在实际应用中,不同任务和数据都需要不同的网络结构和参数调整,因此需要根据实际情况进行相关的调整和优化,以获得更好的性能。
3.池化层的简单介绍
池化层是卷积神经网络(Convolutional Neural Network,CNN)中的一种重要结构,用于在卷积之后对特征图进行下采样,减少数据的维度以及参数数量。本文将就池化层的原理、作用、类型和应用等方面进行简单介绍。
3.1 池化层原理
池化层是卷积神经网络中相邻卷积层之间常用的一种下采样方式,主要作用是减小特征图的大小,降低计算量,并且可以对特征图提取的特征进行平移不变性处理。
一般情况下,池化层的输入是卷积层输出的特征图,然后通过一个可学习的池化函数对特征图进行下采样。池化函数的定义可以有多种形式,如平均池化、最大池化、L2范数池化等。其中,最大池化是最常见的一种池化方式,因为它能够保留特征图的最强激活值,更好地保留特征信息。
3.2 池化层作用
池化层有以下几个作用:
-
减小特征图的大小,降低计算量。由于卷积层在进行卷积操作时,需要考虑每个像素与其相邻像素的权重,所以其参数量非常大。通过池化层的下采样操作,可以减少特征图的维度和参数数量,从而避免过拟合和提高训练效率。
-
提高模型的鲁棒性。池化层可以使得特征图更具有平移不变性,即使输入图像发生了一定程度的平移、旋转或缩放,卷积神经网络也能够识别出它们的共同特征。
-
增加特征的不变性。通过池化层能够减少噪声干扰,保留重要信息,使得卷积神经网络对于一些微小的局部变化不敏感,从而能够适应更广泛的输入场景。
3.3 池化层类型
目前主要有三种池化方式:最大池化(Max Pooling)、平均池化(Average Pooling)和全局池化(Global Pooling)。
-
最大池化(Max Pooling):最大池化是最常用的池化方式,它通过选取特征图上每个子区域内的最大值来进行下采样,从而保留了特征图的最强激活值,更好地保留特征信息。
-
平均池化(Average Pooling):平均池化是对特征图上每个子区域内的值进行求平均的池化方式,它会损失一部分信息,但是同时可以有效减小过拟合。
-
全局池化(Global Pooling):全局池化仅针对特征图的每个通道进行操作,对于每个通道内所有像素的值进行相加或者平均,从而获得一个通道输出值,这种池化方式可以有效减少参数数量。
四、池化层应用
池化层广泛应用于各种计算机视觉任务中。例如图像分类、物体检测、人脸识别等任务都可以使用池化层提取特征,从而进行高效精准的分类和识别。
总之,池化层是卷积神经网络中非常重要的一部分,能够有效地减小特征图的大小,并增强模型的鲁棒性和不变性,是深度学习中不可忽视的关键技术之一。
4.全连接层的简单介绍
全连接层(Fully Connected Layer)是卷积神经网络(CNN)中的一种层,主要用于将卷积层和池化层提取的特征进行分类或回归预测。全连接层中的每个神经元都与上一层中的所有神经元相连,因此也被称为密集连接层(Dense Layer)。全连接层的参数包括神经元数量、激活函数等。 全连接层的作用是将卷积层和池化层提取的特征进行分类或回归预测。在图像分类问题中,全连接层通常用于将卷积层提取的特征映射到类别概率上,从而进行分类预测。在物体检测问题中,通常会在全连接层后添加一个边界框回归层和一个分类层,用于同时进行物体位置和类别的预测。 全连接层的优点是它可以学习到更加复杂和抽象的特征,从而提高模型的分类精度。但是全连接层的缺点是它会导致模型参数过多,容易过拟合。因此,在实际应用中通常会使用一些正则化技术(如dropout)来减少过拟合的风险。
三.循环神经网络及其变体
1.简介
循环神经网络(Recurrent Neural Network,RNN)是一种常用于处理序列数据的神经网络模型。与传统的前馈神经网络不同,RNN具有反馈循环的结构,可以在处理当前输入时考虑之前的信息。这种结构使得RNN可以自然地处理时序数据,如自然语言、音频、视频等。 RNN的基本结构是一个循环单元(Recurrent Unit),它可以对当前的输入和之前的状态进行计算,得到当前的输出和更新后的状态。循环单元中的参数是共享的,因此可以处理任意长度的序列数据。RNN中的状态信息可以传递到后续的时间步骤,从而实现信息的持久化和传递。 RNN的优势在于它可以自然地处理序列数据,并且可以捕捉数据之间的时序关系。在自然语言处理、语音识别、机器翻译等领域,RNN已经取得了很好的效果,并且在实际应用中被广泛使用。但是,RNN也存在梯度消失和爆炸的问题,导致长序列的训练非常困难。因此,近年来出现了一些RNN的变种,如长短时记忆网络(LSTM)和门控循环单元(GRU),可以有效地解决这些问题。
2.循环神经网络
循环神经网络(Recurrent Neural Network,RNN)是一种神经网络结构,主要用于处理序列数据。与传统神经网络不同的是,RNN具有自反馈机制,可以将历史信息编码在隐藏层状态中,并通过反复的迭代,将信息从过去传递到未来。
RNN最基本形式由输入层、一个或多个时间步的隐藏层和输出层组成。每个时间步的隐藏层都会接收上一时间步的信息以及当前时间步的输入,并计算出当前时间步的输出。这样,我们就能够将历史信息传递到当前时间步,并生成与之关联的输出结果。
RNN的应用领域非常广泛,例如语言建模、语音识别、机器翻译、文本分类、时间序列预测等任务都可以使用RNN进行建模和处理。其中,文本分类任务中,我们需要将文本序列转化为定长的向量表示;时间序列预测任务中,我们需要对未来的数值进行预测;而在机器翻译任务中,我们需要将源语言的序列映射为目标语言的序列。
然而,RNN存在着梯度消失(Vanishing Gradient)的问题,当序列长度太长时,梯度逐渐变小并消失,使得模型难以学习到长期依赖关系。
3.LSTM
LSTM(长短期记忆网络,Long Short-Term Memory)是一种特殊的循环神经网络(RNN),它是由Hochreiter和Schmidhuber在1997年提出的。相比于传统的RNN模型,LSTM模型可以更好地解决长序列问题,并有效地避免了梯度消失问题。
LSTM模型的核心思想是引入了一个称为“内存单元”(memory cell)的结构,用来专门处理长期记忆信息。内存单元是一种可以保持数据的结构,它的信息可以在不同的时间步骤中进行读取和写入。同时,LSTM还包括三种门结构,分别是输入门、输出门和遗忘门,用来控制内存单元中数据的读写操作,从而进一步加强模型的记忆能力和泛化能力。
输入门(input gate)用来控制新来的输入数据对内存单元的更新程度,即确定哪些信息要被存储到内存中。输入门可以看作是一个Sigmoid函数,通过对输入数据进行逐位加权,产生一个介于0和1之间的数值,用于控制每个数据位的重要性。
遗忘门(forget gate)用来控制旧的记忆信息对内存单元的影响程度,即确定哪些信息应该从内存中丢弃。和输入门一样,遗忘门也是一个Sigmoid函数,仅仅是针对上一个时刻记忆单元的状态进行操作,而不是对新输入信号进行操作。
输出门(output gate)用来控制内存单元中的信息如何传递到输出。输出门也是一个Sigmoid函数,用来控制哪些信息会传递到下一个时间步骤,并计算当前时刻的输出值。
总之,LSTM模型是一种强大的深度学习模型,具有很好的长短期记忆能力和泛化能力,在时间序列预测、语音识别、自然语言处理等领域有广泛的应用。
4.GRU
GRU全称为门控循环单元(Gated Recurrent Unit),是一种深度学习中的循环神经网络(RNN)模型,由Kyunghyun Cho等人于2014年提出。GRU在处理时间序列数据方面表现出色,在机器翻译、语音识别、文本生成等任务上具有广泛的应用。
相对于传统的RNN模型,GRU模型引入了更新门和重置门两个机制来控制信息的流动和遗忘。这两个门分别决定了当前输入是否可以通过当前时间步的状态信息被传递到下一个时间步或被遗忘掉。因此,GRU不仅可以捕捉数据中的长期依赖关系,同时还能够防止梯度消失和爆炸问题的发生。
具体来说,GRU模型包含一个隐层状态向量h_t和一个门控向量z_t、r_t。其中,z_t控制当前状态和前一状态的加权系数,r_t控制当前状态和前一状态的更新系数。
在GRU模型中,t时刻的隐藏状态h_t的计算方式如下:
- 计算重置门 r_t 和更新门 z_t:
rt=σ(Wrxt+Urht−1)zt=σ(Wzxt+Uzht−1)rt=σ(Wrxt+Urht−1)zt=σ(Wzxt+Uzht−1)
其中,W和U是权重参数,x_t是当前时刻的输入数据,σσ 是sigmoid函数。
- 计算候选隐藏状态 ht~ht~:
ht~=tanh(Wht−1+U(rt∗xt))ht~=tanh(Wht−1+U(rt∗xt))
其中,*为矩阵乘法。
- 更新当前时刻的隐藏状态 h_t:
ht=(1−zt)∗ht−1+zt∗ht~ht=(1−zt)∗ht−1+zt∗ht~
通过这样的机制,GRU模型可以更有效地捕捉到时间序列数据中的规律性,从而实现更准确的预测和分类。
四.Transformer模型及其变体
什么?是Transformer位置编码_kaiyuan_sjtu的博客-CSDN博客
1.注意力机制
注意力机制(Attention Mechanism)是一种广泛应用于深度学习的技术,主要用于在处理序列或图像等数据时,将不同部分的信息赋予不同的权重。这种机制模拟了人类注意力的过程,能够通过自适应选择与当前任务相关的“重点”信息,提高模型的准确性和鲁棒性。
注意力机制最初被引入机器翻译领域,用于在对句子进行翻译时关注输入文本中与当前输出单词最相关的部分。之后,该技术被成功应用于语音识别、图像识别、自然语言处理、推荐系统等领域,取得了显著的效果。
下面我们来介绍一下常用的几种注意力机制:
- Scaled Dot-Product Attention
Scaled Dot-Product Attention 是注意力机制中最简单也是最常用的一种方法。它基于输入的Query、Key和Value三个部分,计算得到一个Attention的权重向量,再将权重向量和Value进行加权求和得到输出。
具体来说,在输入Q、K、V和尺度系数$ \sqrt{d_k}$的情况下,scaled dot-product attention 的计算公式如下:
Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V)=softmax(dkQKT)V
其中,Q、K、V均为矩阵,字母“T”表示矩阵的转置操作,“softmax”表示对行进行softmax操作,dkdk
用于缩放点积的值。
- Multi-Head Attention
Multi-Head Attention是Scaled Dot-Product Attention的一种进化形式,它通过采用多个注意力头来计算Attention,从而增加了模型对不同特征的表达能力。
具体来说,Multi-Head Attention通过将输入的Query、Key和Value矩阵进行线性变换,生成多个Query、Key和Value矩阵,再对每个矩阵进行Scaled Dot-Product Attention操作,最后将每个Attention矩阵合并起来得到输出结果。
- Self-Attention
Self-Attention 是一种特殊的注意力机制,它在计算Attention时不仅考虑了输入序列的其他部分,还同时考虑了当前位置的上下文信息,有助于更好地捕捉到序列中的长距离依赖关系。
具体来说,Self-Attention机制包含三个部分:输入矩阵X,Wq、Wk、Wv三个线性变换矩阵,以及输出矩阵Y。首先,通过对输入矩阵X进行三个线性变换,生成Q,K,V三个矩阵,然后对它们进行Scaled Dot-Product Attention操作,得到注意力权重矩阵Attention。最后,通过将Attention矩阵和V矩阵相乘,得到输出矩阵Y。
总的来说,注意力机制作为一种有效的建模方式,为深度学习模型带来了极大的提升。它不仅能够提高模型的准确性和鲁棒性,还有助于解决长序列的建模问题,成为深度学习的重要工具之一。
2.编码器
Transformer编码器是一种常用于处理序列数据的神经网络模型,用于自然语言处理、语音识别、机器翻译等任务中。与传统的循环神经网络不同,Transformer编码器采用了自注意力机制(Self-Attention Mechanism)来捕捉序列数据中的上下文关系,从而提高模型的性能和效率。 Transformer编码器包含多个编码层(Encoder Layer),每个编码层中包含多头自注意力和前馈神经网络。自注意力机制可以计算序列中每个位置与其他位置之间的注意力权重,从而捕捉到不同位置之间的上下文关系。多头自注意力机制可以使用多个不同的注意力头来捕捉不同的语义信息。前馈神经网络则用于对每个位置的特征进行非线性变换,并提取更高级别的特征。 Transformer编码器的优势在于它可以并行计算序列中每个位置的特征,从而极大地加快了模型的训练速度。同时,自注意力机制可以捕捉到序列中任意两个位置之间的关系,不需要像循环神经网络那样依次处理序列,因此可以处理更长的序列数据。Transformer编码器在自然语言处理领域取得了很好的效果,并且已经成为了机器翻译等任务中的主流模型。
3.解码器
Transformer解码器是Transformer模型中的一个重要组成部分,用于将编码器输出的特征向量转换为目标语言的表达。在机器翻译等任务中,Transformer解码器扮演着非常重要的角色。
Transformer解码器的结构与编码器类似,也由多个相同的层级组成。与编码器不同的是,解码器在每一个时间步都会进行自注意力(self-attention)操作,以便对当前时间步的输入进行上下文信息的整合。此外,解码器还可以使用编码器的输出作为额外的注意力(multi-head attention)目标。
下面我们将更详细地介绍Transformer解码器中涉及的主要组成部分。
-
解码器输入 在开始解码之前,首先需要输入一个特殊的起始符号(例如“<s>”)作为解码器的第一个时间步输入。在后续的时间步中,解码器会逐一读入前一个时间步的输出结果和编码器的输出,用于生成下一个时间步的输出结果。
-
自注意力层 在编码器中,每个时间步的输入序列是固定的,并且不同时间步之间是独立的。而在解码器中,输入的序列是生成过程中不断变化的,并且不同时间步之间有着紧密的关联。为了更好地处理这样的序列数据,解码器在每个时间步都会进行自注意力操作。也就是说,它会将当前时间步的输入序列中每个元素的向量表示都与其他元素的向量表示进行比较,并对其进行加权平均,得到当前时间步的上下文表示。
-
注意力层 除了自注意力层之外,解码器还有一种额外的注意力机制,可以利用编码器的输出来产生额外的上下文表示。具体来说,每个时间步的编码器输出会作为解码器注意力层的查询(query)向量,当前时间步的自注意力层输出会作为键(key)和值(value)向量。然后根据查询向量和键向量计算得到权重系数,最终通过加权平均的方式将值向量加权合并得到当前时间步的上下文表示。
-
前馈神经网络层 在完成自注意力和注意力操作之后,解码器需要进一步将上下文信息进行处理,以便生成下一个时间步的输出结果。为此,解码器还包含了一层前馈神经网络层。该层采用全连接神经网络的结构,将上一层的输出映射为一个新的、更高维度的隐状态表示。
-
输出层 最后,解码器将前馈神经网络层的输出投影到目标语言的词表大小上,以表示下一个时间步要生成的单词或子词。通常情况下,解码器会采用softmax函数对每个单词或子词的概率进行归一化处理,以便选择最可能的单词或子词作为输出结果。
总体来说,Transformer解码器中的各个组成部分之间是紧密相关的,互相配合完成整个解码过程。自注意力层和注意力层帮助解码器捕捉到输入序列中的上下文信息,前馈神经网络层则负责进一步处理该信息,输出层则将上述信息映射到目标语言的词表上,生成下一个时间步的输出结果。
4.位置编码
Transformer是一种新型的神经网络,其相较于传统的循环神经网络(RNN)和卷积神经网络(CNN)能够更好地应对长序列输入的问题。其中位置编码就是Transformer的一个非常重要的组成部分。
简单来说,位置编码是用来告诉Transformer输入序列中每个位置的信息的一种方式。在传统的神经网络中,输入的元素之间是独立的,没有位置信息的概念。而在自然语言处理等任务中,输入序列的顺序通常是很重要的,因此需要一种机制使得神经网络能够学习到元素之间的相对位置关系,从而更好地理解输入序列。
位置编码的设计思想是使用正弦和余弦函数来构造不同位置的向量表示。具体来说,假设当前输入序列的长度为 LL,位置编码的向量维度为 dd,则对于每个位置 pospos 和每个维度 i∈[0,d)i∈[0,d),我们可以计算出对应的位置编码向量 ppos,ippos,i:
ppos,2i=sin(pos100002i/d)ppos,2i+1=cos(pos100002i/d)ppos,2ippos,2i+1=sin(100002i/dpos)=cos(100002i/dpos)
这里的 sinsin 和 coscos 函数用于保证不同位置的位置编码向量之间有一定的相似性,从而帮助神经网络更好地学习到位置信息。需要注意的是,位置编码的设计并不依赖于具体的输入序列内容,而只与位置有关。因此可以预先计算好位置编码,直接输入给Transformer。
在Transformer中,位置编码通过与输入嵌入向量相加的方式引入到网络中。具体来说,对于输入序列中的每个位置 pospos 和每个嵌入向量维度 i∈[0,d)i∈[0,d),我们可以定义对应的输入向量 xpos,ixpos,i 和位置编码向量 ppos,ippos,i,然后将它们相加作为最终的输入向量:
Inputpos,i=xpos,i+ppos,iInputpos,i=xpos,i+ppos,i
这样,Transformer就可以在学习输入序列的同时,学习到不同元素之间的相对位置关系,从而更好地完成自然语言处理等任务。
5.Transformer的变体简单介绍
Transformer是一种基于自注意力机制的编码器-解码器结构,由Google在2017年提出,并在自然语言处理任务(如翻译、问答等)中取得了巨大成功。基于Transformer,出现了很多变体模型,下面我简单介绍几个常见的变体:
-
BERT (Bidirectional Encoder Representations from Transformers):BERT模型是由Google在2018年提出的预训练模型,通过大规模无监督学习,可以产生丰富的语言表示。BERT模型在各种自然语言处理任务上取得了非常好的效果。
-
GPT (Generative Pre-training Transformer):GPT模型是由OpenAI在2018年提出的预训练模型,主要用于生成文本。GPT模型采用单向的Transformer结构,在语言模型任务上也取得了非常好的效果。
-
XLNet (eXtreme Multi-task Learning through Adversarial Training of a Large Language Model):XLNet模型是由CMU和Google在2019年提出的预训练模型,其与BERT模型类似,但是采用了更复杂的学习策略,取得了在多项自然语言处理任务上的最优结果。
-
T5 (Text-to-Text Transfer Transformer):T5模型是由Google在2020年提出的预训练模型,采用了类似于GPT的单向Transformer结构,但是将所有的自然语言处理任务都转化为文本转换任务,包括翻译、问答、摘要等等。T5模型在不同任务上均取得了最先进的效果。
五.对抗生成网络
对抗生成网络(Generative Adversarial Networks, GAN)是一种深度学习模型,被Ian Goodfellow等人在2014年提出。这种网络可以从训练数据中学习到数据的分布情况,然后生成与训练数据相似的新数据。
GAN包含两个部分:生成器(Generator)和判别器(Discriminator)。生成器接收一个随机的向量作为输入并产生新的数据,而判别器则尝试区分输入数据是真实的还是由生成器生成的假数据。这两个部分同时进行训练,以最终达到平衡状态。
GAN的训练过程如下:
- 生成器生成一些假数据,判别器将假数据和真实数据进行比较,并给假数据评分。
- 评分结果和真实数据一起用于更新判别器的权重。
- 生成器再次生成一些假数据,使用更新后的判别器重新评分,得到假数据的得分。
- 评分结果再次被用于更新判别器的权重。
- 这个过程不断迭代,直到生成器产生的假数据无法被判别器区分出真假为止。
GAN的创新之处在于,它利用了对抗的思想,即在训练过程中,生成器和判别器互相对抗,并不断地优化彼此的表现。因此,GAN可以生成逼真的图像、音频、文本等各种类型的数据。
除了基础的GAN,还有一些GAN的变体,如条件GAN(Conditional GAN)、Wasserstein GAN、CycleGAN等等。这些变体在原有的GAN结构上做了一些改进和扩展,使得GAN能够在更广泛的应用场景中发挥作用,如图像转换、风格迁移、语音合成等领域。
然而,GAN也存在一些问题,如模式崩溃、训练不稳定等。因此,在实际应用中需要谨慎使用,并需要结合具体场景进行优化。另外,由于GAN需要大量的计算资源和复杂的训练过程,对于一些小规模、资源有限的应用场景来说,可能并不适合使用GAN。
六.图神经网络
图神经网络目前只是简单的研究了关于三剑客的知识以及结点嵌入的知识。
1.图卷积神经网络
图卷积神经网络(Graph Convolutional Network, GCN)是一种用于处理图数据的深度学习模型,由Thomas Kipf和Max Welling在2016年提出。
GCN的目标是对于给定的图结构数据,通过学习节点之间的连接关系来预测或分类节点的属性。它通过卷积神经网络(Convolutional Neural Network, CNN)的灵感来设计,利用局部连接和参数共享的思想实现对图数据的有效建模。与CNN不同的是,GCN的输入是一个图而不是一个二维图像。
GCN的主要思想是通过矩阵乘法来实现节点特征的聚合。
GCN的一个优点是可以处理任意类型的图结构数据,而不需要先进行图的手工特征提取或转换。因此,GCN被广泛应用于推荐系统、社交网络分析、图像处理等领域。但同时,GCN也存在一些限制,如对于大规模图数据的处理能力较弱,对于高维稀疏数据的表达能力有限等问题。
2.图注意力网络
图注意力网络(Graph Attention Network, GAT)是一种用于处理图结构数据的深度学习模型,由Petar Velickovic等人在2018年提出。
与传统的图卷积神经网络(GCN)相比,GAT引入了注意力机制来动态地计算每个节点之间的邻居关系的重要性,从而提高了对于局部信息的建模能力。
GAT的核心思想是:对于每个节点ii,通过学习注意力权重来自适应地聚合所有邻居节点的特征向量,得到一个新的节点表征。这个过程可以表示为:
hi(l+1)=σ(∑j∈NiαijW(l)hj(l))hi(l+1)=σ(j∈Ni∑αijW(l)hj(l))
其中,hi(l)hi(l)是第ll层的节点特征向量,NiNi是节点ii的邻居节点集合,αijαij是计算节点ii和jj之间注意力权重的值,W(l)W(l)是第ll层的权重矩阵,σσ是激活函数。
αijαij的计算方式是利用一个含有参数的前馈神经网络来实现,具有很强的非线性能力,可以捕捉节点之间的复杂关系。同时,为了保证注意力权重的可解释性,GAT还引入了自注意力机制,即每个节点的特征向量也会被自身作为邻居节点计算出注意力权重,从而可以考虑到节点本身的重要性。
通过堆叠多层GAT,可以实现对于节点信息的逐层精细化处理,从而提高图数据的表达能力。同时,GAT也具有对于任意类型的图结构数据的处理能力,因为其注意力机制不依赖于事先定义的邻接矩阵。
GAT在推荐系统、社交网络分析、语义分割等领域都已经得到了广泛的应用,并且也在不断地被改进和扩展,例如通过多头注意力机制、残差连接等技术来提高模型的稳定性和泛化能力。
3.GraphSAGE
GraphSAGE 包含采样和聚合 (Sample and aggregate),首先使用节点之间连接信息,对邻居进行采样,然后通过多层聚合函数不断地将相邻节点的信息融合在一起。用融合后的信息预测节点标签。具体的详情将会在以后进行细致讲解。