贾扬清:我对人工智能方向的一点浅见
阿里妹导读:作为 AI 大神,贾扬清让人印象深刻的可能是他写的AI框架Caffe ,那已经是六年前的事了。经过多年的沉淀,成为“阿里新人”的他,对人工智能又有何看法?最近,贾扬清在阿里内部分享了他的思考与洞察,欢迎共同探讨、交流。
贾扬清,浙江上虞人,毕业于清华大学自动化系,在加州大学 Berkeley 分校获得计算机博士学位,目前担任阿里计算平台掌门人。
最近几年深度学习的流行,大家一般认为是从2012年 AlexNet 在图像识别领域的成功作为一个里程碑。AlexNet 提升了整个业界对机器学习的接受程度:以前很多机器学习算法都处在“差不多能做 demo ”的程度,但是 AlexNet 的效果跨过了很多应用的门槛,造成了应用领域井喷式的兴趣。
当然,任何事情都不是一蹴而就的,在2012年以前,很多成功的因素已经开始逐渐显现:2009年的 ImageNet 数据库奠定了大量标注数据的基础;2010年开始,IDSIA 的 Dan Ciresan 首次用 GPGPU 进行物体识别;2011年,北京的 ICDAR 大会上,神经网络在中文离线识别上大放异彩。就算是 AlexNet 中用到的ReLU层,早在2001年神经科学的文献中就有提及过。所以,一定程度上说,神经网络的成功也是一个水到渠成的过程。2012年以后的事情,大家可以读到很多,这里就不再赘述。
成功与局限
在看待神经网络成功的同时,我们也要进一步深挖其背后的理论背景和工程背景,为什么神经网络和深度学习在几十年前失败,但是现在却成功了?它成功的原因是什么?而它的局限又在什么地方?我们这里只能片面地说几个重点:
- 成功的原因,一点是大数据,一点是高性能计算。
- 局限的原因,一点是结构化的理解,一点是小数据上的有效学习算法。
大量的数据,比如说移动互联网的兴起,以及 AWS 这样低成本获得标注数据的平台,使机器学习算法得以打破数据的限制;由于 GPGPU 等高性能运算的兴起,又使得我们可以在可以控制的时间内(以天为单位甚至更短)进行 exaflop 级别的计算,从而使得训练复杂网络变得可能。要注意的是,高性能计算并不仅限于 GPU ,在 CPU 上的大量向量化计算,分布式计算中的 MPI 抽象,这些都和60年代就开始兴起的 HPC 领域的研究成果密不可分。
但是,我们也要看到深度学习的局限性。今天,很多深度学习的算法还是在感知这个层面上形成了突破,可以从语音、图像,这些非结构化的数据中进行识别的工作。在面对更加结构化的问题的时候,简单地套用深度学习算法可能并不能达到很好的效果。有的同学可能会问为什么 AlphaGo 和 Starcraft 这样的算法可以成功, 一方面,深度学习解决了感知的问题,另一方面,我们也要看到还有很多传统的非深度学习算法,比如说 Q-learning 和其他增强学习的算法,一起支撑起了整个系统。而且,在数据量非常小的时候,深度学习的复杂网络往往无法取得很好的效果,但是很多领域,特别是类似医疗这样的领域,数据是非常难获得的,这可能是接下去的一个很有意义的科研方向。
接下去,深度学习或者更广泛地说,AI 这个方向会怎么走?我个人的感觉,虽然大家前几年一直关注AI框架,但是近年来框架的同质化说明了它不再是一个需要花大精力解决的问题,TensorFlow 这样的框架在工业界的广泛应用,以及各种框架利用 Python 在建模领域的优秀表现,已经可以帮助我们解决很多以前需要自己编程实现的问题,因此,作为 AI 工程师,我们应该跳出框架的桎梏,往更广泛的领域寻找价值。
挑战
往上走,我们会遇到产品和科研的很多新挑战,比如说:
- 传统的深度学习应用,比如说语音、图像等等,应该如何输出产品和价值?比如说,计算机视觉现在基本还是停留在安防这个层面上,如何深入到医疗、传统工业,甚至社会关爱(如何帮助盲人看见这个世界?)这些领域,是不仅需要技术,还需要产品的思考的。
- 除了语音和图像之外,如何解决更多问题。在阿里和很多互联网企业中有一个“沉默的大多数”的应用,就是推荐系统:它常常占据了超过80%甚至90%的机器学习算力,如何将深度学习和传统推荐系统进一步整合,如何寻找新的模型,如何对搜索和推荐的效果建模,这些可能没有像语音和图像那么为人所知,却是公司不可缺少的技能。
- 即使在科研方向,我们的挑战也刚刚开始:Berkeley 的教授 Jitendra Malik 曾经说,“我们以前是手工调算法,现在是手工调网络架构,如果囿于这种模式,那人工智能无法进步”。如何走出手工调参的老路,用智能提升智能,是个非常有意思的问题。最开始的 AutoML 系统依然停留在用大量算力暴力搜索模型结构的层面上,但是现在各种更高效的 AutoML 技术开始产生,这是值得关注的。
机会
往下走,我们会发现传统的系统、体系结构等知识,计算机软件工程的实践,会给 AI 带来很多新的机会,比如说:
- 传统的 AI 框架都是手写高性能代码,但是模型如此多变,新的硬件平台层出不穷,我们应该如何进一步提升软件效率?我们已经看到有通过编译器技术和传统的人工智能搜索方法来反过来优化AI框架,比如 Google 的 XLA 和华盛顿大学的 TVM,这些项目虽然处于早期,但是已经展现出它们的潜力。
- 平台如何提升整合能力。在开源领域,大家的做法是一个人,一台机器,几个 GPU ,训练比较学院派的模型。但是在大规模应用中,我们的数据量非常大,模型非常复杂,集群还会出现各种调度的挑战(能不能一下子就要求256个 GPU ?计算资源是否可以弹性调度?),这些对于我们自己的机器学习平台,以及云上向客户提供的服务,都提出了非常多的挑战。
- 如何进行软硬件的协同设计。在深度学习的计算模式开始逐渐固化的时候(比如说 CNN ),新硬件和特殊硬件(比如 ASIC )的优势就开始体现出来了。如何实现软硬件的协同设计,防止“硬件出来了,不知道怎么写程序”或者“模型已经变了,硬件一出来就过时了”这样的问题,会是将来几年中很大的方向。
人工智能是一个日新月异的领域,我们有一个笑话说,2012年的科研成果,现在说起来都已经是上古时代的故事了。快速的迭代带来的大量机遇和挑战是非常令人兴奋的,无论是有经验的研究者还是新学 AI 的工程师,在当今云化,智能化的年代,如果能快速学习并刷新算法和工程的各种挑战,就可以通过算法创新引领并且赋能社会各个领域。这方面,人工智能领域开源开放的各种代码,科研文章和平台给大家创造了比以前更容易的入门门槛,机遇都掌握在我们自己手中。
原文发布时间为:2019-04-15
本文作者: 贾扬清
本文来自云栖社区合作伙伴“ 阿里技术”,了解相关信息可以关注“ 阿里技术”。
相关文章:

吴甘沙:天外飞“厕”、红绿灯消失,未来无人驾驶将被重新定义
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)2019 年9 月 5 日至 7 日,由新一代人工智能产业技术创新战略联盟(AITISA)指导,鹏城实验室、北京智源人工智能研究院支持,专业中文 IT 技术社区 CS…

Linux内核--网络栈实现分析(二)--数据包的传递过程--转
转载地址http://blog.csdn.net/yming0221/article/details/7492423 作者:闫明 本文分析基于Linux Kernel 1.2.13 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”…

C++/C++11中std::stack的使用
栈stack 是一个容器适配器(container adaptor)类型,被特别设计用来运行于LIFO(Last-in First-out,后进先出)场景,在该场景中,只能从容器末尾添加和删除元素,其定义在stack头文件中。stack默认基于std::deque实现&#…

团队前四次作业——个人总结
团队前四次作业——个人总结 描述 团队名称待就业六人组相关团队第四次作业答辩——反思与总结做了哪些事?工作量、完成度 作业负责工作量完成度团队队员展示创意合照后期1h95%项目选题报告编写创新和收益部分2h85%项目原型设计原型设计6h95%需求规格说明书功能需求…

吴甘沙:天外飞“厕”、红绿灯消失,未来无人驾驶将被重新定义 | AI ProCon 2019
2019 年9 月 5 日至 7 日,由新一代人工智能产业技术创新战略联盟(AITISA)指导,鹏城实验室、北京智源人工智能研究院支持,专业中文 IT 技术社区 CSDN 主办的 2019 中国 AI 开发者大会(AI ProCon 2019&#x…

MySQL基础day03_数据的导入、导出-MySQL 5.6
MySQL基础day03_数据的导入、导出-MySQL 5.6注:把数据按照一定格式存放到文件里才能进行数据的导入。1,数据导入的条件把文件里的内容保存到数据的表里;把数据按照一定格式存放文件里;注:默认情况下,只有管…
“含光”剑出,谁与争锋?阿里重磅发布首颗AI芯片含光800
作者 | 夕颜、胡巍巍 编辑 | 唐小引 出品 | AI 科技大本营(ID:rgznai100) 9 月末的杭州气温适宜,宜出游,宜在湖边餐厅浅酌一杯清茶消闲。但在钱塘江水支流河畔的云栖小镇,却完全一副与闲适氛围不相称的热闹景象。 …

c++面试题中经常被面试官面试的小问题总结(一)(本篇偏向基础知识)
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10711810.html 1.类中的函数定义后加了一个const代表什么? 代表它将具备以下三个性质:1.const对象只能调用const成员函数。2.const对象的值不能被修改,在…
矩阵特征分解介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)
对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其它位置都是零,对角线上的元素可以为0或其它值。形式上,矩阵D是对角矩阵,当且仅当对于所有的i≠j, Di,j 0. 单位矩阵就是对角矩阵,对角元素全部是1…
Entity Framework CodeFirst数据迁移
原文:Entity Framework CodeFirst数据迁移前言 紧接着前面一篇博文Entity Framework CodeFirst尝试。 我们知道无论是“Database First”还是“Model First”当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Code First如何更新已有的模型呢&…
限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!
2019 年12月5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN、中科天玑数据科技股份有限公司协办的 2019 中国大数据技术大会,将于北京长城饭店隆重举行。届时,超过百位技术专家及行业领袖将齐聚于此&…

