Transformer、RNN (循环神经网络) 和 CNN (卷积神经网络)的区别

我们来详细对比一下 Transformer、RNN (循环神经网络) 和 CNN (卷积神经网络) 这三种在深度学习中极其重要的架构,并通过具体例子说明它们的区别。

核心区别总结:

  1. 处理数据的方式:

    • CNN: 专注于局部特征空间/时间模式。通过卷积核在输入数据(如图像的像素网格、文本的词序列)上滑动,提取局部特征(如边缘、纹理、短语)。

    • RNN: 专注于序列顺序时间依赖性。按顺序处理输入(一个时间步一个时间步),并维护一个隐藏状态来传递之前步骤的信息。擅长建模序列中元素间的时间依赖关系

    • Transformer: 专注于全局依赖关系并行处理。利用自注意力机制 (Self-Attention) 计算序列中所有元素(词/像素/音符)之间的关联强度,无论它们相距多远。能够同时处理整个序列。

  2. 依赖关系建模:

    • CNN: 主要捕获局部依赖关系(邻近元素之间的关系)。通过堆叠层可以捕获更长距离的依赖,但效率较低且路径较长。

    • RNN: 理论上可以捕获任意长度的依赖关系(通过隐藏状态传递)。但实际上,由于梯度消失/爆炸问题,很难有效学习长距离依赖(序列开头的信息很难传递到结尾)。

    • Transformer: 天生擅长建模长距离依赖。自注意力机制允许序列中的任何元素直接关注序列中的任何其他元素,计算它们之间的相关性权重,一步到位。

  3. 并行化能力:

    • CNN: 高度并行化。同一层的不同卷积核可以在输入的不同部分同时计算。

    • RNN: 顺序处理,并行化困难。计算第 t 步必须等待第 t-1 步完成(因为依赖隐藏状态 h_{t-1})。

    • Transformer: 高度并行化。序列中的所有元素都可以通过自注意力机制同时计算其与其他所有元素的关系。

  4. 位置信息处理:

    • CNN: 通过卷积核的滑动隐含地捕获位置信息(局部顺序)。池化操作会丢失精确位置。

    • RNN: 天然地通过处理顺序捕获位置信息(先处理第1个词,再处理第2个词...)。

    • Transformer: 需要显式编码。因为自注意力机制本身是排列不变的(打乱输入顺序,输出关系不变),所以必须通过位置编码 (Positional Encoding) 将元素的顺序信息显式注入到输入嵌入中。

详细举例说明:机器翻译任务 - 将英文句子 "I love you" 翻译成中文 "我爱你"。

