DeepMind 发布星际争霸强化学习课程

此前,跨象乘云介绍了:Pysc2 —— 基于 Python 的星际争霸 II 机器学习环境,这是 DeepMind 和暴雪合作开发星际争霸 II 到强化学习研究的一个丰富环境,为强化学习代理提供了与星际争霸 II 进行交互的界面,获得观察结果并发送动作。

很长时间以来,因为星际争霸这个游戏包含非常多的状态和动作空间,以及只有部分可观察和多玩家的特点,这个游戏一直被机器学习界认为是人工智能的下一个『大挑战』。

于是,一个由澳大利亚开发人员、机器学习工程师和研究人员组成的团队 —— StarAi 就基于星际争霸开发了一个机器学习课程!

课程特色

大多数强化学习课程都是采用高度数学化的方法学习的,但是这个课程使用更加人性化工具 —— 『故事』,来解释基本的强化学习概念。不能自己动手创造的东西你是不会明白的!所以课程提供了易于实际操作的练习,与步骤详解,以帮助学习。

学习方法

所有练习都在谷歌实验室中执行,直接在浏览器中就可以操作,而与硬件无关。所以你所需要的只是一个谷歌帐户和 Chrome 浏览器。学习的步骤就是先观看演讲材料,然后尝试进行练习。当然课程官方就像高中老师一样,也是要求你在自己实际操作很多遍之后如果还不能解决再看答案,不要直接看答案!

而对于基础较好的技术人员,如果想深入了解的话,课程还提供了Sutton & Bartos 的优秀教科书《An Introduction for each week’s material》中相关章节的链接。课程一共六周,每一部分都包含视频讲解、PPT、课后练习和答案,非常完善!赶紧上手进行学习吧!

课程链接

https://www.starai.io/course/

NVIDIA 开源 TensorRT 中的解析器和插件

TensorRT 是一款高性能深度学习推理平台,可为基于 NVIDIA GPU 的推荐、语音和图像/视频等应用提供低延迟和高吞吐量。它包含用于导入模型的解析器、以及能够在对推理进行优化之前支持新操作和层的插件。

今日,NVIDIA 将 TensorRT 中的解析器和插件开源,使广大的深度学习社区能够对这些组件进行自定义和扩展,让应用程序充分利用强大的 TensorRT 优化。

NVIDIA 一直以来都坚定不移地为开源社区提供大力支持,GitHub 页面 提供了超过 120 个存储库,我们的深度学习框架团队为深度学习项目贡献了超过 1500 项,以及诸多大型项目,如 RAPIDS 、NVIDIA DIGITS、NCCL、TensorRT 推理服务器、以及如今的 TensorRT。

多种方式参与其中,贡献你的智慧:

针对 ONNX 格式和 Caffe 扩展解析器,将可实现新操作的模型导入 TensorRT
插件使你能够在 TensorRT 中运行自定义操作。你可以将开源插件用作参考,或构建新插件以支持新的层并与社区共享
样本为你的推理应用程序提供了一个起点,提供涵盖新工作流程和管线的样本

TensorRT github 存储库访问链接 https://github.com/NVIDIA/TensorRT,其中包括有关如何参与其中的贡献指南。

我们欢迎社区对所有部分的大力贡献,访问https://github.com/NVIDIA/TensorRT/blob/master/CONTRIBUTING.md,参考贡献指南。当新版本发布可用时,NVIDIA 会将最新代码与 TensorRT 合并发布。

人体姿态智能估算

大片中的人物特效如何实现,少不了应用人体姿态估计。这篇博客简介了使用深度学习技术的多人姿态估计方法,及其应用。人体姿态骨架图 (skeleton) 用图形格式表示人的动作。本质上,它是一组坐标,连接起来可以描述人的姿势。骨架中的每个坐标都被称为这个图的部件(或关节、关键点)。我们称两个部件之间的有效连接为对(pair,或肢)。但是要注意的是,并非所有部件组合 都能产生有效的对。下图是一个人体姿态骨架图的示例。

