【深度学习: 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

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min