12 大深度学习框架的入门项目

概述

开源框架总览:现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有 caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet 等。如何选择最适合你的开源框架是一个问题。一个合格的深度学习算法工程师怎么着得熟悉其中的 3 个以上吧。下面是各大开源框架的一个总览。

开源框架总览
开源框架总览

在这里我们还有一些框架没有放上来,是因为它们已经升级为大家更喜欢或者使用起来更加简单的版本,比如从 torch->pytorch,从 theano 到 lasagne。另外这些框架都支持 CUDA ,因此编程语言这里也没有写上 cuda 。

在选择开源框架时,要考虑很多原因,比如开源生态的完善性,比如自己项目的需求,比如自己熟悉的语言。当然,现在已经有很多开源框架之间进行互转的开源工具如 MMDNN 等,也降低了大家迁移框架的学习成本。

除此之外还有 tiny-dnn,ConvNetJS,MarVin,Neon 等等小众,以及 CoreML 等移动端框架,就不再一一介绍。总的来说对于选择什么样的框架,有三可以给出一些建议。

  1. 不管怎么说,tensorflow/pytorch 你都必须会,是目前开发者最喜欢,开源项目最丰富的框架。
  2. 如果你要进行移动端算法的开发,那么 Caffe 是不能不会的。
  3. 如果你非常熟悉 Matlab,matconvnet 你不应该错过。
  4. 如果你追求高效轻量,那么 darknet 和 mxnet 你不能不熟悉。
  5.  如果你很懒,想写最少的代码完成任务,那么用 keras 吧。
  6. 如果你是 java 程序员,那么掌握 deeplearning4j 没错的。

其他的框架,也自有它的特点,大家可以自己多去用用。

如何学习开源框架

要掌握好一个开源框架,通常需要做到以下几点:

  •  熟练掌握不同任务数据的准备和使用。
  • 熟练掌握模型的定义。
  • 熟练掌握训练过程和结果的可视化。
  • 熟练掌握训练方法和测试方法。

一个框架,官方都会开放有若干的案例,最常见的案例就是以 MNISI 数据接口+预训练模型的形式,供大家快速获得结果,但是这明显还不够,学习不应该停留在跑通官方的 demo 上,而是要解决实际的问题。我们要学会从自定义数据读取接口,自定义网络的搭建,模型的训练,模型的可视化,模型的测试与部署等全方位进行掌握。这是一个二分类任务,给大家准备了500 张微笑表情的图片、500 张无表情的图片,放置在 git 工程的data 目录下,图片预览如下,已经全部缩放到 60*60 的大小:

这是无表情的图片:

无表情的图片
无表情的图片

这是微笑表情的图片:

微笑表情的图片
微笑表情的图片

因此,我们的目标就是利用这 500 张图片完成好这个图像分类任务。

在下面的所有框架的学习过程中,我们都要完成下面这个流程,只有这样,才能叫做真正的完成了一个训练任务。

流程
流程

另外,所有的框架都使用同样的一个模型,这是一个 3 层卷积 +2 层全连接的网络,由卷积+BN 层+激活层组成,有的使用带步长的卷积,有的使用池化,差别不大。

  • 输入图像,48*48*3 的 RGB 彩色图。
  • 第一层卷积,通道数 12,卷积核 3*3。
  • 第二层卷积,通道数 24,卷积核 3*3。
  • 第三层卷积,通道数 48,卷积核 3*3。
  • 第一层全连接,通道数 128。
  • 第二层全连接,通道数 2,即类别数。

这是最简单的一种网络结构,优化的时候根据不同的框架,采用了略有不同的方案。因为此处的目标不是为了比较各个框架的性能,所以没有刻意保持完全一致。

开源框架

下面我们开始对各个框架进行简述。

1.  Caffe

概述:Caffe 是伯克利的贾扬清主导开发,以 C++/CUDA 代码为主,最早的深度学习框架之一,比TensorFlow、Mxnet、Pytorch 等都更早,需要进行编译安装。支持命令行、Python 和 Matlab 接口,单机多卡、多机多卡等都可以很方便的使用。目前 master 分支已经停止更新,intel 分支等还在维护,caffe  框架已经非常稳定。

caffe 的使用通常是下面的流程:

caffe
caffe

以上的流程相互之间是解耦合的,所以 caffe 的使用非常优雅简单。

caffe 有很明显的优点和缺点。

优点:

  • 以 C++/CUDA/python 代码为主,速度快,性能高。
  • 工厂设计模式,代码结构清晰,可读性和拓展性强。
  • 支持命令行、Python 和 Matlab 接口,使用方便。
  • CPU 和 GPU 之间切换方便,多 GPU 训练方便。
  • 工具丰富,社区活跃。

缺点:

  • 源代码修改门槛较高,需要实现前向反向传播,以及 CUDA 代码。
  • 不支持自动求导。
  • 不支持模型级并行,只支持数据级并行
  • 不适合于非图像任务。
caffe
caffe

2. Tensorflow

概述:TensorFlow 是 Google brain 推出的开源机器学习库,可用作各类深度学习相关的任务。TensorFlow = Tensor + Flow,Tensor 就是张量,代表 N 维数组,这与 Caffe 中的 blob 是类似的;Flow  即流,代表基于数据流图的计算。