左:人体姿态骨架图的 COCO 关键点格式 ;右:渲染后的人体姿态图
左:人体姿态骨架图的 COCO 关键点格式 ;右:渲染后的人体姿态图

人体姿态信息的获取为多个现实应用开辟了道路,本博客的最后也会讨论其中一些应用。近年来,研究人员提出了多种人体姿态估计方法,其中最早(也是最慢)的方法通常是在只有一个人的图像中估计一个人的姿势。这些方法通常先识别出各个部件,然后通过在它们之间形成连接来创建姿势。

当然,如果是在包含多人的现实场景,这些方法就不是很有用了。

多人姿态估计

由于不知道图像中每个人的位置和总人数,因此多人姿态估计比单人姿态估计更困难。通常,我们可以通过以下方法来解决上述问题:

简单的方法是:首先加入一个人体检测器,然后分别估计各个部件,最后再计算每个人的姿态。这种方法被称为「自顶向下」的方法。

另一种方法是:检测图像中的所有部件(即所有人的部件),然后将属于不同人的部件进行关联/分组。这种方法被称为「自底向上」方法。

上部: 传统的自顶向下的方法;下部: 传统的自底向上的方法。
上部: 传统的自顶向下的方法;下部: 传统的自底向上的方法。

通常,自顶向下的方法比自底向上的方法更容易实现,因为添加人体检测器要比使用关联/分组算法容易得多。整体上很难判断哪种方法性能更好,因为归根结底是对比人体检测器和关联/分组算法哪个更好。

在这篇博客中,我们主要关注使用深度学习技术的多人姿态估计技术。在下一节中,我们将回顾一些流行的自顶向下和自底向上方法。

深度学习方法

1. OpenPose

OpenPose 是最流行的自底向上多人姿态估计方法之一,部分原因在于其 GitHub 实现的文档注释很友好。与许多自底向上的方法一样,OpenPose 首先检测图像中的部件(关键点),然后将部件分配给不同的个体。下图展示的是 OpenPose 模型的架构。

OpenPose 架构的流程图
OpenPose 架构的流程图

OpenPose 网络首先使用前几层(上图中是 VGG-19)从图像中提取特征。然后将这些特征输入到卷积层的两个并行分支中。第一个分支预测了一组置信图(18 个),每个置信图表示人体姿态骨架图的特定部件。第二个分支预测另外一组 Part Affinity Field (PAF,38 个),PAF 表示部件之间的关联程度。

使用 OpenPose 进行人体姿态估计的步骤
使用 OpenPose 进行人体姿态估计的步骤

OpenPose 其余步骤的作用是细化每个分支做出的预测。利用部件置信图,在部件对之间形成二分图(如上图所示)。然后利用 PAF 值,对二分图中较弱的链接进行剪枝。通过以上步骤,我们可以估计出人体姿态骨架图,并将其分配给图像中的每一个人。

2. DeepCut

DeepCut 是一种自底向上的方法,可用于多人姿态估计。其作者通过定义以下问题来完成这项任务:

  • 生成一组身体部件候选项集合 D。这个集合表示图像中所有人身体部位的所有可能位置。从身体部件候选集中选择身体部件的子集。
  • 使用身体部件类 C 中的类别标注选中的每个身体部件。身体部件类表示部件的类型,如「手臂」、「腿」、「躯干」等。
  • 分配属于同一个人的身体部位。
DeepCut 方法图示
DeepCut 方法图示

上述问题可以通过建模为整数线性规划问题(Integer Linear Programming,ILP)来解决。使用二元随机变量(binary random variable)的三元组 (x, y, z) 进行建模,二元随机变量的域如下图所示:

二元随机变量的域
二元随机变量的域

考虑来自身体部件候选项集合 D 的两个身体部件候选项 d 和 d’,以及来自类别集 C 的类别 c 和 c’,其中身体部件候选项是通过 Faster RCNN 或 Dense CNN 获得的。现在,我们可以开发以下语句集。

  • 如果 x(d,c) = 1,则表示身体部件候选项 d 属于类别 c。
  • 如果 y(d,d’) = 1,则表示身体部件候选项 d 和 d’属于同一个人。
  • 他们还定义了 z(d,d』,c,c』) = x(d,c) * x(d』,c』) * y(d,d』)。如果上述值为 1,则表示身体部件候选项 d 属于类别 c,身体部件候选项 d’ 属于类别 c’,最后身体部件候选项 d,d ‘ 属于同一个人。

