原文:
www.kdnuggets.com/2022/07/best-practices-creating-domainspecific-ai-models.html
图片由Andrea De Santis提供,Unsplash
大规模通用 AI 实施作为解决某些 B2B 问题的优秀基础构件,大多数组织已经或正在利用这些模型。然而,对即时投资回报的渴望、创建快速失败的原型以及提供以决策为中心的成果,推动了领域特定 AI 项目的需求。
用例和主题专业知识有帮助,但数据科学家和分析师需要调整 AI 实施周期,以解决需要更多具体性和相关性的问题。构建这样的 AI 模型时遇到的最大障碍是找到高质量的领域特定数据。以下是一些领域特定模型适配的最佳实践和技术,这些方法在我们身上一次次取得了成功。
首先挖掘你的组织,发现尽可能多的相关领域特定数据资产。如果这是一个直接涉及你的业务和行业的问题,你很可能拥有可以利用的未开发的数据资产。如果发现数据资产不足,不必灰心。有多种策略和方法可以帮助创建或增强特定数据集,包括主动学习、迁移学习、自我训练以改善预训练和数据增强。以下是一些详细信息。
主动学习是一种半监督学习方法,通过查询策略选择特定实例进行学习。使用领域专家和人工环节机制对这些选择的实例进行标注,有助于在更快的时间内将过程优化为有意义的结果。此外,主动学习需要较少的标注数据,从而降低了人工标注成本,同时仍能实现更高的准确性。
这里有一些建议,帮助在数据有限的情况下实现主动学习:
-
首先,将数据集分为种子数据和未标记数据。
-
标记种子数据,并用它来训练学习模型。
-
根据查询功能,从未标注的数据中选择实例进行人工标注(最关键的步骤)。查询策略可以基于不确定性采样(如最小置信度、边缘采样或熵)、委员会查询(如投票熵、平均 Kullback-Leibler 散度)等。
-
将新标注的数据添加到种子数据集中,并重新训练学习模型。
-
重复前两步,直到达到停止标准,例如查询实例的数量、迭代次数或性能改进。
这种方法利用源领域的知识在目标领域学习新知识。这个概念存在已经有一段时间了,但在过去几年中,当人们谈论迁移学习时,往往谈论神经网络,可能是因为那里有成功的实施案例。
以 ImageNet 为例,以下是一些经验教训:
-
使用预训练网络作为特征提取器。确定导出哪些层的特征取决于你的数据与基础训练数据集的相似程度。差异将决定你的策略,如下文所述。
-
如果领域不同,只使用神经网络的低级特征。这些特征可以导出,并作为分类器的输入。
-
如果领域相似,移除神经网络的最后一层,使用剩余的完整网络作为特征提取器。或者将最后一层替换为一个新的层,该层与目标数据集的类别数匹配。
-
尝试解冻基础网络的最后几层,并以较低的学习率(例如 1e-5)进行微调。目标领域和源领域越接近,需要微调的层数就越少。
自训练以改进预训练(Jingfei Du 等,2020)
这种组合提供了一种方法,能够最大限度地利用来自下游任务的有限标记数据。同时,它也有助于充分利用大量易获得的未标记数据。其工作原理如下。
-
对预训练模型(例如 RoBERTa-Large)进行微调,以适应目标下游任务的标记数据,并将微调后的模型用作教师。
-
使用查询嵌入从未标记的数据集中提取任务特定数据,并从数据集中选择最近邻。
-
使用教师模型对在第 2 点中检索的领域内数据进行标注,并从每个类别中选择得分最高的前 k 个样本。
-
使用第 3 步中生成的伪数据对新的 RoBERTa-Large 进行微调,并提供学生模型。
数据增强包括一系列低成本、高效的技术,从现有数据中生成新数据点。上一节自训练中的第 2 点也涉及数据增强,这对整个过程至关重要。
其他 NLP 应用的技术包括回译、同义词替换、随机插入/交换/删除等。对于计算机视觉,主要的方法包括裁剪、翻转、缩放、旋转、噪声注入、调整亮度/对比度/饱和度以及 GAN(生成对抗网络)。
确定使用哪种方法取决于你的用例、初始数据集质量、现有领域专家和可用的投资。
你会发现需要继续优化你的领域特定 AI。以下是我们从定制实现以满足特定用例中的经验中学到的一些经验教训。
-
在开始你的概念验证(POC)之前,进行适当的数据探索,以检查数据的质量和数量问题。了解数据是否符合实际应用场景(例如下游任务,如命名实体识别(NER)、关系抽取、问答等),其变化和分布,以及其准确性水平。对于分类问题的变化和分布——分类结构、每一层的类别数量、每个类别的数据量、平衡与不平衡等——所有这些都很重要。你发现的内容将影响你的数据处理方法和选择以改进领域特定模型性能的方法论。
-
根据你的用例和数据特征选择适当的算法/模型。还要考虑速度、准确性和部署等因素。这些因素的平衡很重要,因为它们决定了你的开发是否可能停留在 POC 阶段或有实际应用和产品化的潜力。
例如,如果你的模型最终会部署到边缘设备上,虽然大模型可能具有更高的预测准确性,但不应选择它们。鉴于边缘设备的计算能力,运行这样的模型并不现实。
从一个强大的基线模型开始每一个开发/领域适应。考虑使用 AutoML 快速检查算法在领域特定数据集上的适用性,然后根据观察结果进行优化。
-
数据预处理是任何 NLP 项目的关键部分。由于领域特定的要求以及选择的特征化方法和模型,所采取的步骤应根据具体情况确定。通用的流程可能无法提供最佳结果。
例如,某些步骤如去除停用词/标点符号和词形还原,可能并不总是对深度学习模型必要。它们可能会导致上下文的丧失;然而,如果你使用的是 TF-IDF 和机器学习模型,它们可能会很有用。将流程模块化,以便在定制以满足用例需求时可以重用一些常见步骤。
-
如果有可用的领域特定预训练语言模型,请利用它们。一些知名模型包括 SciBERT、BioBERT、ClinicalBERT、PatentBERT 和 FinBERT。这些领域特定的预训练模型可以帮助实现更好的表示和上下文化的嵌入。如果这些模型在你的领域不可用,但你有足够的计算资源,可以考虑使用领域内高质量的未标注数据训练你自己的预训练模型。
-
考虑整合领域特定的词汇和规则。在某些情况下,它们可以提供更高效和更准确的结果,并避免模型迭代问题。创建这些词汇和定义规则可能需要相当大的努力和领域专业知识,这些都需要平衡。
将 AI 定向满足领域特定需求和挑战需要在整个过程中保持严谨,不仅在方法和资源方面。好消息是,公司对解决特定挑战并解决这些挑战的解决方案越来越感兴趣,这反过来为数据科学家和 AI 开发人员提供了最佳实践,以期为他们的应用提供更快的投资回报。
Cathy Feng 领导着 Evalueserve 的 AI 实践,指导公司进入数据分析的下一个时代。她对教育人们了解 AI 及其业务应用充满热情,她的努力促成了为麦当劳、英特尔和先正达等公司创建特定领域的 AI 应用程序。