【深度学习: ChatGPT 】经验教训:使用 ChatGPT 作为 ML 工程师一天

2024-02-10 13:12

本文主要是介绍【深度学习: ChatGPT 】经验教训:使用 ChatGPT 作为 ML 工程师一天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

【深度学习: ChatGPT 】经验教训:使用 ChatGPT 作为 ML 工程师一天

    • 介绍
    • 设置
    • 过程
    • 标杆
    • ChatGPT 做机器学习
    • ChatGPT 能否真正实施这些解决方案?
    • 结果
    • 结论

TLDR;在最近使用 AI 应用程序 ChatGPT 的用例激增中,我们询问它是否可用于改进其他 AI 系统。我们在未经过训练的人工智能模式(计算机视觉)中对实际问题进行了测试,并报告了结果。与我们的随机样本相比,ChatGPT 建议的平均精度平均提高了 10.1%,召回率提高了 34.4%,使用纯粹以数据为中心的指标驱动方法。帖子的代码在这里。

介绍

很少有技术发展能像 OpenAI 发布 ChatGPT 那样迅速和鲜明地抓住公众的想象力。

在推出后的两个月内,它就获得了超过 1 亿用户,这是历史上最快的公共应用程序。虽然许多人认为 ChatGPT 在技术上是一次飞跃,但它真正的火花并不是基于巨大的技术进步(GPT3,它所基于的模型已经存在了近 3 年),而是因为它是一个人工智能应用程序,完美地针对个人人类互动进行了校准。

正是它作为一个人工智能系统的炫耀性,可以展示现实世界的价值,让公众如此敬畏。人工智能的形式存在于现代生活的各个方面,但大多隐藏在后台(谷歌搜索、Youtube 推荐、垃圾邮件过滤器、身份识别)。

ChatGPT 是为数不多的公然人工但也很智能的之一。人工智能成为众人瞩目的焦点,催生了大量的思想文章、文章、视频、博客文章和播客。

在这种内容热潮中,围绕人工智能进步、人工智能意识的进步、通用人工智能 (AGI) 和技术奇点的更具挑衅性的影响,人们重新提出了问题和担忧。在最具投机性的场景中,人们担心(或希望取决于你问谁)是我们模型的复杂性、强大性和复杂性最终会突破分离智能的事件视界,在这种视界中,系统发展出迭代自我改进其核心功能和自身自我改进能力的能力。这可以创造一个指数级增长的正强化循环,刺激我们所知道的社会和人类存在的不可知和不可逆转的转变。

在这里插入图片描述
还没有,ChatGPT

需要明确的是…那不是我们所处的位置。

ChatGPT并不是终结者的曙光。预测一项仍处于快速发展中的技术方向往往是愚蠢的,而对其更广泛的影响则更是如此。然而,在面对一个迫在眉睫且无法回答的大问题时,我们仍然可以通过提出更小、更可口的问题来发展洞察力和直觉。

本着这种精神,我们寻找一个可以提出并随后测试人工智能自我改进主题的更简单的问题:

我们能否找到一种途径来检查一个人工智能系统是否可以迭代改进另一个人工智能系统?

我们观察到,目前人工智能发展的主要推动者是从事机器学习工作的人,他们是工程师和研究人员。一个明智的代理子问题可能是:

ChatGPT 可以成为一名称职的机器学习工程师吗?

设置

如果 ChatGPT 要充当 ML 工程师,最好对角色所需的任务进行清点。ML工程师的日常生活包括:

  • 手动检查和浏览数据
  • 训练模型和评估模型结果
  • 管理模型部署和模型监视过程。
  • 编写自定义算法和脚本。

将这个角色联系在一起的线索是,机器学习工程师必须是多才多艺的技术问题解决者。因此,与其遍历 ChatGPT 的全部 ML 任务,不如专注于角色中更抽象和创造性的问题解决元素。
我们将通过 ChatGPT 以几种方式缩小范围:

专门研究计算机视觉:我们之所以选择计算机视觉,既是因为这是我们的专长,也是因为作为一种大型语言模型,ChatGPT(据我们所知)在其训练过程中无法直接访问任何视觉媒体。因此,它从纯粹的概念角度来研究这个领域。

一个具体的玩具问题:为了纪念我们都知道和喜爱的 Python 库以及我们都知道和喜爱的濒临灭绝的动物,我们选择我们的玩具问题来构建一个强大的熊猫物体检测器。我们将使用来自开源 YouTube-VOS 数据集的数据,这些数据是我们独立重新标记的,并且故意犯了错误。

采用明确的以数据为中心的方法:我们选择以数据为中心的方法,因为我们发现这种方法通常对实际模型开发具有最高的杠杆作用。我们可以消除模型和参数选择的大部分复杂性,这样我们就可以更专注于改进输入到模型中进行训练的数据和标签。采用更以模型为中心的方法来运行超参数和模型架构虽然很重要,但对 ChatGPT 的抽象推理能力的测试将减少。

