计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26
前言
本期相关论文可以从“下载” 资源中获取,如果有感兴趣的问题,欢迎交流探讨!
目录
文章目录
- 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26
- 前言
- 目录
- 1. Aligning CodeLLMs with Direct Preference Optimization
- 摘要
- 研究背景
- 问题与挑战
- 如何解决
- 创新点
- 算法模型
- 实验效果
- 重要数据与结论
- 推荐阅读指数
- 2. Subword Embedding from Bytes Gains Privacy without Sacrificing Accuracy and Complexity
- 摘要
- 研究背景
- 问题与挑战
- 如何解决
- 创新点
- 算法模型
- 实验效果
- 重要数据与结论
- 推荐阅读指数
- 3. Large Body Language Models
- 摘要
- 研究背景
- 问题与挑战
- 如何解决
- 创新点
- 算法模型
- 实验效果
- 重要数据与结论
- 推荐阅读指数
- 4. Large language models enabled multiagent ensemble method for efficient EHR data labeling
- 摘要
- 研究背景
- 问题与挑战
- 如何解决
- 创新点
- 算法模型
- 实验效果
- 重要数据与结论
- 推荐阅读指数
- 5. Optimizing LLMs with Direct Preferences: A Data Efficiency Perspective
- 摘要
- 研究背景
- 问题与挑战
- 如何解决
- 创新点
- 算法模型
- 实验效果
- 重要数据与结论
- 推荐阅读指数
- 6. DEAN: Deactivating the Coupled Neurons to Mitigate Fairness-Privacy Conflicts in Large Language Models
- 摘要
- 研究背景
- 问题与挑战
- 如何解决
- 创新点
- 算法模型
- 实验效果
- 重要数据与结论
- 推荐阅读指数
- 后记
1. Aligning CodeLLMs with Direct Preference Optimization
Authors: Yibo Miao, Bofei Gao, Shanghaoran Quan, Junyang Lin, Daoguang Zan,
Jiaheng Liu, Jian Yang, Tianyu Liu, Zhijie Deng
https://arxiv.org/abs/2410.18585
通过直接偏好优化对齐代码语言大模型
摘要
本文探讨了大型语言模型(LLMs)在编程任务中的应用,特别是代码语言模型(CodeLLMs)。CodeLLMs不仅能辅助完成各种编程任务,还能体现LLMs的决策和逻辑推理能力。然而,当前的CodeLLMs主要关注预训练和监督式微调场景,而对训练后模型的对齐阶段关注不足。本研究首先指出,常用的PPO算法可能不是对CodeLLMs进行对齐的最优选择,因为涉及的奖励规则通常是粗粒度且可能存在缺陷。我们提倡使用DPO算法来解决这一问题。DPO基于偏好数据对,可以自动对模型进行排序,从而产生比人为干预更精细、更稳健的奖励模式。我们还为CodeLLMs上的DPO提供了一个收集偏好对的流程。研究表明,我们的方法显著提高了现有CodeLLMs在MBPP和HumanEval等基准测试上的性能。
研究背景
近年来,大型语言模型(LLMs)在特定领域如医学、法律、金融等得到了快速发展。其中,CodeLLMs因其在自动化和简化编程任务(包括错误检测和代码生成)方面的潜力而受到特别关注。当前的CodeLLMs研究主要集中在预训练和监督式微调上,而对训练后的对齐阶段关注较少。对齐阶段对于提高LLMs的推理能力至关重要,已有研究提出了通过PPO来增强CodeLLMs,但这些研究在奖励函数的定义上存在局限性。
问题与挑战
CodeLLMs在对齐阶段面临的主要挑战是,现有的PPO算法在定义奖励函数时存在局限性。例如,对于无法编译的代码片段,通常分配一个固定的-1奖励,而不考虑错误数量。这导致包含单个语法错误的代码片段与包含多个错误的代码片段被同等对待,使得奖励模型无法捕捉不同代码片段之间的细微偏好差异,从而无法有效地指导CodeLLMs的对齐。
如何解决
为了解决这一问题,本文提出了使用直接偏好优化(DPO)算法来对齐CodeLLMs。与PPO不同,DPO不显式定义奖励模型来捕捉偏好,而是使用模型可能性来表示。通过学习比较数据对,DPO可以自动获得样本之间的细粒度差异。理想情况下,经过训练后,错误较少的代码片段将被分配比错误较多的代码片段更高的奖励。与为更好的PPO定义细粒度、手工制作的奖励规则相比,DPO方法具有更高的灵活性,并且可以降低与有缺陷的手工制作的奖励规则相关的奖励黑客风险。
创新点
本文的创新点在于:
- 提出了使用DPO算法来对齐CodeLLMs,这是一种新的对齐方法,可以产生比人为干预更精细、更稳健的奖励模式。
- 为CodeLLMs上的DPO提供了一个收集偏好对的流程,这有助于构建更有效的训练数据集。
- 通过实验表明,DPO方法可以显著提高现有CodeLLMs在基准测试上的性能。
算法模型
DPO算法的核心是利用预先收集的偏好数据对来解决以下问题:
[ L = -\sum_{(x,y+,y-)} \log \sigma \left( \beta \log \frac{\pi_\theta(y+|x)}{\pi_0(y+|x)} - \beta \log \frac{\pi_\theta(y-|x)}{\pi_0(y-|x)} \right) ]
其中,(\sigma)表示sigmoid函数,(y+)和(y-)分别表示首选(即选择)响应和较不首选(即拒绝)响应。sigmoid函数内的项(即对数比率的减法)对应于模型学习到的隐式奖励差异。
实验效果
实验部分选择了CodeQwen1.5 7B、DeepSeek-Coder 6.7B和CodeLlama-Instruct 7B作为目标模型进行实验。使用MBPP和HumanEval基准测试来评估CodeLLMs的编码能力。实验结果表明,使用DPO训练的CodeLLMs在MBPP和HumanEval基准测试上的性能得到了显著提升。例如,CodeQwen1.5 7B在MBPP上的得分从0.783提高到0.804,在HumanEval上的得分从0.829提高到0.878。
重要数据与结论
- 使用DPO训练的CodeLLMs在MBPP和HumanEval基准测试上的性能得到了显著提升。
- 与RFT相比,DPO算法在优化过程中能够从拒绝的响应中学习,使模型在推理过程中避免生成不良模式,从而减少生成的代码片段中的错误。
- 使用其他模型生成的数据进行DPO训练(即离策略DPO)可能导致次优结果,甚至可能对模型造成损害。
推荐阅读指数
★★★★☆
2. Subword Embedding from Bytes Gains Privacy without Sacrificing Accuracy and Complexity
Authors: Mengjiao Zhang and Jia Xu
https://arxiv.org/abs/2410.16410
通过字节编码的子词嵌入:在不牺牲准确性和复杂度的情况下获得隐私保护
摘要
随着自然语言处理(NLP)模型,特别是大型语言模型(LLMs)的显著进步,人们对隐私侵犯的担忧日益增加。尽管联邦学习(FL)增强了隐私保护,但攻击者仍可能通过利用模型参数和梯度来恢复私有训练数据。因此,防御此类嵌入攻击仍然是一个开放的挑战。为了解决这个问题,我们提出了一种新的子词嵌入方法——从字节到子词嵌入(SEB),并使用深度神经网络对子词进行字节序列编码,使得输入文本的恢复变得更加困难。重要的是,我们的方法在保持相同输入长度的效率的同时,只需要256字节的词汇表大小的内存。因此,我们的解决方案通过保持隐私而不失效率或准确性,优于传统方法。我们的实验表明,SEB可以有效地防御联邦学习中基于嵌入的攻击,恢复原始句子。同时,我们验证了SEB在机器翻译、情感分析和语言建模方面获得了与标准子词嵌入方法相当甚至更好的结果,并且时间和空间复杂度更低。
研究背景
自然语言处理(NLP)领域的进步,尤其是大型语言模型(LLMs)的发展,在过去几十年中取得了显著的性能提升,这在很大程度上归功于大规模数据集的可用性。由于大多数数据来自用户,他们的隐私问题变得越来越重要,这对于建立用户信任、鼓励负责任地使用语言数据、保护个人信息、确保道德使用以及避免对个人造成潜在伤害至关重要。
问题与挑战
尽管联邦学习(FL)通过在多个客户端之间共享模型训练而不是将数据传输到*服务器来保护用户隐私,但攻击者仍然可以使用模型更新来重建原始数据并泄露敏感信息,从而危及用户隐私。此外,现有的字节编码方法面临着两个主要挑战:首先,较小的文本粒度无法显示每个词的语义含义,导致模型的可解释性和可分析性降低;其次,基于字节的模型计算成本更高,因为字节标记化后的输入序列变得更长。
如何解决
为了解决这些挑战,我们提出了SEB方法,该方法通过以下三个步骤对子词进行编码:(1)构建子词和字节之间的映射;(2)将输入文本转换为字节序列;(3)检索相应的字节嵌入,并使用前馈网络将它们聚合回子词嵌入,同时保持子词边界。通过采用这种方法,我们可以利用字节提供的隐私保护,同时保持较小的词汇表大小,并保持与子词序列相同的输入序列长度。
创新点
SEB的主要创新点包括:
- 引入了一种新颖的文本表示方法SEB,实现了在不增加输入序列长度的情况下,学习模型的词汇表大小为256。
- 验证了SEB可以保护NLP模型免受基于嵌入梯度的数据泄露攻击。据我们所知,这项工作是第一个研究在FL中使用字节表示进行隐私保护的工作。
- 展示了SEB在提高隐私的同时,实现了与传统方法相当的或更好的准确性,并提高了时间和空间效率,而没有传统方法中的隐私-性能/效率权衡。
算法模型
SEB算法的核心是将子词编码为字节序列,然后聚合字节嵌入以获得单个子词嵌入。具体来说,SEB包括以下步骤:
- 子词到字节序列映射:为每个子词随机采样n个字节,以获得唯一的字节序列。
- 子词嵌入从字节获取:首先使用常见的子词标记化方法(如BPE)将原始文本标记化为子词序列,然后使用上述映射将该序列标记化为字节序列,并聚合字节表示以返回子词嵌入。
-
复杂度分析和频率分析:展示了SEB在空间和时间复杂度上的优势,并讨论了频率分析不适用于SEB的原因。
实验效果
实验部分,作者在机器翻译、情感分析和语言建模任务上评估了SEB的有效性,并在联邦学习环境下测试了其隐私保护能力。主要结果如下:
- 在隐私保护方面,SEB显著降低了基于嵌入梯度的攻击恢复原始句子的可能性。
- 在机器翻译任务中,SEB在IWSLT14和WMT14数据集上均取得了与子词嵌入相当的性能,甚至在某些情况下性能更好。
- 在情感分析任务中,SEB在IMDb和SST2数据集上的性能与子词嵌入相当,甚至在某些情况下性能更好。
- 在语言建模任务中,SEB在WikiText-103数据集上取得了更好的困惑度(perplexity)性能,并且模型参数更少。
**
重要数据与结论
SEB在保持隐私的同时,能够在不同的NLP任务中实现与传统子词嵌入相当的或更好的性能,并且时间和空间复杂度更低。此外,SEB在联邦学习环境下有效地防御了基于嵌入的攻击,保护了用户隐私。
推荐阅读指数
★★★★☆
3. Large Body Language Models
Authors: Saif Punjwani and Larry Heck
https://arxiv.org/abs/2410.16533
大型身体语言模型
摘要
随着虚拟代理人在人机交互中的日益普及,实时生成真实且符合上下文的手势仍然是一个重大挑战。尽管神经渲染技术在静态剧本中取得了实质性进展,但它们在人机交互中的适用性仍然有限。为了解决这个问题,我们引入了大型身体语言模型(LBLMs),并提出了LBLM-AVA,这是一种新颖的LBLM架构,它结合了Transformer-XL大型语言模型和并行化扩散模型,从多模态输入(文本、音频和视频)中生成类似人类的手势。LBLM-AVA包含几个关键组件,增强了其手势生成能力,例如多模态到姿态嵌入、增强的序列到序列映射、具有重新定义的注意力机制的时间平滑模块以及用于增强现实感的基于注意力的细化模块。该模型在我们大规模专有开源数据集Allo-AVA上进行训练。LBLM-AVA在生成逼真且符合上下文的手势方面取得了最先进的性能,与现有方法相比,Fréchet Gesture Distance(FGD)降低了30%,Fréchet Inception Distance提高了25%。
研究背景
在人机交互中,生成真实且符合上下文的手势对于创建引人入胜的虚拟代理人至关重要。尽管已有研究在生成此类手势方面取得了进展,但现有的方法往往受限于静态动作和有限的多模态交互能力。为了解决这一问题,本文提出了一种新型架构——大型身体语言模型(LBLMs),专门设计用于实时多模态通信中的手势生成。
问题与挑战
手势生成的挑战在于如何捕捉语言、音频和视觉线索之间的复杂关系,并在动态对话环境中生成连贯的手势。基于规则的系统可能显得机械,运动捕捉数据库受限于它们包含的具体手势,而传统的基于学习的方法在生成长时间连贯且适应不断演变的对话上下文的手势方面存在困难。
如何解决
为了解决这些挑战,LBLM-AVA模型结合了Transformer-XL语言模型和并行化扩散模型,以生成类似人类的手势。该模型包括多模态到姿态嵌入、序列到序列映射、时间平滑模块和基于注意力的细化模块等关键组件。
创新点
LBLM-AVA的创新点包括:
- 结合Transformer-XL和并行化扩散模型,从多模态输入生成手势。
- 引入多模态到姿态嵌入模块,将编码的模态特征转换为潜在的姿态空间。
- 使用时间平滑模块提高手势序列的连贯性。
- 利用基于注意力的细化模块增强生成手势的现实感。
- 在大规模多模态数据集Allo-AVA上训练模型,该数据集涵盖了各种人类手势和表情。
算法模型
LBLM-AVA模型的架构包括以下几个关键部分:
- 多模态输入表示:将文本、音频和视频特征投影到共同维度。
- Transformer-XL编码器:处理多模态特征,捕捉长期依赖关系。
- 多模态到姿态嵌入:学习从编码的模态特征到潜在姿态空间的转换。
- 并行化扩散模型:通过迭代细化步骤生成多个手势序列。
- 基于注意力的时间细化:提高生成手势的时间连贯性。
-
对抗训练:增强生成手势的现实感和多样性。
实验效果
实验评估了LBLM-AVA在生成逼真且符合上下文的手势方面的性能,并与现有方法进行了比较。主要结果如下:
- 在FGD和FID指标上,LBLM-AVA实现了比基线方法更低的分数,表明生成的手势在质量和多样性上与真实手势高度相似。
- APD指标上的高分数表明LBLM-AVA能够产生多样化的手势,避免了重复和单调。
- 通过对抗训练和注意力细化模块的消融研究,证明了这些组件对模型性能的显著贡献。
重要数据与结论
LBLM-AVA在多个评估指标上取得了最佳性能,特别是在对抗训练和注意力细化模块的辅助下,显著提高了手势生成的真实感和多样性。此外,该模型在大规模多模态数据集Allo-AVA上的训练,使其能够学习到更多样化和丰富的人类手势和表情。
推荐阅读指数
★★★★☆
4. Large language models enabled multiagent ensemble method for efficient EHR data labeling
Authors: Jingwei Huang, Kuroush Nezafati, Ismael Villanueva-Miranda, Zifan Gu, et.al.
https://arxiv.org/abs/2410.16543
大型语言模型助力的多代理集成方法,用于高效的电子健康记录数据标注
摘要
本研究介绍了一种由大型语言模型(LLMs)支持的新型多代理集成方法,以解决机器学习中的一个关键挑战——数据标注,特别是在大规模电子健康记录(EHR)数据集中。手动标注这些数据集既耗费人力、耗时、昂贵,又容易出错,通常需要领域专家知识。为了克服这一瓶颈,我们开发了一种集成LLMs的方法,并在两个真实的医疗保健任务中证明了其有效性:(1)在医疗信息市场为重症监护(MIMIC)-IV中对大规模未标注的心电图(ECG)数据集进行标注;(2)从EHR的临床笔记中识别社会决定因素(SDOH)。在权衡利弊和成本后,我们选择了一组具有满意性能的多样化开源LLMs。我们将每个LLM的预测视为一票,并应用了一种多数投票机制,设定了最小的获胜阈值进行集成。我们实现了一个用于EHR数据标注任务的集成LLMs应用程序。通过使用集成LLMs和自然语言处理,我们以估计98.2%的准确率标注了MIMIC-IV ECG数据集中的623,566份ECG报告。我们将集成LLMs方法应用于从1,405份EHR临床笔记的社会历史部分识别SDOH,也取得了有竞争力的性能。我们的实验表明,集成LLMs可以超越单个LLM,甚至是最佳的商业LLM,并且该方法减少了幻觉错误。从研究中,我们发现:(1)集成LLMs方法显著减少了标记大规模EHR数据所需的时间和努力,以高精度和质量自动化了这一过程;(2)该方法泛化良好,适用于其他文本数据标注任务,如其在SDOH识别中的应用所示;(3)一组多样化LLMs的集成可以超越或匹配最佳单个LLM的性能;以及(4)与单个LLM相比,集成方法显著减少了幻觉错误。这种方法为医疗保健中的数据标注挑战提供了一种可扩展和高效的解决方案。
研究背景
数据标注在机器学习(ML)中仍然是一个显著的瓶颈,特别是在涉及大型EHR数据集的医疗保健应用中。手动标注过程既耗费人力、耗时、昂贵,又容易出错,通常需要大量的领域知识。这种缺乏标注数据的情况经常限制了监督ML算法的潜力,为开发和部署临床应用的预测模型创造了障碍。
问题与挑战
在EHR数据集中,手动标注是一个劳动密集型、耗时、昂贵且容易出错的过程,通常需要领域专家。此外,不同的LLMs可能表现差异很大,标注错误和幻觉问题对训练在这些标签上的ML模型的准确性构成了重大风险。
如何解决
为了克服这些挑战,我们提出了一种由LLMs支持的多代理集成方法。这种方法从集成学习中汲取灵感,通过聚合多个模型的输出来提高预测性能。通过结合不同的LLMs的输出,我们的方法减轻了单个模型的弱点,减少了幻觉错误,并产生了更可靠的标注结果。
创新点
本研究的创新点包括:
- 提出了一种新型的多代理集成方法,利用多样化的开源LLMs进行EHR数据标注。
- 开发了一个集成LLMs应用程序,用于自动化大规模EHR数据的标注过程。
- 证明了集成LLMs方法在减少幻觉错误和提高标注质量方面的优势。
- 在两个真实的医疗保健任务中展示了该方法的有效性:ECG数据集标注和SDOH识别。
算法模型
该研究提出的集成LLMs方法包括以下关键步骤:
- 问题表述和提示LLMs:通过精心设计的问题表述和提示,引导LLMs正确理解心电图报告中的诊断性声明。
- 数据流组织:使用逻辑过滤器筛选与房颤相关的ECG报告,然后应用集成LLMs方法进行标注。
- 选择LLMs:从不同的“家族”中选择一组表现满意的开源LLMs。
- 集成LLMs的意见:将每个LLM代理的预测视为一票,并应用多数投票机制,设定最小的获胜阈值进行集成。
- 实现集成LLMs应用程序:开发了一个应用程序,用于创建指定的LLM代理组,每个代理使用指定的框架加载和运行请求的大型语言模型。
实验效果
实验结果表明,使用提出的集成LLMs方法,研究团队成功标注了MIMIC-IV ECG数据集中的623,566份ECG报告,估计准确率达到了98.2%。此外,该方法在从1,405份EHR临床笔记的社会历史部分识别SDOH方面也取得了有竞争力的性能。在ECG数据集标注任务中,与单个LLM相比,集成LLMs方法在减少幻觉错误和提高标注质量方面表现出显著优势。
重要数据与结论
- 在ECG数据集标注任务中,集成LLMs方法的估计准确率为98.2%。
- 在SDOH识别任务中,集成LLMs方法在就业状态识别方面实现了95%的整体准确率和95.4%的关键值“不利”的Jaccard得分,审查率为0.4%。
- 在住房状态识别方面,该方法实现了99.7%的准确率和81.2%的Jaccard得分,审查率为0.2%。
推荐阅读指数
★★☆☆☆
5. Optimizing LLMs with Direct Preferences: A Data Efficiency Perspective
Authors: Pietro Bernardelle and Gianluca Demartini
https://arxiv.org/abs/2410.16586
从直接偏好的角度优化大型语言模型:数据效率的视角
摘要
本文研究了如何通过直接偏好优化(DPO)来微调预训练的大型语言模型(LLMs),以减少对大量偏好数据的依赖,这些数据的收集成本较高。我们系统地比较了使用不同百分比的组合偏好判断数据集进行微调的模型性能,以定义DPO的改进曲线,并在数据受限的环境中评估其有效性。我们的研究表明,增加训练数据量通常会增强和稳定模型性能,而且使用多种数据集的组合显著提高了模型的有效性。此外,当模型分别使用不同类型的提示进行训练时,使用对话提示训练的模型优于使用问答提示训练的模型。
研究背景
大型语言模型(LLMs)在自然语言处理领域取得了革命性的进展,但在将这些模型与人类偏好对齐方面仍存在挑战。尽管已有研究尝试通过强化学习(RL)技术结合人类反馈(RLHF)来解决这一问题,但这些方法在效率、可扩展性和数据需求方面存在疑问。最近的研究提出了直接偏好优化(DPO),这是一种基于人类偏好直接优化语言模型对齐的方法,无需显式的奖励模型和强化学习,从而简化了训练过程。
问题与挑战
尽管DPO方法显示出潜力,但目前对其应用和潜在益处的探索有限,其在有效性和效率方面的表现尚未得到系统的研究。此外,不同类型的偏好数据对模型性能的影响也未被充分探索。因此,本研究旨在进一步调查DPO如何有效地和高效地增强语言模型与人类偏好的对齐,并探索在数据受限环境中DPO的有效性。
如何解决
为了解决上述挑战,本研究提出了两个主要的研究问题:
- 使用不同数据子集进行DPO微调的LLMs的性能如何随着训练数据量的增加而变化?
- 训练数据的性质,特别是对话与问答数据集,对DPO下模型性能的影响如何?
创新点
本研究的创新点包括:
- 系统地比较了使用不同数据量的组合偏好判断数据集进行微调的模型性能,以定义DPO的改进曲线。
- 评估了在数据受限环境中DPO的有效性,并提供了如何选择性使用偏好数据的见解。
- 揭示了增加训练数据量通常可以增强和稳定模型性能,并且使用多种数据集的组合可以显著提高模型的有效性。
- 发现使用对话提示训练的模型优于使用问答提示训练的模型,这为未来数据选择方法提供了新的视角。
算法模型
本研究采用了直接偏好优化(DPO)方法,该方法通过比较数据对来学习,不需要显式的奖励模型。DPO通过最小化损失函数来优化模型,使其直接基于人类偏好进行对齐。研究中使用了三个开源的偏好判断数据集,并采用了OpenHermes-2.5-Mistral-7B作为基础模型进行实验。
实验效果
实验结果表明:
- 增加训练数据量通常会增强和稳定模型性能,使用多种数据集的组合显著提高了模型的有效性。
- 使用对话提示训练的模型优于使用问答提示训练的模型,这表明对话提示在提供动态和上下文丰富的交互方面具有显著作用。
- 在数据量增加时,DPO对齐的模型与基础模型之间的平局率降低,表明DPO对齐的模型响应更加准确,与期望输出的对齐更好。
重要数据与结论
研究表明,DPO方法在数据受限环境中是有效的,并且可以通过增加训练数据量来提高模型性能。此外,使用对话提示的数据集在模型性能提升方面表现出色,这为未来数据选择方法提供了新的视角。研究还发现,尽管增加数据量对性能有积极影响,但存在一个阈值,超过这个阈值后,额外的数据不会显著提高模型的区分度。
推荐阅读指数
★★★☆☆
6. DEAN: Deactivating the Coupled Neurons to Mitigate Fairness-Privacy Conflicts in Large Language Models
Authors: Chen Qian, Dongrui Liu, Jie Zhang, Yong Liu, Jing Shao
https://arxiv.org/abs/2410.16672
DEAN: 通过去激活耦合神经元来减轻大型语言模型中的公平性与隐私冲突
摘要
在大型语言模型(LLMs)中确保对公平性和隐私的关注至关重要。有趣的是,我们发现了一个违反直觉的现象:通过监督式微调(SFT)方法增强LLM的隐私意识会显著降低其公平意识。为了解决这一问题,受信息论启发,我们引入了一种无需训练的方法DEAN(DEActivate the fairness and privacy coupled Neurons),理论上和实证上都减少了公平性和隐私意识之间的相互信息。广泛的实验结果表明,DEAN消除了权衡现象,并显著提高了LLMs的公平性和隐私意识,例如,将Qwen-2-7B-Instruct的公平意识提高了12.2%,隐私意识提高了14.0%。更重要的是,即使在有限的标注数据或仅恶意微调数据可用时,DEAN仍然保持鲁棒和有效,而SFT方法在这些场景中可能无法正常工作。我们希望这项研究为同时解决LLMs中的公平性和隐私问题提供了宝贵的见解,并可以集成到更全面的框架中,以开发更具道德和责任感的AI系统。
研究背景
随着LLMs在医疗、金融和教育等敏感领域的日益普及,人们对它们的公平性和隐私影响越来越关注。例如,当被询问敏感信息,如社会安全号码时,我们希望LLM能够拒绝提供此类信息。同样,理想的LLM应该避免产生不公平或歧视性内容。
问题与挑战
在传统的深度神经网络(DNNs)中,处理公平性和隐私相关问题的挑战已经被广泛认识。许多研究试图平衡这些相互冲突的目标。然而,在LLMs时代,公平性和隐私意识之间是否存在权衡尚未被充分探索。此外,通过SFT方法增强LLM的隐私意识会降低其公平意识,这表明在这些模型中存在权衡现象。
如何解决
为了解决这一挑战,文章提出了一种基于信息论的理论基础和一种无需训练的方法DEAN,通过去激活与公平性和隐私意识都相关的耦合神经元来减轻LLMs中公平性和隐私意识之间的权衡现象。
创新点
DEAN方法的创新点包括:
- 基于信息论的理论基础,提出了通过减少公平性和隐私意识之间的相互信息来解耦这两种意识。
- 无需训练即可实现,这与需要大量数据和计算资源的SFT方法相比,具有显著优势。
- 即使在有限的标注数据或仅恶意微调数据可用时,DEAN仍然保持鲁棒和有效,这在实际应用中非常有价值。
算法模型
DEAN方法包括以下关键步骤:
- 计算与公平性和隐私意识相关的神经元的重要性分数。
- 定位与公平性和隐私意识都相关的耦合神经元。
- 通过将这些耦合神经元的权重设置为零来去激活它们,从而减少公平性和隐私意识之间的相互信息。
实验效果
实验结果表明,DEAN能够有效地减轻LLMs中公平性和隐私意识之间的权衡现象。具体来说:
- 在多个模型家族中,DEAN显著提高了LLM的公平性和隐私意识,例如,将Qwen2-7B-Instruct的公平意识提高了12.2%,隐私意识提高了14.0%。
- DEAN在有限标注数据条件下也表现出色,减少了对大量标注和计算资源的依赖。
- 即使在仅恶意微调数据可用时,DEAN仍然保持了强大的性能,而传统的SFT方法在这些情况下通常会失败。
重要数据与结论
DEAN方法在多个模型家族上进行了测试,包括Qwen2、Mistral、Vicuna和Llama2,结果一致表明DEAN能够有效地提高LLM的公平性和隐私意识,同时保持模型的一般能力。此外,DEAN在不同数据集大小和不同类型的微调数据上都表现出了鲁棒性,这表明DEAN是一种有前景的方法,可以在实际应用中解决LLMs中的公平性和隐私问题。
推荐阅读指数
★★★★☆
- 算法模型代码:
https://github.com/ChnQ/DEAN
import torch
import pickle
import torch.nn as nn
def find_layers(module, layers=[nn.Linear], name=""):
"""
Recursively find the layers of a certain type in a module.
Args:
module (nn.Module): PyTorch module.
layers (list): List of layer types to find.
name (str): Name of the module.
Returns:
dict: Dictionary of layers of the given type(s) within the module.
"""
if type(module) in layers:
return {name: module}
res = {}
for name1, child in module.named_children():
res.update(
find_layers(
child, layers=layers, name=name + "." + name1 if name != "" else name1
)
)
return res
def get_set_difference_mask(p, q, W_metric1, W_metric2):
top_p = int(
p * W_metric1.shape[1] * W_metric1.shape[0]
)
top_q = int(q * W_metric2.shape[1] * W_metric2.shape[0])
top_p_indices = torch.topk(W_metric1.flatten(), top_p, largest=True)[1]
top_q_indices = torch.topk(W_metric2.flatten(), top_q, largest=True)[1]
unique_p = torch.unique(top_p_indices)
unique_q = torch.unique(top_q_indices)
mask_only_metric1 = ~torch.isin(unique_p, unique_q)
mask_only_metric2 = ~torch.isin(unique_q, unique_p)
mask_intersection = ~(torch.ones_like(unique_p).bool() & mask_only_metric1 & mask_only_metric2)
return mask_only_metric1, mask_only_metric2, mask_intersection, unique_q
def deactivating_by_dean(model, args):
model.config.use_cache = False
layers = model.model.layers
metric1 = "alpaca_cleaned_no_safety"
for i in range(len(layers)):
layer = layers[i]
subset = find_layers(layer)
for name in subset:
if args.target_module == 'mlp':
if 'self_attn' in name:
print(f'[Note] Skip layer {i} {name} due to target module {args.target_module}')
continue
elif args.target_module == 'self_attn':
if 'mlp' in name:
print(f'[Note] Skip layer {i} {name} due to target module {args.target_module}')
continue
print(f"Handling layer {i} name {name}")
try:
W_general = pickle.load(
open(
f"significance_score/{args.nsamples}/{metric1}/{args.model.lower()}/layer_{i}_name_model.layers.{i}.{name}_weight.pkl",
"rb",
),
)
W_dataset1 = pickle.load(
open(
f"significance_score/{args.nsamples}/{args.dataset1}/{args.model.lower()}/layer_{i}_name_model.layers.{i}.{name}_weight.pkl",
"rb",
)
)
W_dataset2 = pickle.load(
open(
f"significance_score/{args.nsamples}/{args.dataset2}/{args.model.lower()}/layer_{i}_name_model.layers.{i}.{name}_weight.pkl",
"rb",
)
)
except Exception as e:
print(e)
_, mask_only_trust1, _, unique_trust1_indices = get_set_difference_mask(args.p, args.q, W_general, W_dataset1)
_, mask_only_trust2, _, unique_trust2_indices = get_set_difference_mask(args.p, args.q, W_general, W_dataset2)
mask_trust_intersection = mask_only_trust1 & mask_only_trust2
mask_only_trust1 &= ~mask_trust_intersection
mask_only_trust2 &= ~mask_trust_intersection
filtered_indices = unique_trust1_indices[mask_trust_intersection]
W_mask = torch.zeros_like(subset[name].weight.data) == 1
W_mask.view(-1)[filtered_indices] = True
subset[name].weight.data[W_mask] = 0 ## set weights to zero
后记
如果觉得我的博客对您有用,欢迎 打赏 支持!三连击 (点赞、收藏、关注和评论) 不迷路,我将持续为您带来计算机人工智能前沿技术(尤其是AI相关的大语言模型,深度学习和计算机视觉相关方向)最新学术论文及工程实践方面的内容分享,助力您更快更准更系统地了解 AI前沿技术。