实验有助于提高项目的可行性。它们是可测试且可重现的假设。运行实验的目标是通过评估各种模型架构和特征,不断进行渐进式改进。进行实验时,您需要执行以下操作:
确定基准效果。首先,建立基准指标。基准值可用作衡量标准,用于与实验进行比较。
在某些情况下,当前的非机器学习解决方案可以提供第一个基准指标。如果目前没有任何解决方案,请创建一个具有简单架构和少量特征的机器学习模型,并将其指标用作基准。
进行单次小幅更改。每次只进行一项小更改,例如对超参数、架构或特征进行更改。如果更改有助于改进模型,该模型的指标将成为未来实验的对照基准。
以下是进行单次小更改的实验示例:
- 包含功能 X。
- 对第一个隐藏层使用 0.5 的 dropout 值。
- 对特征 Y 进行对数转换。
- 将学习速率更改为 0.001。
记录实验进度。您很可能需要进行大量实验。与基准相比,预测质量较差(或中性)的实验仍有价值可循。它们会表明哪些方法行不通。由于进度通常是非线性的,因此除了展示您在提高基准质量方面的进展之外,还应突出显示您发现的所有行不通的方法,以表明您正在努力解决问题。
由于对真实数据集进行的每次完整训练都可能需要数小时(或数天),因此不妨考虑同时运行多个独立实验,以便快速探索搜索空间。随着您不断迭代,希望能越来越接近生产所需的质量水平。
实验结果中的噪声
请注意,实验结果中可能会出现噪声,而这些噪声并非源自模型或数据的更改,这会导致您难以确定所做的更改是否确实改进了模型。以下是可能会在实验结果中产生噪声的示例:
数据洗牌:向模型呈现数据的顺序可能会影响模型的性能。
变量初始化:模型变量的初始化方式也会影响其性能。
异步并行:如果模型是使用异步并行训练的,则模型不同部分的更新顺序也可能会影响其性能。
评估集较小:如果评估集太小,可能无法代表模型的整体性能,从而导致模型质量出现不均匀的变化。
多次运行实验有助于确认实验结果。
统一实验做法
您的团队应明确了解“实验”的确切含义,并制定一套明确的做法和工件。您需要提供一份文档,其中概述了以下内容:
工件。实验的工件是什么?在大多数情况下,实验是指可重现的经过测试的假设,通常通过记录元数据(例如特征和超参数)来指明实验之间的变化及其对模型质量的影响。
编码做法。每个人都会使用自己的实验环境吗?将所有人的成果整合到共享库中有多大可能性(或有多容易)?
可重复性和跟踪。可重复性标准是什么?例如,团队是否应使用相同的数据流水线和版本控制做法,还是只显示图表即可?实验数据将以何种方式保存:作为 SQL 查询还是作为模型快照?每个实验的日志将记录在何处:文档、电子表格还是用于管理实验的 CMS?
错误的预测
没有完美的真实世界模型。您的系统将如何处理错误的预测结果? 请尽早考虑如何应对这些问题。
最佳实践策略鼓励用户正确标记错误的预测结果。例如,电子邮件应用会通过记录用户移至垃圾邮件文件夹的电子邮件以及相反的情况来捕获分类错误的电子邮件。通过从用户获取标准答案标签,您可以设计自动反馈环,以便收集数据和重新训练模型。
请注意,虽然嵌入界面的调查会收集用户反馈,但这些数据通常是定性数据,无法纳入重新训练数据中。
实现端到端解决方案
在团队对模型进行实验时,最好开始构建最终流水线的部分内容(如果有资源)。
建立流水线的不同部分(例如数据提取和模型重新训练)有助于更轻松地将最终模型移至生产环境。例如,获取用于提取数据和提供预测结果的端到端流水线有助于团队开始将模型集成到产品中,并开始进行早期用户测试。
排查项目卡住问题
在某些情况下,项目的进度可能会停滞不前。也许您的团队一直在进行一项有前景的实验,但数周以来一直未能成功改进模型。您应该怎么做?以下是一些可能的方法:
战略。您可能需要重新定义问题。在实验阶段花费一些时间后,您可能更了解问题、数据和可能的解决方案。通过对该领域的更深入了解,您或许可以更精确地界定问题。
例如,您最初可能希望使用线性回归来预测数值。很遗憾,这些数据不足以训练出可行的线性回归模型。进一步分析后,您可能会发现可以通过预测示例是否高于或低于特定值来解决此问题。这样,您就可以将问题重新定义为二元分类问题。
如果进度比预期慢,请不要放弃。随着时间的推移逐步改进可能是解决此问题的唯一方法。如前所述,不要期望每周的进度相同。通常,获得可用于生产环境的模型版本需要花费大量时间。模型改进可能不规律且不可预测。进展缓慢的时期可能会出现进步突增,反之亦然。
技术。花时间诊断和分析错误的预测结果。在某些情况下,您可以通过隔离一些错误的预测并诊断这些实例中的模型行为来发现问题。例如,您可能会发现架构或数据存在问题。在其他情况下,获取更多数据可能会有所帮助。您可能会获得更清晰的信号,表明您走在正确的道路上,但也可能会产生更多噪声,表明该方法存在其他问题。
如果您要解决的问题需要人工标记的数据集,那么获得用于模型评估的标记数据集可能很难。查找资源,获取评估所需的数据集。
也许无法找到解决方案。为您的方法设置时间限制,如果您未在规定时间内取得进展,则停止。不过,如果您有清晰的问题陈述,那么就可能需要解决方案。