∞🧙🏼‍♂️AnyClassifier - 为文本分类生成合成数据

社区文章 发布于2024年8月19日

GitHub

我很高兴与大家分享 AnyClassifier 0.2.0 版本。在此版本中,我引入了文本分类的合成数据生成功能。

1. 简介

image/png image/png

AnyClassifier 是一个框架,让您无需任何标签或数据,只需少量代码即可创建高性能分类器。它旨在通过消除对大量数据整理和标记的需求,彻底改变机器学习开发过程。
主要特点是:

  • 无需数据:即使没有数据集,也可以从头开始构建分类器
  • 具有竞争力的结果:使用合成数据可获得与使用真实数据相当的具有竞争力的结果
  • 多语言合成数据生成:只要您的 LLM 模型支持,即可生成任何语言的数据
  • 一行代码实现:让每个人都能使用 AI,并将其作为代理(代理流程的插件)
  • LLM 驱动的合成数据和标注:利用 SOTA LLM 进行高质量合成数据生成和标注
  • 专为实际应用设计:由机器学习工程师为机器学习和软件工程师创建

2. 动机

作为机器学习工程师,我们深知构建和整理高质量标注数据集的挑战。
当您想要构建多语言数据集时,挑战会进一步放大。
AnyClassifier 消除了这一瓶颈,让您能够专注于最重要的事情——解决实际问题。

3. 为什么要使用合成数据?

有很多动机

  • 模型性能 - 模型表现不佳最常见的原因是某些类别或某些领域缺乏数据
  • 节省数据收集和标注成本
  • 快速原型开发 - 时间成本更高
  • 克服数据稀缺性 - 不平衡类别的数据因其性质而难以收集,例如,安全审查需要非安全数据,而这些数据相对于安全数据来说是稀有的,并且真实世界的数据可能无法代表所有需要检测的情况。
  • 数据隐私 - 尽管语言模型仍有可能输出完全相同的训练数据,但其风险远低于直接使用真实数据。

4. 合成数据生成设计

我们采用分层生成方法,首先要求 LLM 建议主题以扩展特定标签的第一层,然后在第二层建议子主题。

image/png

这也受到了 [1] 的启发,其中模拟了多个角色以覆盖不同的场景。我们采用源类型驱动策略而不是角色驱动策略,因为源类型通常反映不同的目标受众群体,并且它的粒度更细,更适合在训练中对数据需求较低的文本分类模型。
每个数据合成都基于(指令、标签、子主题、源类型)的独特组合。通过枚举所有这些组合,它确保了合成数据的多样性。

image/png

示例(使用 Llama 3.1 8B Instruct)

用于 imdb 的合成数据

标签 示例
负面情绪
  • “我非常期待这部电影,但不幸的是,它完全令人失望。剧情可预测,缺乏任何真正的张力。角色发展不足,他们的动机不明确。节奏缓慢,拖得太久。总的来说,我不会向任何人推荐这部电影。”
  • “我对这家餐厅的服务非常失望。女招待不友好,也无济于事,我们的服务员似乎完全不知所措。我们不得不多次要求提供水和餐具等基本物品。食物价格过高,甚至也不好吃。肯定不会再来了。”
  • “我对最近从这家商店购买的商品非常失望。产品质量不合格,价格太高了。我花了200美元买了一件看起来很便宜的商品,结果只用了一周就坏了。根本不值这个钱。1/10,不推荐。”
积极情绪
  • “我刚刚拿到了我最喜欢的艺术家的演唱会门票,我欣喜若狂!现场的能量一定会电光火石!#演唱会季 #音乐爱好者”
  • “我刚刚在这家餐厅度过了最棒的体验!服务速度极快,食物烹制得完美无瑕。我们的服务员 Alex 细心周到,友好热情,确保我们得到了一切所需。账单价格合理,我们离开时感到心满意足,迫不及待想再来。5 颗星都不够,如果可以的话,我愿意给 10 颗星!”
  • “这部电影的动作场面绝对令人惊叹!特技动作编排得令人难以置信,特效也是一流的。我全程都坐立不安,为英雄们拯救世界而欢呼。演员阵容也堪称出色,主演们表现突出。总的来说,我强烈推荐这部电影给所有喜欢动作惊险片的人。”

