NEURAL MACHINE TRANSLATION

介绍了一种新的神经机器翻译架构,该架构通过联合学习对齐和翻译,显著提高了翻译性能,尤其是在处理长句时。该方法使用双向RNN编码器和带有注意力机制的解码器,以避免将所有信息压缩到固定长度的向量中。

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

NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

ABSTRACT

神经机器翻译是最近提出的机器翻译方法。与传统的统计机器翻译不同,神经机器翻译旨在构建单个神经网络,通过联合调整以最大化翻译性能。最近提出的用于神经机器翻译的模型通常属于一系列编码 - 解码器,并将源句编码成固定长度的矢量,解码器从该矢量生成翻译。在本文中,我们推测固定长度向量的使用是在改善这种基本编码器 - 解码器架构性能过程中的瓶颈,并且建议通过允许模型自动搜索与预测目标词相关的源句子部分来扩展这一点,无需明确地将这些部分形成为 hard segment 。通过这种新的翻译方法,我们在英法翻译任务中实现了与现有最先进的基于短语的系统相当的翻译性能。此外,定性分析表明,模型发现的对齐与我们的直觉很吻合。

1 INTRODUCTION

神经机器翻译是一种新兴的机器翻译方法,最近由 Kalchbrenner 和 Blunsom(2013),Sutskever等人提出。传统的基于短语的翻译系统由许多可以分开调整的小的子组件组成,与其不同的是,神经机器翻译试图建立和训练一个单独的大型神经网络来读取句子并输出正确的翻译。

大多数所提出的神经机器翻译模型属于编码器 - 解码器系列,具有针对每种语言的编码器和解码器,或涉及应用于其输出然后进行比较的每个句子的语言专用编码器。编码器神经网络将源句子读取并编码为固定长度的矢量。然后,解码器从编码矢量输出翻译。对于每个语言对来说,整个编码器 - 解码器系统由编码器和解码器组成,它们被联合训练,以最大化给定源句子的正确翻译的概率。

这种编码器 - 解码器方法的潜在问题是神经网络需要能够将源句子的所有必要信息压缩成固定长度的矢量。这可能使神经网络难以处理长句,特别是那些比训练语料库中的句子长的句子。Cho et al. 表明,随着输入句子的长度增加,基本编码器 - 解码器的性能急剧恶化。

为了解决这个问题,我们扩展了编码器 - 解码器模型,该模型学习了共同对齐和翻译。每次在翻译中生成单词时,所提出的模型搜索源语句中的一组位置,该位置中最相关的信息集中在一起。然后,模型基于与这些源位置和所有先前生成的与目标词相关联的上下文向量来预测目标词。

这种方法与基本的编解码器最重要的区别在于它不试图将整个输入句子编码为单个固定长度的向量。相反,它将输入语句编码为一系列向量,并在解码翻译时自适应地选择这些向量的子集。这使得神经翻译模型不必将源语句的所有信息(不论其长度如何)压缩到固定长度的向量中。我们表明,该模型能更好地处理长句。

在本文中,我们证明所提出的联合学习对齐和翻译的方法与基本的编解码器方法相比显著提高了翻译性能。用较长的句子进行改进更明显,但可以用任意长度的句子来观察。在英法翻译任务时,所提出的方法在单个模型下实现了与传统的基于短语的系统相当或接近的翻译性能。此外,定性分析表明,所提出的模型在源句和相应的目标句之间找到了语言上可信的对齐。

3 LEARNING TO ALIGN AND TRANSLATE

在本节中,我们提出了一种新颖的神经机器翻译架构。新架构由作为编码器的双向RNN和模拟在解码翻译期间搜索源句的解码器组成。

3.1

应当注意,与现有的编码器 - 解码器方法不同,这里的每个目标词的概率 y i y_i yi是以不同的上下文 c i c_i ci为条件的。

上下文向量 c i c_i ci取决于编码器映射到输入语句的 annotation 序列( h 1 , . . . , h T x h_1,...,h_{T_x} h1...hTx)。每个 annotation hi 都包含关于整个输入序列的信息,并且关注输入单词xi周围的词。我们将在下一节详细解释如何计算 annotation。 h i h_i hi也即 → h i \xrightarrow[h_i]{} hi ← h i \xleftarrow[h_i]{} hi的某种组合。

然后,上下文向量ci是这些hi的加权和:
在这里插入图片描述
h j h_j hj的权重 α i j \alpha_{ij} αij为:
在这里插入图片描述
其中, e i j e_{ij} eij为:
在这里插入图片描述
e i j e_{ij} ij可以看做一个对齐模型,用来衡量第 j 个位置的输入词与第i个输出词的匹配程度。这个程度基于 Decoder 的隐藏状态 s i − 1 s_{i-1} si1和输入句子的第 j 个 annotation h j h_j hj计算得到。

