2019 年中国人工智能基础数据服务白皮书

人工智能基础数据服务:指为 AI 算法训练及优化提供的数据采集、清洗、信息抽取、标注等服务,以采集和标注为主。《2019 年中国人工智能基础数据服务白皮书》由艾瑞和百度数据众包联合发布,报告主要分析中国人工智能基础数据服务的现状以及未来发展方向,重点讨论人工智能基础数据服务的价值、发展背景、产业链、市场空间和应用场景。

在经历了一段时期的野蛮生长之后,人工智能基础数据服务行业进入成长期,行业格局逐渐清晰。人工智能基础数据服务方的上游是数据生产和外包提供者,下游是 AI 算法研发单位,人工智能基础数据服务方通过数据处理能力和项目管理能力为其提供整体的数据资源服务,不过 AI 算法研发单位和 AI 中台也可提供一些数据处理工具,产业上下游普遍存在交叉。

2018 年中国人工智能基础数据服务市场规模为 25.86 亿元,其中数据资源定制服务占比 86%,预计 2025年市场规模将突破 113 亿元。市场供给方主要由人工智能基础数据服务供应商和算法研发单位自建或直接获取外包标注团队的形式组成,其中供应商是行业主要支撑力量。

数据安全、采标能力、数据质量、管理能力、服务能力等仍是需求方的痛点,需要人工智能基础服务商有明确具体的安全管理流程、能够深入理解算法标注需求、可提供精力集中且高质量的服务、能够积极配合、快速响应需求方的要求。

随着算法需求越来越旺盛,依赖人工标注不能满足市场需求,因此增强数据处理平台持续学习能力,由机器持续学习人工标注,提升预标注和自动标注能力对人工的替代率将成趋势。远期,越来越多的长尾、小概率事件所产生的数据需求增强,机器模拟或机器生成数据会是解决这一问题的良好途径,及早研发相应技术也将成为 AI 基础数据服务商未来的护城河。

《人工智能产品经理的新起点》PPT

原作者:黄钊;PPT 目录大纲:

  1. AI PM 在做什么、如何做?
    AI 的时代背景及真正瓶颈
    如何选行业方向 in AI
    如何找场景痛点 in AI 应用层 (2B/2C)
    如何做体验设计 in 对话聊天产品
  2. 如何从互联网 PM 转型成 AI PM
    AI PM 能力模型
    AI 技术概念厘清
    如何转型
  3. 人工智能的本质及脑洞 AI 的过去和现在
    AI 的未来和突破口
    AI 的本质、效用和终局
  • 下载地址 1:https://pan.baidu.com/s/1mjM5PQo 密码: gxmw
  • 下载地址 2:https://pan.baidu.com/s/1brbHw7d 密码: 9t5a

本地下载:人工智能产品经理的新起点

MediaPipe:Google 开源多媒体机器学习框架

MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 YouTubeGoogle LensARCoreGoogle Home 以及 Nest,都已深度整合了 MediaPipe。

作为一款跨平台框架,MediaPipe 不仅可以被部署在服务器端,更可以在多个移动端 (安卓和苹果 iOS)和嵌入式平台(Google Coral 和树莓派)中作为设备端机器学习推理 (On-device Machine Learning Inference)框架。

为什么需要 MediaPipe?

一款多媒体机器学习应用的成败除了依赖于模型本身的好坏,还取决于设备资源的有效调配、多个输入流之间的高效同步、跨平台部署上的便捷程度、以及应用搭建的快速与否。

基于这些需求,谷歌开发并开源了 MediaPipe 项目。除了上述的特性,MediaPipe 还支持 TensorFlow 和 TF Lite 的推理引擎(Inference Engine),任何 TensorFlow 和 TF Lite 的模型都可以在 MediaPipe 上使用。同时,在移动端和嵌入式平台,MediaPipe 也支持设备本身的 GPU 加速。

MediaPipe 演示案例

在今年六月举行的 CVPR 会议上,Google Research 开源了 MediaPipe 的预览版。为方便开发者学习和使用,我们提供了多个桌面系统和移动端的示例。作为一款应用于多媒体的框架,现已开源的安卓和苹果 iOS 示例包括:

MediaPipe 主要概念

MediaPipe 的核心框架由 C++ 实现,并提供 Java 以及 Objective C 等语言的支持。MediaPipe 的主要概念包括数据包(Packet)、数据流(Stream)、计算单元(Calculator)、图(Graph)以及子图(Subgraph)。数据包是最基础的数据单位,一个数据包代表了在某一特定时间节点的数据,例如一帧图像或一小段音频信号;数据流是由按时间顺序升序排列的多个数据包组成,一个数据流的某一特定时间戳(Timestamp)只允许至多一个数据包的存在;而数据流则是在多个计算单元构成的图中流动。MediaPipe 的图是有向的——数据包从数据源(Source Calculator或者 Graph Input Stream)流入图直至在汇聚结点(Sink Calculator 或者 Graph Output Stream) 离开。

 

MediaPipe 主要概念
MediaPipe 主要概念

MediaPipe 在开源了多个由谷歌内部团队实现的计算单元(Calculator)的同时,也向用户提供定制新计算单元的接口。创建一个新的 Calculator,需要用户实现 Open(),Process(),Close() 去分别定义 Calculator 的初始化,针对数据流的处理方法,以及 Calculator 在完成所有运算后的关闭步骤。为了方便用户在多个图中复用已有的通用组件,例如图像数据的预处理、模型的推理以及图像的渲染等, MediaPipe 引入了子图(Subgraph)的概念。因此,一个 MediaPipe 图中的节点既可以是计算单元,亦可以是子图。子图在不同图内的复用,方便了大规模模块化的应用搭建。

想了解更多 MediaPipe 的概念和使用方法,请移步我们的 GitHub 文档。同时,我们也提供了MediaPipe 移动端的使用教程及示例代码:

机器感知实例 —— 手部关键点追踪

一个使用 MediaPipe 的实例是在图片或视频中检测手部关键点。我们最近在 谷歌 AI 博客上发表了一篇相关文章: “使用 MediaPipe 实现设备端实时手部追踪”介绍了我们如何使用 MediaPipe 来搭建这个应用。

手部关键点追踪解决方案有两部分:手掌检测(Hand Detection)及手部关键点回归 (Hand Landmark Regression)。

手掌模型检测教程
手掌模型检测教程

我们训练了基于SSD 架构的 BlazePalm 模型来进行手掌检测,并对移动端进行了优化。手部检测相较人脸检测来说,是一个更加困难的问题,例如:手的大小角度会有较大范围的变动,手没有显著的纹理结构,以及存在更多遮挡的情景。因此,我们的解决方案采取了不同的思路。我们训练的模型只对手掌区域进行检测,其好处体现在以下几点:首先,手掌相对于整个手而言是一个较为受限的目标,并且由于手掌的区域较小,我们的非极大抑制(Non-Maximum Suppression)算法也会有更好的效果,例如,在两只手相握的情况下,即使手的大部分区域重叠在一起,两只手掌的区域依然可以被区分开;其次,手掌的边框可以用正方形来描述,这样可以减少 3-5 倍数量的锚定位(Anchor),从而最大化模型的容量;最后,经过实验,我们发现使用focal loss可以获得最好的检测结果。该模型在我们的测试数据集上可以达到 95.7% 的平均准确率。

MediaPipe BlazePlam 手掌检测应用

我们使用 MediaPipe 来做移动端模型推理的框架,如下图所示,input_video 为输入图像,output_video 为输出图像。为了保证整个应用的实时运算,我们使用 FlowLimiterCalculator 来筛选进行运算的输入帧数,只有当前一帧的运算完成后,才会将下一帧图像送入模型。当模型推理完成后,我们使用 MediaPipe 提供的一系列计算单元来进行输出的渲染和展示——结合使用 DetectionsToRenderDataCalculator, RectToRenderDataCalculator 及AnnotationOverlayCalculator 将检测结果渲染在输出图像上。

使用 MediaPipe 来做移动端模型推理的框架
使用 MediaPipe 来做移动端模型推理的框架

手掌检测应用的核心部分为上图中的蓝紫色模块(HandDetection子图)。如下图所示,HandDetection 子图包含了一系列图像处理的计算单元和机器学习模型推理的模块。ImageTransformationCalculator 将输入的图像调整到模型可以接受的尺寸,用以送入 TF Lite 模型的推理模块;使用 TfLiteTensorsToDetectionsCalculator,将模型输出的 Tensor 转换成检测结果;运用 NonMaxSuppressionCalculator 等计算单元做后处理;最终从HandDetection子图输出检测结果给主图。

从HandDetection子图输出检测结果
从HandDetection子图输出检测结果

GitHub地址项目 GitHub 地址

谷歌发布用于保护数据隐私的开发工具

无论你是城市规划师还是小型企业 CEO 或者是一名软件开发者,利用好数据可以让你更好地为客户提供服务,但是如果没有强有力的隐私保护,你也可能因此失去用户的信任。差分隐私是数据分析的一种手段,旨在提供一种当从统计数据库查询时,最大化数据查询的准确性,同时最大限度减少识别其记录的机会。例如,如果您是一名健康研究人员,您可能想要比较不同医院的患者住院的平均时间,以确定在护理方面是否存在差异。差别隐私是一种高度可靠的分析方法,可以在确保个人隐私的前提下做数据分析。

近日,谷歌开源了其差异隐私平台,该技术已经用于谷歌内部的一些核心应用,谷歌表示开源该技术是为了满足开发人员的需求而设计的。除了可以自由访问,它还希望它易于部署和使用。

以下是该库的一些功能特性:

  • 统计功能:这个版本支持大多数常见的数据科学操作。开发人员可以使用该库计算计数、和、平均值、中位数和百分位数等运算。
  • 严格的测试:正确区分隐私是一项挑战。除了一个广泛的测试组件,它还包括一个可扩展的“随机差异隐私模型检查器库”,以此避免发生错误。
  • 快速入门:开源发行版的真正用途在于回答“我可以使用这个吗?”这也是为什么谷歌加入了一个 PostgreSQL 扩展和一些常用操作指南的原因。此外,谷歌特地在一篇技术论文中描述了该库使用方法的细节
  • 模块化:谷歌设计的这个开源库可以扩展到其他功能,比如附加机制、聚合功能或隐私预算管理。

自从我们在 2014 年发布 RAPPOR 以帮助改进 Chrome 以来,谷歌一直致力于研究和开发实用的差异私有技术,例如出行软件 Project Fi 中可以了解一天中的业务繁忙程度、特定餐厅的菜肴在 Google 地图中的受欢迎程度等。今年,宣布了几项开源隐私技术 —— Tensorflow Privacy,Tensorflow Federated,,Private Join and Compute,涵盖的领域从医学到政府再到商业等。

GitHub地址项目 GitHub 地址

滴滴开源的 AoE:工程实践中的图像处理

近期,滴滴开源了 AOE 项目,很多人还是一脸懵逼,不太清楚 AOE 到底是干什么的,所以今天我们再来听听官方工程师是怎么介绍的吧,不信你还是听不懂:近期我们开发了一个银行卡 OCR 项目。需求是用手机对着银行卡拍摄以后,通过推理,可以识别出卡片上的卡号。

工程开发过程中,我们发现手机拍摄以后的图像,并不能满足模型的输入要求。以 Android 为例,从摄像头获取到的预览图像是带 90 度旋转的 NV21 格式的图片,而我们的模型要求的输入,只需要卡片区域这一块的图像,并且需要转成固定尺寸的 BGR 格式。所以在图像输入到模型之前,我们需要对采集到的图像做图像处理,如下图所示:

OCR 案例
OCR 案例

在开发的过程中,我们对 YUV 图像格式和 libyuv 进行了研究,也积累了一些经验。下文我们结合银行卡 OCR 项目,讲一讲里面涉及到的一些基础知识:

  1. 什么是YUV格式
  2. 如何对YUV图像进行裁剪
  3. 如何对YUV图像进行旋转
  4. 图像处理中的Stride
  5. 如何进行缩放和格式转换
  6. libyuv的使用

想要对采集到的 YUV 格式的图像进行处理,首先我们需要了解什么是 YUV 格式。

什么是 YUV 格式

YUV 是一种颜色编码方法,YUV,分为三个分量:

  • 『Y』 表示明亮度(Luminance 或 Luma),也就是灰度值;
  • 『U』和『V』 表示的则是色度(Chrominance 或 Chroma)。
  • 主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。

这部分专业的知识,网络上有详细的解释。我们简单理解一下,RGB 和 YUV 都使用三个值来描述一个像素点,只是这三个值的意义不同。通过固定的公式,我们可以对 RGB 和 YUV 进行相互转换。工程里常见的 I420,NV21,NV12,都是属于 YUV420,每四个 Y 共用一组 UV 分量。YUV420 主要包含两种格式,YUV420SP 和 YUV420P。

  • YUV420SP,先排列Y分量,UV分量交替排列,例如:NV12: YYYYYYYY UVUV 和 NV21: YYYYYYYY VUVU (上文中我们在安卓上采集到的图像就是这种格式)。

    YUV420SP
    YUV420SP
  • YUV420P,先排列U(或者V)分量,再排列V(或者U)分量。例如:I420: YYYYYYYY UU VV 和 YV12: YYYYYYYY VV UU。

    YUV420P
    YUV420P

了解了 YUV 的图像格式以后,我们就可以尝试对图片进行裁剪和旋转了。我们的想法是先在图片上裁剪出银行卡的区域,再进行一次旋转。

对图片进行裁剪和旋转
对图片进行裁剪和旋转

如何对 YUV 图像进行裁剪

YUV420SP 和 YUV420P 裁剪的过程类似,以 YUV420SP 为例,我们要裁剪图中的这块区域:

YUV420SP
YUV420SP

在图上看起来就非常明显了,只要找到裁剪区域对应的 Y 分量和 UV 分量,按行拷贝到目标空间里就可以了。

我们再来看一张图,是否可以用上面的方法来裁剪图中的这块区域呢?

答案是否定的,如果你按照上面说的方法来操作,最后你会发现你保存出来的图,颜色基本是不对的,甚至会有内存错误。原因很简单,仔细观察一下,当 ClipLeft 或者 ClipTop 是奇数的时候,会导致拷贝的时候 UV 分量错乱。如果把错误的图像数据输入到模型里面,肯定是得不到我们期望的结果的。所以我们在做裁剪的时候,需要规避掉奇数的场景,否则你会遇到意想不到的结果。

如何对 YUV 图像进行旋转?

对上文裁剪后的图像做顺时针 90 度旋转,相比裁剪,转换要稍微复杂一些。

基本方法是一样的,拷贝对应的 Y 分量和 UV 分量到目标空间里。

在了解了裁剪和旋转的方法以后,我们发现在学习的过程中不可避免地遇到了 Stride 这个词。那它在图像中的作用是什么呢?

