文章目录
- CNN和Transfomer介绍
- CNN和Transfomer的区别
- 1. **基本概念**
- 2. **数据处理方式**
- 3. **模型结构差异**
- 4. **应用场景区别**
- 自注意力机制
- 1. **自注意力机制的概念**
- 2. **自注意力机制的实现步骤**
- 3. **自注意力机制的优势**
- Transformer结构组成
- 1. **多头注意力层(Multi - Head Attention)**
- 2. **前馈神经网络层(Feed - Forward Neural Network)**
- 3. **归一化层(Normalization Layers)**
- ViT
- 原理
- 优势
- 局限性
CNN和Transfomer介绍
CNN和Transfomer的区别
1. 基本概念
-
CNN(卷积神经网络)
- CNN主要是通过卷积层(Convolutional Layer)、池化层(Pooling Layer)和全连接层(Fully - Connected Layer)构建的神经网络。卷积层通过卷积核在图像(或其他数据)上滑动,提取局部特征。例如,在图像分类任务中,一个卷积核可能会提取图像中的边缘特征。池化层用于减少数据维度,降低计算量,同时保留重要的特征信息,常用的池化方法有最大池化和平均池化。
- 全连接层通常在网络的末尾,用于将前面提取的特征进行整合,以输出最终的分类结果或预测值。例如,在一个简单的手写数字识别的CNN模型中,最后一层全连接层会将前面卷积和池化后得到的特征组合起来,输出0 - 9这10个数字对应的概率。
-
Transformer
- Transformer是一种基于自注意力机制(Self - Attention Mechanism)的深度学习架构。它主要由多头注意力层(Multi - Head Attention)、前馈神经网络层(Feed - Forward Neural Network)和一些归一化层(Normalization Layers)等组成。
- 自注意力机制使得模型能够在处理序列数据(如文本)时,自动关注输入序列中的不同部分,根据每个部分的重要性来计算权重。例如,在机器翻译任务中,Transformer可以根据源语言句子中每个单词与其他单词的关系,更好地生成目标语言句子。
2. 数据处理方式
- CNN
- 对于空间数据(如图像)有天然的优势,它利用卷积核的局部感受野来提取特征。这种局部性使得CNN能够很好地捕捉到图像中的空间结构信息,例如物体的形状、纹理等。
- 对于处理网格状数据(如二维图像或三维体数据)效率较高。但是,当处理长序列数据时,由于其固定的卷积核大小和步长等参数,可能会丢失序列中的长距离依赖关系。
- Transformer
- 更擅长处理序列数据,通过自注意力机制可以直接计算序列中任意两个位置之间的关系,不受距离限制,能够很好地捕捉长距离依赖关系。
- 对于非网格状的数据(如自然语言文本)有更好的适应性。不过,由于自注意力机制的计算复杂度相对较高,在处理非常长的序列时可能会面临计算资源和效率的问题。
3. 模型结构差异
- CNN
- 通常具有层次结构,从浅层的卷积层提取低级特征(如边缘、角点),到深层的卷积层和全连接层组合提取更高级、更抽象的特征。
- 卷积层和池化层的参数相对较少,因为它们共享卷积核,减少了模型的参数量,有助于防止过拟合。例如,一个3x3的卷积核在整个图像上滑动,参数数量是固定的,不随图像大小的增加而增加太多。
- Transformer
- 以多头注意力层和前馈神经网络层交替堆叠为主要结构。多头注意力层允许模型从多个不同的表示子空间中学习特征,提高了模型的表达能力。
- 模型参数较多,尤其是在处理大规模数据时,因为自注意力机制需要计算每个位置与其他所有位置的关系,会产生大量的参数。
4. 应用场景区别
- CNN
- 广泛应用于计算机视觉领域,如图像分类(识别图像中的物体类别)、目标检测(确定图像中物体的位置和类别)、语义分割(将图像中的每个像素分类)等。例如,在人脸识别系统中,CNN可以准确地提取人脸的特征用于身份识别。
- Transformer
- 在自然语言处理领域大放异彩,如机器翻译、文本生成、情感分析等任务。例如,在大型语言模型(如ChatGPT等)中,Transformer架构是其核心,能够生成高质量的文本回复。同时,Transformer也逐渐被应用到计算机视觉等其他领域,形成了一些跨模态的模型。
自注意力机制
1. 自注意力机制的概念
- 自注意力机制(Self - Attention Mechanism)是一种在深度学习中用于处理序列数据的机制,它能够让模型自动地关注输入序列中的不同部分,并根据这些部分的重要性分配不同的权重。
- 以自然语言处理为例,在一个句子中,每个单词与其他单词的关系对理解句子的语义都很重要。自注意力机制可以帮助模型学习每个单词应该关注句子中的哪些其他单词,从而更好地理解句子的整体含义。比如在句子“我喜欢在海边看日出”中,“看日出”这个动作和“海边”这个地点紧密相关,自注意力机制就能捕捉到这种关联。
2. 自注意力机制的实现步骤
- 输入表示
- 首先,将输入序列(以文本序列为例,假设序列长度为 n n n,词向量维度为 d d d)中的每个元素(如单词)表示为一个向量,这些向量组成一个输入矩阵 X ∈ R n × d X\in R^{n\times d} X∈Rn×d。
- 计算Query、Key和Value向量
- 通过三个不同的可训练的线性变换(权重矩阵) W Q W_Q WQ、 W K W_K WK和 W V W_V WV,将输入矩阵 X X X分别转换为Query(查询)向量矩阵 Q Q Q、Key(键)向量矩阵 K K K和Value(值)向量矩阵 V V V。
- 计算公式如下: Q = X W Q Q = XW_Q Q=XWQ, K = X W K K = XW_K K=XWK, V = X W V V = XW_V V=XWV,其中 Q ∈ R n × d k Q\in R^{n\times d_k} Q∈Rn×dk, K ∈ R n × d k K\in R^{n\times d_k} K∈Rn×dk, V ∈ R n × d v V\in R^{n\times d_v} V∈Rn×dv, d k d_k dk和 d v d_v dv通常是通过设计确定的维度,且 d k d_k dk一般等于 d v d_v dv。
- 计算注意力分数(Attention Scores)
- 计算注意力分数,用于衡量每个Query向量与每个Key向量之间的相关性。对于 Q Q Q中的每个Query向量 q i q_i qi( i = 1 , 2 , ⋯ , n i = 1,2,\cdots,n i=1,2,⋯,n)和 K K K中的每个Key向量 k j k_j kj( j = 1 , 2 , ⋯ , n j = 1,2,\cdots,n j=1,2,⋯,n),计算它们的点积(Dot - Product),并进行缩放(通常除以 d k \sqrt{d_k} dk),得到注意力分数矩阵 A A A。
- 公式为: a i j = q i ⋅ k j d k a_{ij}=\frac{q_i\cdot k_j}{\sqrt{d_k}} aij=dkqi⋅kj,其中 a i j a_{ij} aij是 A ∈ R n × n A\in R^{n\times n} A∈Rn×n中的元素,表示第 i i i个Query向量对第 j j j个Key向量的注意力分数。
- 计算Softmax概率分布
- 对注意力分数矩阵 A A A的每一行应用Softmax函数,得到一个概率分布矩阵 P P P。Softmax函数的作用是将注意力分数转换为概率,使得每一行的元素之和为1。
- 公式为: p i j = exp ( a i j ) ∑ j = 1 n exp ( a i j ) p_{ij}=\frac{\exp(a_{ij})}{\sum_{j = 1}^{n}\exp(a_{ij})} pij=∑j=1nexp(aij)exp(aij),其中 p i j p_{ij} pij是 P ∈ R n × n P\in R^{n\times n} P∈Rn×n中的元素,表示第 i i i个Query向量关注第 j j j个Value向量的概率。
- 计算加权和得到输出
- 最后,将概率分布矩阵 P P P与Value向量矩阵 V V V相乘,得到自注意力机制的输出矩阵 O O O。这个输出矩阵包含了对输入序列的重新加权表示,突出了每个位置应该关注的信息。
- 公式为: O = P V O = PV O=PV, O ∈ R n × d v O\in R^{n\times d_v} O∈Rn×dv。
3. 自注意力机制的优势
- 捕捉长距离依赖关系:可以直接计算序列中任意两个位置之间的关系,不受距离限制,这对于理解长序列(如长句子)的语义非常重要。
- 并行计算能力:在计算注意力分数时,不同位置的计算是相对独立的,可以利用现代GPU的并行计算能力,提高计算效率。
- 自适应学习:模型可以根据数据自动学习每个位置应该关注的内容,而不是像一些传统方法需要人工设计特征来捕捉依赖关系。
Transformer结构组成
Transformer是一种基于自注意力机制(Self - Attention Mechanism)的深度学习架构。它主要由多头注意力层(Multi - Head Attention)、前馈神经网络层(Feed - Forward Neural Network)和一些归一化层(Normalization Layers)等组成。
1. 多头注意力层(Multi - Head Attention)
- 概念
- 多头注意力层是Transformer架构的核心组件之一。它包含多个并行的自注意力机制(Self - Attention Mechanism)。每个自注意力机制称为一个“头”,这些头可以从不同的表示子空间中学习特征。
- 例如,假设有8个头,就相当于同时有8个不同的“视角”去关注输入序列,每个头学习到输入序列的一种特征表示。
- 作用
- 丰富特征表示:通过多个头的计算,可以捕捉到输入序列在多个不同维度上的关系。不同的头可能会关注输入序列中的不同部分或不同类型的关系。例如,在自然语言处理中,一个头可能会关注句子中的语法结构,另一个头可能会关注单词之间的语义关联。
- 提高模型表达能力:多个头的组合输出能够提供更丰富、更全面的特征表示,使得模型能够更好地处理复杂的任务。这有助于模型在机器翻译、文本生成等任务中生成更准确、更自然的输出。
- 增加模型的鲁棒性:由于多头注意力从多个角度学习特征,即使其中某些头受到噪声或异常数据的影响,其他头仍然可能正常工作,从而使得整个模型对噪声等干扰因素更具鲁棒性。
2. 前馈神经网络层(Feed - Forward Neural Network)
- 概念
- 前馈神经网络层在Transformer中位于多头注意力层之后。它是一个简单的全连接神经网络,通常包含两个线性变换和一个激活函数(如ReLU)。
- 例如,对于输入维度为 d m o d e l d_{model} dmodel的向量,先通过一个线性变换将其映射到一个中间维度(如 d f f d_{ff} dff),经过激活函数后,再通过另一个线性变换将其映射回 d m o d e l d_{model} dmodel维度。
- 作用
- 特征变换:对多头注意力层输出的特征进行进一步的非线性变换,从而增加模型的非线性表达能力。这种非线性变换有助于模型学习更复杂的函数关系,使得模型能够更好地拟合数据。
- 补充信息处理能力:由于多头注意力层主要关注输入序列内部的关系,前馈神经网络层可以对这些关系进行整合和进一步处理,提取更高层次的特征,从而增强整个模型对输入信息的处理和理解能力。
3. 归一化层(Normalization Layers)
- 概念
- 在Transformer中常用的归一化层是层归一化(Layer Normalization)。它的操作是对每一层的输入数据进行归一化处理,使得数据的均值为0,方差为1。
- 具体来说,对于一个输入向量 x = ( x 1 , x 2 , ⋯ , x n ) x = (x_1,x_2,\cdots,x_n) x=(x1,x2,⋯,xn),计算其均值 μ = 1 n ∑ i = 1 n x i \mu=\frac{1}{n}\sum_{i = 1}^{n}x_i μ=n1∑i=1nxi和方差 σ 2 = 1 n ∑ i = 1 n ( x i − μ ) 2 \sigma^2=\frac{1}{n}\sum_{i = 1}^{n}(x_i - \mu)^2 σ2=n1∑i=1n(xi−μ)2,然后将 x x x转换为 x ^ i = x i − μ σ 2 + ϵ \hat{x}_i=\frac{x_i - \mu}{\sqrt{\sigma^2+\epsilon}} x^i=σ2+ϵxi−μ,其中 ϵ \epsilon ϵ是一个很小的数,用于防止分母为0。
- 作用
- 加速训练:归一化可以使数据分布更加稳定,避免在训练过程中由于梯度消失或梯度爆炸问题导致训练困难。通过使每一层的输入数据保持在一个相对稳定的分布范围内,梯度能够更有效地传播,从而加快模型的训练速度。
- 提高模型稳定性和泛化能力:有助于模型对不同的输入数据保持一致的性能,减少模型对输入数据分布变化的敏感性。这使得模型在面对各种不同的测试数据时,能够更好地发挥其性能,提高泛化能力。
ViT
ViT是指Vision Transformer,是一种基于Transformer架构的图像分类模型.以下是对ViT的具体介绍:
原理
ViT将图像划分为一系列的图像块(patches),并将这些块转换为向量序列,然后通过Transformer的自注意力机制对这些序列进行处理,最后通过全连接层进行分类.
优势
- 全局视野和长距离依赖:引入了Transformer模型的注意力机制,能够对整个图像的全局信息进行建模,可以建立图像中不同区域之间的长距离依赖关系,从而更好地理解图像的结构和语义,这是传统CNN较难做到的,因为CNN主要依赖局部感受野来捕捉特征.
- 可学习的位置编码:通过对输入图像块进行位置编码,将位置信息引入模型中,使得模型可以处理不同位置的图像块,并学习它们之间的位置关系。而CNN在卷积和池化过程中会导致空间信息的丢失,对位置不敏感.
- 数据效率和泛化能力:基于Transformer架构,ViT可以从大量的数据中学习到更丰富、更复杂的图像特征表示,在大规模数据集上展现出出色的泛化能力。相比之下,CNN在小样本数据集上可能需要更多的数据和调优才能取得好的结果.
- 可解释性和可调节性:自注意力机制使ViT在解释模型预测和注意力权重时具有优势,研究人员可以通过分析注意力权重来理解模型关注图像的哪些部分,从而更好地解释模型的决策过程,这对于一些需要可解释性的应用场景非常重要.
局限性
- 计算复杂度高:ViT的计算复杂度相对较高,尤其是在处理高分辨率图像时,其自注意力机制的计算量会随着图像尺寸的增加而急剧增加,导致训练和推理速度较慢,对硬件资源的要求也较高。
- 对数据量需求大:为了充分发挥其性能优势,ViT通常需要大量的训练数据。在数据量不足的情况下,可能无法学习到足够有效的特征表示,导致性能下降。
- 局部特征捕捉能力相对较弱:虽然ViT能够捕捉全局信息,但对于图像中的局部细节特征的捕捉能力可能不如CNN。在一些对局部特征要求较高的任务中,如细粒度图像分类、目标检测中的小目标检测等,可能需要结合CNN或其他方法来增强局部特征的提取能力.