终飧鱿钅俊S谑俏颐蔷土⒓纯剂朔止ず献鳎创罱ㄒ桓龆说蕉耍╡nd…to…end)的系统原型。其中,我和一个实习生翁锐浩主要负责哼唱搜索算法的改进,其他几位同事,包括STC的欧佳凡和WLMC的王晓兵,负责搭建搜索平台。
重拾哼唱搜索
晓兵和佳凡的工作卓有成效,他们同###的高阳公司合作,很快就搭建了一个系统平台,并申请了一个临时声讯服务号码(当时是125905988)。通过这个平台,我们就可以有效地采集真实数据。用户可以通过手机直接拨打服务号码,系统会记录下每一条哼唱记录。我记得当时我们有一部手机专门用来做数据采集。我们邀请了很多同事和实习生,把手机交给他们,让他们留下自己“美妙”的哼哼声。对于哼唱环境、哼唱方式、哼唱歌曲,我们都没有加以限制,以期得到符合用户习惯的最真实的数据。通过这个系统,我们得到了大量的数据。
有了真实的数据,我们就着手算法的改进了。算法的改进主要在两方面:一是哼唱的旋律提取,我们考虑了不同的背景噪声和信号畸变,提出了更精确的方法来检测和分割每一个音符;二是匹配模型的改进,我们使用了隐马尔科夫模型 来作旋律匹配,明确考虑了哼唱和数据库音乐之间的音符对齐问题,将它更有效地集成到了改进的旋律模型、节奏模型和匹配时的容错模型中。我们还提出了一个更加系统化的匹配过程。
经过几个月的努力,我们终于开发出了一个更高性能的算法。测试显示,第一位歌曲的正确率 (top 1 accuracy) 达到了82%,在前五位中找到的比率更是接近90%。我们也搭建了一个在线服务原型:你可以使用你的手机,拨打一个服务号码,根据提示音哼唱一段旋律,你就能得到你要找的手机铃声。这也是业界第一个哼唱搜索手机铃声的系统。为了能在中国市场运作,我们还将此技术转让给了位于上海的美斯恩有限公司。
我们还把这个技术展示在微软一年一度的技术节上(TechFest)上; 得到了非常不错的反响。比尔·盖茨也过来看了我们的演示。我也第一次获得了与比尔·盖茨面对面的机会。后来有在微软总部雷德蒙工作的同事对我说:“你的演示很成功啊,很多同事回来后还在讨论呢。”
结束语
哼唱搜索,只是我所经历的众多项目中的一个。之所以讲讲它的故事,不仅是因为它是我第一个独立项目,而且它也让我懂得,做一个项目,不只是仅仅做一个实验室算法,而是要系统地综合地考虑其应用场景甚至商业模型,考虑真实使用环境并使用大数量多样化的真实数据。做到这一点,才有可能使你的技术应用于现实生活中,才有机会让用户感受到科技改变生活。
我想,无论工业界的研究员,还是高等院校里的学生,都可以从这个角度去重新审视一下手中的问题和解决方案。
作者介绍:
芦烈,2000年加入微软亚洲研究院,现为语音组研究员。主要研究方向是机器学习,音频、音乐的内容分析和检索。他在国际一流期刊和会议上发表过50多篇论文,拥有近20项专利;曾多次在国际会议上担任技术委员会成员。他于2000年获上海交通大学电路与系统专业硕士学位,现兼于荷兰代尔夫特理工大学攻读博士学位。他寥有所好,溺于技术而疏于艺术。好音乐而做音乐分析,却常因没有音乐细胞而心有戚戚。 希望有朝一日自己的研究成果可被广泛应用。
研究院“&”的故事 陈刚(1)
创新工程组(Innovation Engineering Group,简称IEG)是研究院中一个非常特殊的非研究性质的组,它负责很多研究组的研究原型和技术转移工作。许多研究院技术背后都有这个组的贡献。由于IEG支持的研究组很多,开玩笑说,就 “研究方向”的数量而言,她可以稳坐研究院第一。
出乎一般人意料的是,这个主要由软件开发工程师而非研究员组成的开发组竟然是研究院成立的第一个组,现在也是10岁了。令人骄傲的是,2003年,从它分化出一支并壮大成立了微软亚洲工程院(ATC)。2005年,搜索技术中心(STC) 的成立也是从这个组开始的。再后来,开发组合并用户体验 (User Experience) 后形成了现在的创新工程组(IEG)。我们组现有二十多人,有老有少,有中国人也有外国人,而且终于有了女性开发工程师,作为一个微软内部的软件开发团队,这确实比较少见。和初创时期纯粹年轻男生的组织构成相比,现在更“平衡”了。
自从2000年进入微软亚洲研究院做开发,不经意间我已在这个组工作了8年,猛然发现自己竟成了组龄最长的组员。作为一个仍很年轻的“老人”,我很乐意把一些经历在研究院10年之际与大家分享。
进入微软研究院
至今我还记得进入微软时两次决定的面试片段。1999年末我面临毕业求职,一日接到微软中国研究院到知春路希格玛的面试通知。西装穿戴整齐到了希格玛五层,我就径直被带到一个屋子里面被很多人围着问话,而这些人没有一个穿西装的,倒是有穿拖鞋的。问问题的人单刀直入、毫不含糊,印象中只记得往来之间人影恍惚、镜光耀眼(研究员们的戴眼镜的比例可不是一般的高)。我战战兢地演示着程序,一边祈祷千万别出岔子。刚刚提心吊胆介绍完,我听见背后“咚”的一声,转头看到一人倚墙坐倒,我心里一惊,那个人却开始打起了很响的呼噜。其余人等毫不惊讶,继续和我聊。通过面试后,我作为实习生帮视觉计算组(VC; Visual puting)的论文做演示程序,加入了他们的第一场SIGGRAPH战斗。而那位坐倒睡过去的研究员就是徐迎庆博士,他的项目正是我进入微软的第一个任务。
SIGGRAPH 战斗告一段落后,到了2000年初我必须决定工作去向。正好研究院在大批招人,再次经过开发组5轮面试官轮番轰炸,没有遇到传说中方井盖圆井盖的问题就到了关底。Harry (沈向洋,当时他是视觉计算组负责人)面试了我。记得有两段话对我的未来影响巨大。Harry说:“想想在什么地方你做一件事可以影响全世界,让全世界的人都用你做的东西?在微软你可以有这样的影响力”。这个诱惑至今对我有吸引力。Harry接着问“你可以选择,做研究还是做开发”。得知做开发可以选择不同的项目和研究组的时候,我更愿意在多个项目间穿梭,更喜欢面对代码而不是论文。于是成为了当时微软中国研究院的开发组的一员,我的职位名称是RSDE(Research Software Development Engineer),当时组里有不到10个人。
我们是RSDE; R&D中的&
外企风格之一就是众多用让人听起来摸不着头脑的缩写,请让我来解释一下我们的职衔。微软程序员的职衔是SDE,即软件开发工程师 (Software Design Engineer或者Software Development Engineer) 。创新工程组的大多数组员的职衔是RSDE (Research Software Development Engineer) 即隶属研究部门的软件开发工程师 。这个多出来“R”意味着我们的任务一部分需要做SDE的事情,写代码编程序,另一部分是和研究员们并肩工作,把概念和想法实现为原型系统和算法,并进一步帮助把研究成果转化为高质量的微软产品代码,这就是所谓的技术转移(Tech Transfer)。技术转移是我们组的主要任务之一,所以 TTG (Tech Transfer Group) 即“技术转化组”是我们使用时间最长的组名之一,即使目前仍然是是创新工程组的主要部分。
还有一个有趣的说法描述我们的工作:研发工作一般叫做R&D,“研”指的是研究部门(R; Research),“发”指的是产品开发部门(D; Development),而RSDE的位置就恰恰在那个“&”中,是连接研究和开发的纽带。。 最好的txt下载网
研究院“&”的故事 陈刚(2)
技术转移
每年都有不少研究技术从亚洲研究院的实验室进入到微软产品中,变成产品的某个功能(feature)。作为研究院的一员,我很骄傲的是,Windows XP、 Vista、 Office、Tablet PC (平板电脑)、Xbox、Windows Live、游戏、硬件等等微软产品中都有来自于北京海淀区知春路城铁边上的这个实验室的技术。其中研究员们的智慧是关键,其中创新工程组的RSDE们也是这些技术产品化的幕后英雄。很多年以前,人们把中关村叫成硅谷的时候,我眼中只是好多买电脑零配件的摊位,而现在的中关村才真正地有了一个IT技术的聚集地的模样。
技术转移是一个需要时间的过程,不是像同城速递那么快捷一个下午就到达目的地。很多大学的孵化中心就是一种类型的技术转移过程。这里说说微软研究院中一个典型的软件技术转移的过程:
1。 研究组选研究题目。这个题目可能是领域内长久的研究方向,希望可以得到某些突破,或者是来自与已有产品的问题。
2。 研究员深入分析问题,设计算法,构造原型系统,收集数据,选择算法,评估结果,不断迭代尝试。
3。 当原型系统显示有能力解决问题的时候,我们开始与相关产品部门接洽技术转移。研究部门有专人负责与产品组的信息沟通。同时我们也可以得到产品组对我们结果的反馈意见。
4。 当原型算法的质量到达相当不错的阶段,产品组看过后便有了更有明确的需求。RSDE开始和研究员成立一个临时的虚拟小组(virtual team,有别于平时的管理组)一起工作,进一步提升原型系统的设计和质量以达到产品组的要求,研究员、产品组的项目经理、开发工程师、测试工程师一起工作,最终把算法代码实现写入到产品组的代码中去。
5。 最终产品发布。到了这个时候,参与项目的人会得到一个石头或金属嵌玻璃的奖牌(Ship…it Award),上面写着“感谢xxx对xxxx产品做出的贡献——比尔·盖茨”。
这是一个相当明确的流程,而现实常常出乎意料,任何一步都不是那么简单,而是变数丛生、繁复无比。产品部门的要求来自与市场,通常期望值很高,可这时往往暴露了研究阶段成果的一个问题,那就是——研究成果和产品要求的差距。
不是所有的研究项目都会成功产品化,为了提高研究的效率,通常当一个算法解决了问题的主要方面就可以开始向产品部门推销了。当“买方”对算法结果基本认可并有意向集成之前,会提一系列的具体要求,希望算法可以达到产品标准。很典型的要求比如是否能够能否达到99%以上的正确率,融入产品已有架构的容易程度,算法复杂度、实现的速度、数据适应性、资源内存消耗、安全性、可靠性、等等。我们在这些方面有过不少坎坷。
例如我们做人脸卡通,第一步在是用户输入正面肖像照输入后自动的配准面部五官,然后再继续后续步骤。最初的的算法在亚洲人的照片上可以工作得很好,可是产品组要求算法必须在世界其他国家市场上要正常工作。这就带来了新的要求,必须考虑世界上其他人种的肤色、发色、眼睛鼻子大小。新的要求导致了数据和算法上的很大改动。
当一项技术是“基本可用的”,假设它已经达到80%的产品要求,而产品的真正要求是“非常好用”,可能意味着90…99%,产品组的众多要求累积在一起,这之间将近20%的距离往往就是发生量变到质变的那一段。这常常意味着算法要做相当的调整和适应,甚至结构需要大修改。RSDE的典型技术转移工作就在这20%的一段。这个象“&”一样拧吧的阶段,我们要和研究员开会,学习他们的东西,出差去总部和产品组面谈,或者每天大早起床赶时间与总部开跨16个小时时区的电话会议,与产品的开发测试工程师一起工作,共同努力让一项研究技术完美地实现用户需求。
研究是高风险的事情,能够变成真正产品的研究只是成功的极少数。很多项目就在这个阶段前不幸夭折了。长江后浪推前浪,死在沙滩上的前浪研究项目的数量相当可观。这个艰苦的过程,难的不光是技术,还有在长长的辛苦、烧掉无数脑细胞之后却要接受项目无果而终的现实。txt电子书分享平台
研究院“&”的故事 陈刚(3)
所以每当有一个技术转移项目顺利完成时我们都很兴奋。当我们收到一份产品组高级经理的感谢信,还有看到好久不见的同事从总部出差回来挺着腰围暴涨了一圈的肚子时,就会上前恭喜他,然后和他一起抱怨总部的中餐馆的菜真油,公司楼下的食堂Pizza吃得太多了,Ship…it Award奖牌的玻璃太难看了……
我们说研究院是帮助公司赚后天,甚至5年以后、10年以后的钱。从我们的经验看来,做技术转移,过程有长有短,3个月不算短,5年也不算长。这从另一方面验证了关于这个时间的说法所言非虚。如同任何一件事情的成功,必须努力也要有运气,是天时地利人和的结果。
技术转移过程也是一个人与人、机构与机构之间互动、互相支持和取得信任的过程。研究院成立之初做研究项目推广的时候,研究院对产品组的周期、市场定位、核心问题和希望、工作优先级还不太适应。相当多产品技术研究项目消耗了人力、时间却无法找到合适的敲门砖。随着每年逐步取得的成果转化成绩,一方面亚洲研究院渐渐得到了产品组的信任。同时研究院也逐步建立与产品部门保持同步的机制。从RSDE的角度来看,随着研究院能力和规模的扩展,产品组的“胃口”也渐渐提高了:问题的规模不断增长,难度加大,质量需求也越来越明确。产品组更容易采纳准备充分的研究成果:合理的功能设计,相当扎实的算法结果,同时核心算法还需要通过完备的测试。这新一阶段的期望对研究员们和RSDE们提出了更高的要求。迎难而上,我们没有其他选择,研究院里有一大拨视困难为乐趣的人。
说到这些人,有一个故事很有意思。研究员们和微软产品组的同事们是很不同的两类人。在一次研究院和产品组的同事都参加的微软内部培训中,大家做了一次性格分析。结果显示研究员中相当大比例喜欢思考、冒险、质疑权威、幻想、外向有创造力;而更倾向于喜欢动手,脚踏实地,有纪律,讲程序、保守、精确的人群中工程师们占据多数。这固然有着职责选择了人的原因,而后天的职业要求也进一步加强了双方的特点。其实两类人还有很多共同的东西:不满足于现状,追求卓越。
微软对联
为了让研究更上一层楼,从2007年起,创新工程组的项目中增加了一个新的重点,我们把这叫做“部署驱动的研究”(Deployment…driven Research),讲起来有些拗口,简言之就是帮助研究员们把研究项目直接做到Web上去。在搜索、Web 应用越来越兴旺的时代,研究也要和最终用户直接接轨,可以接触到第一手的信息。
经过自然语言组和创新工程组的共同努力,微软对联赶在2008春节前给大家带来了新春的祝福。在短短几天内,微软对联的访问量超出大家预料,国内海外的中国人都试用了这个极具中国特色的对联工具。而用户的热情参与,为我们后续的中文的自然语言研究提供了很有帮助的数据。
这里和大家分享有一些在对联发布之后有趣的发