图像处理中的 Stride

Stride 是非常重要的一个概念,Stride 指在内存中每行像素所占的空间,它是一个大于等于图像宽度的内存对齐的长度。如下图所示:

Stride 是非常重要的一个概念
Stride 是非常重要的一个概念

回过头来看我们上面说到的裁剪和旋转,是否有什么问题?以 Android 上的 YV12 为例,Google Doc 里是这样描述的:

YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed by (W/2) x (H/2) Cr and Cb planes.

This format assumes
• an even width
• an even height
• a horizontal stride multiple of 16 pixels
• a vertical stride equal to the height

y_size = stride * height
c_stride = ALIGN(stride / 2, 16)
c_size = c_stride * height / 2
size = y_size + c_size * 2
cr_offset = y_size
cb_offize = y_size + c_size

所以在不同的平台和设备上,需要按照文档和 stride 来进行计算。例如计算 Buffer 的大小,很多文章都是简单的 “*3/2” ,仔细考虑一下,这其实是有问题的。如果不考虑 stride ,会有带来什么后果?如果 “运气” 足够好,一切看起来很正常。“运气”不够好,你会发现很多奇怪的问题,例如花屏,绿条纹,内存错误等等。这和我们平常工作中遇到的很多的奇怪问题一样,实际上背后都是有深层次的原因的。

经过裁剪和旋转,我们只需要把图像缩放成模型需要的尺寸,转成模型需要的 BGR 格式就可以了。

如何进行缩放和格式转换

以缩放为例,有临近插值,线性插值,立方插值,兰索斯插值等算法。YUV 和 RGB 之间的转换,转换的公式也有很多种,例如量化和非量化。这些涉及到专业的知识,需要大量的时间去学习和理解。

这么多的转换,我们是否都要自己去实现?

很多优秀的开源项目已经提供了完善的 API 给我们调用,例如 OpenCV,libyuv 等。我们需要做的是理解基本的原理,站在别人的肩膀上,做到心里有数,这样即使遇到问题,也能很快地定位解决。

经过调查和比较,我们选择了 libyuv 来做图像处理的库。libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换、旋转、缩放的库。它是跨平台的,可在 Windows、Linux、Mac、Android 等操作系统,x86、x64、arm 架构上进行编译运行,支持 SSE、AVX、NEON等SIMD 指令加速。

libyuv 的使用

引入 libyuv 以后,我们只需要调用 libyuv 提供的相关 API 就可以了。在银行卡 OCR 工程使用的过程中,我们主要遇到了 2 个问题:

  1. 在Android开发的初期,我们发现识别率和我们的期望存在一定的差距。我们怀疑是模型的输入数据有问题,通过排查发现是使用libyuv的时候,没注意到它是little endian。例如这个方法:int BGRAToARGB(…),BGRA little endian,在内存里顺序实际是ARGB。所以在使用的时候需要弄清楚你的数据在内存里是什么顺序的,修改这个问题后识别率达到了我们的预期。
  2. 在大部分机型上运行正常,但在部分机型上出现了 Native 层的内存异常。

通过多次定位,最后发现是 stride 和 buffersize 的计算错误引起的。由于 libyuv 是 C/C++ 实现的,使用的时候不是那么的便捷。为了提高开发效率,我们提取了一个 AoeVision 组件,对libyuv封装了一层 JNI 接口,包括了一些基础的转换和一些 Sample,这样使用起来更加简单方便,AoeVision组件还在不断开发和完善中。

GitHub地址项目 GitHub 地址

计算机科学 (CS) 顶会历届最佳论文列表

历届最佳论文大列表,从 1996 年至 2018 年都包含了。机器学习、深度学习前沿 Paper 都能找得到!这些『顶会』包括:

AAAI, ACL, CHI, CIKM, CVPR, FOCS, FSE, ICCV, ICML, ICSE, IJCAI, INFOCOM, KDD, MOBICOM, NSDI, OSDI, PLDI, PODS, S&P, SIGCOMM, SIGIR, SIGMETRICS, SIGMOD, SODA, SOSP, STOC, UIST, VLDB, WWW

这个网页上,按照不同顶会,列举了各个年份的最佳 CS 论文,论文源地址和作者信息都有了!几个 AI 领域的代表性顶会最佳论文资源包括:

  •  AAAI (Artificial Intelligence)
  •  ACL (Natural Language Processing)
  • CVPR (Computer Vision)
  • ICCV (Computer Vision)
  • ICML (Machine Learning)
  • IJCAI (Artificial Intelligence)

以上是人工智能领域具有代表性的几个顶会,相应的最佳论文都按照不同年份列举出来了,非常便于查找和定位。除此之外,还包括其他 CS 顶会的最佳论文。

Google 发布姿势估测应用

Google 日前发布一款 TensorFlow Lite 示例应用,该应用使用 PoseNet 模型在 Android 中实现人体姿势估测。PoseNet 是一种视觉模块,通过检测人体关键部位的位置,来估测图像或视频中的人体姿势。例如,该模型可以估测图像中人物手肘和膝盖的所在位置。姿势估测模型只会识别人体关键部位的位置,而不会去辨别图像中的人物。TensorFlow Lite 现与您分享这款 Android 示例应用,该应用可利用设备的相机实时检测和显示个人的关键身体部位。

使用 PoseNet 模型在 Android 中实现人体姿势估测
使用 PoseNet 模型在 Android 中实现人体姿势估测

PoseNet 应用前景

姿势估测存在多种用途。例如,开发者可根据人体图像增强现实、制作计算机图形人物动画以及为运动中的运动员分析步态。在 Google I/O 2019 大会上,TensorFlow Lite 展示了使用 PoseNet 模块帮助用户学习舞蹈的应用 Dance Like。借助这款示例应用,应用开发者和机器学习专家能够更轻松地探索轻量级移动模型的各种可能性。

PoseNet 示例应用

不同于用 Java 编写的现有 Andriod 应用,PoseNet 示例应用的开发采用 Kotlin 语言。开发此应用旨在让所有人都能以低成本轻松使用 PoseNet 模型。示例应用包含可消除模型复杂性的 PoseNet 库。下图展示应用、PoseNet 库 和 TensorFlow Lite 库之间的工作流。

PoseNet 应用工作流
PoseNet 应用工作流

PoseNet 库

PoseNet 库提供了一个接口,通过该接口接收经处理的相机图像,并返回人体关键部位所在位置的相关信息。此功能由 estimateSinglePose() 函数提供,该函数会在经处理的 RGB 位图上运行 TensorFlow Lite 解释器并返回 Person 对象。了解 PoseNet 输入和输出的含义

PoseNet 示例应用

PoseNet 示例应用是一种设备端相机应用,该应用可通过相机捕获帧,并实时覆盖图像上的关键点。针对每张传入的相机图像,该应用均会执行以下步骤:

  1. 从相机预览中捕获图像数据,并将其格式从 YUV_420_888 转换为 ARGB_888。
  2. 创建 Bitmap 对象,以保存 RGB 格式帧数据的像素。将 Bitmap 裁剪并缩放至可输入模块的尺寸,从而将其传入模块。
  3. 调用 PoseNet 库的 estimateSinglePose () 函数,以获取 Person 对象。
  4. 将 Bitmap 重新缩放至屏幕尺寸。在 Canvas 对象上绘制新 Bitmap。
  5. 使用通过 Person 对象获取的关键点位置,在画布上绘制骨架。显示可信度高于特定阈值(默认为 0.2)的关键点。

为使姿势渲染与相机帧同步,我们对输出显示使用单个 SurfaceView,而非分别对姿势与相机使用 View 实例。SurfaceView 会在 View 画布上进行捕获、锁定和绘制,从而确保在屏幕上实时显示画面。

发展蓝图

我们希望未来能为此示例应用开发更多功能,其中包括:

  • 多姿势估测
  • 使用 GPU 代理实现 GPU 加速
  • 使用 NNAPI 代理实现 NNAPI 加速
  • 使用模型的训练后量化降低延迟
  • 更多模型选项,例如 ResNet PoseNet 模型

GitHub地址项目 GitHub 地址

数据科学家常用自然语言处理Python库

此前,跨象乘云™ 发布过系列文章 ——

互联网上大约有 70% 以上的数据不是结构化格式的。非结构化数据包括传感器数据、图像、视频文件、音频文件、网站和 API 的数据、社交媒体数据、电子邮件以及更多与文本相关的信息。由于其特殊的特性,我们无法以一种简单的方式处理数据,为了解决这一问题,在大数据和数据科学环境下,出现了许多技术和工具来解决这一问题。

自然语言处理,是人工智能领域的前沿技术之一。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。NLP 的最终目标是以一种有价值的方式阅读、破译、理解和理解人类语言。大多数 NLP 技术依靠机器学习从人类语言中获得意义。基于 NLP 最著名的应用是:

  • Google Speech Recognition.
  • Apple’s Siri.
  • Microsoft’s Cortona.
  • Amazon’s Alexa.
  • Ok Google in Android Mobiles.
  • Interactive voice responses used in call centers.
  • Grammarly

1. spaCy

非常优化的 NLP 库,可以与 TensorFlowPyTorch 等深度学习框架一起使用。它是一个高级的 NLP 库,可在 Python 和 Cython 中的使用,它帮助我们可以进行快速的开发,spaCy 提供了预先训练的统计模型和单词向量,目前支持 50 多种语言的标记化。它具有最先进的速度,卷积神经网络模型的标签,解析和命名实体识别和易于深入学习集成。

# Importing the Library
import spacy

NLPLagnguageType = spacy.load('en')
text = NLPLanguageType('Earth Revolves around the sun.')
# Iterating over the text
for token in text:
print(token.text,token_pos_)

在上面的例子中,我们实现了一个简单的 NLP 例子,他将输出文本,并加上每个单词的词性:

> > > 地球名词

> > > 是动词

这样的例子不胜枚举。它将生成给定文本中每个单词的词性。

2. Gensim

Gensim 是一个用于从文档中自动提取语义主题的 Python 库,目标受众是自然语言处理 (NLP) 和信息检索 (IR) 社区。具有以下特性:

  • 内存独立:对于训练语料来说,没必要在任何时间将整个语料都驻留在RAM中
  • 有效实现了许多流行的向量空间算法,包括 tf-idf,分布式 LSA,分布式 LDA 以及 RP;并且很容易添加新算法
  • 对流行的数据格式进行了 IO 封装和转换
  • 在其语义表达中,可以相似查询

Gensim 的创建的目的是,由于缺乏简单的(java 很复杂)实现主题建模的可扩展软件框架。

import gensim
id2word = gensim.corpora.Dictionary.load_from_text('wiki_en_wordids.txt')
mm = gensim.corpora.MmCorpus('wiki_en_tfidf.mm')

lda = gensim.models.ldamodel.LdaModel(corpus=mm, id2word=id2word, num_topics=10, update_every=1, chunksize=10000, passes=1)

lda.print_topics(1)

上面示例可以看到一个通过 LDA 从 Wikipedia 转储中提取主题的非常简单的示例。

3. Pattern

Pattern 是采用 Python 开发的数据挖掘库,用于抓取和解析各种数据源,如谷歌、Twitter、Wikipedia 等等。

它提供了各种 NLP 工具 (PoS 标签、n- gram、WordNet)、机器学习功能 (向量空间模型、聚类、分类) 和用于进行网络分析的各种工具。它是由 CLiPS 维护的,因此不仅有很好的文档和许多例子,而且有许多学术出版物正在利用图书馆。

# Importing Libraries
from pattern.web import Google
from pattern.en import ngrams

engine = Google(license=API_LICENSE)

for result in engine.search('NLP', cached=False):
print(result.url, result.text)
print(ngrams(result.text, n=2))

在上面的示例中,是爬取谷歌以获取包含关键字『NLP』的结果,它将输出所有的结果 url 和文本。虽然这确实是一个毫无意义的示例,但它展示了如何通过 Pattern 执行爬行和 NLP 任务。

4. Natural Language Tool KIT [NLTK]

NLTK 是可用来训练 NLP 模型的最好的库之一。这个库很容易使用。它是一个初学者友好的 NLP 库。它有很多预先训练好的模型和语料库,可以帮助我们很容易地分析事物。

# Importing Libraries
import nltk
text = 'Earth Revovles around the Sun.'
# Token Generator--> Separates the sentence into tokens
tokens = nltk.word_tokenize(text)
for token in tokens:
print(token)

word_tokenize() 将帮助我们将一组文本创建为简单的单词。我们把它叫做 token,输出 ——

Earth
Revolves
around
the
Sun

5. TextBlob

TextBlob 基于 Pattern 和 NLTK,后者为所有常见的 NLP 操作提供了一个很棒的 API 调用。它不是最快或最完整的库,但它以一种极容易访问和管理的方式提供了人们日常所需功能。

# Importing Module
from textblob import TextBlob

text = 'Earth Revolves around the sun.'

text_blob = TextBlob(text)

for sentence in blob.sentences:
print(sentence.sentiment.polarity)

在上面的示例中,我们考虑 NLTK 库中获取的相同示例文本。在这个程序中,textblob 首先将句子分割成 Token,并在标记上执行情感分析,这只是句子极性分析。希望你对 Python 中自然语言的流行库有一个完整,由于 NLP 是一门难学课程,初学者可能无法正确理解它。但是那些想要开始 NLP 的人,那么你应该使用上面的任何一个库。如果你是一名自然语言处理的新手,我强烈建议您从 NLTK 开始,这将是一个很好的开始。

TensorFlow VS. PyTorch V2

此前,跨象乘云™ 发布过《TensorFlow VS. PyTorch》 —— 谷歌的 Tensorflow 与 Facebook 的 PyTorch 一直是颇受社区欢迎的两种深度学习框架。那么究竟哪种框架最适宜自己手边的深度学习项目呢?本文作者从这两种框架各自的功能效果、优缺点以及安装、版本更新等诸多方面给出了自己的建议。如果你在读这篇文章,那么你可能已经开始了自己的深度学习之旅。如果你对这一领域还不是很熟悉,那么简单来说,深度学习使用了「人工神经网络」,这是一种类似大脑的特殊架构,这个领域的发展目标是开发出能解决真实世界问题的类人计算机。为了帮助开发这些架构,谷歌、Facebook 和 Uber 等科技巨头已经为 Python 深度学习环境发布了多款框架,这让人们可以更轻松地学习、构建和训练不同类型的神经网络。本文将详细介绍和比较两种流行的框架: TensorFlow 与 PyTorch。

谷歌的 TensorFlow

TensorFlow 是谷歌的开发者创造的一款开源的深度学习框架,于 2015 年发布。官方研究发布于论文《TensorFlow:异构分布式系统上的大规模机器学习》。TensorFlow 现已被公司、企业与创业公司广泛用于自动化工作任务和开发新系统,其在分布式训练支持、可扩展的生产和部署选项、多种设备(比如安卓)支持方面备受好评。