最后一个语句可以用来划分属于不同人的姿势。上述语句显然可以用线性方程表示为 (x,y,z) 的函数。通过这种方法,我们就可以建立整数线性规划 (ILP) 模型,并估计出多人的姿态。完整方程和详细分析参见论文《DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation》。

3. RMPE (AlphaPose)

RMPE 是一种流行的自顶向下的姿态估计方法。其作者认为,自顶向下的方法通常依赖于人体检测器的表现,因为姿态估计是对有人在的区域上执行的。因此,定位误差和重复的边界框预测可能会导致姿态提取算法只能得到次优解。

重复预测的影响(左)和低置信度边界框的影响(右)
重复预测的影响(左)和低置信度边界框的影响(右)

为解决这一问题,作者提出利用对称空间变换网络 (Symmetric Spatial Transformer Network, SSTN) 从不准确的边界框中提取高质量的单人区域。在该区域中,利用单人姿态估计器 (SPPE) 来估计这个人的人体姿态骨架图。然后我们再利用空间去变换器网络 (Spatial De-Transformer Network, SDTN) 将估计的人体姿态重新映射回原始图像坐标系。最后,利用参数化姿态非极大值抑制 (parametric pose NMS) 技术解决冗余问题。

此外,作者还介绍了姿态引导的 proposal 生成器(Pose Guided Proposals Generator)来增强训练样本,以更好地帮助训练 SPPE 和 SSTN 网络。RMPE 的显著特点是,这一技术可以扩展为人体检测算法和 SPPE 的任意组合。

4. Mask RCNN

Mask RCNN 是用于执行语义和实例分割的流行架构。该模型可以并行地预测图像中各种对象的边界框位置和对对象进行语义分割的掩码(mask)。而这种基本架构可以轻松地扩展成用于人体姿态估计的方法。

Mask RCNN 架构流程图
Mask RCNN 架构流程图

该基本架构首先使用 CNN 从图像中提取特征图。区域候选网络(Region Proposal Network,RPN)使用这些特征图来获取对象的候选边界框。这些候选边界框就是从 CNN 提取的特征图中选择区域(region)而得到的。由于候选边界框可以具有各种尺寸,因此我们使用一个叫作 RoIAlign 的层来减小所提取特征的尺寸,使得它们的大小一致。现在,将提取到的特征传递到 CNN 的并行分支,以最终预测边界框和分割掩码。

现在我们看一下执行分割的分支。首先假设图像中的一个对象属于类别集合 K。分割分支可以输出 K 个大小为 m x m 的二进制掩码(mask),其中每个二进制掩码表示仅属于该类的所有对象。我们可以将每种类型的关键点建模为不同的类,并将其作为分割问题来处理,从而提取出属于图像中每个人的关键点。

同时,我们还可以训练目标检测算法来识别人的位置。通过结合人的位置信息和他们的关键点,我们可以得到图像中每个人的人体姿态骨架图。

这种方法类似于自顶向下的方法,但是人体检测阶段是与部件检测阶段并行执行的。也就是说,关键点检测阶段和人体检测阶段是相互独立的。

其他方法

多人人体姿态估计有很多解决方法。简洁起见,本文仅解释了几种方法。有关更详尽的方法列表,大家可以查看以下资料:

应用

姿态估计在许多领域都有应用,下面列举其中的一些应用

1. 活动识别

追踪人体在一段时间内姿势的变化也可以用于活动、手势和步态识别。这样的用例有:

  • 检测一个人是否跌倒或生病的应用。
  • 可以自主地教授正确的锻炼机制、体育技术和舞蹈活动的应用。
  • 可以理解全身手语的应用(例如:机场跑道信号、交通警察信号等)。
  • 可以增强安全性和用来监控的应用。
