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

人工智能之语言领域 自然语言处理 第十三章 序列到序列模型

人工智能之语言领域

第十三章 序列到序列模型


文章目录

  • 人工智能之语言领域
  • 前言 序列到序列模型
    • 13.1 序列到序列(Seq2Seq)模型概述
      • 13.1.1 核心应用场景:机器翻译、文本摘要、对话生成
      • 13.1.2 Seq2Seq的基本架构:Encoder-Decoder
    • 13.2 传统Seq2Seq模型
      • 13.2.1 RNN-based Seq2Seq
        • 编码器结构
        • 解码器结构
      • 13.2.2 模型的训练与推理过程
    • 13.3 注意力机制融入Seq2Seq
      • 13.3.1 Attention-based Seq2Seq架构
        • 实现示例
      • 13.3.2 性能提升与原理分析
    • 13.4 现代Seq2Seq模型:基于Transformer的Seq2Seq
      • Transformer Seq2Seq架构图
    • 13.5 实战案例:中文文本摘要生成
      • 数据准备
      • 模型定义
      • 训练过程
      • 推理与评估
  • 资料

前言 序列到序列模型

在自然语言处理(NLP)中,序列到序列(Seq2Seq)模型是用于将一个序列映射到另一个序列的框架。它们被广泛应用于各种任务,如机器翻译、文本摘要和对话系统等。本章将深入探讨Seq2Seq模型的发展历程,从基于RNN的传统模型到引入注意力机制的改进版本,再到现代Transformer架构的演变,并通过中文文本摘要生成实战演示其构建过程。


13.1 序列到序列(Seq2Seq)模型概述

13.1.1 核心应用场景:机器翻译、文本摘要、对话生成

  • 机器翻译:将一种语言的句子转换为另一种语言。
  • 文本摘要:自动产生简洁的文摘,概括原始文档的主要信息。
  • 对话生成:根据用户输入自动生成回应,实现人机交互。

13.1.2 Seq2Seq的基本架构:Encoder-Decoder

Seq2Seq模型通常由两部分组成:

  1. 编码器(Encoder):接收并理解输入序列,将其转换成固定长度的向量表示。
  2. 解码器(Decoder):基于该向量生成输出序列。

编码

源序列

编码器

上下文向量

解码器

目标序列

注意:传统上,编码器和解码器常采用循环神经网络(RNN)及其变种(LSTM, GRU)实现。


13.2 传统Seq2Seq模型

13.2.1 RNN-based Seq2Seq

最早的Seq2Seq模型依赖于递归神经网络(RNN),尤其是长短期记忆网络(LSTM)或门控循环单元(GRU)。这些模型能够捕捉序列中的时间依赖性,但随着序列长度增加,训练难度加大且容易出现梯度消失问题。

编码器结构
classEncoderRNN(nn.Module):def__init__(self,input_size,hidden_size):super().__init__()self.hidden_size=hidden_size self.embedding=nn.Embedding(input_size,hidden_size)self.gru=nn.GRU(hidden_size,hidden_size)defforward(self,input,hidden):embedded=self.embedding(input).view(1,1,-1)# [1, 1, hidden_size]output,hidden=self.gru(embedded,hidden)returnoutput,hiddendefinit_hidden(self):returntorch.zeros(1,1,self.hidden_size)
解码器结构
classDecoderRNN(nn.Module):def__init__(self,hidden_size,output_size):super().__init__()self.hidden_size=hidden_size self.embedding=nn.Embedding(output_size,hidden_size)self.gru=nn.GRU(hidden_size,hidden_size)self.out=nn.Linear(hidden_size,output_size)self.softmax=nn.LogSoftmax(dim=1)defforward(self,input,hidden):output=self.embedding(input).view(1,1,-1)output=F.relu(output)output,hidden=self.gru(output,hidden)output=self.softmax(self.out(output[0]))returnoutput,hidden

13.2.2 模型的训练与推理过程

  • 训练阶段:使用交叉熵损失函数优化模型参数。
  • 推理阶段:采用贪心搜索或束搜索算法选择最有可能的单词作为下一个预测。

13.3 注意力机制融入Seq2Seq

13.3.1 Attention-based Seq2Seq架构

注意力机制允许解码器在生成每个词时“关注”输入序列的不同部分,而不是仅依赖于单一的上下文向量。这大大提高了对长序列的处理能力。

解码器

编码器

输入词1

隐藏状态h1

输入词2

隐藏状态h2

输入词n

隐藏状态hn

当前解码步骤t

计算注意力权重α

加权求和得到上下文向量ct

生成输出yt

实现示例
defattention(encoder_outputs,decoder_hidden,encoder_lengths=None):energy=torch.sum(decoder_hidden*encoder_outputs,dim=2)attention_weights=F.softmax(energy,dim=1)context_vector=torch.sum(attention_weights.unsqueeze(2)*encoder_outputs,dim=1)returncontext_vector,attention_weights

13.3.2 性能提升与原理分析

注意力机制通过动态调整各输入词的重要性,有效解决了长距离依赖问题,并增强了模型的表现力。


13.4 现代Seq2Seq模型:基于Transformer的Seq2Seq

Transformer架构摒弃了RNN,完全依靠自注意力机制来处理序列数据,极大地提升了效率和效果。它不仅适用于机器翻译,还被广泛应用于文本摘要、问答系统等领域。

