作者:刘聪NLP
学校:中国药科大学 药学信息学硕士
专栏:NLP工作站
来自:机器学习算法与自然语言处理
本次分享的论文CoSDA-ML,作者是忆臻老哥 @忆臻,还有国内的两位NLP领域知名的青年才俊老师,车万翔老师和张岳老师,论文收录于IJCAI2020,全名为CoSDA-ML: Multi-Lingual Code-Switching Data Augmentation for Zero-Shot Cross-Lingual NLP,即对于自然语言处理跨语言零样本学习的多语言code-switching数据增强方法。
论文地址:https://www.ijcai.org/Proceedings/2020/0533.pdf
GitHub地址:https://github.com/kodenii/CoSDA-ML
目前,深度学习已经称霸绝大多数自然语言处理任务,甚至在某些任务可以媲美人类的表现;但使用深度学习模型的基础是具有大量可用的标记数据集去训练模型。对于英文和中文两大语言来说,存在各种任务的人工标记数据集,但是对于其他语言来说,人工标记的数据可能很少,更甚者,对于一些语言,几乎无法获取到任何标注数据。
那么如何从具有丰富资源的语言中学习知识来提高低资源的语言模型性能呢?甚至如何在没有目标语言的标记数据的情况下完成任务呢?
在上述情况下,人们提出了,跨语言迁移学习和小样本或零样本学习,去解决资源匮乏的自然语言处理任务。
多语言上下文词嵌入模型,例如:multilingual-BERT(mBERT),已经在各种零样本跨语言任务中显示出成功。但是mBERT是基于混合多国语料训练,没有显式的跨语言对齐信号。为了解决这个缺点,目前主流fine-tuning做法都聚焦于想办法学习到映射矩阵W,进行对齐。但是这个方法仍然存在一个缺点,就是一次只考虑一对源语言和目标语言,因此导致每种目标语言要有单独的模型,如图1(a)所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7dfa5979acca2a36bda3387f67d3f350.png)
该论文在考虑不创建多个额外模型的情况下,提出通过动态地构造多语言code-switching方法进行数据增强(如图1(b)),来更好地微调mBERT,使其在一个模型的基础上,可以适配更多种目标语言任务。
mBERT模型
mBERT模型与BERT模型具有相同的模型架构与训练过程,采用了12层Transformer编码器,但是在训练过程中,mBERT模型不只是接受单一语言的数据进行训练,而是在104种语言的维基百科数据上进行训练的,并且共享一个词汇表,这样mBERT模型可以跨语言共享词嵌入表征。
换句话说,就是预训练过程,不是仅使用英文或中文数据,而是使用很多种语言数据一起训练,并且拥有一个大的词汇表,使词嵌入的表征具有跨语言性。
Fine-tuning mBERT for Classification
给定来自于源语言序列 ,通过添加特定的标记来构造模型输入序列
,进入mBERT模型后,得到输出
。
对于分类任务,mBERT将 通过全连接层,映射到标签
上:
Zero-Shot Cross-Lingual Adaption
mBERT基线模型,是在源语言任务上训练,通过直接用于目标语言来完成零样本跨语言迁移任务。
CoSDA-ML方法
方法如图2所示,在Fine-tuning下游任务时,先对源语言进行多语言code-switching数据生成,即将“It's a very sincere work”数据,变化成“It's a 非常 aufrichtig work”。微调结束后,直接对目标语言来完成零样本跨语言迁移测试。
![](https://i-blog.csdnimg.cn/blog_migrate/97db12e3750dfe5538ac9aac888b1544.png)
注意:这里对源语言进行多语言code-switching是动态进行的,即对每一次训练batch_size数据进行动态生成,算法如图3所示,
![](https://i-blog.csdnimg.cn/blog_migrate/127ba80ed8b17a21236bcdf1458e7781.png)
该数据增强算法方法由三步组成:句选择、词选择和替换选择。
![](https://i-blog.csdnimg.cn/blog_migrate/597d0d909c9d8ea1eb8424cced3a0ad4.png)
Sentence Selection
在给定批次训练数据的情况下,随机选择语句来生成code-switching语句。未选择的句子保留在原语言中。以图4(b)中的句子为例,随机选取第一个句子和第三个句子,而保留第二个句子不变。
Token Selection
对上一步骤中被选到的句子,进行随机选择要翻译的词语。以图2(c)为例,选择第一句中的“very”和第三句中的“What”。
Replacement Selection
对上一步骤中被选到的词语,根据双语词典随机选择目标语言。如图2 (d)所示,不同的目标语言可以在code-switching生成的数据中混合使用。
值得注意的是,源语言中的单词在目标语言中可能有多种翻译结果。在这种情况下,该论文随机多种翻译结果中的任意一个作为替换目标语言词语。该论文任务尽管不能保证这是上下文中正确的对应翻译,但可以将其视为任务中的数据增强(增加部分噪音)策略之一。
通过code-switching数据增强,模型可以根据目标语言中被替换的词和源语言中原始词相似的上下文信息,自动将它们对齐到相似的向量空间中。
Results
Natural Language Inference
![](https://i-blog.csdnimg.cn/blog_migrate/09988eb79a93534174ec71665b5b7067.png)
Sentiment Classification
![](https://i-blog.csdnimg.cn/blog_migrate/49d6c64cf81d69f4ae11a81631d78ff9.png)
Document Classification
![](https://i-blog.csdnimg.cn/blog_migrate/ecb5b6236a4790a705e296bcfcfcd0cc.png)
Dialogue State Tracking (DST)
![](https://i-blog.csdnimg.cn/blog_migrate/cd9c475ce1a67d555bdac00f2e1b003b.png)
Spoken Language Understanding
![](https://i-blog.csdnimg.cn/blog_migrate/cea5386cd3d92493a57b9a2b40243677.png)
在上述五个任务上,CoSDA-ML数据增强方法,具有明显提高。
Analysis
鲁棒性分析
为了验证CoSDA-ML方法的的鲁棒性,该论文在微调过程中,使用了不同标记替换率 ,但始终保持句子替换率
为1。实验结果如下图所示,
![](https://i-blog.csdnimg.cn/blog_migrate/d5e968737dcf7e5ed598f6c78b441e8b.png)
可以看出,当大于0.7时,CoSDA-ML方法效果均高于目前sota模型,证明该方法具有一定的的鲁棒性。
训练数据量分析
该论文,在不同数量的训练数据,进行微调,探究CoSDA-ML方法在极少数据情况下的有效性。实验结果如下图所示,
![](https://i-blog.csdnimg.cn/blog_migrate/8eb7899b3786491341432d9c71975a13.png)
可以看出,仅使用1/10的训练数据,就可以到达目前sota模型的效果。
动态采样分析
该论文为了验证,所提出的动态增强机制的有效性,与静态增强方法进行了比较。结果如下图所示,
![](https://i-blog.csdnimg.cn/blog_migrate/7ddf35a7d1839cdbe0527ace1f1932a2.png)
可以看出,动态方法在所有任务上都优于静态方法。该论文认为,动态机制由于在训练过程中生成更多变化的多语言code-switching数据,使模型在多种语言中将更多的词语进行对齐。
可视化分析
为了验证源语言与目标语言的表示是否真正对齐,该论文选择了包含三种语言的100个句子的【CLS】向量。结果如下图所示(a为mBERT,b为CoSDA-ML),
可以看出,mBERT在具有相同意图的多种语言表示是间隔较远的;相反,使用CoSDA-ML方法微调后模型的相同意图的多种语言表示变得更接近并相互重叠,进一步证明了方法有效且成功地使不同语言的表示更接近。
方法的迁移性分析
为了验证,CoSDA-ML方法对Transformer之外的其他编码器是否有效,该论文将CoSDA-ML方法使用了在biLSTM上。结果如下图所示,
可以看出,使用了CoSDA-ML方法后,结果有了明显的提示。
总结
该论文提出了一种数据增强的方法,通过生成多语言code-switching数据来微调mBERT模型,从源语言和多目标语言对齐语义表示。
个人非常喜欢该篇论文,思路很正,效果明显,做跨语言、零样本或小样本学习的小伙伴,可以看过来~~~~
下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!
后台回复【五件套】
下载二:南大模式识别PPT
后台回复【南大模式识别】
说个正事哈
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。记得备注呦
推荐两个专辑给大家:专辑 | 李宏毅人类语言处理2020笔记专辑 | NLP论文解读专辑 | 情感分析
整理不易,还望给个在看!