ACL 2020 | 面向序列标注任务的“集百家所长”多语种模型来了!

2023-11-01 08:30

本文主要是介绍ACL 2020 | 面向序列标注任务的“集百家所长”多语种模型来了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上海科技大学和阿里巴巴发布了一篇被ACL2020收录的论文《Structure-Level Knowledge Distillation For Multilingual Sequence Labeling》,论文针对在自然语言处理中的序列标注任务中,多语种模型的表现不及各个语种单独的模型做出了改进,通过知识蒸馏的手段,从各个单语种模型中学习到结构层级的知识,训练一个新的多语种模型,缩短了多语种模型跟各个语种单独模型之间的差距。在4个任务的15个数据集上,文章提出的模型表现都优于多个经典的baseline模型。同时,对于那些缺乏数据的小语种具有较强的泛化能力。

图1 论文信息

论文链接:

https://arxiv.org/pdf/2004.03846.pdf​arxiv.org

 

简介

序列标注是自然语言处理的一类重要的任务,常见的有命名实体识别,词性标注等等,它能够提供一些额外的信息,从而对于下游的自然语言处理任务有着重要影响。大多数当前的序列标注任务都是针对单个语种的,当需要把模型跨语种迁移到那些缺乏语料的语种上时依旧需要训练单独的模型。全世界有7000多种语种,在每个语种上都单独训练一个模型是非常消耗时间跟精力的事情,其中还有很多小语种是严重缺乏足够的训练语料的。因此,训练一个针对多语种的模型显得十分必要,于是MultilingualBERT横空出世。不过,它的效果比不上各个单语种模型,这是因为单语种模型利用了各种强大的预训练好的词表征能力。

对此,文章利用了知识蒸馏,将各个具有强大表征能力的单语种模型的知识迁移到一个多语种模型。知识蒸馏,是通过训练一个student模型去尽可能的模仿teacher模型的预测,希望得到一个较小较快的student模型,同时尽可能具备teacher模型强大的预测能力。

背景

在BiLSTM-CRF中,给定一个输入序列 [公式]和它对应的预测标签 [公式] ,,通过BiLSTM得到的上下文表达可以表示为 [公式] ,则对应的条件概率可以按以下公式计算。其中 [公式] 跟 [公式] 是相应的状态跟转移函数的参数, [公式] 是序列开始的标记。

公式一:

公式二:

相应的负对数似然函数可以表示为:公式三:

最常见的知识蒸馏方法的损失函数如下公式四所示,后续实验中提及的Emission模型就是已经这样的方式得到。公式四:

方法

关于如何从多个单语种模型中通过蒸馏出结构层级的知识从而学习到一个多语种的序列标注模型,文章提出两种方法,一种是Top-K蒸馏,是通过近似最小化teacher跟student的结构层级概率分布得到的,另一种是后验蒸馏,通过聚合结构层级的知识到局部后验概率分布,然后通过最小话两者的局部后验概率分布得到。详情可见图2。

图2 论文模型图

Top-K蒸馏通过维特比算法,得到预测得分最高的K个预测序列,将他们通过公式五的方式计算,可以得到student模型的概率分布关于teacher模型的概率分布的条件期望的一个有偏估计。其中 [公式] , [公式] 分别表示student模型与teacher模型的预测结果。

公式五:

在基本的Top-K方法中,当K变大后效果会变得愈发糟糕。一种改进的方式是加权Top-K,如公式六和公式七所示,其基本思想就是对K个不同的预测序列赋予不同的权重,得分越高的序列赋予更高的权重。

公式六:

公式七:

在Top-K的方法中,当K增大时计算量会增加,进而速度会变慢。文章由此提出另一种方法后验蒸馏,具体的计算方法如公式八和公式九所示。

公式八:

公式九:

当选定好蒸馏方法后,对于任何语种的语料数据,会利用单语种的teacher模型去计算得到Top-K的预测序列或者后验分布,然后多语种的student模型会从这些硬标签跟软标签去联合学习,最小化如下的损失函数,如公式十所示,依次遍历所有语种,训练得到一个多语种的student模型。

公式十:

实验结果

文章在四种不同的序列标注任务中进行了实验,对应的数据集有CoNLLNER,WikiAnnNER,UniversalDependencies和AspectExtraction。具体实验结果如图2所示。其中,Baseline指的是没有经过知识蒸馏而训练得到的多语种模型,Emission模型指的是KD采用Emission的模型,Top-K、Top-WK和Posterior指的是文章提出来的新模型,Pos.+Top-WK指的是混合了Top-WK跟Posterior的模型。

主要有以下六个结论:

  • 在大部分实验中,采用BiLSTM-CRF的多语种模型效果要优于采用BiLSTM-Softmax的多语种模型。这也跟当前序列标注任务的现状是一致的。
  • 单语种的teacher模型效果要优于多语种的student模型。大概率是因为单语种的模型拥有强大的词嵌入,能够提供额外的信息,而这时多语种的student模型所不具备的。
  • Emission模型不具备迁移知识的能力,在大部分数据集上表现都不及baseline模型。
  • Top-K跟Top_WK都要优于baseline模型,其中Top-WK的效果要优于Top-K。
  • Posterior在大部分数据集上都取得最好的效果。
  • Top-WK+Posterior的效果介于Top-WK和Posterior之间。

图3 实验结果图

换句话说,可以归纳为:Posterior>Top-WK+Posterior>Top-WK>Top-K>Baseline>Emission.

总结

文章的主要贡献是,在序列标注任务中,提出了两种结构层级上的知识蒸馏手段,Top-K蒸馏跟后验蒸馏,能够从单语种的teacher模型中蒸馏出知识,学习出一个多语种的student模型。在4个不同任务的25个数据集上,验证了文章提及的这两种方法相对于原有的方法都有一定的提升。

高效可行的多语种模型训练方法,对于数量众多的语言种类而言,不必再去对每种语言训练一个单独的模型,是一种行之有效的解决方法。同时,对于那些相对小众的语种,也具备较强的泛化能力。文章提出的这些方法,在序列标注任务中具有一定的前景,能为下游的一些自然语言处理任务。例如,情感分析、意图识别等提供一定的帮助,值得后续更多更深入的研究。

这篇关于ACL 2020 | 面向序列标注任务的“集百家所长”多语种模型来了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux权限管理与ACL访问控制详解

《Linux权限管理与ACL访问控制详解》Linux权限管理涵盖基本rwx权限(通过chmod设置)、特殊权限(SUID/SGID/StickyBit)及ACL精细授权,由umask决定默认权限,需合... 目录一、基本权限概述1. 基本权限与数字对应关系二、权限管理命令(chmod)1. 字符模式语法2.

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系