0%

Recent Language Model Papers

Recent Language Model Papers

最近的语言模型和词嵌入的文章,有的读的仔细点,有的略读,不断更新中。

1.AlBert

https://openreview.net/forum?id=H1eA7AEtvS ,ICLR’20, by Google, SOTA in GLUE.

一个轻量级的BERT但是效果更好。它所做的修改主要有:

  • 首先把词向量矩阵分解了,这样使词向量矩阵的维度和hidden_size解耦,否则词向量矩阵参数量太大。

  • 把每层的参数共享了,减少参数数量。

  • 在这个基础上,能够把hidden_size提高到6144这种量级。

  • 为了对句子级别进行建模,ALBERT增加了一个sentence order prediction(SOP)任务而不是被证明太简单基本无效的NSP任务,给定当前句子与其下一句,或者是顺序翻转的两句话,希望模型预测句子序是否准确。

2.GPT-3,一个看看就好的单向语言模型

http://arxiv.org/abs/2005.14165 ,By OpenAI。

回想去年年底,我在尝试在GPT-2 Small(127M参数)模型的基础上搞点东西的时候,还在想这玩意fine-tune有点慢,batch size设不大啊。害,现在拿到论文只能看看人实验结果了,连下载模型的想法都不会有~

GPT-3,一个最大175Billion参数的基于Transformer-decoder的单向自回归语言模型。希望解决的就是pretrain-fineTune这套框架。他们觉得这套框架虽然解决了task-specific Model的问题,但是没有解决task-specific data的问题,所以领域相关数据还是导致应用很受限。

因此,他们提出来了三种使用预训练模型的方式:Zero-shotOne-shotFew-shot,但是这和我们通常所理解的这几个概念不同,它这几种setting,本质上都是zero-shot。预训练只使用了大规模的无标记语料(45TB!),而在做某个任务的时候,在一句自然语言的prompt之后,会跟上0, 1, n个例子,就像是英语听力考试的时候前面那个示例题。那这是不是作弊呢?反正,没有反向传播过程,模型是不会记得自己见过这些数据的,而且这几个随机选择的例子和任务中的sample可能差别很大。

所以在这种Train&Use的setting下,这位model structure和GPT-2相同仅仅是参数量、数据量提高若干倍的选手,它的成绩是:

Cloze任务,Lambada SOTA,其他两个接近。QA任务,TrivialQA SOTA,其他两个还行。NMT:1/6接近SOTA,NMT要是再这样就SOTA那就没得玩了。CSR-QA,离SOTA差一些。SuperGlUE离SOTA差挺多的。。。。实验的任务挺多,就不细说了。Learning and using novel words这个实验里举的例子还是挺有意思的。

最后,新闻要放在一起看。希望OpenAI别去做Code Generation。-_-

人类成功分辨GPT-3和人工文章的准确率与微软用AI替换新闻编辑

3. Analysing Lexical Semantic Change with Contextualised Word Representations

http://arxiv.org/abs/2004.14118 ,ACL’20,by 阿姆斯特丹大学。

(0)术语翻译和理解

词汇语义:word meaning/lexical semantic,每个词汇(word and sub-word)表达的概念。

词形:word form。类似’girl’和’girls’。

词义:word sense,在不同context下一个单词表现出的语义,同一个word form可能有不同的word sense。在本文中和word usage意义接近,但是是一种更加离散化的usage。可以对应中文“义项”。

word usage:语料中word的每次出现。

历时性语料:diachronic corpus,由不同时期的文本所组成的语料,可以用来分析词汇语义变化。

silhouette score:一种计算聚类得分的方式,类内元素一致性越高&类间元素相似度越低,则该得分越高。

(1)解决的问题

预训练的词向量使用一个语义向量来表示一个单词的语义,现在的预训练词向量工作能够衡量不同语境context下的语义。但是每一种自然语言实际上都是在不断演化的。同样地,语言中词汇的语义也是随着时间变化的,比如,英语中的“girl”在14世纪表示小孩子而现在表示小女孩。如何去表示、比较单词在不同时期的语义呢。

词义变化检测(lexical semantic change detection)尝试检测以及归纳词汇语义变化的规律,并用可以量化和复现的方式评估这个过程。

似乎这个词也会被翻译为历时词义演变

(2)已有的方法

已有的词义变化检测方法可以归纳为两种,

第一种是form-based方法。这种方法在历时性语料上面的不同时间区间(time interval)训练单独的模型。同一个时间区间中每个word由一个语义向量表达其语义,通过计算同一单词不同时期的语义向量的距离来度量语义的变化。【由于同一个词在不同usage不同context下语义是不一样的,这种方式的假设是一个语义向量足以表示这些值】。这些工作大都基于分布式词嵌入,把每种词形(word form)抽象为一个语义表示,但是这可能导致多种word sense只有一个表示,而语义变化可能是在更细粒度下的改变(比如说只在某种特殊语境下单词语义发生改变)。

第二种是sense-based方法,这种方法也是训练出time-dependent的语义表示,但是考虑分开表示每个word在不同sense下的语义,比如把word的语义表示为所有word sense下的多项式分布。现有的这种方法的局限性在于,a) 依赖于上下文的词袋模型来区分word sense;以及b)监督式的方法大都需要预先确定sense的数量。

(2)这篇文章提出的解决方法