特点:TensorFlow 最大的特点是计算图,即先定义好图,然后进行运算,所以所有的 TensorFlow 代码,都包含两部分:

  • 创建计算图,表示计算的数据流。它做了什么呢?实际上就是定义好了一些操作,你可以将它看做是Caffe 中的 prototxt 的定义过程。
  • 运行会话,执行图中的运算,可以看作是 Caffe 中的训练过程。只是 TensorFlow 的会话比 Caffe 灵活很多,由于是 Python 接口,取中间结果分析,Debug 等方便很多。
tensorflow
tensorflow

3 . Pytorch

概述:一句话总结 Pytorch = Python + Torch。Torch 是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括 Lecun 等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的 Lua 语言,导致很多人都被吓退。后来随着 Python 的生态越来越完善,Facebook 人工智能研究院推出了 Pytorch 并开源。Pytorch 不是简单的封装 Torch 并提供Python 接口,而是对 Tensor 以上的所有代码进行了重构,同 TensorFlow 一样,增加了自动求导。

后来 Caffe2 全部并入 Pytorch,如今已经成为了非常流行的框架。很多最新的研究如风格化、GAN 等大多数采用 Pytorch 源码。

特点:

  • 动态图计算。TensorFlow 从静态图发展到了动态图机制 Eager Execution ,pytorch 则一开始就是动态图机制。动态图机制的好处就是随时随地修改,随处 debug ,没有类似编译的过程。
  • 简单。相比 TensorFlow1.0 中 Tensor、Variable、Session 等概念充斥,数据读取接口频繁更新,tf.nn、tf.layers、tf.contrib 各自重复,Pytorch 则是从 Tensor 到 Variable 再到 nn.Module ,最新的Pytorch 已经将 Tensor 和 Variable 合并,这分别就是从数据张量到网络的抽象层次的递进。有人调侃TensorFlow 的设计是 “make it complicated” ,那么 Pytorch 的设计就是 “keep it simple”。
pytorch
pytorch

4 . Mxnet

概述:  Mxnet 是由李沐等人领导开发的非常灵活,扩展性很强的框架,被 Amazon 定为官方框架。

特点:  Mxnet 同时拥有命令式编程和符号式编程的特点。在命令式编程上 MXNet 提供张量运算,进行模型的迭代训练和更新中的控制逻辑;在声明式编程中 MXNet 支持符号表达式,用来描述神经网络,并利用系统提供的自动求导来训练模型。Mxnet 性能非常高,推荐资源不够的同学使用。

Mxnet
Mxnet

5.  Keras

概述:  Keras 是一个对小白用户非常友好而简单的深度学习框架,严格来说并不是一个开源框架,而是一个高度模块化的神经网络库。

Keras 在高层可以调用 TensorFlow,CNTK,Theano ,还有更多的库也在被陆续支持中。 Keras 的特点是能够快速实现模型的搭建,是高效地进行科学研究的关键。

特点:

  •  高度模块化,搭建网络非常简洁。
  •   API 很简单,具有统一的风格。
  •  容易扩展,只需使用 python 添加新类和函数。
Keras
Keras

6.  Paddlepaddle

概述:  正所谓 Google 有 Tensorflow,Facebook 有 Pytorch,Amazon 有 Mxnet,作为国内机器学习的先驱,百度也有 PaddlePaddle,其中 Paddle 即 Parallel Distributed Deep Learning (并行分布式深度学习)。

特点:  paddlepaddle 的性能也很不错,整体使用起来与 tensorflow 非常类似,拥有中文帮助文档,在百度内部也被用于推荐等任务。另外,配套了一个可视化框架 visualdl,与 tensorboard 也有异曲同工之妙。国产框架不多,大家多支持啊!

paddlepaddle
paddlepaddle

7.  CNTK

概述:  CNTK 是微软开源的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,而其他节点表示其输入上的矩阵运算。

CNTK 允许用户非常轻松地实现和组合流行的模型,包括前馈 DNN,卷积网络(CNN)和循环网络(RNN / LSTM)。与目前大部分框架一样,实现了自动求导,利用随机梯度下降方法进行优化。

特点:

  • CNTK 性能较高,按照其官方的说法,比其他的开源框架性能都更高。
  • 适合做语音,CNTK 本就是微软语音团队开源的,自然是更合适做语音任务,使用 RNN 等模型,以及在时空尺度分别进行卷积非常容易。
cntk
cntk

8.  Matconvnet

概述:  不同于各类深度学习框架广泛使用的语言 Python,MatConvnet 是用 matlab 作为接口语言的开源深度学习库,底层语言是 cuda。

特点:  因为是在 matlab 下面,所以 debug 的过程非常的方便,而且本身就有很多的研究者一直都使用 matlab 语言,所以其实该语言的群体非常大。

matconvnet
matconvnet

9. Deeplearning4j

概述:  不同于深度学习广泛应用的语言 Python,DL4J 是为 java 和 jvm 编写的开源深度学习库,支持各种深度学习模型。

特点:  DL4J 最重要的特点是支持分布式,可以在 Spark 和 Hadoop 上运行,支持分布式 CPU 和 GPU 运行。DL4J 是为商业环境,而非研究所设计的,因此更加贴近某些生产环境。

