高级提示工程:数据科学家优化LLM应用的必备技巧

Towardsdatascience

大型语言模型(LLM)的出现标志着数据科学家和机器学习工程师的一个重要转折点,它提供了前所未有的机会来简化工作流程、加速迭代周期并将重心转向高影响力任务。事实上,提示工程——这门为强大AI系统精心设计有效指令的艺术与科学——正迅速从一项小众技能发展成为许多数据科学和机器学习角色的基本要求。本指南深入探讨了实用且有研究支持的提示技术,旨在增强甚至在某些情况下自动化机器学习工作流的各个阶段。

高质量提示的核心在于其精心设计的结构。它首先要清晰定义LLM的角色和任务,例如指示它扮演“一位在特征工程和模型部署方面具有专长的资深数据科学家”。同样重要的是提供全面的上下文和约束,详细说明从数据类型、格式和来源到期望的输出结构、语气甚至令牌限制的一切信息。研究表明,将所有相关细节和上下文整合到单个提示中能产生最佳结果。为了进一步引导LLM,包含示例或测试用例有助于澄清预期,展示所需的格式样式或输出结构。最后,一个评估钩子鼓励LLM自我评估其响应,解释其推理或提供置信度得分。除了结构之外,实用技巧还包括使用清晰的分隔符(如##)来划分可扫描的部分,将指令置于数据之前,并明确指定输出格式——例如,“返回一个Python列表”或“仅输出有效的SQL”。对于需要一致输出的任务,建议保持较低的“温度”(一个控制随机性的参数),而特征头脑风暴等创意任务则可受益于较高的设置。资源受限的团队还可以利用更经济的模型来获取初步想法,然后再用高级LLM进行细化。

LLM在特征工程阶段被证明是无价之宝。对于文本特征,精心设计的提示可以即时生成各种语义、基于规则或语言特征,并附带可供审查和集成的实用示例。一个典型的模板可能会将LLM指定为特征工程助手,任务是为特定目标提出候选特征,提供文本源的上下文,并以Markdown表格等结构化格式指定输出,包括置信度自我检查。将这种方法与嵌入结合可以创建密集特征,但在沙盒环境中验证生成的Python代码片段对于捕获错误至关重要。

通常主观且耗时的手动表格特征工程过程也通过LLM取得了显著进展。由弗吉尼亚理工大学研究人员开发的LLM-FE等项目将LLM视为进化优化器。这个框架以迭代循环方式运行:LLM根据数据集模式提出新的数据转换,候选特征通过简单的下游模型进行测试,然后保留、优化或组合最有前景的特征,这类似于遗传算法但由自然语言提示驱动。这种方法与传统手动方法相比表现出卓越的性能。该系统的提示可以指示LLM充当“进化特征工程师”,根据给定模式建议一个新特征,旨在最大化与目标的互信息,并以JSON格式提供输出,包括对新颖性和影响的自我评估。

同样,处理时间序列数据的复杂性(包括其季节性趋势和突然的峰值)也可以简化。TEMPO等项目允许用户通过一个单一、简化的步骤提示进行分解和预测,显著减少了手动工作。一个季节性感知的提示通常会指示LLM作为“时间数据科学家”,将时间序列分解为趋势、季节和残差分量,要求以字典格式输出,并要求解释检测到的变化点。

对于文本嵌入特征,目标是提取关键洞察。提示可以引导LLM提供一个连续的情感分数(例如,-1到1表示从负面到正面),使用TF-IDF排名识别顶级关键词以提高相关性,甚至使用Flesch–Kincaid等级等指标计算阅读水平,而不是简单的二元分类。输出可以请求为CSV等结构化格式,确保细微差别和有效的信息呈现。

除了特征工程,LLM对于**代码生成和自动化机器学习(AutoML)**也是颠覆性的,它们简化了模型选择、管道构建和参数调优——这些任务传统上耗时甚巨。数据科学家无需手动比较模型或编写预处理管道,只需描述他们的目标即可获得可靠的建议。一个模型选择提示模板可能会将LLM指定为“资深机器学习工程师”,任务是对候选模型进行排名,为最佳模型编写scikit-learn管道,并提出超参数网格。输出可以请求为Markdown格式,包含不同部分,并附带对最佳模型选择的自我 обосно。这种方法可以从一开始就扩展到包括模型可解释性,要求LLM解释其排名或在训练后输出特征重要性(如SHAP值),从而超越黑盒推荐,提供清晰、有根据的洞察。

对于在Azure机器学习中操作的用户,AutoMLStep等特定功能允许将整个自动化机器学习实验——包括模型选择、调优和评估——封装为Azure ML管道中的一个模块化步骤,从而便于版本控制、调度和可重复运行。此外,Azure的Prompt Flow增加了一个可视化的、基于节点的层,提供了拖放式用户界面、流程图、提示测试和实时评估,实现了LLM和AutoML组件无缝集成到单一的、自动化的、可交付的设置中。

微调大型模型不再需要从头开始重新训练,这得益于LoRA(低秩适应)和PEFT(参数高效微调)等轻量级技术。LoRA在冻结的基础模型之上添加微小的可训练层,以最小的计算成本实现特定任务的适应。PEFT是这些智能方法的总称,它们只训练模型参数的一小部分,从而大大节省了计算资源,并实现更快、更便宜的操作。至关重要的是,LLM甚至可以生成这些微调脚本,根据模型性能不断改进其代码生成。一个微调对话提示可能会指示LLM作为“AutoTunerGPT”,定义其目标是使用PEFT-LoRA在特定数据集上微调基础模型,概述约束(例如批次大小、epochs),并请求JSON格式的输出,包括验证指标和自我检查。DSPy等开源框架通过实现自我改进的管道进一步增强了这一过程,这些管道可以自动重写提示、强制执行约束并跟踪多次运行中的更改,从而允许系统在没有手动干预的情况下自动调整设置以获得更好的结果。

最后,LLM可以显著增强模型评估。研究表明,LLM在精确提示的引导下,可以以接近人类的准确性对预测进行评分。提示可以设计用于单示例评估,其中LLM根据事实准确性和完整性等标准将真实值与预测进行比较,输出分数和解释。其他提示可以生成交叉验证代码,指定加载数据、执行分层分割、训练模型(例如LightGBM)和计算ROC-AUC等指标的任务。对于回归任务,“回归判官”提示可以根据平均绝对误差相对于真实范围定义预测准确性分类规则(例如,“优秀”、“可接受”、“差”),输出误差和类别。

尽管LLM功能强大,但它们可能会遇到“幻觉特征”(使用不存在的列)或“有创意”但不可靠的代码等问题。这些问题通常可以通过在提示中添加模式和验证,或设置严格的库限制并包含测试代码片段来解决。不一致的评分或“评估漂移”可以通过将LLM的温度设置为零并仔细记录提示版本来缓解。

本质上,提示工程已经发展成为一种复杂的方法论,渗透到机器学习和数据科学工作流的各个方面。人工智能研究持续关注优化提示,这凸显了它们的深远影响。最终,卓越的提示工程直接转化为更高质量的输出和大量的时间节省——这是每个数据科学家持久的愿望。