小结4:机器翻译相关技术、注意力机制

Gitana ·
更新时间:2024-09-21
· 536 次阅读

文章目录机器翻译(MT):1 定义2 Encoder-Decoder3 Seq2Seq4 Beam search注意力机制Transformer 机器翻译(MT): 1 定义

将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经机器翻译(NMT)。 主要特征:输出是单词序列而不是单个单词。 输出序列的长度可能与源序列的长度不同。
步骤:

数据清洗 分词 建立词典 建立mini-batch(记得pad) 2 Encoder-Decoder

encoder:输入到隐藏状态
decoder:隐藏状态到输出
1)encoder:可以是CNN或者RNN,这里我们选用RNN实现,讲信息不断的保存在hidden节点中,进行信息的不断传递;
2)语义编码c:提取汇总信息,一般选用encoder中的最后一个隐藏节点的信息作为语义编码;
3)decoder:一般选用RNN或LSTM等神经网络实现,利用以往的信息c和前一个节点的输出预测当前节点的输出,进而实现seq2seq模型的实现:

在这里插入图片描述
在这里插入图片描述
https://blog.csdn.net/xbinworld/article/details/54605408
大致代码结构:

class Encoder(nn.Module): def __init__(self, **kwargs): super(Encoder, self).__init__(**kwargs) def forward(self, X, *args): raise NotImplementedError class Decoder(nn.Module): def __init__(self, **kwargs): super(Decoder, self).__init__(**kwargs) def init_state(self, enc_outputs, *args): raise NotImplementedError def forward(self, X, state): raise NotImplementedError class EncoderDecoder(nn.Module): def __init__(self, encoder, decoder, **kwargs): super(EncoderDecoder, self).__init__(**kwargs) self.encoder = encoder self.decoder = decoder def forward(self, enc_X, dec_X, *args): enc_outputs = self.encoder(enc_X, *args) dec_state = self.decoder.init_state(enc_outputs, *args) return self.decoder(dec_X, dec_state) 3 Seq2Seq

在这里插入图片描述
其中利用Embedding技术,将单词进行嵌入
同时使用LSTM网络进行训练与预测

4 Beam search

1首先说下贪婪搜索
在这里插入图片描述
每次选择预测概率最大的词,作为输入
2 束搜索
在这里插入图片描述每次选择多个

注意力机制

https://daiwk.github.io/posts/nlp-self-attention-models.html
在这里插入图片描述
点积计算方法,还有MLP等、以及自注意力

Transformer

待续


作者:夜猫子科黎



小结 注意力机制 机器翻译

需要 登录 后方可回复, 如果你还没有账号请 注册新账号