假设每个词都被表示为一个向量(词嵌入)。

  1. CNN 的处理方式:

    • 将句子视为一个 1D 网格(词序列)。

    • 使用多个不同宽度的卷积核(比如宽度为 2 和 3)在词序列上滑动。

      • 宽度为2的核:可能捕获到 ("I", "love")("love", "you") 这样的二元组特征。

      • 宽度为3的核:可能捕获到 ("I", "love", "you") 这个三元组特征。

    • 这些卷积核的输出(特征图)会被池化(如最大池化),提取最显著的特征。

    • 这些局部特征被送入后续的全连接层或其他层进行预测。

    • 关键点:

      • CNN 有效地提取了短语级别的局部模式(如 "love you")。

      • 很难直接建模 "I" 和 "you" 之间跨越 "love" 的长距离依赖(主谓关系)。这种关系需要堆叠很多层才能间接捕获。

      • 输出翻译时,模型主要基于它从局部窗口中学到的模式来预测下一个词。

  2. RNN (例如 LSTM/GRU) 的处理方式:

    • 按顺序处理每个词:

      1. 处理 "I":计算隐藏状态 h1 = f(Embedding("I"), h0)h0 通常是零向量)。h1 包含了 "I" 的信息。

      2. 处理 "love":计算隐藏状态 h2 = f(Embedding("love"), h1)h2 包含了 "I""love" 的信息。

      3. 处理 "you":计算隐藏状态 h3 = f(Embedding("you"), h2)h3 包含了 "I""love""you" 的信息。

    • 在解码(生成中文)时,通常使用 h3 作为整个句子的“上下文向量”来初始化解码器,或者解码器在生成每个中文词时都参考 h3 (或编码器的最终状态)。

    • 关键点:

      • RNN 显式地建模了序列顺序"love" 的处理依赖于 "I" 的处理结果 (h1)。

      • 它理论上可以捕获 "I""you" 的关系,因为 h3 包含了所有历史信息。

      • 但是: 在这个短句中是有效的。如果句子非常长(如“The cat that chased the mouse that ate the cheese that... was tired”),"The cat" 的信息在传递到 "was tired" 时,经过多层传递后可能会严重衰减或变形(梯度消失),导致模型难以正确理解主语是谁。

      • 处理是顺序的,无法并行计算 h1, h2, h3

  3. Transformer 的处理方式:

    • 同时输入整个句子 ["I", "love", "you"] 的词嵌入向量,并加上位置编码(例如 sin/cos 函数)来指示每个词的位置(第1个,第2个,第3个)。

    • 核心步骤:自注意力机制

      • 对于序列中的 每个词(Query),计算它与序列中 所有词(Key)的 关联度分数(通过点积或缩放点积)。

      • 将这些分数归一化(Softmax)得到 注意力权重

      • 用这些权重对序列中所有词的 值(Value) 进行加权求和,得到该词的 输出表示

      • 具体到例子:

        • 计算 "I" 的输出:

          • "I" (Query) 会计算与 "I" (Key), "love" (Key), "you" (Key) 的关联度。

          • 可能发现 "I""love" 关系强(主语-动词),与 "you" 关系弱。

          • 加权求和:Output_I = weight_I*Value_I + weight_love*Value_love + weight_you*Value_you。权重 weight_love 最大,所以 Output_I 包含了很强的 "love" 信息。

        • 计算 "love" 的输出:

          • "love" 会计算与 "I", "love", "you" 的关联度。

          • 可能发现与 "I""you" 关系都强(主语-动词-宾语)。

          • Output_love 同时包含了很强的 "I""you" 的信息。

        • 计算 "you" 的输出:

          • "you" 会计算与 "I", "love", "you" 的关联度。

          • 可能发现与 "love" 关系非常强(动词-宾语),与 "I" 关系弱。

          • Output_you 包含了很强的 "love" 信息。

      • 这样,每个词的输出表示都融合了序列中所有其他词的信息,特别是那些与它语义关系密切的词(由注意力权重决定)。

    • 这些经过自注意力增强的表示再送入前馈神经网络进行进一步处理。

    • 在解码时,Transformer 解码器也使用自注意力(只能关注已生成的词)和 编码器-解码器注意力(关注整个源语言序列)来生成目标词。

    • 关键点:

      • 直接建模全局依赖: "I" 的输出直接包含了它最相关的词 "love" 的信息;"love" 的输出同时包含了 "I""you" 的信息。长距离依赖(如 "I""you")通过 "love" 的桥梁作用(或者它们自己直接计算权重)被有效捕获。

      • 高度并行化: 所有词的 Query, Key, Value 计算以及注意力权重的计算都可以同时进行。

      • 位置编码至关重要: 没有它,模型无法区分 "I love you""you love I"

总结表格:

特性CNN (卷积神经网络)RNN (循环神经网络)Transformer
核心机制卷积核、池化循环单元、隐藏状态自注意力机制 (Self-Attention)
擅长建模局部空间/时间模式 (邻近特征)序列顺序、短期依赖全局依赖、长距离依赖
依赖关系范围局部 (通过堆叠层可扩展,效率低)理论上任意,实践中长距离困难任意距离,一步到位
并行化能力 (同层卷积核并行) (顺序依赖隐藏状态)非常高 (序列元素并行计算)
位置信息处理隐含 (通过滑动)天然 (通过处理顺序)显式 (位置编码 Positional Enc.)
主要优势高效提取局部特征,参数共享,平移不变性天然处理序列,建模时间动态强大建模能力,并行高效,长距离依赖
主要劣势捕获长距离依赖效率低、困难梯度消失/爆炸,训练慢 (无法并行),长距离依赖弱计算复杂度高 (O(n²)),需要大量数据
典型应用图像识别、目标检测、短文本分类时间序列预测、简单文本生成、语音识别机器翻译、大语言模型 (LLM)、文本摘要、问答