一种无监督的方法来结合上下文相关词向量BERT处理词义变化

  • 首先产生每个word的usage Representations,也就是在所有不同context下的语义。给定一个单词 $w$和它出现的(window-size=128)的上下文$s = (v_1, \cdots, v_i, \cdots, v_n), v_i=w$,用BERT对这个上下文进行编码并把每一层的hidden state加起来作为$w$在这种语境下的表示。(这里用加是因为无论是concat所有层还是选择其中某一层,不同时段的word representation都无法产生足以比较的向量距离差异)那么对于语料中单词$w$出现的N次Usage,可以得到一个Usage矩阵$U_w = (w_1, \cdots, w_N)$,同时,对每次usage除了usage representation,还存储了对应的context以及temporal label $t_i$来标记时段。

Usage representations和聚类并计算得到的不同时刻的usage分布

  • 聚类到Usage Types:对每个word的N个usage representations,用K-Means把它们聚类为2-10个类别(usage type),最终选择的类别数量K通过比较聚类结束时的silhouette score选择。而后可以计算出给定单词$w$在$t$时刻每个usage type所出现的次数$f^t_w$,并在归一化后得到$t$时刻的usage分布$u^t_w\in R^{K_w}$。上面这张图是Usage representations和聚类并计算得到的不同时刻的usage分布的一个例子。

t时段每个Usage Type k的出现次数

  • 语义变化的量化:
    • Entropy Difference(ED):计算$t$和$t’$时段usage分布的熵的差值,通过熵来衡量这个分布的不确定性,一个单词的分布熵越大代表这个词的含义越丰富,因此ED值的增加意味着从$t$到$t’$时段该单词的词义变得广泛(broad)。比如下图(出处)所示汉字危的词义分布比较先秦和元明清时期,ED值是增加的。
    • Jensen-Shannon divergence(JSD):引入这一项用来衡量两个usage分布的差异。较大的JSD意味着从$t$到$t’$该单词的usage发生了明显改变。
      • Average pairwise distance (APD):为了避免聚类为usage type时引入的噪音影响历时语义分析加入这一项。直接在两个时段的usage representation计算平均点对点距离。(拿出两个时段所有usage representation向量计算距离并求这$Nt\cdot N{t’}$项距离的均值)
      • 判断多个连续时期的历时语义偏移。比如下图这种超过两个时段的情况,对相邻两个时段用上面三种metric中的一种依次计算一个得分,最终的得分向量的均值可以判断语义偏移的总体程度,最大值用来判断语义偏移发生的极限。

中文词义历时演变

(3)实验

实验数据:英文历时语料,the Corpus of Historical Ameri- can English(COHA)

目标单词:100个标注过语义偏移得分的单词,得分与context无关,由五个人类标注者衡量两个时段下某个单词的语义偏离程度并给出得分。(GEMS数据集)

实验结论:

  • 为了证明K-means利用BERT产生的usage表示聚类的usage type和人类评判一致。选择了16个单词,每个单词的每个usage type标注5个usage,形成3285个usage pair,并通过众包进行相似度标注,得到了一个数据集,并且多个标注者之间的打分一致性符合要求(说明人类评判较为一致)。而最终人类在usage pair之间的相似度打分和聚类后的Usage Vector之间的相似度计算也表明,对16个单词中的10个,机器的打分和人类具有一致性。
  • 通过比较GEMS数据集上的人类打分语义偏离分数和不同metric生成的偏离分数的斯皮尔曼相关系数(0-1,越小越好),说明了上下文相关词嵌入在历时语义演变分析中很有效。

不同metric下生成的语义偏离分数和人类打分的相关性系数

(4)分析

对两个问题进行了分析:

  • Usage Type捕获了哪些信息?
    • 区分字面用法和转喻用法。比如“我挂了一个窗帘”中“窗帘”代表其字面意思“一块悬垂的布”,而“法律战争的窗帘正在被提出”中“窗帘”代表其转喻意思“阻碍信息自由交流的障碍”。
    • 用于组成短语或者命名实体的特殊用法,比如“alexander graham bell”中的“bell”。
  • 偏离得分反映了哪些语义变化?下图来自论文原文。
    • broaden,比如增加新的usage type,增加转喻用法等。
    • narrow,很多usage type在消失或者使用频率减少。

不同时段的Usage分布

(5) 总结

一个利用上下文相关词嵌入分析历时语义演变的工作,不同于基于word sense的工作,由预训练词嵌入和聚类方法自动生成不定数量的usage type,提供了更灵活的获得sense representation的方式。能相对更有效的估计语义演变的程度。作者也说其下一步的工作可能是探究如何去检测更细粒度的词汇语义变化,比如说usage-level的语义演变。

4. Moving Down the Long Tail of Word Sense Disambiguation with Gloss Informed Bi-encoders

https://arxiv.org/pdf/2005.02590.pdf ,ACL’20,Zettlemoyer组,By 华盛顿大学&FAIR。

WSD(词义消歧)任务为某个上下文下的单词预测具体含义。All-word WSD为语料中每个有歧义的单词找到具体含义,被形式化为在预定义的所有义项中找到正确的类别,这是这个工作的任务。

gloss:义项所对应的描述文本,来自词义体系(wordNet或其他词典)中。

方法结构很简单,context encoder用来编码单词及上下文;gloss encoder对义项描述进行编码,利用交叉熵最大化正确义项类别的分类概率。两个分类器底层都使用预训练的BERT。目标是把word sense gloss和context-aware word embedding编码到同一空间,而且让一个单词和对应的词义点积距离接近。

模型结构

在WSD数据集上和包括GlossBERT在内的baseline进行了对比。