【NLP方向】【万时计划】65-71

Seq2seq模型是用于自然语言处理的算法,由谷歌提出,广泛应用于机器翻译、文本摘要等领域。模型由编码器和解码器组成,编码器将输入序列转化为固定长度的向量,解码器则根据此向量生成输出序列。RNN、LSTM和GRU是常见的Seq2seq模型组件。在训练过程中,采用教师强迫策略,而在预测时,可能使用贪婪搜索、穷举搜索或束搜索策略来生成序列。束搜索通过控制束宽平衡计算效率和搜索质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SEQ2SEQ

Seq2seq是机器学习里用于自然语言处理的一个算法簇,主要应用于语言翻译,画像字幕,会话模型和文本摘要提取。起初是谷歌发明用于机器翻译的算法。2019年提出了用其求解符号数学的问题,包含函数微分,一阶常微分方程,二阶常微分方程等复杂问题。

目前主流的Seq2seq模型包括:

  • RNN, Recurrent Natural Network
  • LSTM, Long-Short Term Memory
  • GRU, Gated recurrent unit

Seq2seq模型的输入是一系列的单词,输出是被翻译过后的另外一系列单词。

该模型主要分为两部分:

在这里插入图片描述

  • 编码阶段:在编码阶段,Seq2seq模型的编码器(Encoder)将输入的序列编码为一个隐藏层向量。
  • 解码阶段:在解码阶段,解码器(Decoder)将隐藏层的向量解码为输出序列()一个英文句子
seq2seq中的RNN

在这里插入图片描述

将上图中的RNN cell进一步透明化,表示RNN模型中的一个神经元细胞。每个神经元细胞的输入包括两部分:input和hidden state #0;输出同样包含两部分:output和hidden state #2。对于RNN而言,每一个神经元的输入hidden #t,是上一个神经元t-1的输出。

当输入和输出都是不定长序列时,我们可以使用(encoder-decoder)模型。该模型中的两部分本质上都用到了循环神经网络,分别叫做编码器和解码器。编码器用来分析输入序列,解码器用来生成输出序列。这两个循环神经网络是共同训练的。

例:使⽤编码器—解码器将英语句子翻译成法语句子

在训练集中,我们可以在每个句子后附上特殊标点符号"“表示序列终止。编码器每个时间步的输入依次为英语句子中的单词、标点、特殊符号。下图使用了编码器在最终时间步的隐藏状态作为输入句子的表征或编码信息。解码器在各个时间步中使用输入句子的编码信息和上一个时间步的输入以及隐藏状态作为输入。我们希望解码器在各个时间步能正确依次输出翻译后的法语单词、标点和特殊符号;解码器在最初时间步的输入用到了一个表示序列的特殊符号”"

在这里插入图片描述

编码器的作用是把一个定长的输入序列变换成一个定长的背景变量c,并在该背景变量中编码输入序列信息。常用的编码器是循环神经网络。

考虑批量大小为1的时序数据样本。假设输入序列是 x 1 , . . . , x T { {x}_{1}},...,{ {x}_{T}} x1,...,xT,例如 x i { {x}_{i}} xi是输入句子中的第i个词。在时间步t,循环神经网络将输入的特征向量 x t { {x}_{t}} xt和上个时间步的隐藏状态 h t − 1 { {h}_{t-1}} ht1变换为当前时间步的隐藏状态 h t { {h}_{t}} ht。我们可以用函数f表达循环神经网络隐藏层的变换:

h t = f ( x t , h t − 1 ) { {h}_{t}}=f({ {x}_{t}},{ {h}_{t-1}}) ht=f(xt,ht1)

接下来,编码器通过自定义函数q将各个时间步的隐藏状态变换为背景向量:

c = q ( h 1 , h 2 , . . . , h T ) c=q({ {h}_{1}},{ {h}_{2}},...,{ {h}_{T}}) c=q(h1,h2,...,hT)

以上的编码器是一个单向的循环神经网络,每个时间步的隐藏状态只取决于该时间步及之前的输入子序列。我们也可使用双向循环神经网络构造编码器。编码器每个时间步的隐藏状态同时取决于该时间步之前和之后的子序列,并编码整个序列的信息。

解码器输出的是北背景变量c编码了整个输入序列 x 1 , . . . , x T { {x}_{1}},...,{ {x}_{T}} x1,...,xT的信息。给定训练样本中的输出序列 y 1 , y 2 . . . , y T ′ { {y}_{1}},{ {y}_{2}}...,{ {y}_{T'}} y1,y2...,yT,对每个时间步骤 t ′ t' t,解码器输出 y t ′ { {y}_{t'}} yt的条件概率将基于之前的输出序列 y 1 , y 2 . . . , y t ′ − 1 { {y}_{1}},{ {y}_{2}}...,{ {y}_{t'-1}} y1,y2...,y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值