首页 > 其他分享 >论文阅读Nature:Detecting hallucinations in large language models using semantic entropy(使用语义熵来检测大模型中的幻觉)

论文阅读Nature:Detecting hallucinations in large language models using semantic entropy(使用语义熵来检测大模型中的幻觉)

时间:2024-10-31 21:15:37浏览次数:9  
标签:semantic log language Nature 语义 0.3 0.2 0.5 模型

论文阅读-Nature:Detecting hallucinations in large language models using semantic entropy(使用语义熵来检测大模型中的幻觉)

  • 作者:Sebastian Farquhar, Jannik Kossen , Lorenz Kuhn & Yarin Gal
  • 单位: 牛津大学,计算机科学学院,OATML实验室
  • 期刊: Nature
  • 时间线: 2023年7月提交 → 2024年6月发表

概要

大型语言模型(LLM),如chatgpt1或gemini2,在近年来展现了令人印象深刻的推理和问答能力,引发了新一轮的科技热潮。但在实际使用的过程中,大模型有时会产生错误输出和未经证实的答案,这被学界和业界称为“幻觉”。这样的“幻觉”降低了大模型的可靠性,也阻碍了大模型在医疗、法律、新闻等许多专业领域的落地。

本文针对大模型“幻觉”问题中的一个子类 —— (“胡言乱语”)“虚构内容”(confabulations),即大模型毫无依据的 自己胡乱生成的 错误回答,提出了一种检测指标——语义熵。语义熵大的回答被本文认为是“虚构内容”的可能性大。

本文利用语义熵在多个数据集和模型上进行了“虚构内容”的检测,结果表明这样的检测有效的帮助大模型减轻了幻觉的发生

背景

关于幻觉的背景相信各位读者都已经熟知了,这里不在赘述

本文欲解决的问题

本文的目的是为了解决大预言模型的幻觉问题,但由于“幻觉”的定义是过于广泛的,且导致幻觉的原因是多种的,本文只关注“幻觉”的一个子集(一个种类)—— —— (“胡言乱语”)“虚构内容”(confabulations),即大模型毫无依据的 自己胡乱生成的 错误回答。

对于“虚构内容”(confabulations)的一个举例:

当大模型被问到一个医学问题“sotorasib(一种用于治疗非小细胞肺癌的抗癌药物)的目标是什么?”时,大模型会随机的出现下面两个回答:

  • KRASG12“c”(正确)
  • KRASG12“d”(不正确)→ 一个confabulations

