当前位置: 首页 > article >正文

语言模型的评测

语言模型的评测

内在评测

在内在评测中,测试文本通常由与预训练中所用的文本独立同分布的文本构成,不依赖于具体任务。最为常用的内部评测指标是困惑度(Perplexity)

困惑度是衡量语言模型对测试文本预测能力的一个指标,它反映了模型对测试数据的“困惑”程度。困惑度越低,意味着模型对测试文本的预测越准确,语言模型的性能越好。

困惑度的计算公式如下:

P P L ( s t e s t ) = 1 P ( w 1 : N ) N = ∏ i = 1 N 1 P ( w i ∣ w < i ) N PP_L(stest) = \sqrt[N]{\frac{1}{P(w_1:N)}} = \sqrt[N]{\prod_{i=1}^{N} \frac{1}{P(w_i | w_{<i})}} PPL(stest)=NP(w1:N)1 =Ni=1NP(wiw<i)1

这个公式也可以改写为:

P P L ( s t e s t ) = exp ⁡ ( − 1 N ∑ i = 1 N log ⁡ P ( w i ∣ w < i ) ) PP_L(stest) = \exp\left(-\frac{1}{N} \sum_{i=1}^{N} \log P(w_i | w_{<i})\right) PPL(stest)=exp(N1i=1NlogP(wiw<i))

其中, P ( w i ∣ w < i ) P(w_i | w_{<i}) P(wiw<i) 表示给定前 i-1 个词的情况下,第 i 个词出现的概率。这个概率越大,说明模型对测试数据的预测越有信心,困惑度就越低。

困惑度与交叉熵(Cross-Entropy)

交叉熵是衡量两个概率分布差异的指标。

在语言模型中,交叉熵可以用来衡量模型生成的词分布与测试样本真实词分布之间的差异。困惑度实际上是生成模型生成的词分布的信息熵的上界,因此,困惑度的降低也意味着模型“胡言乱语”的可能性降低,即模型的预测更加准确和可靠。

外在评测

外在评测是评估语言模型在特定任务上性能的一种方法,它通过比较模型生成的文本和标准答案来进行。这种方法通常包括基于统计指标的评测和基于语言模型的评测两种类型。

基于统计指标的评测

基于统计指标的评测方法通过构造统计指标来评估语言模型的输出与标准答案之间的契合程度,以此来衡量语言模型的生成能力。这种方法主要依赖于n-gram重合度、最长公共子序列(LCS)等指标,以及它们的变体,如BLEU和ROUGE。

BLEU(BiLingual Evaluation Understudy)

BLEU是一种精度导向的指标,主要用于机器翻译任务。它通过计算生成的翻译与参考翻译之间的n-gram重合程度来评估翻译的精度。BLEU的计算公式如下:

P r ( g n ) = ∑ i = 1 ∣ S g e n ∣ ∑ g n ∈ S g e n i Countmatch ( g n , S r e f i ) ∑ i = 1 ∣ S g e n ∣ ∑ g n ∈ S g e n i Count ( g n ) P_r(g_n) = \frac{\sum_{i=1}^{|S_{gen}|} \sum_{gn \in S_{gen_i}} \text{Countmatch}(gn, S_{ref_i})}{\sum_{i=1}^{|S_{gen}|} \sum_{gn \in S_{gen_i}} \text{Count}(gn)} Pr(gn)=i=1SgengnSgeniCount(gn)i=1SgengnSgeniCountmatch(gn,Srefi)

其中, P r ( g n ) P_r(g_n) Pr(gn)表示n-gram精度,分子计算了生成的翻译与参考翻译重合的n-gram个数,分母计算了生成的翻译中包含的n-gram总数。

BLEU得分是多个n-gram精度的几何平均,可以通过调整不同的n-gram长度和权重来得到更贴近人类评价的结果。此外,还可以通过设置惩罚项来调整BLEU得分,以考虑不同文本长度对翻译质量的影响。

ROUGE(Recall-Oriented Understudy for Gisting Evaluation)

ROUGE是一种召回导向的指标,主要用于摘要生成任务。它包含多种基于n-gram和基于LCS的召回指标,如ROUGE-N、ROUGE-L、ROUGE-W和ROUGE-S。

  • ROUGE-N是基于n-gram的召回指标
  • ROUGE-L是基于LCS的召回指标
  • ROUGE-W和ROUGE-S进一步发展了这些概念,分别引入了加权操作和基于Skip-bigram的召回指标。

ROUGE-N的计算公式如下:

ROUGE-N = ∑ s ∈ S r e f ∑ g n ∈ s Countmatch ( g n , s g e n ) ∑ s ∈ S r e f ∑ g n ∈ s Count ( g n ) \text{ROUGE-N} = \frac{\sum_{s \in S_{ref}} \sum_{gn \in s} \text{Countmatch}(gn, s_{gen})}{\sum_{s \in S_{ref}} \sum_{gn \in s} \text{Count}(gn)} ROUGE-N=sSrefgnsCount(gn)sSrefgnsCountmatch(gn,sgen)

