原帖地址:

第一次翻译,而且人工智能也不是我的专业方向,对专业词汇有什么翻译的不到位的地方,欢迎指正。

优秀的机器学习产品来自有丰富经验和渊博知识的开发小组。

机器学习(Machine learning),搭着“大数据(big data)”的顺风车,正成为风靡一时的话题。同其他被炒作的技术方向一样,宣传的热度远远超过实际实现的产品。可以说,自从上世纪90年代至千禧年间谷歌的革命性创新之后,再没有哪一项算法技术的创新能催生出一个可以如此深刻影响大众文化的产品了。并不是说那之后机器学习就没有任何成就,只是没有哪个能有如此深远的影响力,也没有哪个是真正算法级的改进。
Netflix也许在使用推荐技术,但是用与不用,Netflix还是Netflix,并不影响什么。然而,如果没有Page和Brin等人发明利用网络的图形结构和链接文字(anchor text)提高搜索效率的算法,就没有今天的谷歌。

那么,为什么会这样呢?
缺乏尝试?不是的。回想一下,有多少创业者志在将自然语言处理应用于大众却在产品真正推出后逐渐被遗忘?
构建优秀的机器学习产品的挑战性不仅仅在于对基础理论的理解,更需要的是对这个领域和课题有足够了解,这样才能根据想法设计出可操作的模型。好的课题不会有现成的解决方案。机器学习的主要应用领域(例如自然语言处理 NLP)的发展主要源于对这些课题的独到见解而不是泛泛的机器学习理论。一般来说,对一个课题的独到见解加上细致的模型设计就决定了一个产品/系统的成败。

本文的目的并不是为了吓退开发者,对开发以机器学习为核心的美妙产品敬而远之,而是要明确其困难所在。

机器学习的发展

在过去的十年了,机器学习经历了一个漫长的发展过程。
在我开始读研之前,对诸如支持向量机()一类的大型边缘分类器(large-margin classifier)的训练都还是利用John Platt的序列最小优化算法()来完成。那时,训练时间与训练数据量几乎不成比例,编写算法本身不但要具有二次规划(quadratic programming)的相关背景还要添加各种启发训练以选择主动约束以及令人费解的参数调整。
现在,(相对)简单的同步算法(simple online algorithm [])可以在线性时间内完成对性能相当的大型边缘分类器的训练。(基于概率的)图形模型也取得了类似的进展:马氏蒙特卡洛方法()和变分法()极大地便利了对任意复杂度的图形模型的推断 [注1]。
说句题外话,如果你看过这8年来计算机语言学协会()期刊上发表的论文,你会发现2011年的顶级论文比2003年的技术难度提升了无数倍。

在教育前沿,我们同样经历了很大的变更。
21世纪00年代,当时我还是斯坦福的本科生,我选修了和,那是我在斯坦福选修过的最好的两门课,尤其是Koller的,我从中还学到了很多教学的方法。在那个年代,那两门课每年只能容纳100名左右的学生,而现在,任何人都可以从网上课堂选修这些课程。

作为机器学习(尤其是自然语言处理方面)的应用者,这些发展极大地便利了科研的各个方面。然而,最核心的决策并不是我该选择哪个抽象机器学习算法,哪个损失函数,或者哪个学习目标,而是哪些功能哪些结构可以解决我的问题。而这一技能只能来源于实践的积累。因此,越来越多的人了解认识机器学习这一领域固然很好,但这并不能解决开发构建智能系统的关键难点。

好的课题没有现成的解决方案

一个让你感兴趣并且真的想动手去做的课题的建模过程要远远复杂于抽象化那些经典的机器学习命题。
举个例子:机器翻译()。
乍一看去,机器翻译类似于统计的分类问题()——根据输入的非英语的短句预测出其对应的英文短句。问题是,英语的各种可能组合太多了,很难简单的把机器翻译看待为黑盒分类问题(black-box classification problem)。跟其他机器学习的应用类似,机器翻译有大量的结构,而优秀的研究者的部分工作就是分解问题,把复杂问题分解成可定性学习和编码的小问题。我认为,对于这一类的复杂命题,其下一步的发展主要在于如何分解和结构化这些问题的解空间,而不是所需的机器学习技术。

在过去的十年里,机器翻译取得了飞跃性进步。我觉得这些进步很大程度上(当然,不完全)取决于针对这一课题的深刻理解,而不是机器学习领域的普遍发展。
当代的统计机器翻译起源于一篇很牛的论文——《统计机器翻译中的数学》[],这篇文章提出的容噪架构()将成为未来机器翻译系统的基础。
简单来说,这个模型的工作原理是这样的 [注2]:你可以把它理解为一个基于概率的词典。每个非英语的单词对应几个候选的英语短语,包括那些没有英语对应词汇的无意义空字,这些候选短语重新排序生成一个貌似合理的英语翻译。这里忽略了很多错综复杂的细节,比如如何有效的从各种排列组合中得出候选的英语翻译,比如选用哪个学习模型能系统地根据不同语言对短语进行重组,比如如何评定各候选英语翻译的合理性(见语言模型 )。