点击此处查看更多。

用于 zeroshot/twitter-financial-news-sentiment 的合成数据

标签 示例
看跌
  • “我要在为时已晚之前退出市场。道琼斯指数正在暴跌,我没有看到任何复苏的迹象。所有经济指标都指向衰退,我不愿意冒我的退休储蓄风险。我在这个市场已经多年了,但我认为现在是时候止损并转为现金了。还有人预见到这一点了吗?”
  • “彭博社:特斯拉财报不及预期,营收下降20% - 这家电动汽车制造商的季度收益低于分析师预期,营收暴跌20%至245.8亿美元。该公司的毛利率也出现下降,引发了对其维持盈利能力的担忧。投资者对令人失望的结果做出反应,特斯拉股价在盘后交易中下跌8%。此次不及预期是首席执行官埃隆·马斯克面临的挫折,他一直面临着实现持续增长的压力。分析师此前预计特斯拉每股收益为0.55美元,但该公司实际为0.35美元。营收下降的主要原因是汽车销售额下降15%,以及能源生产和存储销售额下降10%。该公司对本季度的指导也低于预期,特斯拉预测营收为240亿美元,低于市场普遍预期的255亿美元。此次财报不及预期提醒我们,电动汽车市场竞争仍然非常激烈,特斯拉在保持市场份额方面面临着重大挑战。”
  • “我要在为时已晚之前退出市场。道琼斯指数刚刚暴跌了500点,我不想冒倾家荡产的风险。经济指标都指向衰退,我不相信美联储能扭转局面。还有人会在船沉之前跳船吗?”
中性
  • “财报:科技巨头营收超预期,但利润率收窄。尽管营收增长10%,但由于运营费用较高,公司净利润低于预期。股价保持相对稳定,投资者在公司即将推出产品前采取谨慎态度。”
  • “刚开完财务顾问会议,我们讨论了最新的季度财报。没有大的惊喜,市场表现平稳。没什么好兴奋的,也没什么好担心的。#股市 #投资”
  • “可口可乐与可口可乐欧洲合作伙伴之间拟议的合并预计将创建一个总市值超过1000亿美元的饮料巨头。尽管交易仍在等待监管部门批准,但分析师们对其推动增长和提高效率的潜力持谨慎乐观态度。合并后的实体可能受益于规模经济和在主要市场的更强大存在,但一些投资者担心可能对就业和供应链造成影响。随着交易的推进,投资者将密切关注任何监管障碍或其他可能延迟或阻碍合并的问题。”
看涨
  • “刚拿到了新的 #Robinhood 应用程序更新!他们终于添加了实时跟踪我的投资组合表现的功能。非常感谢 @RobinhoodApp 团队听取用户反馈并兑现承诺!#投资 #股市 #看涨”
  • “刚结束 @AAPL 的财报电话会议,我对公司的未来感到非常乐观。每股收益的指导看起来很强劲,我认为我们正处于一次重大突破的边缘。#AAPL #股市 #财报”
  • “刚刚听说美联储正在考虑降息以刺激经济。这对股市来说是一个巨大的利好,我预计未来几周市场将出现强劲反弹。现在还有谁看好市场呢?”

点击此处查看更多。

用于 ccdv/arxiv-classification 的合成数据

