李戈:数据支撑的深度学习

2018-07-30 13:54:09

来源:CIO时代网

  2018年7月22日,一年一度的"第七届中国大数据应用论坛"活动在北京大学隆重举行。本次活动由中国新一代IT产业推进联盟指导,CIO时代学院、北大软件工程研究所主办,全国高校大数据教育联盟、北达软、万山数据协办,北大CIO班学员、CIO时代学院学员、全国高校大数据教育联盟成员、大数据领域专家和管理者等近两百人参加了这次论坛活动,此次活动的主题为:大数据时代的数据保护与利用。北京大学信息技术学院软件所副教授李戈在活动上发表了题为《数据支撑的深度学习》的主题演讲。以下为演讲实录:
\
  Deep Learing目前给大家的生活,包括工业界、产业界带来很大变革。在工业界的应用是2011年在语音领域取得突破,微软用Deep Learing语音识别技术做了一项工作把这个指标一下降低了很多。第二个就是图像领域,2012年时在图象识别领域里做了很大的推进。从此之后Deep Learing技术似乎一下就炙手可热起来。
 
  经常被问到的一个问题,为什么以前这样的技术就不能用?现在这样的技术就这么火,而且用的到处都是呢?最开始回答这个问题,从技术上取得一些突破。在Deep Learing领域里面被人们引用比较多数据量,随着时间进展,数据发挥了很大变化。接触Deep Learing是神经网络,写第一个神经网络程序是1999年。那个时候数据量在10的2次米。到2015年时这个数据一直在不断地攀升,现在构建起来的数据级非常容易就可以达到百万甚至千万的级别。没有这样的数据网络,训练不出来。
 
  我在讲课时曾经举过一个例子,我不知道在座的有没有百度的同事。其实两年以前的百度搜索引擎,当你键入关键字的时候,它后台有很多模型参与运算,其中Deep Learing贡献率超过50%,在那个时候网络结构还是非常简单的。但是这么一个简单的网络结构为什么就能取得这么好的效果呢?大量的数据在后面起着非常大的作用。
 
  除了数据之外,还有一个因素也起着作用。就是反映着计算机环境之下能够构建起来的深度神经网络中所包含的神经元节点的个数。第一个神经网络是1999年,当时写了一个程序,跟现在的网络不一样是平面。在这个平面的网络上面最开始构建了10×10包括100个神经元的小的网络,当时用的奔腾5,4M的内存,当时一台比较普通的PC机,运行十几个小时会看到训练的结果。当把这个网络的大小扩展到100×100,1万个神经元的时候运行了两个星期都没有看到结果。那么现在构建起来的网络有多大呢?2015年在实验室里可以构建起来的网络包括几百个神经元,包括在产业化的公司里运行出来的网络都比这个大得多,所以数据有了,计算力有了。如果没有数据、没有计算力不可能成就当前的Deep Learing,也不可能取得现在的人工智能应用的一些进展。
 
  北京大学软件研究所,从上世纪五几年、六几年就开始做软件一直延续到现在。怎么利用数据来做软件呢?首先是收集大量的软件代码。用大量的数据来训练深度学习的模型,然后利用这些深度学习的模型辅助人们进行软件开发,这是我们在实验室做的事情。为什么要这么做?合作方每天面临数据增加,需要开发需求,无论是修改一个bug还是增加一个新的功能,这都是开发需求,现在软件开发面临的一个状况是什么呢?是说我们必须快速地去完成每一项的开发需求。没有像传统的软件那样经过需求分析、设计,然后再去编码实现各种各样的流程, 所以说在这种情况下就必须要想办法利用AI的手段来辅助软件开发。目的是提高开发效率,第二就是保证产品质量。
 
  在软件开发的过程里头大量的数据在不断地产生。用人工智能的办法帮助评审代码,提高人的效率。从数据来看,现在编程代码大数据已经形成。我们起了个名字叫"编程现场大数据"。在编程现场产生的各类大数据,这类数据符合大数据的特性。它具有瞬时性,程序员在敲击键盘的那一刻,大量的数据已经产生。还有就是海量性,跨地域、跨平台,不断地迅速积累。再就是多样性,它跟多种因素相关,不光是跟人、机器、系统、需求有关,各种各样的都相关。再就是可变性,随着软件开发技术或者是开发环境的不断演变,时时刻刻都在演变,因为演化性本身就是软件的特性之一。
 
  现在的人工智能技术仍然存在很大的缺陷。从我的角度上把当前人工智能技术存在的问题归结成三个方面:
 
  第一,低效。现在的人工智能技术,包括Deep Learing的技术实际上是很低效的。现在的人工智能技术像在瓦特发明蒸汽机之前,那些蒸汽机都比较低效,所谓低效就是它必须烧大量的煤炭才能换取一点点的动力。现在的人工智能技术包括Deep Learing技术就像瓦特发明高效蒸汽机之前的那个阶段一样,现在的人工智能技术或者所构建起来的Deep Learing模型,它烧的不是煤炭而是数据。这就集中体现出来人工智能技术对数据的依赖性,必须要烧大量的数据才能换取一点点的智能,这是当前人工智能一个很大的弱点。
 
  第二,通用化。现在人工智能技术很难做到通用化。就是构造一个模型很难用在很多任务上。不同的任务或者看上去非常接近的任务,都需要构造不同的模型来完成。且不说对于不同的模型要使用不同的数据训练它,必须针对某个任务去做某个特定的模型。现在的人工智能技术就是这样。现在训练的模型能够跟人形成PK的关系,就像编程机器人,人工智能能替代程序员吗?我说不可能,但是能替代那些低级程序员。特别是把高级程序员的能力用工具给放大,那么社会对于低层次程序员的需求就大大降低了。
 
  第三,不透明。什么是不透明?现在的模型,给一个数据,标出来的模型,不透明带来第一个问题就是信任度,也就是安全性的问题。第二个是不可介入。如果数据不透明就没办法介入进去。现在人工智能技术上存在的一个很大的问题,要解决的一个很大的问题是把当前Deep Learing的网络和人们已有的知识怎么能够衔接起来。因为Deep Learing不透明,所以我们没办法把现在有一些知识给直接切入进去,我们只好采取的办法是把知识转化成神经网络能够接受的内容,再结合进去。所以这个方面还是存在一定的问题。