Deeplearning4j
Deeplearning4j

10 .  Chainer

概述:  chainer 也是一个基于 python 的深度学习框架,能够轻松直观地编写复杂的神经网络架构,在日本企业中应用广泛。

特点:  chainer 采用 “Define-by-Run” 方案,即通过实际的前向计算动态定义网络。更确切地说,chainer 存储计算历史而不是编程逻辑,pytorch 的动态图机制思想主要就来源于 chaine

chainer
chainer

11 .  Lasagne/Theano

概述:  Lasagen 其实就是封装了 theano,后者是一个很老牌的框架,在 2008 年的时候就由 Yoshua Bengio 领导的蒙特利尔 LISA 组开源了。

特点:  theano 的使用成本高,需要从底层开始写代码构建模型,Lasagen 对其进行了封装,使得 theano 使用起来更简单。

Theano
Theano

12 .  Darknet

概述:  Darknet 本身是 Joseph Redmon 为了 Yolo 系列开发的框架。
Joseph Redmon 提出了 Yolo v1,Yolo v2,Yolo v3。

Darknet
Darknet

特点:  Darknet 几乎没有依赖库,是从 C 和 CUDA 开始撰写的深度学习开源框架,支持 CPU 和 GPU。Darknet跟 caffe 颇有几分相似之处,却更加轻量级,非常值得学习使用。

上市的 Uber 背后有哪些强大的开源项目

当地时间 5 月 10 日上午,出行巨头 Uber 在纽交所挂牌上市,Uber 崛起背后的技术文化,也是众多专家们研究的对象之一,本文将和大家盘点下 Uber 都开源了哪些项目

1. deck.gl

GitHub地址项目 GitHub 地址 Star 6063

deck.gl
deck.gl

deck.gl ,是由 Uber 开源的基于 WebGL 的可视化图层。用于React 的 WebGL 遮罩套件,提供了一组高性能的数据可视化叠加层。为数据可视化用例提供测试、高性能的图层,如 2 维和 3 维的散点图、choropleths 等。

2.  react-vis

GitHub地址项目 GitHub 地址 Star 5590

react-vis
react-vis

react-vis 是 Uber 公司开源的数据可视化库,能够制作折线图、饼状图等常用图表。

3.  ludwig

GitHub地址项目 GitHub 地址 Star 4597

ludwig
ludwig

这是一款基于 Google TensorFlow 框架上的开源工具箱。藉由 Ludwig,用户无需再编写任何代码即可进行深度学习的开发。

4. Kraken

GitHub地址项目 GitHub 地址 Star 2519

P2P 的镜像仓库,这个项目着重于可扩展性和可用性,并且适用于再混合云架构中的镜像管理,复制和分布。Kraken 还支持后台扩展,可以以其他容器仓库为后台,单纯的作为发布层来部署。

5. RIBs

GitHub地址项目 GitHub 地址 Star 4586

Uber 的移动架构框架,构建具有类似架构的跨平台应用程序,使 iOS 和 Android 团队能够交叉审查业务逻辑代码

RIBs
RIBs

上图是一个 RIB 各组件之间相互协作的依赖关系。

6. cadence

GitHub地址项目 GitHub 地址 Star 1908

Cadence 是一种分布式,可扩展,持久且高度可用的编排引擎,可以以可伸缩和弹性的方式执行异步长期运行的业务逻辑。

7. luma.gl

GitHub地址项目 GitHub 地址 Star 1409

一个用于数据可视化的 JavaScript WebGL 框架

8. react-map-gl

GitHub地址项目 GitHub 地址 Star 4452

react-map-gl 提供一个围绕 Mapbox GL JS的React 友好 API 封装,是一个基于 webGL 的矢量瓦片地图库。

9. AresDB

GitHub地址项目 GitHub 地址 Star 1916

AresDB 是 Uber 开源的一个基于 GPU 运算的实时分析存储引擎和查询引擎。具备低查询延迟、高数据刷新率和高效内存和磁盘存储管理。AresDB 的查询引擎使用 C++ 编写,存储管理和其他查询组件使用 Go 编写。

10. AutoDispose

GitHub地址项目 GitHub 地址 Star 2193

AutoDispose 是 Uber 开发的自动绑定+处理 RxJava 2 流的 Java 库。可以用来解决 Android 生命周期组件导致的 RxJava 的内存泄漏情况。

11. Makisu

GitHub地址项目 GitHub 地址 Star 1604

  • Uber 开源的快速 Docker 镜像生成工具,其特点包括:
  • 不需要特殊权限,开发过程更加容易移植;
  • 开发集群内部使用分布式层间缓存提高性能;
  • 提供灵活层间管理,减少 images 中不必要文件;
  • 与容器 Docker 兼容;支持标准和多阶段开发命令。

12. NullAway

GitHub地址项目 GitHub 地址 Star 2509

NullAway 是 Uber 开源的一款帮助你清除 Java 代码中的 NullPointerException(NPE)的工具,快速且实用。NullAway 类似于 Kotlin 和 Swift 语言中的基于类型的可空性检查,能显着提高开发人员的生产力,同时也满足高要求的安全检查需求。

13. h3