标签 示例
神经网络与演化
  • “演化算法因其有效搜索最优解的能力而被广泛应用于各种优化问题。在本文中,我们提出了一种新颖的混合方法,结合了遗传算法和差分演化的优势来解决复杂的优化问题。所提出的方法,称为 GEDE,整合了遗传算法的探索能力和差分演化的利用能力。我们评估了 GEDE 在几个基准问题上的性能,并将其与其他最先进的算法进行了比较。结果表明,GEDE 在收敛速度和解质量方面优于其他算法。我们还分析了 GEDE 的收敛行为,并提供了对其性能的见解。所提出的方法有可能应用于工程、经济学和计算机科学等各个领域的广泛优化问题。”
  • “标题:一种用于文本数据情感分析的深度学习方法\n摘要:本文提出了一种新颖的深度学习模型,用于文本数据的情感分析。所提出的模型结合了卷积神经网络(CNN)和循环神经网络(RNN)的优点,以有效捕获文本数据中的空间和时间依赖性。在几个基准数据集上的实验结果表明,所提出的模型优于最先进的方法。所提出的模型在 IMDB 数据集上实现了 92.5% 的准确率,比现有最佳方法高出 2.5%。结果还表明,所提出的模型对噪声具有鲁棒性,并且可以处理词汇表外单词。所提出的模型对自然语言处理领域做出了重大贡献,并有可能应用于各种实际应用。”
  • “标题:一种用于基于深度学习的进化算法优化的新型混合方法\n\n摘要:本文提出了一种新型混合方法,它结合了深度学习和进化算法的优点,以优化复杂的优化问题。我们引入了一种新的神经网络架构,可以实时学习调整进化算法的参数,从而提高收敛速度和解决方案质量。我们的方法在一系列基准问题上进行了评估,并与最先进的方法进行了比较。结果表明,我们的混合方法在收敛速度和解决方案质量方面优于现有方法。我们还对所提出的方法进行了全面分析,并讨论了其在各个领域的潜在应用。\n\n关键词:进化算法、深度学习、优化、混合方法、神经网络。”
统计理论
  • “标题:支持向量机泛化误差的新视角\n摘要:我们根据核再生核希尔伯特空间(RKHS)的Rademacher复杂度,给出了支持向量机(SVM)泛化误差的新界。我们的界比现有界更紧,形式更简单。我们还提供了一种新的核学习算法,该算法基于最小化经验风险相对于RKHS范数的思想。我们通过几个基准数据集验证了我们方法的有效性。”
  • “标题:高维数据假设检验的贝叶斯方法\n\n摘要:假设检验是统计学中的一个基本问题,其应用在各个领域都非常广泛。然而,传统的假设检验方法在高维数据设置中往往表现不佳。在本文中,我们提出了一种针对高维数据假设检验的新颖贝叶斯方法。我们的方法结合了贝叶斯推理和降维技术的优点,为假设检验问题提供了一种稳健高效的解决方案。我们通过对高维数据集进行大量模拟和实际实验,证明了我们方法的有效性。结果表明,我们的方法在准确性和计算效率方面优于现有方法。此外,我们对我们的方法进行了理论分析,这为我们提供了对其性能和局限性的见解。我们的方法有可能应用于广泛的领域,包括图像分析、基因组学和金融。本文中使用的代码和数据可在网上获取,以实现可重现性。”
  • “标题:利用高斯过程先验的贝叶斯网络学习,用于高维系统中的不确定性量化\n\n摘要:贝叶斯网络是建模不确定性复杂系统的强大工具。然而,在高维系统中,学习贝叶斯网络的计算成本可能高得令人望而却步。在本文中,我们提出了一种利用高斯过程先验进行贝叶斯网络学习的新方法。我们称之为基于高斯过程先验的贝叶斯网络学习(BN-GP),它利用高斯过程的灵活性来建模网络结构中的不确定性。我们证明了 BN-GP 在几个高维系统中的有效性,包括一个合成数据集和来自系统生物学领域的真实世界数据集。我们的结果表明,与传统方法相比,BN-GP 可以以显著降低的计算成本学习精确的贝叶斯网络。此外,我们对 BN-GP 的收敛特性进行了理论分析,结果表明即使在高维数据存在的情况下,它也可以学习到网络结构的一致估计。我们的方法有可能使贝叶斯网络在高维系统中得到广泛应用,而传统方法通常不可行。\n\n关键词:贝叶斯网络、高斯过程先验、不确定性量化、高维系统、系统生物学。”
