CNN和Transfomer介绍

文章目录

  • 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或其他方法来增强局部特征的提取能力.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构练习题】栈与队列

栈与队列 选择题括号匹配逆波兰表达式求值出栈入栈次序匹配最小栈设计循环队列面试题1. 用队列实现栈。[OJ链接](https://leetcode.cn/problems/implement-stack-using-queues/solutions/)2. 用栈实现队列。[OJ链接](https://leetcode.cn/problems/implement-queue-using-stack…

python 定时任务管理封装

主逻辑代码 # -*- coding: utf-8 -*- # import apscheduler import pandas as pd from datetime import datetime # 导入调度器,此处使用BackgroundScheduler阻塞调度器 from apscheduler.schedulers.background import BackgroundScheduler # 导入触发器&#xf…

MaxKB基于大语言模型和 RAG的开源知识库问答系统的快速部署教程

1 部署要求 1.1 服务器配置 部署服务器要求: 操作系统:Ubuntu 22.04 / CentOS 7.6 64 位系统CPU/内存:4C/8GB 以上磁盘空间:100GB 1.2 端口要求 在线部署MaxKB需要开通的访问端口说明如下: 端口作用说明22SSH安装…

LCAN-FOBR设备在风力发电项目的消防通讯中的使用

LCAN-FOBR设备在风力发电项目的消防通讯中的使用 在风力发电项目中,所有的风机内部的状态都需要能够在中控室备被监控到,不论是风机的工作状态还是风机内部的消防状态,以便中控室的工作人员都够根据观测到的信息及时的做出反应,避…

Linux扩展——shell编程

前置&#xff1a;Linux基础及命令复习 目录 shell概述Shell脚本入门案例 sh bash ./ . source 变量系统预定义变量 $HOME $PWD $SHELL等自定义变量 unset readonly补充&#xff1a;开启子Shell进程的常见方法 (...) $(...) ... <(...) >(...) 特殊变量 $n $# $* $ $&…

计算机网络-GRE Over IPSec实验

一、概述 前情回顾&#xff1a;上次基于IPsec VPN的主模式进行了基础实验&#xff0c;但是很多高级特性没有涉及&#xff0c;如ike v2、不同传输模式、DPD检测、路由方式引入路由、野蛮模式等等&#xff0c;以后继续学习吧。 前面我们已经学习了GRE可以基于隧道口实现分支互联&…

【运维笔记】向日葵远程:输入法大写无法切换至小写

项目场景&#xff1a; 向日葵&#xff1a;远程客户电脑ubuntu系统 客户电脑&#xff1a;windows 10 &#xff0c;并安装向日葵 服务器&#xff1a;ubuntu系统 问题描述 维护ubuntu时突然无法切换成小写&#xff0c;导致无法运维 原因分析&#xff1a; 大写键被锁住 解决方案…

「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件

本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息&#xff0c;页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。 关键词 UI互动应用天气预报数据绑定动态展示状态管理 一、功能说明 自定义…

AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航

作者&#xff1a;Gengze Zhou, Yicong Hong, Qi Wu 单位&#xff1a;阿德莱德大学&#xff0c;澳大利亚国立大学 论文链接&#xff1a; NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models &#xff08;https://ojs.aaai.org/index.p…

react杂乱笔记(一)

程序“npx”无法运行: 找不到应用程序所在位置 行:1 字符: 1 解决方法; 不要在vscode中执行命令,在cmd 中可以执行 Module not found: Error: Cant resolve web-vitals in D:\learn\react-basic\src ERROR in ./src/reportWebVitals.js 5:4-24 Module not found: Error: Cant…

【计算机视觉】opencv-停车位检测原理及代码演示

概述 本文介绍了一种基于OpenCV库的停车场空位检测方法。通过本项目演示&#xff0c;可以对opencv库有更深刻的理解。文章详细阐述了检测原理、算法流程以及代码实现。 一、原理介绍 基于OpenCV的停车位检测原理涉及多个图像处理步骤&#xff0c;以下将结合相关公式详细介绍每…

华为认证考试模拟题测试题库(含答案解析)

你还在为华为认证数通考试的备考而烦恼吗&#xff1f; 还在纠结如何高效复习&#xff0c;掌握考点吗&#xff1f; 腾科IT教育为广大考生提供了华为认证考试模拟题库&#xff0c;让你在考试前轻松应对各种题型&#xff0c;提升做题能力与考试信心&#xff01; 【单选题】 PPP…

序列化和反序列化(一)

因为通过这段时间的学习&#xff0c;发现&#xff0c;序列化和反序列化的考点和漏洞在平时遇到的还是比较多的&#xff0c;而且自己也没有特别去学习过这个知识点&#xff0c;所以在这里写一篇关于这里序列化和反序列话的博客&#xff0c;废话就停止在这里了。 在介绍具体的序列…

优雅草央千澈-关于蓝湖如何快速的标注交互原型是如何使用的-如何使用蓝湖设计交互原型和整个软件项目的流程逻辑-实践项目详细说明

优雅草央千澈-关于蓝湖如何快速的标注交互原型是如何使用的-如何使用蓝湖设计交互原型和整个软件项目的流程逻辑-实践项目详细说明 问题背景 我们ui设计师在设计完整套ui的时候一般要标注原型&#xff0c;但是如果ui对项目整体理解不够深刻的时候&#xff0c;一般就产品经理需要…

三维测量与建模笔记 - 7.3 表面建模概念和方法

基本概念 当我们通过3D扫描设备对物体进行扫描后&#xff0c;会得到三维点云&#xff0c;通过表面建模&#xff0c;我们会重建出物体的3D模型。如果想得到完整的物体的3D模型&#xff0c;需要对物体进行多个角度的扫描并通过拼接算法重建。经过处理得到的3D模型&#xff0c;在很…

共模电感的工作原理

共模电感也称为共模扼流线圈&#xff0c;是一种抑制共模干扰的器件&#xff0c;它是由两个尺寸相同&#xff0c;匝数相同的线圈对称地绕制在同一个铁氧体环形磁芯上&#xff0c;形成的一个四端器件。当共模电流流过共模电感时&#xff0c;磁芯上的两个线圈产生的磁通相互叠加&a…

汉塔科技-上网行为管理系统 ping.php 远程命令执行漏洞复现

0x01 产品简介 汉塔科技是一家专注于网络应用软件开发的公司,在网络安全、网络协议分析以及网络数据流控制等领域拥有丰富的经验和雄厚的技术实力。其上网行为管理系统是应用识别丰富、网络安全防护强大的专业设备之一,汉塔科技上网行为管理系统是一款功能强大、应用识别丰富…

图书管理系统5,制作第十天

1. 在Java中&#xff0c;BigDecimal 类提供了多种方法可以用来将其转换为 String 类型。以下是几种常见的方法&#xff1a; 使用 toString() 方法&#xff1a; 这是将 BigDecimal 转换为 String 的最直接的方法。 Java 深色版本 BigDecimal bd new BigDecimal("123.456&…

机器视觉检测相机基础知识 | 颜色 | 光源 | 镜头 | 分辨率 / 精度 / 公差

注&#xff1a;本文为 “keyence 视觉沙龙中机器视觉检测基础知识” 文章合辑。 机器视觉检测基础知识&#xff08;一&#xff09;颜色篇 视觉检测硬件构成的基本部分包括&#xff1a;处理器、相机、镜头、光源。 其中&#xff0c;和光源相关的最重要的两个参数就是光源颜色和…

Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件&#xff0c;”多个图片分开生成多个PDF文件“或者“多个图片合并生成一个PDF文件” 在Linux系统中&#xff0c;使用ImageMagick可以图片格式转换&#xff0c…