今天碰到了很多以前的同事以及徐伟老师。我非常有幸两年之间跟徐伟老师和余凯博士有非常亲密的合作,跟他们学到了非常多的东西。今日头条是一个内容的生成平台以及分发平台。我们需要鼓励更多的人来参与内容的创造,在这个平台上面会有比传统平台更多的内容,每天可能会有上百万的内容,所以这个平台更需要通过人工智能机器学习的方法,来给每个用户推荐个性化的,你所喜爱的,你所需要消费的内容。
我今天会围绕深度学习的理解和视频分析方面的应用。66年前计算机领域的一位前驱在一篇很有名的文章《计算机和智能》当中提出了一个问题,说“计算机会不会思考?机器会不会思考?”当时他没有给出一个评判,但是他给了一个评判的方法,就是大家众所周知的图灵测试。基本的想法是说如果计算机能够做出跟人差不多水平的任务的话,你就可以认为计算机基本上会思考。那我们看看计算机现在到底在哪些方面会思考。
比如说围棋,上个月AlphaGo已经在棋盘上战胜了人类的顶尖高手,她利用了深度学习,以及蒙特卡罗树搜索的方法。还有刚才徐伟老师提到的通过深度学习的方法来认识图片,最后能够像人一样来描述这张图片。虽然现在这个描述可能非常简单,但是我相信以后可能像人一样,看到一张图片或一段视频后能讲出一段完整的故事出来。
最近我还发现了一个非常有意思的应用,叫“彩云天气”,他们的团队做的事情非常有趣:用深度学习的方法来分析云层的运动变化,能预测下一个小时里分钟级别的降雨情况。这样就非常有用,我非常喜欢跑步,我有时候跑步之前就可以看一下这个APP,后面十分钟、二十分钟会不会下雨,能精确到周围一两公里的情况,这样的话对我安排我的活动非常有帮助。
我们再看看深度学习在哪些类的问题上非常有效呢?过去的经验表明深度学习在有监督的问题上面是非常成功的,那什么是监督学习呢?我们有一组数据X,然后我们有一组标注Y,监督学习是要学习从X到Y这样一个函数映射关系。这个映射有可能是线性的,也有可能是非线性的。如果输入的X是一个图像,输出是一个类别,就是一个图像分类问题,我们众所周知的已经有很多单位能做出比人还高的准确率。如果这个输入是一句中文的文本,输出是英文的文本,就是机器翻译,现在也有深度学习的模型能够从端对端的训练出一个机器翻译系统出来,比传统的翻译系统要好。如果这个输入是一张图片,输出是一段文字,这就是图片文本描述的问题。当然输入还可以是一段语音,输出是一段文字,那就是语音识别的问题。但也可以反过来,输入是文字,输出是语音,那就是语音合成的问题。
深度学习为什么能做得这么好呢?是因为深度学习的模型应用了一个原则,根本构建原则是深度学习的系统是有非常多小的单元构建起来的。每个单元本身都非常简单,可能只能做非常小的事情,而每一个单元是根据人脑的神经元的工作原理构建出来的。当然我们并不知道人脑的神经元真正的工作方式是什么。我们做了一个仿神经单元,它接收多个输入之后会做一个线性变化,每个输入都会乘上一些权重,这些会加起来,之后再做一个非线性变化,例如用Softmax这个非线性就适合做分类的问题。
神经网络是把好多个这样简单的单元给它串联起来,从而解决一些复杂问题。比如说这是输入是一个图片,输出的是这个图片里面的数字到底是几。这里显示的是一个非常简单的单隐层的神经网络。我们当然可以把这个隐层的层数加深,这样就有了深度神经网路。
下面简单介绍一下深度神经网络在语言理解方面有哪些进展。语言理解方面的问题,可以分成两大类。一类是简单的理解,浅层的理解。另一类是比较深层的理解。浅层的理解包含什么呢?比如说包含词法分析、句法分析这样结构性的分析,也包含一些浅层的语义理解,比如徐伟老师提到的语义角色分析(Semantic Role Labelling)以及分析商品的评论情感倾向之类。这样一些浅层的东西,不需要对句子的完整做一个理解。相对这个而言有另外一类比较难的问题,可能需要对整个句子,对上下文有比较好的理解,才能够有合理的预测。这样的问题第一个是语言的生成,比如做一个模型自动就能够写一篇新闻,这是非常难的一件事情,虽然现在有一些尝试。第二个是阅读理解,那我们很多人都考过GRE这种考试,就是一篇文章有一个问题,需要你回答。现在有一些深度学习的模型已经能够做一些相对简单的智力测试,以及类似GRE考试这样的问题。第三个就是比较宽范围的知识性问答,这是非常非常难的事情。
最后一个是通用型的对话,不光是问答,问答可能只是对话的一方面,可能是随便的聊天,满足交流的需求。
后面我会简单介绍一下,举几个例子介绍一下深度学习在这些问题上面的应用。
第一个例子是怎样用深度学习做浅层的语义理解。比如说“武汉大学附近的拉面馆”。我们要理解这句话,其实不需要理解整句句子,只需要把关键的地方找出来。比如说知道中心点是武汉大学,需要查的关键字是拉面馆,有这两个已经足够理解这句话表达的意思了。另外一个例子,比如说“1774年麻省武装力量和英国正规军在雷克星顿和康考德开战。”要理解这句句子中提到的时间、地点、人物、事件,如果只需要把这些识别出来的话,我们并不需要对整个句子有理解,需要把关注到这些点的地方标注出来。这两类问题都可以用深度学习来做。我们去年提出了一个模型做中文专有名词识别,在最大的一个公开的数据集(Ontonote 5.0)上面取得了最好的成果。
更难的一个问题是如何生成自然的对话,如果能够生成对话就会非常有用。比如现在有一些智能的个人助理(如助理来也),他通过对话的方式给你提供服务。另外网上有一些问答的平台,如果能够自动回答的话,那就不需要很多的人去时时刻刻回答。
我们去年做了一个工作,做了一个神经网络对话生成器,这是我们系统生成的一些回答。上面白色的是我们的输入,下面蓝色的部分是系统生成的。比如输入是:你喜欢一见钟情还是日久生情,系统生成的应答是一见钟情吧。另外一个例子:土豪我们做朋友吧,应答:我不是土豪。但是我们的系统不仅仅可以接受一些简单的输入,也可以接受比较长的输入,同样可以给出一个比较合理的回答。比如对周星驰大话西游电影里面最有名的台词的回应是:“愿你安好”。
这个工作原理到底是什么呢?这是通过一个模型叫循环神经网络。可以根据输入的信息不断的去生成句子里面的每一个词。根据前一个词生成下一个词。华为诺亚方舟实验室的李航老师以及谷歌Vinyals和Le之前都做个类似的对话模型。我们对这个模型做了一个拓展,给它加入了更多情感信息,使得这个模型也能够生成一些带有情感色彩的回答,这样可以根据你的喜怒哀乐来给你做出相应的回答。
更有趣的一个问题是自动问答,比如说知识类的问题,“七重外壳是谁写的?”你先要理解问句提到的名字本身指的是什么,他要问的是什么,如果这两个能从问句当中识别出来,你就可以从知识库里面找出相应的答案。
这样一个问题是非常难的,难在两个方面,一是同样的问题有语言上表达的复杂性,可以用多种表述方式。二是同样一个实体名字或者同样一个关系名字,有多种实际的对象对应,比如说麦克乔丹有打篮球的,也有机器学习的。我们用了一个深度网络来做自动回答。其中核心模型是带门循环单元,之前提到过,基本的原理是它能够像人一样选择性的来记住长时以及短期的记忆,同样也会选择性的遗忘。我们把这个模型叠加起来,变成有很多层同时做正向和反向的网络,结合起来以后我们发现效果非常好,可以准确识别问题当中涉及到的一些实体,涉及到的关系。这是一些例子,是我们系统自动回答出来的一些问题,比如问“哈利波特在哪儿上的学?”,我们的模型可以找出罗琳。
另外一件事情我们刚刚在头条开始做,就是基于视频内容的搜索,需要对视频内容本身做一个理解。这是怎么做到的呢?我们是选择性的选了一些视频当中的关键帧,然后把关键帧通过深度学习的神经网络学出一些关键特征,然后我们再通过哈希算法到一定的有意义的值,然后最后来计算相似度。我们在建深度学习网络的过程当中碰到的最大挑战是,我们通常训练一个深度学习网络,我们需要大规模的机器,或者是GPU,需要消耗非常大的能量,而我们很多的应用需要把它下载到手机端,手机端计算能力有限,能量也有限,所以我们通过需要对移动端做优化。我的同事文林福带领的团队最近做了一个工作,把深度学习的图像分类网络优化压缩之后放到手机端,在准确率损失比较小的情况下,取得了比较快的计算效果。
过去几年的经验告诉我们深度学习或者机器学习,需要怎么样才能成功,它的成功其实取决于一个循环。首先要有数据,我们有数据可以训练出更好的模型,有模型可以设计出更好的产品,有了更好的产品我们可以给用户提供更好的用户体验,同时获得更好更优质的数据,这样一个循环。这个循环走得越快的话,我们的产品就会做得越好,我们的机器学习就会越成功。
我们现在过去几年深度学习已经取得非常大的成功,之前徐伟老师也提到说未来深度学习有几方面还需要进步的。我也提几个觉得是非常重要的方面。
第一,深度学习或者机器学习还需要更多的可解释性。我们现在的深度学习模型不管它成功了还是失败了,分类对了还是分错了,很难知道为什么,尤其是分错的情况,我们不能说这个参数不对,或者说这个神经元的输出高了一点点,所以分错了,这样的解释不太够的,也不能帮助我们改善提高整个系统。我觉得未来的话需要更多的,可解释性的机器学习。一个思路就是概率生成式模型。
第二,我觉得现在的机器学习或者深度学习欠缺的地方是(逻辑)推理。因为我们过去关注的最多的问题是监督式的学习,监督式的学习里面比较少的(逻辑)推理,我们需要让机器达到人的智能的话,非常重要的一个方面就是让机器学会推理,而这方面现在是欠缺的。一个思路就是刚才前面一位梁家恩先生提到的,概率程序语言。过去在这方面也做了一些工作,最近我和加州大学伯克利的一项成果是能够用概率编译的方法把概率程序推理做得非常快。
第三,单位能量消耗内的智能。现在深度学习训练和预测都是需要非常非常多的能量的消耗的。这个实际上比人的智力的话,刚才苏中博士也提到,人的推理能耗,人大脑的运作只需要大概20瓦,但是我们的GPU,一个普通的GPU可能就需要250瓦,这显然消耗了太多太多的能量,那我觉得后面需要做的是怎么样把能量消耗降下来,把单位能量消耗内的智力提高上去。
谢谢大家。
本文来源于"中国人工智能学会",原文发表时间"2016-04-27