大模型轻松标注图像-NUS合作的神奇对话式标注-清华& (大模型 ai)
随着多模态大模型的发展,v的登场为该领域带来了新一批模型,如LLaVA、BLIP-2等。为了进一步扩展多模态大模型的区域理解能力,研究团队打造了一个可以同时进行对话和检测、分割的多模态模型NExT-Chat。
NExT-Chat的定位输入和输出能力
NExT-Chat的最大亮点在于,它在多模态模型中引入了位置输入和输出的能力。其中,位置输入能力指的是根据指定的区域回答问题(下方左图);位置输出能力指的则是定位对话中提及的物体(下方右图):
即使是复杂的定位问题,NExT-Chat也能迎刃而解:
NExT-Chat的其他能力
除了物体定位,NExT-Chat还可以对图片或其中的某个部分进行描述:
分析完图像的内容之后,NExT-Chat可以利用得到的信息进行推理:
NExT-Chat的性能评估
为了准确评估NExT-Chat的表现,研究团队在多个任务数据集上进行了测试。在多个数据集上取得SOTA
NExT-Chat背后的方法
图像编码新方式:pix2emb
传统的模型主要通过pix2seq的方式进行LLM相关的位置建模。但使用pix2seq方法的模型输出主要局限在框和点这样的简单格式,而很难泛化到其他更密集的位置表示格式,比如segmentationmask。
为了解决这个问题,本文提出了一种全新的基于embedding的位置建模方式pix2emb。pix2emb方法不同于pix2seq,pix2emb所有的位置信息都通过对应的encoder和decoder进行编码和解码,而不是借助LLM本身的文字预测头。
这样做带来了两个好处:
- 模型的输出格式可以非常方便的扩展到更多复杂形式,比如segmentationmask。
- 模型可以非常容易的定位任务中已有的实践方式,比如本文的detectionloss采用L1Loss和GIoULoss(pix2seq则只能使用文本生成loss),本文的maskdecoder借助了已有的SAM来做初始化。
结论
NExT-Chat的多模态能力可以带来广泛的应用前景,包括图像编辑、图像描述、视觉问答等。随着多模态大模型的发展,我们可以期待更多的创新和突破。
图片标注怎么弄?
首先打开手机中在图库里面选择一张照片。 之后点击下方的编辑。 在编辑里面点击右下角的标注。 然后选择一个标注的形状,在里面编辑好文字。 最后点击右上角的保存即可。 或者1、首先在我们的手机桌面上找到微信并点击它,如下图所示。 2、然后随便点击一好友对话框。 3、接着点击屏幕右侧的加“+”,然后点击照片。 4、选择一张要重点做标记的图片并点击预览。 5、接着点击编辑。 6、然后点击屏幕左下方的铅笔并选择颜色。 7、接着用手指在图片上圈画出重点。 8、最后点击发送就可以了。 我们可以在对话框中这张图片保存到系统相册。 或者选择自定义形状工具打开ps软件,在ps软件的主界面中,选择左侧工具栏中的自定义形状工具。 选择箭头形状在上方工具栏中点击形状菜单栏,在弹出的形状中选择箭头。 绘制箭头标注在图片对象上拖动鼠标绘制箭头图标。 更改箭头标注颜色选中绘制的箭头图标,点击上方的填充文本框,选择颜色,更改即可完成箭头标注颜色的更改
清华大学通用预训练模型:GLM
OpenAI借助ChatGPT所点燃的大语言模型(LLM)之火已在全球范围内燃烧了半年有余,而在此期间,OpenAI与微软所推出的一系列基于GPT3.5或GPT4模型的AI产品也纷纷在不同领域取得了亮眼的表现。
然而令人略感失望的是,作为如今LLM圈内绝对的领头羊,OpenAI并没有遵从其创立初衷,无论是ChatGPT早期所使用的GPT3、GPT3.5还是此后推出的GPT4模型,OpenAI都因“暂无法保证其不被滥用”为由拒绝了对模型开源,开启了订阅付费模式。
对于大型科技企业而言,不管是出于秀肌肉还是出于商业竞争目的,自研LLM都是一条几乎无可避免的道路。但对于缺少算力和资金的中小企业以及希望基于LLM开发衍生产品的开发者来说,选择开源显然是更理想的一条路线。
好在还是有一些选择了开源,那么就目前来看,在LLM领域,都有哪些优质的开源模型可供选择?
表1:开源大模型
在这些开源大模型中,GLM由于效果出众而受到大众关注,而且清华大学开源了基于GLM架构研发的基座模型:ChatGLM-6B、GLM-130B。
截止到5月26号,ChatGLM-6B全球下载达到200万,数百垂直领域模型和国内外应用基于该模型开发。联想、中国民航信息网络公司、360、美团都选择了GLM-130B作为基座模型。
[2023.05.28]科技部在中关村论坛上发布的《中国人工智能大模型地图研究报告》显示ChatGLM-6B位列大模型开源影响力第一名。
GLM模型到底和GPT有什么区别,有哪些创新?这篇文章将详细介绍GLM的技术细节。
1、大模型
NLP任务通常分为三类:
NLU(文本分类、分词、句法分析、信息抽取等)。
有条件生成任务(seq-seq,如翻译任务、QA)。
无条件生成任务(用预训练模型直接生成内容)。
预训练模型也分为三类,分别是:自编码、自回归、编码解码。三种训练模型分别在前面三种任务中表现良好。
自回归(比如GPT):从左往右学习的模型,根据句子中前面的单词,预测下一个单词。例如,通过“LM is a typical task in natural language____”预测单词“processing”。在长文本的生成能力很强,缺点就是单向的注意力机制在NLU任务中,不能完全捕捉token的内在联系。
自编码(比如BERT):通过覆盖句中的单词,或者对句子做结构调整,让模型复原单词和词序,从而调节网络参数。例如,可以把BERT看成一种自编码器,它通过Mask改变了部分Token,然后试图通过其上下文的其它Token来恢复这些被Mask的 Token。自编码在语言理解相关的文本表示效果很好。缺点是不能直接用于文本生成。
编码解码(比如T5):编码器使用双向注意力,解码器使用单向注意力,并且有交叉注意力连接两者,在有条件生成任务(seq-seq)中表现良好(文本摘要,回答生成)。
这些训练框架都不足以在所有NLP中具有竞争力任务。以往的工作(T5)试图通过多任务学习统一不同的框架。然而,由于自编码和自回归的目标性质不同,一个简单的统一的优点不能完全继承这两个框架。
2、GLM介绍
相比其它大语言模型,GLM具有以下3个特点:
自编码,随机MASK输入中连续跨度的token。
自回归,基于自回归空白填充的方法重新构建跨度中的内容。
2维的编码技术,来表示跨间和跨内信息。
通常预训练语言模型是指利用大量无标注的文本数据,学习语言的通用知识和表示,然后在特定的下游任务上进行微调或者零样本学习。预训练语言模型在自然语言理解(NLU)和文本生成等多个任务上都取得了显著的效果提升。随着预训练语言模型的发展,模型的参数规模也不断增大,以提高模型的性能和泛化能力。
目前预训练语言模型主要有三种类型:自回归模型、自编码模型和编码器-解码器模型。
自回归模型从左到右学习语言模型,适合于长文本生成和少样本学习,但不能捕捉上下文词之间的双向依赖关系。
自编码模型通过去噪目标学习双向上下文编码器,适合于自然语言理解任务,但不能直接用于文本生成。
编码器-解码器模型结合了双向注意力和单向注意力,适合于有条件的生成任务,如文本摘要和回复生成。
这三类语言模型各有优缺点,但没有一种框架能够在所有的自然语言处理任务中都表现出色。一些先前的工作尝试通过多任务学习的方式,将不同框架的目标结合起来,但由于自编码和自回归目标本质上的不同,简单的结合不能充分继承两者的优势。
因此,清华大学提出了一种基于自回归空白填充的通用语言模型(GLM),来解决这个挑战。GLM通过添加二维位置编码和允许任意顺序预测空白区域,改进了空白填充预训练,在自然语言理解任务上超越了BERT和 T5。
3、GLM预训练架构
清华大学提出了一种基于自回归空白填充目标的通用预训练框架GLM。GLM将 NLU任务转化为包含任务描述的完形填空问题,可以通过自回归生成的方式来回答。
自回归空白填充目标是指在输入文本中随机挖去一些连续的文本片段,然后训练模型按照任意顺序重建这些片段。完形填空问题是指在输入文本中用一个特殊的符号(如[MASK])替换掉一个或多个词,然后训练模型预测被替换掉的词。
3.1预训练目标
3.1.1自回归空白填充
每个片段都用一个单独的[MASK]符号替换,形成一个损坏的文本\bm{x}_{\text{corrupt}}\bm{x}_{\text{corrupt}}。模型以自回归的方式从损坏的文本中预测缺失的词,这意味着在预测一个片段中的缺失词时,模型可以访问损坏的文本和之前预测的片段。为了充分捕捉不同片段之间的相互依赖关系,我们随机打乱片段的顺序,类似于排列语言模型。令Z_mZ_m为长度为mm的索引序列。
同样,我们可以得到x_1x_1的二维位置编码是[1,0],x_2x_2的位置编码是[2,0],x_4x_4的位置编码是[4,0]。
明白了二维位置编码和自注意力掩码,就算是明白了GLM的核心部分。
3.1.2多任务预训练
在前一节中,GLM遮盖了短的文本区域,适合于NLU任务。我们更感兴趣的是预训练一个能够同时处理NLU和文本生成的单一模型。因此,清华大学研究了一种多任务预训练设置,其中一个生成更长文本的目标与空白填充目标共同优化。GLM考虑了以下两种目标:
文档级别。采样一个单一的区域,其长度从原始长度的50%到100%之间的均匀分布中采样。该目标旨在进行长文本生成。
句子级别。限制遮盖的区域必须是完整的句子。多个区域(句子)被采样,覆盖原始文本的15%的词数。该目标旨在进行seq2seq任务,其预测结果通常是完整的句子或段落。
这两种新的目标都是按照原始目标的相同方式定义的,即公式1。唯一的区别是区域的数量和区域的长度。
3.2模型架构
GLM使用了一个单一的Transformer,并对架构做了一些修改:
(1)重新排列了层归一化和残差连接的顺序,这对于大规模的语言模型来避免数值错误是非常关键。
(2)使用了一个单一的线性层来进行输出词的预测。
(3)用GeLUs替换了ReLU激活函数。
3.2.1二维位置编码
在3.1.1节已经介绍过二维位置编码。自回归空白填充任务的一个挑战就是如何对位置信息进行编码。具体来说,每个词都用两个位置id进行编码。第一个位置id表示词在被损坏的文本\bm{x}_{\text{corrupt}}\bm{x}_{\text{corrupt}}中的位置。
对于被遮盖的区域,它是相应的[MASK]词的位置。第二个位置id表示区域内的位置。对于Part A的词,它们的第二个位置id都是0。对于Part B的词,它们的范围是从1到区域的长度。
GLM的编码方法确保了模型在重建被遮盖的跨度时不知道它们的长度。这与其他模型相比是一个重要的区别。例如,XLNet编码了原始位置,以便它可以感知缺失的token的数量,而SpanBERT用多个[MASK]标记替换了跨度,并保持了长度不变。GLM的设计适合下游任务,因为通常生成的文本的长度是事先未知的。
3.3Finetuning GLM
通常,对于下游的自然语言理解任务,一个线性分类器将预训练模型产生的序列或token的 embedding作为输入,并预测正确的标签。这些做法与生成式预训练任务不同,导致了预训练和微调之间的不一致。
GLM将 NLU分类任务重新制定为填空生成任务,遵循PET。具体来说,给定一个标记的示例\left(\bm{x},y\right)\left(\bm{x},y\right),将输入文本\bm{x}\bm{x}转换为单个mask token的填空问题c\left(\bm{x}\right)c\left(\bm{x}\right)。
例如,情感分类任务可以表述为“{SENTENCE}。这真的是[MASK]”。候选标签yy也映射到填空的答案,称为verbalizer v\left(y\right)v\left(y\right)。在情感分类中,标签“positive”和“negative”分别映射到单词“good”和“bad”。
因此,句子是正面或负面的概率与在空白处预测“好”或“坏”成正比。然后我们用交叉熵损失来微调GLM(见图3)。
如图中的示例,标签“positive”和“negative”映射到单词“good”和“bad”。在这种情况下,GLM使用交叉熵损失进行微调。
对于文本生成任务,给定的上下文构成了输入的Part A,末尾附加了一个mask符号。模型自回归地生成Part B的文本。可以直接应用预训练的GLM进行无条件的生成,或者在下游的条件生成任务上对其进行微调。
对于图4的生成任务,Part B部分直接换成mask即可。
3.4讨论分析
在本节中,讨论了GLM和其他预训练模型之间的区别。主要关注的是它们如何适应下游的空白填充任务。
与Bert对比:BERT是一种基于自编码的模型,它通过mask输入文本中的一些单词,然后训练模型去预测mask的单词,这种目标叫做掩码语言模型(MLM)。
但是BERT有两个缺点:一是它不能捕捉mask token之间的依赖关系,因为它假设mask token是相互独立的;二是它不能处理多个连续的mask token,因为它需要根据答案的长度来调整mask token的数量,而答案的长度往往是未知的。这些缺点限制了BERT在下游的空白填充任务上的表现。
与XLNet对比:XLNet也是一种基于自回归的模型,它通过随机排列输入文本中的单词,然后训练模型按照排列的顺序去预测每个单词,这种目标叫做排列语言模型(PLM)。XLNet两个不同之处:XLNet需要知道预测token的长度;使用双流注意力机制解决了信息泄漏的问题,改变了transformer的结构,增加了耗时。
与T5对比:T5也是一种基于空白填充的模型,它使用了编码器-解码器的Transformer结构来预训练一个文本到文本的模型。T5为编码器和解码器使用了独立的位置编码,而且依赖于多个token符号来区分不同的mask区域。
在下游任务中,只有一个token符号被使用,导致模型容量的浪费以及预训练和微调之间的不一致。而且,T5总是按照固定的从左到右的顺序来预测mask区域。
与UniLM对比:UniLM是通过在自编码框架下改变在双向、单向互相之间的attention mask来统一预训练目标;由于自编码模型的独立假设,自回归模型不能完全捕捉当前token对于前面token的依赖。对于微调下游任务来说,自编码会比自回归更加低效。
4、实验
4.1pretrain设置
GLM使用了与BERT相同的数据集和词汇表,以便与BERT进行公平的比较。作者还训练了多种规模的GLM模型,包括基于BERTBase和 BERTLarge的 GLMBase和 GLMLarge,以及更大的GLM410M和 GLM515M。作者还训练了一个与RoBERTa相同的数据集和词汇表的GLMRoBERTa模型,以便与最新的模型进行比较。
4.2SuperGLUE
SuperGLUE是一个包含8个难度较高的自然语言理解任务的基准。作者将这些任务转化为填空式的问题,然后用预训练的GLM模型来生成答案。作者选择了T5、BART和 RoBERTa作为其他的对比模型。表1显示了各个模型在SuperGLUE上的结果。结果表明,GLM在大多数任务上都优于BERT,无论是base还是large的架构。GLM在平均得分上也优于其他的模型,但是优势较小。作者认为BART的表现不佳可能是由于其编码器-解码器架构和去噪序列到序列目标的低参数效率所导致的。
4.3多任务pretrain
作者在一个训练批次中同时采样不同长度的文本跨度,来训练GLM适应不同类型的任务。作者训练了两个多任务模型,分别是GLMDoc和 GLMSent,它们与GLMLarge的区别在于采样的文本跨度的长度。
GLMDoc采样的是文档级的跨度,而GLMSent采样的是句子级的跨度。作者发现,多任务预训练会导致模型在NLU任务上略有下降,但仍然优于BERTLarge和 UniLMLarge。在多任务模型中,GLMSent的表现优于GLMDoc,平均提升了1.1%。
作者还发现,增加GLMDoc的参数量到410M(相当于BERTLarge的1.25倍)可以使其表现优于GLMLarge。GLM的参数量增加到515M(相当于BERTLarge的1.5倍)时,可以取得更好的效果。
Sequence-to-Sequence:序列到序列任务是指给定一个输入序列,生成一个输出序列,例如摘要生成和问题生成。作者使用了Gigaword和 SQuAD1.1这两个数据集来评估在BookCorpus和 Wikipedia上预训练的模型,以及使用了CNN/DailyMail和 XSum这两个数据集来评估在更大的语料库上预训练的模型。
作者发现,GLMLarge可以达到与其他预训练模型相当的性能。GLMSent比 GLMLarge表现更好,而GLMDoc比 GLMLarge稍差。这表明,文档级的目标对于条件生成任务并不有利,因为条件生成任务的目的是从上下文中提取有用的信息,而不是扩展上下文。增加GLMDoc的参数量到410M可以使其在两个任务上都取得最好的性能。
在更大的语料库上预训练的模型中,GLMRoBERTa可以与BART这个序列到序列模型相媲美,并且超过了T5和UniLMv2。
Text Infilling(文本填充):文本填充任务是指预测文本中缺失的部分,并使其与前后文相一致。GLM是用自回归空白填充目标来训练的,因此可以直接解决这个任务。作者在Yahoo Answers数据集上评估了GLM,并将其与专门为文本填充设计的BLM(Blank Language Model)进行了比较。
结果表明,GLM在 BLEU评分上显著优于之前的方法,并在这个数据集上达到了最先进的水平。作者还注意到,GLMDoc在文本填充任务上略逊于GLMLarge,这与他们在序列到序列任务上的观察一致。
Language Modeling:语言建模任务是指训练一个模型来预测文本中的下一个词。作者使用了WikiText103和LAMBADA两个数据集来评估GLM的性能。WikiText103是一个基于维基百科文档构建的数据集,LAMBADA是一个测试模型对长距离依赖的能力的数据集,要求模型预测一段文本的最后一个词。
作者使用了GPTLarge作为基准模型,它是一个单向自回归模型。作者发现,GLM在语言建模任务上优于GPTLarge,尤其是在使用双向注意力编码上下文时。作者还发现,2D位置编码对于生成长文本有重要作用,去掉它会降低准确率。
总的来说,GLM是一个通用的预训练语言模型,它可以同时处理自然语言理解和生成任务,而不需要切换不同的模型架构或目标。GLM通过自回归空白填充目标来统一不同的任务,并使用混合注意力机制和2D位置编码来提高模型的泛化能力。作者通过在多个数据集上的实验,证明了GLM比单独的BERT、T5或GPT模型有更好的性能。
4.4消融实验
消融实验是一种评估模型组件对性能影响的方法,通过逐个移除或替换模型的某些部分,来观察模型在下游任务上的表现变化。作者使用了SuperGLUE作为评估数据集,它包含了八个自然语言理解任务。
作者与BERT进行了对比实验,发现GLM在预训练和微调阶段都有优势。作者还分析了GLM的不同设计选择,如空白填充目标、空白顺序、空白表示、2D位置编码等,对模型性能的影响。作者指出,GLM与T5有三个主要区别:(1)GLM只有一个编码器,(2)GLM打乱了空白的顺序,(3)GLM只用一个[MASK]标记来表示不同的空白。
5、相关工作
预训练语言模型是指在大规模的无标注文本上训练的模型,它们可以显著提高下游任务的性能。预训练模型有三种类型:
第一种是自编码模型,它们通过去噪目标来学习一个双向的上下文编码器,用于自然语言理解任务;
第二种是自回归模型,它们通过从左到右的语言建模目标来训练一个生成器,用于文本生成任务;
第三种是编码器-解码器模型,它们通过序列到序列的目标来预训练一个文本到文本的模型,用于多种语言任务。
作者还介绍了几种编码器-解码器模型的不同之处,比如BART和 T5的不同输入方式和不同参数规模,以及UniLM的不同注意力掩码。
传统的预训练语言模型通常使用线性分类器来处理NLU任务,例如情感分析、自然语言推理等。但是,一些生成式的语言模型,如GPT-2和GPT-3,可以直接生成正确的答案来完成NLU任务,无需微调模型,只需要给定任务说明或少量的标注样本。
然而,这种方法需要非常大的模型参数和计算资源,而且受到单向注意力机制的限制。最近,一些工作提出了将输入样本转化为填空式问题的方法,以利用预训练语料中的模式。例如,PET(Pattern-Exploiting Training)可以在少样本设置下,通过梯度优化微调模型。
在NLU任务上超越GPT-3,而只需要千分之一的参数。另外,一些工作将结构化预测任务,如序列标注和关系抽取,转化为序列生成任务。
填空语言模型:空白语言建模。Donahue等人(2020)和Shen等人(2020)也研究了空白填充模型。与他们的工作不同,GLM使用空白填充目标来预训练语言模型,并评估它们在下游的自然语言理解和生成任务上的性能。
6、总结
GLM是一种通用的预训练框架,可以用于自然语言理解和生成。GLM将不同任务的预训练目标统一为自回归的空白填充,同时使用了混合的注意力掩码和新颖的二维位置编码。实验表明,GLM在 NLU任务上超越了以前的方法,并且可以有效地在不同任务之间共享参数。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。