创新工场AI工程院副院长王咏刚:AI工程实践与人才成长路径

2018-06-17 06:05:01爱云资讯

6月6日周三晚,北京大学“人工智能前沿与产业趋势”最后一讲,本期创新工场CTO、人工智能工程院副院长王咏刚,分享了AI工程实践与人才相关的问题,提出从学校培养出来的学生,如何真正融入产业界,如何得到产业界的认可,并且开创一番自己的事业。

本期内容案例与理论结合,详细解答了产业界人才需求的问题,量子位作为合作媒体,为大家带来详细课程笔记一份。

主讲嘉宾:王咏刚,创新工场CTO、AI工程院副院长。此前担任谷歌资深工程师超过10年。2016年加入创新工场人工智能工程院担任副院长,带领团队深耕人工智能领域的科研转化、人才培养,与来自世界顶级机构的著名工程师和顶尖科学家合作探索技术、数据、人才、商业价值的结合,推进人工智能在科学研究与商业领域的实践。作为联合创始人,从零参与了AI赋能公司—创新奇智的创建。在AI生态方面积极推动数据开源、人才培训两大基石建设,发起“AI Challenger全球人工智能挑战赛“、“DeeCamp 人工智能训练营” 等大型人才培养项目。

课程导师:雷鸣,天使投资人,百度创始七剑客之一,酷我音乐创始人,北京大学信科人工智能创新中心主任,2000年获得北京大学计算机硕士学位,2005年获得斯坦福商学院MBA学位,同时也是“千人计划”特聘专家。

产业界与学术界AI人才的区别

今天的主题是“AI中实践和人才的成长路径分析”。

说到AI人才的成长,我觉得会有两个明确的方向:

一个是学术方向,真的特别喜欢做AI相关的科研,喜欢学术圈。比如读完博士之后,找一个真正喜欢的领域,在这个领域做研究,发表论文,参加顶会,影响学术界,甚至有一些突破,以帮助基础的知识不断的进展为荣誉。

走学术圈这样的思路,也是一个很好的选择。但从数量上来看,计算机系相关专业培养出来的人才,大多数人可能是进入产业界,是去解决产业界里面最有挑战的问题。

本科、硕士、博士,这几个不同的阶段中学到的东西和产业界的需求之间有什么样的区别?会有一个所谓的鸿沟吗?

具体案例

先说一些很具体的例子。

最近AI的创业里,B2B的公司很火,也就是公司的产品和解决方案是提供给另一家公司使用,而不是提供给单个用户。

B2B型的创业里有很多很好的,并且大家耳熟能详的公司,比如商汤科技、旷视科技等公司。它们本质上都是B2B或者B2G,他们目前所做的事情就是为一些特定的商业场景来提供基于AI的解决方案或者产品,而且他们现在做得很不错,这一条路上也诞生了好几个这样的独角兽的公司。

举一个很简单的B2B场景的例子。2016年9月创新工场AI工程院成立之后,刚开始做了一个小项目:帮原麦山丘的面包店做了一个自动结账系统。

在这家面包店里摆了一台黑色的机器,现在的结构已经做的很好了,但在最初研究的设备设计得很简陋,就只有一个架子、一个灯和一个摄像头。

现在这个机器的工作流程是:面包放进盘子里,把盘子放在机器上,马上就能告诉顾客,买了几个面包,每个面包多少钱,总价多少钱,然后手机扫码结账。

类似这样的系统只是新零售里面一个很小的领域。为什么要举这个例子呢?因为想说明这样一个情况:刚从学校出来的同学们,他们学过了很多深度学习的知识,学过了很多AI的知识,但即便是做这样一个非常小的面包识别系统,也未必能够处理好里面每一个细节。

比如对这个面包做识别的时候,需要知道买的什么样面包,每个面包多少钱,其实这本质上是一个识别+检测的任务。需要知道每一个面包的位置,在这个位置的Bounding Box里做一个Classification。

