你是否成功设计、训练并测试过一个机器学习应用(MLA)?尽管经过了实验室的验证,但其表现却未达到预期,甚至在实际应用中遭遇失败?如果是这种情况,不妨继续阅读本文,我将详细介绍我们团队曾遇到的一些常见陷阱及如何避免这些陷阱的最佳实践。
降低机器学习应用的设计、开发和部署成本,是DataOps、DevOps、MLOps等众多操作方法论的一部分。我们主张应循序渐进,逐步掌握机器学习应用生命周期的各个环节。本文主要聚焦于机器学习应用设计阶段遇到的陷阱及其解决方案。
项目管理可以被视为一系列步骤或循环。按特定顺序执行的任务,例如设计、开发、测试和部署,是典型的瀑布式项目管理方法。然而,我们建议采用迭代和异步的方式完成任务,以提高效率。
作为一家咨询公司,我们经常在客户不需要机器学习解决方案的情况下,仍将其引入。这主要是因为在2016年及更早的时候,许多客户只是希望声称自己在使用机器学习,而实际上并没有真正的需求或准备。
在2017年之前,我们曾遇到过没有发现数据或明确问题的情况。因此,这两个陷阱需要首先解决。
选择那些愿意明确业务需求并支持你定义合适机器学习解决方案的合作伙伴。
第一个项目应注重功能扩展而非优化现有系统。避免将机器学习应用于现有的遗留系统,这需要谨慎规划。
识别关键绩效指标(KPI),并了解哪些方面对利益相关者最为重要。这有助于找到最需要改进的领域。
确定业务用例后,应专注于开发一个机器学习应用。只有在第一个应用取得成功后,才考虑扩展到其他应用。
在第一个应用成功部署后,可以进一步扩大投资,启动更多项目。但需注意,不要因为实验室中的良好表现而忽视潜在的风险。
构建单一的应用程序会导致瀑布式开发过程,其中各部分高度耦合。
将机器学习应用设计为组件化的管道或微服务。每个组件应具有明确的输入和输出,且彼此独立。
设计阶段应包括功能性和非功能性需求的确定,这些需求将指导应用的架构设计,并影响生产策略。
利用软件开发的经验教训,特别是在处理随机性的机器学习项目中。大部分传统软件工程的方法和最佳实践同样适用于机器学习项目。
很多项目因前期研究不足而不得不重新开始。一开始,可以尝试搜索GitHub或其他资源,找到已有的代码或论文,从而节省时间和精力。
对于小规模项目,现成的解决方案可能已经足够。但在竞争激烈的市场中,可能需要定制功能或多个模型组合。
自然语言处理应用近年来有了显著变化,使用Transformer架构可以显著提升性能。例如,BERT模型因其强大的预训练能力和大规模参数量而优于传统的GLOVE模型。
即使项目进展顺利,也会出现各种小问题。提供定期的状态更新报告,有助于消除误解。
确保准确理解业务需求,否则可能需要重新评估并可能重新开始项目。
如果业务需求发生变化或优先级调整,你可能需要重新评估需求并提供替代方案。
为客户提供必要的培训和支持,帮助他们更好地理解和使用机器学习技术。
对于缺乏机器学习部署环境的情况,建议使用云服务。例如,Google Cloud Platform、AWS和Microsoft Azure都是不错的选择。
推荐使用Google Cloud Platform进行机器学习模型的部署。GCP提供的Colab服务是一个很好的免费选项。
机器学习领域发展迅速,需及时跟进最新的研究成果和技术进展,确保解决方案始终有效。
本文旨在帮助读者了解在机器学习应用设计阶段可能遇到的问题,并提供相应的解决方案。无论是作为外部顾问还是内部团队成员,这些陷阱和最佳实践都将有助于你成功地设计和实施机器学习应用。随着机器学习的普及,我们预计未来会有更多成功的案例出现。