XLM跨语言模型-论文笔记

2023-11-10 08:20
文章标签 语言 笔记 模型 论文 xlm

本文主要是介绍XLM跨语言模型-论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 简介

跨语言模型XLMs。本文根据2019年Facebook AI Research的《Cross-lingual Language Model Pretraining》翻译总结。

XLMs有如下贡献:
1) 我们介绍了一个新的非监督方法,可以使用跨语言模型学习跨语言表述(TLM),同时研究了两个单语言的预训练,CLM和MLM。
2) 当并行数据(双语数据)可以获得时,我们引入了一个监督学习,来改善跨语言预训练。
3) 我们在跨语言分类、非监督机器翻译、监督机器翻译方面,显著超过了以前的优秀模型。
4) 跨语言模型可以显著改善低资源语言的困惑度perplexity。(低资源语言由于缺乏足够的标注数据及相关的专家知识,使得传统的基于大词汇量语音识别系统的关键词检测技术无法使用.)(perplexity是自然语言处理领域NLP中,衡量语言模型好坏的指标。它主要是根据每个词来估计一句话出现的概率,并用句子长度作normalize)。

2 Cross-lingual language models

我们将描述3个语言模型。其中两个仅需要单语言数据(非监督学习),CLM和MLM;第3个模型需要并行语句-双语数据(监督学习),TLM。

2.1 Shared sub-word vocabulary

参考文章:https://blog.csdn.net/sinat_25394043/article/details/104190431

通常在英文NLP任务中,tokenization(分词)往往以空格为划分方式,但这种传统的分词方法还是存在一些问题,如:
• 传统词表示方法无法很好的处理未知或罕见的词汇(OOV问题)
• 传统词tokenization方法不利于模型学习词缀之间的关系
• E.g. 模型学到的“old”, “older”, and “oldest”之间的关系无法泛化到“smart”, “smarter”, and “smartest”。
• Character embedding作为OOV的解决方法粒度太细
• Subword粒度在词与字符之间,能够较好的平衡OOV问题
针对这些缺点,越来越多人开始使用subword的相关tokenization方法,具体方法主要有BPE,WordPiece等。
XLMs应该是先tokenizer,再BPE。

BPE,(byte pair encoder)字节对编码,也可以叫做digram coding双字母组合编码,主要目的是为了数据压缩,算法描述为字符串里频率最常见的一对字符被一个没有在这个字符中出现的字符代替的层层迭代过程。具体在下面描述。该算法首先被提出是在Philip Gage的C Users Journal的 1994年2月的文章“A New Algorithm for Data Compression”。

在XLMs所有的实验中,我们使用Byte Pair Encoding (BPE)创建的共享的词汇表。当跨语言间共享相同的字母表、数字、专有名称时,BPE会显著改善跨语言embedding空间的对齐,

我们通过在单语言库中随机采样的语句的级联来学习BPE分割。语句是通过一个概率的多项式分布采样的,其中每个概率q公式如下:
在这里插入图片描述

比如在α=0.5时,采样会增加低资源语言的token数量,而减轻向高资源语言的偏差。实际上,这防止了低资源语言被分割到字符级水平。

2.2 Causal Language Modeling (CLM)

非监督学习、单语言。
CLM采用Transformer,预测给定前面单词情况下预测下一个单词的概率。

2.3 Masked Language Modeling (MLM)

非监督学习、单语言。
将BPE tokens的15%随机替换掉,其中80%采用[MASK]替换,10%采用一个随机的token,10%保持不变。

2.4 Translation Language Modeling (TLM)

TLM是MLM的扩展,将单语文本流替换成concatenate的并行语句。在源语句和目标语句都采用随机mask。比如英语-法语翻译,为了预测一个英语语句中被mask的单词,模型会既利用已有的英语单词,也会利用输入的法语(尤其是当英语上下文不足时)。模型会尝试对齐英语和法语的表述。

MLM和TLM模型如下图:
在这里插入图片描述

3 实验结果

对于汉语、日语、泰语,我们分别使用的tokenizer of Chang et al. (2008)、the Kytea4 tokenizer,
and the PyThaiNLP5 tokenizer。其他语言使用的the tokenizer provided by Moses (Koehn et al., 2007),当必要时,会使用默认的English tokenizer。

然后使用fastBPE(https://github.com/glample/fastBPE)学习BPE,分割单词到subword 单元。

3.1 Cross-lingual classification

在预训练的Transformer的第一个隐藏单元的顶部,增加一个线性分类器,然后微调所有参数。

实验结果如下,可以看到XLM成绩最优。
在这里插入图片描述

3.2 Supervised machine translation

BT:back translation,反译。
在这里插入图片描述

3.3 Low-resource language model

Nepali:尼泊尔语,Hindi:印地语。
不同语言间可能有些类似的锚定点(n-grams anchor points),所以跨语言模型可以利用英语、印地语的这些,来改善尼泊尔语。实验结果如下:

在这里插入图片描述

这篇关于XLM跨语言模型-论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381466

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五