机器学习可重复性危机下,创建复杂数据系统的挑战

文章目录

  • 一、前言
  • 二、主要内容
  • 三、总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

数据科学系统已成为众多研究领域的关键性工具,其开发者群体呈现出多元化的背景特征。在过去十年中,尽管数据科学与机器学习的强大工具被广泛采纳,但相关领域也日益面临可重复性危机的挑战。

在这里插入图片描述

由剑桥大学的数据科学权威带领的一个跨学科团队,最近在《自然-机器智能》杂志的 “观点” 栏目中发表了一篇文章。该文诊断了当前机器学习领域可重复性危机的根源:一方面是不当激励机制的存在,另一方面是软件工程技能普遍缺失。此外,文章深入探讨了软件工程和构建大规模复杂系统时所遭遇的普遍难题,并提出了八项创建复杂数据系统进行科研所面临的主要挑战。

为应对这些挑战,文章提倡两个核心开发原则。首先是采取迭代式进化而非一次性完备设计的方法来构建复杂数据系统;其次是在开发过程中实施代码正确性验证和效能评估反馈机制。这些原则旨在推动软件工程方法在优化复杂数据系统工程实践中的应用与普及。

论文地址:https://doi.org/10.1038/s42256-023-00665-x


二、主要内容

一句话总结:机器学习领域面临可重复性危机,原因是激励机制不足和软件工程技能匮乏,解决方法是采用逐步发展的方式、优化软件架构、编写有效的测试套件,并改进学术界的激励机制。

文章概览要点:

  • 机器学习领域面临可重复性危机,主要原因是激励机制不足和软件工程技能匮乏。
  • 创建复杂数据系统的挑战包括数据和代码的复杂性、软件工程技能缺乏、团队协作和个人工作之间的平衡、学术界与工业界之间的鸿沟等。
  • 在开发复杂系统时,应采用逐步发展的方式,遵循软件架构和敏捷开发方法,以降低构建复杂性。
  • 反馈回路是开发复杂系统的关键,通过对齐性和周期时长来评估反馈回路的有效性。
  • 软件架构对于降低系统构建复杂性和提高代码可读性非常重要,水平分层结构是数据科学系统的良好架构。
  • 编写测试套件对于保证代码正确性和数据可信度至关重要,基于属性的测试和数据测试是有效的测试方法。
  • 学术界需要改进激励机制,与期望的科研目标相匹配,以促进高质量数据科学系统的创造和发布。

三、总结

我们通过进行实验来提出数据问题。就如同在深入的交谈中,你必须仔细听取答案,并据此调整自己后续的回应和提问。这并不意味着你的问题生成算法需要贪婪,但它必须是持续迭代的。一方面,迭代工作释放了反馈回路的潜力,这在处理复杂或真实数据时尤为重要。另一方面,这要求你在与数据交互时具备灵活性。

反馈回路是特征工程、模型开发等各环节的基础设施。反馈回路让我们能以更快、更远、更自信的步伐前进。逐步发展的数据科学系统能够充分利用反馈回路的力量。正确性和有效性是两个不同的概念,它们需要不同的反馈回路。对于正确性而言,最核心的反馈回路是编写和执行测试套件,并尽可能编写清晰易懂的代码。对于打造有效反馈回路来说,最重要的一点是尽早建立起整个数据流水线,并使其尽可能细致。

我们注意到,(几乎)没有反馈回路能实现完全对齐;但是,对齐却是不可或缺的。然而,我们要指出,在迭代不对齐的反馈回路时可能会出现微妙的问题。过拟合,也被称为古德哈特定律,指出一旦某个度量成为目标,它就不再是一个好的度量标准。过拟合主要是有效反馈回路的问题。此前研究认为,人和流程通过不协调的反馈来优化不当的激励,可能导致他们(有意或无意地)“玩弄系统”。这种过拟合,即在验证集上的过拟合,可能影响整个数据科学系统,而非仅限于模型。尽管研究者在训练模型时通常意识到这个问题,但他们往往未能察觉到整个数据科学系统存在同样问题。

机器学习和数据科学项目中,通常把数据集分为训练集、验证集和测试集,其中训练集用于训练模型,验证集用于在模型训练过程中调整参数和选取最佳模型,而测试集则在所有模型开发完成后,用于评估模型表现。针对模型过拟合的策略,也同样适用于数据科学系统,例如,在开发过程中不使用保留的测试集,而是在开发最后才用测试集评估模型。最后,我们再次强调可重复性是一个社会技术问题,对学生和早期职业研究人员进行这些特定问题的培训至关重要。


📚️ 参考链接:

  • Dittmer, S., Roberts, M., Gilbey, J. et al. Navigating the development challenges in creating complex data systems. Nat Mach Intell 5, 681–686 (2023). https://doi.org/10.1038/s42256-023-00665-x
  • 机器学习可重复性危机下,创建复杂数据系统的挑战
  • 机器学习用于科研 —— 拉响 “可重复性危机” 的警报
  • 薛定谔的准确率:PyTorch 随机数引发的可复现性陷阱
  • 干货 | 论机器学习的可重复性危机
  • 沈向洋:致 AI 时代的我们 —— 请不要忽视写作的魅力

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

一. Kubernetes(K8S)简介 Kubernetes (K8S) 是一个为 容器化应用 提供 集群部署 和 管理 的开源工具,和docker swarm类似,由 Google 开发. Kubernetes 这个名字源于希腊语,意为 “ 舵手 ” 或 “ 飞行员 ” , k8s 这个缩写是因为 k 和 s 之间有八个字符的关系, Google…

家政预约小程序带商城,图文详解

