其他分享
首页 > 其他分享> > 笔记:读Contextual String Embeddings for Sequence Labeling

笔记:读Contextual String Embeddings for Sequence Labeling

作者:互联网

笔记:Contextual String Embeddings for Sequence Labeling

作者:Akbik A et al.,COLING 2018

目录

1 Major Work

本文作者主要提出了一种新型embedding--上下文相关的字符级LM预训练得到的contextual word embedding。

2 Typical Embedding

本小节主要阐述此前三类主流的embedding,以及这三种embedding与本文作者提出的embedding的不同之处。

  1. 经典的word embeddings(Pennington et al., 2014; Mikolov et al., 2013),在大型语料库上预训练进而使embedding捕获其潜在的句法和语义相似性,如Word2Vec、GloVe等。
  2. character-level的特征(Ma and Hovy, 2016; Lample et al., 2016:分别使用一维CNN和Bi-LSTM对序列中每个词的字符训练得到character-level的词表示),没有采用如LM建模进行预训练,而是直接在监督任务数据上进行训练,捕获字符级或者说subword(如前后缀)的与特定任务相关的特征。
  3. Contextualized word embeddings (Peters et al., 2017; Peters et al., 2018:均使用LSTM建模的LM做预训练,得到的word embedding作为特征加入task-specific的序列标注模型结构中,区别在于word embedding的结合方式以及加入序列标注模型结构的位置不同),捕获词在上下文中的语义信息进而能够处理一词多义的问题以及词的context-dependent的特性。

本文提出的contextualized character-level word embedding结合了以上提到的embeddings的最好的特性,即(1)在大型无标注语料库上预训练; (2)捕获上下文相关的词义,因此不同context它的word embedding可能使不同的即一词多义; (3)以字符序列的形式作为输入来对词及其上下文进行建模,因此能够更好的处理lookup table中的rare word以及输入序列中拼写错误的单词的问题,同时由于使用字符级的也能获取subword信息,如前后缀信息等。

总得来说本文作者提出了一种方法可以为sequential context(句子上下文)中的任何字符串生成一个这样的contextualized embedding, 因此将其称为contextual string embeddings。

3 Contextual String Embeddings

3.1 整体流程

首先本文所提出方法的整体的结构如下图Figure 1所示。

下面黄色的是字符级的预训练语言模型,上面蓝色的就是特定任务需要用到的序列标注模型,大致流程Figure1注释已经说的很清楚了。

3.2 Embeddings Extraction

如下图Figure2所示,为一个序列中Washington这个词contextual string embedding提取的示意图。

本文采用双向LSTM对LM进行建模,大致流程Figure2注释也挺详细的。

“本文模型的主要特点”\(^{[2]}\):

  1. 建模LM以character为基本的数据结构--基本单位,因此可以每个输入文本看作一个字符序列,喂给LSTM根据之前的预测来对当前字符进行预测,这同时也就意味着序列中每个字符都有一个hidden state,不同于word-level的embedding LM是序列中每个词对应有一个hidden state。(或者也可以这么理解其实和word-level一样只不过现在每个单词长度都为1,只有一个字符,因此任意一个字符串(\(c_i-c_j ->h_i-h_j\)),可能不是个词但其本质和单词一样都是字符串)

  2. 每个字符都有一个hidden state后,输出以word为单位的embedding,这个embbeding由前向LSTM中,该词最后一个字母的hidden state 和反向LSTM中该词第一个字母的hidden state拼接组成,这样就能够兼顾上下文信息,如上图Figure2。(其实其他字符串的word-level的表示也可以拿到,如“ge Wash”,就是后向LSTM中字符g的后向hidden state与前向LSTM中字符h的前向hidden state的拼接)

3.3 Sequence Labeling Architecture

本文作者采用BiLSTM-CRF(Huang et al. (2015))结构,作为处理处理下游序列标注任务的模型。

之前通过LM拿到的word embedding作为此模型的输入,同时为了定性的评估以及参照之前的最优方法都是多种embedding结合的方式作为final embedding,本文作者也定性的做了多组实验,详见4 Experiments。

4 Experiments

Table1表示在不同序列标注任务中的性能与之前SOTA性能的对比,如下图Table1所示。

Table2表示多种embeddings采用不同的结合方式后的final embedding在不同任务上的性能对比,其中表格中PROPOSED表示文中提出的embedding, word代表经典预训练embedding, char表示任务相关的embedding,+ALL代表以上所有的embedding再加上contextual embedding(peters et al.,(2018)由于原论文embedding只分布在English,所以+all只在English上做了实验),可以看出本文的动态embedding + 经典预训练word embedding的组合最有效,char-embedding加不加基本没有影响\(^{[2]}\)。

为了进一步探索本文提出的embedding的内容,作者直接去掉BiLSTM或CRF用了前馈线性结构来代替即Table3中的Map,这样就能排除效果好可能也有BiLSTM-CRF影响定性分析,全连接层对输入Proposed embedding只不过做了一个线性非线性的变换如Eq (12)(13),对Proposed和Classic Word Embedding都做了这个替换操作进行实验,如图可知去掉BiLST层后对Proposed Embedding影响不是很大相比Classic Word Embedding,说明Proposed Embeding对于整体性能的提升的作用是很大的。

5 Conclusion

这里就直接借用原文以及参考[2]的总结了,总结的挺好的,如下图所示。另外该方法相比Bert或ELMo(数据量参数量很大,如ELMo使用32个GPU训练了五周)来说,首先性能是有竞争力的,其次效率高单个GPU训练一周就达到了实验中的性能。

“一句话总结:使用BiLSTM模型,用动态embedding取代静态embedding,character-level的模型输出word-level的embedding. 每个词的embedding和具体任务中词所在的整句sequence都有关,算是解决了静态embedding在一词多义方面的短板,综合了上下文信息。”\(^{[2]}\)

参考

[1] Alan Akbik.Duncan Blythe.Roland Vollgraf.Contextual String Embeddings for Sequence Labeling.COLING 2018.

[2] 凌波微步_Arborday.论文阅读笔记:《Contextual String Embeddings for Sequence Labeling》.博客园 2018.https://www.cnblogs.com/Arborday/p/9960031.html.

标签:字符,word,String,Sequence,level,embedding,序列,Embeddings,LSTM
来源: https://www.cnblogs.com/n-ooo/p/15780753.html