追踪人的步态对于安全和监控领域是很有用的
追踪人的步态对于安全和监控领域是很有用的

2. 动作捕捉和增强现实

CGI 应用是一类有趣的应用,它也利用了人体姿态估计。如果可以估计人的姿势,就能够将图、风格、设备和艺术品叠加在人身上。通过追踪这种人体姿势的变化,渲染出的图形可以在人移动时「很自然地适应」人。

CGI 渲染示例
CGI 渲染示例

Animoji 是一个很好的例子。尽管上面的研究只追踪了人脸的结构,但这个思路可以扩展用于人体关键点追踪。同样的概念也可以用来渲染一些模仿人类动作的增强现实 (AR) 元素。

3. 训练机器人

我们可以不通过手动对机器人进行编程来追踪轨迹,而是沿着执行某个动作的人体姿态骨架的轨迹运行。人类教练可以通过演示动作,有效地教机器人这些动作。然后,机器人可以通过计算得知如何移动关节才能执行相同的动作。

4. 控制台动作追踪

姿态估计的另一个有趣的应用是在交互式游戏中追踪人体的运动。通常,Kinect 使用 3D 姿态估计(利用红外传感器数据)来追踪人类玩家的运动,并使用它来渲染虚拟人物的动作。

运行中的 Kinect 传感器
运行中的 Kinect 传感器

原文链接:https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b

下一代 AI 系统基石:知识图谱将何去何从?

AI 前线导读:2012 年,Google 提出知识图谱的概念并将其用于搜索引擎中, 伴随 AI 技术的快速发展,智能服务的出现让知识图谱显得尤为重要,那么,作为知识工程的重要分支,它会给智能服务带来哪些影响?知识图谱真正要做到成熟可用,还将面临哪些挑战?

5 月 30 日,北京智源人工智能研究院在清华大学开展了以「知识与认知图谱」为主题的讲座,本次讲座上,来自清华大学计算机系的四位学者分别从知识工程、深度学习、自然语言处理和异质资源搜索与推荐四个角度,介绍清华大学近些年相关领域的研究成果。

本文将会以李涓子教授和刘知远副教授两位讲师的内容出发,重点介绍知识图谱的发展现状以及它在应用中存在的问题和解决方案。

处于技术启动期的知识图谱

大数据时代,通过对数据进行语义层面的解释可以挖掘到许多隐藏的知识,它们被用于机器智能,这是从数据到智能的转化过程。

数据到智能的转化过程
数据到智能的转化过程

专家系统的出现让知识显得尤为重要,它是人工智能对客观世界认知的渠道。不同于富含语义的人类交流,大数据的机器学习仍集中于低维特征空间。由于两者之间互不相通,因此作为桥梁的知识图谱起到了重要作用,同时,它也是整合客观事件与实体的关键。

作为新一代人工智能系统的基础,知识图谱的重要性不言而喻,根据 2018 年下半年发布的 Gartner 曲线可以得知,知识图谱的发展至少还需要 5 – 10 年时间才能到达一个相对成熟的阶段,而通用人工智能的实现则更是需要至少 10 年。

Gartner 曲线
Gartner 曲线

综上所述,知识图谱的发展必定要解决这两个问题:

  • 加强高质量知识图谱的自动标注,减少人为干涉。
  • 整体形态不再局限于三元组,更丰富的信息形态可以带来更好的表现。

知识图谱存在的问题与解决方案

知识图谱在发展过程中仍存在许多技术难题,目前主要有以下几点:

  • 机器学习中实现可解释智能的方法;
  • 大数据环境下实现基于知识和数据驱动的方法;
  • 知识不确定和不完整的情况下完成知识推理;
  • 对高质量、大规模知识的研究获取算法。

知识图谱不仅仅是知识库,它在物联网时代会发挥更大的作用,以 IBM 的 IoT 项目为例,物联网设备在知识图谱上存在相互联系的关系,假设传感器是一个节点,那么通过解析传感器之间传输的数据便可以为用户提供服务。