机器翻译最重要的改进就是对这个模型的改进。
现在的机器翻译不再纠结于学习单个单词的翻译概率,转而研究将非英文短语翻译为英文短语的模型。例如,德语单词“abends”被意译为英文的介词短语“in the evening”。
在采用短语翻译(phrase-based translation [])前,逐字翻译的模型只能将其翻译为一个英文单词,很难达到正确的英文翻译 [注3]。而短语翻译通常能更准确的翻译出流利的惯用的英文释义。当然,增加短语释义在一定程度上增加了复杂度,包括对于没遇到过的短语片段如何估计短语结果——谁也不知道“in the evening”能对应其他语言中的哪个短语。最出乎意料的是,并不是机器学习领域的发展促成了这些改进,恰恰是这种针对特定问题的模型设计造就了这些进步。在机器翻译系统中的很多地方,人们可以并且已经使用了更精妙的机器学习技术,而这些也确实实现了一些改善,但远不及一个良好的针对特定问题的研究结果产生的影响。

短语翻译相关论文的原作者之一,,后来受聘于谷歌并成为这个搜索公司翻译部门的核心人物。尽管谷歌的体系知识基础可回溯到Och还是信息科学院()的一名科研人员的时候(甚至更早,当他还是一名研究生的时候),除了短语翻译的发现(以及最小错误率训练,Och的另一创新),Och更多的贡献在于将这些想法应用于互联网而进行的大量软件工作,这些软件工作将重要的科研发现引入大规模语言模型以及自然语言处理的其他方面。值得一提的是,Och不仅是一位世界一流的科学家,更是一位杰出的黑客和开发者。正是他的这种难得的专业技能组合使得这些创意能够从实验室的一个项目演变为今天。

问题的阐述

我觉得还有一个比精巧的模型设计和软件开发技术更大的障碍,那就是如何诠释我们要解决的问题。
以机器翻译和语音识别为例,我们能很直观且清晰地阐述我们在做的课题。然而,很多可能为下一个十年带来革命性产品的自然语言处理的新技术却都前途模糊。我们应如何,确切地说,能否将优秀的科研创新(如结构化的主题模型 structured ,话语处理 ,主观态度分析 等等)转化为一个大众化的产品呢?

比如自动化摘要()。
我们都希望在某种程度上可以对内容进行总结和结构化。然而,出于计算和科研的原因,你需要对问题的范围进行某些限定从而能够建模、设计算法并最终对其进行评估。
例如,在摘要法的著作中,多文档摘要(multi-document summarization)这一问题通常被定义为从文档中选取小部分语句并对其进行排序。这真的就是我们要解决的问题么?从一篇文字中提取少量整句就是最好的摘要法么?即使这样的摘要是精确的,这种生拼硬凑的句子结构会不会让用户仿佛面对一个科学怪人(弗兰克斯坦)呢?

再比如主观态度分析。
人们会满足于用一个粗略的“赞”或“踩”去评价一个东西或一件事么?他们会不会需要更丰富的情绪表达方式,需要针对一个东西的某些细节进行评价呢(如,喜欢这里的食物,讨厌这里的装修风格,等等)?人们是更需要明确单个评论者的态度,还是更在意一份综合评价分析?

通常,产品设计者下达这些决策再交由科研人员和工程师去实现。这一过程的问题在于,以机器学习为核心的产品很大程度上受制于当时的技术可实现性和算法可实现性。根据我的个人经验,对机器学习及其相关领域的技术有一定了解的人更容易想出新颖的产品创意,而对于没有这些技术背景的人则几乎没有可能。举一个泛泛的类比,就像建筑一样,搭建一座桥梁需要各种材料资源和物理知识,没有相关背景的人怎么可能能设计出一座桥呢?

说了这么多,主要就是一句话:如果想开发一个优秀的机器学习产品,你需要一个优秀的产品+设计+科研+工程师团队来解决各方面的细节问题:从机器学习理论到系统构建到专业领域知识到宏观产品思路到技术交流到图形设计等等。最好他们各自在某一领域都是世界一流专家并对其他几个领域也熟知一二。
拥有这些技术的小型智囊团可以更灵活的面对产品远景及其模型设计过程中的不确定性。相比之下,大型公司里研发人员和产品设计人员如果不能紧密合作反而更难解决这类难题。因此,未来的机器学习的优秀产品将出自一些拥有这些资源的小型创始团队,也就是众所周知的“车库公司”。

注1: 尽管MCMC并不是什么新的统计技术,但直到近期,它才得以广泛应用于大规模机器学习的应用中。
注2: 模型是生成的,所以这里是从演绎的角度进行描述的。模型的生成过程其实是相反的。
注3: IBM 模型3号引入了派生(fertility)的概念,允许从一个单词生成多个独立的目标单词。尽管这样有可能产生正确的翻译,但是这种可能性非常低。