人工智能驱动的
数据科学中的对话挑战
Conversational Challenges in AI-Powered Data Science
程序员在ChatGPT中发现了巨大的价值,但它能做数据科学吗?
对于数据科学任务来说,使用ChatGPT的挑战(例如,提供上下文、错误假设和幻觉)变得更加严重。数据科学家使用各种资源,如数据集、代码、笔记本、可视化、文档和管道。数据通常非常大,可能存在质量问题。任务和数据可能需要领域专业知识,向聊天助理充分阐述是乏味的。此外,这些挑战可以是双向的,因为数据科学家必须了解ChatGPT响应中的上下文、数据、代码和假设。
为了了解数据科学家如何使用ChatGPT以及他们面临的挑战,我们进行了两项研究。
在第一项研究中,我们观察到14名专业数据科学家在使用ChatGPT时执行一系列常见任务。我们避免使用集成的人工智能工具,让他们完全控制提示写作,同时也允许我们研究与人工智能互动的基础知识。这些任务涉及类型转换、拆分列、特征选择和在公开的纽约EMS紧急呼叫数据集上绘图。
参与者之一正在执行一项任务的例子。
C显示参与者检索到的上下文,
P显示他们的提示,
A显示ChatGPT提供的答案。
在第二项研究中,我们调查了114名专业数据科学家,以验证和概括观察研究的结果。我们筛选了任何没有将LLM用于数据科学任务经验的受访者。调查包括8个同意/不同意的陈述和一个开放式问题。
Prompting behaviors
我们观察到参与者向ChatGPT编写了111个提示。他们花了64%的任务时间准备提示,27%用于调整代码,其余时间用于验证代码。他们经常在编写初始提示时遇到困难,特别是对于功能选择任务。他们还多次进行繁多的遍及和细化提示,特别是对于绘图任务。为了总结他们的行为,他们都需要多个步骤,参与者努力为ChatGPT提供正确的上下文,然后调整ChatGPT的响应来完成任务。
与 ChatGPT沟通时的挑战
Challenges when communicating with ChatGPT
当参与者与ChatGPT沟通时,我们观察到以下挑战:
共享上下文很困难(14名参与者中的10名)。 什么信息,多少钱? 数据科学家通过弄清楚他们需要提供哪些数据和上下文来开始快速写作。 一个人甚至称开始时“令人望而生畏”。 一些人试图提供原始数据,而另一些人则采取详细步骤来获取他们认为相关的信息。 例如,他们在笔记本上写了新的片段,以获取专门针对ChatGPT的信息,或者他们去Excel提取数据片段。 一些参与者在将信息粘贴到ChatGPT后也花费了相当大的努力重新格式化信息。
参与者共享数据上下文的频率,
以便为每个任务快速编写。
ChatGPT不透明地做出假设(14名参与者中的14名参与者)。参与者热衷于ChatGPT仅从列名中推断数据知识的能力。然而,它仍然做出了许多错误的假设,包括时间格式、数据类型以及如何处理异常值。这导致一些参与者使用来自ChatGPT的代码,这实际上隐藏了数据质量问题。一位与会者表示,希望以比现在在ChatGPT界面中更快的速度进行小更改的迭出。
期望不一致(14名参与者中的13名)。ChatGPT提供的响应对提示的措语非常喜怒无常。例如,包括代码或没有代码,解释或没有解释,一个大代码片段或许多小片段,使用熊猫或其他库等。几位参与者观察到,ChatGPT没有他们的领域知识,这导致了错误的响应。他们还抱怨对直截了当部分的过度解释,我们观察到所有参与者都跳到代码。
Challenges in using
ChatGPT's responses
我们观察到参与者使用ChatGPT生成的代码面临一些挑战。回想一下,ChatGPT无法直接访问他们的笔记本、数据或其他资源。
生成重复代码(14名参与者中的13名)。ChatGPT经常生成冗余代码,例如pandas.read_csv()。盲目复制粘贴此类代码会导致参与者的数据帧被过度写写。
参与者为每项任务执行代码改编和验证活动的频率。
数据和笔记本偏好(14名参与者中的11名)。参与者遵循组织代码的具体模式,而ChatGPT没有遵守这些模式。例如,他们将ChatGPT的代码分解成小块,并将其组织为笔记本中的单独单元格,有时顺序与ChatGPT提供的顺序不同。一些参与者还重构了生成的代码,使其不被参数化或不包含在函数中。同样,参与者经常修改ChatGPT的代码,以他们想要的形式获取生成的数据(例如,如何处理丢失的数据,以及何时突变列与创建新列)。
代码验证(14名参与者中的13名)。许多与会者分享了验证LLM代码的重要性。一位与会者说,“回应中的肯定语言,比如'绝对!这是您需要的代码,极具欺骗性,因为它传达了不合理的高度信心。虽然参与者没有花太多时间验证代码,但他们确实采用了不同的方法来检查正确性。他们手动检查生成的数据框架,生成的图,检查描述性统计数据的变化,并编写脚本以提供进一步的证据。
Strategies for overcoming these challenges
我们还观察了克服数据科学家面临的挑战的策略:
及时施工技术(14名参与者中的11名)。我们观察了一次性提示、几发提示、思想链提示的使用,并要求ChatGPT承担专家的规则。他们还编写了提示模板,以减少ChatGPT和笔记本或电子表格之间的上下文切换。
具有领域专业知识的脚手架(14名参与者中的3名)。参与者对ChatGPT对其数据的“理解”持谨慎态度,尽管我们只观察到少数情况下,他们试图使用自己的域专业知识来成功指导ChatGPT。例如,一位参与者希望避免使用任何时间数据,因此他们从提示中省略了包含“TIME”或“ID”的列。另一位参与者做了类似的事情,首先将列过滤到“浮动”类型的列。
选择替代资源(14名参与者中的6名)。参与者分享了ChatGPT可能不适合他们工作的原因。三位与会者询问了ChatGPT的数据共享和隐私。其他与会者表示,编写处理新数据集的代码相对罕见,因为他们经常在同一结构中的新数据批次上重新运行现有的管道。少数人确实表示,使用LLM有助于他们节省执行网络搜索的时间。
调查结果
Survey results
调查结果如下。对于数据科学家是否知道一项任务是否适合ChatGPT来说,这似乎是一个硬币。他们强烈同意,他们应该在提示符中包含数据,这需要与ChatGPT多次来回,并且代码需要更改。
Tool design recommendations
从以上研究和相关工作中,我们为设计人工智能驱动的数据科学工具提出了三项建议:
在与人工智能助理互动时,提供先发制人和流畅的上下文。参与者花了相当多的时间编写提示和收集上下文。事实上,45%的提示包括手动输入或需要额外脚本才能获取的数据。需要额外的接口,使数据科学家能够有效地选择和管理上下文。例如,如果您可以选择屏幕区域作为上下文包含或排除呢?
提供好奇的反馈循环和验证感知操作。对于开放式或复杂的任务,可能需要与ChatGPT进行多次交互才能获得令人满意的结果。系统可以在整个任务中指导用户,并主动提出澄清问题,而不是用户煽动的这种来回对话。
提供有关共享上下文和领域专业知识解决方案的透明度。很难知道需要什么背景以及正在做出什么假设。需要有更高效地共享上下文的机制,这在数据科学家和人工智能之间是双向的。一个可能的接口可能是一个单独的窗格,该窗格维护可以随时修改的假设列表。