一句话定义
语义熵(Semantic Entropy)是衡量同一个问题被大型语言模型(Large Language Model, LLM)回答多次时,这些答案在“意思”层面有多分散的指标。意思越集中,熵越低;意思越乱,熵越高。
怎么算
1. 让模型对同一问题生成多个答案。通常要开启随机采样,比如调高温度(AI 词典:Temperature">Temperature),否则每次输出几乎一样。
2. 把这些答案按语义等价聚类:措辞不同但意思相同算一类。例如“法国首都是巴黎”“巴黎是法国首都”“法国首都为巴黎”归为一类;“法国首都是里昂”单独一类;“我不知道”再一类。
3. 看每个语义类别占多少比例,再套用熵公式计算:类别越单一,熵越低;类别越平均且互相矛盾,熵越高。
打个比方
你问十个同事:“法国首都是哪里?”如果十个人都说巴黎,只是有人用中文、有人用法语,你会觉得这事靠谱。如果三个人说巴黎、三个人说里昂、四个人说不知道,你会觉得他们没共识。语义熵做的事,就是先把“说法不同”过滤掉,只看“意思是否分歧”。它不数有多少种句子,而是数有多少种意思。
和相邻概念的区别
| 指标 | 看什么 | 同义改写会拉高吗 | 常见用途 |
|---|---|---|---|
| 困惑度(Perplexity) | 词元(Token)层面的概率 | 会 | 语言建模、文本流畅度 |
| 输出熵 / 词汇熵 | 下一个词的分布 | 会 | 不确定性估计 |
| 自一致性(Self-Consistency) | 多次答案的多数投票 | 通常不直接算 | 提升解题准确率 |
| 语义熵 | 聚类后的意思分布 | 基本不会 | 幻觉检测、决定要不要拒答 |
关键差别是:前面几个容易被“换个说法”干扰。模型把“巴黎”改成“法国首都”,字面全变了,但事实没变。语义熵先做语义聚类,所以更接近“模型到底知不知道”。
对从业者和普通人的意义
对做应用的人,语义熵可以当一个“报警器”:低的时候正常回答;高的时候触发检索增强生成(Retrieval-Augmented Generation, RAG)再查资料、调用工具、请求人工确认,或者直接说“我不确定”。在客服、医疗、金融等场景,这比单纯看模型语气有没有自信可靠得多。
对普通人,它提醒一件事:模型说得流畅,不等于它知道。如果你把同一个问题换几种问法,它反复给出互相矛盾的核心事实,这就是一个明显的“可能胡编”信号。当然,低语义熵也不等于一定正确:如果模型稳定地相信一个错误答案,熵会很低,但照样是错的。语义熵更像体温计,不是诊断书。具体实现方案和阈值以官方页面或论文为准。
