# 热门搜索 #
搜索
专治大模型说胡话,精确率100%!华科等提出首个「故障token」检测/分类方法
4272点击    2024-04-19 20:56

如今,大型语言模型(LLM)已经成为了我们生活中的好帮手。


当用户使用大模型时,模型首先会将输入的内容拆分成一个个的词元(token),通过分析这些词元来生成答案,为我们解答疑惑、提供建议、翻译外语、撰写报告······但是,你能想象大模型也会出错吗?


想象一下,你正在使用最新款的智能手机,它快速、聪明、几乎可以做任何你想要的事情。


但偶尔,你发现手机的一两个按键不按常理出牌——比如说,你按下「S」,它偏偏跳出「E」,或者干脆点了没反应,那估计用的时候就只想砸手机了。


大模型中存在一些故障词元(glitch token),一个个本应协助模型流畅运行的小小词元,偏偏要搞点小破坏。



针对这个情况,由华中科技大学、南洋理工大学等高校联合组成的研究团队近日发表了一项研究,该工作已经被软件工程领域国际顶级会议——FSE 2024接收。


论文链接:https://arxiv.org/abs/2404.09894

项目链接:https://sites.google.com/view/glitchhunter-fse2024/glitchhunter


该研究是第一个关于故障词元的全面研究,并且研究中针对故障词元的检测方法为减少大模型中与分词(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


文章来自微信公众号“新智元”,作者:LRS


AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI

2
微调

【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。

项目地址:https://github.com/InternLM/xtuner