如今,大型语言模型(LLM)已经成为了我们生活中的好帮手。当我们使用大模型时,它会首先将我们输入的内容拆分成一个个的词元(token),通过分析这些词元来生成答案,为我们解答疑惑、提供建议、翻译外语、撰写报告······但是,你能想象大模型也会出错吗?想象一下,你正在使用最新款的智能手机,它快速、聪明、几乎可以做任何你想要的事情。但偶尔,你发现手机的一两个按键不按常理出牌——比如说,你按下“S”,它偏偏跳出“E”,或者更糟,什么也不出现。大模型中就有一些这样的“故障词元”(glitch token),一个个本应协助模型流畅运行的小小词元,偏偏要搞点小破坏。
针对这个情况,一个由华中科技大学、南洋理工大学等高校联合组成的研究团队近日发表了题为Glitch Tokens in Large Language Models: Categorization Taxonomy and Effective Detection 的工作。该工作已经被软件工程领域国际顶级会议FSE 2024接收。该研究是第一个关于故障词元的全面研究,并且研究中针对故障词元的检测方法为减少大模型中与分词(tokenizer)相关的错误提供了有意义的见解。
简单来说,这项研究就像是在告诉大家:在大模型的世界里,有些小故障不仅仅是小插曲,它们可以大大影响模型的输出质量。通过去识别这些故障,我们可以更好地理解和优化这些聪明但偶尔会犯糊涂的大型语言模型。
这篇工作中,作者首先提出了一个实证研究来了解故障词元在大语言模型中的存在性与普遍性。作者调查了包括GPT-4,Llama-2在内的七种热门的大模型,其中包含了三种不同的分词器,总共分析了十八万个不同的词元。作者要求大模型完成针对词元的三个基础且简单的任务:复现,拼写以及求长度。根据不同的词元的完成情况,作者从完成形式上不能完成任务的词元分为了如下图所示的5个种类。在此基础上,只要这个词元不能够完成以上的三个任务之一,他就会被标记为故障词元。
实证研究的第二个问题是对故障词元的形式进行分类。这些词元有些是不同单词的组合,一些是无意义字母的堆叠,还有一些是单纯的无意义的符号。作者通过人工标注的方法,将这些所有的故障词元分为了表所示的5个种类。
实证研究的第三个问题故障词元在真实的数据集中的存在情况。作者研究了包括Alpaca,ShareGPT在内的用于大模型微调的主流数据集,发现在每个数据集中平均有2%以上的故障词元。这说明了故障词元在数据集中很普遍,而且很可能会影响到使用这些数据集进行微调的模型的效果。
在实证研究中作者还发现,故障词元在嵌入空间中有聚集效应,这便启发作者可以通过聚类的算法来完成针对故障词元的识别工作。
作者基于上述的发现构建了GlitchHunter,一种用于检测大模型中故障词元的自动化工具。它主要依赖迭代聚类技术来识别潜在的故障词元群组,整个检测流程分为几个步骤:
构建词元嵌入图(TEG, Token Embedding Graph):首先,GlitchHunter会构建一个包括所有词元及其相应的嵌入向量的词元嵌入图,来展示所有词元在嵌入空间中的位置和相互之间的关系。
候选聚类:接着,GlitchHunter在词元嵌入图上寻找紧密聚集的词元,使用Leiden聚类算法形成潜在的故障词元群组,这些词元通常有相似的特征。
假设检验:在每个词元群组内,GlitchHunter进行假设检验,通过分析群组内词元的行为和输出结果来找出群组内行为显著偏离预期规范的词元,确定哪些群组实际上包含故障词元。
更新与迭代:选定包含故障词元的群组后,这些词元会被整合到一个更新的词元嵌入图中。随后,GlitchHunter会继续进行聚类和检测,直到词元嵌入图不再经历任何更新,即没有新的故障词元被发现。
通过这种方法,GlitchHunter能够有效地在大数据集中快速定位并处理故障词元,减少错误输出,提高语言模型的整体质量和可靠性。
为了验证GlitchHunter的效果,本文采用了几项关键指标来比较GlitchHunter与几种基线方法的性能,包括随机抽样、基于规则的随机抽样和K-means聚类。评估结果显示,GlitchHunter在各个测试模型中普遍表现出色。
首先,GlitchHunter的真阳性率(True Positive Rate)显著高于其他方法,这表明它在实际检测到故障词元的准确性方面表现优异。同时,其精确度(Precision)达到接近或等于100%,远高于其他比较方法,这反映了其在识别故障词元时的高精确性。在召回率(Recall)方面,GlitchHunter同样展现了较高的性能,有效地识别了大部分存在的故障词元,确保了较少的遗漏。
此外,GlitchHunter相较于完整遍历词元表的方法,显著减少了所需的时间和处理的词元数量,展示了其在达到高性能的同时保持了较低的资源开销。这些评估结果充分验证了GlitchHunter在实际应用中提高LLM输出质量和可靠性的潜力,证明了其作为故障词元检测工具的有效性和实用性。
未来的工作
在这个工作中,作者完成了对故障词元的系统性探究,但是对于故障词元出现的原因以及如何进行修复并未进行过多的探讨,而这也是进行故障词元研究的终极目标:解决掉所有这样的故障词元,完善大语言模型对于每一个词元的理解。
论文链接:https://arxiv.org/abs/2404.09894
https://sites.google.com/view/glitchhunter-fse2024/glitchhunter
刘艺,南洋理工大学博士四年级学生,本文共同第一作者,研究重点包括大型模型的安全和软件测试等。