对原麦山丘这样类似的面包店来说,面包的品类大概是40种到100种之间,所以这样识别检测的任务也不会太复杂。

在这样一个简单的Detection和Classification的任务里,有很多能用到的开源代码,很多学生都知道上YOLO或者SSD解决,但这只是从算法层面来解决,并不是工程方面的解决。那在工程的层面,除了上SSD或者YOLO把面包识别出来之外,还必须考虑哪些问题?

算法层面非常简单,这就是一个多物体的分类和检测的问题;但在工程层面,需要考虑到一些很细节的问题,比如当顾客拿面包结账的时候,顾客并不知道运行的是计算机的算法,如果他把两个面包叠在一起了该怎么解决识别的问题?

首先,重叠得不多的时候,能不能直接识别出来?其次,重叠得特别多的时候,能不能给顾客一个提示,告诉他这里有面包重叠,需要把面包分开。这是很正常的需求,可是很多学习深度学习的学生,很多学习计算机视觉学生,未必考虑到。

再举个例子。通常学习一个视觉方案的时候,考虑RGB这3个通道就可以。那如果加一个Depth的通道,这样的RGBD的通道,放在一个CNN中该怎么处理?如果再加一个测试的摄像头呢?两个两套RGB通道的视觉效果,是分别处理,还是混合处理?这就是非常现实的工程化的选择。

其次在算法封装层面,当我们希望把整个的系统部署在原麦山丘这样一个面包店的时候,这个系统当时的运行环境是什么?对模型的要求是什么?能不能把模型压缩到比如说十兆字节以内?

平常在Windows开发的时候,假设面包店里放的是一台Linux,平常在Linux开发的时候,假设面包店里真正的环境是一个Android,是一个ARM系统的东西,那你是不是能够把模型很好地部署在这里?

还有一个非常简单的问题:在识别面包的时候,如果面包店的厨师突然发明了一种新的面包,怎么办?怎样把新面包添加到系统中,让系统很快地识别出来?需要工程师再跑一趟面包店吗?肯定是不用的,需要一个新面包的时候可以远程地拷进去,远程模型都可以push过去。

但这件事涉及到一系列的问题:从面包图像采集到图像怎么传回来?怎样把模型更新?更新后怎么复制过去?如果识别的效果发生波动的时候怎么办?比如上一周识别率在99%多,这一周发现识别率降到80%,这中间产生了什么问题?如何通过更新系统和更新模型来修复这个问题?这些问题都是在工程领域需要考虑的,也是做科研和上学的时候很少去考虑的事情。

还有硬件层面的问题,做软件的时候要不要考虑硬件的问题?举一个简单的例子,做面包识别系统的时候,在灯光照射这件事情上,迭代了有快三周的时间。

灯光是连锁反应,我们当时把一个深度摄像头放在上面,灯光加在它旁边,这样做出来效果最好,拍照片非常清楚。

但是就遇到了两个严重的问题:第一,灯光是会发热的,这个热度有可能影响到摄像头的稳定性,进而影响到采集的照片质量,这是一个影响算法问题;第二,灯光的照度,特别是色温的指标,它不一定是完全恒定的,会有一些小变化,这些小变化很有可能干扰模型的识别率。

那在整体的算法上,应用层面怎么去考虑灯光和摄像头的组合,减少最终采集到图像的干扰,这也是很简单很基本的工程问题。

在网络服务层面也一样,在真正的面包店里,数据怎么传输到后台?后台的公司模型怎么传输到面包店里?怎么部署到这样一台自动的结账机器里面去?有非常多的这样的小事情。

从学校里出来,走入到一个工程领域,一定会面临这样类似的语境转换。在学校里想得更多的就是用什么算法,如何实现,效果怎么样,可以写什么样的paper;但到了工程的语境里,就会提出无数的要求和限制,可能会遇到想法很好,但是条件受限,算法没法用的情况。遇到这样的情况也只能根据眼前的限制条件,反过来去调整算法。

