AI-Agent 面试题汇总 - 自然语言处理篇 (NLP)

1. HMM 原理、主要问题、解决方法

隐马尔可夫模型(HMM)是一个生成式序列模型,包含隐藏状态和观测序列,通过状态转移概率与发射概率描述序列生成过程。主要任务有三类:概率计算(前向后向)、解码(Viterbi)、学习(Baum-Welch)。主要问题包括独立性假设过强、特征表达能力弱、难以利用长距离上下文。常见改进是使用CRF、BiLSTM-CRF、BERT-CRF等判别式或深度模型。

2. fastText 和 word2vec 差异

word2vec核心是学习词向量(CBOW/Skip-gram);fastText在词向量基础上引入子词(n-gram)信息,因此对未登录词、拼写变体、低频词更友好。fastText还能直接做文本分类(层次softmax/负采样),训练速度快、效果稳,工程使用广泛。

3. 介绍一下 GloVe

GloVe(Global Vectors)是基于全局词共现矩阵的词向量方法,通过拟合“词与词共现概率比值”学习向量。它结合了矩阵分解(全局统计)和窗口法(局部上下文)优点,相对word2vec在某些语义关系上更稳定。

4. Attention 为什么使用多头(Multi-Head)

多头注意力将查询、键、值映射到多个子空间并行计算注意力,每个头学习不同关系(如局部依赖、语法依赖、长程语义依赖)。多头机制能提升表达能力,并让模型从不同角度建模上下文关系,效果通常优于单头注意力。

import torch
import torch.nn as nn

mha = nn.MultiheadAttention(embed_dim=512, num_heads=8, batch_first=True)
x = torch.randn(2, 16, 512)  # [batch, seq, dim]
out, attn = mha(x, x, x)
print(out.shape)  # (2, 16, 512)

5. 交叉熵和对数似然损失的区别和联系

在分类任务里,最大化对数似然等价于最小化交叉熵;二者本质是一致的优化目标。区别主要在表述角度:对数似然来自概率统计建模,交叉熵来自信息论。工程中常把它们视作同类损失。

import torch
import torch.nn.functional as F

logits = torch.randn(4, 3)
target = torch.tensor([0, 2, 1, 1])

loss = F.cross_entropy(logits, target)  # 多分类交叉熵
print(loss.item())

6. 交叉熵和 KL 散度的区别和联系

交叉熵 (H(P,Q)) = 熵 (H(P)) + KL散度 (D_{KL}(P||Q))。当真实分布P固定时,最小化交叉熵等价于最小化KL散度。KL常用于知识蒸馏、分布对齐;交叉熵常用于监督分类训练。

7. RNN 为什么容易梯度爆炸/消失,LSTM 如何解决

RNN在时间展开后是深层链式结构,反向传播时梯度会重复乘以权重矩阵,导致指数级衰减(消失)或增大(爆炸)。LSTM通过门控结构和细胞状态的加法路径,缓解长程依赖下的梯度消失问题;梯度爆炸可结合梯度裁剪处理。

torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)

8. 过拟合的解决方法

常见方法:数据增强、dropout、权重衰减(L2)、早停、交叉验证、减小模型容量、预训练+微调、对抗训练等。

9. BERT 为什么能解决一词多义

BERT是深度双向上下文编码模型,同一个词在不同上下文中的表示不同(动态词向量),因此能够表达“多义词在不同语境中的语义差异”。

from transformers import AutoTokenizer, AutoModel
import torch

tok = AutoTokenizer.from_pretrained("bert-base-chinese")
mdl = AutoModel.from_pretrained("bert-base-chinese")

s1 = tok("苹果很好吃", return_tensors="pt")
s2 = tok("苹果发布了新手机", return_tensors="pt")

with torch.no_grad():
    h1 = mdl(**s1).last_hidden_state
    h2 = mdl(**s2).last_hidden_state
print(h1.shape, h2.shape)

10. TextCNN 会不会?详细介绍

TextCNN通过多个不同卷积核窗口(如2/3/4-gram)提取局部n-gram特征,再做池化和分类。优点是训练快、并行友好、对短文本分类效果好;缺点是对长距离依赖建模较弱。

import torch
import torch.nn as nn
import torch.nn.functional as F

class TextCNN(nn.Module):
    def __init__(self, vocab_size, emb_dim, num_classes, ks=(2,3,4), ch=100):
        super().__init__()
        self.emb = nn.Embedding(vocab_size, emb_dim)
        se

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论
接好运
点赞 回复 分享
发布于 昨天 23:37 河北
fastText求代码
点赞 回复 分享
发布于 昨天 23:03 河北
哪里弄的面试题
点赞 回复 分享
发布于 昨天 22:16 云南
感谢分享 背会这些就可以了吗?还需要看别的吗?
点赞 回复 分享
发布于 昨天 21:31 黑龙江

相关推荐

评论
4
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务