但是笔者更建议读者将这样的现象认为是confabulations,更容易理解(

此外,作者强调还有以下的原因会导致出现和confabulations 类似的情况:

  • LLM的训练数据错误
  • LLM明知正确答案,但是为了追求“奖励”而故意撒谎
  • LLM 推理能力不足或者系统失败

本文强调由于这些原因导致的大模型幻觉不属于confabulations ,也不在本文讨论的范围之内。

方法

对大模型的回答计算语义熵,让大模型不回答语义熵大的问题或者提醒用户这个问题不能很好的回答,以避免confabulations的出现。

语义熵:大模型回答的混乱程度

信息熵

为了理解语义熵,我们需要首先学习或者说信息熵的概念。信息熵由克劳德·香农提出,通常用符号 H H H表示。信息熵越高,表示系统的不确定性越大。

信息熵的公式为:

H ( X ) = − ∑ i = 1 n P ( x i ) log ⁡ 2 P ( x i ) H(X)=-\sum_{i=1}^nP(x_i)\log_2P(x_i) H(X)=−i=1∑n​P(xi​)log2​P(xi​)

其中:

  • ( X ) (X ) (X) 是一个离散随机变量,取值为 x 1 , x 2 , . . . , x n {x_1, x_2, ..., x_n } x1​,x2​,...,xn​。
  • P ( x i ) P(x_i) P(xi​)是随机变量 X X X 取值为 x i x_i xi​ 的概率。
  • l o g 2 log_2 log2​ 表示以 2 为底的对数。

具体例子:

假设我们有一个简单的天气系统,只有三种可能的天气:晴天、阴天和雨天。它们的概率分别是:

  • 晴天: ( P ( 晴天 ) = 0.5 ) (P(晴天) = 0.5 ) (P(晴天)=0.5)
  • 阴天: ( P ( 阴天 ) = 0.3 ) (P(阴天) = 0.3 ) (P(阴天)=0.3)
  • 雨天: ( P ( 雨天 ) = 0.2 ) (P(雨天) = 0.2 ) (P(雨天)=0.2)

我们可以计算这个系统的信息熵:

H ( X ) = − ( 0.5 l o g 2 0.5 + 0.3 l o g 2 0.3 + 0.2 l o g 2 0.2 ) H(X) = - (0.5 log_2 0.5 + 0.3 log_2 0.3 + 0.2 log_2 0.2) H(X)=−(0.5log2​0.5+0.3log2​0.3+0.2log2​0.2)

计算每一项:

  • 0.5 l o g 2 0.5 = 0.5 × ( − 1 ) = − 0.5 0.5 log_2 0.5 = 0.5 × (-1) = -0.5 0.5log2​0.5=0.5×(−1)=−0.5
  • 0.3 l o g 2 0.3 ≈ 0.3 × ( − 1.737 ) ≈ − 0.521 0.3 log_2 0.3 ≈ 0.3 × (-1.737) ≈ -0.521 0.3log2​0.3≈0.3×(−1.737)≈−0.521
  • 0.2 l o g 2 0.2 ≈ 0.2 × ( − 2.322 ) ≈ − 0.464 0.2 log_2 0.2 ≈ 0.2 × (-2.322) ≈ -0.464 0.2log2​0.2≈0.2×(−2.322)≈−0.464

将它们相加:

H ( X ) = − ( − 0.5 − 0.521 − 0.464 ) = 1.485 H(X) = -(-0.5 - 0.521 - 0.464) = 1.485 H(X)=−(−0.5−0.521−0.464)=1.485

因此,这个天气系统的信息熵约为 1.485 比特。这表示在这个系统中,每天的天气平均需要约 1.485 比特的信息量来描述。信息熵越高,表示天气的不确定性越大。

语义熵

一个语义熵的计算可以分为以下三个步骤:

  1. 生成回答:对于同一个上下文,多次采样LLM的回答(可以理解为用一个问题向LLM提问多次),并记录每个回答出现的概率(开源大模型应该能直接查看这个数据,像gpt4这种就只能通过多次提问,然后每个回答的概率是1/提问次数)

  2. 聚类:对所有回答进行聚类,有着相同语义的回答被视为一类。具体的判断条件见下述原文

    我们根据同一聚类中的答案是否双向相互关联来确定答案。也就是说,如果句子A意味着句子B为真,反之亦然,那么我们认为它们属于同一类。如句子“法国的首都是巴黎”和“巴黎是法国的首都”

  3. 计算语义熵:将一类视为一个整体,借鉴信息熵的思想,按如下公式计算语义熵:

S E ( x ) = − Σ P ( C i ∣ x ) l o g P ( C i ∣ x ) SE(x)=-\Sigma P(C_i|x)logP(C_i|x) SE(x)=−ΣP(Ci​∣x)logP(Ci​∣x)

其中 x x x表示上下文, P ( C i ∣ x ) P(C_i|x) P(Ci​∣x)表示在上下文 x x x的情况下 C i C_i Ci​类别出现的概率,

具体例子

a. 单个句子层次(字符较少):

下面我们根据文中的案例,对“Where is the Effier Tower”这个问题进行语义熵的计算

思路流程图</p>
<strong>标签:</strong><a href=semantic,log,language,Nature,语义,0.3,0.2,0.5,模型
From: https://blog.csdn.net/Twinkle0110/article/details/143415687

相关文章

  • PromQL (Prometheus Query Language)进阶教程
    PrometheusQueryLanguage典型应用场景:在仪表板中可视化Prometheus数据、使用Prometheus的警报管理器构建警报规则等。了解如何构建PromQL是使用Prometheus的一项基本技能,通过上篇文章学习了基础知识,本文带你更深入学习并实践。Prometheusmetrics类型我们已经知道,Promet......
  • CE243 using C language and ARM
    SchoolofComputerScienceandElectronicEngineering1CE243(NWU)Assignment2(2020-2021)ObjectivesTheobjectiveofthisassignmentistodemonstrateyourunderstandingoftheembeddedsystemthatcanbeeffectivelycontrolledusingClanguageandA......
  • 【semantic Kernel】对接 Ollama
    在chatGPT的推动下。LLM简直火出天际,各行各业都在蹭。听说最近meta开源的llama3模型可以轻松在普通PC上运行,这让我也忍不住来蹭一层。以下是使用ollama试玩llama3的一些记录。什么是llamaLLaMA(LargeLanguageModelMetaAI)是Meta开发的大规模预训练语言模型,基于T......
  • 《FashionViL: Fashion-Focused Vision-and-Language Representation Learning》中文
    文章汉化系列目录文章目录文章汉化系列目录摘要1引言2相关工作3方法论3.1模型概述3.2预训练任务4实验*4.1预训练数据集和下游任务4.2比较结果4.3消融研究4.4可视化5结论摘要 大规模视觉-语言(V+L)表示学习的预训练已被证明在提升各种下游V+L任务上非......
  • 【论文笔记】C$^2$RL: Content and Context Representation Learning for Gloss-free
    ......
  • RBE104TC C/C++ Programming Language
    RBE104TCC/C++ProgrammingLanguageAssignment2ContributiontotheOverallMarks70%IssueDateSubmissionDeadline3rdNovember2024AssignmentOverview:ThisassignmentisgearedtowardsassessingfundamentalcodingconceptsinC/C++andinitiatingthe......
  • 【semantic Kernel】接入其他平台AI(智普)
    SemantieKernel中对话请求默认是发送到OpenAI去的其他与OpenAI对话请求接口兼容的模型平台,一般只需要修改host即可,path不需要修改,可以通过HttpClientHandler修改接入智普AI但是智谱AI的对话接口地址是api/paas/v4/chat/completions,和OpenAI不同,所以需要修改host和path智普......
  • Nature 正刊丨空间蛋白质组学确定JAKi是一种致命皮肤病的治疗方法
    01摘要中毒性表皮坏死松解症(TEN)是一种由常见药物引发的致命药物性皮肤反应,是一个新出现的公共卫生问题1,2,3。TEN患者会因角质形成细胞死亡而发生严重和突然的表皮脱离。尽管已经提出了驱动角质形成细胞死亡的分子机制,但主要驱动因素仍然未知,TEN4,5,6没有有效的治疗方法。在......
  • A Survey of Multimodal Large Language Model from A Data-centric Perspective
    本文是LLM系列文章,针对《ASurveyofMultimodalLargeLanguageModelfromAData-centricPerspective》的翻译。以数据为中心的多模态大型语言模型综述摘要1引言2背景和分类3数据收集和处理4以数据为中心的预训练5以数据为中心的自适应6评估7未来方......
  • A Survey of Generative Search and Recommendation in the Era of Large Language Mo
    本文是LLM系列文章,针对《ASurveyofGenerativeSearchandRecommendationintheEraofLargeLanguageModels》的翻译。大型语言模型时代的生成式搜索与推荐综述摘要1引言2传统范式3用于搜索和推荐的生成式范式4生成式搜索5生成式推荐6讨论7结论......