除了表示学习,实体和词向量的表示学习同样存在许多挑战,这其中包括词的歧义和词与实体联合表示两部分。

词的歧义是指一词多意的问题,这在词向量表示中问题较为明显,由于同一实体可能对应不同客观事物的问题,因此词向量表示的同时也需要对相关词的词义做对应的表示。
以乔丹这个词为例,假设迈克尔·乔丹对应两个实体,那么在做实体表示的同时就需要使用不同的向量表示,如果篮球乔丹是实体,那么其应该与篮球相关的词在向量上更为接近,而教授乔丹则与机器学习相关的词更为接近。

两种解决方案
两种解决方案

这个问题目前有两种解决方案,即词义表示与基于词义的词和实体联合表示。
其中,联合表示学习主要是通过将词和实体映射到统一低维向量空间,让具有相似语义或知识结构的词和实体具有相近的向量表示,以实现跨语言、文本和知识库的联合推演。相较于词义表示,联合表示学习具有以下几点优势:

  • 支持联合计算,促进词和实体语义互操作和语义融合;
  • 提升表示精度,解决文本中词和实体的潜在歧义问题;
  • 缩小语言鸿沟,支持跨语言自燃语言理解等相关任务。

此外,词和实体的联合表示学习又被分为基于词义的词和实体联合表示学习,及远程监督的跨语言词和实体的联合表示学习。在这两项技术的基础之上,利用神经网络将跨语言协同实体连接,这样可以解决跨语言的词和实体表示问题。

利用神经网络将跨语言协同实体连接
利用神经网络将跨语言协同实体连接

词义的词和实体联合表示学习分为实体表示学习、对齐模型、词和实体提及表示学习三个部分,其中实体关系图被用于实体表示学习,带有锚文本的文档在提取义项映射词后分别被用于对齐模型和表示学习两个部分。

表示学习三个部分
表示学习三个部分

其中,跨语言联合表示学习利用实体关系图打破语言界限,结合跨语言相似句对以及图神经网络,让实体与实体之间通过映射对应语义的上下文,结合联合表示学习最终得到跨语言的语义向量空间。

跨语言的语义向量空间
跨语言的语义向量空间

在跨语言的词和实体表述基础上,词和实体的表示就可以实现对任意文本的实体链接,再通过映射对应语义的上下文以实现大规模实体训练。
目前,这项技术已经被用于构建专家知识库的「学者画像」,这其中最简单的应用就是分类体系的概念,其中兴趣标签可以看作是知识图谱里面的知识标签,利用知识标签和上下文关系的解析,可以得到更为详细的信息。

「学者画像」
「学者画像」

通过「学者画像」,学术界可以得到关于他更多的信息描述,其中包括研究兴趣的变化、学术活跃度、研究多样性等方面,这些均通过分析论文以及合作者关系得出。此外,这项技术还可以被用于会议的搜索和挖掘,例如会议上发表论文最多的学者以及引用最多的作者以及论文内容。

「学者画像」2
「学者画像」2

除此之外,利用「学者画像」得到的一些数据还可以被用于制作技术发展报告,以便于实现对某领域技术发展趋势的预测。

知识图谱对自然语言模型的影响

自然语言处理技术中,复杂的知识库可以提升深度学习的理解能力,经过统一语义表示空间处理后文字、句子、短语甚至文章等语言单元可被用于复杂的自然语言处理任务,其中不乏包括语义分析、句法分析和词法分析等。

自然语言文本中蕴含丰富的语言知识和世界知识,知识图谱和深度学习的双向驱动可以有效提升自然语言处理的效率,此外,机器翻译的神经网络模型则有以下两个特点:

  • 将所有的语义表示为低维向量空间;
  • 语言之间的翻译实际上是低维网络空间里面的多层跳转。

另外,它还包含非常多的语言单元,主要分为字、词、短语、句子和文档五个部分,翻译可以看做是不同语言之间的语句联系,以问答系统和信息检索为例,自然语言处理主要是被用于解决语言单元之间语义联系。

数据驱动+知识指导
数据驱动+知识指导

