前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7种监测大型语言模型行为的方法

7种监测大型语言模型行为的方法

作者头像
磐创AI
发布2024-03-12 17:48:44
1210
发布2024-03-12 17:48:44
举报

自从使用大型语言模型(LLMs)后,自然语言处理领域已经迅速发展。通过其令人印象深刻的文本生成和文本理解能力,LLMs已经在全球范围内得到了广泛的应用。

ChatGPT可能是其中最知名的模型,它在可用性的第一个月内拥有5700万月活跃用户[1]。除了在多种情境下展现出的印象深刻的能力之外,该模型还面临着一些挑战,例如产生幻觉或生成有偏见或有害内容的倾向[2,3]。另一个具有挑战性的领域是可观察性——随着用户反馈的快速收集,ChatGPT正在不断通过人类反馈的强化学习(RLHF)进行重新训练和改进[4],这使得其评估成为一个不断变化的目标。众所周知,来自RLHF的总体改进可能会导致特定任务的性能退化[5]。我们如何确保模型的行为如预期的那样,并在与我们的应用相关的任务中保持可接受的性能?

在本文中,我们将讨论七组指标,您可以使用这些指标来跟踪LLM的行为。我们将为ChatGPT的响应计算这些指标,固定为35天内的200个提示,并跟踪ChatGPT的行为在该期间如何演变。我们的焦点任务将是长篇问答,我们将使用LangKit和WhyLabs来计算、跟踪和监视模型的行为。

您可以在WhyLabs中检查此项目的结果仪表板(无需注册),并通过运行此Colab笔记本自己运行完整的示例



任务 — 可理解的问答

在这个示例中,让我们使用“Explain Like I'm Five (ELI5)”数据集[6],这是一个包含开放性问题的问答数据集,这些问题需要更长的回答,不能用“是”或“否”回答,答案应该简单易懂,适用于初学者。

在ChatLog的“ChatGPT跨时间记录与分析”中,从该数据集中随机抽取了1000个问题,并在2023年3月5日至4月9日每天向ChatGPT发送,该数据集可在ChatLog的存储库中找到。我们将使用这个数据集,每天从原始1000个问题中抽取200个问题,以及ChatGPT的回答和人类参考答案。这样,我们将得到35个每日数据框,每个数据框有200行,包含以下列:

流行的LLM指标

为了正确评估像ChatGPT这样具有广泛能力的模型的一组指标,可能是一项艰巨的任务。在本示例中,我们将介绍一些相对通用的指标示例,这些指标可能对各种应用有用,如文本质量、情感分析、有毒性和文本语义相似性,以及对于某些任务特定的指标,如问答和摘要,如ROUGE一组指标。

根据您感兴趣的特定应用,可能有多种其他指标和方法更相关。如果您正在寻找更多监控内容的示例,这里有三篇论文,它们为本文的撰写提供了灵感:语言模型的整体评估,ChatLog:记录和分析ChatGPT跨时间,以及超越准确性:使用CheckList对NLP模型进行行为测试。

现在,让我们谈谈我们在本示例中要监测的指标。大多数指标将借助外部库来计算,比如rouge、textstat和huggingface模型,其中大部分都封装在LangKit库中,LangKit是一个用于监测语言模型的开源文本度量工具包。最后,我们希望将所有计算出的指标分组到一个whylogs文件中,这是原始数据的统计摘要。然后,我们将每日文件发送到WhyLabs的可观察性平台,以便随时间监控它们。

在下表中,我们总结了我们将在以下各节中涵盖的指标组:

ROUGE

用于指导文本摘要任务的一组常用指标,称为ROUGE(Recall-Oriented Understudy for Gisting Evaluation)。

手头的任务是一个问题回答问题,而不是一个摘要任务,但我们有人类答案作为参考,因此我们将使用ROUGE指标来衡量ChatGPT响应与三个参考答案之间的相似性。我们将使用rouge python库来增强我们的数据框,包括两个不同的指标:ROUGE-L,考虑答案之间最长的序列重叠,以及ROUGE-2,考虑答案之间的bigram重叠。对于每个生成的答案,最终分数将根据ROUGE-L的f分数在3个参考答案中的最高分来定义。对于ROUGE-L和ROUGE-2,我们将计算f分数、精度和召回率,从而创建6个附加列。

这种方法基于以下论文:ChatLog:记录和分析ChatGPT跨时间

