本文主要是介绍NLP 的 Task 和 Metric (Perplexity,BLEU,METOR,ROUGH,CIDEr),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Task
1. 信息检索IR(Information Retrieval)
信息检索(NLU)是指通过在大规模的文本库或数据库中搜索相关信息,将与用户查询匹配的文档或记录返回给用户。信息检索主要涉及到索引构建、查询处理和结果排序等技术,旨在帮助用户快速有效地获取所需的信息。
讲query和documents映射到同一个特征空间,进行相似度计算,避免传统IR中词汇和语义失配的问题。
模型架构
Cross-Encoder架构:先将 query 和 document 的tokens进行拼接一起送入共同的LM,将CLS token作为两者的共同表征。Pairwise hinge loss 类似三元组损失,用于拉近正样本对,分离负样本对。
Dual-Encoder架构:分别对query 和 document 进行编码,再对特征向量计算NLL损失,对比学习。
这个架构的好处在于,可以提前对document进行编码,构建index索引,有新的query时,只对query进行编码,使用faiss等KNN向量库,实现快速匹配。
评价指标Metric
用于衡量检索系统在返回前K个结果时的性能 (仅对TOP-K个检索对象进行评价)。
-
MRR@K(平均倒数排名Mean Reciprocal Rank at K):它衡量的是在给定查询集合Q上,第一个相关文档出现在前K个返回结果中的平均倒数排名。注意,这里的“倒数排名”表示相关文档在结果列表中的位置的倒数,例如,倒数第一表示在第一个位置。MRR@K值越高,表示系统更快地返回首个相关文档。
-
MAP@K(平均准确率排名Mean Average Precision at K):它衡量的是在给定查询集合上,前K个返回结果的平均准确率(Precision)。MAP@K考虑了结果的排序和每个位置上结果的准确性,得分越高表示系统在前K个结果中的平均准确率越高。
-
NDCG@K(标准化折损累计增益Normalized Discounted Cumulative Gain at K):NDCG衡量的是返回结果列表的相关性排序质量。在NDCG计算中,相关性被赋予不同的权重,根据其在排序列表中的位置和级别,较高的相关性被赋予更高的权重。NDCG@K值越高,表示系统在前K个结果中的相关性排序质量越好。
发展方向
- 如何挖掘更难的负样本对儿?
ANCE使得模型在训练过程中,异步维护一个inference程序,每训练k步做一次inference,把推理中排名靠前的错误结果作为难负样本,将其加入下一轮的训练过程中。
- 如何更好的做大模型的预训练?
SEED使用 很弱的decoder
去强迫 encoder 产生更强的CLS特征表示。
- 如何提升模型的few-shot性能?
2. 文本生成TG(Text Generation)
文本生成(NLG)是指使用计算机自动生成自然语言文本的过程。文本生成可以基于特定的规则、模板或者统计模型来进行,它可以用于生成各种形式的文本,如文章、对话、摘要、标题等。文本生成的应用领域包括自动摘要、机器翻译、智能客服等。
主要包含两种文本生成模式:data2text、text2text,这2个任务都属于自然语言生成领域,但关注的问题和任务目标略有不同。data2text主要关注如何将结构化数据转化为自然语言文本,而text2text则涵盖了各种文本到文本的转化任务。
2.1 Data-to-text
输入的data可以是image(图像理解)、table(表格理解)、graph、json等非文本数据,输出对data的总结文本
data2text(数据到文本):该任务的目标是根据给定的结构化数据,将其转化为自然语言文本。常见的应用包括生成报告、摘要、描述等。例如,在天气预报中,将气象数据(如温度、湿度等)转化为可读的天气预报文本。
2.2 Text-to-text
text2text(文本到文本)是一个广泛的任务领域,涵盖了各种自然语言生成任务。text2text的目标是将输入的自然语言文本转化为另一种形式的自然语言文本,如机器翻译、文本摘要、问答生成、文本风格转换等。例如,将一篇英文文章翻译成中文,将一段文本生成概括性摘要,或者将问题转化为回答。
比如摘要 总结
比如对话系统旨在实现人机之间的自然对话交互。它可以是任务驱动型对话系统,根据用户提供的指令或需求回答问题或完成任务;也可以是开放型对话系统,与用户进行自由对话。对话系统需要理解上下文、生成连贯的回复并与用户进行有效的交互。
模型架构
decoder类型:
评价指标Metric
**通用指标:**BLUE、Perplexity、ROUGH、NIST、METOR、CIDEr
其他指标:
可控文本生成Control TG
输入:prompt + text
模型层面:Prefix + Model
修改概率分布:
修改模型结构:
3. 问答QA(Question Answering)
问答(NLU+NLG)是指系统根据用户提出的问题,在预定义的知识库
或文本集合
中,寻找并生成准确的答案。问答可以结合NLU和NLG两个方面的技术。NLU用于理解用户的问题,将其转化为机器可以理解的形式,并确定查询的关键信息。NLG则用于将从知识库中找到的答案生成自然语言形式的回答并返回给用户。
-
阅读理解问答:要求机器阅读并理解输入的文本和问题,在此基础上,解答跟文本信息相关的问题。
-
开放域问答:Open-domain QA则是我们可以问任何事实性问题,而不在输入中给任何提示文本,可以自己直接生成答案,也可以检索外部知识库生成答案。
3.1 阅读理解RC
RC Task设计有:Cloze test完形填空(CNN/Daily Mail、CBT)
、Multiple choice多选(RACE)
、Extractive 答案在原文的提取问答(SQuAD)
模型架构
可以直接把query和reference拼在一起,送入BERT等语言模型一起编码交互:
大模型统一了阅读理解的形式:将提取式阅读理解(答案在文中)、总结式阅读理解(答案不在文中)、选择题、判断题等多种问题,统一为text2text
的范式。
3.2 开放域问答 OQA
Open-domain QA则是我们可以问任何事实性问题,一般是给你一个海量文本的语料库,比方Wikipedia/百度百科,让你从这个里面去找回答任意非主观问题的答案,这显然就困难地多。
模型架构
-
生成式模型generate-based:大模型的庞大参数蕴含大量知识,可以脱离外部知识库,直接生成答案。
-
检索式模型retrieve-based:① 文本检索:需要一个retriever,从海量文本中(知识库/互联网),找到跟question最相关的N篇文档,这些文档中包含了该问题的答案; ② 阅读理解:需要一个reader,从上面抽取出来的文档中,找到具体答案。
RAG检索增强生成:联合预训练检索器和大语言模型,如REALM。
mask掉unlabel的文本做完形填空,将mask的text作为query,将query和检索到的前k个知识库内容拼接,送入大模型进行生成answer(回答被mask掉的text)。
除了在提前构架好的外部知识库中检索,还可以在互联网上进行海量检索:
Metric
BLEU, METEOR, ROUGE 一般在机器翻译里用,CIDEr 一般在图像字幕生成里用
Perplexity
https://zhuanlan.zhihu.com/p/633757727
BLEU
所谓BLEU,最开始是用于机器翻译中。他的思想其实很native,对于一个给定的句子,有标准译文S1,还有一个神经网络翻译的句子S2。BLEU的思想就是对于出现机器翻译S2的所有短语,看有多少个短语出现在S1中,然后算一下这个比率就是BLEU的分数了(类似precision)。首先根据n-gram划分一个短语包含单词的数量,有BLEU-1,BLEU-2,BLEU-3,BLEU-4。分别就是把文章划分成长度为1个单词的短语,长度为2个单词的短语…然后统计这些短语出现在标准译文中个数,在分别除以划分总数,就是对应的BLEU-1分数,BLEU-2分数…,其实就是准确率。看这些划分的短语中有多少是出现在标准译文当中的。一般而言:unigram 的准确率可以用于衡量单词翻译的准确性,更高阶的 n-gram 的准确率可以用来衡量句子的流畅性 n{1,2,3,4}
但是BLEU会有个缺陷,假如我就翻译一个单词,而这个单词正好在标准译文中(译文特别短),那岂不是准确率100%,对于这个缺陷,BLEU算法会有个长度惩罚因子,就是翻译太短了就会有惩罚。还有一个缺陷就是BLUE score没有考虑译文中单词的顺序。
代码层面具体怎么使用建议看:https://zhuanlan.zhihu.com/p/404381278
METOR
其大意是说有时候翻译模型翻译的结果是对的,只是碰巧跟参考译文没对上(比如用了一个同义词),于是用 WordNet 等知识源扩充了一下同义词集,同时考虑了单词的词形(词干相同的词也认为是部分匹配的,也应该给予一定的奖励,比如说把 likes 翻译成了 like 总比翻译成别的乱七八糟的词要好吧?)在评价句子流畅性的时候,用了 chunk 的概念(候选译文和参考译文能够对齐的、空间排列上连续的单词形成一个 chunk,这个对齐算法是一个有点复杂的启发式 beam serach),chunk 的数目越少意味着每个 chunk 的平均长度越长,也就是说候选译文和参考译文的语序越一致。最后还有召回率和准确率两者都要考虑,用 F 值作为最后的评价指标。
METEOR 的缺点也很明显,其一是只有 Java 实现,而且还是 jar 包不是 API,只能算整个测试集上的 METEOR 而不是每条语句单独测(除非你把每条语句单独写到文件里然后调 jar 包),实在是太蠢了。在 Python 统治深度学习的当下,可想而知很少有人用这个指标……
ROUGH
ROUGE算法基本思路和BLEU差不多,不过它统计的是召回率,也就是对于标准译文中的短语,统计一下它们有多少个出现在机器翻译的译文当中(刚好和BLUE反过来),其实就是看机器翻译有多少个翻译对了,这个评价指标主要在于标准译文中的短语都出现过,那么自然机器翻译的译文越长结果越好。
CIDEr
常用语图像字幕生成,CIDEr 是 BLEU 和向量空间模型的结合。它把每个句子看成文档,然后计算 TF-IDF 向量(只不过 term 是 n-gram 而不是单词)的余弦夹角,据此得到候选句子和参考句子的相似度,同样是不同长度的 n-gram 相似度取平均得到最终结果。优点是不同的 n-gram 随着 TF-IDF 的不同而有不同的权重,因为整个语料里更常见的 n-gram 包含了更小的信息量。图像字幕生成评价的要点是看模型有没有抓取到关键信息,比如说一幅图的内容是『白天一个人在游泳池游泳』,其中最关键的信息应该是『游泳』,生成字幕时如果包含或者漏掉了一些别的信息(比如说『白天』)其实是无关紧要的,所以需要这么一种对非关键词降权的操作。
这篇关于NLP 的 Task 和 Metric (Perplexity,BLEU,METOR,ROUGH,CIDEr)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!