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

embedded/2025/2/4 4:50:27/

结论

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.ppmy.cn/embedded/159370.html

相关文章

gradle和maven的区别以及怎么选择使用它们

目录 区别 1. 配置方式 2. 依赖管理 3. 构建性能 4. 灵活性和扩展性 5. 多项目构建 如何选择使用 选择 Maven 的场景 选择 Gradle 的场景 区别 1. 配置方式 Maven&#xff1a; 使用基于 XML 的 pom.xml 文件进行配置。所有的项目信息、依赖管理、构建插件等都在这个文…

Python-基于PyQt5,wordcloud,pillow,numpy,os,sys等的智能词云生成器(最终版)

前言:日常生活中,我们有时后就会遇见这样的情形:我们需要将给定的数据进行可视化处理,同时保证呈现比较良好的量化效果。这时候我们可能就会用到词云图。词云图(Word cloud)又称文字云,是一种文本数据的图片视觉表达方式,一般是由词汇组成类似云的图形,用于展示大量文…

6.进程的使用方式

6.进程的使用方式 **1. 父子进程的关系****2. 进程的终止****3. 僵尸进程和孤儿进程****4. 进程资源回收****5. exec 函数族****6. system 函数****7. 练习与作业****8. 进程的退出状态****9. 进程的清理函数****10. 总结** 1. 父子进程的关系 子进程是父进程的副本&#xff1…

国产之光DeepSeek架构理解与应用分析

目录 初步探索DeepSeek的设计 一、核心架构设计 二、核心原理与优化 三、关键创新点 四、典型应用场景 五、与同类模型的对比优势 六、未来演进方向 从投入行业生产的角度看 一、DeepSeek的核心功能扩展 二、机械电子工程产业中的具体案例 1. 预测性维护&#xff08;Predictive…

用结构加法3ax+1预测第4点的分布

有1个点在19*19的平面上在某种力的作用下运动&#xff0c;轨迹为 共移动了90步&#xff0c;按照&#xff08;0&#xff0c;1&#xff0c;2&#xff0c;3&#xff09;&#xff0c;&#xff08;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff09;&#xff0c;…&#xff0c;&…

TypeScript语言的语法糖

TypeScript语言的语法糖 TypeScript作为一种由微软开发的开源编程语言&#xff0c;它在JavaScript的基础上添加了一些强类型的特性&#xff0c;使得开发者能够更好地进行大型应用程序的构建和维护。在TypeScript中&#xff0c;不仅包含了静态类型、接口、枚举等强大的特性&…

Alibaba开发规范_编程规约之集合框架:最佳实践与常见陷阱

文章目录 引言1. hashCode与equals方法的覆写1.1 规则1.2 解释1.3 代码示例正例反例 2. ArrayList的subList方法2.1 规则2.2 解释2.3 代码示例正例反例 3. Map的keySet、values和entrySet方法3.1 规则3.2 解释3.3 代码示例正例反例 4. Collections类返回的不可变集合4.1 规则4.…

【实践】基于SakuraLLM的离线日文漫画及视频汉化

介绍 LLM 大型语言模型&#xff08;英语&#xff1a;large language model&#xff0c;LLM&#xff09;&#xff0c;也称大语言模型&#xff0c;是由具有大量参数&#xff08;通常数十亿个权重或更多&#xff09;的人工神经网络组成的一类语言模型。在进行语言理解与分析&…