Facebook 的 PyTorch

PyTorch 是最新的深度学习框架之一,由 Facebook 的团队开发,并于 2017 年在 GitHub 上开源。有关其开发的更多信息请参阅论文《PyTorch 中的自动微分》。PyTorch 很简洁、易于使用、支持动态计算图而且内存使用很高效,因此越来越受欢迎。接下来还会更详细地介绍。

我们可以用 TensorFlow 和 PyTorch 构建什么?

神经网络起初是被用于解决手写数字识别或用相机识别汽车注册车牌等简单的分类问题。但随着近来框架的发展以及英伟达高计算性能图形处理单元(GPU)的进步,我们可以在 TB 级的数据上训练神经网络并求解远远更加复杂的问题。一个值得提及的成就是在 TensorFlow 和 PyTorch 中实现的卷积神经网络在 ImageNet 上都达到了当前最佳的表现。训练后的模型可以用在不同的应用中,比如目标检测、图像语义分割等等。

尽管神经网络架构可以基于任何框架实现,但结果却并不一样。训练过程有大量参数都与框架息息相关。举个例子,如果你在 PyTorch 上训练一个数据集,那么你可以使用 GPU 来增强其训练过程,因为它们运行在 CUDA(一种 C++ 后端)上。TensorFlow 也能使用 GPU,但它使用的是自己内置的 GPU 加速。因此,根据你所选框架的不同,训练模型的时间也总是各不相同。

TensorFlow 顶级项目

  • Magenta:一个探索将机器学习用作创造过程的工具的开源研究项目
  • Sonnet:这是一个基于 TensorFlow 的软件库,可用于构建复杂的神经网络
  • Ludwig:这是一个无需写代码就能训练和测试深度学习模型的工具箱

PyTorch 顶级项目

  • CheXNet:使用深度学习来分析胸部 X 光照片,能实现放射科医生水平的肺炎监测
  • PYRO:这是一种用 Python 编写的通用概率编程语言(PPL),后端由 PyTorch 支持
  • Horizon:一个用于应用强化学习(Applied RL)的平台

这些只是基于 TensorFlow 和 PyTorch 构建的少量框架和项目。你能在 TensorFlow 和 PyTorch 的 GitHub 和官网上找到更多。

PyTorch 和 TensorFlow 对比

PyTorch 和 TensorFlow 的关键差异是它们执行代码的方式。这两个框架都基于基础数据类型张量(tensor)而工作。你可以将张量看作是下图所示的多维数组。

多维数组
多维数组

机制:动态图定义与静态图定义

TensorFlow 框架由两个核心构建模块组成:

  • 一个用于定义计算图以及在各种不同硬件上执行这些图的运行时间的软件库。
  • 一个具有许多优点的计算图(后面很快就会介绍这些优点)。

计算图是一种将计算描述成有向图的抽象方式。图是一种由节点(顶点)和边构成的数据结构,是由有向的边成对连接的顶点的集合。

当你在 TensorFlow 中运行代码时,计算图是以静态方式定义的。与外部世界的所有通信都是通过 tf.Sessionobject 和 tf.Placeholder 执行,它们是在运行时会被外部数据替换的张量。例如,看看以下代码段:

近期 Keras 被合并到了 TensorFlow 库中,这是一个使用 TensorFlow 作为后端的神经网络框架。从那时起,在 TensorFlow 中声明层的句法就与 Keras 的句法类似了。首先,我们声明变量并将其分配给我们将要声明的架构类型,这里的例子是一个 Sequential() 架构。

接下来,我们使用 model.add() 方法以序列方式直接添加层。层的类型可以从 tf.layers 导入,如下代码片段所示:

TensorFlow 和 PyTorch 的优缺点

TensorFlow 和 PyTorch 各有其优缺点。

TensorFlow 的优点:

  • 简单的内置高级 API
  • 使用 TensorBoard 可视化训练
  • 通过 TensorFlow serving 容易实现生产部署
  • 很容易的移动平台支持
  • 开源
  • 良好的文档和社区支持

TensorFlow 的缺点:

  • 静态图
  • 调试方法
  • 难以快速修改

PyTorch 的优点

  • 类 Python 的代码
  • 动态图
  • 轻松快速的编辑
  • 良好的文档和社区支持
  • 开源
  • 很多项目都使用 PyTorch

PyTorch 的缺点:

  • 可视化需要第三方
  • 生产部署需要 API 服务器

TensorFlow 还是 PyTorch?

PyTorch 和 TensorFlow 近期都发布了新版本:PyTorch 1.0(首个稳定版)和 TensorFlow 2.0(beta 测试版)。这两个版本都有重大的更新和新功能,让训练过程更高效、流畅和强大。

如果你要在自己的机器上安装这些框架的最新版,你可以用源代码 build 或通过 pip 安装。

TensorFlow 是一种非常强大和成熟的深度学习库,具有很强的可视化功能和多个用于高级模型开发的选项。它有面向生产部署的选项,并且支持移动平台。另一方面,PyTorch 框架还很年轻,拥有更强的社区动员,而且它对 Python 友好。

建议是:如果你想更快速地开发和构建 AI 相关产品,TensorFlow 是很好的选择。建议研究型开发者使用 PyTorch,因为它支持快速和动态的训练。

DeepMind 强化学习框架:覆盖28款游戏,24类算法

近日,DeepMind 开源了史上最全强化学习框架 OpenSpiel

在这个框架中,实现了 28 款可用于研究强化学习的棋牌类游戏和 24 个强化学习中常用的算法,DeepMind 的成名作 AlphaGo 的基础算法也在其列。

此外,还包括用于分析学习动态和其他常见评估指标的工具。更关键的是,OpenSpiel 适用人群也非常广泛。它的核心 API 和游戏用 C++ 实现,并提供了 Python API,可用于更高级别的机器学习,优化和强化学习。这些语言也可以很容易地组合在一起。而且,代码的一个子集也已经使用 Swift for Tensorflow 直接移植到了 Swift 进行学习和推理,不需要跨语言操作。

目前,在 OpenSpiel 中实现的算法一共有 24 种,分别是:

极小化极大(Alpha-beta剪枝)搜索、蒙特卡洛树搜索、序列形式线性规划、虚拟遗憾最小化(CFR)、Exploitability、外部抽样蒙特卡洛 CFR、结果抽样蒙特卡洛CFR、Q-learning、价值迭代、优势动作评论算法(Advantage Actor Critic,A2C)、Deep Q-networks (DQN)、短期价值调整(EVA)、Deep CFR、Exploitability 下降(ED) 、(扩展形式)虚拟博弈(XFP)、神经虚拟自博弈(NFSP)、Neural Replicator Dynamics(NeuRD)、遗憾策略梯度(RPG, RMPG)、策略空间回应oracle(PSRO)、基于Q的所有行动策略梯度(QPG)、回归 CFR (RCFR)、PSROrN、α-Rank、复制/演化动力学。

Spiel 意指桌面游戏。因此,OpenSpiel 中的环境就是相关棋牌类游戏。一共有 28 款:

双陆棋、突围棋、定约桥牌、Coin Game、屏风式四子棋、协作推箱子、国际象棋、第一价格密封拍卖、围棋、Goofspiel(一种多玩家纸牌游戏)、三宝棋、六贯棋、Kuhn 扑克、Leduc 扑克、大话骰、Markov Soccer、配对硬币(3人游戏)、矩阵游戏、Oshi-Zumo、西非播棋、转盘五子棋、Phantom 三连棋、Pig 游戏、三连棋、Tiny Bridge、Y(一种棋类游戏)、Catch(仅支持Python)、Cliff-Walking在悬崖边走的醉汉(仅支持Python)。

GitHub地址项目 GitHub 地址

GAN 图像转换

一、资源简介

来自 MIT 的 Phillip Isola 在 2019 CVPR 上分享的图像转换(Image translation)的关键知识点和算法分析,包括配对的转换(Paired translation)和非配对的转换(Unpaired translation)相关的算法,如 pix2pix,CycleGAN 等。

图像转换
图像转换

官网:https://phillipi.github.io/talks/im2im_tutorial_cvpr2019.pdf

作者介绍:Phillip Isola:麻省理工学院 EECS 的助理教授,研究计算机视觉、机器学习和人工智能。在 OpenAI 做了一年的访问研究科学家,加州大学伯克利分校 EECS 系的 Alyosha Efros 的博士后学者,在麻省理工学院 (MIT) 完成了大脑与认知科学的博士学位,导师是特德•埃德森 (Ted Adelson) ,在耶鲁大学获得了计算机科学的本科学位。

二、主要内容