简单类比:

  • CNN: 像拿着不同放大镜(卷积核)在照片(输入)上局部区域仔细查看,找出特定图案(特征)。

  • RNN: 像一个人逐字阅读句子,一边读一边在便签(隐藏状态)上记下当前的理解,这个理解依赖于之前读过的内容和之前的笔记。句子太长容易忘记开头。

  • Transformer: 像把整个句子铺开在桌上,给每个词都发一个调查问卷,问它:“你觉得这个句子里的每个词对你来说有多重要?” 然后每个词根据收到的所有问卷结果(注意力权重),重新组合一个能反映全局关系的“理解报告”。

总而言之,Transformer 因其强大的全局建模能力和并行性,在处理复杂序列任务(尤其是需要理解长距离依赖的任务如机器翻译、文本理解)上取得了革命性的成功,成为当前大语言模型(LLM)如 GPT、BERT 等的基石架构。CNN 在图像和局部模式识别上依然不可替代。RNN 在特定序列任务(尤其短序列或实时流处理)中仍有应用价值,但其重要性已被 Transformer 大幅超越。

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

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

相关文章

408第二季 - 组成原理 - 数据类型转换

这章内容会比较少 闲聊 如果题目说把8位改成4位,你保留低位就行了 这里保留的是0101 然后是有符号数和无符号数的转换 机器数就是二进制长什么样子 然后就是小数点是不参与存储的 然后简单看看代码 这是short就说明是有符号数 unsigned就是说明是无符号数 然后y…

让 Deepseek 写电器电费计算器(html版本)

以下是一个简单的电器电费计算器的HTML和CSS代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

react_flow自定义节点、边——使用darg布局树状结构

文章目录 ⭐前言⭐引入react-flow⭐自定义节点nodeType⭐自定义边edgeType⭐添加节点⭐inscode代码块⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享 前端 ——react_flow自定义节点、边——使用darg布局树状结构。 自定义效果 可以自定义节点、边、线条流动…

word表格批量转excel,提取表格数据到excel

本文将带你一步步实现一个将 Word 中的表格内容批量提取并转换为 Excel 文件的自动化工具&#xff0c;适用于需要手动复制粘贴数据到excel的场景 假设我们有这样的表格在word中&#xff0c;图片世放在excel中便于截图&#xff0c;现在需要将表格中有颜色的数据提取到对应的exce…

day2课程

1.添加pinia到Vue项目 2.counter基础使用 3.getters和异步action 4.storeToRefs和调试 5.项目初始化和git管理 6.别名路径联想设置 7.elementsPlus自动按需导入配置 这个项目使用的是按需引入 1.安装包管理器 npm install element-plus --save 2.按需引入 npm install -D unp…

Vue3 + TypeScript + Element Plus 设置表格行背景颜色

技术要点&#xff1a; 1、使用 :row-class-name"setRowClassName" 设置表格行类名 2、不能同时使用 stripe 3、设置行类名的样式 应用效果&#xff1a; 同时使用 stripe 出来的效果&#xff1a; 参考代码&#xff1a; ReagentTable.vue <script setup lang&…

山东大学 软件项目管理知识点总结

软件项目管理背诵总结 将老师所发ppt的知识点整理&#xff0c;方便查阅与背诵。 文章目录 软件项目管理背诵总结1. 概述1.1 什么是项目&#xff1f;1.2 项目有那些特征&#xff1f;1.3 项目于日常工作有什么区别&#xff1f;1.4 如何衡量一个项目是否成功&#xff1f;1.5 软件项…

css基础笔记简洁版1

&#x1f4d8; CSS 基础笔记 1 一、CSS 简介 CSS&#xff08;层叠样式表&#xff09;用于为网页添加样式&#xff0c;实现结构与样式分离&#xff0c;能够控制颜色、字体、布局、位置、动画等视觉效果。 二、基本语法 选择器 {属性1: 值1;属性2: 值2; }说明&#xff1a; 选…

reactor模型学习

学习链接 狂野架构师第四期netty视频 - B站视频 狂野架构师训练营6期 - B站视频 Netty学习example示例&#xff08;含官方示例代码&#xff09; LG-Netty学习 【硬核】肝了一月的Netty知识点 - 启动过程写的很详细 Reactor模型讲解 一文搞懂Reactor模型与实现 高性能网络编…