人工智能
  • “标题:自主系统中鲁棒视觉感知的层次表示学习\n摘要:我们提出了一种用于自主系统中视觉感知的新型深度学习方法,该方法利用层次表示来提高鲁棒性和准确性。我们的方法将卷积神经网络(CNN)与循环神经网络(RNN)相结合,以学习视觉数据的层次表示。我们在几个基准数据集上评估了我们的方法,并证明了与最先进的方法相比,性能有显著提高。我们的结果表明,所提出的方法可以学习视觉数据的鲁棒和精确表示,即使在存在显著遮挡和光照条件变化的情况下也是如此。我们还对学习到的表示进行了详细分析,并证明了它们在自主系统中各种任务中的适用性。这项工作对计算机视觉和机器人领域做出了重大贡献,并有可能使自主系统中的视觉感知更加鲁棒和精确。”
  • “标题:文本分类的深度学习方法:一项比较研究\n\n摘要:文本分类是自然语言处理(NLP)中的一项基本任务,在各个领域都有广泛应用。在本文中,我们提出了一种使用卷积神经网络(CNN)和循环神经网络(RNN)进行文本分类的深度学习方法。我们将我们提出的方法与几个基准数据集上的最先进方法进行了比较。我们的结果表明,我们的方法在准确率和 F1-分数方面优于现有方法。我们还分析了不同超参数对我们方法性能的影响,并深入探讨了特征提取在文本分类中的重要性。这项研究有助于开发使用深度学习技术的高效准确文本分类模型。\n\n关键词:文本分类、深度学习、卷积神经网络、循环神经网络、自然语言处理。”
  • “标题:探究注意力机制对情感分析深度学习模型的影响。\n\n摘要:本文探讨了将注意力机制引入情感分析深度学习模型的效果。我们提出了一种新颖的架构,结合了循环神经网络 (RNN) 和注意力机制的优势,以提高情感分析任务的性能。我们的实验结果表明,所提出的模型在准确性和 F1-分数方面优于最先进的模型。此外,我们进行了一项消融研究,以探究不同注意力机制对模型性能的影响。我们的研究结果表明,所提出的注意力机制在提高情感分析任务性能方面比其他注意力机制更有效。\n\n关键词:深度学习、注意力机制、情感分析、自然语言处理、神经网络。\n\n来源:Google Scholar。”
计算机视觉
  • “一种基于卷积神经网络的目标检测新方法\n\n摘要:目标检测是计算机视觉中的一项基本任务,其应用在各个领域都非常广泛。在本文中,我们提出了一种基于卷积神经网络(CNN)的目标检测新方法。我们的方法,称为基于 CNN 的目标检测(ODCNN),是基于区域提议网络(RPN)和 CNN 的组合。我们在 PASCAL VOC 2007 数据集上训练 ODCNN 模型,并在 PASCAL VOC 2012 数据集上评估其性能。结果表明,我们的方法在准确性和速度方面优于最先进的方法。我们还对 ODCNN 模型及其组件进行了详细分析。ODCNN 模型的代码可在 https://github.com/odcnn/odcnn.\n\nKeywords 获取:目标检测、卷积神经网络、区域提议网络、PASCAL VOC 2007、PASCAL VOC 2012。”
  • “一种用于自主机器人的基于深度学习和计算机视觉技术的新型物体识别框架\n\n摘要:本文提出了一种用于自主机器人的新型物体识别框架,该框架利用深度学习和计算机视觉技术的强大功能。所提出的框架由两个阶段组成:检测阶段和识别阶段。在检测阶段,使用卷积神经网络(CNN)来检测场景中的物体,而在识别阶段,则采用循环神经网络(RNN)来识别检测到的物体。所提出的框架在从机器人平台收集的图像数据集上进行了评估,结果表明它在准确性和速度方面优于最先进的方法。所提出的框架有可能用于各种应用,包括机器人技术、自动驾驶汽车和监控系统。\n\n关键词:物体识别、自主机器人、深度学习、计算机视觉、卷积神经网络、循环神经网络。”
  • “本文提出了一种使用卷积神经网络(CNN)进行图像分类的新方法。所提出的方法,被称为“深度图像分类器”,利用 CNN 的强大功能从图像中学习层次特征。在包括 CIFAR-10 和 ImageNet 在内的几个基准数据集上的实验结果表明,该方法在实现最先进性能方面是有效的。该方法的代码已在 GitHub 上提供,以便于重现和扩展结果。本文的贡献可总结如下:(1)提出了一种新的 CNN 架构,由多个卷积层和池化层组成,后面是全连接层;(2)提出了一种新的训练策略,包括数据增强和批归一化;(3)在几个基准数据集上评估了所提出的方法,并将其结果与最先进的方法进行了比较。本文的结果证明了 CNN 在图像分类任务中的潜力,并为该领域的未来研究提供了新的基准。”

