前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NLP模型中的数字原来这么有趣(一)

NLP模型中的数字原来这么有趣(一)

作者头像
AI部落联盟
发布2021-04-08 13:14:36
2.4K0
发布2021-04-08 13:14:36
举报
文章被收录于专栏:AI部落联盟

NLP模型能够表示文本,那能够识别数字吗?本系列旨在介绍NLP模型中的数字表示,参考的是南加州大学在NAACL2021发表的文章:Representing Numbers in NLP: a Survey and a Vision

论文链接:https://arxiv.org/pdf/2103.13136v1.pdf

好久没有在公众号上更新文章了,希望能把阅读文章和总结的习惯继续捡起来。本文是 Numbers在NLP模型中的表示 综述的第一部分,后续还需继续更新。本文第一部分介绍的是测试各种模型计算能力的任务(模型的数学考试任务)和目前使用的方法,第二部分则是介绍各种模型是如何进行数字表达的(模型中的数字表示方法)以及目前使用的方法。


背景介绍

数字在自然语言中是很普遍的存在。日常交流中同样经常使用到数字,比如买菜的时候和大妈讨价还价,这时候你不但需要通过理解大妈的话揣测她心里的最低价位,还需要在心里对比自己的心理价位,并用话术使二者无限逼近。菜市场不愧是现代心理学和博弈论的实践战场。

如果让AI来和菜市场大妈讨价还价是否可能呢? AI目前对于自然语言中的纯文本理解已经达到了一个很高的水平,但是对于数字的理解水平还不太够。

以往的工作在文本预处理的时候把数字直接丢弃。BERT一类模型中用的BPE[1]和WordPiece[2]不会丢弃数字,但是会把数字拆开,比如1234->12-34或者1-234。

最近的一些工作指出了前人研究中对数字处理的不合理之处,比如在AI2提出的DROP问答数据集中,当答案是一个数字而不是一段文本时,BERT的表现变差了5倍[3]。但是如果把数字从sub-words level转换到word level,或者使用科学计数法表示数字,又能提升模型的效果[4][5]。那到底模型应该如何表示数字,以及如何判别模型识别数字的能力呢?


模型的数学考试任务

从认知科学的角度出发,本文介绍论文中提到的通过两个维度来设计测试模型计算能力的任务:

(1)程度;程度主要分为表示精确(Exact)的程度(birds have two legs)和表示大致(Approx)的程度(Jon is about 180 cms tall);

(2)单位;单位主要分为抽象(Abstract)单位(2+3=5)和现实(Grounded)单位(2个苹果+3个苹果=5个苹果)。对于抽象单位的数学任务很容易创建数据集,但现实单位的数字不同,因为它们的理解通常需要结合单词的上下文。比如“ I woke up at 11 ” 和 “ I earn $11 per month ”中的“ 11 ”就不是一个意思,需要结合上下文理解。


现有工作

表1根据测试任务的分类,分别作为横纵坐标整理了7类现有工作:

Simple Arithmetic(简单的算术):指的是单独对数字进行加法、减法等运算的任务。通过一些现有的语言模型[4][6]可以很方便的构建数据集。

Numeration(数值计算):指的是将字符串形式映射为其具体数值的任务。比如将string类型的19表示为float 19.0。该任务在NLP中通常使用相应embedding的freeze(static[7]和contextualized[8])结合基于线性回归分类作为probing task来验证模型相应的能力。

Magnitude:数量级比较。指的是一种判断两个(或多个)数字中哪个更大的能力。该任务同样可以建模为一个二分类任务[7][8],例如,给定23和32,选择标签1表示32 > 23。

AWP:算术应用题(AWP)是从学校教科书中获取的基本算术的数据,例如,“玛丽有两块饼干,她送了一块,她还剩多少?”。数学应用题的NLP数据集有很多[9][10]。

ExactFacts(客观事实):ExactFacts在计算中涉及常识,比如骰子有6面,鸟有两条腿。近似的数量感觉在这里没有什么用,因为像骰子有5张脸,鸟有3条腿这样的叙述实际上是不正确的。数字常识事实的两个最新数据集是Numbergame[11]和NumerSense[12](别问我是不是少了个b)。

Measurement Estimation:指的是心理学中的一项任务,受试者被要求在特定的维度上近似猜测物体的测量值,例如西瓜里的种子数量或手机的重量等等。VerbPhysics[13]是各种物理对象属性的二分类比较基准,例如,在大小的比较方面,ball<tiger。DoQ[14]是一个来源于互联网的数量分布数据集,可以作为测量语言模型估计能力的benchmark。MC-TACO[15]是特定于时间度量估计的数据集,例如,放假的时间跨度为几天/几周。

Numerical Language Modeling:数值语言模型是一种训练方式,类似于词汇的mask语言模型。其他任务可以建模为数值语言模型,例如,算术(2+3=[MASK])和测量估计(狮子的重量[MASK]磅)。在实践中,数值语言模型是指为未标记的、自然产生文本进行数值预测的任务。

