NLP模型大对比:Transformer >Seq2Seq > LSTM > RNN > n-gram

结论

Transformer 大于 传统的Seq2Seq 大于 LSTM 大于  RNN 大于 传统的n-gram

n-gram VS Transformer

我们可以用一个 图书馆查询 的类比来解释它们的差异:


一、核心差异对比

维度n-gram 模型Transformer
工作方式固定窗口的"近视观察员"全局关联的"侦探"
依赖距离只能看前N-1个词(如3-gram只看前2词)可关注任意距离的上下文
语义理解机械统计共现频率理解词语间的深层关系
典型场景"牛奶要配_" → "饼干"(高频搭配)"牛奶要配_" → "燕麦"(健康概念关联)

二、具体差异拆解

1. 观察范围限制
  • n-gram 像用 望远镜片段观察
    例:处理句子 "虽然价格贵但质量真的好"

    • 3-gram只能看到局部组合:
      ["价格_贵_但", "贵_但_质量", "但_质量_真"]

    • 无法关联首尾的 "价格" 和 "质量" 的对比关系

  • Transformer 像用 全景扫描仪
    通过自注意力机制,让每个词都能关注到句子中所有其他词:

    # "质量"对"价格"的注意力权重可能高达0.7
    # "但"对"虽然"的注意力权重可能达0.6
2. 语义关联能力
  • n-gram 的局限性案例
    输入: "苹果股价大涨,因为新品很甜"

    • 3-gram会错误关联:"新品_很_甜" → 可能预测"西瓜"(高频搭配)

    • 无法发现 "苹果" 在此处指公司而非水果

  • Transformer 的解决方案
    通过上下文注意力权重识别语义:

    "苹果" ← 关注到 "股价" (权重0.8) → 判定为企业  
    "甜"   ← 关注到 "新品" (权重0.3) + "股价" (权重0.6) → 判定为比喻用法
3. 处理新词能力
  • n-gram 的困境
    遇到新词 "元宇宙"

    • 所有包含 "元宇宙" 的n-gram都成为低频组合

    • 导致预测结果不可靠

  • Transformer 的优势
    通过词向量和注意力机制:

    • 即使没出现过 "元宇宙",也能根据词根 "元"+"宇宙"_ 推测其语义

    • 类似处理过 "元数据" 和 "宇宙探索" 的经验

n-gram VS RNN

n-gram 和 RNN 在自然语言处理中是两种截然不同的建模思路,我们可以通过 图书馆管理 的类比来理解它们的核心差异:


一、核心机制对比

维度n-gram 模型RNN 模型
记忆方式固定长度的纸质笔记可延展的电子备忘录
依赖距离只能记住前N-1步(如3-gram记2步)理论上可记忆无限步(实际约50-100步)
计算特征基于统计频次的查表操作基于隐藏状态的动态计算
典型表现"昨天买的_奶茶"→"珍珠"(高频搭配)"昨天买的_奶茶"→"已经变质"(因果推理)

二、工作原理拆解

1. 信息传递方式
  • n-gram 像 接力赛跑
    每个预测只依赖前一棒选手(前N-1个词):

    输入:"我想喝一杯热的"
    3-gram预测流程:
    想喝→杯 → 喝杯→热 → 杯热→的 → 热的→[END]
  • RNN 像 滚雪球
    通过隐藏状态积累历史信息:

    hidden_state = update("我", init_state)
    hidden_state = update("想", hidden_state)
    hidden_state = update("喝", hidden_state)
    # 当处理到"热"时,隐藏状态已包含"我/想/喝"的信息

3. 处理长距离依赖
  • n-gram 的局限案例
    句子:"虽然这款手机价格比同类产品高2000元,但它的_"

    • 5-gram只能看到"产品高2000元但它的"

    • 无法关联开头的"虽然"与结尾的预测

  • RNN 的优势体现
    通过隐藏状态传递,即使相距20个词:

    h_("虽然") → h_("价格") → ... → h_("它的") 
    仍保留着转折关系的语义特征

三、性能对比实验