家政预约小程序开发,在线选择服务分类,选择上门时间,提交订单,在线支付。 商城模块:商品分类,在线下单支付。 个人中心:订单管理(家政订单,搬家订单,商品订…

C# WPF上位机开发(通讯协议的编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 作为上位机,它很重要的一个部分就是需要和外面的设备进行数据沟通的。很多时候,也就是在这个沟通的过程当中,上…

【功能更新】HelpLook AI能力数据分析能力强化提升!

功能更新速览👇 AI能力: 1.AI搜索支持设置为手动查看 2.新增文心一言3.5机器人模型 3.支持多轮对话 数据分析: 1.搜索词新增对应点击文章的数据统计 2.支持统计内容创建作者及相关数据 3.新增操作日志 4.新增获取留资列表API AI能力 1.AI搜索支持…

C/C++ 编程规范总结

目录 前言 一、编程规范的作用 二、规范的三种形式 三、规范的内容 1. 基本原则 原则1-1 原则1-2 原则1-3 原则1-4 原则1-5 原则1-6 原则1-7 2. 布局 规则2-1-1 规则2-1-2 规则2-1-3 规则2-1-4 规则2-1-5 规则2-1-6 规则2-2-1 规则2-2-2 规则2-2-3 建议2…

ubuntu22.04 安装cuda

CUDA(Compute Unified Device Architecture)是由 NVIDIA 开发的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA 的 GPU(图形处理单元)进行高效的计算处理。CUDA 通过提供一系列的 C、C 和 Fortran 扩展,使得开发…

CountDownLatch用法、详解

目录 ​编辑 概述: 应用场景: 优点: 缺点: 主要方法: 1. CountDownLatch(int count): 2. void await(): 3. boolean await(long timeout, TimeUnit unit): 4. void countDo…

MuMu模拟器12如何连接adb?

一、MuMu模拟器12端口查看 MuMu模拟器12现已支持adb同时连接多个模拟器进行调试的操作,可以参考以下步骤操作,查看MuMu模拟器12本体以及多开模拟器的adb端口: 单开的MUMU模拟器12可通过模拟器右上角菜单-问题诊断,获取ADB调试端…

分层自动化测试的实战思考!

自动化测试的分层模型 自动化测试的分层模型,我们应该已经很熟悉了,按照分层测试理念,自动化测试的投入产出应该是一个金字塔模型。越是向下,投入/产出比就越高,但开展的难易程度/成本和技术要求就越高,但…

决战排序之巅(一)

决战排序之巅 插入排序直接插入排序 void InsertSort(int* arr, int n)希尔排序 void ShellSort(int* arr, int n)测试插入排序测试函数 void verify(int* arr, int n)测试 InsertSort测试 ShellSort测试速度 InsertSort & ShellSort 选择排序直接选择排序 void SelectSort…

前端带你学后端系列 ①【RocketMQ】

前端带你学后端系列 ①【RocketMQ】 Ⅰ 我们为什么要用RocketMQ?这个中间件有啥作用?Ⅱ RocketMQ 的组成元素Ⅲ RocketMQ 的系统架构Ⅳ 消息是怎么发送的?又是怎么存储的?又是如何拉取的?消息发送消息存储消息拉取 Ⅴ …

为什么FPGA是战略芯片?

FPGA(Field Programmable Gate Array)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物,它是作为一种半定制电路而出现的,既解决了定制电路的不足&…

STM32-02-STM32基础知识

文章目录 STM32基础知识1. STM32F103系统架构2. STM32寻址范围3. 存储器映射4. 寄存器映射 STM32基础知识 1. STM32F103系统架构 STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片,而Cortex M内核使用的是ARM v7-M架构,是为了替代…

14:00面试,14:08就出来了,问的问题有点变态。。。。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

React antd如何实现<Upload>组件上传附件再次上传已清除附件缓存问题

最近遇到一个React上传组件的问题,即上传附件成功后,文件展示处仍然还有之前上传附件的缓存信息,需要解决的问题是,要把上一次上传的附件缓存在上传成功或者取消后,可以进行清除 经过一顿试错,终于解决了这…

搭建个人智能家居 开篇(搭建Home Assistant)

搭建个人智能家居 开篇(搭建Home Assistant) 前言Home Assistant搭建Home AssistantUbuntu系统搭建Windows系统搭建VM安装方法VirtualBox安装方法: 配置Home Assistant控制页面 前言 随着科技的进步、发展,物联网给我们的生活带来…

企业计算机服务器中了360勒索病毒如何解密,勒索病毒解密数据恢复

网络技术的不断应用与发展,为企业的生产运营提供了极大便利,但网络安全一直存在,网络勒索病毒的加密与攻击技术也在不断增加。近期,云天数据恢复中心陆续接到很多企业的求助,企业的计算机服务器遭到了360勒索病毒攻击&…

(十五)Flask覆写wsgi_app函数实现自定义中间件

中间件 一、剖析: 在前面讲session部分提到过:请求一进来,Flask会自动调用应用程序对象【Flask(__name__)】的__call__方法,这个方法负责处理请求并返回响应(其实如下图:其内部就是wsgi_app方法&#xff…

【抄作业】ImportError :cannot import name xxxxxx ,原博主Activewaste

前情介绍 网上关于这种问题的解决方案一大堆,但是绝大多数都是不适用,或者说解决不了问题,我根据别人所遇到的和我自己遇到的,对这个问题整理了一下,希望能解决这个问题。 问题分析 一、缺少这个module或者func或者p…

【C++】C++中的String类详解及模拟实现示例

文章目录 string类简介string类的基本用法string类的常用方法string类的优势 string类的模拟实现存储结构头文件string.h源文件string.cpp源文件test.cpp string类简介 string类简介在C编程中,字符串是一种非常常见的数据类型,用于存储文本信息。C标准库…