从开发到产出:关于机器学习的七则干货建议
作者头像
  • 舒尚娥
  • 2021-02-04 05:04:05 3

在初创公司工作的主要目的之一是参与各种项目。尽管任务紧迫、团队规模较小,并且项目需求时常变化,我还是决定加入。不幸的是,我作为机器学习工程师接手的第一个项目并不容易。这是一个大型项目,由一个重要客户支持,因此需要承担重大责任,然而只有少数人组成的团队负责这个项目,其中包括我这名新手。

接手这个项目后,我需要处理十二个模型。这种挑战让我感到紧张。更糟糕的是,当团队中的一个成员被调到另一个项目时,他的工作负担也随之转移到了我的肩上。

尽管如此,我并非来诉苦的。尽管过程中充满曲折,但我也从中收获了许多意想不到的经验。

不断研究

我犯的最大错误之一是在项目初期只做了一次实验,然后就一直沿用这种方法,即使数据量不断增加。我认为这是当时最有效的方法,但作为一名机器学习工程师,除了构建系统外,还需要不断优化其性能。经过一个月的时间,我才真正意识到这一点。

我的上级领导曾说过,机器学习工程师不仅要具备软件开发能力,还要具备研究能力。研究不同于软件开发,即使系统已经构建完成并且没有任何bug,研究工作也不会停止。研究是一个持续不断的过程,只要保持开放的心态,总能找到新的探索方向。

别让模型学习时浪费时间

“模型正在运行,让我休息一下。”随着数据量的增加和方法的复杂化,完整的训练过程可能需要2到3小时。在此期间,我经常偷懒,现在回想起来非常后悔。多次遇到问题,比如程序在接近尾声时发生错误,得分下降,内存溢出以及其他在最后时刻才发现的低级错误。

在模型训练的过程中,有许多有意义的事情可以做。例如,提前规划工作步骤,当一个程序开始运行时,可以用不同的方法启动另一个程序。当一个程序运行完成后,可以评估前一个程序的结果,如果有改进的地方,可以立即修改并重新运行。此外,也可以利用这段时间与主管或其他工程师讨论新的方法和想法,避免浪费时间。

做明智的选择

有时候,不同的方法可能会产生微小的差异。即使一个方法略胜一筹,也不能因此认为它就是最好的选择。在做出决策时,需要考虑更多的因素。分析不仅仅从一个角度出发,而是一个持续不断的过程。

举个例子,有两个垃圾邮件分类模型,它们的F1值分别为0.95和0.96。第二个模型的精确度较低,但召回率较高,而第一个模型的精确度和召回率相对均衡。在这种情况下,第一个模型更为优秀,因为它能更好地处理垃圾邮件分类。第二个模型容易将正常文档误判为垃圾邮件,这会导致更多的非垃圾邮件被误判为垃圾邮件,这种情况是不可取的。

此外,还需考虑实际应用中的因素。如果资源和时间有限,选择一个简单的模型可能是更好的选择,前提是该模型仍能满足性能要求,并且与复杂模型相比没有显著差异。

不要混淆数据

数据对模型的影响至关重要。因此,在项目初期就需要精心准备详细的数据集,包括所需信息类型、注释指南、各数据类别间的平衡以及其它必要的事项。如果使用标注工具构建数据集,特别是对于自然语言处理(NLP)模型,需确保技术和语言学方面的知识同步。有时,语言学家可能不清楚某个标注方法是否适用于现有模型,同样,工程师也可能不了解语言学内容。

值得注意的是,并不是数据越多越好。如果数据无法真实反映情况,再多的训练也是徒劳。此外,数据标签的一致性也是一个大问题。

此外,每次实验时,训练、验证和测试数据的结构和比例必须一致,尤其是在数据量逐渐增加时。为了确保模型的性能,还需考虑案例类型的分布。如果有专门的测试数据就更好了,这有助于在添加更多训练数据后比较模型的性能。

连接各个步骤

构建端到端系统是机器学习工程师必备的一项重要技能。如果同时处理多个模型,使用管道(pipeline)会更加方便。加载数据集、预处理和特征提取、训练和评估模型,以及做出预测都可以简化为一个命令。

不要期望一次就能获得满意的结果。长时间重复做同样的事情确实会带来压力。因此,使机器学习工作流程自动化非常重要,这不仅可以节省时间,还能减轻压力。

使用其他框架和工具

我也会因为错误而苦恼。在将系统部署到生产环境时,我再次遇到了困难。因此,了解一些适合部署的实用框架和工具是非常重要的。可以对比自己接触过的框架和工具,然后根据需求选择最合适的。

对我来说,Docker在部署中扮演了重要角色,它帮助我在容器中部署多个模块。此外,TensorFlow Serving也非常有用,它可以方便地将训练好的模型用于预测请求。

让所有人都能理解

编写文档不仅是为了自己,也是为了他人。如果其他工程师想要继续实验或使用你的程序,你创建的文档可以帮助他们。如果文档还能让非专业人士也能轻松阅读和理解,那就更好了。

一份好的文档通常包括超参数配置、训练周期、方法、数据和分数等信息。此外,提供自动化脚本运行程序对其他工程师非常有帮助,这样他们就无需阅读整个代码。

当然,我还有很多需要学习的东西。但最重要的是,不必害怕失败。因为研究和实验本身就是尝试、失败、再尝试的过程。

    本文来源:图灵汇
责任编辑: : 舒尚娥
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
干货产出发到机器建议学习关于
    下一篇