计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25
1. PromSec: Prompt Optimization for Secure Generation of Functional Source Code with Large Language Models (LLMs)
M Nazzal, I Khalil, A Khreishah, NH Phan - arXiv preprint arXiv:2409.12699, 2024
https://arxiv.org/pdf/2409.12699
PromSec: 使用大型语言模型(LLMs)生成功能源代码的提示优化以确保安全
摘要
本文介绍了一种名为 PromSec 的算法,它针对大型语言模型(LLMs)在生成源代码时存在的安全漏洞问题,提出了一种提示优化方法。LLMs 能够生成高质量的源代码,但它们在训练过程中也可能会复制不安全的编程实践,导致生成的代码存在安全漏洞。PromSec 结合了生成对抗图神经网络(gGAN)和 LLM 代码生成,通过迭代循环优化提示,以生成既安全又功能完备的代码。该算法通过新的对比学习方法训练 gGAN,将代码清理和生成循环构建为一个双目标优化问题,显著减少了 LLM 推理的次数,提高了成本效益。实验结果表明,PromSec 能有效提升代码安全性,同时保持其预期功能。
创新点
- 双目标优化:将代码安全性和功能保持作为两个优化目标。
- 生成对抗图神经网络(gGAN):用于修复和减少生成代码中的安全漏洞。
- 对比学习方法:在 gGAN 中引入新的对比学习方法,优化代码生成过程。
- 迭代交互循环:通过 LLM 和 gGAN 之间的迭代交互,逐步优化代码生成。
- 跨模型和语言的可转移性:优化后的提示可跨不同的 LLMs 和编程语言使用。
算法模型
PromSec 算法包括以下关键组件:
- gGAN:一个生成对抗网络,用于在保持代码功能的同时修复安全漏洞。
- LLM:用于生成代码的大规模语言模型。
- 对比损失函数:用于训练 gGAN,确保生成的代码图既安全又保持功能。
- 迭代优化过程:通过 LLM 和 gGAN 的迭代交互,不断优化代码和提示。
实验效果
- 安全性提升:PromSec 显著减少了代码中的常见弱点枚举(CWEs)数量。
- 功能保持:通过代码图相似性度量,PromSec 生成的代码保持了原始代码的功能。
- 成本效益:PromSec 减少了 LLM 查询次数和安全分析成本,提高了操作效率。
- 跨模型和语言的可转移性:PromSec 优化的提示在不同的 LLMs 和编程语言中具有较高的可转移性。
重要数据与结论
- PromSec 在处理 100 个测试代码库时,能够在 20 次迭代内解决大多数 CWEs。
- 在与基线方法(BL1 和 BL2)的比较中,PromSec 在安全性、功能保持和成本效益方面均表现更优。
- PromSec 在处理未在训练集中出现的 CWEs 时,仍能展现出一定的安全性修复能力。
推荐阅读指数:
★★★★☆
推荐理由
- 实用性:PromSec 解决了实际开发中的一个重要问题,即如何在利用 LLMs 生成代码的同时确保代码的安全性。
- 创新性:该研究提出了一种新颖的方法,通过优化提示来提高代码的安全性,而不是直接修改模型本身。
2. Exploring Large Language Models for Product Attribute Value Identification
K Sabeh, M Kacimi, J Gamper, R Litschko, B Plank - arXiv preprint arXiv:2409.12695, 2024
探索大型语言模型在产品属性值识别中的应用
摘要
产品属性值识别(PAVI)是从产品信息中自动提取属性及其值的任务,这对于产品搜索、推荐和比较等功能至关重要。现有的方法主要依赖于微调预训练的语言模型,如 BART 和 T5,这些方法需要大量的任务特定训练数据,并且在泛化到新属性时存在困难。本文探索了大型语言模型(LLMs),如 LLaMA 和 Mistral,作为 PAVI 的数据高效且鲁棒的替代方案。我们提出了不同的策略:比较零样本设置中的一步和两步基于提示的方法,并利用通过上下文学习示例中的参数和非参数知识。我们还介绍了基于预训练 T5 模型的密集演示检索器,并进行指令微调,以明确训练 LLMs 执行任务特定指令。在两个产品基准数据集上的广泛实验表明,我们的两步方法在零样本设置中显著提高了性能,并且当使用训练数据时,指令微调进一步提高了性能,展示了使用 LLMs 进行 PAVI 的实际好处。
创新点
- 零样本学习:探索了 LLMs 在没有任务特定训练数据的情况下执行 PAVI 的能力。
- 两步方法:提出了一种分阶段的方法,先识别属性,然后提取相应的值,以提高准确性。
- 上下文学习:使用参数和非参数知识源来增强模型性能,包括生成的示例和检索到的示例。
- 指令微调:通过明确训练模型执行任务特定指令来提高性能。
算法模型
- 一步方法:模型直接从输入文本中提取属性-值对。
- 两步方法:模型首先识别属性,然后提取相应的值。
- 密集演示检索器:基于预训练的 T5 模型,用于检索与输入数据最相关的示例。
- 指令微调:对 LLaMA、Mistral 和 OLMo 模型进行微调,以提高 PAVI 任务的性能。
实验效果
- 零样本结果:两步方法在 AE-110k 和 OA-Mine 数据集上的性能均优于一步方法。
- 上下文学习:使用检索到的标题和演示可以提高模型性能,尤其是当使用细粒度检索器时。
- 指令微调:与上下文学习相比,指令微调显著提高了模型性能。
重要数据与结论
- 在 AE-110k 数据集上,Mistral 模型在两步方法中的 F1 分数为 28.97,而一步方法为 17.20。
- 在 OA-Mine 数据集上,LLaMA 模型在两步方法中的 F1 分数为 31.64。
- 指令微调进一步提高了性能,例如在 AE-110k 数据集上,LLaMA 的 F1 分数提高到 81.09。
推荐阅读指数:
★★★★☆
推荐理由
- 实际应用价值:研究探索了在实际电商环境中如何有效地使用 LLMs 进行产品属性值识别,这对于提升用户体验和平台效率具有重要意义。
- 创新性方法:提出了一种新的两步方法和上下文学习策略,这些方法在零样本学习和任务特定指令下均显示出优异的性能。
- 广泛的实验验证:在两个不同的产品数据集上进行了广泛的实验,验证了方法的有效性和泛化能力。
- 开放性:研究使用了开源模型,这使得其他研究者可以复现和在此基础上进一步研究。
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25(下)+https://developer.aliyun.com/article/1628888