GitHub地址项目 GitHub 地址 Star 1348

蜂窝多边形算法 H3,首先这个包是用 C 写的,要在 Python上用,就必须要 gcc 和 make 来进行编译。

14. pyflame

GitHub地址项目 GitHub 地址 Star 2285

pyflame 则是由 Uber 开源出来的针对 python 程序生成火焰图的工具。

15. tchannel

GitHub地址项目 GitHub 地址 Star 1058

TChannel 是用于 RPC 的网络复用和成帧协议。

深度学习最常见的 26 个模型 – 含实现代码

本文首先从 4 个方面(张量、生成模型、序列学习、深度强化学习)追踪深度学习几十年的发展史,然后再介绍主流的 26 个深度学习模型。

1. 深度学习发展史

主要按最早研究出现的时间,从 4 个方面来追踪深度学习的发展史。

1.1 张量

  • 1958 年 Frank 提出感知机,但后来被一些学者发现因算力的不足,制约了较大神经网络的计算,导致很长时间发展缓慢。
  • Fukushima 在 1979 年左右提出 Neocognitron,感觉这是卷积和池化的雏形。
  • Hinton 在 1986 年提出反向传播的思想和多层感知机(BPNN/MLP),有非常大的意义,对未来几十年(可以说直到现在)影响深远。
  • 接下来比较重要的发展是,LeCun 在 1998 年提出 LeNet-5,7 层的 CNN 做数字识别。
  • 然后 AlexNet 在 12 年在 ImageNet 夺冠,主要是 CNN+Dropout+Relu,又是 Hinton 极大的带动了 DL 的发展,大佬的地位毋庸置疑。另外相似的还有 15 年的 GoogLeNet。
  • 总算有华人大佬作出大贡献了,16 年何恺明(CV领域应该无人不知)提出 Resnet,还拿了 best paper,影响较大,当然效果也很好。另外相似的还有 17 年的 DenseNet。
  • 17年 Capsule Network 登场了,又是 Hinton。我比较看好胶囊网络在 NLP 领域的发展,虽然现在还没太明显的效果。因为用胶囊网络来做文本的特征表示的话,可以极大的丰富特征,更适合处理文本这种比较灵活的数据

1.2 生成模型

  • 上世纪 80 年代提出 RBM,06 年叠加成 Deep Belief Network(DBN),这算是重新叠加网络的一个比较重要的开始吧。
  • 上世纪 80 年代 Hinton 提出 Auto-Encode,过了较长时间 Bengio 在 08 年提出 Denoise Auto-Encode。Welling 在 13 年提出 Variational Auto-Encode。
  • 接下来,在 14 年 Goodfellow 和 Bengio 等提出 GAN,从此生成网络不仅是 AE 以及其变种(Denoise Auto-Encode、Variational Auto-Encode等)了,可以这么说:GAN 的出现极大的提高了生成模型的地位和热点,GAN 也是席卷 NLP、CV、AI 等领域的各大顶会,甚至是一些 best paper。另外,陆续出现很多很多 GAN 的变种,比如 DCGAN、CGAN、PGGAN、LAPGAN、InfoGAN、WGAN、F-GAN、SeqGAN、LeakGAN 等。

1.3 序列学习

  • 1982 年提出 hopfield network,1997 年 Schmidhuber 提出 LSTM。Hinton 组在 13 年把 RNN 用在语音识别上取得巨大突破,RNN 立马爆火。
  • 03 年提出 LM(语言模型),13 年提出 w2v,佩服 Bengio,这也是我为啥千里迢迢跑去找 Benign 合影的原因之一。w2v 带来的影响不言而喻,目前 NLP 领域基本上所有 Paper 都会用到词向量,包括也影响了后面出现的 Glove、FastText、ELMo( 18 年 2 月)、Transformer( 18 年 6 月)、Bert ( 18 年 10 月提出,Jacob 一战封神,我感觉至少是 18 年 NLP 领域最大的发展,甚至可以说是近几年最大的发展)等。Bert 的出现,很可能改变所有主流 NLP 任务的打法和 Baseline
  • 还有一个分支,14 年出现 Seq2Seq,这个重要性也无需赘述了,NLP 领域的都知道。然后 15 年出现Charater  CNN ,17 年出现 self-attention。

1.4 深度强化学习

  • 提到强化学习就不得不提这 Deep Mind 、AlphaGo 以及其变种、Silve r。13 年提出 Deep Q-learning 15 年提出 Double DQN,16 年提出 Dueling Net。 15 年的 DDPG 和 16 年的 A3C 都是 NN+Policy Gradient,也应用在不少领域。16 年的 AlphaGo(除了 AI 领域,很多不懂AI的人都知道,甚至可以说是 AI 爆火的最大助力),17 年出现更疯狂的 Alpha Zero。

2. 深度学习模型

深度学习模型
深度学习模型

2.1 Feed forward neural networks (FF or FFNN) and perceptrons (P)

前馈神经网络和感知机,信息从前(输入)往后(输出)流动,一般用反向传播(BP)来训练。算是一种监督学习。

前馈神经网络和感知机
前馈神经网络和感知机

对应的代码:

https://github.com/danijar/layered

https://github.com/civisanalytics/muffnn

2.2 Radial basis function (RBF)

