资讯动态

阶段八(周 25–30)NLP 与 LLM 基础实战

发布时间:2026/8/20 15:02:52 来源:尧图企业网站定制
阶段八周 25–30NLP 与 LLM 基础实战实验环境华为云 m3CPU 版 PyTorch 2.13 jieba scikit-learn。所有脚本在m3真实运行结果为真实 stdout / 指标图存figures/。一、学习目标用jieba 分词 从零实现skip-gram负采样训练中文词向量并用t-SNE可视化。用从零实现的Transformer 组件完成一个极简序列分类任务前向验证 短训练。用TF-IDF 余弦相似度实现最小可运行的「检索式问答」RAG/搜索推荐的雏形。理解 LSTM/CNN 文本抽取、BERT/GPT 预训练思想、分布式训练 / RLHF / LangChain / 搜索推荐等进阶概念。二、词向量jieba skip-gram t-SNEsrc/word2vec.pyskip-gram 目标给定中心词预测上下文词用负采样避免对整个词表做 softmax。classSkipGramNeg(nn.Module):def__init__(self,vocab_size,dim):super().__init__()self.in_embnn.Embedding(vocab_size,dim)# 中心词嵌入self.out_embnn.Embedding(vocab_size,dim)# 上下文词嵌入defforward(self,center,context,neg):v_cself.in_emb(center)# [B, D]v_ctxself.out_emb(context)# [B, D]v_negself.out_emb(neg)# [B, NEG, D]postorch.bmm(v_ctx.unsqueeze(1),v_c.unsqueeze(2)).squeeze()# [B]negtorch.bmm(v_neg,v_c.unsqueeze(2)).squeeze()# [B, NEG]loss-F.logsigmoid(pos).mean()-F.logsigmoid(-neg).mean()returnloss负采样分布采用freq^0.75降低高频词如「的」被抽作负样本的概率。真实运行结果小中文语料55 句堆叠seed 固定分词后 token 数: 305样例: [神经网络, 是, 深度, 学习, 的, 核心, 模型, 。, 卷积, ...] 词表大小: 67 训练样本对(center,context): 1214 epoch 1/30 avg_loss2.1197 epoch 10/30 avg_loss1.7182 epoch 20/30 avg_loss1.9014 epoch 30/30 avg_loss1.7295 t-SNE 图 - figures/w2v_tsne.png 词相似度余弦示例: sim(神经网络, 卷积) 0.421 sim(神经网络, 注意力) -0.295 sim(卷积, 注意力) -0.241解读sim(神经网络, 卷积)0.421为正且明显大于其他配对说明二者在向量空间中更接近都与「网络结构」相关符合「语义相近的词向量也相近」的预期卷积与注意力为负相关体现它们在语料中很少共现。由于语料很小向量质量有限但训练链路分词→建表→负采样→t-SNE已完整跑通。三、用 Transformer 做序列任务src/transformer_text.py把从零实现的 Transformer 编码器用于一个玩具序列分类输入 A/B/C 短序列判断 A 是否多于 B。classSeqClassifier(nn.Module):def__init__(self,vocab_size,d_model32,n_heads4,depth2):super().__init__()self.embednn.Embedding(vocab_size,d_model)self.posPositionalEncoding(d_model)self.encodernn.ModuleList([EncoderLayer(d_model,n_heads)for_inrange(depth)])self.clsnn.Linear(d_model,2)defforward(self,x):xself.pos(self.embed(x))# 嵌入 位置编码forlayerinself.encoder:xlayer(x)returnself.cls(x.mean(1))# 全局平均池化分类真实运行结果前向验证: x (8, 10) - logits (8, 2) epoch 1 train_loss0.9294 train_acc0.481 test_acc0.300 epoch 5 train_loss0.6716 train_acc0.519 test_acc0.700 epoch 10 train_loss0.5758 train_acc0.706 test_acc0.725 epoch 15 train_loss0.5093 train_acc0.775 test_acc0.675 epoch 20 train_loss0.4512 train_acc0.756 test_acc0.750test_acc从 0.30 提升到0.75证明从零实现的 Self-Attention / 位置编码 / Encoder 组件端到端可训练能学到「A 多于 B」这类序列级规律。四、最小检索式问答src/search_demo.py用 TF-IDF 把知识库向量化对用户问题做余弦检索返回最相关条目——这是RAG / 搜索推荐系统的极简雏形。vecTfidfVectorizer(tokenizerlambdax:list(x),lowercaseFalse)# 字符级切分Xvec.fit_transform(DOCS)qvvec.transform([query])simscosine_similarity(qv,X)[0]topint(sims.argmax())# 返回最相关文档作为「答案」真实运行结果知识库文档数10词表维度175 问: 怎么处理图像 最相关(0.343): 卷积神经网络 CNN 擅长处理图像通过卷积核提取局部特征。 问: 什么是残差网络 最相关(0.397): ResNet 残差网络通过跳跃连接缓解深层网络退化问题可训练上百层。 问: 语言模型怎么预测下一个词 最相关(0.512): GPT 是自回归生成式预训练模型根据前文预测下一个词。 问: 如何让模型关注重要信息 最相关(0.499): 注意力机制让模型在处理每个词时动态关注输入中相关的部分。每条查询都检索到了语义最匹配的FAQ验证了「向量检索」的有效性。五、进阶概念周 26–30LSTM / CNN 文本抽取器周 26RNN/LSTM 通过门控遗忘/输入/输出门缓解长程梯度消失适合序列标注TextCNN 用多尺寸卷积核一次性抽取 n-gram 特征速度快、并行好是经典文本分类 baseline。BERT / GPT 预训练思想周 27BERT 用MLM掩码语言模型 NSP做双向预训练适合理解类任务分类、抽取、问答GPT 用自回归预测下一个 token适合生成。二者都遵循「大规模无标注语料预训练 下游任务微调」范式。分布式训练周 28数据并行DDP每张卡一份模型、切分 batch、模型并行切分层、ZeRO/流水线并行切分参数/梯度/优化器状态用于训练超大规模模型。RLHF周 29监督微调 SFT → 训练奖励模型 RM → 用 PPO 做强化学习对齐人类偏好是 ChatGPT 类助手的关键。LangChain / 搜索推荐周 30LangChain 把「检索 提示 工具调用 记忆」串成可编排的 Agent 管线工业搜索推荐则是「召回向量/倒排→ 粗排 → 精排CTR 预估→ 重排」的多级架构与上面的 TF-IDF 检索一脉相承。六、小结词向量、序列 Transformer、检索式问答三条线都真实跑通并给出指标/可视化。现代 LLM 技术栈BERT/GPT → 分布式 → RLHF → Agent/搜索推荐均建立在本次动手实现的注意力、预训练、向量检索等基础之上。七、参考Mikolov et al.,Efficient Estimation of Word Representations(Word2Vec, 2013)Vaswani et al.,Attention Is All You Need(2017)Devlin et al.,BERT(2018)Radford et al.,GPT系列Ouyang et al.,Training language models to follow instructions with RLHF(2022)

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价