河套 IT TALK 88:(原创)数据预处理:成功AI大模型的基石

河套 IT TALK 88:(原创)数据预处理:成功AI大模型的基石

从去年下半年ChatGPT横空出世至今,大模型的热度一直没有减弱。AI好不好,基本上就看四点:数据、算力、算法和应用。智愿君决定用几篇的内容,聊聊这些话题。如果用烹饪来形容的话:数据是原材料柴米油盐,算力是烹调工具锅和火力,算法是烹饪的技法,而应用就是如何让这道菜受欢迎,允许原材料、技法的改良和变化,允许被包装,最终被普及大众接受和感知。

最先要聊的必须要有好的数据集。对于深度学习而言,好的数据集是基础。如果输入的数据质量较低、不准确或包含错误信息,那么即使使用优秀的算法和模型,最终学习出来的结果也可能存在错误和不准确性。数据的准确性和质量是确保机器学习模型能够产生准确和可靠结果的先决条件。正所谓垃圾进,垃圾出。所以要做好大模型,就要从源头抓起。

1. 高质量的数据资源

想做好数据集,寻找到高质量的数据资源是第一步。AI学习的数据要有一些基本的质量要求,否则后期处理工作量会翻倍。这里面包括:

  • 数据的准确性和真实性。如果数据存在大量的谎言,那么AI也自然就学会了说谎。
  • 数据的逻辑性:如果数据的关联缺少必要的因果关系和逻辑推理关系,在这种数据上希望训练成一个逻辑性很强的推理AI也是痴人说梦。
  • 数据的平衡和公允性。当然,这个是针对AI大模型最终用户的预判来决定的。如果一个大模型默认就是简体中文的群体,那么要在这个群体范围内做到尽可能的数据公平和公允性,不会刻意制造地域、年龄、职业和能力差别情况下的失衡和不公平。这种数据的多样性,也是最终模型鲁棒性的体现。也会帮助最终的大模型更好地应对现实世界中的变化和挑战。
  • 数据语言文明用语的重要性。要尽可能干净,不能出现辱骂、偏见、歧视性的用语。

不同领域数据资源会有所不同,一些经典的数据资源如下:

Wikipedia:

Wikipedia是一个由志愿者创建和编辑的在线百科全书,它包含了广泛的知识领域和主题的文章。Wikipedia的数据资源在自然语言处理(NLP)和文本相关的任务中非常有价值。它提供了大量的结构化和非结构化文本数据,包括文章、段落、标题、链接等信息。Wikipedia的数据资源可用于语义理解、文本分类、实体识别、关系抽取、问答系统等NLP任务的训练和评估。Wikipedia数据资源的广泛性和多样性使其成为研究和开发NLP模型的重要数据来源。

Common Crawl:

Common Crawl是一个非营利性组织,旨在收集并提供互联网上的网页数据。它通过定期抓取互联网上的网页并存储为大规模的数据集,提供了一个公共的、开放的互联网快照。Common Crawl的数据资源是以网页的形式提供的,包含了网页的HTML内容、链接、标记等信息。这些数据对于自然语言处理、信息检索、网页分析、机器学习等任务非常有价值。研究人员和开发者可以利用Common Crawl的数据资源进行文本抽取、语义分析、信息挖掘等任务的训练和研究。

World Bank Open Data:

世界银行开放数据平台提供了全球范围内的经济、社会和发展数据。这些数据涵盖各种指标,包括国内生产总值(GDP)、人口统计、教育、卫生等。

ImageNet:

ImageNet是一个大规模图像数据库,包含数百万个标记图像。每个图像都与一个或多个类别标签相关联。ImageNet的数据资源被广泛用于计算机视觉任务,如图像分类、目标检测和图像分割等。

IMDb:

IMDb(Internet Movie Database)是关于电影、电视节目、演员和其他相关信息的广泛数据库。它提供了详细的影片信息、演员表、评分和评论等。

Kaggle:

Kaggle是一个数据科学竞赛和交流平台,提供大量的公开数据集供数据科学家和机器学习从业者使用。这些数据集涵盖各个领域,包括图像识别、自然语言处理、金融、医疗等。

OpenStreetMap:

OpenStreetMap是一个开放的地图数据项目,由全球志愿者创建和维护。它提供了地理数据和地图信息,可用于各种导航、地理信息系统(GIS)和位置分析应用。

NASA’s Planetary Data System:

NASA的行星数据系统(Planetary Data System)收集和维护了来自太阳系行星探测任务的各种科学数据。这些数据包括行星表面图像、空间探测器观测数据、天体物理数据等。该数据资源对于行星科学研究和空间探索具有重要意义。

