Posts

Paper-Weekly12-Demystifying OpenAI CLIP data
国庆去香港大玩特玩的时候(谢谢JS),跟磊哥约了个饭,吃饭的时候他提到这篇最近让他印象深刻的文章。虽然这几年主要都在做NLP,了解一些CV/多模的进展或许也能有点启发(?) 这篇文章是9月底挂到arxiv上的,10月初更新了一版,非常新鲜。下面简单总结一下原文: CLIP是一种在计算机视觉中具有高级研究和应用的方法,推动了现代识别系统和生成模型。作者相信 CLIP 成功的主要因素是它的数据,而不是模型架构或预训练目标。然而,OPENAI只提供有关其数据的非常有限的信息以及它是如何收集的,这也导致了一些工作想通过模型的参数来复现其训练数据(生成模型的思路,很有意思但难度很大)。 作者构造了MetaCLIP ,采用原始数据和元数据(源自 CLIP 的概念),并在元数据分布上产生平衡的子集。他们的实验研究严格隔离了模型和训练设置,只关注数据。MetaCLIP 应用于具有 400M 图像-文本数据对的 CommonCrawl 在多个标准基准上优于 CLIP 的数据。在零样本 ImageNet 分类中,MetaCLIP 达到了 70.8% 的准确率,在 ViT-B 模型上超过了 CLIP 的 68.3%。扩展到 1B 数据,同时保持相同的训练预算,达到 72.4%。 方法部分,作者先是引用了CLIP原文,原文中声称其构造了50万的Query,然后为每个Query收集至多2万个图文对。本文采用的Term是Metadata,其实就是CLIP原文的Query。
Paper-Weekly12-Demystifying OpenAI CLIP data
Paper-Weekly10-WebBrain
这篇文章设计了一个新任务,根据query进行搜索,在网上自动获取相关的证据,并把搜索结果用于生成短的,符合事实的文章。生成的目标是维基百科里没有的、factually-correct的短文章。他们通过爬取维基百科构造了一个大规模的数据集,比之前类似的数据集大10倍。同时他们还设计了一个将检索与生成相结合的框架ReGen。 ReGen基于当前最先进的方法(SPLADE+FiD+BART)进行改进,主要有以下三点: 控制检索证据的话题一致性 在生成过程中引入citation mark从而保证引用的来源 引入基于事实的自监督任务 webBrain区别于已有工作的创新点在于: 已有工作大多利用模型实现存储的参数化知识(0shot),容易生成幻觉,而webbrain使用网络上挖掘的信息,可能更可信一些; 检索增强QA只需要给出一个简单的span或者生成一个简单的句子,而webbain探索了如何综合利用所有的网络信息来生成一篇comprehensive且准确的短文 比MDS更难,并不是简单总结已有文章,还需要挖掘evidence webGPT需要记录人类用户的交互行为,webbrain只是基于已经生成的维基百科文章,更加可行。 为什么他们一定非得收集网上现成的wiki呢,而且所谓的挖掘信息,不就是把wiki里的url做一个filter吗?请问搜索引擎用在哪?意思是人工标好的就算是挖掘吗。再退一步,wiki的写法一般都是先写再加引用,我引用是为了去佐证我写的的准确性,而不是根据网页的内容做总结。所以这文章就很扯。 Anyway,还是看看他们的具体做法吧。
(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的情景,所以苛求表现好像也不太公平。