一旦你为你的问题找到并调整了一个可行的模型,就该利用这个模型了。你可能需要重新审视你的初衷,并提醒自己你需要什么形式的解决方案来解决你正在处理的问题。
只有当你对结果采取了行动,问题才算得到解决。在这篇文章中,你将学习到以回答问题的形式呈现结果的策略,以及将原型模型转化为生产系统时需要考虑的因素。

结果的呈现
照片归属于 Phil Sexton,保留部分权利
根据你试图解决的问题类型,结果的呈现方式会大相径庭。要利用你的机器学习项目的成果,主要有两个方面:
- 报告结果
- 将系统投入运营
报告结果
一旦你发现了一个好的模型和一个足够好的结果(或者没有,视情况而定),你就需要总结所学到的东西并将其呈现给利益相关者。这可能是你自己、一个客户或者你工作的公司。
使用PPT模板并阐述下面列出的几个部分。你可能想写一个单页报告,并将每个部分作为章节标题。即使是你自己做的小型实验项目,比如教程和竞赛,也尽量遵循这个流程。一个项目很容易花费大量时间,你要确保捕捉到一路走来学到的所有重要东西。
以下是你在报告项目结果时可以完成的部分。
- 背景 (为什么):定义问题存在的环境,并为该研究问题设定动机。
- 问题 (问题):将问题简明扼要地描述为一个你着手去回答的问题。
- 解决方案 (答案):将解决方案简明扼要地描述为对上一节提出的问题的回答。要具体。
- 发现:用项目符号列表的形式列出你在此过程中所做的、能引起观众兴趣的发现。这些发现可能是在数据中找到的,哪些方法有效或无效,或者是在你的探索过程中实现的模型性能提升。
- 局限性:考虑模型在哪些地方不适用,或者模型无法回答哪些问题。不要回避这些问题,如果你能定义模型不擅长的地方,那么定义它擅长的地方会更可信。
- 结论 (为什么+问题+答案):将你的初衷、研究问题和你发现的答案重新梳理成一个精炼的小结,便于自己和他人记忆和复述。
你所呈现的听众类型将决定你讲解的详细程度。养成用结果报告来完成项目的习惯,即使是小型个人项目,也会加速你在这个领域的学习。对于这样的小型个人项目,我强烈建议在博客或社区中分享结果,并征求反馈,你可以将这些反馈吸收并带到下一个项目的开始阶段。
投入运营
你已经找到了一个足够好的模型来解决你面临的问题,并希望将其投入生产。这可能是在你的工作站上进行操作性安装(对于一个有趣的个人项目而言),也可能是一直将模型集成到现有的企业应用程序中。范围非常广。在本节中,你将学习到在将系统投入生产之前,应仔细考虑的三个运营模型的关键方面。
你应该仔细考虑的三个领域是算法实现、模型的自动化测试以及模型性能随时间的跟踪。这三个问题很可能会影响你选择的模型类型。
算法实现
你很可能一直在使用一个研究库来寻找性能最佳的方法。研究库中的算法实现可能非常出色,但它们也可能是为问题的一般情况编写的,而不是针对你正在处理的特定情况。
认真思考将这样的实现直接投入生产可能带来的依赖和技术债务。考虑找一个支持你希望使用的方法的生产级库。如果你在此时切换到生产级库,可能需要重复算法调优的过程。
你也可以考虑自己实现算法。这个选项可能会引入风险,具体取决于你选择的算法的复杂性及其使用的实现技巧。即使有开源代码,也可能存在许多复杂的操作,这些操作可能很难内化和自信地复现。
模型测试
编写自动化测试,验证模型可以被构建并能重复达到最低性能水平。同时也要为任何数据准备步骤编写测试。你可能希望控制算法使用的随机性(随机数种子)以进行每次单元测试运行,从而使测试100%可复现。
跟踪
增加基础设施来监控模型随时间的性能,并在准确率低于最低水平时发出警报。跟踪可以实时进行,也可以在独立环境中用实时数据样本在重建的模型上进行。警报的发出可能表明模型在数据中学到的结构已经改变(概念漂移),模型可能需要更新或调整。
有些模型类型可以进行在线学习并自我更新。在生产环境中允许模型自我更新时要仔细考虑。在某些情况下,管理模型更新过程,并在新模型被验证为性能更优时替换旧模型(其内部配置)会更明智。
总结
在这篇文章中,你学到了一个项目只有在交付了结果后才算完成。结果可以呈现给你自己或你的客户,并且在呈现结果时有一个最基本的结构需要遵循。
你还学到了在生产环境中使用一个训练好的模型时需要关注的三个问题,特别是算法实现的性质、模型测试和持续跟踪。
嗨,Jason,
你能分享一个关于呈现结果的PPT示例吗?
此致,
Praveen
也许将来会。
嗨 Jason,做得好,非常有见地。
谢谢
谢谢。
你能推荐一些地方,让我可以看到将机器学习流水线投入生产的案例研究吗?
我这里有一些笔记,也许可以作为开始提供一些帮助
https://machinelearning.org.cn/deploy-machine-learning-model-to-production/
我认为从原型过渡到生产就绪的机器学习系统是相当艰巨的。根据您的经验,像 sklearn 或 Keras 这样的工具是在生产系统中使用,还是只属于原型设计阶段?
它们可以被使用,这真的取决于生产环境。
机器学习方法的预测部分通常非常简单,以至于你可以保存“模型”(例如系数)并用你自己的代码加载它以在操作中使用。我自己就这么做过(例如,在Java中建立模型,将系数保存为ASCII文件,然后在大型计算机上的FORTRAN中加载并进行预测)。
我在这里写了更多关于这方面的内容
https://machinelearning.org.cn/deploy-machine-learning-model-to-production/
希望这能有所帮助。
太棒了。非常感谢!
请问您能分享一个您曾经做过的PPT演示文稿吗?
抱歉,我不能。我准备的所有演示文稿都是保密的。
你好,我们的兄弟Jason。感谢你思想开放并帮助像我这样的每一位开发者;但我仍然是机器学习的初学者,但正在用ML做我的研究论文,我该怎么办?特别是在本地语言的词嵌入神经网络方面。
也许可以从这里开始
https://machinelearning.org.cn/start-here/#nlp
嗨 Jason,你有什么想法关于如何使用已保存的模型而不去拟合模型吗?真的需要这方面的解释。谢谢你
抱歉,我没明白。
无论是否保存,模型在使用前都必须经过拟合才能进行预测。
我的意思是,拟合过程需要一些时间来运行算法。假设我已经拟合并保存了模型。然后我打开另一个页面加载已保存的模型并进行预测,跳过拟合部分。
我的问题是,即使模型已经被保存和加载,我仍然需要拟合部分吗?假设我想进入生产阶段,我是否还需要训练所有数据,这会花费很长时间?
抱歉提问,我真的很困惑。
不,模型只需要拟合一次。
嗨 Jason。你对如何进行实时预测有什么想法吗?
调用 model.predict()
如需更多帮助,请看这里
https://machinelearning.org.cn/make-predictions-scikit-learn/
嗨,Jason。
‘生产级模型’与我们用来评估模型或预测的模型有多大不同?例如,如果我使用sklearn库进行评估/建模,我如何知道它是否与生产级模型很好地匹配?您能否指点一下有哪些库可以用于生产级模型。谢谢!
抱歉,我不太明白您的问题,也许您可以详细说明一下。
我们使用相同的库和相同的流程来拟合一个用于生产的模型。也许这个会有所帮助
https://machinelearning.org.cn/train-final-machine-learning-model/
嗨,Jason,
机器学习模型的良好结果可以成为训练数据吗?我的意思是,当我得到结果后,我将用旧数据和新数据(即结果)重新训练模型。我试着在网上找这方面的信息,但找不到答案。
非常感谢!
诚挚的问候,
Praveen
抱歉,我不太明白您的问题,也许您可以详细说明或换一种方式表达?