Transformer Seq2Seq架构图

解码器

解码器层1

...

解码器层N

编码器

编码器层1

...

编码器层N

源序列

N层编码器堆叠

N层解码器堆叠

目标序列


13.5 实战案例:中文文本摘要生成

数据准备

首先需要准备适合进行文本摘要的数据集,例如LCSTS(Large Chinese Short Text Summarization Dataset)。

模型定义

可以基于Hugging Face Transformers库快速搭建一个基于BERT的seq2seq模型来进行摘要生成。

fromtransformersimportBertTokenizer,EncoderDecoderModel tokenizer=BertTokenizer.from_pretrained('bert-base-chinese')model=EncoderDecoderModel.from_encoder_decoder_pretrained('bert-base-chinese','bert-base-chinese')# Tokenize inputs and targetsinputs=tokenizer(["这是一个测试句子"],return_tensors="pt",padding=True,truncation=True)targets=tokenizer(["这是摘要"],return_tensors="pt",padding=True,truncation=True)# Forward passoutputs=model(input_ids=inputs.input_ids,decoder_input_ids=targets.input_ids)

训练过程

利用AdamW优化器,设定合适的超参数进行训练。

optimizer=torch.optim.AdamW(model.parameters(),lr=5e-5)loss_fn=nn.CrossEntropyLoss(ignore_index=tokenizer.pad_token_id)forepochinrange(num_epochs):forbatchintrain_loader:optimizer.zero_grad()outputs=model(input_ids=batch['input_ids'],decoder_input_ids=batch['decoder_input_ids'])loss=loss_fn(outputs.logits.view(-1,outputs.logits.size(-1)),batch['labels'].view(-1))loss.backward()optimizer.step()

推理与评估

在完成训练后,可以通过模型生成摘要,并使用ROUGE等指标评估生成质量。

generated=model.generate(input_ids,max_length=max_summary_length)summary=tokenizer.decode(generated[0],skip_special_tokens=True)print(f"Generated Summary:{summary}")

以上便是关于序列到序列模型的详细介绍,包括其基本概念、发展历程以及具体应用实例。


资料

咚咚王

《Python 编程:从入门到实践》
《利用 Python 进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第 3 版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow 机器学习实战指南》
《Sklearn 与 TensorFlow 机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python 深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习 +(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第 2 版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨 +&+ 张孜铭
《AIGC 原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战 AI 大模型》
《AI 3.0》

http://www.jsqmd.com/news/486757/

相关文章:

  • SDXL-Turbo实时交互教程:一边打字一边观察画面变化的创意流程
  • 使用Flask构建StructBERT情感分类模型Web服务
  • 基于RH6618A的低功耗触摸调光台灯硬件设计
  • 2024实战:用Selenium绕过动态加载,精准爬取51job职位数据
  • Dify+RAGFlow实战:5分钟搞定智能客服知识库搭建(含避坑指南)
  • 投放前自检vs拒审后抓瞎?“影刀RPA+油猴脚本”一键构建你的“聚光审核规范”私有知识库
  • 滇域钢企标杆:云南勇涛钢材的本土深耕与产业赋能之路 - 深度智识库
  • 差分放大器的实战解析:差模信号放大与共模抑制的平衡艺术
  • Activiti8 vs Flowable vs Camunda:2024年开源工作流引擎选型指南
  • Nginx 泛域名 SSL 证书申请全攻略:从 DNS 验证到自动续期
  • 实战应用开发:基于快马平台打造狼蛛f87pro键盘的Photoshop专属效率工具
  • 基于TI MSPM0的MQ-5液化气传感器驱动移植与浓度检测实战
  • Step3-VL-10B-Base一键部署教程:基于GPU算力的快速环境搭建
  • 靠谱的降AI率平台有哪些?亲测能将AI率从57%降至3.7%! - 资讯焦点
  • 基于立创GD32E230C8T6开发板的AS608光学指纹模块移植与驱动实战
  • MDK宏定义技巧:__DATE__和__TIME__在固件版本管理中的高级用法
  • FireRedASR Pro与开源大模型联动:构建语音交互智能体(Agent)
  • 2026 上海展厅长效焕新指南:沉浸体验型展台设计搭建公司本土图鉴 - 资讯焦点
  • nlp_structbert_sentence-similarity_chinese-large效果展示:电商评论‘物流很快’与‘发货速度超赞’精准匹配
  • 语音识别评估指标全解析:从WER到F1值,如何选择最适合你的场景?
  • Java-jdk安装以及path环境配置
  • 山景BP1048蓝牙音频后台常驻连接技术实现详解
  • MasterGo中转教程:当Figma蓝湖插件罢工时,我是这样传设计稿的
  • 北京老式瓷器上门回收,各类旧瓷器/老瓷件 - 品牌排行榜单
  • 技术解析【3DGS演进】 - H3DGS:大场景实时渲染的分层高斯建模与性能优化
  • 高效掌握VideoDownloadHelper下载工具:从入门到精通全攻略
  • 窗口尺寸掌控大师:3大核心技术破解窗口调整难题
  • 玩偶小智-C3:超小型嵌入式语音模组硬件设计
  • 银河麒麟服务器KY10上快速部署Keepalived高可用集群
  • 国内深圳知名铝合金/不锈钢/黄铜/钛合金精密零件CNC加工定制厂家推荐 - 余文22