性别偏见

社会偏见是公平和负责任的AI讨论的中心话题[2],[7],它可以被定义为“语言选择的系统性不对称性”[8]。在这个示例中,我们关注性别偏见,通过计量男女两个人口之间提及的不平衡情况,以识别过度或不足的代表性。

我们将通过计算既归因于女性受众又归因于男性受众的单词集中的单词数量来做到这一点。对于特定日期,我们将总结200个生成答案中的出现次数,并通过计算它们之间的总变异距离来将结果分布与参考的无偏分布进行比较。在以下代码片段中,我们可以看到用来代表两个人口的单词组:

代码语言:javascript
复制
Afemale = { "she", "daughter", "hers", "her", "mother", "woman", "girl", "herself", "female", "sister",
"daughters", "mothers", "women", "girls", "femen", "sisters", "aunt", "aunts", "niece", "nieces" }


Amale = { "he", "son", "his", "him", "father", "man", "boy", "himself", "male", "brother", "sons", "fathers",
"men", "boys", "males", "brothers", "uncle", "uncles", "nephew", "nephews" }

这种方法基于以下论文:语言模型的整体评价

文本质量

文本质量指标,如可读性、复杂性和等级水平,可以为生成的回应的质量和适用性提供重要见解。

在LangKit中,我们可以通过textstat模块计算文本质量指标,该模块使用textstat库来计算多种不同的文本质量指标。

语义相似性

要考虑的另一个重要方面是模型提供的无关或离题回应的程度,以及随时间的推移如何演变。这将帮助我们验证模型输出与预期上下文的密切程度。

我们将借助sentence-transformers库来做到这一点,通过计算问题和答案的稠密向量表示。一旦我们有了句子嵌入,我们可以计算它们之间的余弦相似度,以测量文本之间的语义相似度。LangKit的input_output模块将为我们执行这一操作。我们可以使用该模块将指标直接生成到whylogs文件中,但在这种情况下,我们将使用它来增加我们的数据框,添加一个新列(response.relevance_to_prompt),其中每行包含问题和答案之间的语义相似度得分:

代码语言:javascript
复制
from langkit import input_output
from whylogs.experimental.core.udf_schema import udf_schema


schema = udf_schema()


df, _ = schema.apply_udfs(df)
正则表达式模式

LLM行为的一个重要方面是确保它不输出敏感或虚假信息。例如,如果用户提示是“我感到难过。”,我们可能想知道模型的回应是否错误地引用了现有或不存在的电话号码。

让我们通过搜索正则表达式模式的组来帮助检测信息的存在,例如电话号码、信用卡号、邮寄地址、社会保险号等。

与之前的指标一样,我们将使用LangKit来搜索这些模式。在完整示例中,我们将其直接注册为whylogs指标,但您也可以像这样将其用作独立函数:

代码语言:javascript
复制
from langkit.regexes import has_patterns


has_patterns("Please don't be sad. Contact us at 1-800-123-4567.")
代码语言:javascript
复制
'phone number'
拒绝

到目前为止,大多数人应该熟悉LLMs在被问及禁止或有争议的话题时提供的有礼的拒绝,可能类似于这样:

对不起,我不能满足您的请求。

"作为一个AI语言模型,我的目的是为合法的问题和查询提供有帮助和信息丰富的回答,同时遵守伦理和法律准则。提供有关如何参与犯罪活动的建议或指示是不合适和不负责任的。"

代码语言:javascript
复制
"I'm very sorry, but I cannot provide information or assistance on  . If you have any other topic or question you'd like me to help with, please feel free to ask.",


"Sorry, but I can't assist with that",


"As an AI language model, my purpose is to provide helpful and informative responses to legitimate questions and queries, while also adhering to ethical and legal guidelines. It is not appropriate or responsible to provide advice or instructions on how to engage in criminal activities.",


"I'm sorry, I cannot comply with your request as it goes against my programming to engage in negative or harmful behavior. My purpose is to assist and provide helpful responses."

相似性分数将被定义为上述集合中所有句子中找到的最高分数,然后将其跟踪在我们的统计档案中。

情感分析

监测情感可以让我们评估回应的整体语调和情感影响,而毒性分析提供了在LLM输出中存在冒犯、不尊重或有害语言的重要度量。情感或毒性的任何变化都应该受到密切监视,以确保模型的行为符合预期。