大家可能发现上述的数据资源大多为美国的资源。这一点,相比之下,我国确实存在一定程度的差距。根据发改委高技术司,我国政府数据资源占全国数据资源的比重超过 3/4,开放的规模却不足美国的 10%,个人和企业可以利用的规模更是不及美国的 7%,但这类数据的开放共享程度不高,全国开放数据集规模仅约为美国的 11%。而且我们的很多数据都在不同的垂直领域国企大厂,数据有待进一步开放汇集,为开发更符合国内需求的大模型提供基础。但国际环境复杂多变,数据安全仍是当前的重要考虑因素,所以如何拉通数据资源市场,促进相关公共、企业、个人数据的进一步放开,将为国内 AI 发展提供重要支撑,确实存在很大的挑战。

2. 数据预处理和准

尽管数据资源很重要,但要在真正拿来训练前,还是需要做很多功课的,如果不排除数据中存在前后矛盾的情况,格式不一致的情况,来源不同,导致训练水土不服的情况。再加上不可避免的噪声、异常、重复等数据问题,这就需要经过专业化的预处理和数据准备,比如如何从数据资源中采集数据?数据的价值观设计?是否需要做进一步的数据清洗?如何进行数据标注?如何管理这些数据?等等,接下来,我们就逐一展开聊一下:

数据采集:

数据采集是从数据资源中获取数据的过程。它涉及到确定数据的来源、采集方法和采集范围等。数据可以来自各种渠道,如公共数据集、开放API、传感器、日志文件等。在数据采集过程中,需要考虑数据的可靠性、完整性和合法性,确保采集到的数据符合预期和需求。

数据价值观设计:

数据的价值观设计是指在数据采集和使用过程中明确和定义数据的意义和价值。这包括确定数据的目标和目的,定义数据的质量标准和指标。数据的价值观设计需要结合具体应用场景和业务需求,确保数据的质量和适用性。对于我国在做大模型的一些企业,数据价值观设计可能尤为重要,大模型生成的结果是否符合社会主义价值观,是否符合正能量要求,是否避开敏感话题等,在数据预处理的时候,就要把控好。

数据清洗(Data Cleaning):

数据清洗是指对数据进行处理和修正,以去除或纠正数据中的错误、缺失、重复或不一致等问题。数据清洗过程包括数据去噪、数据填充、数据一致性检查和纠正等。通过数据清洗,可以提高数据的准确性和一致性,消除对模型训练的负面影响。

数据标注(Data Labeling):

数据标注是指给数据附加标签或注释,以指示数据的特征、类别或含义。数据标注可以是结构化的,如分类标签、实体标注等,也可以是非结构化的,如文本摘要、图像描述等。数据标注需要依赖专业的领域知识和标注指南,并进行质量控制和质量评估,以确保标注结果的准确性和一致性。在数据标注和处理过程中,可以利用众包平台或协作工具来进行大规模的数据标注和校对。通过将任务分发给众多标注人员或协作团队,可以加快数据处理的速度,并确保数据的准确性和一致性。数据集众包和协作可以有效应对大规模数据处理的挑战。

训练数据预处理:

数据预处理是对原始数据进行转换、规范化和归一化等操作,以便于后续的特征工程和模型训练。常见的数据预处理操作包括特征缩放、特征选择、特征变换、数据降维等。数据预处理的目标是提高数据的可解释性、可处理性和模型训练的效果。除了结构化数据(如表格数据)之外,还存在大量的非结构化数据,如文本、图像、音频和视频等。处理非结构化数据需要使用相应的技术和算法,如自然语言处理(NLP)、计算机视觉(CV)、语音识别等。对于非结构化数据的预处理和准备,需要使用特定的工具和库,以及领域专业知识。

数据增强:

数据增强是指通过一系列的变换和扩展操作来生成新的训练样本,以增加数据的多样性和丰富性。数据增强可以包括图像翻转、旋转、平移、缩放等操作,或者对文本进行重排、替换、增删等操作。通过数据增强,可以扩展有限的数据集,减轻过拟合问题,提高模型的泛化能力和鲁棒性。

数据质量控制:

数据质量控制是确保数据的准确性、一致性和可靠性的过程。它包括数据异常值的检测和处理、数据重复项的处理、缺失数据的填充等。数据质量控制还涉及到对标注数据的质量进行评估和审核,以确保标注结果的可信度和一致性。为了评估数据预处理的效果和决策,可以使用一系列评估指标和度量方法。例如,可以使用准确率、召回率、F1分数等指标来评估数据标注的质量。此外,还可以使用数据分布的统计指标、特征选择的相关性等来评估数据预处理的效果。

数据特征工程:

