当前位置: 首页 > news >正文

【大模型】LLM概念相关问题(中)

1.什么是句法分析?

1.句法分析简介

句法分析(Syntactic Parsing)是自然语言处理中的基础任务之一,旨在识别句子中词语之间的语法关系,构建反映句子结构的语法树。根据分析目标的不同,句法分析可分为两种类型:成分句法分析和依存句法分析。

1. 成分句法分析(Constituency Parsing)

成分句法分析侧重于揭示词语如何组合成短语及句子结构。分析结果通常以短语结构树表示,适用于语法教学、机器翻译等场景。

2. 依存句法分析(Dependency Parsing)

依存句法分析关注词语之间的依赖关系,更贴近语义层面。其分析结果为依存关系图,常用于信息抽取、问答系统等任务,特别适合中文处理。

2.主流句法分析方法

1. 基于规则的方法

早期方法主要依靠人工编写的语法规则,进行结构分析。该方法可解释性强,但在面对复杂语句和语言多样性时缺乏鲁棒性,现已基本淘汰。

2. 基于统计的方法

统计方法依赖人工标注的语料库,通过概率建模句子结构。常见模型包括:

  • PCFG(概率上下文无关文法):用于成分分析,常结合CKY算法进行解析。
  • 最小生成树(MST)模型:用于依存分析,将句子建模为加权图,求解最大依存树。
  • 基于转移系统的方法(Transition-based Parsing):通过一系列动作预测依存结构,效率较高。
3. 基于神经网络的方法

近年来,深度学习方法已成为主流,典型方法包括:

  • BiLSTM + MLP / CRF:通过双向LSTM建模上下文,输出词间依存关系。
  • BERT等预训练语言模型:使用Transformer编码器提取句子表示,再结合分类或图神经网络完成句法预测,显著提升准确率。

2.什么是词向量?

1.词向量的基本原理

词向量的生成通常基于这样一个假设:上下文相似的词语,其语义也相近。因此,通过学习一个词在不同上下文中出现的模式,可以将其表示为一个包含语义信息的向量。训练好的词向量能在向量空间中体现出语义关系,如:
vec(“国王”) - vec(“男人”) + vec(“女人”) ≈ vec(“女王”)

2.主流词向量方法

词向量的发展经历了从浅层模型到深层预训练模型的演进。以下是当前主流的几类方法:

1. 基于统计的方法
(1)TF-IDF(Term Frequency–Inverse Document Frequency)
  • 不是严格意义上的“词向量”,但可以看作词的数值表示方式。
  • 基于词频与逆文档频率构建稀疏向量。
  • 缺点:维度高、稀疏,不能表达词语之间的语义关系。
(2)LSA(Latent Semantic Analysis)
  • 基于共现矩阵和奇异值分解(SVD)生成词向量。
  • 具有一定的语义表示能力,但维度固定,缺乏上下文建模能力。
2. 基于预测的浅层神经网络方法
(1)Word2Vec
  • Google 提出的模型,包括 CBOW(上下文预测当前词)和 Skip-gram(当前词预测上下文)。
  • 输出为稠密的低维词向量,能较好反映词语的语义关系。
  • 缺点:每个词只有一个向量,不能区分词义(如“苹果”表示公司还是水果)。
(2)GloVe
  • Stanford 提出的模型,结合了全局词频(统计信息)与局部上下文信息。
  • 相较于 Word2Vec,在某些任务中更稳定,但仍为静态词向量。
3. 基于上下文的深层神经网络方法(上下文敏感)
(1)ELMo(Embeddings from Language Models)
  • 使用双向LSTM语言模型生成词向量。
  • 每个词的表示会根据上下文动态变化,解决了词义歧义问题。
(2)BERT Embedding
  • 基于Transformer的预训练模型,能为词提供上下文相关的动态表示。
  • BERT不是专为词向量而设计,但其Token Embedding被广泛用作高质量的上下文词表示。
  • 适用于几乎所有下游NLP任务。

3.Bert的特点?

  • 双向建模
    与传统的语言模型只能从左到右(或右到左)建模不同,BERT使用双向Transformer编码器,同时考虑词语左右两侧的上下文,提高理解效果。
  • 预训练+微调框架:
    • 预训练任务
      • MLM(Masked Language Model):随机遮盖部分词,预测被遮盖的词。
      • NSP(Next Sentence Prediction):判断两个句子是否为连续句。
    • 微调:将预训练好的BERT模型应用于具体任务(如分类、问答、NER等),只需增加少量特定层并微调。
  • 通用性强
    BERT可以迁移到多种NLP任务中,并在多个任务上刷新了当时的最佳性能。

