数据驱动(Data-Driven)和以数据为中心(Data-Centric)的区别

2024-05-26 12:44

本文主要是介绍数据驱动(Data-Driven)和以数据为中心(Data-Centric)的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、什么是数据驱动?

数据驱动(Data-Driven)是在管理科学领域经常提到的名词。数据驱动决策(Data-Driven Decision Making,简称DDD)是一种方法论,即在决策过程中主要依赖于数据分析和解释,而不是依赖于直觉或个人经验。它是相对于传统的经验驱动、直觉驱动或者偏见驱动的决策来讲的。

Case1:数据驱动的案例

Netflix公司通过收集和分析用户的观看习惯,评分,搜索和其他行为数据,开发出高度个性化的推荐算法,以提高用户体验并增加用户观看时间。这种数据驱动的方法也被应用于决定哪些电影和电视节目应该被购买或制作。例如,它的原创剧集"纸牌屋"(House of Cards)就是基于大量用户数据分析的结果决定制作的。

我们拿到数据,经过数据预处理,然后用来训练模型,利用模型进行决策,这就是数据驱动的决策。可以说,目前的机器学习方法和深度学习方法大都是这个形式。但是早期的机器学习方法就是经验驱动的偏多了。经验驱动模型的设计和开发基于专家的经验知识,目的是将特定领域的专家知识和推理过程编码到计算机程序中。这些系统利用了人工智能中的知识表示和知识推理技术,特别是规则基础的推理,来模仿人类专家的决策过程。如早期的专家系统:

Case2:经验驱动的下象棋模型

比如我们想创建一个会下象棋的模型,这个模型就需要在博弈中决策每一步的棋子走法。经验驱动的模型是这样设计的,首先把每个棋子的规则写进模型,如“马走日,象飞田”等,然后找几个下象棋的高手,然后把这些高手的下棋套路写进模型,如对方“当头炮”,那模型就要“把马跳”,把高手的每一步应对策略当做规则写进模型里。

 同样的案例,数据驱动的决策模型就不依赖专家规则:

Case3:数据驱动的下象棋模型

我收集大量的博弈数据,构建象棋数据集,比如根据几百年来的棋谱和高手博弈的数百万场棋局中的每一步走法创建一个如下的数据集:

Xy
兵1兵2...
(4,5)(4,5)(4,5)(-1,-1)兵1向右移动1格
(4,6)(4,5)(4,5)(-1,-1).....

不需要告诉模型“马走日,象飞田”这些基本规则,只需要把数据输入到模型(如逻辑回归,当然这个模型很垃圾)中进行训练,就可以得到一个会下象棋的决策模型。

二、什么是以数据为中心?

在上面的Case3中提到,我们得到数据后,使用逻辑回归来拟合这个分类模型,由于逻辑回归的算法很简单,效果很差,所以大家就会琢磨更多更复杂更厉害的算法来拟合这些数据,比如深度学习算法,慢慢的,随着技术的发展,模型能力越来越好。直到2017年,谷歌提出Attention is All you Need,从此来到了Transformer一统天下的地步,直到现在(2024.05),还没有产生可以挑战Transformer模型架构的新架构出现,尤其是大语言模型诞生后,Transformer架构的能力给予人们巨大的震撼。

由此可见,随着技术的发展,算法的复杂性已经不再是限制模型能力的瓶颈。之前人们卷算法、卷模型的时代,可以称作“Model-Centric”,人们的重点关注对象是模型。而现在,模型已经不是限制人工智能的主要方面,所以有人提出了“Data-Centric”以数据为中心的人工智能,Data-Centric的意思不是说不关注模型,而是说把模型和数据看的一样重要,毕竟AI领域有句俗语“Garbage in garbage out”——垃圾进,垃圾出。意思是垃圾的数据进去,无论模型多NB,出来的还是垃圾的模型,大不了是个过拟合的垃圾模型。

尤其是ChatGPT的训练路径,可以看出在数据集上的大量人力标注和筛选,保证高质量的数据。

数据降噪、数据去偏、数据增强、数据平衡、数据配比、数据课程这些方法都属于Data-Centric的范畴,目前发展还处于初步阶段。


参考文献

什么是数据驱动?到底如何驱动?数据驱动的内涵、方法、案例、优势和特征分析

专家系统简要介绍 - 乔胤博的文章 - 知乎
https://zhuanlan.zhihu.com/p/381896056

目前以数据为中心(Data-centric)的人工智能发展如何? - 知乎
https://www.zhihu.com/question/521096166

Data-Centric AI思考和实践 - 北冥有歌的文章 - 知乎
https://zhuanlan.zhihu.com/p/593692636

2023年后,AI 还有什么研究方向有前景? - 一堆废纸的回答 - 知乎
https://www.zhihu.com/question/591140366/answer/2961915932

这篇关于数据驱动(Data-Driven)和以数据为中心(Data-Centric)的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C# Semaphore与SemaphoreSlim区别小结

《C#Semaphore与SemaphoreSlim区别小结》本文主要介绍了C#Semaphore与SemaphoreSlim区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、核心区别概览二、详细对比说明1.跨进程支持2.异步支持(关键区别!)3.性能差异4.API 差

Java中自旋锁与CAS机制的深层关系与区别

《Java中自旋锁与CAS机制的深层关系与区别》CAS算法即比较并替换,是一种实现并发编程时常用到的算法,Java并发包中的很多类都使用了CAS算法,:本文主要介绍Java中自旋锁与CAS机制深层... 目录1. 引言2. 比较并交换 (Compare-and-Swap, CAS) 核心原理2.1 CAS

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E