如果不知道所有的工程领域的这些需求,不理解工程领域的这些语境的话,是没有办法真正适应工程界,成为一个特别好的AI人才。

也就是说,目前从学科教学到工程领域的实践之间,存在一个空白的空间,这个空间需要大家在毕业前或者在学习期间就思考:毕业后走到了一个很好的工作岗位,该怎么去适应这样的AI人才需求?这里面最本质的原因是什么?

它最本质的事情是在学校里学生学的和老师教的,几乎都是一种离散状态的知识,也几乎都是单点的或者单线的知识。

应用的逻辑

我们学了很多操作系统的知识、编译原理的知识、数据结构的知识,还有网络的,硬件的,计算机原理等等很多知识。但问题在于学生学习这些知识的时候,或者大多数老师在教授这些知识的时候,没有仔细考虑到应用的逻辑。也就是说这些知识在一个特定的应用场景中间,每个知识处在什么位置?应该发挥什么作用?

那理解所谓的应用逻辑有什么价值?为什么要理解这个应用逻辑?因为如果只会学校的课本知识,只会单点的知识,在工业界往往只能干一些类似螺丝钉的活,工作内容相对固定,但这并不是产业的典型工作。

产业的典型工作是:遇到一个没解决过的问题,没有paper写过这个问题该怎么解决,是需要自己去想这个问题该怎么解决。

面临到一个没有见过的问题,这是对系统逻辑和应用逻辑的考验,考验你能不能把学校学过的知识活用在这样的应用场景下。

通常在做任何解决方案的时候都会画技术栈,在这个技术栈里,能不能清晰地知道学过的课本知识,它们在这个技术栈里的位置?这些知识之间是一个什么样的逻辑关联?它的本质是什么?表象是什么?这些东西非常关键,而且非常有用。

我最近面试工程师和实习生的时候,经常会有学生的履历是:视觉做得非常好,有很多经验,或者在视觉的比赛得过第一名,用过很多种不同的CNN模型等等。

我会问他们一个非常简单的问题:你用那么多模型,那你帮我想想在这个模型里面这个卷积的概念到底是什么?我会追问关于卷积关联性的问题,而不是卷积在CNN里面是怎么用的;学生们肯定清楚地知道卷积在CNN怎么用,但很多学生未必知道卷积在其他领域是什么样的关联方式。

我经常会问来面试的同学:你在CNN里经常用的是一种二维卷积,那卷积的N维形式是什么样的?然后还会追问,那你写一个一维的卷积的公式是怎么样?很多学生马上就懵了:怎么会有一维卷积呢?两个数字放在一起怎么算?碰见这种情况我会引导一下他:那你学过信号处理没有?他马上就能恍然大悟:噢信号处理有好多一维卷积。

这种事情就表明一个问题:很多学生不善于把一些共通的东西串在一个知识体系里。学CNN的时候,脑子里就是CNN,学傅里叶变换、小波变换的时候,未必会去想这个东西和卷积是什么关系。

所有学科之间的关联,或者每个课程的关联,每个知识点之间的关联,这是区分一个学生到底学习得透不透彻的很重要的标志。

学得透彻的学生在面对一个新问题的时候,他可以利用积累的这些知识点之间的关联,利用所谓的应用逻辑,真正从底层去分析这个问题的解决方案。

学得不透彻的学生面对一个新问题时候,他更经常做的是问别人有没有现成的方案,有没有现成的paper,有没有现成的code从GitHub就可以下载,做的所有的事情永远是在表面。

这是在学科学习和工程实践领域的一个非常明显的区别。

工程实践要求的是能够把知识点综合起来的能力,用一种自己认为可行的逻辑综合起来,并且能够用这种综合起来知识点去解决未知问题的能力。

学科学习里的要求相对会少一些。大多数情况下学生学到的可能更多地还是一些单点的或者单线的知识。