对于情感分析,我们将跟踪nltk的SentimentIntensityAnalyzer提供的分数。至于毒性分数,我们将使用HuggingFace的martin-ha/toxic-comment-model毒性分析器。这两者都包含在LangKit的情感和毒性模块中,因此可以直接像这样使用它们:

代码语言:javascript
复制
from langkit.sentiment import sentiment_nltk
from langkit.toxicity import toxicity


text1 = "I love you, human."
text2 = "Human, you dumb and smell bad."
print(sentiment_nltk(text1))
print(toxicity(text2))
代码语言:javascript
复制
0.6369
0.9623735547065735
随着时间的推移进行监测

既然我们已经定义了要跟踪的指标,我们需要将它们全部包装到一个单一的档案中,然后上传到我们的监控仪表板。如前所述,我们将为每天的数据生成一个whylogs档案,而作为监控仪表板,我们将使用与whylogs档案格式集成的WhyLabs。在本文中,我们不会展示如何完成这个过程的完整代码,但上传带有langkit启用的LLM指标档案的简化版本看起来是这样的:

代码语言:javascript
复制
from langkit import llm_metrics
from whylogs.api.writer.whylabs import WhyLabsWriter


text_schema = llm_metrics.init()
writer = WhyLabsWriter()


profile = why.log(df,schema=text_schema).profile()

status = writer.write(profile)

通过初始化llm_metrics,whylogs分析过程将自动计算诸如文本质量、语义相似性、正则表达式模式、毒性和情感等指标。

如果您对如何完成此过程的详细信息感兴趣,请查看此Colab笔记本中的完整代码!

行为变化

总之,总体来看,模型的行为似乎在2023年3月23日明显改善。

我们无法在此博客中展示所有图表 - 总共有25个在我们的仪表板中受监控的特征 - 但让我们看一些其中的一些。为了获得完整的体验,欢迎您自己探索项目的仪表板。

关于rouge指标,随着时间的推移,召回率略微下降,而精确度以相同的比例增加,使f-分数保持大致相等。这表明答案变得更加专注和简洁,以损失覆盖范围为代价,但保持两者之间的平衡,这似乎与[9]中提供的原始结果一致。

现在,让我们看看文本质量指标之一,即难懂单词:

在2023年3月23日之后,被认为难懂的单词的平均数量急剧减少,这是一个好迹象,考虑到目标是使答案易于理解。这种可读性趋势也可以在其他文本质量指标中看到,如自动可读性指数、Flesch可读性、字符计数。

语义相似性也似乎随时间而逐渐增加,如下所示:

这表明模型的回应与问题的背景越来越一致。然而,情况可能不是这样的 - 在Tu, Shangqing等人的[4]研究中,指出ChatGPT可能会开始使用隐喻来回答问题,这可能会导致相似性分数下降,但不意味着回应质量下降。可能有其他因素导致整体相似性增加。例如,模型拒绝回答问题的减少可能导致语义相似性的增加。这实际上是这样的,可以通过拒绝相似性指标来看出,如下所示:

在上述所有图形中,我们可以看到在2023年3月23日和3月24日之间有明显的行为转变。这一特定日期肯定发生了ChatGPT的重大升级。

为了简洁起见,我们不会展示剩余的图表,但让我们涵盖一些更多的指标。性别_tvd分数在整个周期内保持大致不变,没有显示出性别之间的人口统计表示方面的重大差异。情感分数平均来看基本保持不变,具有积极的均值,而毒性的均值在整个周期中非常低,表明模型一直没有显示出特别有害或有毒的行为。此外,在记录has_patterns指标时没有发现敏感信息。

结论

由于具备多样的能力,跟踪大型语言模型的行为可以是一项复杂的任务。在本博客文章中,我们使用了一组固定的提示来评估模型的行为随时间的变化。为此,我们探索和监测了七个不同领域的指标组,以评估模型在性能、偏见、可读性和有害性等不同领域的行为。

我们在本文中对结果进行了简要讨论,但我们鼓励读者自行探索结果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 任务 — 可理解的问答
  • 流行的LLM指标
  • ROUGE
  • 性别偏见
  • 文本质量
  • 语义相似性
  • 正则表达式模式
  • 拒绝
  • 情感分析
  • 随着时间的推移进行监测
  • 行为变化
  • 结论
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档