直观来想就是,如果你想要决定要花多少注意力在t的激活值上,它似乎很大程度上取决于你上一个时间步的的隐藏状态的激活值。你还没有当前状态的激活值,但是看看你生成上一个翻译的RNN的隐藏状态,然后对于每一个位置,每一个词都看向他们的特征值,这看起来很自然,即 e i j e_{ij} ij应该取决于这两个量。但是我们不知道具体函数是什么,所以我们可以做的事情就是训练一个很小的神经网络,去学习这个函数到底是什么。

因此我们参数化对齐模型a为前馈神经网络,该网络与所系统的所有其他组件共同训练。请注意,不同于传统的对齐模型,将源语言端每个词明确对齐到目标语言端一个或多个词( hard segment),而是计算得到的是一种软对齐(soft alignment),可以融入整个 NMT 框架,通过反向传播算法求得梯度以更新参数。

我们可以理解将所有 annotations 的加权和作为计算预期 annotation 的方法。让 α i j α_{ij} αij 是目标词 y j y_j yj 与源词 x j x_j xj 对齐或翻译的概率。然后,第 i 个上下文向量 c i c_i ci是对所有具有 α i j α_{ij} αij概率的 annotations 的预期 annotations 。

概率 α i j α_{ij} αij 或其相关的 e i j e_{ij} eij 反映了 h j h_j hj 相对于先前隐藏状态 s i − 1 s_{i-1} si1 在决定下一状态 s i s_i si 和产生 y i y_i yi时的重要性。直观地讲,这实现了解码器中的 attention 机制。解码器决定要关注的源句的哪些部分。通过让解码器具有 attention 机制,我们减轻了编码器必须将源句中的所有信息编码为固定长度的向量的负担。利用这种新方法,信息可以在整个 annotation 序列中传播,这可以由解码器相应有选择性地检索。

#3.2

通常的RNN,按照从第一个符号x1到最后一个符号 x T x x_{T_x} xTx的顺序读取输入序列x。但是,在提出的方案中,我们希望每个单词的 annotation 不仅要概述前面的单词,还要概述下面的单词。因此,我们计划使用一个双向RNN,最近在语音识别中得到了成功的应用。

双向 RNN 由前向和后向 RNN 组成。前向RNN f ⃗ \vec{f} f 以顺序 x 1 到 x T x x_1到x_{T_x} x1xTx的顺序读取输入序列,并且计算前向隐藏状态序列 ( h 1 ⃗ , . . . , h T x ⃗ ) (\vec{h_1},...,\vec{h_{T_x}}) (h1 ,...,hTx )。反向RNN ← f \xleftarrow[f]{} f以顺序 x T x 到 x 1 x_{T_x}到x_1 xTxx1的顺序读取输入序列,并且计算反向隐藏状态序列 ( ← h 1 , . . . , ← h T x ) (\xleftarrow[h_1]{},...,\xleftarrow[h_{T_x}]{}) ( h1,..., hTx)

对于每一个词 x j x_j xj我们获取其 annotation 是通过串联其前向隐藏状态 h j ⃗ \vec{h_j} hj 和其反向隐藏状态 ← h j \xleftarrow[h_j]{} hj,例如:
在这里插入图片描述
这样,annotation h j h_j hj包含前面的单词和后面的单词的概括。由于RNN更倾向于表示最近的输入,因此annotation h j h_j hj将集中在 x j x_j xj周围的单词上。解码器和对齐模型稍后使用该 annotation 序列来计算上下文向量。
在这里插入图片描述

4 EXPERIMENT SETTINGS

我们用该方法评估了英语到法语翻译任务,使用的是ACL WMT '14提供的双语平行语料库。作为比较,我们也测试了RNN编码器 - 解码器的性能。我们对两个模型使用相同的训练步骤和相同的数据集。

4.1 DATASET

WMT '14包含以下英法平行语料库:Europarl(61M),新闻评论(5.5M),UN(421M)和两个分别为90M和272.5M字的爬行语料库,总计850M。按照Cho等人 的步骤,我们使用Axelrod等人的数据选择方法将组合语料库的大小减小到348M。除了提到的并行语料库之外,我们没有使用任何单语数据,尽管可能使用更大的单语语料库来预训练编码器。我们连接了 news-test 2012 和 news-test-2013,以进行开发设置,并在WMT '14中的测试集(news-test-2014)中评估该模型,其中包含3003个不存在于训练数据的句子。

在通常的标记化之后,我们使用每种语言中30,000个最常用单词的候选名单来训练我们的模型。未列入候选名单的任何单词都会映射到特殊标记UNK中。我们不对数据应用任何其他特殊的预处理。

4.2 Models

我们训练两种模型。第一个是RNN编码器 - 解码器,另一个是我们提出的模型,称之为RNNsearch模型。我们对每个模型进行两次训练:首先使用长度最多为30个单词的句子(RNNencdec-30, RNNsearch-30),然后使用长度最多为50个单词的句子(RNNencdec-50,RNNsearch-50)。

RNNencdec 的编码器和解码器各有1000个隐藏单元。RNNsearch 的编码器由前向和后向循环神经网络(RNN)组成,每个神经网络具有1000个隐藏单元。它的解码器也有1000个隐藏单元。在这两种情况下,我们使用具有单个 maxout 隐藏层的多层网络来计算每个目标词的条件概率。