数据特征工程是对原始数据进行变换、提取和构造特征的过程,以便于模型的学习和表达。这包括对数据进行编码、离散化、数值化、文本向量化等操作,以生成能够被机器学习算法理解和处理的特征表示。良好的特征工程可以提高模型的表现和泛化能力。

数据集划分:

将数据集划分为训练集、验证集和测试集是模型训练和评估的重要步骤。训练集用于模型的参数更新和训练过程,验证集用于模型的调优和超参数选择,测试集用于模型的最终评估和性能指标的计算。划分数据集时需要考虑样本的分布、类别的平衡以及随机性等因素,以保证结果的可靠性和泛化能力。在实际应用中,训练数据集和测试数据集可能存在分布的偏移。这意味着测试数据集与训练数据集之间的特征分布存在差异,从而可能导致模型在测试集上的性能下降。为了解决这个问题,可以采取数据分布校正的方法,如领域自适应、实例权重调整等,来使测试数据集更加贴近实际应用场景,提高模型的泛化能力。

数据集平衡:

数据集平衡是指在训练数据中各个类别的样本数量相对均衡。当数据集存在类别不平衡的情况时,模型往往会偏向于出现样本数量较多的类别,而忽略数量较少的类别。为了避免这种情况,可以采取过采样、欠采样、生成合成样本等技术来平衡数据集,以保证各个类别的样本能够得到充分的训练和学习。

数据集集成:

数据集集成是将不同数据源的数据整合和融合成一个统一的数据集。在实际应用中,常常需要从多个数据源中收集数据,这些数据可能具有不同的格式、结构和特征。数据集集成的过程包括数据匹配、数据转换、数据合并等操作,以创建一个更全面、更丰富的数据集来支持模型训练和应用。

数据管理:

 数据管理涉及对数据资源的组织、存储、访问和更新等方面。数据应该以适当的方式进行组织和结构化,以便于后续的数据处理和分析。这里的数据管理不是针对某一个数据集或者某一个数据预处理阶段的管理,而是指对数据整个生命周期的管理和控制,包括数据策略制定、数据质量管理、数据安全性和合规性等方面。通过数据治理,可以确保数据的一致性、准确性和可信度,提高数据处理和模型应用的可靠性和效果。

数据集并非一成不变,随着时间的推移和实际应用的需求,数据集可能需要进行更新和迭代。这包括添加新的样本、修改标注、修正错误等操作。因此,在数据管理的过程中,数据的版本控制和追踪是非常重要的。由于数据可能会经历多个阶段的处理和改动,保留每个阶段的数据版本能够帮助追溯数据的来源、变化和处理过程,提高数据处理的可重现性和可追溯性。数据版本控制还有助于团队协作和复现研究结果。

对于大规模的数据集和复杂的数据处理流程,数据文档和元数据管理起着重要的作用。通过记录和管理数据的文档、描述、属性和关系等元数据信息,可以方便地了解数据集的结构、含义和使用方式。数据文档和元数据管理有助于数据的搜索、索引和共享,减少数据处理的时间和成本。同时,它还可以提供数据的可追溯性和可重复性,支持科学研究和业务决策的透明性。

数据管理还包括数据备份和恢复的问题。数据备份和恢复是保障数据安全性和可用性的重要措施。在数据处理过程中,及时对数据进行备份,并采取合适的存储和恢复策略,以应对数据丢失、损坏或泄露等风险。数据备份也有助于追溯数据的历史状态,支持数据版本控制和数据审计的需求。

数据管理还包括安全性和隐私保护等问题,确保数据的安全性和合规性。这包括对敏感信息的处理、数据脱敏、匿名化和数据访问权限的控制等。在数据处理和使用过程中,需要确保数据的访问和权限受到适当的管理和控制。这包括设定数据访问权限、加密数据传输、监控数据访问和使用情况等措施,以保护数据的安全性和隐私性。

数据的监控和维护也是数据生命周期管理的重要环节。持续地监控数据的质量、准确性和完整性,及时发现和解决数据质量问题,确保数据的可靠性和可用性。数据监控也可以帮助我们评估模型的稳定性和鲁棒性,进行模型的迭代和优化。

数据处理自动化