4.Batch Norm和Layer Norm?

1. Batch Norm(批量归一化)

核心思路
  • 对一整个小批量(batch)里的同一维度特征做归一化
  • 具体来说:假设网络某一层的输出是一个形状为 (batch_size, features) 的矩阵,那么 Batch Norm 会对每一列(即每个特征维度)分别计算该维度在整个 batch 中的均值和方差,再用它们对该列的数据做归一化。
类比

想象你在给一班学生测身高(feature)。如果直接比较他们的身高,相差很大,影响你对成绩(后续学习)的判断;Batch Norm 的做法就像是:先统计这批学生的平均身高和标准差,再把每个学生的身高转换成“离平均身高多少个标准差”的值,让“身高”这个特征在这一班里都在相似的尺度上。

优点
  • 加快收敛:减轻了“内部协变量偏移”(Internal Covariate Shift),梯度更新更稳定。
  • 能起到轻微正则化作用:有时能提高模型的泛化。
局限
  • 对 batch 大小敏感:batch 太小,估计的均值和方差不稳定;在 RNN、在线学习或少样本场景效果不好。

2. Layer Norm(层归一化)

核心思路
  • 对同一个样本(sample)里所有特征做归一化
  • 假设网络某一层输出是 (batch_size, features),Layer Norm 会对每一行(即一个样本的所有特征)计算均值和方差,再对该行数据做归一化。
类比

还是那群学生测身高——不过现在你关注的是每个学生的所有身体指标(身高、体重、臂展……一堆 feature)。Layer Norm 就是对每个学生,先算出他自己的所有指标的平均和差异,再把这些指标都归一到同一尺度,这样比较不同种类的指标(特征)时,也不会因量纲差别太大而影响后续判断。

优点
  • 不依赖 batch:即使 batch 大小为 1,也能正常工作;非常适合 RNN 和 Transformer 等场景。
  • 计算简单、顺序无关:尤其在序列模型里,不会受序列长度或时间步长影响。
局限
  • 对跨样本的分布差异无法归一化:它只关注每个样本内部特征,不能减少不同样本间的统计差异。

5.使用BERT预训练模型为什么最多只能输入512个词?

  1. 位置(Positional)编码的固有设计

    • Transformer 本身不具备处理序列顺序的机制,需要给每个位置加上位置编码(Position Embedding)。
    • 在原始 BERT 实现中,位置编码矩阵的大小是固定的:0,1,2,…,5110,1,2,…,511 共 512 个位置,每个位置对应一个向量。这些向量是在预训练阶段一并学习得到的。
    • 如果要支持更长的序列,就需要重新初始化并重新预训练这一套位置编码,否则模型无法正确理解序列中第 512 之后的位置含义。
  2. 计算和内存开销呈平方增长

    • Transformer 的多头自注意力机制需要对序列中所有 token 两两计算注意力权重,计算复杂度和内存消耗是 O ( L 2 ) O(L^2) O(L2),其中 L L L是序列长度。
    • 当输入长度翻倍时,注意力矩阵的规模是原来的四倍,所需显存和算力也随之快速上涨。512 是一个在显存、算力和效果之间折中的“工业常见”上限。
  3. 预训练时的资源与效率权衡

    • BERT 在大规模语料(如 Wikipedia + BookCorpus)上进行预训练,输入长度越长,训练速度越慢,需要的 GPU/TPU 资源和存储也越大。
    • 选择 512 既能覆盖绝大多数自然语言短文(99%以上的句子对长度小于 512 token),又保证了训练和推理效率可控。
  4. 下游任务场景的通用性

    • 512 token(约 384–512 字左右)已经足够覆盖大多数单句或双句的分类、问答取 span、序列标注等任务。
    • 对于需要处理更长文本(如全文检索、长文档摘要),社区一般采用滑动窗口层次化模型(Hierarchical BERT)或专用的长序列 Transformer(如 Longformer、BigBird)来解决,而不是直接扩展原始 BERT 的位置编码。

6.为什么说ELMO是伪双向,BERT是真双向?

特性ELMo(伪双向)BERT(真双向)
架构两条独立单向 LSTM → 输出拼接多层 Transformer 自注意力 → 同层直接双向融合
信息流动前向不见后文;后向不见前文每层都同时见前文和后文
预训练目标基于语言模型(LM)分别训练前向和后向Masked LM,遮蔽位置同时利用左右文预测
优势相对简单;可在不同层级拼接多层输出高频率、全层次的双向交互,效果更强;预训练任务更加针对双向