以 诗歌生成 任务为例:

输入: "春风又绿江南岸"
模型续写结果得分
3-gram"明月何时照我还"(高频组合)合格但缺乏新意
RNN"细雨轻拂柳叶弯"(创新性关联)更具文学性
人类"万物复苏生机盎"标准答案

关键差异

  • n-gram依赖"江南岸"与"明月"的常见搭配

  • RNN捕捉到"春风"与"细雨"的意境关联

RNN/LSTM VS Seq2Seq

在序列到序列(Seq2Seq)任务中(如机器翻译、文本摘要等),直接使用RNN后通过全连接层输出(1 to N)看似简单,但存在以下关键问题,而编码器-解码器(Encoder-Decoder)结构通过分步编码和解码的方式有效解决了这些挑战:

1. 序列的时序依赖性

自然语言中的单词顺序至关重要。例如:

  • 句子1猫追老鼠

  • 句子2老鼠追猫
    两个句子包含相同的词,但含义完全相反。

  • 简单词嵌入+全连接的缺陷
    若直接将所有词嵌入拼接成一个向量(如[猫, 追, 老鼠] → 一个长向量),模型会丢失词序信息,无法区分两个句子的差异。

  • 编码器-解码器的优势
    通过LSTM或Transformer按顺序处理输入词,编码器能够保留词序信息,并在隐藏状态中传递时序依赖关系。

2. 输入和输出的变长问题

在Seq2Seq任务中,输入和输出的长度通常是动态变化的。例如:

  • 输入:英文句子 "Hello world"(2个词)

  • 输出:中文翻译 "你好世界"(3个词)

  • 简单词嵌入+全连接的缺陷
    全连接层需要固定维度的输入和输出,无法处理变长序列。

  • 编码器-解码器的优势

    • 编码器可处理任意长度的输入序列,将其压缩为固定长度的上下文向量(hiddencell)。

    • 解码器基于上下文向量逐步生成变长的输出序列(逐词生成,直到预测到<eos>)。


3. 长距离依赖建模

语言中常存在跨越多个单词的依赖关系。例如:

  • 句子The cat, which was hungry and had been wandering the streets for days, finally found some food.
    主句的主语cat与谓语found相隔很远。

  • 简单词嵌入+全连接的缺陷
    全连接层难以捕捉长距离依赖(尤其是当句子较长时)。

  • 编码器-解码器的优势

    • LSTM通过门控机制(遗忘门、输入门)逐步更新cell状态,传递长期信息。

    • Transformer通过自注意力机制(Self-Attention)直接建模词与词之间的全局依赖。


4. 信息压缩与语义表示

编码器的核心作用是将输入序列编码为一个全局语义表示(上下文向量)。

  • 简单词嵌入+全连接的缺陷
    直接将所有词嵌入拼接为一个向量,缺乏对整体语义的抽象(相当于“词袋模型”)。

  • 编码器-解码器的优势

    • 编码器通过循环或注意力机制逐步融合上下文信息,生成紧凑的语义表示。

    • 解码器基于此表示逐步展开生成目标序列,确保输出与输入语义一致。


5. 模型效率与参数共享

  • 简单词嵌入+全连接的缺陷
    若输入长度为N,输出长度为M,全连接层的参数量为 (N×embedding_dim) × M,随序列长度增长迅速膨胀,导致计算成本高且易过拟合。

  • 编码器-解码器的优势

    • LSTM或Transformer通过参数共享(同一层处理所有时间步),参数量仅与隐藏层维度相关,与序列长度无关。

    • 例如,LSTM的参数量为 4×(embedding_dim + hidden_dim)×hidden_dim,与输入长度N无关。


6. 实际案例对比

假设用两种模型处理机器翻译任务:

方案1:简单全连接
  • 输入:将源句子所有词嵌入拼接为一个向量(如N=5embedding_dim=256 → 输入维度1280)。

  • 输出:直接映射到目标语言的词表(如vocab_size=10000),参数量为 1280×10000 = 12.8M

  • 问题

    • 无法处理长度变化的输入输出。

    • 无法建模词序和长距离依赖。

    • 参数量大且难以训练。

