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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2777377.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

肯尼斯·里科《C和指针》第12章 使用结构和指针(1)链表

只恨当时学的时候没有读到这本书,,,,,, 12.1 链表 有些读者可能还不熟悉链表,这里对它作一简单介绍。链表(linked list)就一些包含数据的独立数据结构(通常称为节点)的集…

【数学建模】【2024年】【第40届】【MCM/ICM】【A题 七鳃鳗性别比与资源可用性】【解题思路】

我们通过将近半天的搜索数据,查到了美国五大湖中优势物种的食物网数据,以Eric伊利湖为例,共包含34各优势物种,相互之间的关系如下图所示: 一、题目 (一) 赛题原文 2024 MCM Problem A: Reso…

704. Binary Search(二分查找)

题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 问题分析 确定左右界,然后按规则进行更新即可 代…

H12-821_73

73.某台路由器Router LSA如图所示,下列说法中错误的是? A.本路由器的Router ID为10.0.12.1 B.本路由器为DR C.本路由器已建立邻接关系 D.本路由器支持外部路由引入 答案:B 注释: LSA中的链路信息Link ID,Data&#xf…

Linux探秘:如何用 find 命令发现隐藏的宝藏

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…

python 爬虫篇(3)---->Beautiful Soup 网页解析库的使用(包含实例代码)

Beautiful Soup 网页解析库的使用 文章目录 Beautiful Soup 网页解析库的使用前言一、安装Beautiful Soup 和 lxml二、Beautiful Soup基本使用方法标签选择器1 .string --获取文本内容2 .name --获取标签本身名称3 .attrs[] --通过属性拿属性的值标准选择器find_all( name , at…

动漫风博客介绍页面源码

动漫风博客介绍页面源码,HTML源码,图片背景有淡入切换特效 蓝奏云:https://wfr.lanzout.com/iIDZu1nrmjve

Web前端框架-Vue(初识)

文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…

RocketMQ生产常见问题

RocketMQ如何保证消息不丢失 1、哪些环节会有丢消息的可能? 其中,1,2,4三个场景都是跨网络的,而跨网络就肯定会有丢消息的可能。关于3这个环节,通常MQ存盘时都会先写入操作系统的缓存page cache中&#xf…

Python中的正则表达式(一)

在Python中,正则表达式是一种用于匹配和操作字符串的强大工具。正则表达式由一系列字符和特殊字符组成,用于定义搜索模式。 在Python中,我们使用内置的 re 模块来操作正则表达式。要使用正则表达式,我们首先需要导入 re 模块。 下…

Android SystemConfig相关

SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时,作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化,之后能通过Injector类对象的getSystemConfig()得到SystemConfig类…

每日五道java面试题之java基础篇(三)

第一题. switch 是否能作⽤在 byte/long/String 上? Java5 以前 switch(expr)中,expr 只能是 byte、short、char、int。从 Java 5 开始,Java 中引⼊了枚举类型, expr 也可以是 enum 类型。从 Java 7 开始,expr 还可以…

自己DIY制作耳机壳一般用哪种材料比较好,性价比比较高

在选择耳机壳的材料时,除了考虑材料本身的性能外,还需要考虑成本、加工难度、耐用性、环保性等方面的因素。 从性能方面来看: 制作耳机壳的UV树脂和塑料材质各有其优缺点。UV树脂具有高硬度、耐磨、耐高温、环保等优点,能够提供更…

Java写标准输出进度条

学Java这么久了,突发奇想写一个 进度条 玩玩,下面展示一下成功吧! Java代码实现如下 public class ProcessBar {public static void main(String[] args) {//进度条StringBuilder processBarnew StringBuilder();//进度条长度int total100;/…

C++——二叉树

引入 map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构 二叉搜索树的特性了解,有助于更好的理解map和set的特性 1.二叉搜索树的概念及优缺点 1.1二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或…

windows安装sqlite

windows安装sqlite比linux麻烦很多 1.下载 下载链接:链接 下载dll的zip文件 2.解压并放到文件夹 将压缩包内的文件解压,放到C://sqlite下 3.编辑环境变量 添加到系统变量的path中 4.验证 打开命令提示符,输入 sqlite3有结果就行

DNS 域名系统——应用层

目录 1 域名系统 DNS 1.1 域名系统 1.2 互联网的域名结构 1.2.1 顶级域名 TLD(Top Level Domain) (1) 国家顶级域名 nTLD (2) 通用顶级域名 gTLD (3) 基础结构域名 (infrastructure domain) 1.3 域名服务器 1.3.1 域名服务器的四种类型 (1…

深入理解java之多线程(一)

前言: 本章节我们将开始学习多线程,多线程是一个很重要的知识点,他在我们实际开发中应用广泛并且基础,可以说掌握多线程编写程序是每一个程序员都应当必备的技能,很多小伙伴也会吐槽多线程比较难,但因为其实…

【linux系统体验】-archlinux折腾日记

archlinux 一、系统安装二、系统配置及美化2.1 中文输入法2.2 安装virtualbox增强工具2.3 终端美化 三、问题总结3.1 终端中文乱码 一、系统安装 安装步骤人们已经总结了很多很全: Arch Linux图文安装教程 大体步骤: 磁盘分区安装 Linux内核配置系统(…

面向数据报编程-UDP协议

目录 前言: 1.UDP协议API 1.1UDP编程原理 1.2DatagramSocket类 (1)DatagramSocket构造方法 (2)DatagramSocket普通方法 1.3DatagramPacket类 (1)DatagramPacket构造方法 (2…