Google AI 系统 DeepMind无法通过 高中数学
Google 旗下 DeepMind 团队让 AI 系统接受一项高中程度的数学测试,结果在 40 道题目中只答对了 14 题,甚至连「1111111」也算错了。说来难以置信,Google AI 系统能打败人类世界棋王,却无法通过高中程度的数学考试。上周࿰…

C++11中std::tuple的使用
std::tuple是类似pair的模板。每个pair的成员类型都不相同,但每个pair都恰好有两个成员。不同std::tuple类型的成员类型也不相同,但一个std::tuple可以有任意数量的成员。每个确定的std::tuple类型的成员数目是固定的,但一个std::tuple类型的…

PHP Countable接口
实现该接口可以使用count()方法来获取集合的总数转载于:https://www.cnblogs.com/xiaodo0/p/3611307.html
矩阵奇异值分解简介及C++/OpenCV/Eigen的三种实现
奇异值分解(singular value decomposition, SVD):将矩阵分解为奇异向量(singular vector)和奇异值(singular value)。通过奇异值分解,我们会得到一些与特征分解相同类型的信息。然而,奇异值分解有更广泛的应用。每个实数矩阵都有一个奇异值分…

经典!工业界深度推荐系统与CTR预估必读的论文汇总
(图片付费下载自视觉中国)来源 | 深度传送门(ID: gh_5faae7b50fc5)导读:本文是“深度推荐系统”专栏的第十一篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变…

docker上传自己的镜像
https://blog.csdn.net/boonya/article/details/74906927 需要注意的就是命名规范 docker push 注册用户名/镜像名 tag命令修改为规范的镜像: docker tag boonya/tomcat-allow-remote boonyadocker/tomcat-allow-remote转载于:https://www.cnblogs.com/MC-Curry/p/1…