目前,自然语言处理技术尚无法实现数据层次到更深层次的理解,因此知识提取十分重要,深度学习在理解海量数据之后可以获得大量知识,并以此构建对应的知识图谱。同时,经过表示学习获取的知识也可以被用于深度学习的知识指导。

人类知识以离散符号的形式表示
人类知识以离散符号的形式表示

人类知识以离散符号的形式表示,但它不与深度学习低维向量相容,通过将结构化知识映射到低维向量空间,便可以将语言中知识、文档、句子和词汇等单元与符号相融合,实现跨领域知识理解。
那么,这些问题该如何解决?这就不得不提及语言知识库。

目前,知识领域比较有名的两个语言知识库分别是英文知识库 WordNet 和中文知识库 HowNet(知网),其中 HowNet 提出的义原概念,让人类语言的所有词汇、短语、句子甚至文档被分解成更为细化的部分。

语言知识库
语言知识库

其中,每一个义原可以看做是独特的词义标签,这个标签的意义是明确固定且互相独立的,义原之间还标记了对应的语义关系,那么,是否可以让义原知识协助指导数据驱动知识学习?目前已经有两种方案:
利用自然语言处理比较有名的词表示学习,其中比较有名的就是以纯数据驱动的 word2vec 算法,引入 HowNet 知识库可以实现义原、词义和词汇进行联合表示学习。
而在句子层面,语言模型显得尤为重要,目前深度学习框架一般采用 CNN 或者 RNN 训练语言模型。

一般采用 CNN 或者 RNN 训练语言模型
一般采用 CNN 或者 RNN 训练语言模型

但是在实际文本中,依旧有大量的词没有在 HowNet 里面被标注,不过这个问题可以利用义原的自动推荐解决,它主要是通过整合词组成的义原实现,目前这项技术已经可以达到比较好的预测结果,它也可以被看做是未来重要的方向。

利用深度学习帮助单词相关义原知识的预测,之后再用义原知识来协助理解互联网上的文本信息,这项技术可以被用于语言和常识知识库的探索。

语言和常识知识库的探索
语言和常识知识库的探索

除了以 HowNet、WordNet 等为首的语言知识库,还有商业引擎和大型知识图谱构建的世界知识库,它不仅包含了现实世界中各种各样的实体,还涵盖了他们之间的关系,世界知识库、语言知识库整合至数据训练库中,机器学习的性能会显著提升。

世界知识库可以协助理解复杂知识文本,深度学习自然语言处理的同时协助文本中的知识获取可以让相关工作形成闭环,以此实现知识图谱和深度学习双向驱动的效果。

知识图谱的发展以及学术界的探讨

整体来看,语言知识库和知识图谱是提升机器学习性能的关键。目前大多数知识图谱依赖人工构建,仍然缺乏从大规模数据里获取的手段。

本次论坛中,清华大学的李涓子教授表示他们将会在以下几个方面做出基础性和建设性工作:

  • 支持鲁棒可解释的知识表示获取和推理的基础理论以及方法研究工作;
  • 建立大规模的知识库以及对应平台,其中知识平台主要是用于维持知识的生态系统;
  • 利用科技情报大数据简历基于学者和知识的平台,并以其为基础提供相应的智能服务;
  • 构建一个集群体智慧、开放、融合、结构化的知识图谱基础平台,从而降低构建门槛。

目前,清华的 XLORE 跨语言知识图谱已经包含大约 137 万条知识,此外,他们还基于跨语言知识库推出双语协同实体链接系统 XLink。大数据挖掘与智能服务平台 —— AMiner 则被用于学者搜索,通过给学者打上兴趣标签,用户可以利用这些标签对需要查找的专家有更深层次的了解。

除了跨语言知识图谱 XLORE、双语协同实体链接系统 XLink 和专业数据智能服务平台 AMiner ,清华还在 Github 推出集义原计算、知识表示和知识获取等算法工具汇总的工具包 Thunlp,其主要包括以下几种工具:

  • THULAC —— 中文词法分析
  • THUCTC —— 中文文本分类
  • THUTAG —— 关键词抽取与社会标签推荐
  • OpenKE —— 知识表示学习
  • OpenNRE —— 神经网络关系抽取
  • OpenNE —— 网络表示学习
  • OpenQA —— 开放域自动回答