径向基函数网络,是一种径向基函数作为激活函数的 FFNNs(前馈神经网络)。

径向基函数网络
径向基函数网络

对应的代码:

https://github.com/eugeniashurko/rbfnnpy

2.3 Hopfield network (HN)

Hopfield 网络,是一种每个神经元都跟其它神经元相连接的神经网络。

Hopfield 网络
Hopfield 网络

对应的代码:

https://github.com/yosukekatada/Hopfield_network

2.4 Markov chains (MC or discrete time Markov Chain, DTMC)

马尔可夫链 或离散时间马尔可夫链,算是 BMs 和 HNs 的雏形。

马尔可夫链
马尔可夫链

对应的代码:

Markov chains:https://github.com/jsvine/markovify

DTMC:https://github.com/AndrewWalker/dtmc

2.5 Boltzmann machines (BM)

玻尔兹曼机,和 Hopfield 网络很类似,但是:一些神经元作为输入神经元,剩余的是隐藏层。

玻尔兹曼机
玻尔兹曼机

对应的代码:

https://github.com/yell/boltzmann-machines

2.6 Restricted Boltzmann machines (RBM)

受限玻尔兹曼机,和玻尔兹曼机 以及  Hopfield 网络 都比较类似

受限玻尔兹曼机
受限玻尔兹曼机

对应的代码:

https://github.com/echen/restricted-boltzmann-machines

2.7 Autoencoders (AE)

自动编码,和 FFNN 有些类似,它更像是 FFNN 的另一种用法,而不是本质上完全不同的另一种架构。

自动编码
自动编码

对应的代码:

https://github.com/caglar/autoencoders/blob/master/ae.py

2.8 Sparse autoencoders (SAE)

稀疏自动编码,跟自动编码在某种程度比较相反

稀疏自动编码
稀疏自动编码

对应的代码:

https://github.com/caglar/autoencoders/blob/master/sa.py

2.9 Variational autoencoders (VAE)

变分自动编码,和 AE 架构相似,不同的是:输入样本的一个近似概率分布。这使得它跟 BM、RBM 更相近。

变分自动编码
变分自动编码

对应的代码:

https://github.com/mattjj/svae

2.10 Denoising autoencoders (DAE)

去噪自动编码,也是一种自编码机,它不仅需要训练数据,还需要带噪音的训练数据。

去噪自动编码
去噪自动编码

对应对应的代码:

https://github.com/caglar/autoencoders/blob/master/da.py

2.11 Deep belief networks (DBN)

深度信念网络,由多个受限玻尔兹曼机或变分自动编码堆砌而成。

深度信念网络
深度信念网络

对应的代码:

https://github.com/albertbup/deep-belief-network

2.12 Convolutional neural networks (CNN or deep convolutional neural networks, DCNN)

卷积神经网络,这个不解释也都知道。

卷积神经网络
卷积神经网络

对应的代码:

CNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_CNN.py

DCNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_DeepCNN.py

2.13 Deconvolutional networks (DN)

去卷积网络,又叫逆图形网络,是一种逆向的卷积神经网络。

去卷积网络
去卷积网络

对应的代码:

https://github.com/ifp-uiuc/anna

2.14 Deep convolutional inverse graphics networks (DCIGN)

深度卷积逆向图网络,实际上是 VAE,且分别用 CNN、DNN 来作编码和解码。

深度卷积逆向图网络
深度卷积逆向图网络

对应的代码:

https://github.com/yselivonchyk/TensorFlow_DCIGN

2.15 Generative adversarial networks (GAN)

生成对抗网络,Goodfellow 的封神之作,这个模型不用解释也都知道

生成对抗网络
生成对抗网络

对应的代码:

https://github.com/devnag/pytorch-generative-adversarial-networks

2.16 Recurrent neural networks (RNN)

循环神经网络,这个更不用解释,做语音、NLP 的没有人不知道,甚至非 AI 相关人员也知道。

循环神经网络
循环神经网络

对应的代码:

https://github.com/farizrahman4u/recurrentshop

2.17 Long / short term memory (LSTM)

长短期记忆网络, RNN 的变种,解决梯度消失/爆炸的问题,也不用解释,这几年刷爆各大顶会。

长短期记忆网络
长短期记忆网络

对应的代码:

https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_LSTM.py

2.18 Gated recurrent units (GRU)

门循环单元,类似 LSTM 的定位,算是 LSTM 的简化版。

门循环单元
门循环单元

对应的代码:

https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_GRU.py

2.19 Neural Turing machines (NTM)

神经图灵机,LSTM 的抽象,以窥探 LSTM 的内部细节。具有读取、写入、修改状态的能力

神经图灵机
神经图灵机

对应的代码:

https://github.com/MarkPKCollier/NeuralTuringMachine

2.20 Bidirectional recurrent neural networks, bidirectional long / short term memory networks and bidirectional gated recurrent units (BiRNN, BiLSTM and BiGRU respectively)

双向循环神经网络、双向长短期记忆网络和双向门控循环单元,把 RNN、双向的 LSTM、GRU 双向,不再只是从左到右,而是既有从左到右又有从右到左。

对应的代码:

BiRNN:https://github.com/cstghitpku/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/tree/master/models