所以我觉得通常可以从这样一个三角形的关系里面去理解这件事。学生的个人成长路径和学术环境的路径,以及产业环境路径有交合的关系,个人成长路径会从产业环境和学术环境里共同吸收营养。

从学术环境里面可以得到这些单点的知识,可以得到非常扎实的关于每一个学问,每一个独立学科,每一个独立课程的体系介绍,但是离开了产业环境,就很难得到一个系统化的逻辑把这些知识串联起来应用在一个具体的问题里。

给学生的建议

这种涉及到个人发展的问题,可能要从自己读书的时候开始去想:多少时间花在学术知识的积累?未来如果不是一个纯学术型人才,想成为一个像马斯克那样的真正的工程化、商业化的各种方面都特别成熟人才的时候,是不是应该要对自己的要求更高?

从学生时代就需要想,应该通过什么样的方式,是通过实习这种实践项目的方式,还是去做一些力所能及的小创业、微创新等,真正去体验产业环境对技能的一个要求。

技术层面来看如何与产业界接轨

更多跟大家讨论一些技术细节吧。更多讨论一些技术相关的层面的事情,在技术上需要做哪些积累,在哪些知识面层面需要开阔,需要在哪些领域建立起刚才所说的应用逻辑。

深度学习与AI加速芯片

先从深度学习和跟AI有关的加速芯片谈起。因为真正第一天到产业环境工作的时候,一定要去跟这件事打交道。

在宿舍或者在实验室里通常是玩一下TitanX,或者1080Ti的显卡。但是一旦进入到产业环境和工程环境,就远远不止于此,一定要理解AI的计算架构,和关于深度学习的加速环境,至少要了解你在产业环境里可选的计算架构有哪些,这几乎是每个参与产业界学生必备的知识。

现在关于深度学习的加速芯片已经成为一个非常大的创业领域,在美国在中国都能看到很多关于深度学习加速芯片的创业公司,比如地平线、寒武纪,包括现在很多自动驾驶公司也都在宣称说正在做自己的AI加速芯片。

实际上AI加速芯片也在以非常快的速度在发展和迭代,在学校里接触特别多的可能是GPU。到了产业界,经常会接触到一些真正在产业界里使用的AI的加速方式,包括像ASIC芯片、IPG的芯片,甚至包括一些现在更新更多的架构。

为什么用它们训练功耗可以做得很低,工艺提高之后能不能满足手机里AI计算的需求,这都是很现实的一些需求。但是同学们在学校里面接触这种领域知识的机会相对少一点,我见过不少刚到产业界的学生连GPU的驱动程序都未必会装,但是它已经做了很多深度学习相关的工作了,这是很矛盾的一件事。

能力停留在所谓的课本上和纸面上,没有落实到真正的动手能力。如果连环境和驱动程序都装不了的话,我也很难相信你能够真正处理异构环境下的开发任务。

在这种异构环境的开发的情况下,产业界基本上会分成三大类来讨论。做深度学习训练的时候,训练用的数据中心通常是一种解决方案,现在可能最明星的方案是Google的TPU,谷歌通过cloud上面的这些AI的服务,提供TPU的资源,然后参与训练的计算。

但实际上在产业界的私有部署的环境里面,更多地还是在用的GPU的解决方案,包括像P100这种实际的商业化的GPU解决方案,而不是像TitanX、1080Ti这样游戏级的显卡。

在训练阶段之后,产业界更亟待去解决的问题是inference这样的推断阶段。因为inference在硬件限制的要求通常要比training要多。

可以用一百块GPU去train一个非常好的model;但使用的时候,会发现使用情境可能被限定在所有主流的安卓手机和iPhone手机上的一个小程序。这个时候就会发现如果网络太复杂,模型太庞大,inference计算就没办法实时地很快速地完成。

这就对模型训练提出了另一个挑战:如何简化模型