对这套工具感兴趣的读者可以在:

GitHub地址项目 GitHub 地址

了解更多信息

Pytorch 图神经网络(GNN)实战推荐

一、资源简介

最近以来图神经网络 (GNN) 在各个领域越来越受到欢迎,包括社交网络、知识图谱、推荐系统,甚至生命科学。GNN 在对图形中节点间的依赖关系进行建模方面能力强大,使得图分析相关的研究领域取得了突破性进展。今天给大家推荐一篇关于 Pytorch 实战图神经网络的笔记,图神经网络在最近的学术界和工业界都十分的火热,非常值得一学!

PyTorch
PyTorch

PyTorch 是什么?

PyTorch 是一个基于 Python 的科学计算工具包,它主要面向两种场景:

  1. 用于替代 NumPy ,可以使用 GPU 的计算力
  2. 一种深度学习研究平台,可以提供最大的灵活性和速度

原作者: Steeve Huang
网页链接:http://t.cn/AiKsApEM

二、主要内容

在本文中,作者将使用 PyTorch 和 PyTorch Geometry (PyG) ,这是一个构建在 PyTorch 之上的图形神经网络框架,运行速度非常快。它有多快?与另一个流行的图神经网络库 DGL 相比,它的训练时间最多快80% !除了其惊人的速度,PyG 还提供了一组在各种论文中都有说明的 GNN 模型。因此,用 PyG 重做实验是非常方便的。由于 PyG 在速度和方便方面的优势,毫无疑问,它是最受欢迎和广泛使用的 GNN 库之一。

作者主要是用 PyTorch 和 PyG 做了图神经网络的实验,更多相关,请查阅原资料~

Example graph
Example graph
Example graph2
Example graph2

三、资源分享

同时为了方便大家,我们把最新 PDF 打包好了,可以直接下载 ——

Hands on Graph Neural Networks with PyTorch & PyTorch Geometric

TensorFlow 2.0 构建和部署端到端的图像分类器

2019 年 3 月 6 日,谷歌在 TensorFlow 开发者年度峰会上发布了最新版的 TensorFlow 框架 TensorFlow 2.0 。新版本对 TensorFlow 的使用方式进行了重大改进,使其更加灵活和更具人性化。具体的改变和新增内容可以从 TensorFlow 的官网找到,本文将介绍如何使用 TensorFlow 2.0 构建和部署端到端的图像分类器,以及新版本中的新增内容,包括:

  • 使用 TensorFlow Datasets 下载数据并进行预处理
  • 使用 Keras 高级 API 构建和训练图像分类器
  • 下载 InceptionV3 卷积神经网络并对其进行微调
  • 使用 TensorFlow Serving 为训练好的模型发布服务接口

本教程的所有源代码都已发布到 GitHub 库中,有需要的读者可下载使用。

GitHub地址项目 GitHub 地址

新一代 MNIST 数据集 – QMNIST

在机器学习研究中,MNIST 手写数字图像数据集已经作为基准使用了二十余年。该数据集虽然经典,但也存在测试集过小等问题。近日,来自 Facebook 和纽约大学的研究者重建并扩展了该数据集,在测试集中新增了 50,000 个样本。MNIST 作者之一的 Yann LeCun 在推特中表示

如果多次使用原版的 MNIST 测试集,你的模型可能在测试集上已经过拟合了。是时候在新增的样本上试一下了。

MNIST 数据集
MNIST 数据集

MNIST 是一个由 Yann Lecun 等人创建的手写数字图像数据集,是研究者研究机器学习、模式识别等任务的高质量数据库。它包含训练集和测试集,训练集包含 60,000 个样本,测试集包含 10,000 个样本。

MNIST 数据集抽取自 NIST 数据库。NIST 手写字符集第一个分区的发布要早一年,其训练集是由 2,000 名人口普查局雇员手写的,而测试集更加有挑战性,是由 500 名在校生手写的。