这份资料主要讲述的是 GAN 模型在图像风格迁移上面的应用,具体来说:
生成对抗网络(Generative Adversarial Network,简称 GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。于 2014 年提出,生成对抗网络由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实

图像到图像的转换(image-to-image translation)是一类视觉和图形问题,其中的目标是使用一组对齐的图像对来学习输入图像和输出图像之间的映射。随着 GAN 技术的发展,GAN 在图像转换任务上的方法越来越多。

image-to-image translation
image-to-image translation
BW -Color
BW – Color

IBM 开源三个抗癌 AI 项目

项目地址:

https://www.techzine.be/nieuws/41092/ibm-maakt-drie-ai-projecten-gericht-op-kankeronderzoek-opensource.html

近日,IBM 向开源社区发布了三个旨在克服治愈癌症的 AI 项目。在本月晚些时候将在瑞士举行的第 18 届欧洲计算生物学大会(ECCB)和第 27 届分子生物学智能系统大会(ISMB)上,将会深入介绍PaccMann 项目。

2018 年,癌症导致全球 960 万人死亡,此外,同年增加了 1800 多万新的癌症病例。IBM 计算系统生物学小组的研究人员已经开始研究基于 AI 和机器学习的方法,通过它们帮助我们快速了解这些诱导这些癌症的主要因素和分子机制,除此之外,重点还在于提高对肿瘤的构成认知。

通过遗传,污染,吸烟和饮食方面的倾向都被认为是引发癌症的可能性因素,但仍然还有许多需要去探索的因素,IBM 表示:我们的目标是加深对癌症的理解,以便有朝一日我们能够为行业和学术界提供新的治疗方向或知识。

此次 IBM 开源的三个项目如下:

1、PaccMann

PaccMann 项目旨在利用基于注意力的多模式神经网络来预测抗癌化合物的敏感性,ML 算法自动分析化合物并预测最有可能对抗癌症菌株的化合物。

PaccMann
PaccMann

该算法使用基因表达数据和化合物的分子结构。IBM 表示,早期识别潜在的抗癌化合物可能会降低药物开发的成本。目前开发单一药物治疗癌症就需花费数百万美元,正是因为这高昂的研发成本阻碍了我们开发新药物和疗法的步伐。(地址:https://www.zurich.ibm.com/paccmann/

2、INtERAcT

INtERAcT
INtERAcT

INtERAcT 能够帮助研究人员从大量的科学文献中自动提取有价值的数据。每年在癌症研究领域出版约17,000种出版物,研究人员做不到一一阅读这些内容,INtERAcT 目前正在测试提取与蛋白质 – 蛋白质相互作用的相关数据,该研究领域,已被确定为包括癌症在内的多种疾病中生物过程中断的可能因素。(地址:https://www.zurich.ibm.com/interact/

3、PIMKL

PIMKL
PIMKL

第三个项目 PIMKL 是一种使用数据集的算法,该算法利用描述我们目前在分子相互作用方面的数据集,以此来预测癌症的进展和患者复发的可能,这是多核学习的一种,可以识别分子路径,这对于患者分类至关重要,可以为医疗保健专业人士提供个性化和调整治疗计划的方案。(地址:https://www.zurich.ibm.com/pimkl/

以上这三个项目都已经开源,PaccMann 和 INtERAcT 的开源代码可以在各自的官网中找到,PIMKL 已部署在 IBM 云上,源代码也已发布。

神经网络「黑盒子」的正确打开方式!

现代神经网络经常被吐槽为「黑盒子」。尽管它们在各类问题上都取得了成功,但我们仍无法直观地理解它们是如何在内部做出决策的。随着人工智能系统被应用到更多重要的场景中,更好地了解其内部决策过程将有助于研究者能够及时发现其中的缺陷和错误。对此,谷歌 AI 研究院与 OpenAI 一起合作提出了能够弄清这个「黑盒子」里面到底有什么的新方法——激活图集。谷歌在博客上发布文章介绍了这一意义重大的成果 ——

神经网络已成为图像相关计算任务中的实际标准,目前已被部署在多种场景中:从自动标记图像库中的照片到自动驾驶系统,我们都能看到神经网络的身影。鉴于机器学习系统的在执行方面的准确性比不使用机器学习、直接由人为设计的系统更好,机器学习系统开始变得无处不在。但是,由于这些系统所了解的基本信息都是在自动训练过程中学习到的,因此我们对于网络处理其给定任务的整个过程的了解,有时仍然隔着一层纱。

近期,经过与 OpenAI 同事的通力合作,我们在发表的《用激活图集探索神经网络》论文中(「Exploring Neural Networks with Activation Atlases」,论文地址:https://distill.pub/2019/activation-atlas)论文中,描述了一种新技术,旨在帮助回答「给定一张图像时,图像分类的神经网络能“看到”什么」的问题。

激活图集提供了一种融入卷积视觉网络的新方法,为网络的隐藏层内部提供了一个全局的、层级化和可解释的概念综述。我们认为,激活图集揭示了机器针对图像学到的字母表,即一系列简单、基础的概念,它们被组合并重组进而形成更复杂得多的视觉概念。同时,我们还开源了部分 jupyter notebooks 的代码,以期帮助开发者们开始制作自己的激活图集。

下面显示的激活图集是根据在 ImageNet 数据集上训练的卷积图像分类网络 Inceptionv1 构建的。通常,给分类网络输入一张图像,然后令其标记出该图像属于 1000 个预定类别中的哪一类,例如「意大利面」,「通气管」或「煎锅」。为此,我们通过一个约十层的网络来评估图像数据,该网络每层由数百个神经元组成,且对于不同类型的图块,每个神经元在图像块的激活程度不同。某层中的一个神经元可能对「狗耳朵」图像块的激活程度更大,而另一层的另一个神经元可能会对高对比度的「垂直线」图像更敏感。

我们从一百万张图像的神经网络的每个层中收集到了内部激活图,并构建了一套激活图集。这些激活图由一组复杂的高维向量表示,通过 UMAP 投影到有用的二维布局中,其中 UMAP 是一种保持原始高维空间局部结构的降维技术。

这就需要组织激活向量,并且因为激活图太多而无法一目了然,所以我们也需要将它们整合成一个更易于管理的数量。为此,我们在之前创建的 2D 布局上提前绘制好了网格。对于网格中的每个单元格,我们对位于其边界内的所有激活取均值,并使用特征可视化来创建图标表示。

激活图集
激活图集
左:通过网络输入一组一百万张随机图像,每个图像收集一个随机空间激活图。中间:通过 UMAP 提供激活以将其降维到二维。然后绘制,相似的激活图彼此临近。右:然后我们绘制一个网格,对一个单元格内的激活取均值,并对平均激活做特征转置。

下面我们可以看到仅一层神经网络的激活图集(请记住,这些分类模型可以有六个或更多层)。它显示了在该层,网络在做图像分类时学到的一般视觉概念。这张图集第一眼看上去气势如虹——感觉很多东西在一起涌过来!这种多样性反映了模型所演化出来的各种视觉抽象和概念。

总览多层
总览多层
总览多层(mixed4c)Inceptionv1 网络中其中一层的的激活图集。它大约是整个网络的一半。
植物的探测器
植物的探测器
在这个细节中,我们可以看到不同类型的叶子和植物的探测器
湖泊和沙洲探测器
湖泊和沙洲探测器
在这里,我们可以看到不同的水,湖泊和沙洲探测器。
建筑物和桥梁
建筑物和桥梁
在这里,我们看到不同类型的建筑物和桥梁。

正如我们前面提到的,该网络中还有更多层。让我们看一下这个层之前的层,并深入网络中探索视觉概念是如何变得更加细化的(每个层在前一层的激活顶部构建其激活)。

「哺乳动物」区域
「哺乳动物」区域
在前面的一层——mixed4a 中,有一个模糊的「哺乳动物」区域。
水果和食物
水果和食物
通过网络的下一层,mixed4b,动物和人类已被分离开,中间出现了一些水果和食物。
通过层 mixed4c
通过层 mixed4c
通过层 mixed4c,这些概念被进一步细化并区分为小「半岛」。

在这里,我们已经看到了从一层发展到另一层的全局构架,但每个概念在层的发展过程中也变得更加具体和复杂。如果我们聚焦于有助于特定分类的三层区域,比如「白菜」,我们可以清楚地看到这一点。

三层区域
三层区域
左图:与其他图层相比,这个早期图层发特征非常不突出。中心:在中间层,图像完全与叶子类似,但它们可以是任何类型的植物。右图:在最后一层,图像非常明显像卷心菜,它们的叶子弯曲成圆形球。

这里还有另一个值得注意的现象:当你从一层到另一层移动时,不仅概念被细化,还会出现旧概念组合之外的新概念。

mixed4c mixed5b 进行对比
mixed4c mixed5b 进行对比

您可以看到,在 mixed4c(左和中)中,沙子和水是完全不同的概念,两者都有被分类为「沙洲」的明显属性。将其与后一层(右),mixed5b 进行对比,以上两种概念似乎被融合为了一个激活图。

除了放大特定图层整个激活图集的某些区域外,我们还可以在 ImageNet 中仅为 1000 个类中的一类创建特定图层的图集。下面将展示网络分类任务中的常用概念和探测器,例如「红狐狸」。

「红狐狸」
「红狐狸」
这里,我们可以更清楚地看到网络正在用什么标准来分类「红狐狸」。他们有尖尖的耳朵,被红色的皮毛包围的白色嘴鼻,以及繁茂树木或雪域的背景。
「瓦屋顶」
「瓦屋顶」
这里,我们可以看到「瓦屋顶」探测器的许多不同尺度和角度。
「野山羊」
「野山羊」
对于「野山羊」,我们看到了角和棕色皮毛的探测器,还有我们可能会发现这些动物的环境,如岩石山坡。
「朝鲜蓟」
「朝鲜蓟」
像瓦片屋顶的探测器一样,「朝鲜蓟」也有许多不同大小的探测器,用于探测朝鲜蓟的纹理,但我们也有一些紫色的花探测器,它们可能是检测朝鲜蓟植物的花朵。

这些图集不仅揭示了模型中细微的视觉抽象概念,而且还揭示了高层次的误解。例如,通过查看「大白鲨」的激活图集,我们可以看到水和三角形的鳍(正如预期的那样),但我们也会看到看起来像棒球的东西。这暗示了这个研究模型所采用的捷径,它将红色棒球与大白鲨的张开嘴混合在一起。

「大白鲨」
「大白鲨」
我们可以用棒球图像的补丁来测试这一点,以将模型的特定图像的分类从「灰鲸」切换为「大白鲨」。
从「灰鲸」切换为「大白鲨」
从「灰鲸」切换为「大白鲨」

我们希望激活图集能成为一种使机器学习更易于理解且解释性更强的技术的有用工具。为了帮助开发者入门,我们还发布了部分 jupyter notebooks 代码(https://github.com/tensorflow/lucid#activation-atlas-notebooks),通过单击 colab(https://colab.research.google.com/) 就能立即在浏览器中执行程序。它们创建的基础就是之前发布的工具包 Lucid,其中包括了许多其他可解释性可视化技术的代码。很期待各位能有所发现!

via:https://ai.googleblog.com/2019/03/exploring-neural-networks.html

机器人 4.0 白皮书

近日,达闼科技联合英特尔、新松机器人、科沃斯商用机器人共同发布《机器人 4.0 白皮书 ——云-边-端融合的机器人系统和架构》。

报告摘要

近年来,数字经济正在席卷全球,全球经济向数字经济迁移已经势在必然,数字经济已经成为国家的核心竞争力。据上海社科院测算,2016 年到 2018 年,中国数字经济对 GDP 增长的贡献率分别达到了74.07%、57.50%和 60.00%。预计 2019 年中国数字经济增长仍将占到62.50%。

数据成为驱动经济增长的核心生产要素。大数据和云计算等技术的融合,推动了物联网的迅速发展,实现了人与人、人与物、物与物的互联互通,导致数据量呈现爆发式增长。数据如同农业时代的土地、劳动力,工业时代的技术、资本一样,已成为数字经济时代的生产要素,而且是核心的生产要素。数字技术出现后,网络和云计算成为必要的信息基础设施。随着数字经济的发展,数字基础设施的概念更广泛,既包括了信息基础设施,也包括了对物理基础设施的数字化改造。

移动互联网、大数据、云计算、物联网、人工智能等信息技术的突破和融合发展促进了数字经济的快速发展。数字经济驱动未来,数字经济成为经济社会发展的主导力量。作为硬科技代表的机器人行业,将利用数字经济中的技术红利加速机器人的落地。人工智能、5G 通讯、计算的模式等都对机器人领域有着潜在而巨大的贡献。

一 报告正文

迈向云-边-端融合的机器人 4.0 时代

1 .数字经济的基础设施和发展趋势

近年来,数字经济正在席卷全球,全球经济向数字经济迁移已经势在必然,数字经济已经成为国家的核心竞争力。据上海社科院测算,2016 年到 2018 年,中国数字经济对 GDP 增长的贡献率分别达到了 74.07%、57.50%和 60.00%。预计 2019 年中国数字经济增长仍将占到 62.50%。

数据成为驱动经济增长的核心生产要素。大数据和云计算等技术的融合,推动了物联网的迅速发展,实现了人与人、人与物、物与物的互联互通,导致数据量呈现爆发式增长。数据如同农业时代的土地、劳动力,工业时代的技术、资本一样,已成为数字经济时代的生产要素, 而且是核心的生产要素。数字技术出现后,网络和云计算成为必要的信息基础设施。随着数字经济的发展,数字基础设施的概念更广泛,既包括了信息基础设施,也包括了对物理基础设施的数字化改造。

近年来,移动互联网、大数据、云计算、物联网、人工智能等信息技术的突破和融合发展促进了数字经济的快速发展。数字经济驱动未来,数字经济成为经济社会发展的主导力量。作为硬科技代表的机器人行业,将利用数字经济中的技术红利加速机器人的落地。人工智能、5G 通讯、计算的模式等都对机器人领域有着潜在而巨大的贡献。

2 .机器人技术发展主要阶段分析

2017 年,中国信息通信研究院、IDC 国际数据集团和英特尔共同发布了《人工智能时代的机器人 3.0 新生态》白皮书,其中把机器人的发展历程划分为三个时代,分别称之为机器人1.0、机器人 2.0、机器人 3.0。

机器人 1.0(1960-2000),机器人对外界环境没有感知,只能单纯复现人类的示教动作,在制造业领域替代工人进行机械性的重复体力劳动。机器人 2.0(2000-2015),通过传感器和数字技术的应用构建起机器人的感觉能力,并模拟部分人类功能,不但促进了机器人在工业领域的成熟应用,也逐步开始向商业领域拓展应用。机器人 3.0(2015-),伴随着感知、计算、控制等技术的迭代升级和图像识别、自然语音处理、深度认知学习等新型数字技术在机器人领域的深入应用,机器人领域的服务化趋势日益明显,逐渐渗透到社会生产生活的每一个角落。在机器人 2.0 的基础上,机器人 3.0 实现从感知到认知、推理、决策的智能化进阶。

3 .应用领域分析和大规模商用的难点

当前,全球机器人市场规模持续扩大,工业机器人市场增速稳定,服务机器人增速突出。2018 年,全球机器人市场规模达 298.2 亿美元,2013-2018 年的平均增长率约为 15.1%。在装备制造领域,机械臂凭借强大的负重能力和精准的抓取操作代替着工人的双手;在物流领域, 智能仓储机器人和无人搬运车不断提高着运输效率;在生活服务领域,家用清洁机器人和服务机器人正成为许多家庭的私人保姆和小秘书。

工业制造领域分析

目前,工业机器人在汽车、金属制品、电子、橡胶及塑料等行业已经得到了广泛的应用。随着性能的不断提升,以及各种应用场景的不断清晰,2013 年以来,工业机器人的市场规模正以年均 12.1%的速度快速增长,预计到 2020 年将达到 230 亿美元的销售额。随着人力成本的上升,工业制造领域的应用前景良好,将会保持快速增长的势头。同时,工业机器人需要拥有更高的灵活性、更强的自主避障和快速配置的能力,提高整体产品的易用性和稳定性。

消费服务领域分析

服务机器人虽然整体销售额低于工业机器人,但近几年一直维持着较高的年增长率,商用 服务机器人在商场、银行、酒店、机场等应用场景有了更多的落地部署,主要提供导览、问询、送物等基础服务。同时,家用服务机器人悄然进入千家万户,扫地机器人销量在家用服务机器 人销量中占主要份额,成为目前家务机器人中的主导品类。由于本体能力不足,隐私、安全方 面的问题,家庭管家机器人和陪伴型机器人的市场渗透率较低。2013 年以来全球服务机器人市场规模年均增速达 23.5%,预计 2020 年将快速增长至 156.9 亿美元。

从整个技术发展和市场环境看,机器人产业拥有以下发展推力:

  • 成熟的生态系统
  • 老龄化人口趋势和新兴市场
  • 更多智能产品互联和智能家庭建设
  • 人工智能、自然语言理解能力的增强

大规模商用的难点

在以上几点的助推下,机器人产业会继续快速发展,但要达到大规模商用,还有很多难点需要解决。

首先,机器人目前的能力不能满足用户期望,缺少关键场景。得益于人工智能带来的红利, 近年来机器人感知能力提升明显,可以通过视觉进行人脸识别,做语音交互。但是要真正替代 人类的劳动时间,做一些实际工作,机器人除了要具备感知能力,还要能够理解和决策。机器人需要有记忆、场景理解的能力,拥有知识,才能够优化决策,自主实施工作,并进行个性化演进。目前的机器人依然缺少令人瞩目和必不可少的应用场景,大部分人对于在家中拥有一个机器人没有很高的兴趣。在机器人提高自身能力,完成特定和复杂问题之前,这一比例将维持低水平。

其次,价格高,不成规模。传感器和硬件的价格一直在下降,但是机器人的价格依然很高, 不能被广泛的市场用户接受,没有形成市场规模。扫地机器人由于较低的价格,目前快速的进 入大众家庭。但是对于大多数类别的机器人,特别是具有更强功能、高精度移动底盘、机械臂 的机器人,价格依然是一个痛点。

第三,隐私、安全和数据保护问题亟待解决。随着机器人的应用领域越来越广泛,其物理安全和用户的数据安全问题更加凸显。在与机器人的交互过程中,机器人会不断收集用户的图像、语音、行动数据进行导航和决策,这些数据有的在本地处理,有的在云端处理,人们对这些数据的安全抱有疑虑。对于能够自由移动的服务机器人和拥有机械臂的工业机器人,保证机器人自身的物理安全,不被恶意攻击,避免造成人身伤害也至关重要。

4 .机器人 4.0 的定义和发展机会

机器人 3.0 预计将在 2020 年完成,在此之后,机器人将进入 4.0 时代,把云端大脑分布在从云到端的各个地方,充分利用边缘计算去提供更高性价比的服务,把要完成任务的记忆场景的知识和常识很好的组合起来,实现规模化部署。机器人除了具有感知能力实现智能协作,还具有理解和决策的能力,达到自主的服务。在某些不确定的情况下,它需要叫远程的人进行增强,或者做一些决策辅助,但是它在 90%,甚至 95%的情况可以自主完成任务。

要达到这一目标,首先需要利用人工智能和 5G 技术。利用人工智能技术提高机器人本体感知能力的同时,提升个性化自然交互能力。利用 5G 技术,大大缩短从终端到接入网的时间, 带宽大幅度上升,很多东西可以放到边缘端,加入更多的计算能力,包括云端大脑的一些扩展, 助力机器人规模化部署。

类似互联网的三级火箭发展模式,第一阶段——关键场景,把握垂直应用,提高场景、任 务、能力的匹配,提高机器人在关键应用场景的能力,扩大用户基础;第二阶段——人工增强, 通过加入持续学习和场景自适应的能力,延伸服务能力,取代部分人力,逐步实现对人的替代, 让机器人的能力满足用户预期;第三阶段——规模化,通过云-边-端融合的机器人系统和架构, 让机器人达到数百万千万级水平,从而降低价格成本,实现大规模商用。

5 .白皮书结构说明

本白皮书由英特尔、达闼科技、新松机器人、科沃斯商用机器人共同发布,分为八章。第 一章分析机器人发展情况,并定义机器人 4.0;第二章阐述人工智能和 5G 通讯技术推动机器人架构创新,并提出云-边-端融合的机器人系统和架构;第三章重点分析机器人 4.0 所需的核心技术;第四章探讨云端大脑和安全专网;第五章讨论边缘智能如何支持多机器人协作;第六章 思考服务机器人的场景认知、进化和业务;第七章描述协同创新与合作共赢的关键领域和方向;第八章进行总结与展望。

二 人工智能和 5G 通讯技术推动机器人架构创新

1 .人工智能技术演进和应用现状

人工智能技术的正式提出始于 1956 年,到目前为止已经取得不少进展。从技术上而言, 可以初略划分为两类方法,一类是符号方法,一类是统计方法(支持向量机,神经网络,深度学习都可以归为这一类)。

人工智能的发展可以大致分为两个阶段,1990 年以前主要是符号方法,包括基于规则,逻辑等。八十年代的基于知识库的专家系统是这个时期人工智能走向应用的一个尝试,取得了 一定的成果,但也很快显现了这类方法的问题,比如相对开放领域的知识库很难建立完整(尤其是常识知识很难表示完全),知识库增大后知识推理的组合爆炸,缺乏学习能力等问题。

上世纪 90 年代开始,统计方法开始盛行,取得了不少的进展,包括支持向量机等机器学习方法,并广泛应用于语音识别,自然语言处理,计算机视觉,数据挖掘等领域。从 2012 年开始,深度学习方法在计算机视觉,语音识别方面取得了较大的突破,不少任务的性能在大规模数据集上面得到大幅度提升。人工智能尤其是深度学习方法已经在不少领域开始广泛应用,包括语音识别,人脸识别等,作为机器人 3.0 的核心技术,在机器人的应用中起到了重要的作用。近年来人们发现了困扰传统机器学习方法的一些问题,如鲁棒性、可解释性,小数据学习在深度学习方法的框架下仍然没有得到解决。

总体说来,人工智能技术 60 多年来取得了不少的突破,但也存在不少亟待解决的问题。人工智能之父明斯基在发布他的新书之前发表的一篇论文也深刻地指出,目前人工智能的进展低于他的期望,其中一个主要原因是主流的方法(符号方法,统计方法或更细分的方法)都是想基于单一方法来解决人工智能问题,而真正的人类智能则是有机地结合了多种方法并进行选择应用的结果,未来的人工智能需要走这个方向才能进一步突破。机器人领域的应用对人工智能提出了尤其更高的要求,这也就需要在人工智能领域取得更多的突破。

2 .5G 通讯技术的演进和应用现状

5G 是第五代移动通信技术的简称,5G 标准自 2016 年在 3GPP正式开始立项,于 2017 年 12 月完成了5G R15 非独立组网的标准制定,支持在 4G 网络下同时部署 5G 网络,并于 2018 年 6 月完成了 5G R15 独立组网的标准制定。目前 5G 在各个国家开始了实验性部署。

在国内, 三大运营商从 2018 年开始 5G 实验网的测试,2019 年已经在部分城市完成了在 sub-6Ghz 频段以下的 5G 规模测试。5G 实验网峰值速率可以达到 10Gbps,在密集部署城区平均速率达到了 100Mbps,在低时延模式下,5G 终端和基站传输时延达到 1 毫秒以内,满足了 ITU 最初制定 5G 需求。2019 年 6 月,国内正式发布了5G 的牌照,中国移动、中国联通、中国电信和广电开始了商用部署。4G技术从 2008 年 3GPP release8 标准完成到 2013 年4G 牌照的发布用了5 年时间,5G 从标准完成到牌照的发布只用了一年,凸显了国内 5G 发展的迫切和重要。

除了网络传输能力的提升,5G 还制定了非常灵活的空中接口和核心网标准,增强了对不同业务支持的能力,相对于 4G 以移动宽带(MBB)为主的应用,5G 的应用领域进一步加强移动宽带业务(eMBB),比如高清/全景视频,移动 VR/AR 等等,同时 5G 的应用拓展到海量 连接的物联网(mMTC)和高可靠低时延(URLLC)的业务。URLLC 的业务包括车联网、自动驾驶、远程医疗、工业自动化等应用。

国内的 5G Sub-6Ghz  频段部署,eMBB, URLLC, mMTC 应用都可以得到很好的支持。在高频段,比如28GHz 左右,目前在国内还在实验阶段,高频段将主要支持 eMBB 应用。对于云端机器人应用,既有时延和可靠性要求不高的应用,比如数据备份、训练数据的采集等等,也有实时视频传输交互,还有对时延和可靠性要求非常高 的机器人的运动控制、远程操控等等。这些应用,可以在 5G  网络上,通过灵活的配置得到更好的支持。

对于 5G 的应用,其最初的商用部署是针对 eMBB 业务,比如 5G 的手机等等,由于标准和网络设备的复杂性,5G 设备和网络的功能会根据需求演进。如果 eMBB 模式不能完全满足需求,就需要积极和运营商、设备商沟通、合作,推动对该业务的支持。同时5 的 标准也在不断的演进,目前 5G R16 版本的标准正在制定过程中,计划将于 2019 年底完成。R16 版本将包含对 5G 网络效率的提升和应用的增强,比如对车联网、工业 IoT 和 URLLC 业务的增强。5G 网络的持续演进将进一步增强网络的能力和灵活性,满足机器人 4.0 的云-边-端的更高的互联要求。

3 .云端大脑对机器人能力的增强

2010 年提出的云机器人概念引入了云端大脑,机器人尝试引入云计算、云存储及其它云技术,达到机器人融合基础设施和共享服务的优点。相比于独立的机器人本体,连接云端大脑后的机器人拥有以下四个核心优势。

  • 信息和知识共享:一个云端大脑可以控制很多机器人,云端大脑可以汇集来自所有连接机器人的视觉、语音和环境信息,经云端大脑智能分析处理后的数据信息可以被所有连接机器人使用。利用云服务器,各机器人本体获取和处理的信息可以保持最新, 并安全备份。
  • 平衡计算负载:一些机器人功能需要较高的计算能力,利用云端平衡计算负载可以降低机器人本体的硬件需求,在保证能力的同时,让机器人更轻、更小、更便宜。
  • 协同合作:通过云端大脑,机器人本体不再独立工作,多机器人可以协同工作,例如共同搬运货物,配合完成一整套工作流程等。
  • 独立于本体持续升级:借助云端大脑,机器人可以独立于本体持续升级,不再依赖于本体硬件设备。

4 .边缘计算对机器人服务的提升

IoT 应用的快速发展,使得大量数据在网络边缘产生,推动了边缘计算的产生和发展。边缘计算的提出始于4G 时代,将计算和存储资源部署到网络边缘,不仅可以减少核心网和互联网上的流量,还可以显著降低传输时延,提高网络可靠性。

低时延的业务需要终端、移动蜂窝网(接入网和核心网)、互联网、数据中心的端到端的保障。目前的测试结果表明 5G 手机和基站的数据通路延时可以达到 4 毫秒,在 URLLC 模式下,手机和基站的延时可以达到1毫秒以下,相比 4G 的 20 毫秒提高了 20 倍左右。对于互联网和数据中心的时延,一般情况下由于地理位置分布广和未针对低时延优化,从核心网网关到互联网数据中心可在几十到几百毫秒之间。在 5G中,其核心网引入了分布式网关,网关可以下沉到基站附近,边缘服务器可以直接连接到分布式网关上,大大降低网络的端到端时延。

边缘计算的引入将解决终端能力受限和云计算的实时响应的问题,增强机器人云端大脑的 实时响应能力,对于满足机器人 4.0 的要求十分关键,比如实时的推理、场景理解、操控等等。边缘计算和云计算的结合,将突破终端的计算能力和存储的限制,提高 AI 算法的训练和推理能力,比如提升精度和降低训练时间。

同时将大部分机器人的智能布署在边缘和云端,通过协 作和不断的训练,持续不断的提高机器人智能,比如通过边缘计算能更好的支持实时的多机协 作,支持实时的知识图谱提取、理解和决策,持续不断的提高机器人的智能。边缘计算和云计算还可以解决机器人终端升级维护的困难,在机器人本体的生命周期内不断升级,提高机器人的能力,增强数据安全和隐私保护,充分利用摩尔定律带来的性能提升。

5 .云-边-端一体化对机器人系统的支撑

云-边-端一体化构建了一个通过机器人提供多样化服务的规模化运营平台。其中,服务机器人本体是服务的实施者,而实际功能则根据服务的需要无缝地在终端计算(机器人本体)、边缘计算和云计算之间分布和协同。机器人系统类似现在智能手机上的各种 APP,主要关注如何实现高性价比的多模态感知融合、自适应交互和实时安全计算。

  • 多模态感知融合:为了支持机器人的移动、避障、交互和操作,机器人系统必须装备 多种传感器(如摄像头、麦克风阵列、激光雷达、超声波等)。同时,环境里的传感 器可以补足机器人的物理空间局限性。大部分数据需要在时间同步的前提下进行处理, 并且调用不同复杂度的算法模块(例如 SLAM,图像处理,人和物体的识别等)。机器人硬件系统和边缘计算需要协同来支持(可能来自多个机器人的)多传感器数据同 步和计算加速,因此应该采用能灵活组合 CPU、FPGA 和 DSA (Domain-Specific Accelerator)的异构计算平台。另一部分没有强实时性要求的感知任务(如人的行为 识别、场景识别等),可以由云计算支持。
  • 自适应交互:为了支持机器人的个性化服务和持续学习能力,需要将感知模块的输出与知识图谱结合对环境和人充分理解,并且逐步提取和积累与服务场景和个人相关的个性化知识。通用知识和较少变化的领域知识应该存放在云端,而与地域和个性化服务相关的知识应该存放在边缘或者终端。无论知识存放在哪里,在机器人系统中应该有统一的调用接口,并可以保证实时通讯。基于 ROS2 构造涵盖终端和网络侧的软件系统框架可以满足未来的需求。
  • 实时安全计算:未来的服务机器人应用将有大量需要实时响应的情形(如语音交互、协同操作等),因此需要在边缘服务器部署相应的加速硬件。同时,机器人也将处理 大量涉及用户隐私的数据(如视频、图像、对话等)。云-边-端一体化架构需要构建隐 私数据的安全传输和存储机制,并且限定物理范围。对于可以进行物理操作的机器人, 要构建独立的安全监测机制,保证即使机器人系统被远程攻击劫持后也不会造成物理 安全损害。

三 机器人 4.0 核心技术

在机器人 3.0 时代,服务机器人可以做到一些物体识别、人脸识别,在 4.0 时代需要加上自适应能力。因为用深度学习做物体识别、人脸识别的时候需要很多的数据来源,但是真正到家庭场景时没有那么多数据,这就要求机器人必须通过少量数据去建立识别能力,自己去找到不同的位置,不同的角度做训练。

这些就是机器人 4.0 要做的,首先对三维环境语义的理解,在知道它是什么的基础上,把看到的信息变成知识,让存储就变得更加合理,而且可搜索,可查询,可关联,也可推理。应用层可以根据这个知识和观测为现场场景做出智能的提醒,寻找物品,进行行为检测。例如,老人要出门,机器人的知识库告诉他,今天预报要下雨,但是检测到老人没有带伞,然后查询伞的位置,机器人就可以把伞送到老人手里。这都是结合内部知识和外部情况所做的决策。

知识图谱在整个学术界和工业界越来越受到重视。获得图灵奖的杰夫∙辛顿教授在加入谷歌的时候就说要建一个知识图谱给全世界用。阿里研究院发布 2019 年的十大技术趋势 [8] 里面也专门提到了知识图谱的重要性。这是人工智能迈向下一个阶段的必由之路,也是必做之事。

总结下来,机器人 4.0 主要有以下几个核心技术,包括云-边-端的无缝协同计算、持续学习、协同学习、知识图谱、场景自适应和数据安全。

1 .云-边-端的无缝协同计算

受制于网络带宽以及延迟的制约,当前绝大多数机器人 3.0 系统是以机器人本体计算为主, 云端处理非实时、大计算量的任务为辅的系统架构。机器人的主要任务可以简单划分为感知、 推理及执行三大部分。为了能够精准地感知理解环境以服务于人机交互,机器人系统通常集成 了大量的传感器,因而机器人系统会产生大量的数据。比如采用了高清摄像头,深度摄像头, 麦克风阵列以及激光雷达等传感器的机器人,每秒钟可以产生 250MB 以上的数据量。如此海量的数据全部传输到云端处理既不现实,也不高效。因此,需要将数据处理合理地分布在云- 边-端上。

另一方面,完成感知和理解的 AI 算法也非常复杂。机器人所使用的 AI 算法通常需要很强的算力,例如Faster RCNN 算法在 GPU上可以达到 5fps 的处理能力,但是 GPU 的功耗达到 200W 以上,机器人本体很难承受,从计算成本而言同样也非常昂贵。虽然机器人本体计算平台的计算能力仍在不断提高,但是相对于 AI 算法的需求依然有限。为了完成机器人的计算需求,需要在云和边缘侧提供算力的支持,以实现在大规模机器人应用场景下,更有效、更经济的计算力部署。

随着 5G 和边缘计算的部署,机器人端到基站的延迟可以达到毫秒级,使得 5G 的网络边缘可以很好地支持机器人的实时应用。同时,边缘服务器可以在网络的边缘、很靠近机器人的地方处理机器人产生的数据,减少对于云端处理的依赖,构成一个高效的数据处理架构。

云-边-端一体的机器人系统是面向大规模机器人的服务平台,信息的处理和知识的生成与应用同样需要在云-边-端上分布处理协同完成。例如,汇集来自所有连接机器人的视觉、语音和环境信息,加以分析或重构后,被所有连接的机器人所应用。

因此,在通常情况下,云侧可以提供高性能的计算以及通用知识的存储,边缘侧可以更有效的处理数据,提供算力支持,并在边缘范围内实现协同和共享,机器人终端完成实时的操作和处理等基本机器人的功能。然而由于机器人的业务需求多种多样,协同计算的部署也不是一成不变的,机器人 4.0 系统还要支持动态的任务迁移机制,合理的根据业务需求将不同的任务迁移到云-边-端,实现云-边-端的无缝协同计算。

2 .持续学习和协同学习

在机器学习方面,机器人 3.0 主要是采用基于大量数据进行监督学习的方法,这也是目前机器学习的主流方法,而在机器人 4.0,还需要加上持续学习和协同学习的能力,才能使得机器人能够适应更复杂的应用场景。

在 3.0 时代,服务机器人可以做到一些基本的物体识别、人脸识别,但由于机器人应用对感知识别的正确率要求很高,尽管这些方法在别的要求不高的领域已经可以满足应用需求(例如互联网搜索有 80%的正确率就够了),但对于机器人应用而言则远远不够。

第一是机器学习 所固有的鲁棒性方面的问题,深度学习方法也不能幸免,识别结果可能出错,而且出错的时候 系统也不知道自己错了,这样就可能造成服务的失败和错乱。例如人需要机器人取东西 A,而机器人却取了东西 B, 轻则闹笑话,引起用户不满,严重的可能会造成对用户的伤害(比如取错药品的情况)。鲁棒性的问题是目前所有机器学习方法自身的一个通病,因为训练数据中总 是存在着长尾数据无法被准确识别,该问题很难通过现有的监督学习方法在部署产品前就解决。

第二是数据不足,这也是现实应用中普遍出现的情况,例如用人体特征进行身份识别的时候需要大量的数据(几百张以上的不同人体姿态、角度的照片),而这些数据又无法事先获得。总结下来,这两方面的问题都和缺少数据直接相关。

要解决这些问题必须让机器人具有自主的持续学习能力。具体说来,机器人可以先通过少 量数据去建立基本的识别能力,然后会自主的去找到更多的相关数据并进行自动标注(或通其 他方式,例如与人交互来获得标注,但要注意尽量减少对用户的打扰)。用这些新的数据来对 已有的识别模型进行重新训练以改进性能,随着这个过程不断进行,机器人可以把识别的性能 不断提高。具体拿物体识别来说,机器人应该先通过少量数据来建立对该物体的基本识别能力, 然后可以自己去找到不同的位置,不同的角度做训练,不断提高对这个物体的识别精度,在一 段时间的持续学习后达到接近 100%,一个初步实现参见文献。

在实际应用中,一个机器人能接触到的数据是有限的,其持续学习的速度可能会受到限制。机器人 4.0 是一个云-边-端融合的系统,如果能够在机器人间或机器人与其他智能体间通过这个系统来共享数据、模型、知识库等,就能够进行所谓的协同学习。通过云端的模拟器来进行虚拟环境中的协同学习也是一种行之有效的方法,可以充分利用云的大规模并行处理能力和大数据处理能力。协同学习使得机器人的持续学习能力进一步增强,可以进一步提高学习的速度和精度。

3 .知识图谱

知识图谱在互联网和语音助手方向已经开始较为广泛的应用,尤其是百科知识图谱。机器人也有百科知识问答类的应用场景,对于这类的知识图谱可以直接加以应用。但不同于通常的百科知识类的知识图谱,机器人应用的知识图谱有一些不同的需求:

(1)需要动态和个性化的知识。机器人往往需要对所在的环境和人进行更深入的理解才能进行更好的服务,而且不仅仅是当前的情况,要对过去发生的一些情况进行记录(例如要了解老人通常什么时候起床,某个物体一般放在什么位置)。因此,机器人需要记录环境里不同时间的人和物、发生的事件等相关信息,这些都是通用知识图谱所不能事先提供的,必须在环境里去获取。这些动态的个性化知识能很好的对人进行个性化的服务,例如通过对某用户的观察,机器人可以观察到该用户的一些喜好,或者一些行为模式,这些信息可以帮助对该用户提供更好的服务。

(2) 知识图谱需要和感知、决策紧密结合, 并帮助实现更高级的持续学习能力。从人工智能发展的历史看,单一方法很难彻底解决 AI 问题,前面的介绍也提到不论符号方法还是统计方法都已经显现了瓶颈,而且目前在单一方法里都没有很好的方法解决这些瓶颈问题。按照明斯基的分析,未来需要多种方法结合的 AI 系统。从最近几年的研究进展看,这也是未来人工智能取得进一步突破的必经之路。

所以不同于以往知识图谱和计算机视觉等统计方法基本是独立运作的做法,知识图谱必须和感知决策更深入、有机的结合。具体来说,知识图谱的信息是从感知中获取的,通过基础的感知,加上场景理解,获得的信息可以存入知识图谱,然后这些知识可以进一步进行模式的挖掘(比如时间空间相关的模式)来获得更高层的知识。

知识图谱的一些知识又可以作为环境上下文信息提供给感知算法来进行连续学习,从而实现自适应的感知算法。从某种意义来说,这已经不是传统意义上的纯符号方法的知识图谱,而是一种混合的知识图谱,即符号方法和统计方法结合的知识图谱。这也是未来很有潜力取得突破的一个方向。

由于云-边-端融合的需要,知识图谱会分别存放在机器人侧,边缘侧和云侧,其接口可以采用统一的接口以利于系统对知识图谱进行统一的调用。由于协同学习和实时处理的需要,知识和其他相关信息(如数据,模型等)还可以通过云侧、边缘侧来进行共享,通过一定的冗余备份来达到更高的实时性。这类似于计算机架构中的高速缓存机制(Cache), 比如部分存储在云端的知识经常被调用,可以缓存到边缘端或机器人端提高其存取的速度。在 5G 网络下,延迟本身不是大问题,主要考虑更充分的利用边缘端和机器人端的计算能力,达到整体资源的最优利用。

4 .场景自适应

有了持续学习和知识图谱, 系统在感知方面的鲁棒性大大提高,也在场景分析方面获得了丰富的信息并存在知识图谱中,这就使得机器人能够根据当前的场景进行相应的行动。

场景自适应技术主要通过对场景进行三维语义理解的基础上,主动观察场景里人与物的变化,并预测可能发生的事件,从而产生与场景发展相关的行动建议。例如在养老/助老应用中老人端着一碗汤走向冰箱,机器人可以通过以往的经验或知识预测老人是要去开冰箱放东西, 就可以帮老人打开冰箱。再例如,机器人看到地上有一块果皮,预测可能会导致老人摔倒,这时机器人可以主动捡起果皮(机器人配备了手臂操控的情况下)或站到果皮边并警告老人。

这部分的关键技术是场景预测能力。场景预测就是通过对场景里的人、物、行为等的长期 观察,并结合相关的知识和统计模型来总结出一些个人偏好或行为模式,并据此来预测目前场 景要发生的事件。过去人工智能的符号方法中框架、脚本表示在这里可以作为知识表达的形式, 但更关键的是需要把符号方法和统计方法结合起来,从而解决以往单独用符号方法无法解决的 问题(比如缺少学习能力)。这部分的研究还处于比较初期的阶段,但相信在基于持续学习、知识图谱等技术充分结合的基础上,该方向在未来几年会有较大的突破。最终使得整个机器人 的闭环系统,即感知-认知-行动,变得更加智能和人性化。

云端融合在这里起到非常重要的作用,尤其是知识的共享方面。例如前面的水果皮的例子, 这方面的模式可能发生的不多,在单个机器人的情况下可能从来没见过这个情况,也就无法知 道是危险的。如果通过云-边-端融合,只要有一个机器人看到过这个危险情况的发生,就可以 把该知识分享给所有的机器人,所有的机器人就可以去预测这些危险情况了。除了通过在实际 的物理世界中观察,在云端通过大规模的模拟来预演生活中可能发生的情况,可能也是另外一 个有效的方法来获得更多的事件模式。

5 .数据安全

由于机器人配备了多种多样的传感器,在工作过程中可以搜集到很多的信息,包括视觉数 据,语音数据,位置数据等,这些重要的隐私数据都需要得到保护。在机器人处于云-边-端融 合的环境中,数据的处理根据需求会发生在机器人侧,边缘侧或者云侧,在网络受到攻击的情 况下,保护用户的隐私数据的安全变得尤其重要。

一方面可以通过数据脱敏的手段来消除隐私性;但是从根本上而言,云-边-端融合的机器人系统需要完整的数据安全保障机制,既要求保 证端到端的安全传输,也要保障在服务器端的安全存储。在机器人侧,传感器数据安全地传输 到可信计算单元,以及控制命令安全地传输到执行单元尤其重要,只有确保输入输出的安全, 才可以确保机器人在受到网络攻击的情况下,也能保证机器人物理安全的逻辑得到正确的执行。因此,在机器人侧,需要构建一个从传感器和执行器到可信计算单元之间的可信传输通道。

除了原始的隐私数据外,通过用户数据推理得到的个性化知识也包含了用户的隐私信息, 同样需要得到安全的保障。在云-边-端融合的环境下,机器人侧,边缘侧以及云侧的数据安全需求不同,因此需要不同的安全保障机制。在机器人本体方面需要保证重要的隐私数据的物理安全和安全相关应用的代码安全,网络侧和边缘端需要对用户的数据,以及根据用户数据推理得到的隐私信息做好保护,只有被授权的用户才可以得到访问权。尽量避免敏感数据上传到云端,存储在云端的数据需要提供安全存储鉴别机制。

四 云端大脑和安全专网的实践与思考

1 .云端智能机器人架构

为了让机器人具备通用智能,包括类人的感知和认知能力,类人的动作行为和类人自然交 互能力,并同时最大限度地保障机器人的运行安全,需要构建类人“大脑”的智能体。目前机 器人本体计算能力有限,必须通过可以无限扩展的云端计算能力来提供智能机器人所需的能力。

通过无线 5G 通信网络和一个安全高速骨干网络构成机器人“神经网络”,实现机器人本体和云 端大脑的连接。云端大脑包括机器人视觉系统、对话系统、运动智能和极限现实系统等技术, 其通过人工智能算法不断训练进化,使得前端机器人本体智能随之迅速提高。因此,采用云-网-端结合的智能机器人系统架构,具有更强的适应性和扩展性。

达闼科技提供的机器人云端智能大脑,利用深度学习、强化学习和迁移学习技术,通过物理和虚拟平行智能平台,以及多模态 AI 能力,让机器人的智能快速向人类智能汇集。必要时刻的人类干预确保了 AI 决策的安全性和可控性。极限现实系统借助流行的游戏引擎,有助于利用大量的游戏开发者进行环境的建设。

为了让机器人更加智能,更好的为人类提供服务,云端智能机器人不再是可以和人类简单对话、唱歌、跳舞的娱乐工具,而是需要在实际应用场景中帮助人们完成多种特定的任务,包括抓取目标物体、移动到指定位置等。具备这种云端大脑的新型云端智能机器人将可满足各种服务性行业(如医院、银行、营业厅、迎宾接待、教育等),以及家庭保姆服务等不同场景的需求。支撑机器人在营业厅 VIP 室端茶送水,在养老院与老人聊天、下棋、陪护、护理,在家中做饭、打扫、与人沟通、照看老人小孩以及陪伴应用场景等。

2 .云端机器人大脑

云端机器人“大脑”(如图 5)是由一个可以运行足够大规模机器人,并面向人工智能服务的平台;包含机器学习、人工智能视觉、自然语言处理和机器人运动智能,以及平行智能体的虚拟空间的综合智能平台;人类智慧增强的人机融合机器人运营服务平台;和面向各类机器人应用服务的云端智能开放能力平台四大部分构成。通过云端将机器人的智能视觉系统、智能语音对话系统、运动智能和极限现实系统等融合起来,形成真正可为人类服务的智能机器人。该技术架构富有弹性和无限的潜力,机器智能可以在很多应用场景下为人提供多种应用服务。

云端智能“大脑”具备提供机器人角色和对应智能技能服务,其中人工智能技能服务提供包括但不限于视觉自主导航和运动、行为智能(如视觉反馈抓取物体)等智能运动系统,人脸识别、人体识别、2D/3D 物体识别、环境识别、3D 重建/语义分割等智能视觉系统,包括自动语音识别、自然语言理解、情绪识别以及对话知识库等智能对话系统,以及用来模仿学习和训练机器人综合智能的虚拟平行智能平台。

通过大规模计算力来构建机器人的大脑中枢系统,通过深度学习、强化学习、模仿学习等 AI 技术,通过物理世界和平行虚拟空间智能融合,以及多模态智能交互,来训练机器人的通用智能能力。通过机器人身体上的各种传感器感知真实物理世界,并对物理世界进行三维重建,通过语义分割形成三维环境的高精度语义地图,让机器人真正理解当前的物理世界以及客观物体之间的关系。三维语义地图同时也构建了机器人数字孪生(Digital Twin)运行的虚拟物理空间,可持续不断地模拟和训练各种智能机器人的智能能力。这种云端智能“大脑”可支持同时为百万级实体机器人提供云端 AI 智能服务,帮助机器人理解物理世界。

人类智慧增强人机融合机器人运营服务平台,在必要的时刻,通过人机无缝融合的方式来支撑云端机器人规模化商用运行和安全管控服务。人类将直接正向干预(Human Intelligence),确保人工智能的安全性和决策可控性,在提供无差错的商用级服务的同时,这些人类的干预形成强化学习,智能反馈到 AI 训练系统中,从而让机器人智能快速向人类智能进化。

3 .机器人安全专网的实践

公众互联网中存在大量数据隐私泄露、病毒木马和漏洞攻击等问题,如果智能机器人与云端大脑的网络通信完全基于公众互联网,必将给云端智能架构带来极大的安全隐患。为了提高云端智能架构与系统的安全性,达闼科技构建了机器人安全专网 VBN (全称:Virtual Backbone Network),机器人本体通过物联网或移动互联网就近接入至 VBN 专网接入点,然后通过专网专有线路去访问云端大脑

达闼科技机器人安全专网叠加在运营商的网络基础设施之上,基于运营商的专有线路而不是互联网线路进行网络传输。作为云-边-端融合机器人系统的神经网络,它为机器人和云端大脑提供安全可靠的网络连接。达闼科技机器人专网从如下几个方面加强云端超融合机器人系统的整体安全性:

(1) 机器人专网 POP 点之间的传输线路为点对点 SDH 线路或 MPLS VPN 专线等专有线路, 专网的核心设备不提供互联网接入,设备和线路均与互联网物理隔离。只在有互联网接入需求的站点单独增加互联网接入设备,由该设备实现与互联网对接,但是针对这种场景会增加严格的 L3 到 L7 层的安全防护策略以及安全接入认证策略。总体来说,达闼科技机器人专网在物理上实现了与公众互联网的隔离,逻辑上则利用虚拟专网技术实现租户之间的业务隔离,为最终用户进一步提升了业务的安全性。

(2) 云端大脑与机器人专网一体化部署,即云端大脑部署在机器人专网 POP 点内,或者是通过专有线路与机器人专网互通。机器人只有在接入到专网 POP 点并通过认证后,才能去访问特定的云端大脑服务。对于互联网用户,云端大脑完全不可见,这大大降低了云端大脑被网络攻击的风险,提升了系统安全性。

(3) 智能机器人在接入到 VBN 专网时需要更严格的准入和认证机制。首先机器人在申请接入之前,相关信息必须在云端平台登记,必须在经过该平台的注册和激活后才能申请接入到专网,这样可以充分提升接入实体的可信性。机器人在接入到专网的过程中,须经过多重认证。对于物联网接入方式,必须使用定制的物联网卡,并设置特定的接入点和用户名密码,在通过物联网认证后到达 VBN 专网部署的专用接入网关,在该网关上再做一次认证。为提升第二次认证的可靠性,集成了 SDP 思想,将区块链技术引入到认证系统中,只有在许可链中写有访问权限的设备才能发现和访问 VBN 专网,即使链中的部分节点受损或被攻击,链也可以立即隔离这些节点并继续运行,从而提升网络认证体系的可靠性。

(4) 智能机器人可能通过物联网,也可能通过 4G/5G 互联网接入到 VBN 专网提供的接入点,VBN 专网接入点是和其他网络(如物联网、互联网等)的主要连接点,也可能是系统的主要风险点。除了严格的准入和认证机制外,此处会专门部署基于云的防火墙,该防火墙会基于从 L3 到 L7 等多个层面,针对每个接入租户或用户进行安全策略部署,包含但不限于对源和目的 IP 的策略限制、对源和目的端口号的策略限制、对应用层的安全策略等等。通过在 VBN 专网的入口处部署高等级的安全管控策略,非法用户即使是接入到专网后能攻击的范围也极其有限,能极大的降低 VBN 专网以及在专网后端运行的云端大脑被攻击的风险,从而为云端超融合机器人系统的整体安全性提供保障。

未来,云端智能机器人系统可以把人工辅助监督、记忆知识内容、低频次的认知类决策神经网络等功能仍然放在云端大脑,逐步把视觉识别、语音识别和智能运动等 AI 感知能力,以及需要实时响应的功能模块放在端侧和边缘计算节点,边缘计算节点和云端大脑通过机器人安全专网相连。

云端智能机器人天然具备移动通信的属性,它将是 5G 网络的杀手级应用。5G 网络为云端智能机器人与云端的网络连接提供最佳传输载体。云-边-端智能机器人正在向机器人本体—5G 网络—边缘计算节点—机器人安全专网和大规模云端“大脑”的架构发展。达闼科技打造的智能机器人云端“大脑”,在实施商业化运营和云端的安全控制的过程中,必然需要依托大带宽、低时延、超高可靠性、网络切片和边缘计算的 5G 网络来进一步增加机器人专网,这将是智能服务机器人产业化的必由之路。

五 边缘智能支持多机器人协作的实践与思考

1 .工业机器人发展趋势

近年来,随着物联网、云计算、大数据和人工智能为代表的新一代信息技术与传统工业技术的加速融合,全球新一轮科技革命和工业革命正蓬勃兴起。在这种世界科技和工业发展背景下,德国、美国、日本、英国和中国等世界主要国家分别推出了工业 4.0、工业互联网、工业智能化、工业 2050 和中国制造 2025 等一系列振兴工业的国家战略。习总书记曾经在两院院士大会上指出:机器人是“制造业皇冠顶端的明珠”。作为智能制造的核心装备,工业机器人在智能制造的发展过程中起到了不可替代的作用。

工业 3.0 通过广泛应用信息技术,已经使得工厂生产线的自动化程度和生产效率大幅度提高。但随着时间的推移,业界逐渐意识到了一些问题:如今消费者的个性化需求繁多,生产线 无法按照消费者需求生产出相应的产品,导致产品不畅销或者产能过剩造成资源浪费。另一个 重要的问题是,并没有很好的利用整个产品生命周期产生和累积的数据。近年来随着互联网的 蓬勃发展与人工智能算法的不断改善,使得业界可以在一定程度上解决上述问题,工业 4.0 即智能制造应运而生。

通过赋予生产线智能属性,可以增加生产线的柔性,满足消费者个性化需 求,利用数据仓库和数据挖掘做出生产决策,平衡多生产线负荷,提高有效产能避免资源浪费。同时又不得不面临新的问题:原始设备的运算和存储能力不足以满足智能制造的要求,而随着 产品生命周期中产生的数据量的不断累计势必会增加云端成本,并且数据安全如何保障也是一 个问题。基于以上问题,新松构建了以云-边-端为框架的平台。边缘计算设备可以满足数据的 实时传送与运算,并且在数据上传到公有云之前对数据进行分析与压缩,私有云则保证了数据 的安全性,将控制力留在企业边界。

当前,工业机器人呈现出以下三个方面的发展趋势:
1)泛在互联。由于以 AGV 为代表的移动工业机器人将在未来广泛使用,高可靠、高并发和低延迟的无线接入方式将成为工业机器人云平台的重要接入方式(包括环境的参数,多种设备接入的需求);
2)云端融合。一方面, 工业机器人的功能越来越强大,智能化程度越来越高,同时随着大数据、云计算和人工智能技 术的快速发展,把基于大数据的智能化计算移到云端实现是工业机器人的重要发展趋势(工业 机器人现场的数量的剧增,对分布式存储和处理的需求);
3)智能服务。工业机器人发展至今, 在工艺过程优化、远程监控、状态分析和预测性维护等生产使用环节积累了大量的数据和规则, 如何利用机器学习和云计算技术将这些海量数据、规则和知识形成机器人的智能服务,成为工 业机器人云平台发展的必然要求(全生命周期的管理)。

机器人是靠近产线和数据源头的网络边缘侧的重要制造设备,也是融合网络、计算、存储、应用等核心能力的重要载体和平台。在网络的边缘智能侧,机器人面向产线,就近提供边缘智 能服务,满足行业数字化敏捷连接、实时业务、数据优化、应用智能、安全与隐私保护等方面 的关键需求。

2 .多机协作应用

随着小批量、多品种、个性定制等生产需求的不断改变,对生产模式的柔性化要求越来越迫切,整个制造系统的数字化、网络化和智能化是发展的必然趋势。智能制造的“执行层”主要包括智能作业和智能物流,而工业机器人和移动机器人是其核心装备:工业机器人完成在固定工位的精密、快速、高强度作业,移动机器人在生产车间、仓库完成物料的搬运。

未来多机器人协作的边缘智能将实体空间中的人员、设备、资源、环境、活动等要素,以数据驱动的方式在赛博空间中建立从个体到集群的状态模型、关系模型、决策模型,通过状态感知-实时分析-优化决策-精确执行的闭环过程实现对实体空间要素的精确管理和协同优化。

3 .多机器人边缘智能系统架构

数据采集

针对不同类机器人或智能设备的数据,搭建统一的数据信息集成平台,形成设备“纵向”(设备端——管理层)与“横向”(设备产业链各环节之间)的二维信息联通平台,筛选出真正有用的数据,重点是将“原始数据”变为“有用数据”。

边缘计算

利用网络计算资源,将知识镜像建模和知识挖掘,在网络层中形成实体的镜像对称模型和大数据环境,通过对实体运行历史数据中的关联性和逻辑性进行挖掘,产生能够支持决策的制造知识,重点是将对数据的洞察变为支持决策的知识,形成知识库。边缘计算设备作为边缘设备的输出端,需要较高的实时性与扩展性。面对复杂的 IT 与 OT 设备混连的环境,我们需要有按照优先级处理事件的方案或者协议,比如TSN。而作为云端的输入端则需要较高的稳定性。我们需要对边缘计算设备做冗余以避免整个生产线失控的场景,比如分布式架构。而其自身的边缘智能则需要较强的浮点运算能力以进行智能分析与决策,比如使用专用的加速芯片。

边缘智能部署在边缘计算设备上。与端设备,采用的 TSN 硬件协议与 OPC 应用协议,最大限度保证了 IT 与 OT 的通信实时性与效率。与云设备,则是采用了 TCP 传输数据与 RPC 进行远程调用,保证了数据传输的安全稳定性,降低云端与边端之间的通信开发难度,提高系统稳定性与扩展性。

(1) 智能分析。将隐性问题显性化,通过设备端的智能分析,准确评估设备真实的健康状态(安全性,可靠性,实时性和经济性等多个维度)和未来趋势,并能够对潜在的故障和隐性问题进行预诊和定位,为设备使用、维护和管理的智能决策提供重要决策支持依据,重点是将“有用数据”变为“有用信息”。

(2) 智能决策。对状态的识别和决策,以优化、协同为核心手段,基于装备真实健康状态和衰退趋势,结合用户决策的定制化需求,提供设备使用、维护和管理的最优决策支持,并达成任务活动与设备状态的最佳匹配,以保障生产系统的持续稳定运行(近零故障运行),将有用的信息变为最优决策。

边缘应用

形成工业的典型应用场景,不断对于智能系统的动态优化和重构,将智能优化后的决策同步到设备的运行和企业资源运营的执行系统中,实现决策与价值的闭环。

(1) 优化生产线工艺流程。针对生产线中多机器人协同作业存在的作业时间不一致、路径冲突等问题,基于多机器人协同工艺优化方法,挖掘多维工艺参数与作业效率、节拍之间的隐含关系,以生产作业效率、路径最优为目标,实现基于群体智能的多机器人协同作业工艺参数与运动轨迹优化。

(2) 完善生产的运营管理数据,为更好的决策提供数据基础。依据机器人的设计工艺、应 用工艺,在三维环境下对机器人进行轨迹规划、可达性分析以及干涉检验等仿真;通过机器人 作业效率分析实现对工艺方案的评价及优化。根据机器人生产线工艺规划、多机协同作业规划、排产及物流控制方案,驱动三维模型进行生产过程模拟,依据仿真结果进行机器人及其所在单 元的应用工艺设计或优化过程的校验与评估,实现机器人生产线运行效率、节拍平衡等目标优 化。将仿真分析结果反馈至设计和应用环节进行验证;更新机器人工艺设计知识库,实现工艺 操作透明化及工艺过程自主优化。

综上,边缘计算是扩展机器人个体智能的途径。在未来的多机器人协作过程中,对于机器 人的预测性维护,生产线的智能排产等方面也都是机器人在边缘智能的重要应用方向。边缘智能技术通过协同机器人设备与边缘服务器,利用深度学习模型优化,深度学习计算迁移等方法, 使机器人在未来的使用中,能更好的自主决策,同时也让产线变得更智能,能够支撑生产计划 灵活适应产线资源的变化,最终使产线变得柔性化、个性化、智能化,实现智能制造的升级。

六 服务机器人的场景认知、进化和业务赋能的思考

1 .服务机器人多源异构数据协同认知

环境认知对于机器人而言是一个重要的研究环节。机器人对环境认知的目的是为复杂未知 环境下的机器人提供足够的决策信息。这就需要将机器人通过图像识别、导航定位、语音交互、触觉感知等技术获取的异构数据进行融合,实现优势互补,从而提升机器人对周围环境的感知能力。进一步,通过网络与其它智能体协同,并结合知识,可以显著提高认知的置信度。

未来将有多个服务机器人在智能环境中共同工作。多机器人之间、机器人与环境之间都可以通过网络和边缘计算共享它们的感知信息和场景状态信息。从认知数据融合的方法出发,将对自然环境的感知与理解从片面的、离散的、被动的感知层次提高到全局的、关联的、主动性的认知层次上,全面深入分析机器人系统与环境之间的交互关系,以实现灵活、稳定、可靠的机器人环境认知系统。

2 .云端一体架构支撑下的服务机器人认知进化

2010 年云计算技术将从概念层面逐渐走向应用层面,许多研发公司已经将云计算作为新的战略核心,并探索其企业级、社会级的应用。构建云端一体架构,实现从样本数据采集、标注、模型训练到端侧部署的整个过程。商用服务机器人领域,由于B端客户的需求多样,场景复杂,更需要机器人具备较高的场景自适应能力。机器人作为端侧智能设备,可以通过云端训练支持,端侧推理引擎部署,在云端一体架构支撑下获得认知能力的持续进化。

云平台从终端机器学习、深度学习需求出发,把内存、I/O、存储和计算容量通过网络集 成为一个虚拟的资源池来使用。在云端搭建训练平台,集成分布式计算、并行处理等核心技术, 构建虚拟化、高效、低成本、开放共享的系统架构,从终端机器学习需求出发,建立私有云业 务样本数据库,通过增量式学习和训练,不断优化前端模型准确度,构建差异化、个性化核心 技术能力,为前端业务持续赋能,为业务决策提供更“精准”、更“智能”、更“广泛”的技术 支撑。

云平台提供多元化的数据采集工具、智能爬虫工具和数据标注工具,提供从数据采集获取、数据清洗和后续的数据标注等一整套服务。依托机器人实际应用场景中的数据采集和大量已经 收录的公开数据集数据,包含文本、图片、音频、视频等类型数据,覆盖包括人脸检测、人脸 识别、人体检测、物体识别、语音识别、智能安防等领域,提供更全面、更精准的原始数据和 定制数据的采集、管理服务。

通过相机等图像设备采集实际应用场景中的视频数据,通过麦克风阵列等音频采集设备采 集音频数据,云平台进行数据管理、分类、存储。分类的标准依据实际应用场景进行,可以根 据数据类别,如人体样本、桌子、椅子、显示器、键盘样本等分类,也可以根据垂直领域分类, 如仓库数据、银行大厅数据、商超数据等。存储的数据可以通过标注训练、更新模型,更好地 在垂直领域部署图像智能和对话智能任务,实现机器人的能力面向垂直领域的逐步进化。

对于智能对话任务,在产品化项目测试完成后,整个系统将进行上线。接下来,伴随着客 户对产品的使用,将产生大量的对话数据和协作数据,这些数据都将导入到云平台的数据库中。随后,数据平台将提供接下来的技术和流程界面支撑,包括数据自动标签,数据人工标签,数据人工分析,数据扩容,框架/模型训练,框架/模型测试相关模块,从而达到整个系统知识库的完善,模型场景精确度提高,框架合理性技术提升,系统的智能进化,最终客户满意度的持 续提升。

传统的标注方式为模型给出候选结果,人工进行判别、修改和再标注。云平台可以结 合用户反馈,如在VIP 打招呼时用户是否答应,在回答问题后观察用户表情等方式,自动对回答进行判别标注,更新模型。此外,还可以通过“众包模式”,通过用户测试反馈点击机器人 回答是“好”是“坏”,作为标注方式。通过增量式的学习和训练,形成图像智能和对话智能 的自我进化能力。

3 .AIOT 技术浪潮背景下服务机器人如何赋能业务

(1)服务机器人与业务场景的深度连接

AIOT 被视作一种将影响人类社会形态的技术浪潮,其实现路径也值得服务机器人产业关注。换言之,AIOT 技术浪潮下服务机器人如何赋能业务?

如前文所述,服务机器人对场景的综合认知能力和业务处理能力涉及对话智能、图像智能、运动智能等技术环节。这其中,云端机器学习训练平台和云端业务管理平台的开发维护至关重 要,其意义不仅在于服务机器人本身的学习进化、日常运行、业务处理,也在于有机会与业务 场景云端实现某种意义上的对接,实现“云端一体化”。

而除了云端的对接,服务机器人的 AIOT 之路还需实现智慧场景下的多设备协同。机器人厂商可通过为B 端客户深度定制可信网络传输协议,实现服务机器人与传统设备间的数据传输链路,让服务机器人与场景中的各类设备互联互通。举例而言,在第三方设备接入方面,机器人厂商需为机器人预留丰富的可扩展软硬件接口;在通信方面,需支持 WiFi、4G、蓝牙、NB-IoT 等多种通信方式;在软件方面,需预留可与客户业务系统对接的接口,且机器人需具备集成能力;在架构设计方面,需在底层实现模块和模块之间的解耦,在应用层实现决策级或特征级的数据融合。

如此一来,服务机器人将成为诸多行业业务场景 AIOT 网络的重要实体终端;而通过提高网络接入能力和计算能力,机器人又成为边缘结点之一,最终实现帮助客户提升业务效率、服务水平的目的。

(2)案例简析:服务机器人 AIOT 赋能智慧银行、智慧检务

下面,以科沃斯商用机器人有限公司打造的银行服务机器人、案管机器人为例,分析AIOT 技术浪潮下服务机器人赋能行业的具体路径,以及不同垂直领域的共性与差异。

a .银行服务机器人

行业需求分析

如今,传统银行网点存在运营成本高、使用价值低等问题,正逐步向智慧银行方向转型升级。智慧银行以提升用户服务体验为中心,利用人工智能、大数据等新兴技术实现银行服务方式与业务模式的再造和升级。其中,智能设备间的互联互通尤为关键,它使得信息传递的效率加快、准确性提高,让众多设备实现N+N>2N 的联动效果。

产品价值分析

科沃斯银行服务机器人通过迎宾接待、业务咨询、二次营销等功能,为顾客提供智能化、人性化的服务体验,以服务为切口、以 AIOT 为路径,赋能银行智慧化转型。下面结合科沃斯银行服务机器人落地应用情况,简析银行服务机器人价值要素。

降低网点运营成本,优化网点营销收益,提升银行社会形象是银行服务机器人的三大核心价值.目前,科沃斯银行服务机器人已覆盖中国建设银行、中国农业银行、中国银行、平安银行、兴业银行等 20 余家知名银行。在位于新加坡的中国银行全球首家创新研发基地,为国际嘉宾承担引导服务工作。截至目前,其为银行网点顾客提供的服务总量已超 800 万人次,引导分流客户成功总量约 30 万人次,金融商品营销成功总量超过 30 万人次。通过提升银行服务水准升级零售业务,旺宝深入银行科技化进程。科沃斯智慧银行应用案例已入选工信部《人工智能实践录》。

b.案管机器人

行业需求分析

根据《最高人民检察院关于深化智慧检务建设的意见》,到 2020 年底,充分运用新一代信息技术,推进检察工作由信息化向智能化跃升,研发智慧检务的重点应用;到 2025 年底,全面实现智慧检务的发展目标,以机器换人力,以智能增效能,打造新型检察工作方式和管理方式。

目前,检务工作中的一些难点需要以开创性的方式解决。如来访人员在办事过程中不熟悉流程,检察机关人员需要花费大量的时间去回答办事流程类的问题;辩护人和诉讼代理人缺少案件查询与追踪的平台;办事人员对案件信息和法律文书有快速查询需求等等。

产品价值分析

科沃斯商用机器人有限公司推出的案管机器人基于良好的人机交互能力和定位导航自主运动能力,能够为客户提供主动迎宾、身份审核、业务咨询与案件信息查询、电子卷宗刻录、本异地事项办理等五大功能。案管机器人在检察院业务场景中,类似于银行服务机器人之于银行场景,承担了业务入口的重任,通过与现场机具的互联互通,深度嵌入现有业务流程,优化业务逻辑,提高办事效率,为客户创造实实在在的价值。

(3)展望:AIOT 领域服务机器人的市场机遇

综上可见,服务机器人融入业务场景的重要抓手是人机交互能力。而在基于 IoT 技术的市场中,与人发生联系的场景(无论是智慧政务还是智慧医疗、智慧办公等)逐渐丰富,人机交互的需求愈发强烈。随着近些年智能终端设备的发展,用户对于人与机器间的交互方式也提出了全新要求,从被动交互到主动交互,从限定场景交互到多场景自适应交互,尤其在 AIOT 技术浪潮下,云、边、端能力的发展和一体化,服务机器人的人机交互能力将取得长足进展。

以科沃斯银行服务机器人、案管机器人为代表的 to B 服务机器人产品,在对话智能、图像智能、运动智能融合的基础上,通过与场景中其他设备之间的互联互通以及云端的服务能力, 形成从端智能到云平台的一揽子 AIOT 智慧化解决方案,与业务场景深度耦合,为客户提供从共性到个性的定制化服务。未来随着服务场景的快速拓展和持续进化,服务机器人解决方案提供商需要抽象不同行业场景的共性需求,形成共性平台+应用子集的整体解决方案架构,通过共性部分的规模化降低行业服务成本,应用子集部分则需要通过服务中台的抽象和建立,构建针对 B 端客户个性化定制需求的快速响应能力,最终实现服务机器人产品的实质性落地和可持续发展。

七 协同创新与合作共赢

为了加速下一代服务机器人的规模化和商用化,亟需多方参与共同推进技术、产品、服务的尝试、迭代和更新。在优势互补的开放创新框架下,探讨长期愿景、研发前沿技术、推广商业合作、搭建创新生态,吸引商业实体、科研院所、开源社区的广泛参与和贡献。

在机器人 4.0 演进过程中,要摆脱线性思维,建立跳跃式发展框架。具体来说,人工智能和人工增强要按需融合,在核心技术逐步演进过程中,从优化垂直应用场景入手,率先在关键场景为用户提供稳定可靠的服务。在 5G 通信技术的支撑下,本地数据采集和云端知识共享应高效连接,通过不断延伸服务场景,逐步减少人工增强的比例。在共享计算、存储、通信资源基础上,智能算法持续从(云端)大数据和(本地端)个性化数据中抽取知识,逐步从特定场景适应到通用场景,最终实现机器人即服务(Robot As A Service)的长期愿景。

1 .机器人 4.0 的基础通用参考平台

针对这些需求,英特尔中国研究院提供了面向机器人 4.0 的基础通用参考平台——HERO系统平台。底层是硬件计算平台,上面是软件层。机器人 3.0 的部分,包括基本感知和交互、运动导航、规划、操纵。机器人 4.0 部分更多支持自适应交互和持续学习,包括三维场景的语义理解和个性化的知识图谱。

HERO 平台不仅可以提供基础的软硬件能力,并且可以基于该平台进一步扩展。例如,异构计算平台可以加入第三方硬件加速模块,知识图谱可以针对特定应用领域去扩展该领域的通用知识图谱,可以利用其中提供的动态知识图谱部分来获取动态的人性化知识。自适应学习部分也可以加入更多的感知模块来增强已有的感知功能或补充新的感知功能。

2 .知识融合

越来越多的研究者认为,人工智能技术将会从模仿人的行为和决策过程过渡到了解人类的 学习能力和运用知识的能力。在数字化时代,越来越多的信息被分析和存储后,将被映射为结构化的知识库。知识工程和人工智能的结合,会大大提高模式识别和机器学习算法的精度。随着认知科学、机器人学、自然语言理解等相关领域的发展,将催生出超越现有 Apple Siri、Google Now、IBM Watson 的推荐系统和问答系统,并且会跨越不同语言的边界。通过建立知识库和智能算法的良性循环,不断完善对假设的验证,实现预测和自我诊断。

3 .众包与群体智慧

深度学习算法在语音识别和图像分类中取得跳跃式发展的成绩,很大程度上得益于规模足 够大的数据集、以及通过众包技术给训练数据打标签的做法。在过去十几年,众包技术从 早期的创造内容Wikipedia,到标注数据 Amazon Mechanical Turk,到投资创新项目Kickstarter。在下一阶段,群体智慧将会扩展到创造新产品、打造新服务。未来的众包任务会更加细分、更 加多样化,和人工智能算法有关的包括标注数据、训练模型,和人类增强有关的包括提出 问题、做出决策,和云端融合有关的包括可视化工具和人机交互接口。

4 .仿真训练

在物理世界收集训练数据,让机器人从头开始学习决策策略,会遇到很多挑战。收集过程通常费时费事,有些任务会对人带来危险,有些极端案例不容易收集到。计算机图形学与仿真技术可以解决上述挑战,通过在虚拟场景中配置不同的环境和任务参数,分解机器人的感知、决策、控制模块,搭建模块与模块之间的状态表征方法,实现从虚拟仿真到真实操作的跨越。目前,基于增强学习框架,在奖励函数和机器人操作之间形成映射和迁移关系,在模拟器中超实时地迭代训练,可以大大缩短训练时间和降低学习成本。

5 .机器人即服务

机器人即服务结合了云计算、人工智能、机器人学、虚拟现实、自动化等,是数字经济时 代的全新业务模式,是“软件即服务”、“平台即服务”、“基础设施即服务”之后的新型服务 模式。通过租借机器人服务,企业能够以低成本、灵活、方便的形式完成不同的任务。机器人 本体需要提供动态、可定制、可编程的接口和模块,即可以在零售、农业、健康、物流、教育、制造等不同领域,填补日益扩大的劳动力短缺的缺口,提升运营效率,提高投入产出比。就像 智能手机与手机应用市场的经济模式类似,未来的机器人服务会激发硬件工程师、软件工程师、交互设计师、产品经理、算法工程师、人工训练师等参与,协同打造出机器人的应用市场、模 型市场、技能市场、服务市场等。预计从 2016 年到 2026 年这十年间,机器人即服务的市场规模会增长到 340 亿美元,复合年增长率达到 66%。

八 总结与展望

机器人技术是多学科交叉的科学工程, 涉及机械、电子、计算机、通信、人工智能和传感器,甚至纳米科技和材料技术等。毫不夸张地说,智能机器人是人工智能应用“皇冠上的明珠”。

近年来,人工智能和机器学习获得快速发展,但机器人个体的自主智能距离人们的期待还 有较大的差距,影响了机器人产业的规模化发展。如何利用跨领域的技术推动力,加速对机器 人的赋能是机器人产业亟待解决的问题。本机器人 4.0 白皮书针对当前机器人产业现状和瓶颈, 提出构建云边端一体化的协同计算平台,并在此平台上支持机器人持续学习和协同学习的能力, 实现基于个性化知识图谱和场景自适应的融合,通过协同创新实现机器人产业规模化。

边缘计算是最近几年提出的新概念,其推广和落地非常依赖于具体的应用,尤其适用于对实时性要求较高的场景。机器人应用正是非常合适的应用场景。边缘实时计算加上云计算的无限处理能力,可以大大提升机器人本体的人机交互和场景自适应能力,也会增强自主移动和感知能力。通过基于 5G 的云边端一体化,机器人本体的能力设计具有很大的弹性空间,从而解耦对机器人本体硬件能力的依赖,降低成本,推动大规模的部署就成为可能。

由于篇幅所限,白皮书对有些相关的问题没有深入探讨,例如机器人的灵巧操控技术、多模态感知融合技术、多智能体学习等等。我们希望未来通过深化产业协同创新,对这些问题继续探索。

虽然未来总是充满不确定性,我们坚信 AI 与 5G 的互相促进是机器人规模化发展的必经之路。希望机器人 4.0 白皮书中阐述的核心技术、云边端融合的系统框架和机器人跳跃式发展的思路,可以引领机器人技术和产业发展的方向。云端大脑和安全专网的实践和思考,以及智能制造和商业应用领域的经验解析,能够优化实施路径,让机器人尽快大规模地走进各行各业, 走进千家万户!

哈工大NLP工具:PyLTP

一、哈工大 LTP

LTP(Language Technology Platform)中文为语言技术平台,是哈工大社会计算与信息检索研究中心开发的一整套中文语言处理系统。LTP 制定了基于 XML 的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等 6 项中文处理核心技术),以及基于动态链接库(Dynamic Link Library,DLL)的应用程序接口,可视化工具,并且能够以网络服务的形式进行使用。

二 . pyltp 终极安装

下面介绍 Windows10 Python 环境下 LTP 的扩展包 pyltp 安装过程。

1. 常见错误

大家通常会调用 “pip install pyltp” 安装该扩展包,但会遇到各种错误,下面介绍一种可行的方法。

2. 安装pyltp包

首先,安装 Python3.6 环境,如下图所示“python-3.6.7-amd64.exe”。

python-3.6.7-amd64.exe
python-3.6.7-amd64.exe

接着,下载 pyltp 扩展包的 whl 文件至本地,调用 CMD 环境进行安装,注意需要将所在文件的路径写清楚。

  1. pyltp-0.2.1-cp35-cp35m-win_amd64.whl (对应Python3.5版本)
  2. pyltp-0.2.1-cp36-cp36m-win_amd64.whl (对应Python3.6版本)
  3. pip install C:\Python36\Scripts\pyltp-0.2.1-cp36-cp36m-win_amd64.whl

whl下载地址:
https://download.csdn.net/download/qq_22521211/10460778

注意,如果报错“error:Microsoft Visual C++ 9.0 is required”,则安装下面 exe文件。

exe文件
exe文件

3 .下载模型文件

最后需要下载模型文件,其下载地址为:

本文下载 3.4 版本的模型,下载解压如下图所示:

3.4版本的模型
3.4版本的模型

在编写代码时,需要导入指定文件夹中的模型,再进行中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等分析。例如:

#词性标注

pdir='AgriKG\\ltp\\pos.model'

pos = Postagger()

pos.load(pdir)

postags = pos.postag(word) #基于分词得到的list将下词性标注

postags = list(postags)

print(u"词性:", postags)

分词、词性标注、句法分析一系列任务之间存在依赖关系。举例来讲,对于词性标注,必须在分词结果之上进行才有意义。LTP 中提供的 5 种分析之间的依赖关系如下所示:

讲到这里,哈工大 pyltp 基本安装成功,接下来将介绍它的基本用法。
基础性文章,希望对入门者有所帮助。

三.中文分句和分词

1.中文分句

# -*- coding: utf-8 -*-

from pyltp import SentenceSplitter

from pyltp import Segmentor

from pyltp import Postagger

from pyltp import NamedEntityRecognizer

#分句

text = "贵州财经大学要举办大数据比赛吗?那让欧几里得去问问看吧!其实是在贵阳花溪区吧。"

sents = SentenceSplitter.split(text)

print('\n'.join(sents))

中文分句的输出结果如下所示:

  1. 贵州财经大学要举办大数据比赛吗?
  2. 那让欧几里得去问问看吧!
  3. 其实是在贵阳花溪区吧。

2.中文分词

# -*- coding: utf-8 -*-

from pyltp import SentenceSplitter

from pyltp import Segmentor

from pyltp import Postagger

from pyltp import NamedEntityRecognizer

 

text = "贵州财经大学要举办大数据比赛吗?那让欧几里得去问问看吧!其实是在贵阳花溪区吧。"

 

#中文分词

segmentor = Segmentor() #初始化实例

segmentor.load("AgriKG\\ltp\\cws.model") #加载模型

words = segmentor.segment(text) #分词

print(type(words))

print(' '.join(words))

segmentor.release() #释放模型

输出结果如下所示(人工换行):

  1. <class ‘pyltp.VectorOfString’>
  2. 贵州 财经 大学 要 举办 大 数据 比赛 吗 ?
  3. 那 让 欧 几 里 得 去 问问 看 吧 !
  4. 其实 是 在 贵阳 花溪区 吧 。