谷歌做了45万次不同类型的文本分类后,总结出一个通用的“模型选择算法”

简介: 谷歌官方推出“文本分类”指南教程。为了最大限度地简化选择文本分类模型的过程,谷歌在进行大约450K的文本分类实验后,总结出一个通用的“模型选择算法”,并附上一个完整的流程图,非常实用。

【新智元导读】谷歌官方推出“文本分类”指南教程。为了最大限度地简化选择文本分类模型的过程,谷歌在进行大约450K的文本分类实验后,总结出一个通用的“模型选择算法”,并附上一个完整的流程图,非常实用。

文本分类(Text classification)算法是大规模处理文本数据的各种软件系统的核心。比如,电子邮件软件使用文本分类来确定受到的邮件是发送到收件箱还是过滤到垃圾邮件文件夹;讨论论坛使用文本分类来确定用户评论是否应该标记为不当。

下面是两个主题分类( topic classification)的例子,任务是将文本文档归类为预定义的一组主题。多数主题分类问题要基于文本中的关键字。

image


主题分类被用于标记收到的垃圾邮件,这些邮件被过滤到垃圾邮件文件夹中

另一种常见的文本分类是情感分析(sentiment analysis),其目的是识别文本内容的极性(polarity):它所表达的观点的类型。这可以采用二进制的“喜欢/不喜欢”来评级,或者使用更精细的一组选项,比如从1颗星星到5颗星星的评级。情感分析的例子包括分析Twitter上的帖子,以确定人们是否喜欢黑豹电影,或者从沃尔玛的评论中推断普通大众对耐克新品牌的看法。

这个指南将教你一些解决文本分类问题的关键的机器学习最佳实践。你将学习:
使用机器学习解决文本分类问题的高级、端到端工作流(workflow)
如何为文本分类问题选择合适的模型
如何使用TensorFlow实现你选择的模型

文本分类的workflow

以下是解决机器学习问题的workflow
步骤1:收集数据
步骤2:探索你的数据
步骤2.5:选择一个模型*
步骤3:准备数据
步骤4:构建、训练和评估你的模型
步骤5:调优超参数
步骤6:部署模型

image


解决机器学习问题的workflow

【注】 “选择模型”并不是传统机器学习workflow的正式步骤;但是,为你的问题选择合适的模型是一项关键的任务,它可以在接下来的步骤中明确并简化工作。

谷歌机器学习速成课程的《文本分类》指南详细解释了每个步骤,以及如何用文本数据实现这些步骤。由于篇幅限制,本文在涵盖重要的最佳实践和经验法则的基础上,重点介绍步骤2.5:如何根据数据集的统计结构选择正确的模型,并提供一个完整的流程图。
**
步骤1:收集数据**

收集数据是解决任何有监督的机器学习问题的最重要步骤。构成它的数据集有多好,你的文本分类器就有多好。

如果你没有想要解决的特定问题,只是对探索文本分类感兴趣,那么有大量可用的开源数据集。下面的GitHub repo就足以满足你的需求:
https://github.com/google/eng-edu/blob/master/ml/guides/text_classification/load_data.py

另一方面,如果你正在处理一个特定的问题,则需要收集必要的数据。许多组织提供用于访问其数据的公共API ——例如,Twitter API或NY Times API,你可以利用这些来找到想要的数据。

以下是收集数据时需要记住的一些重要事项:
如果你使用的是公共API,请在使用之前了解API的局限性。例如,一些API对查询速度设置了限制。
训练示例(在本指南的其余部分称为示例)越多越好。这将有助于模型更好地泛化。
确保每个类或主题的样本数量不会过度失衡。也就是说,每个类都应该有相当数量的样本。
确保示例充分覆盖了可能的输入空间,而不仅仅覆盖常见的情况。

在本指南中,我们将使用IMDb的电影评论数据集来说明这个workflow。这个数据集收集了人们在IMDb网站上发布的电影评论,以及相应的标签(“positive”或“negative”),表示评论者是否喜欢这部电影。这是情绪分析问题的一个典型例子。