方案2:编码器-解码器(LSTM)
  • 编码器:LSTM逐步处理源序列,输出上下文向量(如hidden_dim=256)。

  • 解码器:LSTM基于上下文向量逐词生成目标序列。

  • 参数量:编码器和解码器的LSTM参数量均为 4×(256+256)×256 ≈ 1M,总计约2M

  • 优势

    • 处理变长序列。

    • 建模词序和长距离依赖。

    • 参数量小且高效。


总结

编码器-解码器结构通过分步编码和解码,解决了以下核心问题:

  1. 时序依赖性:保留词序信息。

  2. 变长序列处理:动态生成输出。

  3. 长距离依赖建模:通过LSTM或注意力机制捕捉全局关系。

  4. 语义压缩与传递:生成紧凑的上下文表示。

  5. 模型效率:参数共享降低计算成本。

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

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

相关文章

登录认证(5):过滤器:Filter

统一拦截 上文我们提到&#xff08;登录认证&#xff08;4&#xff09;&#xff1a;令牌技术&#xff09;&#xff0c;现在大部分项目都使用JWT令牌来进行会话跟踪&#xff0c;来完成登录功能。有了JWT令牌可以标识用户的登录状态&#xff0c;但是完整的登录逻辑如图所示&…

【R语言】R语言安装包的相关操作

一、管理R语言安装包 1、安装R包 install.packages() 2、查看已安装的R包 installed.packages() 3、更新R包 update.packages() 4、卸载R包 remove.packages() 二、加载R语言安装包 打开R语言时&#xff0c;基础包&#xff08;base包&#xff09;会自动被加载到内存中…

Vue指令v-on

目录 一、Vue中的v-on指令是什么&#xff1f;二、v-on指令的简写三、v-on指令的使用 一、Vue中的v-on指令是什么&#xff1f; v-on指令的作用是&#xff1a;为元素绑定事件。 二、v-on指令的简写 “v-on&#xff1a;“指令可以简写为”” 三、v-on指令的使用 1、v-on指令绑…

javaEE-8.JVM(八股文系列)

目录 一.简介 二.JVM中的内存划分 JVM的内存划分图: 堆区:​编辑 栈区:​编辑 程序计数器&#xff1a;​编辑 元数据区&#xff1a;​编辑 经典笔试题&#xff1a; 三,JVM的类加载机制 1.加载: 2.验证: 3.准备: 4.解析: 5.初始化: 双亲委派模型 概念: JVM的类加…

物业管理系统源码提升社区智能化管理效率与用户体验

内容概要 物业管理系统源码是一种针对社区管理需求而设计的软件解决方案&#xff0c;通过先进的智能化技术&#xff0c;使物业管理变得更加高效和人性化。随着城市化进程的加快&#xff0c;社区的管理复杂性不断增加&#xff0c;而这一系统的推出恰好为物业公司提供了极大的便…

读算法简史:从美索不达米亚到人工智能时代05天气预报

1. 天气预报 1.1. 自古以来&#xff0c;生命就与变幻莫测的天气息息相关 1.1.1. 在很多情况下&#xff0c;只要能提前一天得知天气情况&#xff0c;人类就可以避免灭顶之灾 1.1.2. 公元前2000年&#xff0c;准确预测天气是众神的特权 1.2. 大约在公元前650年&#xff0c;巴…

整形的存储形式和浮点型在计算机中的存储形式

在计算机科学的底层世界里&#xff0c;数据存储是基石般的存在。不同数据类型&#xff0c;如整形与浮点型&#xff0c;其存储方式犹如独特的密码&#xff0c;隐藏着计算机高效运行的秘密。理解它们&#xff0c;是深入掌握编程与计算机原理的关键。 一、整形的存储形式 原码、反…

Python网络自动化运维---批量登录设备