LeCun、Cortes 和 Burges 的其中一个目的是创建一个分布相似的训练集和测试集。据他们描述,这个过程产生了两个 60,000 个样本的集合。然后通过下采样将测试集样本数降低到 10,000 个,可能是因为用当时的电脑处理这样一个数据集会非常慢。剩余的 50,000 个样本从此就丢失了。

20 多年来,MNIST 数据集都被认为是标准的机器学习基准。在过去的十年来,许多研究者都表达过这个数据集已经被过度使用的观点。尤其是其测试集过小,只有 10,000 样本,这引起了很多担忧。数以百计的论文都依据这同一个测试集,得到的性能越来越高。那么模型是否已经在测试集上过拟合?我们还能否相信在该数据集上取得的新结论?机器学习数据集到底能用多久?

为了解决原版 MNIST 测试集过小等问题,来自 Facebook 和研究者决定重建该数据集。QMNIST 的 GitHub 页上提供了 Pytorch 平台的 QMNIST 数据加载器,需要将数据集下载至与 pytorch.py 相同的文件夹下将网络下载选项设置为 download=’True’。

from qmnist import QMNIST

# the qmnist training set, download from the web if not found
qtrain = QMNIST('_qmnist', train=True, download=True)

# the qmnist testing set, do not download.
qtest = QMNIST('_qmnist', train=False)

# the first 10k of the qmnist testing set with extended labels
# (targets are a torch vector of 8 integers)
qtest10k = QMNIST('_qmnist', what='test10k', compat=False, download='True')

# all the NIST digits with extended labels
qall = QMNIST('_qmnist', what='nist', compat=False)

它与标准的 Pytorch MNIST 数据加载器兼容。

GitHub地址项目 GitHub 地址

《深度学习入门之 PyTorch》教程

一、资源简介

深度学习入门之 PyTorch》深度学习如今已经成为科技领域最炙手可热的技术,在《深度学习入门之 PyTorch》中,我们将帮助你入门深度学习。《深度学习入门之 PyTorch》将从机器学习和深度学习的基础理论入手,从零开始学习 PyTorch ,了解 PyTorch 基础,以及如何用 PyTorch 框架搭建模型。通过阅读《深度学习入门之 PyTorch》,你将学到机器学习中的线性回归和 Logistic 回归、深度学习的优化方法、多层全连接神经网络、卷积神经网络、循环神经网络,以及生成对抗网络,最后通过实战了解深度学习前沿的研究成果,以及 PyTorch 在实际项目中的应用。《深度学习入门之PyTorch》将理论和代码相结合,帮助读者更好地入门深度学习,适合任何对深度学习感兴趣的人阅读。

作者简介

廖星宇,就读于中国科学技术大学应用数学系,获得国家一等奖学金。在个人博客、知乎等平台上发布多篇关于深度学习的文章,具有一定的阅读量和人气。

二、主要内容目录

PyTorch 是一个开源的 Python 机器学习库,基于 Torch , 应用于人工智能领域,如自然语言处理。 它最初由 Facebook 的人工智能研究团队开发, 并且被用于 Uber 的概率编程软件” Pyro “。

PyTorch 主要有两大特征:

  1. 如 NumPy 的张量计算,但使用 GPU 加速
  2. 基于带基自动微分系统的深度神经网络
  • 第 1 章 深度学习介绍 1
  • 第 2 章 深度学习框架 11
  • 第 3 章 多层全连接神经网络 24
  • 第 4 章 卷积神经网络 76
  • 第 5 章 循环神经网络 111
  • 第 6 章 生成对抗网络 144
  • 第 7 章 深度学习实战 173

四个实例

  • 实例一:猫狗大战:运用预训练卷积神经网络进行特征提取与预测 . 173
  • 实例二: Deep Dream :探索卷积神经网络眼中的世界 183
  • 实例三: Neural-Style :使用 PyTorch 进行风格迁移 196
  • 实例四:Seq2seq :通过 RNN 实现简单的 Neural Machine Translation . 205