多个class相同的input标签 获取当前值!方法!
2019独角兽企业重金招聘Python工程师标准>>> var a $(this).prev( ".你的class" ).val(); 转载于:https://my.oschina.net/u/1169079/blog/210082

C++11中std::forward_list单向链表的使用
std::forward_list是在C11中引入的单向链表或叫正向列表。forward_list具有插入、删除表项速度快、消耗内存空间少的特点,但只能向前遍历。与其它序列容器(array、vector、deque)相比,forward_list在容器内任意位置的成员的插入、提取(extracting)、移动…

即学即用的30段Python实用代码
(图片付费下载自视觉中国)原标题 | 30 Helpful Python Snippets That You Can Learn in 30 Seconds or Less作 者 | Fatos Morina翻 译 | Pita & AI开发者Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自…

如何配置IntelliJ IDEA发布JavaEE项目?
一、以war的形式运行项目 步骤1 新建或者导入项目后,选择File菜单-》Project Structure...,如下图: 步骤2 配置项目类型,名字可以自定义: 说明:这里的Artifact如果没有配置好的话,配置Tomcat时没…

网络分布式软件bonic清除
近期,有一款网格计算软件,在很多服务器上进行了部署,利用cpu进行运算。虽然未构成安全隐患,但是比较消耗资源,影响设备正常运行。今天对设备彻底检查,发现了一个分布式计算软件boinc,他是利用网…

C++/C++11中std::list双向链表的使用
std::list是双向链表,是一个允许在序列中任何一处位置以常量耗时插入或删除元素且可以双向迭代的顺序容器。std::list中的每个元素保存了定位前一个元素及后一个元素的信息,允许在任何一处位置以常量耗时进行插入或删除操作,但不能进行直接随…

React组件设计之边界划分原则
简述 结合SOLID中的单一职责原则来进行组件的设计 Do one thing and do it well javaScript作为一个弱类型并在函数式和面对对象的领域里疯狂试探语言。SOLID原则可能与其他语言例如(java)的表现可能是不同的。不过作为软件开发领域通用的原则࿰…

阿里AI labs发布两大天猫精灵新品,将与平头哥共同定制智能语音芯片
作者 | 夕颜出品 | AI科技大本营(ID:rgznai100)2019 年,去年刮起的一阵智能音箱热浪似乎稍微冷却下来,新产品不再像雨后春笋一样层出不穷,挺过市场洗礼的产品更是凤毛麟角,这些产品的性能、技术支持和体验基…

js 中文匹配正则
为什么80%的码农都做不了架构师?>>> /^[\u4e00-\u9fa5]{2,4}$/gi.test() 匹配中文正则 转载于:https://my.oschina.net/fedde/blog/211852
Caffe中对cifar10执行train操作
参考Caffe source中examples/cifar10目录下内容。cifar10是一个用于普通物体识别的数据集,cifar10被分为10类,分别为airplane、automobile、bird、cat、deer、dog、frog、horse、ship、truck,关于cifar10的详细介绍可以参考: http://blog.csd…

解决掉这些痛点和难点,让知识图谱不再是“噱头”
(图片付费下载自视觉中国)作者| 夕颜出品| AI科技大本营(ID:rgznai100)2012 年,谷歌正式提出知识图谱的概念,当时,研究人员的主要目的是用来优化搜索引擎技术。今年初,谷歌前员工&am…

mongodb使用常用语法,持续更新
设置快捷命令D:\mongodb4.0.8\bin>mongod --config "D:\mongodb4.0.8\mongo.conf" --auth --install --serviceName "MongoDB"mongodb配置文件#数据库路径dbpathD:\mongodb4.0.8\data\db#日志输出文件路径logpathD:\mongodb4.0.8\data\log\MongoDB.log#…
Android之NDK开发的简单实例
NDK全称为Native Development Kit,是本地开发工具集。在Android开发中,有时为了能更好的重用以前的C/C的代码,需要将这些代码编译成相应的so,然后通地JNI以供上层JAVA调用。当然,也有的是为了更高的保护性和安全性。下…