BiLSTM:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiLSTM.py

BiGRU:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiGRU.py

2.21 Deep residual networks (DRN)

深度残差网络,是非常深的 FFNN,它可以把信息从某一层传至后面几层(通常2-5层)。

深度残差网络
深度残差网络

对应的代码:

https://github.com/KaimingHe/deep-residual-networks

2.22 Echo state networks (ESN)

回声状态网络,是另一种不同类型的(循环)网络。

回声状态网络
回声状态网络

对应的代码:

https://github.com/m-colombo/Tensorflow-EchoStateNetwork

2.23 Extreme learning machines (ELM)

极限学习机,本质上是随机连接的 FFNN。

极限学习机
极限学习机

对应的代码:

https://github.com/dclambert/Python-ELM

2.24 Liquid state machines (LSM)

液态机,跟 ESN 类似,区别是用阈值激活函数取代了 sigmoid 激活函数。

液态机
液态机

对应的代码:

https://github.com/kghose/Liquid

2.25 Support vector machines (SVM)

支持向量机,入门机器学习的人都知道,不解释。

支持向量机
支持向量机

对应的代码:

https://github.com/ajtulloch/svmpy

2.26 Kohonen networks (KN, also self organising (feature) map, SOM, SOFM)

Kohonen 网络,也称之为自组织(特征)映射。

Kohonen 网络
Kohonen 网络

对应的代码KN/SOM:

https://github.com/mljs/som

NLP最新科研福利!MSRA开源学术界最全面语义分析数据集

微软亚洲研究院(MSRA),刚刚送出最新一批 AI 资源和福利。

在“中国高校人工智能人才国际培养计划” 2019 国际人工智能专家论坛暨 2019 微软新一代人工智能开放科研教育平台合作论坛,MSRA 面向高校提供最新的人工智能技术、工具、科研成果,以及数据集。

新增业界最全面的语义分析数据集

在新一代人工智能开放科研教育平台的合作框架下,微软开放了自身人工智能领域的数据集供合作高校在科研和教育工作上进行引用,如微软机器阅读理解(MS MARCO)、微软研究院社交媒体对话语料库、18K 数学文字题测试集 SigmaDolphin 等。

高校也通过平台贡献了各自在多个领域的数据集,如中国科学技术大学类脑实验室的海量类脑数据等。

2019 年,微软亚洲研究院正式发布自然语言处理(NLP)领域全新的语义分析数据集 MSParS (Multi-perspective Semantic ParSing Dataset)。

作为智能音箱、搜索引擎、自动问答和对话系统等人工智能产品中的核心技术,语义分析(Semantic Parsing)面临着因人工标注代价高昂而导致的数据缺乏问题,目前已有的语义分析数据集在数据规模和问题类型覆盖度上非常有限。

为此,微软亚洲研究院提出并构建了 MSParS,该数据集(1.0版本)包含 81,826 个自然语言问题及其对应的结构化语义表示,覆盖 12 种不同的问题类型和 2,071 个知识图谱谓词,是学术界目前最全面的语义分析数据集。未来,微软将与各高校一起开放、共享更多数据,促进产教融合合作生态的建设。

MSParS 数据集:

https://github.com/msra-nlc/MSParS

 

阿里诠释国家『智能+』战略报告

2019 年两会政府工作报告,正式提出了 “智能+” 的重要战略:“深化大数据、人工智能等研发应用。打造工业互联网平台,拓展‘智能+’,为制造业转型升级赋能。”

如何把握从 “互联网+” 向 “智能+” 的演进?如何理解智能经济的经济学含义?如何感知 “智能+” 向社会经济各个领域、各大产业的扩散进程?如何想象智能时代的就业与生活?智能化又将给经济治理带来哪些机遇和挑战?

鉴于社会各界对 “智能+” 的广泛关注,2019 年 3 月 12 日,阿里巴巴研究团队发布了关于 “智能+” 的重磅报告:《从连接到赋能:“智能+” 助力中国经济高质量发展》。报告从四个方面展开:

  • 从 “互联网+” 到 “智能+”;
  • “智能+” 推动产业创新发展;
  • “智能+” 让生活更美好;
  • “智能+” 助力全球化与经济治理。

全文 PDF 下载。

AI 分布式框架 Ray

随着机器学习算法和技术的进步,出现了越来越多需要在多台机器并行计算的机器学习应用。然而,在集群计算设备上运行的机器学习算法目前仍是专门设计的。尽管对于特定的用例而言(如参数服务器或超参数搜索),这些解决方案的效果很好,同时 AI 领域之外也存在一些高质量的分布式系统(如 Hadoop 和 Spark),但前沿开发者们仍然常常需要从头构建自己的系统,这意味着需要耗费大量时间和精力。

UC Berkeley AI 研究院内的研究员,发布的分布式系统 Ray。开发者称,Ray 专门为人工智能应用设计,通过这款框架,运行于笔记本电脑上的原型算法仅需加入数行代码就可以转化为高效的分布式计算应用。近日,该框架已被开源。Ray 的目标之一在于:让开发者可以用一个运行在笔记本电脑上的原型算法,仅需添加数行代码就能轻松转为适合于计算机集群运行的(或单个多核心计算机的)高性能分布式应用。这样的框架需要包含手动优化系统的性能优势,同时又不需要用户关心那些调度、数据传输和硬件错误等问题。