点击此处查看更多。

用于 fancyzhx/ag_news 的合成数据

标签 示例
体育
  • “汉堡因劳斯伤病受阻 汉堡队前锋本杰明·劳斯将因脚部骨折并发症而缺阵长达四周,如果需要手术,可能更长时间,教练克劳斯·托普穆勒周三表示。”
  • “基恩对袭击指控不认罪(美联社)美联社——曼联队长罗伊·基恩周四对所有三项指控不认罪,这些指控涉及他与一名16岁男孩的所谓冲突。”
  • “NBA 比赛总结 - 圣安东尼奥对阵芝加哥 伊利诺伊州芝加哥(体育新闻网)- 托尼·帕克得到 17 分和 5 次助攻,带领圣安东尼奥队均衡进攻,在联合中心以 91-75 击败芝加哥公牛队。”
商业
  • “外汇:美联储加息后美元下跌 纽约(路透社)——周二,美联储如预期加息,但暗示通胀和通胀预期都在放缓,美元随后扩大跌幅。”
  • “Ameritrade公布11月客户交易量 Ameritrade控股公司(为个人投资者提供经纪服务)周五表示,11月日均客户交易量达到183,000笔,本月新增账户29,000个。”
  • “Firefox 浏览器使用量激增 在几个月内任何产品的市场份额突然出现可衡量下降都说明了一些问题,即使该产品的生产商仍占据该市场约 90% 的份额。”
世界
  • “各国领导人出席阿联酋总统葬礼 阿拉伯联合酋长国于周三任命谢赫·哈利法·本·扎耶德·阿勒纳哈扬为总统,数小时前,他的父亲的葬礼吸引了数千名悼念者和九位国家元首来到这个阿拉伯半岛的沙漠国家。”
  • “报告:烟草业隐瞒吸烟危害 纽约(路透社健康)——据一份医学期刊报告称,烟草业多年来声称其不知道吸烟有害健康的生物学证据,但事实并非如此。”
  • “挪威电信促泰国建立公平监管体系(FT.com)FT.com——挪威电信公司 Telenor 周四呼吁泰国移动行业建立“公平竞争环境”,敦促新成立的泰国电信监管机构迅速建立一个公平的新互联互通制度。”
科技
  • “微软在掌上电脑软件领域领先 微软已超越 Palm 系统,根据一份新报告,该公司在今年第三季度的全球销量超过 130 万台,而 Palm 的销量略高于 85 万台。<FONT face="verdana,MS Sans Serif,arial,helvetica" size="-2" color="#666666"><B>-《华盛顿邮报》</B></FONT>”
  • “Telstra 推出国际 Wi-fi 漫游 Telstra 已与五家国际无线宽带运营商合作推出 Wi-fi 漫游服务,让 Telstra 客户在国外旅行时可以使用英国 (BT Group)、美国 (T-Mobile USA)、日本 (NTT DoCoMo)、新加坡 (StarHub) 和马来西亚 (Maxis) 的 WiFi 热点。”
  • “密码无法保护企业(TechWeb)TechWeb——一家研究公司表示,作为保护企业资产的主要形式,密码是失败的。”

点击此处查看更多。

非英语语言的合成数据

kenhktsui/chinese_sentiment_syn

5. 基准测试

我们测试了多个数据集

  • stanfordnlp/imdb
  • zeroshot/twitter-financial-news-sentiment
  • ccdv/arxiv-classification
  • lmsys/toxic-chat
  • fancyzhx/ag_news