Downstream Applications(下游应用):Dubey等人[16]基于数字检测推文中的讽刺现象。Chen等人[17]使用可替换的数字表示、数字理解和分类的辅助任务识别财务文件中的债权。同时应用简单的算术和数学文字问题作为辅助任务可以提高GenBERT [4]在DROP QA基准测试中的分数。


模型中的数字表示方法

本文介绍的表示方法仅限于编码(number->embeddings)和解码(embedding->numbers)两种。实验中采用的是BERT模型,并假设在BERT中存在一个独立的将词映射到embdding的过程。

本文将讨论两种表示方式:String-basedReal-based。String-based表示法看到的是string形式的数字;Real-based表示法会执行一些涉及真实数值的计算。

  • String-based

默认情况下,语言模型将数字视为普通的字符串。然而,在字符串表示中,可以对数字做一些简单的修改:

  1. Notation。将字符串数字转换为阿拉伯数字、罗马数字、科学计数法亦或是英文等等。[18]专门研究了在语言模型中选择各种不同的表示法对简单算术任务的影响。
  2. Tokenization。通常的tokenizer会把非常见数字转换为UNK。BERT一类的模型的BPE和WordPiece通常会把数字拆分开。
  3. Pooling。由于单个数字现在可能经过tokenization后对应多个tokens,例如,100分成10-0或1-0-0。分析过tokenization的影响后出现了Pooling的方法。[19]研究了使用RNNs或CNNs将这些标记的embedding通过Pooling变成一个单一的embedding,然后再将其输入语言模型中。

  • Real-based

该情况下,通常使用两种方式解析数字:

  • Direction:从encoder端学习number的表示,[20]使用了一种独立于文本的embedding方法DICE来学习数字的embedding,从decoder端解析数字的时候学习数字表示,[21]从模型的各种参数分布中抽样出数字表示。
  • Scale:受到认知科学的启发,有几种方法尝试在log运算(非线性)的度量中建模数字,即对要表示数字的对数进行数学运算。在对数缩放运算中,log(·)和exp(·)互为逆运算。本文在之后会讨论更多的放缩度量,如稳定对数尺度(stabilized log scale)[22]和可学习的度量[21]。
  • Discretization(离散化):[8]指出对大范围的数字训练连续值函数实际上是不可行的。一些Real-based的方法先把数字分桶,再学习每个桶的embedding。桶里的数字可以是线性尺度的(0-10, 10-20, 20-30,…)或对数尺度(0.01-0.1, 0.1-1, 1-10 ,…),相应数字的embedding的映射表可以通过regular 交叉熵[7]或dense交叉熵[17]的方式学习。

现有工作

上一节在描述了数字不同的表示方式之后,又描述了以前工作中使用的一些String-based(字符串数字)和Real-based(真实的数字)的方法。下表将这些方法进行整理,前三列显示了它们在分类法中的位置。最后七列对应七个任务,每个单元格表示引入它的代表性工作。

上表是NLP中数字表示的概述:每一行都代表一种方法,按照的上一节的分类(字符串和实数形式)分成两部分,每个部分进一步细分为三个维度。最后七列对应于计算的七个子任务,按照精确和近似的不同粒度进行划分。这些单元格指向在给定任务(列)上使用给定方法(行)进行试验的代表性工作。

  • String-based methods
    • Word Vectors & Contextualized Embeddings 典型的代表作有很多:word2vec,ELMo,BERT等等。它们都是将数字当做string处理。
    • GenBERT[4] GenBERT是一个以预训练的BERT为编码器和解码器的问答模型。和BERT不同的地方在于,GenBERT的tokenizer会把数字切分为digit level,并在算术单词问题和简单算术的辅助任务上进行微调。
    • NumBERT[5] NumBERT在一个修改过的数据集上从头开始训练BERT,数据集中所有的数字都被转换成科学计数法表示,即314.1表示为3141[EXP]2。NumBERT的tokenizer遵循的是科学计数法和subword-tokenization。
    • DigitRNN[19], DigitCNN[8] 两个模型都将多位数看做单位数的组合,将每个数字的embedding集合到一个单独的表示完整数字的embedding中。两者都使用了RNN和CNN进行池化。
    • DigitRNN-sci & Exponent (Embedding)[21] [21]使用了DigitRNN的一种科学符号变体(在表中称之为DigitRNN-sci),以及一种更简单的替代方法:指数嵌入。指数嵌入仅仅学习了embedding中的指数部分的查找,忽略了尾数部分。
  • Real-based methods
    • DICE (Deterministic Independent-of-Corpus Embeddings)[20] DICE中设计了一个人工定义的数字编码器F,以保持两个数字的embedding之间的相对大小。对于两个标量i和j,F(i)和F(j)分别将其映射为对应的欧式距离。DICE不仅作为一种确定性的数字编码,同时也可以作为训练数字embedding的辅助损失函数。
    • Value Embedding 其实最直观的数字编码器就是浅层神经网络(Linear)。浅层神经网络需要学习单一维度的数字到多维向量之间的映射关系。就像Transformer将位置编码融入到模型中一样。
    • Log Value 除了在线性度量上的编码器外,还可以使用对数度量的编码器对数字的映射进行实验。[5]用对数值解码器对数字进行测量估计的实验,称之为RGR方法。
    • Log Laplace 与RGR解码器的点估计输出相比,模型还可以用于参数化数字分布。某些上下文的向量可以用来参数化,例如,高斯分布或拉普拉斯分布的均值和方差。这种方式在估计大约数量的任务中是很有帮助的。
    • Flow Laplace 数字解码器的表达能力可以通过简单的变换来扩展或缩小参数化不同的分布。[21]提出了一个具有更强的表达能力的解码器代替之前的对数放缩方法,模型能够自己学习相应的密度映射。
    • MCC(multi-class classification) MCC是另一种输出分布的数字解码器,其输出结果通常是离散的:因为存在对数比例的数字分桶,比如1-10,10-100等等。先前描述的解码器要么输出点估计,要么输出单峰分布,因此无法对数字的真实多样性进行预测。举例一个MASK数字的预测问题:“我们在[MASK]下午去餐馆”,MCC能够更好的估计两个高可能性的值:一个午餐时间(比如下午1-2点),另一个晚餐时间(比如晚上7-9点)。
    • Discrete Latent Exponent (DExp) DExp是另一种多可能性的分布,其中模型参数化了指数的多项分布(类似于MCC)。
    • GMM(Gaussian mixture model) 另一种规避单模高斯或点估计的尝试是学习高斯混合模型。[19]通过对训练语料进行均值(μi)和方差(σi^2)的预训练来学习混合的K个高斯函数的混合模型。
    • GMM-prototype 相似地,对训练语料进行预训练(EM/hard-EM),包括GMM的均值、方差以及混合权重πi。因此GMM和GMM-原型的区别在于,在固定了高斯混合物的均值和标准差后,GMM模型学习对每个个体数预测的混合权重πi进行预测,而在GMM-prototype中,πi是不变的,该模型学习了ei的embedding。
    • SOM-prototype 实际上,GMM-prototype仅仅是利用混合高斯模型来推断原型,并得到加权wi。[22]尝试了另一种变体(Self-Organizing Maps),通过自组织映射识别原型类型的数字。