与深度学习框架的关系:Ray 与 TensorFlow、PyTorch 和 MXNet 等深度学习框架互相兼容,在很多应用上,在 Ray 中使用一个或多个深度学习框架都是非常自然的(例如,UC Berkeley 的强化学习库就用到了很多 TensorFlow 与 PyTorch)。

与其他分布式系统的关系:目前的很多流行分布式系统都不是以构建 AI 应用为目标设计的,缺乏人工智能应用的相应支持与 API,UC Berkeley 的研究人员认为,目前的分布式系统缺乏以下一些特性:

  • 支持毫秒级的任务处理,每秒处理百万级的任务;
  • 嵌套并行(任务内并行化任务,例如超参数搜索内部的并行模拟,见下图);
  • 在运行时动态监测任意任务的依赖性(例如,忽略等待慢速的工作器);
  • 在共享可变的状态下运行任务(例如,神经网络权重或模拟器);
  • 支持异构计算(CPU、GPU 等等)。
开源的人工智能框架
开源的人工智能框架

一个嵌套并行的简单例子。一个应用运行两个并行实验(每个都是长时间运行任务),每个实验运行一定数量的并行模拟(每一个同时也是一个任务)。

Ray 有两种主要使用方法:通过低级 API 或高级库。高级库是构建在低级 API 之上的。目前它们包括 Ray RLlib,一个可扩展强化学习库;和 Ray.tune,一个高效分布式超参数搜索库。

PyTorch 更新,正式支持TensorBoard

与 2018 年 12 月正式发布的 Pytorch1.0 相比,这次发布的 1.1 版本提高了性能,并增加了新的模型理解和可视化工具,来提高可用性,还提供了新的 API。

其中,最重要的功能是支持 TensorBoard,它是谷歌为 TensorFlow 打造的可视化工具,能够帮助开发人员评估和调试模型。

根据 Facebook 介绍,在开发这一功能的时候,他们与谷歌有非常密切的合作。

其他的更新还有:

  • Jit 编译器:改进了Just-in-time (JIT) 编译。包括各种错误的修复以及 TorchScript 中扩展的功能,例如对字典、用户类和属性的支持。
  • 新 API:支持布尔张量,更好地支持自定义循环神经网络。
  • 分布式训练:改进了常见模型(如CNN)的性能,增加了对多设备模块的支持,包括在仍使用分布式数据并行(DDP)的情况下跨 GPU 分割模型的能力,以及对并非所有参数都用于每次迭代的模块的支持(如控制流,如自适应 SoftMax 等)。

关于本次更新,Pytorch在下面的GitHub文档中进行了详细的解释,请收好传送门:

https://github.com/pytorch/pytorch/releases/tag/v1.1.0

对于这次更新,PyTorch 的产品经理 Joe Spisa 表示,他们并不是要将 PyTorch 变成金钱,而是希望 PyTorch 拥有一个社区。

他表示,现在这个社区正开始从一个以研究为中心的社区向生产型的社区转变,而且转变速度也在快速增长。

PyTorch 路线图的下一步是,以更少的比特数运行神经网络,实现更快的 CPU 和 GPU 性能,并支持 AI 从业者创建命名张量维数。

现在,Pytorch 使用一个简单的 “from torch.utils.TensorBoard import SummaryWriter” 命令来支持TensorBoard。

旷视发布最大物体检测数据集

在 4 月 16 日的智源学者计划启动暨联合实验室发布会上,旷视科技发布了通用物体检测数据集Objects365,包含 63 万张图像,远超 ImageNet、COCO 等数据集。另外,还开办了针对此数据集的 CVPR Workshop 竞赛。数据集包括人、衣物、居室、浴室、厨房、办公、电器、交通、食物、水果、蔬菜、动物、运动、乐器 14 个大类,每一类都有数十个小类。

高盛人工智能报告中文版

人工智能是信息时代的尖端科技。计算的飞跃建立在人类告知计算机如何表现的基础上,计算建立在计算机学习如何表现能够对每个行业有意义的基础上。

与此同时,人工智能、机器人和自动驾驶己成为流行文化的前沿,甚至是政治表述。 但是,我们去年的研究让我们相信这不是一个失败的开端,而是一个拐点。 我们将在这个报告里看到,宏观(更多更快的计算和更多数据的爆炸式增长)和更加微观方面(在深度学习方面的有益进展, 智能硬件和开源方面的增长)的拐点的原因。

高盛《人工智能报告中文版》下载

Google发布端到端AI平台

Google 端到端 AI 平台是一个为开发人员和数据科学家提供的端到端的服务,可用于模型的构建、测试和部署。AI 平台上汇集了谷歌云上现有和今天新推的工具,开发者可以构建完整的数据 pipeline 来提取、标记数据,并且用现存的分类、物体识别和实体提取模型、AutoML 工具或云机器学习(Cloud Machine Learning )引擎来训练和部署自定义模型。在这个 AI 平台上,训练和部署一站式配齐,能帮助开发者能在每个开发阶段安全转移模型,并且操作方便,点击一下就可以部署了。

