机器学习项目如何管理:现状
Atlassian今年4月的一篇博客提出,到2020年有87%的Jira用户认为他们的工作会被AI改变。具体到项目管理上,Atlassian的观点是,AI首先会作为项目管理助手进入我们的视野,然后透过数据拓展我们对项目的理解,更进一步还能通过主动猜测、倡导优秀实践、创造新的元数据层等方式弥补数据的缺失,最终对项目提出有益的建议。
然而愿望是美好的现实是骨感的。还不要说在项目管理中使用机器学习,关于机器学习的项目应该怎么管理,业界似乎已经有很多不甚圆满的经历。例如一位创业者谈他们如何 用自然语言处理技术推动销售。看起来他们尝试了各种不同的数据源、多种特征工程的方法、以及多种算法,接下来还有很多想要尝试的东西。从这个故事中我们看不到的是,他们给自己设置的目标是什么、目前的进展是什么、基于什么原则在指导每一次的尝试。简而言之,这位创业者的机器学习项目并没有任何有效的管理。
另一个 同样缺乏管理的机器学习项目就没有那么幸运。年薪百万的数据科学家被认为“没有给公司带来实际价值。高管们不知道他们具体做了什么,业务人员每周都给他们提出预测需求,却很少能在短时间得到回应”。与前面一个故事相比,这里的数据科学家需要在别人的管理之下开展工作,管理方法的欠缺无疑是矛盾累积和激化的原因之一。针对这个故事,作者提出了五点非常抽象的建议:1.从最简单的模型开始;2.探索更多问题;3.用全部的数据和特征训练模型;4.业务驱动模型;5.专注于自动化。我认为这几点并不能引导这家公司的管理者更有效地管理他们的数据科学家。
这种缺乏管理方法的现象,一个重要的原因是典型的IT管理者对机器学习缺乏必要的了解(甚至更糟糕,有一些似是而非的半吊子的了解)。目前而论,咨询公司和商业/科技传媒在普及“必要的了解”方面并没有起到很好的作用。 麦肯锡2015年的文章说,关于机器学习,企业领导层需要了解的问题还是“传统行业能通过机器学习获得什么新的洞察”这种高层面的,提出的建议也是“机器学习要分描述、预测、处方三步走”这样的宏观建议。当然麦记的建议历来是面向CxO级别的,不落到项目管理层面也很正常。
HBR也在2015年讨论“ 每个管理者都需要了解的机器学习知识”,提出了一些很重要的点:不光需要大数据、还需要广泛的数据;机器学习只是做预测、不提供因果性;要区分信号与噪音(还提到了特征提取、规则化、交叉验证等具体技术);以及一些容易犯的错误(例如强行归因、不恰当的期望、迷信大数据量、对人的判断利用不足等)。但这篇文章的问题在于,它没有提供一套成型的工作方法。这些技术应该什么时候用,这些错误会在什么时候犯,文章没有提供出来,于是读者仍然被置于一个“等你该知道的时候你就知道了”的状态,很难对项目管理带来立竿见影的改变。
2014年的一篇博客着重谈机器学习项目的布置,包括应该有哪些目录、数据怎么管理、代码怎么组织等非常具体的实践。作者提出了项目流程的几个原则:透明;可维护;模块化;可迁移;可复制;效率。关于项目的可复制性,作者也从工程实践角度 提出了10条原则。在工程实践这个角度,这位作者给出的指导原则具有很好的可操作性。
但是在项目管理角度,行业仍在继续探索。今年7月InfoQ的一篇文章讨论 如何开发机器学习的MVP,作者总结了四个思考步骤:第一问题是否能转化成分类/回归的问题;第二目标是否是容易获取、客观无偏差的数据;第三是问题的预测目标,因果关系是什么;第四是这个问题是不是一个真的业务需求。这也是几个很重要的思考点,不足之处仍然是缺乏系统性,并且缺落地的方法指导。
有一篇博客提出了很有意义的问题: 机器学习项目为什么未实现敏捷开发?作者发现算法类项目流程漫长,并结合之前实践Scrum的经验,提出了一些可能可以优化的方面,尤其是在团队组织形式上,是否可以参考敏捷的全功能团队经验。作者并且提出了一个重要的问题:对算法模型的评估是否必须在线上进行?或者换个角度来问这个问题:如何降低线下模型评估的偏差程度?
敏捷软件开发之所以成为一种被广泛接受的软件开发方法论,不仅仅是因为它有高阶的思想支撑和指导原则,更重要的是它有一系列非常具体、非常可落地的实践。这些实践对于一线工作者的意义在于:(1)知道什么时候该做什么事;(2)知道什么时候该看什么指标;(3)知道什么时候可能有什么风险。机器学习类的项目要真正普及,也会需要这么一套具体可落地的实践指导。