使用现有工具:为了进一步简化任务,我们消除了对 ML 工程师经常为自己构建的内部工具的任何依赖。ChatGPT(不)幸运的是不能花时间在 Jupyter Notebook 上。我们将利用 Encord 平台,通过使用 Encord 的微模型并通过开源工具 Encord Active 运行数据、标签和模型评估来简化模型训练/推理。下面提供了用于运行模型训练的代码。

在这里插入图片描述
考虑到这个缩小的范围,我们的方法是使用 ChatGPT 通过 Encord Active 编写自定义质量指标,我们可以运行数据、标签和模型预测,以过滤和清理熊猫问题中的数据。

质量指标是对数据、标签和模型的额外参数化;它们是以语义上有趣且相关的方式索引训练数据和预测的方法。示例可以包括从更一般的属性(如图像的模糊度)到任意特定的属性(如图像中行人之间的平均距离数)的所有内容。

ChatGPT 作为我们的 ML 工程师的工作是提出想法来分解和整理我们的标签和数据,以提高下游模型的性能,通过它可以自行编程的有形质量指标进行调解。

示例质量指标的代码如下:

在这里插入图片描述
这个简单指标计算数据集中边界框的纵横比。使用此指标遍历数据集,我们看到了一种分解数据的方法:

在这里插入图片描述

ChatGPT 的目标是找到其他相关指标,我们可以用这些指标来改进数据。

我们还必须考虑的最后一点是,ChatGPT 作为 ML 工程师处于很大的劣势。它无法直接看到它正在处理的数据。它的实现能力也很有限。最后,ChatGPT 作为自身成功的受害者,经常出现中断和无响应的情况。ChatGPT 是贵公司的一名 ML 工程师,他住在一个 wifi 非常糟糕的荒岛上,他们唯一可以运行的软件是 Slack。因此,出于实际原因,我们需要一种人机交互的方法。在这个项目中,我们将充当 ChatGPT 的眼睛、耳朵和手指,以及它的探索同事。

过程

在上述约束条件下,我们的策略如下:

  1. 对随机抽样的数据运行初始基准模型
  2. 向 ChatGPT 寻求改进数据和标签选择过程的想法
  3. 让它编写自定义质量指标来实例化这些想法
  4. 使用改进的数据训练新模型
  5. 评估模型并进行比较

通过以数据为中心的方法,我们将 ChatGPT 必须试验的变量限制为仅质量指标。所有模型和超参数将保持不变。总结一下:

在这里插入图片描述

与被困在OpenAI服务器上的神经网络相比,我们作为人类所拥有的奢侈之一(目前)是我们可以直接查看数据。通过一些轻微的目视检查,快速发现标签错误(我们特意引入的)并不难。在整个过程中,我们将尽最大努力将我们所看到的内容与 ChatGPT 进行沟通,为其解决方案提供足够的背景信息。一些(无可争议的可爱)数据示例包括:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有一些明显的标签错误:

在这里插入图片描述

在这里插入图片描述
不完全是熊猫

标杆

建立所有这些后,我们可以从运行一个初始模型开始,对 ChatGPT 的努力进行基准测试。对于我们的基准测试,我们随机抽取 25% 的训练数据集样本,并通过上述模型训练循环运行它。我们的初步结果得出的平均精度 (mAP) 为 0.595,平均召回率为 0.629。

在这里插入图片描述

我们现在可以尝试 ChatGPT 下一步去哪里。

ChatGPT 做机器学习

通过我们的基准集,我们与 ChatGPT 合作,探讨如何通过质量指标改进我们的数据集。我们的第一种方法是建立对问题的高级描述并引出初步建议。

在这里插入图片描述
在这里插入图片描述

一系列的来回讨论产生了一个相当富有成效的头脑风暴会议:

在这里插入图片描述
我们已经对指标有一些有趣的想法。为了继续提出想法,我们进行了一系列长时间的对话,包括在休息时玩 Wordle 的命运多舛的尝试。

在这里插入图片描述
在这里插入图片描述
经过多次互动(并建立了稳固的融洽关系),我们可以回顾一下 ChatGPT 提出的一些示例指标建议:

对象邻近度:参数化帧中熊猫边界框之间的平均距离。如果熊猫彼此非常接近,这可能会混淆对象检测模型,这可能很有用。

对象置信度分数:这是一种标准方法,使用现有模型对标签的置信度与初始模型本身进行排名。

对象计数:一个简单的指标,与帧中的熊猫数量影响模型精度的情况相关。

边界框松紧度:计算边界框内轮廓的纵横比与框本身的纵横比的偏差,以衡量框是否紧紧地贴合在感兴趣的对象周围

除了指标的想法外,我们还希望它就如何在实践中使用这些指标提出建议。