Machine learning development: the end-to-end cycle
Machine learning development: the end-to-end cycle

《工业大数据白皮书》2019版

近日,由中国电子技术标准化研究院、全国信息技术标准化技术委员会大数据标准工作组主编,工业大数据产业应用联盟联合主编,联想集团等多家联盟成员企业参编的《工业大数据白皮书(2019版)》发布。

工业大数据白皮书(2019版)》基于工业大数据技术、产业发展现状,重点围绕『工业数据管理』这一热点议题,提炼了当前工业领域数据管理的重要方法,完善了工业大数据标准体系,为推动工业大数据落地应用和战略部署提供标准化支撑。

人工智能的现状与未来(无水印版 PPT)

人工智能引领新的工业革命,需要正确理解其技术核心、学科定位、架构演进,当前深度学习和知识图谱成其左膀右臂,象征人类智谋的智能博弈在围棋后的下一个高地在哪里?走向人机融合的未来,人工智能将向什么方向演进发展,人类社会将面临哪些变革,需要我们从不同维度不断去研究思考。下载链接

埃森哲:大数据分析方法论

当前,越来越多的应用涉及到大数据,而这些大数据的属性,包括数量、速度、多样性等等都呈现出不断增长的复杂性,因此,大数据分析方法在这一领域也就显得尤为重要,可以说是决定最终信息是否有价值的决定性因素。全球最大的管理咨询公司「埃森哲」的此前发布了一份 PPT,讲述大数据分析方法,看看他们具体是如何进行的。

由于此报告发布已经有一段时间,里面所提及的各种数据分析工具未必是最好的选择。诸如:SAS / SPSS / MATLAB 均为严谨高效的数据统计商业应用型工具,好比数据库中的 ORACLE,然而, R 与 Python 显然更匹配基础科学人才培养目标。同时,数据科学与大数据在各细分领域并发性爆发,充分展现了开源生态圈协同开发模式的强大优势与趋势。同时标志着『半成品化』应用工具时代的到来。最后,R 与 Python 逐步成为贯穿数据科学与大数据,机器学习,深度学习,新一代人工智能,乃至区块链技术一脉相承的语言工具,纯数据以外,更多的对象被纳入统计范围内。

尽管如此,从全面解读数据分析方法论的角度而言,此份报告仍然不失为一份有价值的参考材料。

《埃森哲:大数据分析方法论》。下载

局部渐进稀疏技术自动驾驶新数据集

NuScenes 最新研究发布了一个大型自动驾驶数据集,该数据集是首个包括 5 个雷达,1 个激光雷达,6 个摄像头,IMU 和 GPS 在内的完整传感器套件的数据集。 NuTonomy场景(NuScenes)比 KITTI 数据集多出 7 倍和 100 倍的图像,涵盖 23 个类别,包括不同类型的车辆,行人,移动设备及其他对象。

研究人员还发明了一种新的 3D 方法来整合各种物体检测的类别和任务,包括对物体大小,分类,方向,本地化,速度和属性的检测和估计。针对激光雷达和图像检测方法的数据集分析和基线测试证明,尽管仅基于激光雷达和仅基于图像的物体检测都能达到物体识别的要求,但仅激光雷达的网络性能更为优越。

NuScenes 能够加速自动驾驶方面的研究和技术,从而推进物体识别技术,并使相关技术更加实用化。我们希望研究人员鼓励对于 NuScenes 的进一步探索,以使其能够运用所有传感器数据并利用语义地图来获得更好的性能。因为每个传感器模态都提供用于训练 3D 对象检测的补充特征。

清华 + 美图开源大规模视频分析数据集

互联网上有大量的教学视频,可以帮助我们完成各种各样的挑战,然而,大多数现有的教学视频分析数据集在多样性和规模上都存在局限性,而实际应用程序更加多样化,这使得这些数据集显得匮乏,此外,组织利用这些数据集仍然存在巨大挑战。

为了解决以上问题,清华大学和美图开源了教程类行为视频数据集 COINCOmprehensive INstructional video analysis)。COIN 数据集采用分层结构组织,包含 11,827 个视频,包含与我们日常生活相关的 12 个领域(如车辆、小玩意等) 180 个任务的视频内容。这些视频均来自 YouTube。视频的平均长度为 2.36 分钟。每个视频都标有 3.91 个片段,每个片段平均持续 14.91 秒。总的来说,数据集包含 476 小时的视频,带有 46,354 个带注释的段。

COmprehensive INstructional video analysis
COmprehensive INstructional video analysis

为了构建具有高度多样性的大型基准,我们提出了一种组织数据集的层次结构,分别为领域层、任务层、步骤层。

  • 领域层:对于第一级 COIN,共分为 12 个领域:护理和护工,车辆,休闲,小机械,电器,家居用品,科学与工艺、植物与水果、零食与饮料、运动与家务。
  • 任务层:链接到领域层,精细到具体的目的。比如“更换灯泡”与“安装吊扇”的二级分类都归属“电器”领域下。
  • 步骤层:第三级是完成不同任务的一系列不同步骤,例如,“拆卸灯罩”、“取出旧灯泡”、“安装新灯泡”、“安装灯罩”等步骤与“更换灯泡”任务相关联。

GitHub地址项目 GitHub 地址