**步骤2:探索你的数据
**
加载数据集
检查数据
收集关键指标

构建和训练模型只是工作流程的一部分。事先了解数据的特征能够帮助你构建更好的模型。这不仅仅意味着获得更高的准确度,也意味着需要较少的训练数据,或者更少的计算资源。
**
步骤2.5:选择一个模型**

到这一步,我们已经收集了数据集,并深入了解了数据的关键特性。接下来,根据我们在步骤2中收集的指标,我们应该考虑应该使用哪种分类模型。这意味着提出问题,例如“如何将文本数据呈现给期望输入数字的算法?”(这叫做数据预处理和矢量化),“我们应该使用什么类型的模型?”,“我们的模型应该使用什么配置参数?”,等等。

经过数十年的研究,我们已经能够访问大量的数据预处理和模型配置选项。然而,大量可供选择的可行方案大大增加了手头的特定问题的复杂性和范围。考虑到最好的选择可能并不明显,一个想当然的解决方案是尝试尽每一种可能的选择,通过直觉排除一些选择。但是,这样做成本是非常昂贵的。

在本指南中,我们试图最大限度地简化选择文本分类模型的过程。对于给定的数据集,我们的目标是找到在最小化训练所需的计算时间的同时,实现接近最大精度的算法。我们使用12个数据集针对不同类型的问题(尤其是情感分析和主题分类问题)进行了大量(~450K)实验,将不同的数据预处理技术和不同的模型架构交替用于每个数据集。这有助于我们找到影响最佳选择的数据集参数。

下面的模型选择算法(model selection algorithm)和流程图是我们的大量实验的总结。

image

数据准备和模型构建算法

  1. 计算样本的数量/每个样本中单词的数量这个比率。
  2. 如果这个比率小于1500,那么将文本标记为n-grams并使用简单的MLP模型进行分类(下面的流程图的左边分支):
  3. 将样本分解成word n-grams;把n-grams转换成向量。
  4. 给向量的重要性打分,然后根据分支选择前20K。
  5. 构建一个MLP模型。
  6. 如果比率大于1500,则将文本标记为序列,并使用sepCNN模型进行分类(流程图右边分支):
  7. 将样本分解成单词;根据频率选择前20K的单词。
  8. 将样本转换为单词序列向量。
  9. 如果原始样本数/每个样本的单词数这个比率小于15K,则使用微调的预训练sepCNN模型,可能得到最优的结果。
  10. 用不同的超参数值来测量模型的性能,以找到数据集的最佳模型配置。

在下面的流程图中,黄色框表示数据和模型准备过程。灰色框和绿色框表示我们为每个流程考虑的选项。绿色框表示我们对每个流程的推荐选项。

你可以用这个流程图作为你的第一个实验的起点,因为它可以让你在低计算成本下获得良好的准确度。你可以在后面的迭代中继续改进初始模型。

image

文本分类流程图(点击可放大查看)

此流程图回答了两个关键问题:
我们应该使用哪种学习算法或模型?
我们应该如何准备数据,才能有效地学习文本和标签之间的关系?

第二个问题的答案取决于第一个问题的答案;我们预处理数据的方式将取决于我们选择的模型。模型可以大致分为两类:使用单词排序信息的模型(序列模型),以及仅将文本视为单词的“bags”(sets)的模型(n-gram模型)。

序列模型包括卷积神经网络(CNN),递归神经网络(RNN)及其变体。 n-gram模型包括逻辑回归,简单多层感知机(MLP或全连接神经网络),梯度提升树( gradient boosted trees)和支持向量机(SVM)。

在实验中,我们观察到“样本数”(S)与“每个样本的单词数”(W)的比率与模型的性能具有相关性。

当该比率的值很小(<1500)时,以n-gram作为输入的小型多层感知机(选项A)表现得更好,或者说至少与序列模型一样好。 MLP易于定义和理解,而且比序列模型花费的计算时间更少。

当此比率的值很大(> = 1500)时,我们就使用序列模型(选项B)。在接下来的步骤中,你可以根据这个比率值的大小,直接阅读所选模型的相关章节。