7.BERT和Transformer Encoder的差异有哪些?

  • 架构核心相同:二者都基于多层自注意力 Encoder。
  • 输入设计不同:BERT 增加了 WordPiece、位置学习、Segment Embedding、特殊 Token、Attention Mask 等。
  • 预训练任务不同:原始 Transformer 没定义预训练;BERT 用 MLM + NSP 实现深度双向和句间建模。
  • 使用方式差异:Transformer Encoder 需从零构建;BERT 则是“预训练模型 + 下游微调”高效复用。

8.MLM任务,对于在数据中随机选择 15% 的标记,其中80%被换为[mask],10%不变、10%随机替换其他单词,原因是什么?

1. 降低 Pre-train / Fine-tune 差异

  • 问题:在预训练阶段,80% 的选中 token 都被替换成了特殊的 [MASK],但在下游微调(fine-tune)和实际推理时,文本中是没有 [MASK] 标记的。
  • 解决方案
    • 10% 保持原 token:令模型在上下文完整的情况下也要对原 token 得到高置信度,从而减轻“训练时总见到 [MASK],推理时却永远见不到 [MASK]”这种分布差异带来的性能下降。

2. 强化对上下文的鲁棒理解

  • 纯 [MASK] 会让模型走捷径:如果永远把选中 token 全部变成 [MASK],模型可能只学“遇到 [MASK] 就去查词表里最频繁的那个词”,而不是真正去综合左右文推断。
  • 10% 随机替换:用一个完全不相关的词替换,逼迫模型不仅要学会识别 [MASK],还要学会判断“这个词放在这里合不合理”,增强对上下文的敏感度和分辨能力。

3. 综合训练信号,提升表示质量

掩码方式百分比作用
[MASK] 替换80%明确告诉模型“这里需要你去预测原词”,是核心的 MLM 任务信号
保持原 token10%给模型“看到真实词也要能解释上下文”的正例,缩小预训练与下游的差距
随机替换10%提供“错误词”的负例,教模型更好地判断上下文,并防止对 [MASK] 过拟合
  • 80%→[MASK]:提供最直接的“填空”监督,让模型学会用左右文推断缺失信息。
  • 10%→原 token:让模型也能在上下文完整的情况下为“已知词”产生高概率,减轻下游无 [MASK] 场景的分布偏移。
  • 10%→随机 token:制造误导性噪声,逼使模型更深层次地理解语义,而不是走“看到 [MASK] 就猜高频词”或“看到原词就一味复制”的捷径。
http://www.xdnf.cn/news/450325.html

相关文章:

  • day014-服务管理
  • Python机器学习笔记(二十二、模型评估-交叉验证)
  • 润金店发布“爱有千斤重“30周年限定爱意礼盒:以东方美学诠释爱的重量
  • elementplus el-tree 二次封装支持配置删除后展示展开或折叠编辑复选框懒加载功能
  • js对象原型,原型链
  • 制作一款打飞机游戏48:敌人转向
  • 嵌入式学习笔记 D20 :单向链表的基本操作
  • 3DMAX脚本病毒Spy CA查杀方法
  • 计算机网络笔记(二十八)——4.10软件定义网络SDN简介
  • 【0415】Postgres内核 释放指定 memory context 中所有内存 ④
  • 5.14 BGP作业
  • Linux操作系统实战:进程创建的底层原理(转)
  • 朱老师, 3518e系列,第三季
  • 【Python】杂乱-[代码]Python 替换字符串中相关字符的方法
  • 容器安全-核心概述
  • OpenCV人脸识别LBPH算法原理、案例解析
  • Codeforces Round 1003 (Div. 4)
  • 分布式一致性协议Raft
  • 动物乐园-第16届蓝桥第5次STEMA测评Scratch真题第5题
  • 11-SGM41299-TEC驱动芯片--40℃至+125℃-3A
  • 1. Go 语言环境安装
  • 数据清洗的艺术:如何为AI模型准备高质量数据集?
  • 《Python星球日记》 第71天:命名实体识别(NER)与关系抽取
  • 拓展篇、github的账号创建
  • Oracle中的select1条、几条、指定范围的语句
  • 【证书与信任机制​】证书透明度(Certificate Transparency):如何防止恶意证书颁发?​​
  • 【1000以内具有12个以上因子的整数并输出它的因子】2021-12-27
  • 如何在Mac电脑上的VScode去配置C/C++环境
  • 生成式AI:人工智能的新纪元
  • 请求内存算法题