从大语言模型蒸馏域知识:一个自动驾驶域的经验研究

23年7月来自英国高校的论文“Domain Knowledge Distillation from Large Language Model: An Empirical Study in the Autonomous Driving Domain“。

基于工程知识(或专家)的系统需要大量的手工努力和领域知识。由于大语言模型(LLM)使用大量跨域知识进行训练,因此其自动化成为可能。本文用提示工程和LLM-ChatGPT提出一个用于域知识提取的经验自动化和半自动化框架。在自动驾驶领域对该框架进行了实证评估,并提出主要观察结果。

在实现中,通过与ChatGPT“聊天”来构建域知识本体(ontology)。关键发现是,虽然完全自动化的域本体构建是可能的,但人工监督和早期干预通常会提高效率和输出质量,因为这样减少了响应随机性和蝴蝶效应的影响。因此,还开发了一种基于网络的蒸馏助手,使其能够在运行时进行监督和灵活干预。希望未来的研究使基于知识的系统工程在应用领域发生革命性的变化。

由于自动驾驶汽车及其运行环境的复杂性,自动驾驶汽车的安全验证和确认(V&V)具有挑战性。与基于距离的方法相比,基于场景的AV[7]、[8]已经成为一种新的V&V范式,根据AVs通过的场景类型而不是行进的英里数来评估AVs的性能。

已经提出了许多场景生成方法,例如[9]-[14]。然而,这些方法大多是“参数采样器”,而不是“场景探索者”,这意味着建议在给定一个固定的场景参数列表情况下,对关键参数值进行采样,以确定其生成方向。然而,这样无法系统地探索不同的功能场景[15],例如不同的道路网络、交通参与者及其策略。最近的工作[16]应用系统理论过程分析(STPA)在功能场景层面探索不同的场景类型;然而,这种方法需要广泛的“领域知识”和“人工努力”,因此不具有规模化能力。

最近,为了消除“人工努力”,提出了基于组合采样的方法,系统地生成给定域知识形式的不同场景,例如,ODD[18]或本体[19]。场景本体(如图所示来自OpenXOntology的道路交通例子)是一种域知识形式,旨在封装所有相关的物理实体(entities)、它们的关系以及它们相关的事件和活动,因此有可能生成任何场景。然而,没有提出任何方法来自动“提取”某种形式的“域知识”,用于后续的自动化任务,如场景生成,直到随着通用人工智能(AGI)(如ChatGPT[3])的最新进展变得可行。

添加图片注释,不超过 140 字(可选)

ChatGPT[3]等LLM采用问答(或指令响应)机制,能够通过“提示工程”提取和格式化知识。为了使这项实证研究对大多数公众有益,将模型限制为浏览器版本的ChatGPT[3],具有默认的生成设置(例如,温度[22]和tokens数量[23]),但提供无限制的免费层使用。如图展示经验蒸馏框架,由三个主要组件组成,即任务工作流、提示工程和执行环。

添加图片注释,不超过 140 字(可选)

提示工程当与ChatGPT“聊天”时,提示模板由三部分组成,即域上下文(为什么)、任务指令(什么)和响应格式(如何)。

域上下文部分介绍了后续请求的背景上下文,例如“我有一个道路驾驶场景本体,如下所示…”。任务指令部分指示LLM需要什么信息,例如“向本体添加10个新的相关概念、术语或实体…”。最后,为了促进响应的自动处理,响应格式部分指定了机器可读的格式,例如,“以DOT格式输出新的本体。” 注:DOT[24](一种图形描述语言)在本研究中用于描述本体类层次结构,得到主要编程语言的广泛支持。

任务工作流从应用域的种子本体开始,经过一系列提取任务(即概念/层次提取、概念定义提取、概念关系提取和概念属性提取),其中每个任务都会重复向ChatGPT请求新知识,以增强和改进本体。这样的工作流程设计的原因如下:

1) 在初步概念提取实验中,ChatGPT在循环执行过程中返回了广泛的概念,包括高度相关、不相关、有时重复的概念。正如[5]、[6]中所讨论的,随着更具体的上下文信息和良好的例子,语义准确性得到了提高,反应也更加集中。因此需要在提示中提供示例,以蒸馏出那些高度相关的概念,同时消除其余概念。这一点至关重要,尤其是对于第一个请求,因为后续响应高度依赖于先前的结果,即蝴蝶效应适用。因此,在第一个请求中引入了种子本体,该本体仅由高度抽象的概念组成,但仍足以集中范围并以DOT格式演示基本本体结构,例如超类-子类关系。