这里面有很多问题,所以对inference环境的选择和成本上的考虑最终会反过来影响算法的选择。这和我们堆好多GPU资源参加一个比赛,得到一个最好的成绩,或者跑出来一个最好的paper要的结果,这是完全不同的两回事。

在inference阶段也是分为两种情形:一种情形是在数据中心的inference,也就是AI on Cloud,在云上提供的机器学习服务,通常是在数据中心这种相对比较高配置的环境下做。

但是更常见的是一些终端的位置。比如说在随便一个地方放一个摄像头,那么这个摄像头采集到的影像就可以轻易地分析出来:在座的教室里面到底都有多少人,有哪些人是站着,有哪些人坐着,有哪些人在看手机,有哪些人在看黑板等等。

现在的算法非常简单,也很清晰,而且实质的东西都能得到。

如果场景换一下,考虑的不是这里某一个摄像头,而是北大现在所有教室整个的摄像头网络。我想知道北大所有的教室里面正在上课的课程里有哪些人站着,哪些人坐着,哪些人看手机。

这个计算量就会变成一个非常庞大的计算量,就面临这样的选择:是把所有的摄像头捕捉到的Raw data全都传输到一个云的服务,还是一个中心的节点去计算,还是让每一个终端的摄像头都发生一些终端计算,再把计算结果返回到云端,返回到中心服务。

在产业界每天都要考虑这样的问题:是不是应该给一个摄像头配备一个简单的计算单元,计算单元应该是什么样?它是一个CPU支持的计算单元,是GPU支持的还是FPGA的值?还是一个可能更小的手机的芯片?这件事有很多不同的技术选择,如何理解这样的选择?如何把算法做到适应这样的选择,这是今天在产业界对AI工程师的一个很明确的要求。

在整个加速芯片的发展里面,GPU仍然是现在开发应用里面最常用的一种体系结构。在大概2000年前后发展出来的GPU通用计算的概念,让GPU可以有处理大规模的通用计算,特别是深度学习中基于矩阵和向量计算的能力,这种能力是今天GPU占据了很大市场份额的根本原因。

在这种能力的情况下,学生们其实可以从学习阶段就真正深入理解这样的能力。当使用GPU的时候,为什么会比CPU提供更强的对深度学习的支持,它为什么能够在并行做矩阵乘法运算或者类似的向量、张量运算的时候获得比CPU好得多的效果,本质上是体系结构的设计造成的。

我面试微电子专业学生的时候,可能会问这种类似的问题:举几个任务的例子,这几个任务是CPU做得非常好,但GPU做的不好;再反过来举几个任务,GPU做得非常好,CPU做的不好。

对计算机体系结构了解得比较清楚的同学回答这样的问题应该很容易。CPU和深度学习的加速芯片之间绝不是替代的关系,它们各有适用范围的。

在GPU里面,包括GPU的编程变成通用的kernel的编程的方式,可以在GPU里面部署很多并行的计算单元,包括特别典型的矩阵运算,就可以拆成很多计算单元来分布在GPU的每一个计算单元上计算,最终把合并的结果矩阵返回回来。

这张图是CUDA里的两个示意图,表示了如何在矩阵乘法里用两种不同的并行计算的思路把整个计算变成分布式,让GPU用比CPU快很多倍的方式完成矩阵乘法计算。

这是谷歌的TPU集群的样子。在产业界里,会更多和类似这样的东西接触,而不是实验室里经常玩的一个机器配一块显卡的模式。

再讲一个我经常使用的面试题,我经常会问:当你把矩阵乘法放在多个的并行处理单元的时候,或者两种情况,一种是并行处理出来,当一个计算机有非常多的并行处理能力,不管是CPU还是CPU;第二情况是分布式处理,分布式的环境,有1万台计算机的时候,要算一个100万乘100万这么大的矩阵乘法,算法该怎么做?

这是一个很有意思的问题,而且有非常多的不同场景,但是这个问题本质上来讲非常有助于我们去理解计算机的一些基础架构,特别是一些在并行计算和分布式计算这两块的基本的设计思想。

