在Quora论坛上研究编程语言的Tikhon Jelvis回答说:我发现,机器学习在很多方面都被高估了,无论是经验不足的人,还是更有害的,人们都对这一领域投入了大量的资金。
最普遍的看法是,机器学习比实际我们认为的更强大。机器学习只擅长于进行机器学习,而在其他领域的表现都很糟糕。但如果你听一些人的话之后,你会相信只要装入一个神经网络,你可以在任何问题上得到一个可靠的解决方案。
我主要把这类问题归咎于人们对机器学习领域缺乏经验以及错误认知之后产生的热度,但这也是那些对于较常人掌握机器学习更好的人大肆宣传的结果。Karpathy的最近像病毒般传播的软件2.0就是一个很好的例子:他提出了一些有趣的观点以给人留下深刻的印象,例如他说深度学习是电脑编程的未来。这篇文章从某种程度上忽略了一些利基市场(未来愿景、演讲、NLP、机器人技术)以外的问题,而我说到的这些问题不太适合采用深度学习这种方法。不仅仅是系统软件能处理的问题,大多数有经验的电脑工程师能通过写几百行代码甚至都要比机器学习更有效的得到业务逻辑领域的解决方案。
如果说垃圾收集和高级语言可以代表“软件2.0”的话,那深度学习甚至不能算是“软件3.0”。神经网络是“你的机器学习工具箱里的另一个工具”,但更重要的是,机器学习只是你的编程工具箱中的另一个工具!
它有它的真正的后果。我看到人们将大量资源投入到机器学习的系统中,从而得到更简单、更有效的解决方案。让我们来探讨关于商店里的商品需求预测问题。你可以试着把这个问题当作一个纯粹的机器学习系统来做,但是这个系统将会出现挣扎并最终失败,因为它需要从你的数据中提取出你需要的所有结构。有很多因素都很重要,但有些因素不会在你可以实际操作的数据中观察到。我们最好在实验上结合这样明确地分析一堆事情(基于价格和促销的弹性)并依赖于他人的经验(消费者时尚的变化)等进行模型设计并作出总结。
解决许多难题的理想系统必须是一种混合模式:基于数据的机器学习,一些明确的建模,以及能使专家和用户互动的模式。但有太多的人不会设计这样的问题,因为他们把机器学习看成是一种万能药,并看到构建一个只以得到数据为目标的黑匣子。
我对上面说到的这些可能出现的情况并不感到惊讶。无论在学术或工业领域,进行一项研究的公开秘密是,只有那些可以采用并正常工作的东西才能看到光明的未来。有多少个团队试图利用机器学习技术解决问题而最终失败了?如果你和活跃在该领域的研究人员聊天,你不会听到他们说到关于失败的案例。(举个例子:我知道有一群人尝试过在程序合成中对各种问题引入深度学习最终失败了,但这只是我通过小道消息听到的。)
但事实上,人们相对的高估了机器学习对产品的影响。现在很多消费产品都以机器学习技术为核心,例如我们可以想想Quora和Facebook的动态消息提示。由于机器学习是一种新兴的、技术含量高的技术,这些产品的成功必须归功于机器学习!
但问题是,我打赌机器学习对它们的影响是微乎其微的:大部分的效用都是由社会需求而设计的工具来支持的。真正重要的是,Quora有一个自主信息流,来让用户去关注特殊的人和话题。如果一个更加粗糙的算法(也许是一个基于启发性的规则引擎)能够拥有一个比Quora更好的消息流,我不会感到惊讶。我使用其他与Quora论坛类似的产品,但没有任何“机器学习”作为后台支持(比如Reddit)。事实上,我的Reddit首页在读取我关心的事情上这一栏要比Quora上做得更好!(Quora的其他设计,例如非机器学习的部分,都要比Reddit上的更适合我。)
有一件事我觉得很有必要探究的是有多少交易商店没有全心全意地接受机器学习。当然,也有一些人继续用相对直接的手动调优算法来获取不干净的金钱。同样的,在规则引擎中如果导入了专家编写的启发法,它得到的效果将出奇的好!有些策略是通过机器学习技术(也被称为“统计”)开发的,但也有一些是基于深度领域的专业知识而产生的。
我的观点不是机器学习对贸易毫无用处,而且它显然有可用之处。重点在于它并不是你所期望去使用的,甚至与你所期待的相反。
最终,我认为机器学习被高估是因为对于任何尝试在生产中采用机器学习系统的人来说,都会发现机器学习要比看上去的复杂得多。
你可能认为你可以很好的利用一些你已经听说过的机器学习算法,但在你使用的过程中,它可能不会像你从博客文章或文章中所看见的效果那样好。很多细节都没有写进论文,而且它们仅仅作为专业领域的专业知识存在。即使你考虑的问题和你的最开始工作出现的问题是一样的,你仍需要花很多时间来为你的问题配置个性化的算法。你需要调整超参数,找到合适的架构,以怪异的方式对数据进行预先处理,甚至可能需要重新整理你的问题。你不能把你的问题放在现有的算法上,所以你要么需要丰富的经验,要么需要大量的尝试和错误的数据作为参照。
机器学习是一套强大而实用的技术,它能够让我们解决以前很多无法处理的问题。例如,我正在开发的供应链优化系统将受益于在我们现有的经典操作研究基础之上添加的一些机器学习系统。
但正如人们所相信的那样,机器学习现在远没有像人们想象的那样普遍、强大或有影响力。如果我不得不进行猜测的话,我赌未来的技术值得被称为“软件3.0”,它是一种有程序合成支持的、交互式的开发工具。但这可能只是我一厢情愿的想法,而且还有很长的路要走。