目录
老饼讲解:一步一步上手深度学习

【模型】RNN-编解码模型-简单介绍

作者 : 老饼 发表日期 : 2025-10-28 05:12:37 更新日期 : 2026-05-19 21:38:02
老饼讲解-简单易懂,干货满满,爽过嗦螺!


好了,这节我们先来看什么是RNN的编解码(Encoder-Decoder)模型吧。其实在讲RNN时,我们已经讲过Encoder-Decoder了,但这里作为回顾也好,作为重新理解也好,重新讲解一下。

一、Encoder-Decoder模型

先来说Encoder-Decoder模型,Encoder-Decoder模型并不是RNN专用的模型,更严确来说呢,它是一种解决方案。太严谨的定义也很难说,说了也很难理解,直接用例子来说吧。

 Encoder-Decoder模型

如图所示,Encoder-Decoder把模型拆成了两部分:编码器与解码器。它先用第一部分编码器(编码器是一个模型)把输入压缩成一个信息(一般称为编码信息c),然后再利用第二部分的解码器(解码器也是一个模型)来把编码信息c转换为预测目标y。

总的来说呢,就是引入c来作为 之间的桥梁,先用编码器模型把 转换为c,再用解码器模型把c转换为y。

二、RNN-Encoder-Decoder模型

在RNN中,就经常使用Encoder-Decoder方式来解决seq2seq问题,也就是不定长的输入、输出问题。

2.1. 什么是seq2seq问题

可能有的同学忘了seq2seq(序列到序列)是什么了,那再详细说说。

seq2seq问题

seq2seq就是,对模型输入一个长为n的序列,然后让模型输出一个长为m的序列,它的输入n和输出m都是不定长的,例如翻译问题就是一个典型的seq2seq问题,它的输入、输出长度都是不确定的、任意的。

2.1. RNN的Encoder-Decoder模型

好了,RNN使用Decoder-Encoder方式时,就是用两个RNN分别作为编码器与解码器,编码器将输入序列转换为编码C,而解码器则根据编码C得得输出序列。

以翻译问题为例,示例如下:

RNN的Encoder-Decoder模型

如图,先用一个RNN作为Encoder,然后在充当编码器的RNN中输入要翻译的句子,那么当输入完最后一个字符时,RNN的隐状态就承载了所有的输入序列信息,此时,可以把它作为编码c。然后,在翻译阶段,仍然以一个RNN作为解码器,把编码c作为解码器RNN的初始状态,然后通过解码器RNN逐个输出翻译结果。

好了,这只是一个大概的示例,实际使用中的骚操作是多种多样的,但主体思想都差不多。

总结

这节我们大概地知道了RNN的Encoder-Decoder模型是什么。它其实就是用一个RNN作为编码器,用另一个RNN作为解码器,让输入与输出模型隔离,从而可以满足任意长度的输入、任意长度的输出。



图标 评论
添加评论