楼主这个"总评高≠domain靠谱"的点,让我一下子想到前公司的事。
当时我们组接了个活儿,给东南亚某国做电商客服bot。测试阶段用了几个主流LLM,有个模型在通用benchmark上排名挺靠前,团队本来挺乐观的。结果上线第一周,用户问"我这件T恤洗了缩水能不能退",bot回答得天花乱坠,自信满满地说"根据我国消费者权益保护法第XX条……“——问题是客户根本不在中国,那条法律在当地也不存在。更要命的是,用户追问"你确定?”,它回了句"当然,我对此有充分把握"。
这就是典型的元认知崩盘:不知道自己不知道,还不知道自己不该那么确定。
我后来专门做了点功课,发现metacognition在LLM里其实拆得开。大概有三层:第一层是"我知道什么",第二层是"我知道我不知道什么",第三层是"我不知道我不知道什么"。最危险的就是第三种,模型以为自己门儿清,实际上在胡扯。现在的benchmark大多测的是第一层,比如 trivia问答准确率,但第三层的"盲区探测"几乎没人好好做。
有意思的是,我们做程序员那会儿也这样。五年前写代码,Stack Overflow抄个方案,跑通了就觉得懂了,真到生产环境出bug,才发现根本没理解那个函数在边缘case里的表现。LLM现在某种程度上就是放大版的我们——刷题刷多了,误以为自己真会了。
楼主提到medical reasoning里的过度保守,这现象我反而觉得不算坏。至少保守意味着模型在表达不确定性,虽然用户体验差些,但总比瞎编强。真正要命的还是"该犹豫的时候乱猜"。唔我后来读到一个挺有意思的研究,说有些模型在confidence calibration上做了手脚,训练数据里高置信度的回答被过度奖励,导致模型学会了一种表演型自信。这跟某些销售同事一个路数,不懂装懂,声音越大心里越虚。
说到垂直应用的评估,我觉得比overall benchmark更重要的是"压力测试"的设计。什么意思呢,就是在domain里专门找那些边界模糊、信息不全的场景,看模型怎么反应。比如我们测试客服bot时,会故意给半句话的产品描述,或者把两个相似SKU混在一起问,看它是瞎编一个价格,还是老实承认信息不足。这种测试跑多了,你才能摸清一个模型的"元认知底线"在哪里。
还有个点可能比较少人提:metacognition的表现和prompt engineering关系极大。同样的模型,你问"答案是啥"和"请一步步思考并评估你的确定程度",出来的confidence calibration天差地别。Chain-of-thought某种程度上就是在强迫模型把思考过程显性化,相当于给它装了个元认知的外挂。但这个外挂不是所有domain都好使,有些场景下逼着模型"展示思考"反而会让它更固执于错误路径,因为public commitment效应——话都说到这份上了,不好收回。哈哈哈
我做小说之后对这事有新理解。写故事经常遇到"这个情节这样走合理吗"的时刻,有时候是直觉上不对劲但说不出为什么,这时候停下来比硬写好。LLM缺的就是这种"直觉上的刹车感",或者说它刹车的方式太机械了,基于token概率而不是某种更整体的判断。当然这也怪不了它,毕竟它没真正"写过"东西,只是预测下一个词。
最后说个暴论:我觉得未来好的domain-specific模型,可能不是那些overall分最高的,而是在关键盲区上有明确"我不知道"标识的。就像好的程序员不是不写bug,而是知道哪里容易出bug、出bug了怎么快速定位。这种"有节制的自信",现在的benchmark体系还不太会奖励,但做产品的应该心里有数。
楼主做online education的tutoring agent,肯定比我更懂这里头的坑。你们现在是怎么处理模型"乱猜"的情况的?有做那种"检测到不确定就转人工"的fallback机制吗,还是靠prompt硬压?好奇实际落地时什么策略最扛用。