即便是对矩阵运算,CUDA的建议里面也包括不同的处理方式,那么当你把一个矩阵运算变成一个分布式运算的时候,思路到底是什么样?是按照列和行来计算的,还是按照小的矩阵来计算。

编程语言

讲一些更基础的方面,每个人在学计算机的时候一定会接触到的关于编程语言的东西。编程语言这件事情本来没有那么复杂,但是到了AI领域它就变得越来越有趣了。

在AI时代之前,我们对编程语言理解可能会相对比较清晰,比如清楚地假定做C语言的话,特别适合的就是系统级的后台的程序;做C++的时候,可能更适合的是不同类型的服务程序或者逻辑复杂的程序等等;用Java做的时候,都是一些很顺手的很全的工程栈;做python的时候,通常有人会说AI上可能更适合一些这种连接性的工具型的或者脚本型的工具。

以前基于这种高性能计算的东西,算法的东西大部分会首选用C或者Java这样的语言来写,可是今天当你去构建一个深度学习架构的时候,大大多数人都会首选Python。

这是一个很神奇的事情,倒退几年,大家构建机器学习的环境的时候,很多人会选R。现在根据一些区分发现我们机器学习领域最流行的可能还是Python和R。

这两个语言,一个几乎垄断了深度学习领域的各种框架,各种算法的开发;一个垄断统计机器学习领域,也就是相对比较传统的机器学习领域做逻辑回归,做决策树等等这些传统的机器学习算法的开发,这是今天在机器学习领域,编程语言的现状。

很多人都在问这样的问题:为什么Python语言R语言能在机器学习领域突然大放异彩,突然变成今天的一种主流语言。

有很多很有趣的原因。往前回溯一下,在五六十年代,做人工智能的时候,很多是在用LISP语言的。

当年用LISP做过一个非常有趣的人工智能问题:告诉计算机,让计算机去场景里面抓取一个红色的块。

这样的话计算机就是虚拟场景,不是一个真实的机器人,一个虚拟场景里面就会根据这样一个指令,理解出来一个行为去做这样的动作,这是人工智能领域非常早的自然语言理解的一个命令式的机器人环境。

机器人模拟环境,这种自然语言理解是完全基于LISP语言这样符号化编程的方式来处理的。在这种符号化编程里面体现的非常多的思想,在我们今天的所有的几乎所有的深度学习框架里面都是一个主要的支撑成分。

R语言不多讲了,R流行主要是跟当年的统计机器学习有关,而R本身是一个特别适合做数据统计分析和规律搜寻、规律总结的语言。

Python今天成为机器学习领域非常显赫的语言,我觉得有非常多的原因:

第一个很重要的原因就是Python在深度学习领域,它不是作为一个连接的语言。编写了一个CNN的时候,这个CNN网络从Python定义到最终落实到一块GPU或者一块CPU上运行,它不是由Python语言完全解决掉的东西。TensorFlow的框架,包括其他框架,他仍然是用C++、C语言和CUDA这样底层的编程API去解决底层的支持。Python仍然是类似于一种上层的指令语言或者脚本语言的一个功能去指挥整个CNN网络的运行。

第二个原因是Python特别适合在科研场景里写一篇paper的时候做验证。因为做验证的时候不用考虑怎么读取数据,怎么读取图像,所有的Python的句子都写好了,工具都写好了,只要把它读进来就行了。我只要关注最重要的几条信息,如果同样的一个任务去拿C++写,老师同学可能得花半年时间先把C++学好,所以Python是一个特别适合科研的语言,也正因为如此,AI从科研界走到工程界造成的一个反向影响,就是工程界本来推崇的C语言、C++语言、Java语言可能在AI领域都不被重视了,Python语言反而变成了重要的粘合剂。

开发规范

提一下开发规范的问题。

在Google的时候开发规范几乎是程序员生活的一部分,所以Google完全开源出来之后,对整个开发社区是一个非常好的帮助。