其中, R r g R_{rg} Rrg R g r R_{gr} Rgr分别表示模型生成的摘要与参考摘要之间的最大公共子序列长度与参考摘要和模型生成的摘要之间的最大公共子序列长度。

基于语言模型的评测

基于语言模型的评测方法通常涉及复杂的数学计算和模型操作。主要关注语言模型生成的文本与参考文本之间的相似度或质量

基于上下文词嵌入的评测方法:

BERTScore:这种方法利用BERT模型的上下文词嵌入向量来计算生成文本和参考文本之间的相似度。

BERTScore通过比较生成文本和参考文本中每个词的BERT嵌入向量来计算精度(Precision)、召回(Recall)和F1量度。

BERTScore的计算过程主要包括以下几个步骤:

  • 使用BERT模型对候选句子和参考句子进行编码,得到每个词的上下文嵌入表示。
  • 计算候选句子中每个词与参考句子中每个词的余弦相似度。
  • 使用贪心匹配算法,为候选句子中的每个词找到参考句子中最相似的词。
  • 基于匹配结果计算精确率(Precision)、召回率(Recall)和F1分数。
  • List item

BERTScore的召回率
Recall = 1 ∣ Y ∣ ∑ y ∈ Y max ⁡ x ∈ X sim ( B E R T ( x ) , B E R T ( y ) ) \text{Recall} = \frac{1}{|Y|} \sum_{y \in Y} \max_{x \in X} \text{sim}(BERT(x), BERT(y)) Recall=Y1yYmaxxXsim(BERT(x),BERT(y))
其中,(x)和(y)分别表示候选句子和参考句子中的词,(BERT(x))表示词(x)的BERT嵌入表示。

BERTScore的精确率
Precision = 1 ∣ X ∣ ∑ x ∈ X max ⁡ y ∈ Y sim ( B E R T ( x ) , B E R T ( y ) ) \text{Precision} = \frac{1}{|X|} \sum_{x \in X} \max_{y \in Y} \text{sim}(BERT(x), BERT(y)) Precision=X1xXmaxyYsim(BERT(x),BERT(y))
其中,(X)和(Y)分别表示候选句子和参考句子中的词集合。

F1分数是召回率和精确率的调和平均值
F1 = 2 ⋅ Precision ⋅ Recall Precision + Recall \text{F1} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} F1=2Precision+RecallPrecisionRecall

BERTScore的优势在于它利用了BERT模型的上下文嵌入,能够捕捉词语的语义信息,而不仅仅是表面的字符匹配。通过计算词嵌入的相似度,BERTScore可以识别同义词或相似表达,而不局限于完全相同的词语。

此外,BERTScore考虑了上下文信息,使得它能够更好地处理多义词等复杂情况。实验表明,BERTScore在句子级和系统级评估上都与人工判断有较高的相关性。

基于生成模型的评测方法:

G-EVAL:这种方法利用生成式大语言模型(如GPT-4)在没有参考文本的情况下对生成文本进行评分。G-EVAL通过提示工程(Prompt Engineering)引导模型输出评测分数。

  • 提示工程包括任务描述
  • 评分标准和评测步骤
  • 以及输入文本与生成的文本

G-EVAL通过加权平均机制对模型输出的得分进行改进,以提高评分的区分度。
在这里插入图片描述
例如摘要生成任务中的输入文本是原文,而生成的文本就是生成摘要。将上述三部分组合在一个prompt 里面然后输入给 GPT-4,GPT-4 便可给出对应的评分


http://www.kler.cn/a/381402.html

相关文章:

  • uniapp h5端临时路径转file对象上传
  • 前端入门一之CSS知识详解
  • DolphinScheduler告警通知
  • 简单的 docker 部署ELK
  • spark的RDD分区的设定规则
  • 如何搭建汽车行业AI知识库:定义+好处+方法步骤
  • 推荐!一些好用的VSCode插件
  • 【前端基础】Flex布局
  • celery加速爬虫 使用flower 可视化地查看celery的实时监控情况
  • C++和JAVA中的sort详解
  • QML项目实战:自定义Combox
  • vue-router+element-plus实现左边侧边栏+右边内容
  • 【2024最新版Kotlin教程】Kotlin第一行代码系列第三课-流程控制
  • 解决 Spring 异步处理中的 JDK 动态代理问题及相关错误分析
  • CCS下载安装(以12.3.0版本为例)
  • 学习threejs,导入OBJ格式的模型
  • BackTrader-Commission 06
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第五题
  • fpga引脚约束问题
  • springboot集成onlyoffice(部署+开发)
  • 风宇博客全站HTTPS配置
  • 【图论】——理论基础总结
  • 【力扣打卡系列】移动零(双指针)
  • ESRALLY安装与使用
  • 「C/C++」C/C++的区别
  • C#编程:VSTO在Excel工作表中输出List数据