目标是观察合成数据是否与真实数据(标注)表现一样好。完整的训练数据集表示性能上限,因为有更多数据可用。合成数据的模型性能与真实数据持平/接近,这还不错,因为测试数据通常在设计上更接近训练(真实)数据而不是合成数据。我们还注意到,当类别高度不平衡时,例如毒性聊天问题,合成数据也具有优势。
我们的基准测试表明生成的合成数据接近测试数据的分布,这表明这种合成数据生成方法的有效性,而无需使用任何真实数据。
所有模型都在 sentence-transformers/paraphrase-mpnet-base-v2 (109M) 上进行微调。通过使用更大的基础模型和生成更多数据,可以提高性能。

数据集 指标 合成数据生成 标注 完整训练数据集 完整训练参考
stanfordnlp/imdb 准确率 0.878 0.908 0.928 lvwerra/distilbert-imdb
zeroshot/twitter-financial-news-sentiment f1(加权) 0.631 0.676 0.866 nickmuchi/finbert-tone-finetuned-fintwitter-classification
ccdv/arxiv-classification 准确度 0.618 0.566 0.805 论文
lmsys/toxic-chat, toxicchat0124 f1(二元) 0.362 0.00 0.822 lmsys/toxicchat-t5-large-v1.0
fancyzhx/ag_news 准确率 0.768 0.765 0.938 fabriceyhc/bert-base-uncased-ag_news

6. 用法

要生成用于分类的合成数据,您只需实例化 SyntheticDataGeneratorForSequenceClassification 类,然后指定您的分类器功能以及 generate 方法中标签的定义。生成的数据集是 huggingface 的 datasets.Dataset

from anyclassifier.schema import Label
from anyclassifier.synthetic_data_generation import SyntheticDataGeneratorForSequenceClassification

tree_constructor = SyntheticDataGeneratorForSequenceClassification()
dataset = tree_constructor.generate(
    "Classify a text's sentiment.",
    [
        Label(id=0, desc='negative sentiment'),
        Label(id=1, desc='positive sentiment')
    ]
)
dataset.push_to_hub('user_id/any_data')

每行的 meta 列记录了合成数据的生成方式。

{ 
  "source_type": "IMDB Movie Reviews",
  "subtopic": "Surprising Twist",
  "topic": "Engaging Plot"
}

如果您想对构建更大的数据集进行细粒度控制,可以指定关键字参数。您可以指定 n_record_to_generate,或者指定所有参数 n_source_typen_topicn_subtopicsample_per_subtopic。如果使用第一个参数,我们的实现旨在生成相应数量的记录,但由于 LLM 的不可预测性,结果可能不完全精确。如果使用后者,则结果记录数 = 标签数 * n_source_type * n_topic * n_subtopic * sample_per_subtopic。如果一个分类问题中有许多标签,生成合成数据可能需要一些时间。

7. 结论

我们相信 AnyClassifier 可以彻底改变您的 ML 工作流程。1)如果它能因合成数据生成而导致新数据集和更好模型的爆炸式增长——这将对 AI 社区有益;2)如果我们将它与代理流结合,其极限是什么?这些都将令人兴奋。

未来还有许多开放的研究和实现

  • 合成数据算法研究,以获得更高性能
  • 模型评估、错误分析和模型改进的代理工作流
  • 多语言支持

如果您感兴趣,请给个星,试用一下,并贡献代码。

致谢

没有这些开源模型和库,这个项目就不可能实现。

参考文献

  1. Chan, X., Wang, X., Yu, D., Mi, H., Yu, D.,2024 年。通过 1,000,000,000 个人物形象扩展合成数据创建。网址:https://arxiv.org/abs/2406.20094,arXiv:2406.20094。

引用

如果您对这项工作感兴趣,请引用

@software{Tsui_AnyClassifier_2024,
author = {Tsui, Ken},
month = {8},
title = {{AnyClassifier}},
url = {https://github.com/kenhktsui/anyclassifier},
year = {2024}
}

社区

注册登录以发表评论