paperweekly

(Paper Weekly06) End-to-end Neural Coreference Resolution
最近在打比赛,比赛内容是上下文指代消解,为此稍微阅读了几篇这方面的baseline。感觉这篇有很多思想在后续工作中都有体现,因此写篇博客总结一下。 引言 本文声称其为首个端到端的指代消解模型,在不使用句法分析和特征工程的前提下超越了之前的方法。模型对"word span"(不知道怎么翻译,要不翻译成"词组"吧)进行嵌入,包含了词组的边界信息以及单头的注意力信息,训练目标是最大化正确指代对的边缘似然(marginal likelihood)。同时,本文将评分进行分解,高效的剪枝策略得以使用。 模型 给定Document D, D 中存在若干span pairs,每个span pairs由相邻的几个词构成,(疑问:为啥是几个词作为一个span,而不是单个的词?粒度问题怎么处理),假设有T个span,那么可能的span pairs数量为$$\frac{T*(T-1)}{2}$$​。需要从这些pair中找出正确的pair。 模型的优化目标为: 简单来说便是优化给定文档后正确的span对的似然,在这里把每个yi看作一个随机变量。 s(i.j)代表了span i和span j之间的得分,由三部分构成,分别是sm(i)和sm(j),代表了对应span被判定为mention的分数,sa(i,j)代表两者存在指代关系的分数。 看到这个图我恍然大悟了,原来他的span是包含了各种宽度的,而且在求sm(i)时,如果分数太低就会直接被剪枝剪掉。计算一下时间复杂度,本身span数量是O(T^2),那么求这些pair一共得O( T^4)​​​。 Span representation 在score计算中很重要的一环便是对span表示的计算。首先每个词具有一个固定的word embedding向量表示,为了解决OOV问题,还引入了了character CNN。 使用bi-LSTM对span进行编码,x_t为固定的word embedding, 对于每句话使用独立的biLSTM进行编码,再使用注意力进行加权, 最后再加入关于span的长度信息,一同构成最终的representation。 Inference 为了加快inference,只有长度不超过预先给定值,并且mention score 排在前lambdaT的span会被考虑。这里的剪枝方法是选择mention score最高的那部分。在具体实现中,max length被设为10。
(Paper Weekly04) Plan-Structured Deep Neural Network Models for Query Performance Prediction
这篇paper值得关注的点在于如何将传统CS和深度学习结合,以及如何自动/手动挑选feature. 在数据库管理系统中,query performance prediction是一个长期以来没能很好解决的问题。需要考虑的因素有: 数据库接收的指令如何优化,优化后执行树的结构,指令能否并行 相关指令涉及的数据量大小,operator类型 实际系统中网络、IO等“环境变量”的影响 本文考虑的情景主要解决了第二点和第一点的部分。 Motivation: 现有的优化工具可以将复杂的指令转化成一棵执行树。那么如果对这棵树上的每个节点,用一个neural unit(其实就是一个小网络)进行建模,利用这些小网络来预测相应节点的latency,那么根节点的输出岂不就是系统整体的延迟。 这从本质上来说并没有什么复杂的原理,无非是把DL/NLP里面针对树结构的方法搬到QPP上。 Isomorphic to the structure of the execution plan: 将DNN的基本单元设置为Neural Unit,对应每种operation; 对于每一个execution plan,搭建一个同构的树状网络 Heterogeneous tree nodes: 每种operator含有的property的数量、类型是不同的。比如join操作可能有9个property,filter操作可能有7个另外的feature,如果把所有的property都汇集到一起作为operator的表示,会产生sparsity的问题 Input feature vector: 可能的child节点信息和operator feature信息,后者可通过DBMS的optimizer的API获取,比如operator类型、需要多少次I/O等。相同类型的operator会得到size相同的vector,但具体数值可能不同,计作a ⃗, A表示operator的类型。
(Paper Weekly03) GPT Understands, Too: P-tuning
GPT Understands, Too (什么,GPT也可以拿来做NLU?) 本文提出了一种全新的fine-tune方法:P-tuning,并比大小接近的BERT模型上取得了相近甚至更好的表现。P-tuning的motivation其实很简单,既然可以通过离散的prompt来做NLU任务,那么连续的prompt是不是能达到更好的效果。 两个motivation如下: finetune大模型非常困难。大模型的迁移泛化能力(transferbility)很差,而且当模型过大时,显存开销是个很大的问题。P-tuning并不需要对参数进行更新,真正会被训练到的参数大概只有预训练模型的1% 人工编写的prompt准确率无法保证,一般来说任何人造的prompt能提取到的知识都是预训练模型中知识的下界。 之前的工作中,针对prompt的生成方法有两种: Mining-based生成:利用中间词或使用依存树分析 Paraphasing-based生成:利用back-translation Ranked Ensemble P-tuning 传统的prompt会根据人工选择的词将其映射到对应的词向量上,而p-tuning的做法是直接优化隐状态。 这里的e(x)是通过embedding层得到的vector表示,h代表的是可训练的embedding向量。作者在优化一节中详细描述了得到h的过程。 如果h的初始化使用简单的独立随机采样,那么可能在优化中可能表现不佳,作者认为这是由SGD带来的,隐向量可能只在初始化附近小幅度的变化,很容易落到local minima中。 此外,还需解决不同的隐状态向量之间的依赖关系。本文采用bi-LSTM进行建模,相较transformers引入的overhead较小。 此外,作者还发现在prompt中加入一些anchor词的embedding可以改善模型在NLI部分benchmarks上的表现。 Experiments 本文在两个task上进行了实验。 Task 1 Knowledge Probing 由于bert和GPT的词汇表不太一样,作者重新构造了一个新的数据集LAMA-29K,在这个数据集上对于各种模型使用P-tuning都能带来不小的改进;在模型参数量过大以至于无法进行fine-tune的MegatronLM模型上使用P-tuning达到了新的SOTA。 Task 2 SuperGLUE 第二个TASK作者使用了superGLUE(不知道为什么不用GLUE),并使用参数量接近的GPT2-base和BERT-base作对比,可以发现P-tuning对GPT的提升幅度是比较显著的,虽然和MP相比提升不是特别明显。吐槽:70出头的avg score可以说是baseline中的baseline了,目前superGLUE的SOTA都在90+,差距还是比较明显。当然superGLUE并不是最契合p-tuning的情景,所以苛求表现好像也不太公平。