WMT2021-新闻-wechat

WeChat Neural Machine Translation Systems for WMT21

Abstract

英中,英日,日英,英德 方向,以Transformer为基础。做了数据过滤,大规模合成数据生成(回译,知识蒸馏,前向翻译,迭代领域知识迁移),微调(作者说是先进的微调),模型集成(boosted Self-BLEU based model ensemble),

Introduction

主要通过增加模型体系结构和合成数据多样性来提高模型性能。
# 模型架构
Pre-Norm Transformer, Post-Norm Transformer,对于Post-Norm应用了初始化方法防止梯度消失问题(https://github.com/layer6ai-labs/T-Fixup)
整合了AAN和多头机制。并且引进了Talking-Heads Attention,该机制在所有变体中展示了显著的多样性

# 合成数据
使用了large-scale back-translation去利用target-side单语数据,使用序列级别的知识蒸馏利用双语数据的source-side。为了使用源端单语数据,我们利用集成模型进行正向翻译,以获得一般的领域合成数据。使用域内迭代知识转移来生成领域内数据。为了提高模型的鲁棒性,提出了多个数据增强方法,包含不同的token-level noise和动态的top-p采样。

# 训练策略
主要关注在condidence-aware scheduled sampling(置信度计划采样),target denoising(目标去燥)和graduated label smoothing(分层标签平滑)对领域数据。

# 模型集成
关注在高潜力的候选模型,使用两个指标:model performance(使用BLEU评分),模型的多样性(使用Self-BLEU),作者使用基于self-bleu的矩阵搜索搜索的版本在selected model和candidate models中搜索。观察到,通过使用这种新颖的方法来实现与蛮力搜索相同的 BLEU 分数,可以节省大约 95% 的搜索时间

Model Archtectures

model configurations

加深加宽模型,20/25 layer encoders和1024的hidden size对于所有模型。并且增加了decoder的深度为8,10可以带来确信的提升和多样性。
对于wider模型,作者尝试8/12/15encoder layers和1024/2048 hidden size,15000/12000/8192的filter size。以上的设置对所有变体都适用。

Transformer with Diffetent Layer-Norm

使用Pre-Norm作为基线模型,因为它的性能和稳定性优于Post-Norm。
新的研究证明Post-Norm的不稳定训练可以通过修改网络初始化来缓解,并且效果要比Pre-Norm的效果好。 Improving transformer op-timization through better initialization.
在实验过程中,作者发现后范数模型与前范数模型相比具有良好的多样性,并能有效地提高模型集成的性能。

Average Attention Transformer

使用简单直接的平均注意力替换decoder中的自注意力计算,并且没有性能的损失。在作者的初步试验中发现AAN和Transformer之间的self-BLEU评分低于Deeper和Wider Transformer。

解码时,对于step=k的输入embedding y k y_k yk的上下文表示是:

Weighted Attention Transformer

探讨了三个加权策略来改进AAN中之前位置的历史信息建模。三种方法包括:递减权值,可学习的权值和指数权值。其中实验表示指数权值的表现最好:

其中 α = 0.7 \alpha=0.7 α=0.7

Mix-AAN Transformer

为了获得更有效和多样化的模型,组合了AAN和self attention。对于每一层的decoder包含Masked Attention sub-layer,Multi-head Corss Attention sub-layer 和Feed-forward sub-layer。将Average Attention称为average layer。通过不同形式组合来形成不同的模型架构。每一层都包含三个sub-layer,但是Masked Attention 将使用Average Attention和self Attention的输出去计算一个平均和的hiddent states,将这样的计算成为双重注意力。

作者实验了三个变体:

(a) Average First Transformer, (b) Average Bottom Transformer and © Dual Attention Trans-former.

实验中Mix-AAN并不是performs better但是表现出了很强的多样性比原始的transformer。使用四个Mix-AAN模型集成比10个deeper和wider模型集成效果更好。

Talking-Heads Attention

在多头注意力中,每个的计算是分离独立进行的。此方法插入两个可学习的线形映射权重 W l , W w W_l,W_w Wl,Ww去改变attention-logits和attention scores,在不同头之间移动信息。

作者将该方法应用在encoder和decoder,这个方法在只有微小的性能损失下在所有变体中表现出不凡的多样性。

System Overview

四部分组成,数据过滤,大规模合成数据生成,领域微调和集成。其中合成数据生成包括通用领域和领域数据生成。

Data Filter

  • 使用Moses脚本normalize punctuation,除了日语
  • 过滤句子长度大于100并且一个单词长度大于40
  • 过滤重复的句子对
  • 单词个数比率不能超过1:4
  • 使用fast-text过滤掉不匹配的语言对
  • 拥有不合法的Unicode字符
  • en-zh方向,过滤掉汉语句子中含有英文字符的句对(这个感觉有点不太合理!?)
  • 单语数据用n-gram进行过滤

General Domain Synthetic Data

# Large-scale Back-Translation
使用了不同的生成策略
 - beam search:beam size=5
 - sampling top-K:K=10,在decoding过程中随机的从前十个单词中选择
 - dynamic sampling top-p:从累积概率质量超过0.9-0.95的集合中选
 
# Knowledge Distillation 
从teacher model转移知识到student model
首先使用teacher models去生成合成数据(forward direction)
然后使用生成的数据去训练学生模型。从右到左的知识提取是对从左到右的知识很好的补充,可以进一步提高模型性能。

# 前向翻译
使用集成模型去生成高质量的前向翻译结果,在英中和英德方向都有一些提升

# Iterative In-domain Knowledge Transfer
这项技术在英中方向没有什么提升。
首先使用一个正常的微调让模型具有领域的知识,然后模型集成去翻译src的单语数据到tgt,下一步,组合真假数据,重新训练。

# Data Augmentation 
伪数据构造完成之后,作者添加多级的噪声来进一步获得不同的数据。
 - token-level:在每一个subword上,bpe之后
 - word-level:before bpe
 - span-level:before bpe,连续的tokens序列
使得数据更加有噪音,训练替换,删除,排列。在每个句子中以平行的方式应用这三种噪音类型。启用这三个操作的概率是0.2。
此外,一种实时噪声方法被部署到合成数据。利用动态噪声对模型进行训练,使模型在每个阶段都使用不同的噪声,而不是整个训练阶段都使用相同的噪声。

# in-domain finetuning
探索了几个微调的方式,来加强领域微调的影响和缓解曝光偏差问题(在领域迁移是一个重要问题)。

## target Denoising
因为有tracher forcing,作者在finetuning的嘶吼,在解码端添加噪音,选择30%的数据添加噪音,15%的概率随机替换目标句的第i的token。

## Graduated Label-smoothing
在小数据的情况下微调会导致过拟合,模型输出的概率会很自信,所以作者对这种概率值很大,很自信的输出进行更高的惩罚。在微调阶段,设置token预测概率概率高于0.7的smoothing penalty=0.3,概率低于0.3的为0,其他的为0.1

## Confidence-Aware Scheduled Sampling
通过计算模型的置信度来确定是否让模型生成token。

## Boosted Self-BLEU based Ensemble (BSBE) 
将self-bleu和bleu结合起来,贪婪搜索训练最优的集成模型

结果

不同技巧的BLEU

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3Wc28Gd-1631617807628)(https://www.tzer.top/usr/uploads/2021/08/1706727530.png)]

深度宽度网络和Mix-AAN网络的集成效果对比

搜索算法的时间和性能

不同微调方法

Tensor2Tensor是一个强大的库,用于序列到序列的任务如机器翻译。如果你想使用它来下载和预处理WMT-德(English-German)数据集,通常你需要按照以下步骤操作: 1. **安装依赖**: 首先,确保你已经安装了TensorFlow,因为Tensor2Tensor是基于TF构建的。你可以使用pip命令安装: ``` pip install tensorflow==1.x # 因为Tensor2Tensor支持的是旧版本的TensorFlow ``` 2. **下载数据**: 在Tensor2Tensor的GitHub仓库中,包含了WMT数据集的脚本。访问[这里](https://github.com/tensorflow/tensor2tensor/tree/master/tensor2tensor/data_generators/wmt16)下载`wmt16_translate.py`文件,并将其复制到你的项目目录。 3. **获取数据**: 运行这个脚本,提供适当的参数来下载数据。例如,你可能需要指定源语言、目标语言和其他选项,比如: ``` python wmt16_translate.py --train_steps=0 --decode_hparams="beam_size=4,alpha=0.6" --model=transformer --hparams_set=transformer_base --decode_from_file=training_data.txt --decode_to_file=translated_data.txt ``` `--data_dir`指定了存放数据的位置,`--problem`指定了问题类型(在这个例子是英德翻译),`--train_steps`设为0表示只做推理不做训练。 4. **预处理**: Tensor2Tensor会自动处理基本的文本预处理步骤,包括分词、编码等。数据会被转换成适合模型输入的格式并保存在`data_dir`下。如果你需要更复杂的预处理,可以在`wmt16_translate.py`中调整参数或自定义函数。 5. **检查和准备数据**: 检查`data_dir`下的结果,确认文件是否已创建并且大小合适。可能需要将数据切分为训练和验证集,这取决于Tensor2Tensor的具体用法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值