Faster R-CNN
- 输入:RGB 图像
- 输出:
- RPN 阶段:生成候选框
- 检测阶段:每个框的类别概率 + 最终框坐标
- 特点:
- 属于两阶段目标检测
- 精度较高,但速度相对较慢
- 对超参数(anchor、阈值等)比较敏感
GloVe
1. 输入
大量纯文本语料(文章、句子、对话等)。
2. 输出
每个单词对应一个固定长度的数字向量(词向量),比如:
- 国王 → [0.2, -0.5, 0.1, …, 0.3]
- 女王 → [0.1, -0.4, 0.2, …, 0.4]
向量能直接表示语义:意思越近的词,向量越像。
3. 核心特点
- 把单词变成可计算的向量
- 语义准确:支持
国王-男人+女人 ≈ 女王 - 全局统计+局部上下文结合,效果稳定
4. 优点
✅ 语义效果好,比 Word2Vec 更稳定
✅ 现成预训练模型多,直接下载就能用
✅ 适合大多数 NLP 任务,通用性强
✅ 训练快、资源消耗适中
5. 缺点
❌ 无法处理一词多义(比如 “bank” 银行/河岸只有一个向量)
❌ 必须预先训练,不能动态更新新词
❌ 比简单词袋模型占用稍多资源
6. 什么时候用它最好?
优先选 GloVe 的场景:
- 做文本分类、情感分析、语义相似度
- 需要现成高质量词向量,不想自己训练
- 追求稳定、通用、效果好的基础词表示
- 数据量不大,没法训大模型
不用 GloVe 的场景:
- 做最新大模型(BERT/LLaMA 等自带词向量,不用额外加)
- 极度追求速度、资源极小(用简单词袋)
- 必须处理强烈多义词
总结
- 输入:文本
- 输出:词向量
- 优点:效果稳、通用、现成可用
- 缺点:不支持多义词、静态不可变
- 适合:绝大多数常规 NLP 项目做基础语义表示
Bi-GRU 模型
一、输入
Bi-GRU 本身的真实输入只有一个:
三维张量:(batch_size, seq_len, feature_dim)
- batch_size:批次大小(一次喂多少条序列)
- seq_len:序列长度(每条序列有多少时间步)
- feature_dim:每个时间步的原始特征维度
- 这是数据本身决定的,不是超参数
- 比如:
- 传感器每步 10 个信号 → feature_dim = 10
- 语音每帧 40 维 MFCC → feature_dim = 40
- NLP 中如果已经是词向量 → feature_dim = 向量维度
二、输出
Bi-GRU 有两种标准输出,取决于你怎么用:
输出所有时间步(many-to-many)
- 形状:
(batch_size, seq_len, 2 * hidden_dim) - 含义:每个时间步都输出一个双向隐状态
- 用途:序列标注(NER、分词、帧分类等)
- 形状:
只输出全局汇总(many-to-one)
- 通常取:前向最后时刻 + 后向最后时刻 拼接
- 形状:
(batch_size, 2 * hidden_dim) - 含义:整条序列的整体语义/特征表示
- 用途:文本分类、情感分析、序列级判断
三、模型特点
优点
- 双向上下文建模
同时利用过去→未来和未来→过去的信息,比单向 GRU 强。 - 比 Bi-LSTM 参数量小、速度更快
GRU 只有更新门、重置门,结构更简单。 - 能处理变长序列
天然适合文本、语音、时序等顺序数据。 - 一定程度缓解梯度消失
适合中等长度序列依赖建模。 - 稳定、成熟、易训练
作为 baseline 非常靠谱。
缺点
- 序列必须按时间步串行计算
无法像 CNN/Transformer 那样并行,训练/推理速度较慢。 - 长序列能力有限
距离较远的依赖关系捕捉能力明显弱于 Transformer。 - 无显式位置编码
完全依赖顺序,对乱序不鲁棒。 - 对特别长距离依赖效果一般
超过几百步后效果明显下降。
四、应用场景
✅ 适合用 Bi-GRU 的场景
- 序列长度中等偏短(几十~几百步)
- 需要上下文依赖,但不需要极强长距离建模
- 希望模型轻量、稳定、好部署
- 典型任务:
- 短文本分类 / 情感分析
- 命名实体识别(NER)
- 意图识别、 Slot Filling
- 短时序列预测(传感器、语音帧、行为识别)
❌ 不适合的场景
- 序列特别长(上千/上万步)
- 需要强长距离依赖(如长文档理解、摘要)
- 追求极高并行速度(高并发线上服务)
- 图像、纯图结构数据(更适合 CNN/GNN)
最终极简总结(最严谨版本)
- 输入:
(batch, seq_len, feature_dim),feature_dim 由数据决定 - 输出:要么每步都输出,要么只输出整条序列的向量
- 特点:双向、轻量、稳定,但长序列 & 并行弱
- 适用:中等长度、需要上下文、轻量场景
- 不适用:超长序列、强长依赖、高并发速度优先场景
BERT 模型
一、输入
BERT 的输入是一段/两段文本,内部会自动做三件事(你调用时一般不用自己处理):
- 分词(WordPiece)
- 加上特殊标记:
[CLS]:句首,用来做分类/句子级特征[SEP]:句子分隔符(单句1个,句对2个)
- 三种嵌入相加:
- 词嵌入(Token Embedding)
- 分段嵌入(Segment Embedding,区分句A/句B)
- 位置嵌入(Position Embedding)
你实际使用时:
- 直接丢中文/英文句子/短文进去就行
- 常见上限:最大长度 512 token(≈300–400 汉字)
二、输出
常用有两类输出:
[CLS]对应的向量- 代表整段文本的语义向量
- 用于:文本分类、情感分析、句子相似度、意图识别
每个 token 对应的向量
- 用于:序列标注类任务
- 命名实体识别(NER)
- 分词、词性标注
- 槽位填充
- 用于:序列标注类任务
三、核心特点
优点
- 双向理解上下文
- 比老式单向 RNN/LSTM/Word2Vec 语义强很多
- 通用强
- 一个预训练模型,稍微微调就能做几乎所有 NLP 任务
- 中文效果好
- 有官方中文版、RoBERTa-wwm、ERNIE 等优质中文版本
- 生态成熟
- Hugging Face Transformers 一行调用
- 大量开源微调好的模型
缺点
- 速度慢、耗资源
- 层数多(base 12层,large 24层)
- 不适合超高并发、低延迟场景(如实时对话、高QPS接口)
- 长文本能力弱
- 原生最大只支持 512 token
- 长文档(整篇文章/小说)直接用效果差
- 不能自然生成文本
- BERT 是Encoder 结构,不是生成模型
- 不能用来写文章、写诗、对话回复
四、应用场景
✅ 适合用 BERT 的场景
- 文本分类(情感分析、垃圾邮件识别、意图分类)
- 句子相似度 / 语义匹配(检索、问答匹配)
- 实体识别、关键词抽取、槽位填充
- 短文本理解(评论、标题、对话、短句)
一句话:
短文本、需要深度语义理解、不是超高并发的任务 → 首选 BERT 系
❌ 不适合用 BERT 的场景
需要生成文本
- 写文案、对话回复、续写、翻译
→ 用 GPT、T5、LLaMA 等Decoder/Encoder-Decoder模型
- 写文案、对话回复、续写、翻译
超高并发、极低延迟
- 每秒几千上万请求
- 要求几毫秒内返回
→ 用轻量模型:TextCNN、RNN、DistilBERT、TinyBERT
处理极长文本
- 整篇论文、书籍、长文档
→ 用长文本模型:Longformer、BigBird 或分段处理
- 整篇论文、书籍、长文档
简单规则就能搞定
- 纯关键词匹配、简单正则
→ 没必要上 BERT
- 纯关键词匹配、简单正则
极简使用建议
- 做分类/匹配/理解 → 用 BERT/RoBERTa 中文版本
- 做生成/续写/对话 → 绝对不要用 BERT
- 追求速度 → 用 DistilBERT 等轻量化版本
- 文本特别长 → 分段或换长文本模型