原帖地址:
第一次翻译,而且人工智能也不是我的专业方向,对专业词汇有什么翻译的不到位的地方,欢迎指正。
优秀的机器学习产品来自有丰富经验和渊博知识的开发小组。
机器学习(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)的概念,允许从一个单词生成多个独立的目标单词。尽管这样有可能产生正确的翻译,但是这种可能性非常低。
最近这几天看到你的翻译,来学习了,下面是我翻译的,太生硬,无趣!现眼了!是来求指教,求板砖的!
机器学习(ML)风靡一时,沾了“大数据”浪潮的光,和许多技术炒作一样,这种热情远远超过了真实产品的实现。按理说,并不是自上个世纪90年代末/21世纪初Google的巨大革新致使算法技术引导了渗透大众文化的产品,这并不是说自那以来没有伟大的ML产生,但是没有一个像以前那么有影响力或者有核心算法的。Netflix公司可能使用了推荐的技术,但是没有它,Netflix依然是Netflix。如果Page,、Brin等公司没有开发网页的图形结构和锚文本来提高检索效率,那么Google就不会诞生。
这是为什么呢?不是因为缺少尝试。有多少创业者把自然语言处理(NLP)技术带给平民大众,在人们真正尝试使用后渐渐被遗忘的?使用ML构建伟大的产品的挑战不仅仅在于了解基本的ML理论,而是得充分了解其领域和问题,把直觉渗透到模型设计中。有趣的问题没有简单现成的ML解决方案。主要的ML应用领域中的进展,像NLP,来自对这些问题特性的洞察,而不是普通的ML机械理论。通常,专门洞察问题和小心的模型设计会导致根本不能工作的系统和人们将会真正使用的系统两者之间的不同。
这篇文章的目标不是劝阻人们使用ML构建惊奇的产品,而是要清楚我认为的困难所在。
机器学习的进展
机器学习已经在过去的十年走了很长的路。在我读研之前,通过John Platt的一组SMO算法训练了一个大间隔分类器(例如SVM)。在那种情况下,与大量的训练数据相比训练时间明显不足,编写算法本身需要了解二次规划并且充满了试探性的选择主动约束和未知参数。现在,我们知道如何在线性时间里使用一个(相对)简单在线算法(PDF)训练一个等效性能大间隔分类器。图形模型(概率)已经取得了类似的跨越:马尔可夫链蒙特卡洛(MCMC)和变分法有利于任意复杂的图形模型[1]的推断,有趣的是,看看文件上在过去的8年里计算语言学学会(ACL)的议项,首推自然语言处理出版物。与2003相比,2011年Top paper的订单更技术性、ML、复杂。
在教育前线,我们也已经走过了很长的路。在21世界早期至中期,作为一个斯坦福大学的大学生,我选了Andrew Ng的ML课程和Daphne Koller的概率图模型课程。这些课程都是斯坦福大学最好的并且一年只允许收纳大约100名学生。尤其Koller的课程不仅是在斯坦福大学里我选的最好的课,而且教会了我许多关于教育的。现在,任何人都可以在线上这些课。
作为一个应用ML的人——特别是,自然语言处理——多数处理已经使研究方面更加容易。然而,我做的核心决定不是抽象的ML算法、损失函数或者使用的目标,而是什么特征和结构是和我解决的问题相关的。这个技能来自于实践,因此,尽管它很好,更多的观众也会有一个基本的ML的理解,但是它不是构建智能系统的最困难部分。
有趣的问题没有简单现成的解决方案
Some computer science or ML related words are not translated quite well, here is the list:
1. graph structure of the web: graph 是图的意思(一种数据结构,google的pagerank构建了一个巨大的图,链接形成了每个网页节点的边)
2. large-margin classifier: 这个不好翻译,但不是大型的意思,意思是margin最大化的一种分类器。
3. training time scaled poorly with the amount of training data
这句翻译的不到位,scale这里的意思并不是简单的成比例的意思,而是说,随着样本数量的增加,训练的时间可能会迅速增加,scalability是
ML算法很重要的一个考量。你的翻译不能说完全错,但放在ml这个领域不是很准确。
4. simple online algorithm
online不是同步的意思,一般翻译成在线