但是在初次加入到产业环境的学生看来,这些东西还是一个非常必要的学习门槛。最终开源出来的规范,它是由两部分组成的:一部分规定了语言的格式;另一部分更重要的是对语言使用的时候有什么要求,很多学生使用语言的时候可能不在意这个问题。

在使用语言的时候,这个语言了提供100把锤子,不是说一定要用程序把100把锤子用光。这种想法一般叫炫技,如果用C++语言炫技就更不得了,写出来没有人能看懂,炫技起来完全是无底洞,可能连C++的规范制定者都未必掌握的清楚,所以炫技派在工业界在产业界都是非常反对的。

在工程界相对会严格要求:Lambda程序应该编写成什么样,不能编写成什么样,在Google Style Guile中都有非常清晰的鉴定。

深度学习框架

真正的深度学习框架为开发者提供了一个易于开发深度学习算法和算法模型的支持代码库和支持框架。这种框架的出现,降低了我们的开发成本,但是在产业界,如果想要成为更厉害的程序员,我们可能需要进一步了解深度框架的本质,推荐大家去读一读TensorFlow、Caffe、MXNet等一些框架的原理文档,关键部位的代码。

深度学习框架的本质是管理数据流与控制流,在TensorFlow中数据流就是张量,控制流就是张量的运转和在每一个运转节点的计算。

TensorFlow这类框架使用了符号执行这种技术,它需要等设定好运算方式的步骤后才进行运算,这与命令式程序不同,符号式程序执行完毕后,并没有真正的数值计算发生,而是产生了一个计算关系,一个计算图,这样的执行效率更高,无论是内存消耗方面还是执行速度方面。

因为符号执行可以在计算图层面进行多种优化,其中计算优化比一步一步计算要节约大量时间,尤其是对于有大量张量,大量卷积运算和矩阵相乘这种场景的时候,里面有很多机会进行图优化,相关的论文也很多。

并行的方式也是符号执行的一个优点,当我们在做符号执行的时候,可以在计算发生前,在计算图上针对计算图的每一个计算单元进行并行优化,这种优化可以是人工指定也可以是机器自动计算的。

推荐一篇2017年在ICML上发表的论文,“Device Placement Optimization with Reinforcement Learning”,这篇论文是关于让机器学习帮助深度学习算法选在执行过程中算法的节点应该在哪个设备上执行,通过强化学习的思路,让深度学习模型去学习怎么使用设备,这可以提高深度学习的效率,这也证明了在整个框架内这些符号执行的思想,可以和很多优化算法结合起来提高算法的性能,这也是我们为什么要去理解深度学习框架本质的原因。

数据和分布式系统架构

在产业界最终提供给用户的系统是N to N的技术栈,在整体的技术栈里面,课堂里面学习到的机器学习算法、深度学习算法只是整体技术栈的一个组成部分。

当我们想把算法应用到实际场景里,就必须从考虑底层的运算单元到上层的操作系统,再到上层的虚拟层,再到上层的整体大数据的流程,从数据的收集,数据的存储,数据处理到数据的智能流程,然后还要考虑如何把这样的应用服务于用户的环境,包括一些集群环境,云环境,API的提供,用户使用界面的提供等等,这是一个完整的机器学习应用在实际场景中的技术栈。

这些讲解的思路是我们需要理解这些outline大数据的流程,需要理解online这些服务的流程,包括基于MapReduce或者基于Spark的处理框架,我们才能把机器学习的算法嵌入到系统中最有用的层面。

同时也需要理解类似docker,Kubernetes,这些关于容器集群管理的系统,才能知道在实际工业场景里面,需要用什么样的便利的工具来管理每一个应用节点。

回到今天主题,在学校里面培养的人才,所做的知识积累更多是在学术环境中的积累;从学术环境走到产业环境,这里面的积累,需要在学校期间有所准备,也需要在进入产业界后用心地积累,这整个积累方法包括一些在学校期间的实习、学习、参加一些比赛、项目、以及参加一些贴近工业环境,产业环境的课程。这在我看来是相对正确的人才培养路径。