对于我们的IMDb评论数据集,样本数/每个样本的单词数的比值在144以下。这意味着我们将创建一个MLP模型。

步骤3:准备数据
N-gram向量[选项A]
序列向量[选项B]
标签的向量化

步骤4:构建,训练和评估模型
构建最后一层
构建n-gram模型[选项A]
构建序列模型[选项B]
训练模型

步骤5:调优超参数

步骤6:部署模型
**
结论**

文本分类是机器学习中的基本问题,在各种产品应用中均有涉及。在本指南中,我们将文本分类的workflow分解为几个步骤。对于每个步骤,我们都根据特定数据集的特征,建议自定义的实现方法。尤其是,我们根据样本数量与每个样本中的单词数量的比值,来建议你使用哪一种模型,从而能够更快地让模型接近最佳性能。其他的步骤都是基于模型选择这个步骤的。遵循这个指南中的建议,参考附录中的代码和流程图将有助于你的学习和理解,并快速获取文本分类问题的解决方案。

《文本分类》指南地址:
https://developers.google.com/machine-learning/guides/text-classification/

原文发布时间为:2018-07-25
本文来自云栖社区合作伙伴“新智元”,了解相关信息可以关注“新智元”。

相关文章
|
1月前
|
机器学习/深度学习 人工智能 JSON
微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型
Microsoft Research最新推出的rStar2-Agent在AIME24数学基准测试中以80.6%的准确率超越超大规模模型DeepSeek-R1,展现“思考更聪明”而非“更长”的AI推理新方向。
110 8
微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型
|
19天前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
19天前
|
机器学习/深度学习 资源调度 算法
遗传算法模型深度解析与实战应用
摘要 遗传算法(GA)作为一种受生物进化启发的优化算法,在复杂问题求解中展现出独特优势。本文系统介绍了GA的核心理论、实现细节和应用经验。算法通过模拟自然选择机制,利用选择、交叉、变异三大操作在解空间中进行全局搜索。与梯度下降等传统方法相比,GA不依赖目标函数的连续性或可微性,特别适合处理离散优化、多目标优化等复杂问题。文中详细阐述了染色体编码、适应度函数设计、遗传操作实现等关键技术,并提供了Python代码实现示例。实践表明,GA的成功应用关键在于平衡探索与开发,通过精心调参维持种群多样性同时确保收敛效率
|
19天前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
19天前
|
机器学习/深度学习 运维 算法
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
|
2月前
|
传感器 算法 定位技术
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
|
19天前
|
机器学习/深度学习 存储 算法
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习模型、算法与应用的全方位解析
深度学习,作为人工智能(AI)的一个重要分支,已经在多个领域产生了革命性的影响。从图像识别到自然语言处理,从语音识别到自动驾驶,深度学习无处不在。本篇博客将深入探讨深度学习的模型、算法及其在各个领域的应用。
484 3
|
4月前
|
算法
基于RMD算法模型的信号传输统计特性的matlab模拟仿真
本项目基于RMD(Random Midpoint Displacement)算法模型,使用MATLAB 2022A进行信号传输统计特性的模拟仿真。通过递归在区间中点加入随机位移,生成具有自相似性和长相关性的随机信号,实现了文中多个仿真图,并提供操作视频与中文注释代码。RMD模型生成的信号均值为零,方差无穷大,具备低误码率、强抗干扰能力及高传输效率等优势,为现代通信系统提供了新思路。
|
5月前
|
人工智能 自然语言处理 算法
算法及模型合规:刻不容缓的企业行动指南
随着AI技术迅猛发展,算法与模型成为企业数字化转型的核心。然而,国家密集出台多项法规,如《人工智能生成合成内容标识办法》等,并开展“清朗·整治AI技术滥用”专项行动,标志着AI监管进入严格阶段。算法备案从“可选项”变为“必选项”,未合规可能面临罚款甚至刑事责任。同时,多地提供备案奖励政策,合规既是规避风险的需要,也是把握政策红利和市场信任的机遇。企业需系统规划合规工作,从被动应对转向主动引领,以适应AI时代的挑战与机遇。

热门文章

最新文章