创新工场讲AI课:从知识到实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 从AI科研到AI商业化

今天,“如何实现AI商业化落地”是一个被反复讨论甚至被不断质疑的话题。一方面,AI在许多场景和平台上实现了巨大的商业价值—Google、Facebook、Amazon、阿里和腾讯等公司早已在搜索引擎、广告推荐、商品推荐等领域,熟练并广泛地使用了机器学习,同时创造了巨大的营收。另一方面,大批怀着科技改造世界的美好梦想,在医疗、金融、制造、零售、能源、交通和仓储等垂直领域耕耘的创业者们却发现:理解客户场景和需求难、找到技术和业务的结合点难、实验结果和客户需求之间的差异巨大、单项AI技术难以解决客户的综合问题、概念验证或科研项目极难转化为客户的实际采购需求、实际项目实施的复杂度和定制化程度远超预期、技术和产品的可复制性不强,以及难以形成稳定的产品和可持续的销售……的确,AI科研与AI商业化落地存在着巨大的鸿沟。这是因为科研的关注点(例如,技术如何突破、论文质量高不高、数据指标如何等)与商业化的关注点(例如,能不能赚钱、能不能持续赚钱、能不能轻松持续赚钱)之间,存在着较大差异,如图2.1.1所示。

img

图2.1.1

从更本质的层面来分析,大概有两个最重要的原因。

第一,今天的AI技术有非常明显的边界。在涉及从浅层信息到知识映射的任务时,或涉及单纯的数据建模任务时,它往往表现得性能出众,甚至超过人类完成类似任务时的平均智力水平。例如,今天的AI技术可以轻松快速地识别出人脸,可以快速完成从语音到文字的转换,可以快速从大数据(如广告点击日志)中建立数学模型并用于预测(如广告点击率预估)。但是,在涉及深层知识表示和知识理解(或者说基于符号语义的建模任务)时,今天的AI技术又“幼稚”得像一个两三岁的小孩,例如,当今顶级的AI技术连“预订餐厅”这样的限定领域任务,都还需要人类的配合才能完成(据《纽约时报》在2019年5月22日的报道,Google发布的Duplex辅助预订服务在任务完成的最终效果上非常亮眼,但其实有相当一部分对话是在真人参与下完成的)。简单会话尚且如此,那么对于更复杂的知识理解和推理任务,我们可能还需要相当长的时间才能看到AI技术的进步。

第二,今天的AI技术在搜索引擎、广告推荐等有限领域里,可以真正成为核心业务的支柱技术。但在更广泛的领域里,很多AI公司的产品和解决方案至今都还停留在帮助客户的公司塑造一个“拥抱新技术”的良好形象上,或是为客户的非核心业务提供一些“有用但非亟须”的工具,而不是深入到客户的核心业务内部,帮助客户获得更大的盈利及成长空间。如何用技术帮助客户提升价值,这件事往往是很多科研人员和在校学生很难理解的——没有在商业环境下打拼过,就很难意识到:到底什么样的技术对企业的生存(或者说赚钱)最重要。因为要获得这种认知,人们不仅需要计算机科学知识,更需要具体行业的相关知识。

因此,如何从产品视角认识和管理AI产品或AI商业化落地的整个生命周期,这是本章要重点讨论的第一个问题。

另外,对于计算机或相关专业的高校在校学生来说,他们在学校里学到的学科知识和在工程上实现一个真正可用、好用的AI系统之间,同样存在着不小的鸿沟。从图2.1.2中不难看出,学校教学在一定程度上强调的是离散的知识点,而产业实践强调的是完整的系统工程,或者说是完整的技术栈。学生在学校学过机器学习、计算机系统结构、操作系统和分布式系统等课程,但是如果没有办法将这些知识融会贯通,去构建一套能够解决真实问题的系统逻辑的话,那么他们是无法将AI技术转化成工程产品的。从某种程度上说,学生只有在学校接受过能灵活运用学科知识去解决真实问题的专业性训练,毕业后才能成为高水平的算法工程师、系统工程师或架构设计师。

真实的AI产品或系统,往往由一个完整技术栈组成,大致会涵盖硬件架构、操作系统、分布式架构、核心算法、应用逻辑、部署和维护等多个层次的技术框架与技术组件,其中,每一个技术框架或技术组件又可能是由学生在学校里学过的多种学科知识共同支撑的。比如,我们要做一个图像识别系统用于超市的商品监控,一些缺乏实践经验的算法工程师可能会认为,商品识别不过就是目标检测(Object Detection)和目标分类(Object Classification)这两个任务,这可以借助一系列通用算法,如Faster R-CNN(Region-CNN)、YOLO和SSD(Single Shot MultiBox Detector)等来完成。但一个有经验的系统工程师或系统架构师则会在算法之外提出更多的问题,例如:

img

图2.1.2

(1)我们需要多少训练数据?这些数据从哪里来?

(2)模型是否有定期或实时更新的需求?如何更新?

(3)推断(Inference)计算部署在哪里?是在终端?还是在云端?

(4)终端计算和存储能力是否有限制?是否需要对模型进行压缩?

(5)AI算法本身是否有分布式的需求,如分布式的训练?

(6)图像如何采集?采集到的图像如何传输到运行算法的计算节点上?

(7)识别结果和操作日志如何保存并用于后续的算法优化?

……

这些问题看似是工程问题或是系统架构问题,但其实也和AI算法本身息息相关。

如何从一个专业的系统工程师或系统架构师的视角看待AI系统的设计与实现,这是本章要重点讨论的另一个问题。