2) 本体论的基础是由概念和分类层次结构(由概念之间的超类-子类成对关系组织)形成的。随着不断更新本体层次结构,单个概念在层次结构中的位置也发生了变化,它们的定义、非层次关系(例如,车辆在道路上行驶时的驾驶关系)和属性也发生了改变。因此,在构建并固定本体层次结构之后,才执行与层次结构相关知识的蒸馏任务。

执行环在每个任务中,都有一个由提示生成、响应处理和本体更新组成的执行环,一直持续到满足任何停止标准,例如,ChatGPT停止呈现新信息或本体图(graph)达到预定义的广度或深度。如果ChatGPT返回不相关或错误的结果,则可以在任何步骤手动暂停、重复、恢复或恢复执行循环,以确保令人满意的蒸馏结果。在每一步中,都会使用ChatGPT开始新的对话,而不是使用现有的对话会话。提出这种循环执行机制的原因如下:

1) 由于tokens最大数量的限制[23]和每个请求偶尔出现的浏览器连接超时异常(ChatGPT缓慢生成大量文本可能会遇到超时错误),用一个请求去提取所有信息是不切实际的。
2) 由于ChatGPT在同一会话中记住其以前的请求和响应,因此它可能会返回与以前的响应类似的不期望的响应。因此,提示模式设计为自立(self-sufficient),并为每个请求启动一个新的对话,以避免出现这种情况。
3) 执行环机制实现手动监督和早期优化,提高了蒸馏质量,减少了蝴蝶效应。例如,在概念/层次结构提取任务的每个步骤中,不要求ChatGPT在保留现有层次结构的同时只添加新概念,而是要求从头开始重新设计层次结构,考虑所有概念,明确要求它删除不相关的概念并合并重复的概念。这种逐步重新设计允许ChatGPT全局地优化层次结构。

基于实证研究结果和观察,完全自动化的本体提取过程是可能的。然而,由于响应的随机性和蝴蝶效应,它可能会导致不可预测和不相关的本体结果。仍然需要人工监督和早期干预,以保证蒸馏质量、提高效率和节省潜在成本(例如,重复试验)。为了促进这一点,开发一个基于web的域本体蒸馏助手,如图所示。

该网站有四个子页面,对应四个蒸馏任务。在提示工程部分,所有基本组件都被呈现为独立的可编辑文本区域,以获得最大的灵活性,例如,用户可以将说明部分从“向本体添加10个新的相关概念……”更改为“在车辆类别下添加10个概念”。执行日志包含每次迭代中提示和ChatGPT响应的完整历史记录。在记录ChatGPT的响应后,解析整个日志,更新本体,刷新可视化,并生成下一次迭代的提示。为了便于手动监督和早期干预,用户可以决定是否继续下一步,或者在整个执行循环中对本体或提示进行必要的调整。

添加图片注释,不超过 140 字(可选)

语言模型知识蒸馏实践主要是指从一个大型预训练语言模型中,通过特定的技术手段提取知识,并将这些知识转移到一个较小的模型中。这种技术能够使小型模型在保持较好性能的同时,降低存储和计算资源的需求。知识蒸馏一般包括以下几个步骤: 1. 预训练大型模型:首先,需要一个预训练好的大型语言模型作为教师模型(Teacher Model),这个模型通常在大规模数据集上进行了充分训练,具有较强的理解和生成能力。 2. 设计小型模型:然后,设计一个结构相对简单、参数数量较少的学生模型(Student Model),这个模型蒸馏过程的目标模型,其目的是在参数和计算资源受限的情况下尽可能地模拟教师模型的行为。 3. 蒸馏损失函数:通过定义一个损失函数来衡量学生模型与教师模型输出的差异。除了传统的损失函数(如交叉熵损失),还会引入额外的损失项来保留教师模型中的一些特殊属性,如输出概率分布的平滑度和类别间的相似度。 4. 微调学生模型:在蒸馏过程中,学生模型需要在一个精心选择的数据集上进行微调,这个数据集可以是教师模型训练时所用的数据集,也可以是更加小型、针对特定任务的数据集。 5. 性能评估:通过在验证集上评估学生模型的性能,确保模型蒸馏后仍能保持足够的准确性和泛化能力。 知识蒸馏实践的关键点在于如何设计损失函数和选择合适的训练数据,以确保学生模型能够有效地学习到教师模型知识,同时在模型大小和速度上达到预期的优化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值