小结

本文介绍了数字在NLP模型中的各种表示方法。第一部分介绍了一些测试模型数学能力的测试方法,就像让模型参加数学测验,看看模型到底会些什么。还介绍了目前常用的测试方法。第二部分则是分类介绍了目前的模型通常是怎么表示数字的,一种是直接认为是纯文本,另一种则是将数字进行某些映射变成抽象的数字或向量。

参考文献

[1]Rico Sennrich, et al. Neural machine translation of rare words with subword units. ACL 2016.

[2]Yonghui Wu, et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. 2016.

[3]Dheeru Dua, et al.DROP: A reading comprehension benchmark requiring discrete reasoning over paragraphs. ACL 2019.

[4]Mor Geva, et al. Injecting numerical reasoning skills into language models. ACL 2020.

[5]Xikun Zhang, et al. Do language embeddings capture scales? EMNLP 2020.

[6]Tom B. Brown, et al. Language models are few-shot learners. 2020.

[7]Aakanksha Naik, et al. Exploring numeracy in word embeddings. ACL 2019.

[8]Eric Wallace, et al. Do NLP models know numbers? probing numeracy in embeddings. EMNLP 2019.

[9]Aida Amini, et al. MathQA: Towards interpretable math word problem solving with operation-based formalisms. NAACL 2019.

[10]David Saxton, et al. Analysing mathematical reasoning abilities of neural models. ICLR 2019.

[11]Swaroop Mishra et al. Towards question format-independent numerical reasoning: A set of prerequisite tasks. 2020.

[12]Bill Yuchen Lin, et al. Birds have four legs?! NumerSense: Probing Numerical Commonsense Knowledge of Pre-Trained Language Models. EMNLP 2020.

[13]Maxwell Forbes and Yejin Choi. Verb physics: Relative physical knowledge of actions and objects. ACL 2017.

[14]Yanai Elazar, et al. How large are lions? inducing distributions over quantitative attributes. ACL 2019.

[15]Ben Zhou, et al. Temporal common sense acquisition with minimal supervision. ACL 2020.

[16]Abhijeet Dubey, et al. “when numbers matter!”: Detecting sarcasm in numerical portions of text. NAACL 2019.

[17]Chung-Chi Chen, et al. Numclaim: Investor’s fine-grained claim detection. CIKM 2020.

[18]Rodrigo Nogueira, et al. Investigating the limitations of the transformers with simple arithmetic tasks. 2021.

[19]Georgios P. Spithourakis and Sebastian Riedel. Numeracy for language models: Evaluating and improving their ability to predict numbers. 2018.

[20]Dhanasekar Sundararaman, et al. Methods for numeracy preserving word embeddings. EMNLP 2020.

[21]Taylor Berg-Kirkpatrick and Daniel Spokoyny. An empirical investigation of contextualized number prediction. EMNLP 2020.

[22]Chengyue Jiang, et al. Learning Numeral Embedding. EMNLP 2020.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI部落联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档