数据选择:

让我们问问 ChatGPT 对使用指标提高数据质量的看法。

在这里插入图片描述

标签错误

我们还可以询问当指标发现潜在的标签错误时该怎么办。

在这里插入图片描述
总而言之,根据 ChatGPT 改进我们的模型的一些具体策略是:

  • 数据分层:使用指标对数据集进行分层以实现平衡
  • 错误消除:从训练数据中过滤出我们的指标指示的潜在错误
  • 重新标记:将潜在的标签错误发回以重新注释

我们现在通过 ChatGPT 构思编制了许多可行的指标和策略。下一个问题是:

ChatGPT 能否真正实施这些解决方案?

下一步,它将把自己的想法实例化为自己的自定义指标。让我们通过输入一些示例度量代码和 Encord Active 文档中关于示例度量的说明来尝试一下:

在这里插入图片描述
在这里插入图片描述
从表面上看,它看起来不错。我们浏览了 ChatGPT 建议的各种其他指标,并找到了类似的看似合理的代码片段,我们可以通过复制/粘贴来尝试。将这些指标插入 Encord Active 以查看其运行情况,我们会得到:

在这里插入图片描述
看来这里需要改进一下。让我们问问 ChatGPT 在这方面能做些什么。

在这里插入图片描述
呃哦。尽管多次刷新,我们还是发现了一个阻碍性的响应。就像一个不可靠的同事一样,ChatGPT 编写了有缺陷的代码,然后当天就注销了,没有任何反应。

似乎仍然需要人工输入才能让事情正常运行。经过大量的手动调试后,我们终于让 ChatGPT 的指标得以运行。我们现在可以回去实施它的建议。

与任何数据科学计划一样,关键是对候选想法进行多次迭代。我们将运行多个 ChatGPT 指标并对结果进行平均,但为了简洁起见,我们将仅尝试它建议的过滤策略。我们让 ChatGPT 不再运行这些实验,让它在完成迄今为止的工作后休息一下。我们在此处共享 Colab 笔记本中的一些实验和 ChatGPT 指标的示例代码。

结果

我们使用 ChatGPT 的指标和策略进行了多项实验。通过查看指标,我们可以在下面看到 ChatGPT 的模型性能。

在这里插入图片描述
在这里插入图片描述
使用纯粹以数据为中心的指标驱动方法,与我们的随机样本相比,ChatGPT 指标建议的平均精确度平均提高了 10.1%,召回率平均提高了 34.4%。

虽然 ChatGPT 不是一个完美的同事,但它在构思合理的指标方面做了值得称赞的工作。它的想法对我们的熊猫探测器做出了重大改进。那么 ChatGPT 会是下一个杰弗里·辛顿吗?

不完全是。其一,其代码需要大量人工干预才能运行。如果我们忽略这样一个观察结果,那就是我们的疏忽:在整个对话过程的背景中,隐含地注入了一定量的人类判断力。事实上,我们最成功的指标,即对减少标签错误和提高模型性能影响最大的指标,在​​很大程度上受到了人类建议的影响:

在这里插入图片描述
这个“边界框紧密度”指标是早期定义的,是通过一系列提示和响应得出的。通往指标的道路不是由 ChatGPT 雕刻的,而是由人手雕刻的。

ChatGPT 也错过了一些简单的特定问题指标的机会。人类对熊猫的一个明显观察是它们的黑白颜色。尝试测量标签错误的一个简单指标是用白色和黑色边界框像素的数量除以框中的像素总数。该指标的数值较低表明边界框可能没有紧密封装熊猫。虽然对我们来说显而易见,但尽管我们尽了最大努力,我们还是无法哄骗这样的想法。

结论

总体而言,ChatGPT 似乎确实对计算机视觉有着深入的了解。它能够针对不熟悉的问题和框架生成有用的建议和初始模板代码片段。在它的帮助下,我们能够显着改进我们的熊猫检测器。创建代码模板的能力而不必从头开始编写所有内容,还可以显着加快(人类)ML 工程师的迭代周期。

然而,它的不足之处在于它没有能力在没有指导的情况下建立自己以前的想法和结论。它从来没有通过集中推理来更深入地研究问题的特殊性。

对于人类来说,重要的见解并不容易获得,它们来自于经验和其他以前艰苦奋斗的见解的基础上。 ChatGPT 似乎还没有开发出这种能力,仍然依赖于“即时工程师”的指导。虽然它可以成为机器学习思想和策略的一个强有力的起点,但它还不具备独立机器学习工程的深度认知能力。

ChatGPT 可以用来改进人工智能系统吗?是的。

我们会聘请他作为我们的下一个独立机器学习工程师吗?不。

等GPT4吧。

这篇关于【深度学习: ChatGPT 】经验教训:使用 ChatGPT 作为 ML 工程师一天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697194

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首