文章目录 目录 文章目录 前言 实验准备 一.批量登录 IP 连续的设备 1.1.1 实验代码 1.1.2 代码分段分解 1.1.3 实验结果验证 二.批量登录 IP 不连续的设备 2.2.1 实验代码 2.2.2 代码分段分解 2.2.3 实验结果验证 前言 在生产环境中&#xff0c;我们通常需要登录多个设备…

selenium记录Spiderbuf例题C03

防止自己遗忘&#xff0c;故作此为记录。 鸢尾花数据集(Iris Dataset) 这道题牵扯到JS动态加载。 步骤&#xff1a; &#xff08;1&#xff09;进入例题&#xff0c;需要找到按钮规律。 flip_xpath: str r"//li/a[onclickgetIrisData({});]" &#xff08;2&…

【C++篇】位图与布隆过滤器

目录 一&#xff0c;位图 1.1&#xff0c;位图的概念 1.2&#xff0c;位图的设计与实现 1.5&#xff0c;位图的应用举例 1.4&#xff0c;位图常用应用场景 二&#xff0c;布隆过滤器 2.1&#xff0c;定义&#xff1a; 2.2&#xff0c;布隆过滤器的实现 2.3&#xff0c; 应…

基于SpringBoot的新闻资讯系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Spring Boot 2 快速教程:WebFlux处理流程(五)

WebFlux请求处理流程 下面是spring mvc的请求处理流程 具体步骤&#xff1a; 第一步&#xff1a;发起请求到前端控制器(DispatcherServlet) 第二步&#xff1a;前端控制器请求HandlerMapping查找 Handler &#xff08;可以根据xml配置、注解进行查找&#xff09; 匹配条件包括…

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…

react-bn-面试

1.主要内容 工作台待办 实现思路&#xff1a; 1&#xff0c;待办list由后端返回&#xff0c;固定需要的字段有id(查详细)、type(本条待办的类型)&#xff0c;还可能需要时间&#xff0c;状态等 2&#xff0c;一个集中处理待办中转路由页&#xff0c;所有待办都跳转到这个页面…

GRN前沿:利用DigNet从scRNA-seq数据中生成基于扩散的基因调控网络

1.论文原名&#xff1a;Diffusion-based generation of gene regulatory network from scRNA-seq data with DigNet 2.出版时间&#xff1a;2024.12.18 3.doi: 10.1101/gr.279551.124 摘要&#xff1a; 基因调控网络&#xff08;GRN&#xff09;在细胞内基因的身份和功能之间…

AnswerRocket:通过 AI 辅助简化分析

AnswerRocket是一家专注于人工智能驱动数据分析和商业智能的领先企业&#xff0c;其核心产品是一款增强型分析平台&#xff0c;旨在通过自然语言处理&#xff08;NLP&#xff09;、机器学习&#xff08;ML&#xff09;和生成式AI技术&#xff0c;简化复杂数据的分析过程&#x…

小程序设计和开发:如何研究同类型小程序的优点和不足。

一、确定研究目标和范围 明确研究目的 在开始研究同类型小程序之前&#xff0c;首先需要明确研究的目的。是为了改进自己的小程序设计和开发&#xff0c;还是为了了解市场趋势和用户需求&#xff1f;不同的研究目的会影响研究的方法和重点。例如&#xff0c;如果研究目的是为了…

我的AI工具箱Tauri版-ZoomImageSDXL全图超清放大TILE+SDXL

本教程基于自研的AI工具箱Tauri版进行ComfyUI工作流ZoomImageSDXL全图超清放大TILESDXL。 ZoomImageSDXL全图超清放大TILESDXL 借助ControlNet的Tile技术与SDXL大模型&#xff0c;该工具能够在放大图像的同时&#xff0c;精准还原细节和纹理&#xff0c;确保输出效果既清晰锐利…

Java设计模式:行为型模式→状态模式

Java 状态模式详解 1. 定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态需要的行为封装在不同的状态类中&#xff0c;实现对象行为的动态改变。该模式的核心思想是分离不同状态…

蓝桥与力扣刷题(234 回文链表)

题目&#xff1a;给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; 输入&…