机器学习-RNN机器翻译

一、简介

RNN的经典的用例之一就是将文本从一种语言翻译成另一种语言。 过去,这是使用手工制作的功能以及许多复杂的条件来完成的,这些条件花费很长时间才能创建并且理解起来很复杂。 因此,让我们看看RNN如何使生活更轻松,做得更好。

二、RNN机器翻译

简单模型(编码器-解码器模型)
最简单的想法是使用基本的RNN,如下图所示。 在此图中,展开了RNN,以便更轻松地了解正在发生的事情。这种类型的RNN是对RNN(seq2seq)进行排序的序列。

编码器
我们首先计算输入热词向量的词嵌入。 然后我们发送嵌入的单词进行翻译。 我们的(嵌入词向量)乘以一些权重矩阵W(hx)。 我们先前计算的隐藏状态(这是RNN节点的先前输出)乘以不同的权重矩阵W(hh)。 然后将这两个乘法的结果相加,并应用非线性(如Relu / tanh)。 现在这是我们的下一个隐藏状态h。然后在输入句子的整个过程中重复此过程。 显然,在第一个输入字x0上没有先前的隐藏状态,因此我们仅将此h0设置为全零。

如何知道我们的输入句子多长时间?
另请注意,我们的句子的长度可能不同,因此我们还必须有一个停止标记(例如句号),该标记表示我们已经到达了句子的结尾。 我们希望我们的模型将学习何时预测输出的停止令牌。 停止令牌基本上只是我们训练数据中的一个额外“单词”。

解码器
一旦到达停止令牌,便进入解码器RNN节点以开始产生输出矢量。为了在每个时间步长从解码器RNN获得输出y,我们有另一个权重矩阵W(S),我们将其隐藏状态h相乘以获得矢量输出。 然后将softmax应用于此,这将为我们提供最终输出。 此最终输出告诉您在该时间步预测了什么单词向量。

在这里插入图片描述

该模型非常简单,实际上只能用于非常排序的句子(2-3个单词)。 这是因为这些基本的RNN难以记住过去的多个步骤(消失的梯度问题)。

该模型的改进
那么,对于这个简单的模型,我们可以做些什么改变以使事情变得更好呢?
1、训练不同的RNN权重以进行编码和解码。 在上面的模型中,我们使用相同的RNN节点进行编码和解码,这显然不是学习的最佳选择。
2、在解码阶段,而不是像前面那样,仅将先前的隐藏阶段作为输入,现在,我们还包括编码器的最后一个隐藏阶段(在下图中将其称为C)。 除此之外,我们还包括最后的预测输出字向量。 这应该有助于模型知道它只是输出某个单词,而不是再次输出该单词。

在这里插入图片描述

因此,解码器节点现在将具有3个权重矩阵(其中一个是先前的隐藏状态h,一个是最后预测的单词向量y,一个是最后一个编码器隐藏状态c),我们将相应的输入乘以然后求和以获得 我们的解码输出。下图显示了另一种查看整个过程的方法。 从左下角开始,一直向上穿过直到到达红色圆圈。 然后向左和向上移动,直到预测到停止标记(完全停止)为止。重要的是要记住,在编码器每一步中用于乘以输入的权重矩阵是完全相同的,不是 不同的时间步长会有所不同。在解码阶段,它是与编码阶段不同的权重矩阵,但是在解码阶段仍使用此权重矩阵。

使用GRU
这可能与仅使用简单的RNN单元可以得到的效果一样好,因此,如果我们想做得更好,我们需要使用另一种类型的RNN单元,称为门控循环单元(简称GRU)。GRU的基本思想是保持内存保持长距离依赖性。 您的模型将学习如何做到这一点。 这也将允许错误消息根据输入以不同的强度传播。

三、总结

本次我们主要分享了与递归神经网络(RNN)相关的部分内容,大家感兴趣的话可以留言探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值