我们使用小批量随机梯度下降算法和 Adadelta 来训练每个模型。每个 SGD 的更新方向用80个句子的小批量计算。我们训练每个模型大约5天。

一旦模型被训练,我们使用集束搜索来找到具有最大条件概率的翻译。

<think>好的,我现在要解决用户关于深度可分离卷积在神经机器翻译中的应用的问题。首先,我需要回顾一下深度可分离卷积的基本概念。深度可分离卷积分为两个步骤:逐通道卷积(depthwise convolution)和逐点卷积(pointwise convolution)。逐通道卷积对每个输入通道应用单独的滤波器,而逐点卷积则使用1x1的卷积来组合通道信息。这种结构相比标准卷积能显著减少参数量和计算量,可能适用于需要处理长序列的机器翻译任务。 接下来,我需要查找深度可分离卷积在NMT中的具体应用案例。根据引用[3],提到分组卷积和多分支卷积用于增强表示能力,但用户的问题是关于深度可分离的。可能需要参考相关论文,比如MobileNet或Xception中的结构,但不确定这些是否直接应用于机器翻译。用户提供的引用中,引用[3]提到调整网络模块化组件,如使用1x1卷积来减少复杂度,这可能与深度可分离卷积的逐点卷积部分相关。或许在NMT模型中,用深度可分离卷积替换标准卷积层,可以降低计算成本,同时保持性能。 然后,考虑实现细节。在机器翻译中,编码器和解码器通常使用Transformer架构,但卷积结构如ConvS2S也曾被使用。用户可能想知道如何在这些模型中集成深度可分离卷积。例如,ConvS2S中的卷积层是否可以用深度可分离版本替代?这需要分析参数变化和计算效率的提升。此外,引用[2]提到encoder state vectors对句子长度和复杂度的限制,而深度可分离卷积的轻量性可能有助于处理更长序列,减少内存占用。 还需要考虑实际应用中的挑战。例如,在自注意力机制主导的Transformer中,卷积层的角色较小,但轻量化的卷积可能作为补充。或者,在资源受限的环境中,使用深度可分离卷积来构建更高效的NMT模型。另外,引用[3]提到显式建模通道间的依赖关系,深度可分离卷积的逐点卷积部分可能在这方面起到作用,但需要结合全局信息,如引用中提到的动态非线性依赖。 最后,生成相关问题需要考虑用户可能的后续疑问,比如具体实现代码、性能对比、优化方法等。确保回答结构清晰,分点说明应用场景、实现方法和优势,并结合现有引用中的知识点,如模型复杂度的降低(引用[3])和序列长度限制(引用[2])。</think>### 深度可分离卷积在神经机器翻译中的应用 深度可分离卷积(Depthwise Separable Convolution)是一种轻量化的卷积操作,通过将标准卷积分解为**逐通道卷积**(Depthwise Convolution)和**逐点卷积**(Pointwise Convolution)两步,显著减少参数量和计算复杂度。在神经机器翻译(NMT)中,它主要用于优化模型效率,同时保持或提升翻译质量。 --- #### 1. **实现方式** - **逐通道卷积**:对输入张量的每个通道独立进行卷积操作。例如,若输入有$C$个通道,则使用$C$个滤波器分别处理每个通道,输出维度保持为$C$。 - **逐点卷积**:通过$1 \times 1$卷积将各通道的信息进行线性组合,调整输出通道数。例如,若目标输出通道为$D$,则使用$D$个$1 \times 1$卷积核。 **代码示例(PyTorch)**: ```python import torch.nn as nn class DepthwiseSeparableConv(nn.Module): def __init__(self, in_channels, out_channels, kernel_size): super().__init__() self.depthwise = nn.Conv2d(in_channels, in_channels, kernel_size, groups=in_channels, padding="same") self.pointwise = nn.Conv2d(in_channels, out_channels, 1) def forward(self, x): x = self.depthwise(x) x = self.pointwise(x) return x ``` --- #### 2. **在NMT中的具体应用** - **替代标准卷积层**:在卷积神经机器翻译模型(如ConvS2S[^3])中,用深度可分离卷积替换标准卷积,减少计算量。例如,标准卷积的计算成本为$O(k^2 \cdot C \cdot D)$,而深度可分离卷积降至$O(k^2 \cdot C + C \cdot D)$,其中$k$为卷积核大小。 - **处理长序列**:由于参数更少,模型可处理更长的输入序列,缓解传统编码器对句子长度的限制[^2]。 - **轻量化部署**:在移动端或边缘设备中,深度可分离卷积可降低模型内存占用和推理延迟。 --- #### 3. **优势与挑战** - **优势**: - 计算效率高,适合实时翻译场景。 - 减少过拟合风险,尤其在训练数据有限时。 - 与自注意力机制(如Transformer)结合时,可构建混合架构,平衡全局依赖和局部特征提取[^3]。 - **挑战**: - 可能损失部分通道间的复杂相关性,需通过增加网络深度或调整超参数补偿。 - 在低资源语言翻译任务中,轻量化可能导致性能下降。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值