CNN和Transfomer介绍

news2024/12/25 5:10:51

文章目录

  • 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} XRn×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} QRn×dk K ∈ R n × d k K\in R^{n\times d_k} KRn×dk V ∈ R n × d v V\in R^{n\times d_v} VRn×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=dk qikj,其中 a i j a_{ij} aij A ∈ R n × n A\in R^{n\times n} ARn×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} PRn×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} ORn×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 μ=n1i=1nxi和方差 σ 2 = 1 n ∑ i = 1 n ( x i − μ ) 2 \sigma^2=\frac{1}{n}\sum_{i = 1}^{n}(x_i - \mu)^2 σ2=n1i=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或其他方法来增强局部特征的提取能力.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS Pro 3.4新功能3:空间统计新特性,基于森林和增强分类与回归,过滤空间自相关

目录 应用 1:它是相关性还是托布勒第一定律? 应用 2:将空间带入非空间模型 结论 在 ArcGIS Pro 3.4 中,我们在新的空间组件实用程序(Moran 特征向量)工具集中发布了一个新工具 - 从字段过滤空间自相关。…

webserver log日志系统的实现

参考博客:https://blog.csdn.net/weixin_51322383/article/details/130474753 https://zhuanlan.zhihu.com/p/721880618 阻塞队列blockqueue 1、阻塞队列的设计流程是什么样的 它的底层是用deque进行管理的 阻塞队列主要是围绕着生产者消费者模式进行多线程的同步和…

深度学习实战之超分辨率算法(tensorflow)——ESPCN

espcn原理算法请参考上一篇论文,这里主要给实现。 数据集如下:尺寸相等即可 针对数据集,生成样本代码preeate_data.py import imageio from scipy import misc, ndimage import numpy as np import imghdr import shutil import os import…

Unity3d 基于UGUI和VideoPlayer 实现一个多功能视频播放器功能(含源码)

前言 随着Unity3d引擎在数字沙盘、智慧工厂、数字孪生等场景的广泛应用,视频已成为系统程序中展示时,不可或缺的一部分。在 Unity3d 中,我们可以通过强大的 VideoPlayer 组件和灵活的 UGUI 系统,将视频播放功能无缝集成到用户界面…

WebGAL 项目下载及安装教程

WebGAL 项目下载及安装教程 WebGAL A brand new web Visual Novel engine | 全新的网页端视觉小说引擎 [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/web/WebGAL 1、项目介绍 WebGAL 是一个全新的网页端视觉小说引擎,旨在提供美观、功能强大且易于…

虚幻引擎是什么?

Unreal Engine,是一款由Epic Games开发的游戏引擎。该引擎主要是为了开发第一人称射击游戏而设计,但现在已经被成功地应用于开发模拟游戏、恐怖游戏、角色扮演游戏等多种不同类型的游戏。虚幻引擎除了被用于开发游戏,现在也用于电影的虚拟制片…

Kubernetes 架构图和组件

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计&#xf…

GESP2024年12月认证C++五级( 第三部分编程题(2))

参考程序&#xff1a; #include<bits/stdc.h> using namespace std; #define ll long long int n, m; int cnt[1010]; vector<int> cs[1010]; ll calc(int aim) {int cur_cnt cnt[1];ll res 0;vector<int> tmp;for (int i 2; i<n; i){int buy max((…

基于DockerCompose搭建Redis主从哨兵模式

linux目录结构 内网配置 哨兵配置文件如下&#xff0c;创建3个哨兵配置文件 # sentinel26379.conf sentinel26380.conf sentinel26381.conf 内容如下 protected-mode no sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 60000 s…

npm error code ETIMEDOUT

参考:https://blog.csdn.net/qq_38572963/article/details/142052986 二、解决办法 1、清空缓存 npm cache clean --force 2、查看当前的npm镜像设置 npm config get registry 3、切换新镜像源 npm config set registry https://registry.npmmirror.com 4、查看新源是否设置成功…

【终端工具】FinalShell v4.5.12 官方版

1.下载地址 【终端工具】FinalShell v4.5.12 官方版 2.简介 FinalShell是一款免费的跨平台远程管理工具&#xff0c;专为开发者和运维人员设计。它支持通过 SSH、SFTP 等方式连接到 Linux 和 Windows 服务器&#xff0c;提供类似于终端的操作界面。除了常规的远程登录功能&a…

微前端qiankun的使用——实践

qiankun 创建主应用项目——vue2 main.js注册子应用 $ yarn add qiankun # 或者 npm i qiankun -Simport { registerMicroApps, start } from qiankun; import Vue from "vue"; import App from "./App.vue"; import router from "./router"; …

ansible play-book玩法

使用ansible-playbook实现安装nginx_ansible 安装nginx-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞14次&#xff0c;收藏19次。本文详细介绍了如何在Linux环境中准备Ansible环境&#xff0c;包括配置主机、下载和安装Ansible&#xff0c;以及使用yum模块和tar包源码安装Nginx…

Require:离线部署 Sourcegraph

Sourcegraph 使读取、编写和修复代码变得容易——即使在庞大而复杂的代码库中。 代码搜索&#xff1a;搜索所有分支和所有代码主机的所有存储库。代码智能&#xff1a;导航代码、查找引用、查看代码所有者、跟踪历史记录等。修复和重构&#xff1a;一次对许多存储库进行大规模更…

大数据新视界 -- Hive 集群性能监控与故障排查(2 - 16 - 14)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Windows搭建域控服务器时本地administrator账户密码不符合要求解决办法

cmd命令行执行以下命令&#xff0c;再重试&#xff1a; net user administrator /passwordreq:yesWindows Server 2016 域控服务器搭建教程&#xff1a;https://blog.csdn.net/u010091664/article/details/122072506

【研究生必备|学术会议|高录用|见刊后1个月检索】第三届材料科学与智能制造国际学术会议(MSIM2025)

用处 1. 学术交流 参加学术会议是展示您研究成果和获取反馈的绝佳机会。在会议上&#xff0c;您可以与来自各地的研究者进行深入交流&#xff0c;讨论最新的研究动态与趋势&#xff0c;分享经验与观点。 2. 拓展人脉 学术会议汇聚了来自不同高校和研究机构的优秀学者和学生。…

ubuntu开机进入initramfs状态

虚拟机卡死成功起后进入了initramfs状态&#xff0c;可能是跟文件系统有问题或者检索不到根文件系统&#xff0c;或者是配置错误&#xff0c;系统磁盘等硬件问题导致 开机后进入如下图的界面&#xff0c; 文中有一条提示 要手动fsck 命令修复 /dev/sda1 命令如下 fsck /de…

C# 线程安全集合

文章目录 引言一、ConcurrentBag<T>二、ConcurrentQueue<T>三、ConcurrentStack<T>四、ConcurrentDictionary<TKey, TValue>五、总结引言 在多线程编程环境中,多个线程可能同时访问和操作集合数据。如果使用普通集合,很容易引发数据不一致、错误结果…

S32K324 MCAL中的Postbuild和PreCompile使用

文章目录 前言Postbuild和PreCompile的概念MCAL中配置差异总结 前言 之前一直看到MCAL配置中有这个Postbuild和PreCompile的配置&#xff0c;但是不太清楚这两个的区别和使用方法。最近在使用中出现了相关问题&#xff0c;本文介绍一下MCAL中这两种配置的区别和使用。 Postbu…