应用探析|千眼狼高速摄像机、sCMOS相机、DIC测量、PIV测量在光学领域的应用

2025&#xff0c;长春&#xff0c;中国光学学会学术大会。中科视界携千眼狼品牌四大科学仪器高速摄像机、sCMOS科学相机、DIC应变测量系统、PIV流场测量系统亮相&#xff0c;在光学领域多个细分研究方向承载科学实验的感知与测量任务。 1先进制造技术及其应用 激光切割、激光焊…

Kafka 4.0.0集群部署

Kafka 4.0.0集群部署 1.1 关闭防火墙和 selinux 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service关闭selinux setenforce 0 #&#xff08;临时生效&#xff09; sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config #&…

探秘卷积神经网络(CNN):从原理到实战的深度解析

在图像识别、视频处理等领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称 CNN&#xff09;如同一位 “超级侦探”&#xff0c;能够精准捕捉图像中的关键信息&#xff0c;实现对目标的快速识别与分析。从医疗影像诊断到自动驾驶中的路况感…

vue3导入xlsx表格处理数据进行渲染

下载插件 npm install -S xlsx import * as XLSX from "xlsx"; // Vue3 版本 <el-upload class"upload-demo"accept".xlsx":http-request"channel":show-file-list"false":limit"1"><el-button type&qu…

生成模型_条件编码器

条件编码器可以采用不同的网络结构&#xff0c;UNet 是其中非常常见的一种&#xff0c;尤其在 Diffusion 和图像生成任务中用得最多。 &#x1f9e0; 什么是“条件编码器”&#xff1f; 在 **条件生成模型&#xff08;Conditional GAN / Diffusion&#xff09;**中&#xff0c…

@Scheduled, @PostConstruct, @PreDestroy, @Async, @OnApplicationEvent

注解名称模块功能引入年份版本是否推荐使用PostConstructjavax.annotation (Java EE) / spring-beansBean 初始化完成后执行的方法2006Java EE 5 / Spring 2.0✔️ 推荐PreDestroyjavax.annotation (Java EE) / spring-beansBean 销毁前执行的方法2006Java EE 5 / Spring 2.0✔…

小程序请求加载提示防闪烁机制详解

目录 一、问题背景&#xff1a;闪烁现象的产生 二、完整解决方案代码 三、核心防闪烁机制解析 1. 请求计数器&#xff08;requestCount&#xff09; 2. 延迟隐藏定时器&#xff08;关键创新&#xff09; 3. 100ms缓冲期的重要意义 四、关键场景对比分析 场景1&#xff…

linux防火墙讲解

目录 安全管理 一、SELinux安全上下文 1、SELinux 简介 2、基础操作命令 1. 查看SELinux状态 2. 切换工作模式* 3、安全上下文&#xff08;Security Context&#xff09; 1. 查看上下文* 2. 修改上下文 chcon命令 semanage 命令 4、SELinux布尔值&#xff08;Boole…

巧用 Python:将 A3 作业 PDF 轻松转为 A4 可打印格式

在孩子的学习过程中&#xff0c;我们常常会遇到这样的困扰&#xff1a;学校老师发的作业是以 A3 格式的 PDF 文件呈现的&#xff0c;然而家里的打印机却只支持 A4 打印。这时候&#xff0c;要是能有一个简单的方法把 A3 的 PDF 转换为 A4 可打印的格式就好了。别担心&#xff0…

Transformer 核心概念转化为夏日生活类比

以下是把 Transformer 核心概念转化为「夏日生活类比」&#xff0c;不用看代码也能秒懂&#xff0c;搭配冰镇西瓜式记忆法&#xff1a; 一、Transformer 夏日冷饮制作流水线 编码器&#xff08;Encoder&#xff09;&#xff1a;相当于「食材处理间」 把输入&#xff08;比如…

【Linux基础知识系列】第二十九篇-基本的网络命令(ping, traceroute, netstat)

在Linux系统中&#xff0c;网络诊断是系统管理员和用户日常工作中不可或缺的一部分。无论是排查网络连接问题、检查网络延迟&#xff0c;还是监控网络状态&#xff0c;掌握一些基本的网络命令至关重要。本文将详细介绍ping、traceroute和netstat这三种常用的网络命令&#xff0…