2015年12月10-12日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所、北京中科天玑科技有限公司与CSDN共同协办,以“数据安全、深度分析、行业应用”为主题的 2015中国大数据技术大会(Big Data Technology Conference 2015,BDTC 2015)在北京新云南皇冠假日酒店盛大开幕。
11日下午的深度学习分论坛,地平线机器人科技高级工程师余轶南,阿里巴巴iDST语音组高级专家鄢志杰,厦门大学教授纪荣嵘,华中科技大学教授、国家防伪工程中心副主任白翔,以及微软亚洲研究院研究员洪春涛分享了深度学习在图像识别、语音识别、视觉搜索、文字识别等方面的应用,以及开源深度学习框架的演进。
地平线机器人科技高级工程师余轶南分享了题为《基于深度学习的图像识别进度》的演讲。
从2012年底开始,深度学习从图象识别出发,很快席卷了所有图像里大部分的任务,包括后来的目标检测、图像分割,以及各种图像的应用,以及最近图像超分辨率和跟踪,都被深度学习所颠覆。神经网络系统自由度和它的灵活性非常强,可以用这样一套统一的东西做很多过去需要用不同处理架构做的事情。
算法方面已经做了非常多的工作,将来会在以下几个方面有所突破:第一,理论方面Deep Learning的分析是现在所获取的,需要进行Network的理论分析。第二,无论是谷歌,还是微软今天公布的150多层的网络,都是人工精心做的,这对design非常重要。第三,遇到的真实问题远是很困难的任务,所以很多时候是Structured Data Processing。第四, Logistic 、Counting、Reasonino。第五, over-Reliance ON HP-Data And HP-Communication Faster。
很多数据的获得都是非常容易的,但是有一些数据不是这样,有一些数据获得成本非常高昂,而且出现频率非常低。需要把原来云端计算模型搬到前端,之所以能搬到前端,就要在价格、功耗、成本各方面进行考量。其实相当于云端来说,前端这样的使用场景,身边的每一样设备都需要智能东西对它进行全新的革命。就要有所选择,用一款通用芯片计算单元,还是专门构建这样一款针对DATA Network或者是不同硬件做计算。把计算适用性和指标放在这里。核数比较少的情况下,但是精度运算能力非常强,非常适合逻辑计算,现在大多数电脑和手机都在这个领域做工作。第二个方面是DSP,最大的好处是低功耗和低成本,在身边用得最多的是这个。随着核数越来越多,能耗比是越来越好。
无论是谷歌网络,还是MSR ImageNet网络,都离不开三件事情:第一,迭代。第二是转机。最后是Multiplication。如果你把计算机迭代再加上门,你就可以做Recurrence,这三个基础上非常繁杂,各种各样的Network,使Network服务于不同的奇奇怪怪的需求。可以发现,人脑其实也是这样的架构。人脑要回答几千乘几千问题很困难,但是可以对面前的情况做出反应。电脑可以非常快算出几十亿乘几十亿的数据,但是要处理以上的问题非常难。所以需要深度学习来进行综合。
阿里巴巴iDST语音组高级专家鄢志杰分享了题为《Deep Learning助力客服小二:数据技术及机器学习在客服中心的应用》的演讲。他主要从传统客服中心的现状与挑战、沉淀客服数据、全量客服质检、自助客服四个方面进行了分享。
传统客服中心面临的挑战包括:效率不高,用户体验欠佳;缺乏有效反馈,难以保证服务质量;随业务发展可扩展性差。以阿里巴巴和蚂蚁金融为例,传统客服具有话务量大和用工量大的特点。这种规模膨胀带来了三个问题:面对客户,如何提升服务体验?针对小二,如何提升服务质量?放眼未来,如何通过数据技术及机器学习升级传统客服?
面对以上问题,iDST进行了以下尝试:
客服电话语音识别的难点在于电话对话语音识别是语音识别领域最困难的任务之一,所以需要训练声学模型来识别语音。声学模型是决定语音识别准确率的核心模型之一。快速周转训练声学模型是第一要素,第二是Deep Learning。可以利用更多数据、覆盖更多实际使用场景来提升识别准确率,但更多数据意味着更长的训练周期,所以缩短训练周期是工业界声学模型训练的核心问题之一。
他通过分析GPU多机多卡Machine Learning Middleware、基于DBLSTM的语音识别声学模型、基于DLSTM的问题定位质检、我的客服“因子+行为”自动问题识别对机器学习在语音方面的应用做了进一步分享。其中,问题定位模型需要确定问题类目、收集训练数据。问题类目是定位和质检的目标。
关于未来总结云展望,他提到未来是否有自动问题生成模型,用户说完一句话,或者是说完几句话你还向访问一些东西,澄清一些问题,这时候需要自动问题生成模块回到IVR系统,问出这句话,使得帮助你做判断。于此之外要配响应语音合成技术,还有说话人识别、验证、情绪检测等等,这些合在一起就是智能机器人。
厦门大学教授纪荣嵘分享了题为《视觉大数据系统紧凑性初探——大规模特征哈希与深度网络压缩》的演讲。他主要从面向大规模视觉搜索的特征哈希和深度神经网络压缩这两个切入点介绍了视觉大数据搜索与识别系统。
视觉数据近年来呈爆炸性增长,大规模视觉搜索技术具有紧迫需求。实际应用问题经常面临百千万/亿级视觉(图片、视频)数据库;计算资源受到限制,具有有限的内存容量与时间效率容忍性;传统的视觉特征表示维度过高;倒排索引表内容开销过大;移动与嵌入式系统的场景限制,无法容忍高维实值特征的时空开销,最小化数据通信量的需求。面向大规模视觉搜索的特征哈希具有一定的优势:哈希函数为特征投影快,搜索时间为汉明查表,复杂度低,百万量级图像搜索系统可以存储在内存中。代表性的特征哈希技术包括数据独立哈希和数据非独立哈希。
最早的想法跟数据库里做哈希不一样,数据库生成哈希码,哈希码本身是唯一,如果两个有差别生成哈希码差别很大,汉明距离不能区别你的相似性。通过随机切分平面可以一定保障原始特征空间里两个点足够近,有一定的概率落在同一个哈希码里,所以有一套严格的数据证明。这个性能并没有大家想象的强,所以这个性能并不是非常满意。如果原始特征空间并不完美,一个想法是在原始空间里构造Graph,用Graph Hashing表示两个点的相似性,把Graph Hashing引到一起。计算哈希码优化过程中,只需要对两个小矩阵做低级矩阵分解,通过这种方式大大节约矩阵分解时带来的时间消耗。
对于深度神经网络压缩,主要做CNN压缩,也可以做乘法量化压缩,还可以做参差编码压缩等。之前大家做的工作大多是网络减枝、权值的共享、矩阵压缩、哈希、组合式。他提出应该直接优化模型和判决力,重构线购线性分类误差,中小化线性分类的误差。他介绍了深度神经网络压缩的常用模型AlexNet、SPPNet、VGGNet、GoogleNet。他主要介绍了全局误差最小化压缩,即跨全连接层间,联合最小化非基于线性响应的分类(或特征表示)判决面距离重构误差。
华中科技大学教授、国家防伪工程中心副主任白翔分享了题为《场景文字识别的深度表示方法》的演讲。他主要从问题定义、意义和挑战、算法等方面进行了分享。
场景文字识别是指将场景文字转换为计算机可读可编程的过程。场景文字识别对图像理解会有很大的帮助,可以应用于产品搜索、人机交互等方面,其面临的挑战有颜色、尺度、方向、字体、语种、背景等。这些问题在实际情况里都要考虑进去。正是因为要考虑的因素太多了,所以导致这个问题相当的困难。
文字识别过程分成三个部分:第一,文字进行检测。给你一张照片,你将照片里或者是视频里属于文字的区域找到,以单词的形式,或者是以句子形式抓举出来;第二,识别过程,这些区域依然是图片的格式,需要转换成计算机可以理解的符号;第三,将前面两个步骤统一到同一个框架之下,从检测到识别,都是用一个系统完成,如果是深度学习可以用深度网络全部完成这件事情。他介绍了文字识别的方法。首先是基于MSER,把来自同一个象素的进行分类,文字的笔划往往具有相同的特性,所以进行多尺度的积累,提供的结果是多尺度。同一个文字,文字间的间距有规律,或者是具有相同的颜色。结合规则对非区域进行规律或者删除,剩余就是干净的文字,这是检测最基本的描述值。
文字识别的传统方法是基于连通区域的,存在一定问题。他提出了三层结构来进行场景文字处理:底层卷积层计算文字特征,中层利用回归神经网络来对特征序列进行处理,上层把置信度转换为文字。对于扭曲的文字,他提出了一种处理思想:在卷基层之前加一个变换层进行处理。
基于文字检测的方法,比较直接的方法,对于每一个字符,做两个分类器,可以在两个分类器在图像里进行全局扫描,把响应比较高的地方反馈出来。
场景文字的核心问题还是表述,如何场景里表述文字,表述不是如何进行检测,包括识别都是要进行表述。一个核心的想法是在检测的过程中能不能提高识别,同时识别模型能不能帮你提升检测精度,需要列在一个框架下。并且如果你把这个特征共享,检测时你也用,识别时你也用,能统一起来的话,你会有意想不到的效果。
微软亚洲研究院研究员洪春涛分享了题为《MXNET: An Efficient and Flexible Programming Framework for Deep Learning》的演讲。他主要介绍了MXNet深度学习的工具,可以让大家比较快的写出Deep Learning的程序来。他从程序接口、系统架构、设计细节等方面进行了介绍。
主要的语言是C++,用C++保证了系统的效率。Python、R、 Julia、Go这些语言可以直接拿来写程序调 MXNet,这样保证非常好的编程接口,同时又有非常好的执行。既支持 CPU也支持GPU,因为系统整个做的非常小巧,所以在手机上也可以跑。支持分布式,也支持命令式和声明式的接口。 MXNet的特征包括:自动求导,这对写程序非常有用;占用内存少,可以用更大的model;灵活接口,一种是符号式编程,一种是命令式编程,两个各有优缺点,命令式的语言显然更容易懂一些,更直观一些,但是符号式的更利于做优化,以及更利于做自动求导,所以都保留;支持分布式、单机多CPU。命令式编程提供的接口类似Numpy,不同之处是多CPU支持和并行执行。符号借口类似于函数。MXNet将这两种接口结合了起来,这两种接口都可以使用。
MXNet的设计细节包括:符号执行和自动求导;运行依赖引擎;内存节省。Symbolic好处不是很直观,和一般的编成确实不一样。很难表达动态的东西,比如说SMT里面你要做,你事先不知道多少词,就很难写。第二个重点,是系统里所谓的运行时的依赖引擎,运行式依赖是什么,这是编辑里的概念。比如你要算B=A+1,C=A×2,这里有一个依赖,你必须等到A有值,B、C才能执行。或者是你要算C=A×B,或者是D=C+1,C=A×B算完,D=C+1才可以。同时用这样的依赖引擎多GPU都可以很好的实现。运行依赖引擎包括读依赖、删除依赖、写依赖和共享资源。
这是两层的最终依赖图,可以看到总共创建了八个矩阵,不同颜色三角形标的是他们用的内存,比如说粉色三角形表示三个矩阵可以供用同样的内存。最终,生成八个矩阵,计算当中用了八个矩阵,但是事实上只生成了三块内存。
更多精彩内容,请关注直播专题 2015中国大数据技术大会(BDTC) ,新浪微博 @CSDN云计算 ,订阅 CSDN大数据 微信号。