news 2026/6/10 17:10:33

循环神经网络与文本处理:编码器-解码器架构及其应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
循环神经网络与文本处理:编码器-解码器架构及其应用

编码器-解码器架构

学习目标

通过本课程,学员将了解到编码器-解码器架构的基本原理、组成组件以及其在机器翻译等序列转换问题中的应用。

相关知识点

  • 编码器-解码器架构

学习内容

1 编码器-解码器架构

1.1 编码器

机器翻译是序列转换模型的一个核心问题,
其输入和输出都是长度可变的序列。
为了处理这种类型的输入和输出,
我们可以设计一个包含两个主要组件的架构:
第一个组件是一个编码器(encoder):
它接受一个长度可变的序列作为输入,
并将其转换为具有固定形状的编码状态。
第二个组件是解码器(decoder):
它将固定形状的编码状态映射到长度可变的序列。
这被称为编码器-解码器(encoder-decoder)架构,
如下图所示。

图1 编码器-解码器架构

我们以英语到法语的机器翻译为例:
给定一个英文的输入序列:“They”“are”“watching”“.”。
首先,这种“编码器-解码器”架构将长度可变的输入序列编码成一个“状态”,
然后对该状态进行解码,
一个词元接着一个词元地生成翻译后的序列作为输出:
“Ils”“regordent”“.”。
由于“编码器-解码器”架构是形成后续实验中不同序列转换模型的基础,
因此本课程将把这个架构转换为接口方便后面的代码实现。

在编码器接口中,我们只指定长度可变的序列作为编码器的输入X
任何继承这个Encoder基类的模型将完成代码实现。

fromtorchimportnn#@saveclassEncoder(nn.Module):"""编码器-解码器架构的基本编码器接口"""def__init__(self,**kwargs):super(Encoder,self).__init__(**kwargs)defforward(self,X,*args):raiseNotImplementedError
1.2 解码器

在下面的解码器接口中,我们新增一个init_state函数,用于将编码器的输出enc_outputs转换为编码后的状态。注意,此步骤可能需要额外的输入,例如:输入序列的有效长度,为了逐个地生成长度可变的词元序列,解码器在每个时间步都会将输入(例如:在前一时间步生成的词元)和编码后的状态映射成当前时间步的输出词元。

#@saveclassDecoder(nn.Module):"""编码器-解码器架构的基本解码器接口"""def__init__(self,**kwargs):super(Decoder,self).__init__(**kwargs)definit_state(self,enc_outputs,*args):raiseNotImplementedErrordefforward(self,X,state):raiseNotImplementedError
1.3 合并编码器和解码器

总而言之,“编码器-解码器”架构包含了一个编码器和一个解码器,并且还拥有可选的额外的参数。在前向传播中,编码器的输出用于生成编码状态,这个状态又被解码器作为其输入的一部分。

#@saveclassEncoderDecoder(nn.Module):"""编码器-解码器架构的基类"""def__init__(self,encoder,decoder,**kwargs):super(EncoderDecoder,self).__init__(**kwargs)self.encoder=encoder self.decoder=decoderdefforward(self,enc_X,dec_X,*args):enc_outputs=self.encoder(enc_X,*args)dec_state=self.decoder.init_state(enc_outputs,*args)returnself.decoder(dec_X,dec_state)

“编码器-解码器”体系架构中的术语状态会启发人们使用具有状态的神经网络来实现该架构。在后续实验中,我们将学习如何应用循环神经网络,来设计基于“编码器-解码器”架构的序列转换模型。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:20:42

How transferable are features in deep neural networks

随着读取的论文量增加,发现研读论文,更重要的是作者的思维方式,以及自己对深度学习网络的理解,作者是怎么理解当前的网络的,他是从哪些角度发现当前的问题的,作者有事怎么逐步分析,进而引出自己…

作者头像 李华
网站建设 2026/6/10 11:21:45

Flutter艺术探索-Flutter调试工具:DevTools使用指南

Flutter调试利器:手把手带你玩转DevTools 引言 开发Flutter应用时,卡顿、内存泄漏或是UI渲染异常,这些问题你肯定遇到过。光靠print调试显然不够用,这时候,一个强大的调试工具就是你的“救命稻草”。Flutter DevTools正…

作者头像 李华
网站建设 2026/6/10 11:23:13

洞察食材,管理健康:智能冰箱引领个性化饮食新时代

在全民健康意识觉醒与智能家居技术迭代的双重驱动下,智能冰箱已彻底摆脱单纯食品储存设备的定位,逐步演进为家庭健康管理的核心节点。目前智能冰箱的竞争焦点已从基础的保鲜、远程控制功能,转向以技术赋能深层健康价值的方向,通过…

作者头像 李华
网站建设 2026/6/10 13:30:38

Promise 吞错太坑?前端老鸟教你揪出那些藏起来的错误

Promise 吞错太坑?前端老鸟教你揪出那些藏起来的错误Promise 吞错太坑?前端老鸟教你揪出那些藏起来的错误错误去哪了?—— 一场“无声”的坠机Promise 为啥爱“吃白食”?现场还原:四个最容易踩的坑1. then 里 throw 完…

作者头像 李华
网站建设 2026/6/9 22:28:08

能控制手机屏幕的开源agent多模态工具

之前探索了能控制电脑桌面的开源agent工具。 https://blog.csdn.net/liliang199/article/details/156018145 这里进一步探索能控制手机屏幕的开源agent多模态工具。 1 模拟工具 以下是几款可以实现移动端模拟操作的开源工具。 其中,Open-AutoGLM和Airtest功能较为…

作者头像 李华
网站建设 2026/6/10 11:23:21

【开题答辩全过程】以 基于Java的校内美食推荐系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华