在整个数据预处理过程中,合理采用自动化数据处理会事半功倍。可以建立数据管道和自动化工作流。数据管道是将不同的数据处理步骤和操作串联起来,形成一个有序的数据处理流程。自动化工作流可以利用脚本、工具或平台来自动执行数据处理任务,减少手动操作和减轻重复性工作的负担。在进行数据预处理和数据准备时,可以利用各种工具和技术来简化和加速工作流程。例如,使用Python编程语言的数据处理库(如NumPy、Pandas)和机器学习库(如Scikit-learn、TensorFlow、PyTorch)可以方便地进行数据操作和模型构建。ETL(抽取、转换、加载)工具可以帮助提取数据、进行转换和整合,并加载到目标系统中。此外,还有专门用于数据清洗和特征工程的工具(如OpenRefine、Featuretools)、自动化工作流平台(如Apache Airflow、Kubeflow)等,这些工具可以减少手动操作、减轻人工工作的负担,并提高数据处理的一致性和准确性。也可以提高数据处理的效率和可靠性。

在数据管理过程中,数据可视化和探索性分析是非常有益的工具。通过可视化方法,可以直观地展现数据的分布、关系和特征,帮助发现数据中的模式、异常和趋势。探索性分析可以帮助我们更好地理解数据集,指导后续的数据处理和模型构建。通过绘制图表、热力图、散点图等可视化方式,可以直观地展示数据的分布、关系和变化趋势。常见的数据可视化工具包括Matplotlib、Seaborn、Tableau等。

总结起来,数据预处理和数据准备是数据科学和机器学习领域中不可或缺的环节。通过合理的数据采集、数据清洗、数据标注、数据整合和数据转换等步骤,可以获取高质量的数据,并为后续的分析、建模和应用打下坚实的基础。在处理数据的过程中,需要考虑数据质量、数据隐私、可重复性、资源管理、培训和知识传承等方面的问题和挑战。通过综合应用适当的技术、方法和工具,可以克服这些挑战,并获得可信、高效和可解释的数据处理结果。

3. 数据预处理的生态企业

专注于数据预处理的公司有很多,大多数都是初创公司。比如:Scale AI、Dataloop、SuperAnnotate、Labelbox、Snorkel、V7、Appen 等。这块儿的工作在起步阶段大量依赖于外包人工标记数据,类似于包工头的角色,所以有丰富外包管理经验的公司,转型做数据预处理,也相对比较容易上手。

这块儿当前做的最为突出的就是Alexandr Wang的Scale AI。成立于2016 年,当前估值 73 亿美金,ARR (年度重复收入)占比不高,只有 3 亿美金。Scale AI 核心业务为数据标注,从自动驾驶场景起家,后切入政府、电商、机器人、大模型等场景,分别对应着过去 AI 行业几次大机会的出现。Scale 从自动驾驶领域的标注起家,在自动驾驶、地图等行业表现很好,两年前,公司 80-90% 的订单都来自自动驾驶(2D、3D、激光雷达等),该比例近年有所下降。Scale AI 在每波大趋势到来时都能快速捕捉机会,推出相应的产品,在细分领域迅速做到极高的市场份额。

除了专门做数据预处理的创业公司之外,很大大厂都在自建数据标注团队,或者自建平台以掌握预处理数据的掌控权。如果这些大厂,在商业模式的运作上,降维打击这些创业公司,很有可能会挤压创业公司的市场空间。这个未来存在一定程度的博弈。

数据预处理赛道有规模效应。客户对数据预处理的关注点主要在“质量”和“效率”两个方面,由于数据预处理爱很多方面,特别是数据标注领域,不是高技术含量的工作,因此经验对质量和效率的提升就起到关键作用。这里的经验又包括工人标注数据的经验,以及 整套流程和管理体系的经验。规模越大,预处理的数据量越多,经验就越成熟、越丰富,预处理数据的质量和效率就越高,这里是个正向飞轮。所以谁作为头部玩家跑的最快,就越容易形成差异化的竞争优势,这个和OpenAI的路数是一样的。

4. 数据预处理——充满生命力的生态系统

根据Grand View Research的报告,预计到2028年,全球数据预处理市场的价值将达到1,848亿美元。MarketsandMarkets的报告预测,到2026年,全球数据预处理市场的价值将达到1,759亿美元,以每年约18.2%的复合年增长率增长。Allied Market Research的报告预测,到2027年,全球数据预处理市场的价值将超过1,500亿美元。

不管是哪个市场预测,数据预处理都有着令人振奋的未来前景。数据预处理公司将如忙碌的蜜蜂一样,不断采集、清洗、标注和优化海量的原始数据。他们将发挥关键作用,为人工智能的成长提供养分,将原始数据转化为高质量的训练数据,为深度学习模型提供坚实的基础。

随着时间的推移,这个生态系统将变得更加完善和成熟。数据预处理的流程将变得更加高效、精确和可靠,也会更加自动化,甚至也会变得更为智能。相信这个生态系统将激发出更多创新的想法和应用,让人们更好地利用数据驱动的智能系统来解决现实世界的各种挑战。让我们拭目以待吧!