Q&A

你在谷歌工作了多年,后来又加入了创新工场人工智能工程院,那么你觉得对同学们和从业者来说,这两种环境有什么区别,对能力能要求,包括能力培养,工作环境上有什么差异?

我在谷歌工作的时候,可以有大量时间集中在技术问题上,当时我从一线研发到后来的管理,一些决策,都是和技术相关,只需要考虑和技术相关的问题,环境比较单纯。

后来在创新工场,通过不断接触创业团队,我发现自己所需要的横向知识要远多于当初只关注技术团队的知识,需要将商务、产品、技术上的事串联起来。

这两种环境在我看来是两个世界,大公司可以在具体的技术方向有很好的成长空间,而在一个创业团队,会学到更广阔的知识,更全面的提升技能水平。

过去只有极其有利润的公司才有研究院,研究院并不是企业的标配,但是现在有一点规模的企业都会搞一个研究院,这个东西从长期来看,是一个长期的东西,还是到一定时期会回到产品线?

个人看法,现在很多AI研究院都是因为短期利益而产生的,最终也会因为没有很好的课题与资金支持而导致研究院人才流失。

你觉得从现在来看,未来三五年有什么AI产品会成长很快,自动驾驶好像已经有了这个影子,未来还有什么新机会成长为像自动驾驶这样的方向呢?

结合工场投资团队的总结来看,自动驾驶会是未来AI落地最大的机会,但是到来的时间不像我们想象的那么快,因为里面还有很多技术和非技术原因都没有成熟。

另一个可以相提并论的机会是健康和医疗领域,这件事也会非常大,但是落地也会相对慢,这里有很多非技术的因素主导。我们比较有把握的产业领域有:新零售,制造业相关,金融行业,在线教育领域等等。

关于AI在To B和To C中存在的机会,目前来看是To B更大一些,从长远来看会不会有巨大的To C的机会呢?

这个问题很大,我们也没有一个清晰的答案,只说一点想法,为什么目前AI在To B领域的机会比较多?我觉得一个的本质原因: To C现在仍处在一个“需求本质上是解决一个问题的工具”的时代,而不是一个AI技术的时代,AI技术时代有可能是在无人驾驶普及的时代才全面开花的。

假设以AI技术作为产品去卖,直接用户就是B端用户,比如说短视频的网站,它会去买一个AI技术对里面人的姿态分类,方便合理组织排序视频,但是对短视频的用户并不关心是否买了AI技术。

从一个技术人员的角度,现在号称AI创业的项目,你如何决定是否愿意投资该项目?

结合创新工场的投资逻辑来看,创新工场对AI项目的投资逻辑可以从几个层面来讲:

一个层面我们对AI的考察是多方面的,从理解整个技术栈,包括技术栈的应用层,中间层和非常基础的层面。

第二个逻辑是团队的投资,工场对团队的考察,除了是特别前沿科技的公司可以用纯技术团队打造,绝大多数AI的团队应该是技术、商务、产品结合的团队。

这两个层面的逻辑是创新工场评估AI公司优劣的最重要的逻辑。

我们学生中有些没有AI的背景,那么他们该怎么和AI产生关系,变成AI人才?

第一点:对AI的概念要理解清楚,看一些相对专业的解读;

第二点:非科技人员可以参与AI团队,从市场,商务,产品角度去帮助技术人员,将其产品和技术更好的卖到每一个行业中去。

学习资料

在量子位(QbitAI)界面回复“北大AI公开课”,即可获得公开课往期视频观看通道。

相关文章
热门文章
头条文章
重点文章
推荐文章
热点文章
关于我们|联系我们|免责声明|会展频道
冀ICP备2022007386号-1 冀公网安备 13108202000871号 爱云资讯 Copyright©2018-2023