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个词) -
简单词嵌入+全连接的缺陷:
全连接层需要固定维度的输入和输出,无法处理变长序列。 -
编码器-解码器的优势:
-
编码器可处理任意长度的输入序列,将其压缩为固定长度的上下文向量(
hidden和cell)。 -
解码器基于上下文向量逐步生成变长的输出序列(逐词生成,直到预测到
<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=5,embedding_dim=256→ 输入维度1280)。 -
输出:直接映射到目标语言的词表(如
vocab_size=10000),参数量为1280×10000 = 12.8M。 -
问题:
-
无法处理长度变化的输入输出。
-
无法建模词序和长距离依赖。
-
参数量大且难以训练。
-
方案2:编码器-解码器(LSTM)
-
编码器:LSTM逐步处理源序列,输出上下文向量(如
hidden_dim=256)。 -
解码器:LSTM基于上下文向量逐词生成目标序列。
-
参数量:编码器和解码器的LSTM参数量均为
4×(256+256)×256 ≈ 1M,总计约2M。 -
优势:
-
处理变长序列。
-
建模词序和长距离依赖。
-
参数量小且高效。
-
总结
编码器-解码器结构通过分步编码和解码,解决了以下核心问题:
-
时序依赖性:保留词序信息。
-
变长序列处理:动态生成输出。
-
长距离依赖建模:通过LSTM或注意力机制捕捉全局关系。
-
语义压缩与传递:生成紧凑的上下文表示。
-
模型效率:参数共享降低计算成本。
相关文章:
NLP模型大对比:Transformer >Seq2Seq > LSTM > RNN > n-gram
结论 Transformer 大于 传统的Seq2Seq 大于 LSTM 大于 RNN 大于 传统的n-gram n-gram VS Transformer 我们可以用一个 图书馆查询 的类比来解释它们的差异: 一、核心差异对比 维度n-gram 模型Transformer工作方式固定窗口的"近视观察员"全局关联的&q…...
DeepSeek部署教程(基于Ollama)
虽说在过年,但不能忘了学习。这几天科技圈最火的莫过于deepseek,我抽空也学习一下deepseek的部署过程,主要还是因为官方服务已经彻底瘫了[手动狗头]。 1、下载Ollama并安装 https://github.com/ollama/ollama/releases/latest/download/Oll…...
Java基础面试题总结(题目来源JavaGuide)
问题1:Java 中有哪 8 种基本数据类型?它们的默认值和占用的空间大小知道不? 说说这 8 种基本数据类型对 应的包装类型。 在 Java 中,有 8 种基本数据类型(Primitive Types): 基本数据类型关键…...
WPS mathtype间距太大、显示不全、公式一键改格式/大小
1、间距太大 用mathtype后行距变大的原因 mathtype行距变大到底怎么解决-MathType中文网 段落设置固定值 2、显示不全 设置格式: 打开MathType编辑器点击菜单栏中的"格式(Format)"选择"间距(Spacing)"在弹出的对话框中调整"分数间距(F…...
宇宙大爆炸是什么意思
根据宇宙大爆炸学说,宇宙间的一切都在彼此远离,而且距离越远,远离的速度越快。我们只能在地球上观察这种现象,而我们观察到的速度符合如下公式,其中 为哈勃常数, 为距离, 为速度(…...
MotionLCM 部署笔记
目录 依赖项 humanml3d: sentence-t5-large 下载数据: 报错:No module named sentence_transformers 继续报错:from transformers.integrations import CodeCarbonCallback 解决方法: GitHub - Dai-Wenxun/Moti…...
VLLM性能调优
1. 抢占 显存不够的时候,某些request会被抢占。其KV cache被清除,腾退给其他request,下次调度到它,重新计算KV cache。 报这条消息,说明已被抢占: WARNING 05-09 00:49:33 scheduler.py:1057 Sequence gr…...
ESP32-S3模组上跑通esp32-camera(39)
接前一篇文章:ESP32-S3模组上跑通esp32-camera(38) 一、OV5640初始化 2. 相机初始化及图像传感器配置 上一回继续对reset函数的后一段代码进行解析。为了便于理解和回顾,再次贴出reset函数源码,在components\esp32-camera\sensors\ov5640.c中,如下: static int reset…...
Linux《基础指令》
在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识;因此本篇指令和基础知识的…...
9.进程间通信
9.进程间通信 **1. 进程间通信(IPC)概述****2. 无名管道(Pipe)****3. 有名管道(FIFO)****4. 信号通信(Signal)****5. 练习与作业****6. 信号的应用****7. 总结** 1. 进程间通信&…...
Windows中本地组策略编辑器gpedit.msc打不开/微软远程桌面无法复制粘贴
目录 背景 解决gpedit.msc打不开 解决复制粘贴 剪贴板的问题 启用远程桌面剪贴板与驱动器 重启RDP剪贴板监视程序 以上都不行?可能是操作被Win11系统阻止 最后 背景 远程桌面无法复制粘贴,需要查看下主机策略组设置,结果按WinR输入…...
供应链系统设计-供应链中台系统设计(十二)- 清结算中心设计篇(一)
概述 在之前的文章中,我们通过之前的两篇文章中,如下所示: 供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇 供应链系统设计-供应链中台系统设计(十一)- 清结算中心概念片篇 说…...
Vue.js 单页应用(SPA)开发教程:从零开始构建你的第一个项目
单页应用(SPA,Single Page Application)是现代前端开发的主流模式。Vue.js 是一个非常适合构建 SPA 的框架,它通过 Vue Router 实现页面导航,通过组件化开发和状态管理实现复杂的交互功能。本篇教程将带你了解 SPA 的基…...
Linux C openssl aes-128-cbc demo
openssl 各版本下载 https://openssl-library.org/source/old/index.html#include <stdio.h> #include <string.h> #include <openssl/aes.h> #include <openssl/rand.h> #include <openssl/evp.h>#define AES_KEY_BITS 128 #define GCM_IV_SIZ…...
你了解哪些Java限流算法?
大家好,我是锋哥。今天分享关于【你了解哪些Java限流算法?】面试题。希望对大家有帮助; 你了解哪些Java限流算法? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java 中常用的限流算法主要有以下几种,它们广泛应用于处理流量控…...
【漫话机器学习系列】065.梯度(Gradient)
梯度(Gradient) 在数学和机器学习中,梯度是一个向量,用来表示函数在某一点的变化方向和变化率。它是多变量函数的一阶偏导数的组合。 梯度的定义 设有一个标量函数 ,它对 是可微的,则该函数在某一点的…...
BswM(基础软件管理)详解
BswM(基础软件管理)详解 BswM(Basic Software Manager) 是 AUTOSAR BSW 的核心模块之一,负责协调基础软件(BSW)各模块的行为,根据系统状态、规则或事件动态配置其他模块。其设计目标…...
上位机知识篇---GitGitHub
文章目录 前言Git&GitHub是什么?GitGitHub Git和GitHub的区别定位功能使用方式开源协作 Git常用命令操作1. 配置2. 仓库操作3. 文件操作4. 分支与合并5.远程操作6.撤销更改7.查看历史 GitHub常用操作1.创建仓库2.Fork仓库3.Pull Request4.Issue跟踪5.代码审查 G…...
网站快速收录:提高页面加载速度的重要性
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/32.html 网站快速收录中,提高页面加载速度具有极其重要的意义。以下从多个方面详细阐述其重要性: 一、提升用户体验 减少用户等待时间:页面加载速度直接…...
Vue.js组件开发-实现全屏背景图片滑动切换特效
使用 Vue 实现全屏背景图片滑动切换特效的详细步骤、代码、注释和使用说明。 步骤 创建 Vue 项目:使用 Vue CLI 创建一个新的 Vue 项目。准备图片资源:准备好要用于背景切换的图片,并将它们放在项目的合适目录下。编写 HTML 结构࿱…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
