今天是2023年12月19日,星期二,北京,天气晴。
我们今天继续来看看一些有趣的话题。
一个是大模型用于主题建模,《Prompting Large Language Models for Topic Modeling》(https://arxiv.org/pdf/231提交了基于大模型进行主题建模的工作,很有趣,其中涉及到的评估细节和步骤,会有些启发。
一个是大模型用于推理规则挖掘,《LARGE LANGUAGE MODELS CAN LEARN RULES》(https://arxiv.org/pdf/2310.07064.pdf),也谈到了规则挖掘的工作)这一工作则提到推理规则的自动生成和校验的工作,对知识图谱规则挖掘也有启发。
供大家一起参考并思考,关注算法思想本身,比效果更有意义【放在其他场景不一定有效】。
先看利用大模型生成并应用推理规则HtT
我们在之前的文章《大模型深呼吸prompt提升数学题能力?再看知识图谱与大模型如何结合:ChatRule-基于大模型进行知识推理规则挖掘方法》(https://mp.weixin.qq.com/s/NCCoEQs8GKOctx7eMBJy7w)中介绍了现有知识图谱规则挖掘方法及大概思想,例如:
AIME,一种传统的逻辑规则挖掘方法,它通过归纳逻辑编程从KG中发现规则;
NeuralLP,一种归纳逻辑编程方法,它以端到端的差分方式学习逻辑规则;
DRUM,利用LSTM和注意力机制扩展了NeuralLP,以挖掘可变长度的规则;
其中提到利用大模型来生成知识图谱规则的方案:
ChatRule《ChatRule: Mining Logical Rules with Large Language Models for Knowledge Graph Reasoning》(https://arxiv.org/pdf/2309.01538.pdf)的路线也类似,该框架利用KG的语义和结构信息促使LLM生成逻辑规则,具体的:
首先提出一种基于LLM的规则生成器,为每个关系生成候选规则,从KG中抽取一些路径来表示结构信息,然后将其用于精心设计的提示中,从而利用LLM的能力进行规则挖掘。
为了减少幻觉问题,设计一个逻辑规则排序器来评估生成规则的质量,并通过囊括KG中观察到的事实来过滤无均值规则。在逻辑推理阶段进一步使用质量分数,以减少低质量规则的影响。
最后,为了去除由KG支持但逻辑上不正确的虚假规则,利用LLM的逻辑推理能力,通过思维链(CoT)推理用规则验证器验证规则的逻辑正确性。
而进一步的,看到一个工作《LARGE LANGUAGE MODELS CAN LEARN RULES》(https://arxiv.org/pdf/2310.07064.pdf),也谈到了规则挖掘的工作。
先来看看其规则挖掘的结果:
为了发现用于推理的显式知识,可以使用LLM来归纳问题类型的规则。对于每个训练示例(问题-答案对),要求LLM生成问题解答规则。
虽然这些规则可能是对的,也可能是错的,但它们可以通过groud-truth进行验证。这种验证可以过滤掉与错误答案相关的规则,从而在规则库中只保留与正确答案充分相关的规则,供推理阶段使用。
也就是说,归纳阶段就包括了两个问题,分别是规则生成和验证。
例如,在规则生成阶段,可以基于给定的实例,利用大模型来生成规则:
又如,在规则验证阶段,可以按照规则挖掘的原则,根据覆盖率和置信度过滤规则,要求规则既要有足够的频率,又要与正确答案有足够的关联。
例如,在规则验证方面,Language models as inductive reasoners,https://arxiv.org/abs/2212.10923,有更细节的描述:
该设计框架的要求定义为:1)事实与规则之间应尽可能减少矛盾;2)规则应符合常识;3)事实中的内容应是规则所涵盖的具体陈述;4)规则不应是琐碎的。
因此,在此基础上,开发了如图1所示的框架,由五个模块组成,其中模块1(M1)是规则提出者,模块2(M2)是演绎一致性评价器,模块3(M3)是无差别确认处理器,模块4(M4)是泛化检查器,模块5(M5)是琐碎性检测器。
其中:
M1负责规则的生成,目标是根据输入事实和给定的规则模板生成规则。因此,M1的输入包含事实、规则模板。
M2、M3、M4、M5是独立的分类模型,各自验证不同要求的规则,M2/3/4/5的作用类似于为演绎推理开发的验证器,目的是使推理步骤更加扎实,其中M2和M4的输入包括解释规则-事实可比性的提示、一条规则和一个事实;M3和M5的输入同样包括解释任务的提示和一条规则;M2和M4联合度量给定相应规则的事实的有效性:
P(fact|rule)≈PM24(fact|rule)=PM2(fact|rule)PM4(fact|rule);
M3和M5直接度量规则本身的有效性:
利用贝叶斯规则,基于输入事实的规则有效性为:
由于M2/3/4/5相互依赖,因此可以并行运行,在具体实现上,使用预先训练好的语言模型来实现所有五个模块。
1、归纳阶段:规则生成与验证
HtT中的做法也很有趣,如图1所示,在第一阶段,即归纳阶段,LLMs负责基于一组训练示例生成和验证规则,生成正确答案的规则被收集起来,形成一个规则库。
具体地,其使用CoT生成规则,并在训练样本上进行验证,然后收集和筛选规则,形成规则库。演绎阶段利用规则库中的知识增强CoT提示,正确和错误的规则分别用绿色和红色标记。
那么,其中最关键的问题在于,如何正确地分辨什么是正确的规则,什么是错误的规则。
这里的逻辑为,其收集LLM在整个训练集中生成的规则,只保留出现k次以上且通过验证测试的概率大于p的规则。
2、演绎阶段:使用规则库进行显式推理
一旦发现了规则库,下一步就是应用这些规则来解决测试问题。为此,在提示中预置规则库,并要求LLM从规则库中检索规则,以执行演绎推理。
然而,即使是GPT4也很难在每一步都检索到正确的规则,这可能是由于所提供的规则数量太多。
因此,一种优化方案是利用引入XML标记,利用XML层次结构,将一个困难的检索问题分解成几个简单的检索问题。
具体地,通过将类似的规则组合在一起来手动定义层次结构,用和等成对的XML标记来标注层次结构中的每一层,为了对层次结构进行索引,要求LLM在输出检索到的规则之前为每一层生成标签。
例如,针对CLUTRR的5-shotCoT+HtT prompt如下:
因此,我们可以看到,其中最重要的点,其实还是如何生成并校验规则。
二、再看大模型与主题建模结合:
主题建模也是一个很有趣的工作,从最开始的LDA,bert-topic等,目前已经经历过多种不同的主题建模模型,而如何利用大模型进行主题建模,也是一个方向。
最近的工作,PromptTopic《Prompting Large Language Models for Topic Modeling》(https://arxiv.org/pdf/2312.09693.pdf),作为一种无监督方法,利用LLM语言理解能力来生成主题。
该模型包括三个阶段:如图1所示,该模型包括三个阶段:主题生成、主题折叠和主题表示生成,每个阶段都利用LLM从输入文档中提取、组织和提炼主题。
通过提示,该模型可以有效捕捉潜在的主题和概念,加强主题聚类,并提高主题表示的质量。通过提示LLM,PromptTopic可以全面学习文档主题,从而消除了微调的需要。
1、生成主题(Topic generation)
图2显示了使用ChatGPT生成主题的提示设置。提示输入包括N个演示示例,每个示例都有提示输入和相关的标注答案。
为了找到演示参数N的最佳值【这个是主题建模中的一个很大的变量】,在测试了2、4、6和8的值后,N=4的设置能产生最佳的话题生成效果。
2、合并重叠主题(Collapsing Overlapping Topics)
LLM经常为文档生成重叠的主题。例如,”电影”和”演员”等主题可以合并为一个主题”电影”。
有两种合并主题的方法:基于提示的匹配(Prompt-BasedMatching,PBM)和词相似性匹配(WordSimilarityMatching,WSM)。
其中:
基于提示的匹配(PBM):利用提示对相似主题进行分组
这一过程包括根据独特主题的频率对其进行排序,并选择指定数量的K个主题,采用了很像single-pass的方案。
首先,形成一个包含唯一主题的集合Tn。然后,从Tn中选择前n-1个主题,创建一个子集Tn-1。接下来,提示LLM将Tn中的每个主题tn与Tn-1中的一个主题合并。如果无法合并,将tn与”杂项”主题合并。这个迭代过程一直持续到Tn只包含K个主题为止。
在实验过程中,遇到了一个难题,即数据集中有大量独特的主题,超过了LLM允许的最大标记长度。 为了解决这个问题,可以采用滑动窗口法,从排序后的唯一主题集中选择一个大小为M的窗口,然后执行迭代主题分组过程。如果LLM成功地将一个话题与M个话题中的一个合并,我们就合并它们并重新开始迭代。如果没有合并,就将该主题归类为”杂项”【也就是其他】。
词语相似性匹配(WSM):计算主题相似度和合并高度相似的主题
这种方法的本质是相似度计算,其首先汇总与每个主题相关的文档,并计算基于类的词频-反向文档频率(c-TF-IDF)表示,该表示用于捕捉主题内的词频,同时考虑它们在所有主题中的重要性。
从c-TF-IDF表示法中选出前20个词,只保留与主题密切相关的相关词,主题相似度通过计算每个主题对的顶部单词之间的共同单词数来衡量,并按单词数归一化。合并词相似度最高的词对,创建一个新的主题,然后根据合并后的内容重新计算相似度得分,这个过程反复进行,直到剩下K个唯一的主题。
为了减少具有大量主题的大型数据集的计算时间,利用PBM模型将初始的n个主题压缩成一个更简洁的主题集,命名为G。
3、生成主题表示(opic Representation Generation)
为了评估PromptTopic模型的性能,使用c-TF-IDF分数来计算每个聚类中最具代表性的词,为了进一步完善表征,使用LLMs将这些词筛选出前10个最具代表性的词,通过这一过程,可以根据具有代表性的词语集合来评估所生成主题的质量和一致性。
4、评估生成结果
主题建模的评估也是一个重要的点,如何评估其质量,可以从主题评价、人工评估以及定性评估几个方面展开,如下:
1、定量主题评价
定量评估。对主题建模的评估通常使用两个成熟的指标:主题一致性和主题多样性。
其中:
主题一致性衡量的是话题内的词语在多大程度上相互关联,形成一个连贯的群体。 它通常使用从参考语料库中提取的统计数据和概率来计算,特别侧重于词语的上下文。在我们的实验中,我们采用归一化点式互信息(NPMI)作为主题一致性的衡量标准。NPMI分数越高,表示一致性越好,1分表示完全相关。
主题多样性评估的是所有主题表述中独特词语的比例。多样性得分范围为0到1,其中0分表示主题重复,1分表示主题多样。 这一指标对于确保主题模型涵盖广泛的主题而不过分强调任何特定主题至关重要。将这两个指标结合起来使用,可以深入了解主题建模算法在识别连贯主题和多样化主题方面的有效性。
如表III显示了三个数据集上不同话题模型的NPMI和话题多样性得分。,根据经验选择了每个数据集的主题数(K)。对于20NewsGroup、YelpReviews和TwitterTweet数据集,K分别设置为40、20和20。
2、人工评估
较低的NPMI分数并不一定反映了较差的主题质量,因为它们与人工评分的相关性较弱。为了加深理解,可以决定进行人工评估。
对话题质量的评估依赖于单词入侵(word intrusion)任务。在这项任务中,向参与者展示了一个包含五个单词的列表。其中四个单词来自模型生成的单个话题的突出单词,而第五个单词,即”入侵者”,则是从另一个话题中随机选择的。词语入侵测试的目的是确定这五个词语是否共同代表了一个清晰明确的主题,从而使入侵者易于识别。
图3展示了三种模式在三个不同数据集上的单词入侵任务结果:
3、定性评估
从所有数据集中随机选取了经常出现的主题,并进行了人工匹配,以确定每个模型生成的最相关主题,如表IV显示了采用LLaMA方法生成的与每个主题相关的前五个词。
总结
本文主要介绍了先看利用大模型生成并应用推理规则HtT(知识规则挖掘)以及PromptTopic大模型与主题建模的结合工作,与其取得的效果相比,了解其实现思想更有价值,因为模型效果取决于具体的数据。
其中提到的一些主题评估方案、评估指标,规则过滤的方案,都很有趣,细节推敲起来也很有启发,供大家一起参考。
参考文献
1、https://arxiv.org/pdf/2312.09693.pdf
2、https://mp.weixin.qq.com/s/NCCoEQs8GKOctx7eMBJy7w
3、https://arxiv.org/pdf/2310.07064.pdf
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLPhttps://zhuanlan.zhihu.com/p/653063532,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。