首页 > 推荐 > 正文

高大上的 AI,如何在创业公司落地?

2017-06-20 14:01:37  来源:51CTO

摘要:本文将为大家讲解人工智能的发展阶段和创业公司如何打造 AI 技术团队。
关键词: AI 落地
\

 
  人工智能是由约翰·麦卡锡在1956年的达特矛斯会议上提出的:人工智能就是要让机器的行为看起来就像是人所表现出的智能行为一样。本文将为大家讲解人工智能的发展阶段和创业公司如何打造AI技术团队。
 
  人工智能过渡到高层智能的3阶段
 
  目前,人工智能正从比较初级的计算智能向更高层次的智能过渡。更高层次的智能包括3个阶段,第一个阶段是感知(perception)智能,机器要听得见、看得见。听得见是我们常说的语音识别,机器把人说的一句话,由声音信号转化成文字信息。
 
  然后,就是视觉,计算机视觉(computervision),它能够看到东西,能够分辨一些人脸,或者是物体,甚至一些情绪之类的变化。
 
  通过感知阶段后,人工智能进入下一个认知(cognition)阶段。机器开始能够理解一些内容。比如说语音识别,机器只是识别出了这个文字,但它不能真正知道人要表达什么信息。这里涉及对自然语言理解。对于机器来说,这是非常困难的一件事情。
 
  认知阶段的另一个方向是分析判断,机器根据当前的情况去做一些主动的判断。比如棋局对弈,计算机本身不知道自己是在下棋,但是操作员定义好规则之后,通过几个超级大的深度神经网络,它能够做出最优的判断。
 
  只有当人工智能在认知上获得了突破性的进步之后,才可能谈到下一个阶段:创造(creation),这时计算机开始具有情感,能够有自主意识,能够自己创造新的东西。这个阶段离我们还非常遥远,大家也不用太担心计算机会毁灭人类的说法。
 
  人工智能的大事件和稳步发展
 
  在1997年,IBM深蓝战胜了国际象棋的人类世界冠军,这是AI发展史上比较有标志性的一件事情。但是国际象棋相对围棋来说,还是简单很多,很久以来大家都不相信计算机能够解决围棋这个问题。
 
  到2011年的时候,也是IBM在Watson在jeopardy的比赛中,计算机战胜了人类。它在语言的一些理解和大规模查询方面,体现出来计算机的优势。
 
  2016年,AlphaGo击败围棋世界冠军之后,大家发现深度学习还有人工智能确实能解决很多、特别是确定性的问题。
 
  最近几年,人工智能有了长足的进步,主要是受Geoffrey Hinton的影响。他是最早提出神经网络的三个人之一,他一直坚持不懈地做深度神经网络方面的工作。
 
  一直到五年前,他发现计算能力足够强了,因为有了GPU,并且GPU在不同的机器上可以构成一个集群,计算能力比十几年前翻了百倍以上。以前解决不了的问题,现在都可以解决了,以前训练不了的模型现在都能训练了。
 
  第二个方面就是有了海量的数据,更多体现在像Google、Facebook这样的大公司,他们有大量的用户数据。现在,使用大量的数据,即使采用一些非常简单的模型,也可以获得非常好的效果。也就是说数据往往比算法更有效。
 
  在深度学习提出之后,首先是在语音识别领域获得了突破,准确率相对提高了百分之三四十,图像识别和机器翻译方面也获得了很大的提高。
 
  关于深度学习,我们认为它很好的一个方面就是简单实用。像我们做语音识别,最开始用到高斯混合模型及区分性训练算法,非常复杂。但是有了深度学习之后,相对来说更简单了,你只需要把数据准备好,有一个足够大的模型,把数据放进去,就可以训练一个很好的系统直接使用了。这可能也是深度学习的一个优势吧!
 
  另外一个方面,因为深度学习可以在GPU集群上计算,所以你也不需要买大量的机器,就能够完成大规模的训练。这也是为什么很多创业公司,也能够训练出比较大的模型及高性能的系统。
 
  创业公司如何搭建AI系统
 
  上面讨论了什么是AI,接下来我们谈谈作为一个创业公司,在资源非常有限的情况下,怎么去搭建一个高效的AI系统。AI系统主要可以分为数据、算法和工程这3个部分。如果用人来打比方,数据相当于是他的血液,算法是他的大脑,工程是他的骨骼。
 
  没有数据的话,算法只能是停留在课本里面。只有数据和算法这两者结合起来,才能真正成为一个产品的雏形。如果缺少强有力的工程,那产品永远走不出实验室,只能处于演示的阶段。所以这三者要非常紧密地结合在一起,才能够做一个真正有用的人工智能的系统和产品。
 
  当你的产品做得还不错的时候,系统将会获得更多用户的数据,把这个数据再用过来反哺系统,这样可以形成一个正循环,不断地提高这个系统的性能。人工智能产品跟别的产品可能不太一样;别的产品一般做出来之后,功能做成了基本上就完成了,但是人工智能系统是一个不断迭代,不断优化的一个系统。
 
  关于数据,怎么去获得数据?
 
  作为一个小的创业公司,特别是刚开始的时候,没有数据,公司怎么去获得第一批数据?其实有各种各样的办法,比如我们做语音识别的时候,请了一个阿姨帮我们做饭。做完饭之后,我们给她一本菜谱,让她给我们念上一个小时,然后把这个声音录下来,录了1个月,一天1个小时,一个月之后就有30个小时的数据了。
 
  这些数据基本可以做一个小系统了。我们就做了一个端到端的演示系统,搭了一个服务器,然后用户可以在APP中,询问宫保鸡丁等等菜,系统就可以识别出来。在这个基础上,我们已经可以开始做一些工程优化、系统方面的工作。
 
  这个事情做完之后,我们知道这条路是可行的。有了这个基本系统,接下来就可以用更多方法,自动化的数据采集方式来建立一个平台。当时Google的API开放的时候,用户可以把一批语音数据塞进去,然后系统给用户返回结果,这个结果不一定100%准确,但是已经有一些基本的数据可以去跑实验了。
 
  什么样的数据有价值?
 
  显然,真实用户的数据是价值最高的。不过,还要看公司对这个产品的定义。作为初创公司,不能做一个大而全的系统,而要更多专注在垂直领域上,做出自己的特色。比如出门问问,关注跟出行相关的一些垂直领域,涉及查询地点、酒店、餐馆、火车票、飞机票相关的信息,团队采集了大量这些领域的数据。这方面1个小时的数据,相当于采集10个小时甚至更多的通用数据。
 
  系统需要采集多少数据?
 
  搭建一个人工智能系统的时候,到底要采集多少数据?显然数据量是越大越好,但是因为成本有限,采集基本够用的数据就行了。这里要做一个判断,你可以画一个曲线,比如在语音识别方面,再添加1000小时,系统性能还能提高多少?一般系统达到一定数据量后,从数据上获得的性能提升是越来越小的。到达一个拐点的时候,同样的资源放在其他的方面,比如算法、工程方面,可能会带来更大的效果。
 
  有效利用开源算法让你事半功倍
 
  在学术界,算法的研究最开始是由美国国防部领导的一些项目,带来的一些学术上的突破。但是近五年到十年,基本上都是一些大公司和研究所,比如微软研究院,Google这样的公司,因为它有大量的数据,大量的计算资源,它能够在算法和技术方面带来很大的提升。
 
  作为一个创业公司,不希望再去重新制造轮子,所以尽量用一些开源的东西,比如语音识别用了Kaldi,还有OpenFst、OpenGrm这样的一些开源软件。语音合成、语义理解、深度学习这些方面基本上都是用开源的东西。因为主要还是用一些Google开源的软件,整个公司的工程基础、代码库还有代码规范,都是跟随Google的风格。
 
  技术团队的打造经验
 
  我们对代码质量的要求非常高,比如强调C++的编码风格。Google有可读性这样一个指标,就是说一个新人进入公司,无论之前有多么资深,假如没有通过代码可读性测试的话,新人是不能够直接把代码提交到代码库里去,他必须要获得Readability这样一个证明。
 
  所谓Readability,就是要求程序员写了一定量的代码,然后代码要提交到内部的代码委员会,他们看到他的代码之后,会提出大量的修改意见。可能该程序员写了100行代码,他们给他提出了500行的建议,这是很正常的。然后通过这样来来回回的几个迭代、循环,最后才能说这个程序员的代码能力获得了Readability证书。
 
  还有,单元测试是非常必要的,特别是在一些关键的算法工程方面。短期内单元测试可能是耗费了很多时间,但是长期来说,它是非常重要的。因为写大规模的软件系统,相当于搭积木,假如有一块不是很稳定的话,那可能搭起来的房子很快就会塌掉。特别是在特定情况下,比如人员发生流动的时候,如果没有单元测试的话,新来的人再去改这个代码,就不能够保证这个代码能完成它以前的功能。
 
  Code Review也是非常重要的,包括我本人在内,也是花大量的时间做Code Review。特别是对刚来的一些同学,我们能够很快通过CodeReview功能,让他熟悉我们的代码风格,然后让他能够写出高质量的代码。刚开始的时候,比如头一两个月的时候,可能花的时间比较多,但是他一旦进入轨道之后,工作的效率会提高很多。但是,前端团队可能不太适合做这个事情。
 
  还有代码的提交,必须要有资深工程师的LGTM,就是Look Good To Me,这样才能提交。一般情况下,如果没有LGTM提交的代码,是不符合流程的,通常我们会找他谈话。
 
  最后,需要一个比较高效的开发环境,就是要有一个强大稳定的base库。我们从比较大的开源项目中,抽出一些有用的东西放到我们base库里面,然后在这个基础上再添加我们自己的一些基础库。
 
  强大稳定的base库是非常重要的。像Google的base库里,大家可以看到其中很多都是最一流的工程师写出来的,包括Jeff Dean,这样才能保证基础库的稳定和高效。
 
  人才招聘看重解决问题的能力
 
  怎么招人?招什么样的人?大公司和小公司实际上是很不一样的,大公司希望招一个非常专业的人才,我们叫specialist,就是说在某一个领域他能做得非常深,因为大公司不需要你一个人懂10个不同方面,只需把某一个方面做细、做透就行了。
 
  而创业公司正好是相反的,因为他总共就那么几个人,那这个人必须把这10件事情要全部给做掉。我们通常希望招人能够招一个通才(generalist),就是说不需要太专,但是他的学习能力要很强,并且也愿意去接触更多的项目,这样的话,才比较适合初创公司这样快速的发展。
 
  执行力也很重要,一定要能够按时把任务完成,当然问题挑战很多,我们希望员工最终能够主动想办法完成任务,而不要找各种各样完不成的理由。
 
  最后一个方面就是要有好的沟通能力,跟团队的成员要能够沟通,才能够很好的合作。
 
  (文章来源:51CTO)

第四十一届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:houlimin

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。