2020 年人工智能开源生态圈

深度学习为核心的新一代人工智能技术发展到今天,已逐步形成一个庞大的生态结构,覆盖了:经典机器学习深度学习强化学习自然语言处理语音识别计算机视觉、分布式训练、自动建模、IDEs 系统、平台、评分推理系统等完整的细分领域 —— 正确合理的选择与开发内容相匹配的工具,常常会使科学研究工作事半功倍,同时,选择正确高效的工具也是技术应用类专业建设的重要环节。

跨象乘云™ 持续致力为高等院校打造深度学习与新一代人工智能科研教学一体化实验平台,在进一步将深度学习系统与容器化基础设施架构紧密集成的同时,对新一代人工智能开源生态系统提供全方位的支撑,加速高校科研效率及科研成果落地。详细项目列表如下 ——

1. 机器学习

  • SciKit-learn —— 强大的基于 Python 语言的机器学习算法库
  • XGBoost —— 在 Gradient Boosting 框架下实现了 C++机器学习算法
  • Accord.NET —— 完全用 C#编写的音频和图像处理库

2. 深度学习

  • TensorFlow —— 用于机器学习的端到端开源平台
  • PyTorch —— 主流的深度学习工具,开源的机器学习框架
  • MXNET —— 功能齐全,可编程和可扩展的深入学习框架
  • Sonnet —— 由 DeepMind 发布的,在 TensorFlow 上用于构建复杂神经网络的开源库
  • DL4J —— 采用 Java 和 JVM 编写的开源深度学习库

3. 强化学习

  • Gym —— 用于开发和比较强化学习算法的工具
  • Dopamine —— 基于 Tensorflow 的框架,为新入门强化学习研究人员提供的新工具
  • ReAgent —— Facebook 推出的一个构建决策推理系统的模块化端到端平台
  • Tensorlayer —— 面向科学家的深度学习和强化学习库

4. 自然语言处理

  • BERT —— 基于双向 Transformer 的大规模预训练语言模型,NLP 领域中里程碑
  • Transformers —— 神经机器翻译中使用的神经网络,近期 PyTorch-Transformers 非常火爆
  • AllenNLP —— 基于 PyTorch 的 NLP 研究库,利用深度学习来进行自然语言理解
  • flair —— 简单易用的 Python NLP 库,允许将当前最优自然语言处理(NLP)模型应用于文本
  • spaCy —— 工业级强度级的 Python 自然语言处理工具包
  • fastText —— Facebook 人工智能研究实验室(FAIR)开源的一个文本处理库

5. 语音识别

  • Kaldi —— 目前使用广泛的开发语音识别应用的框架
  • DeepSpeech —— 开源语音转文本引擎
  • wav2letter —— Facebook AI 研究院开源的,简单高效的端到端自动语音识别(ASR)系统

6. 计算机视觉

  • YOLO —— 当前深度学习领域解决图像检测问题最先进的实时系统
  • OpenCV —— Intel 开源的跨平台计算机视觉库,被称为 CV 领域开发者与研究者的必备工具包
  • Detectron2 —— 在单个或多个 GPU 服务器上提供更快速的训练速度
  • OpenPose —— 以 Caffe 为框架开发的人体姿态识别项目
  • facenet —— 通用人脸识别系统

7. 分布式训练

  • Spark MLlib —— 开源集群运算框架,大数据领域热门开源软件
  • Mahout —— 分布式线性代数框架,用于快速创建可扩展的高性能机器学习应用程序
  • Horovod —— Uber 开源的一个跨多台机器的分布式深度学习的 TensorFlow 训练框架
  • Dask —— 当开发者需要并行化到多核时,将计算扩展到多个内核甚至多个机器
  • Ray —— 高性能分布式执行框架,热门程度仅次于 Spark

8. 自动建模

  • TPOT —— Python 编写的软件包,利用遗传算法进行特征选择和算法模型选择
  • AutoKeras —— 基于高效神经架构搜索的开源项目,媲美 Google 的 AutoML
  • Featuretools —— 用于自动化特性工程的开源 Python 框架
  • NNI —— 微软发布的一个用于神经网络超参数调整的开源 AutoML 工具包
  • AdaNet —— Google 开源的一个轻量级的基于 TensorFlow 框架的神经网络搜索

9. IDEs

  • Jupyter —— 涵盖了跨数十种编程语言的交互式计算
  • Spyder —— 用于科学计算的使用 Python 编程语言的集成开发环境
  • Zeppelin —— 基于 Web 的交互式数据分析平台

10. 平台

  • H2O —— 开源的分布式内存机器学习平台,支持最广泛使用的统计和机器学习算法
  • MLflow —— 机器学习生命周期的开源平台
  • Kubeflow —— Kubernetes 上的机器学习分布式训练任务支持

11. 评分推理系统

  • ONNX —— 针对机器学习所设计的开放式的文件格式,用于存储训练好的模型
  • Seldon —— 让机器学习模型可以部署于 Kubernetes 上

《智能数据挖掘》课程

在数据科学技术迅猛发展的今天,各行业都意识到大数据人才,算法工程师的重要性。同时,许多目前大部分机器学习,人工智能平台均需要一定的编程基础。造成许多非计算机专业的经管类,统计及数理类学生,无法施展其在算法上的竞争力,书本上学到的数据科学知识也无法在实验环境中验证。本课程配套可视编程机器学习平台,通过直观的交互式可视化编程界面,让没有编程能力的学生,同样能完成非结构化数据处理,数据挖掘,机器学习,模型分析,算法优化等操作。同时为高等院校深化数据科学与大数据技术理论教学,并培养实际动手能力的应用型人才,提供强力的支撑。

课程概要:了解并强化数据挖掘的基本概念,学习如何使用数据进行分析,实现预测分析功能。数据挖掘是图形化扩展工具,用于直接对数据进行业务分析。建立多种数据挖掘模型,通过将成熟的模型应用到新数据中,实现业务预测与分析洞察。课程通过描述基本的数据挖掘概念,使学生能准确描述预测分析的优势。理解数据挖掘的主要任务,描述数据挖掘业务流内的关键步骤。使用数据挖掘建立,改进,应用多种数据模型。通过项目实际训练,实现对各种业务需求类型的分析与洞察,包括:预测个体行为,价值预测,关联时间搜索。

可视编程机器学习平台 -《智能数据挖掘》课程支撑平台
可视编程机器学习平台 -《智能数据挖掘》课程支撑平台

CNN 101:卷积神经网络的交互式视觉学习

为了应对深度学习模型中的复杂性挑战,日前,佐治亚理工学院研究人员开发了 CNN 101,这是另一个交互式的可视化卷积神经网络系统,可以帮助深度学习、人工智能实验室的科研人员以及学生更好地了解和学习卷积神经网络,它是基础的深度学习模型体系结构。

交互式可视化卷积神经网络系统
CNN 101 :交互式可视化卷积神经网络系统

使用现代 Web 技术构建的 CNN 101 无需专用硬件即可在用户的 Web 浏览器中本地运行。通过紧密集成的交互式视图,CNN 101 通过解释单神经元级别以及层级别的卷积,激活和池化操作,提供了模型工作方式的概述和详细说明。CNN 101 进一步扩大了公众对深度学习技术的教育途径。它应用了交互式可视化技术,为用户提供了一种更简单的方法来学习深度学习机制并建立神经网络直觉。并且,对于现有的通过交互式可视化来解释复杂机器学习算法的研究工作,CNN 101 可以与他们结合在一起。

同时,作者为 CNN 101 录制了演示视频,为了方便观看,跨象乘云™ 提供了源视频下载 ——

《机器学习实用指南》第二版发布

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow》(《机器学习实用指南》),这本书最大的特色从理论上讲就是言简意赅,全书基本上没有太多复杂的数学公式推导。这一点正是国内很多高校教材所欠缺的。这本超赞的机器学习实用指南终于正式出版了第二版:《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Edition》,并且在美国亚马逊上开售(包括 Kindle 版本)。

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Edition
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Edition

本教材作者是 Aurélien Géron,法国人,毕业于AgroParisTech,曾任 Google Youtube 视频分类项目组负责人,创建过多家公司并担任 CTO,也曾在 AgroParisTech 担任讲师。现在是一名机器学习的顾问。第二版相比第一版增加了许多新的内容,最直白的就是第一版使用了 Scikit-LearnTensorFlow,而第二版增加了 Keras 深度学习框架。从内容上来说,第二版增加了更多的机器学习前沿知识,包括:无监督学习,训练深度网络,计算机视觉自然语言处理等等。作者将本书所有章节的详细代码都开源了并发布在 GitHub 上,目前已经收获了 5.5k star。

GitHub地址项目 GitHub 地址

The Car Connection 汽车数据集

关于汽车的项目很多,比如拍照识车、汽车比价等等,尽管这些项目本身难度不大,但是往往受制于数据集的质量,模型的效果不能很好的发挥。Nicolas Gervais 近日发布了一个关于汽车的数据集,数据相当全质量也相当高,为面向汽车工程类的大数据分析机器学习自动驾驶等方向的科研实验室项目,提供有效的支撑帮助。数据集的来源是 The Car Connection 网站,该网站是全球最大的汽车评测网站之一,致力于让汽车研究更加容易。

The Car Connection
The Car Connection

数据集包括 297,000 张图片,但是其中许多是汽车的内部图像,关于汽车的外观大概有 60,000 张照片。所有的文件都对汽车的 15 个参数进行了标注:’Make’, ‘Model’, ‘Year’, ‘MSRP’, ‘Front Wheel Size (in)’, ‘SAE Net Horsepower @ RPM’, ‘Displacement’, ‘Engine Type’, ‘Width, Max w/o mirrors (in)’, ‘Height, Overall (in)’, ‘Length, Overall (in)’, ‘Gas Mileage’, ‘Drivetrain’, ‘Passenger Capacity’, ‘Passenger Doors’, ‘Body Style’

GitHub地址项目 GitHub 地址

Kaggle 官网课程:从 Python 到机器学习

Kaggle 官网发布了一套完整的 Python 免费微课 ——课程特色:快速上手,在线练习,社区讨论。一共 12 门课,包括一节测试课。课程的设置是以实用为导向,按照数据项目所需要的核心技能来分小节,保证学完就能用,让学时间习性价比最大化。Python,机器学习入门,中极机器学习,数据可视化,Pandas,特征学习,深度学习,SQL 入门,SQL 进阶,地理空间分析,机器学习可解释性。

Kaggle Learn - Faster Data Science Education
Kaggle Learn – Faster Data Science Education

吴恩达新课上线:TensorFlow 移动和 Web 端机器学习

大家都很熟悉吴恩达了。他开设的 Coursera 机器学习课程可以说是很多初学者的「白月光」。近日,他创始的 deeplearning.ai 在 Coursera 上另外开设了一门课程 ——《TensorFlow: Data and Deployment Specialization》,主要介绍使用 Tensorflow.js、TensorFlow Lite、TensorFlow Hub 等工具进行数据分析的方法。该专项课程已于今日开放注册。吴恩达对课程进行了转推。

TensorFlow 是深度学习中最著名的框架之一,绝大多数人都已经掌握了基本的使用方法。如果要更上一层楼,选择本课程无疑是一个好方法。据介绍,这门课程可以帮助学习者了解很多应用场景,并发现训练模型中的高效方法。

该专项课程总共分为四个部分,主旨在于帮助学习者了解如何让机器学习模型从实验阶段走向实际应用。首先,你可以了解到在浏览器和移动设备中训练模型。同时,你可以学习如何仅用几行代码使用内置数据集、完成数据分割和处理各种非结构化数据的工作。最后,你还能了解很多应用场景,并了解 TensorFlow Serving、TensorFlow Hub、TensorBoard 等。

2019 年机器学习/ 深度学习热门论文(含代码)

1. 《Contrastive Representation Distillation》

本文在模型蒸馏领域中利用了一系列对比目标来捕获相关性和高阶输出依存关系。在本文中对它们进行了修改,以将知识从一个神经网络提取到另一个。

Contrastive Representation Distillation
Contrastive Representation Distillation

本文考虑了三个蒸馏阶段:

  • 模型压缩
  • 将知识从一种方式(例如:RGB)转移到另一种方式(例如:深度)
  • 将一组网络精简为一个网络

对比学习的主要思想是学习在某个度量空间中对于正例对的表示尽可能接近,同时对于负例对的表示尽可能远。

GitHub地址项目 GitHub 地址

2. 《Network Pruning via Transformable Architecture Search》

这是网络修剪领域的论文。它建议直接将神经体系结构搜索应用于具有灵活通道和层大小的网络。使修剪过的网络的损失最小化有助于学习信道数量。

Nueral Architecture Search (NAS)
Nueral Architecture Search (NAS)

修剪后的网络的特征图由 K 个特征图片段组成,这些片段基于概率分布进行采样。损失反向传播到网络权重和参数化分布。

本文提出的修剪方法分为三个阶段:

  • 使用标准分类训练程序训练未修剪的大型网络。
  • 通过可转换体系结构搜索(TAS)搜索小型网络的深度和宽度。TAS 旨在寻求最佳的网络规模。
  • 使用简单知识提炼(KD)方法将信息从未修剪的网络传输到搜索的小型网络。

GitHub地址项目 GitHub 地址

3. 《Learning Data Augmentation Strategies for Object Detection》

尽管这本身不是模型体系结构,但本文提出了可用于对象检测数据集的转换的创建方法,这些转换可以转移到其他对象检测数据集。转换通常在训练时应用。以下是使用学习到的策略进行训练的代码:

在此模型中,扩充策略定义为在训练过程中随机选择的一组 n 个策略。在此模型中已应用的一些操作包括:扭曲颜色通道,几何扭曲图像以及仅扭曲在边界框注释中找到的像素内容。

GitHub地址项目 GitHub 地址

4. 《XLNet: Generalized Autoregressive Pretraining for Language Understanding》

XLNet 是 Transformer 领域的一篇令人振奋的论文。XLNet 是一种通用的自回归预训练方法,通过最大化在所有因式分解阶数排列上的预期似然性,可以学习双向上下文。它不使用固定的正向或反向分解顺序。取而代之的是,它针对分解阶数的所有可能排列最大化序列的预期对数似然性。这些排列的结果是,每个位置的上下文都可以由左右两个标记组成。由于每个位置都学会了利用所有位置的上下文信息,因此捕获了双向上下文。

GitHub地址项目 GitHub 地址

5. 《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (ACL 2019)》

Transformer-XL(意味着超长)可用于学习超出固定长度的依赖性,而不会破坏时间相干性。它引入了段级递归机制和位置编码方案。TransformerXL 学习的依赖关系比 RNN 长 80%,比朴素 Transformers 长 450%。TensorFlowPyTorch 均可用。

作者将递归引入其深层的自注意力网络。他们重用了先前分段中获得的隐藏状态,而不是从头开始为每个新段计算隐藏状态。重用的隐藏状态充当循环段的内存。

这在段之间建立了循环连接。建模长期依赖关系成为可能,因为信息是通过循环连接传递的。作者还介绍了一种更有效的相对位置编码方式,该方式可以将注意力集中到比训练过程中观察到的注意长度更长的位置。

GitHub地址项目 GitHub 地址

6. 《Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos (AAAI 2019)》

本文涉及场景深度和机器人自我运动的无监督学习任务,其中监督由单目视频提供。这是通过将几何结构引入学习过程来完成的。它涉及对场景和单个对象,相机的自我运动以及从单眼视频输入中获悉的对象运动进行建模。作者还介绍了一种在线优化方法。

Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos
Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos

作者介绍了一种对象运动模型,该模型与自我运动网络共享相同的体系结构。但是,它专门用于预测 3D 中单个对象的运动。

它以 RGB 图像序列作为输入。预先计算的实例分段掩码对此进行了补充。运动模型的工作是学习预测 3D 空间中每个对象的变换矢量。这将在各个目标框中创建观察到的对象外观。

GitHub地址项目 GitHub 地址

7. 《Auto-Keras: An Efficient Neural Architecture Search System》

本文提出了一个框架,使贝叶斯优化能够为有效的 NAS 引导网络形态。基于他们的方法,作者构建了一个称为 Auto-Keras 的开源 AutoML 系统。

该方法的主要组成部分是在贝叶斯优化(BO)算法的指导下,通过变形神经网络结构来探索搜索空间。由于 NAS 空间不是欧几里德空间,因此作者通过设计神经网络核函数来解决这一难题。核函数是用于将一种神经体系结构变形为另一种神经体系结构的编辑距离。

GitHub地址项目 GitHub 地址

8. 《Depth-Aware Video Frame Interpolation (CVPR 2019)》

本文提出了一种视频帧插值方法,该方法通过探索深度信息来检测遮挡。作者开发了一个深度感知流投影层,该层可以合成对较近的对象进行采样的即时流,而不是对较远的对象进行采样。

DAIN (Depth-Aware Video Frame Interpolation)
DAIN (Depth-Aware Video Frame Interpolation)

层次特征的学习是通过从相邻像素收集上下文信息来完成的。然后通过基于光流和局部插值核对输入帧,深度图和上下文特征进行综合来生成输出帧。

作者提出了一种深度感知视频帧内插(DAIN)模型,该模型可有效利用光流,局部插值核,深度图和上下文特征来生成高质量的视频帧。

GitHub地址项目 GitHub 地址

9. 《OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》

OpenPose 是用于多人 2D 姿势估计的开源实时系统,包括身体,脚,手和面部关键点。本文提出了一种用于检测图像和视频中的 2D 人体姿势的实时方法。

OpenPose represents the first real-time multi-person system to jointly detect human body, hand, facial, and foot keypoints (in total 135 keypoints) on single images.
OpenPose represents the first real-time multi-person system to jointly detect human body, hand, facial, and foot keypoints (in total 135 keypoints) on single images.

本文提出的方法使用了一种称为Part Affinity Fields(PAF)的非参数表示。本文的一些作者来自 IEEE。此方法将图像作为 CNN 的输入,并预测用于检测身体部位的置信度图和用于部位关联的 PAF。本文还开源了带有 15K 人脚实例的带注释脚数据集

GitHub地址项目 GitHub 地址

10. 《FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation》

本文提出了一种称为联合金字塔上采样(JPU)的联合上采样模块,以取代消耗大量时间和内存的膨胀卷积。它通过将提取高分辨率图的过程公式化为联合上采样问题而起作用。

联合金字塔上采样(JPU)
联合金字塔上采样(JPU)

该方法以全连接网络(FCN)为骨干,同时应用 JPU 对低分辨率的最终特征图进行上采样,从而得到高分辨率的特征图。用 JPU 取代膨胀的卷积不会导致性能损失。

GitHub地址项目 GitHub 地址

Scikit-Learn 中文实践教程

Scikit-learn 是基于 Python 的开源机器学习库,它基于 NumPy 和 SciPy 等科学计算库,并支持支持向量机、随即森林、梯度提升树、K 均值聚类等学习算法。Scikit-learn 目前主要由社区成员自发进行维护,且专注于构建机器学习领域内经广泛验证的成熟算法。—— 这里是一份高质量的中文翻译实践教程

Scikit-Learn 中文实践教程
Scikit-Learn 中文实践教程

Scikit-learn 项目最早为数据科学家 David Cournapeau 于 2007 年发起的 scikits.learn 项目,且 Scikit 的名字可视为 SciPy Toolkit,即 SciPy 的第三方扩展。Scikit-learn 大部分都是由 Python 构建,但还是有很多核心算法是由 Cython 完成而实现更好的效果,例如支持向量机就是由 Cython 构建。

在监督学习部分,Scikit-learn 提供了广义线性模型、支持向量机、最近邻算法、高斯过程、朴素贝叶斯、决策树和集成方法等算法教程,同时还介绍了特征选择、随即梯度下降算法、线性与二次判别分析等在监督学习中非常重要的概念。

除了监督学习,半监督学习中的标签传播算法和无监督学习中的聚类与降维算法都有非常多的教程。此外,在模型选择中,文档教程描述了交叉验证的使用、估计器超参数的调整、模型评估方法和模型持久化概念等。

另外,跨象乘云™ 此前还发布了:《Python 知识卡片:Scikit-Learn》,《scikit-learn算法工程导图》等关于 scikits.learn 学习资源。

GitHub地址项目 GitHub 地址

神经网络结构可视化工具

对于我们算法分析人员来说,机器学习和神经网络早已不是什么新鲜内容,搭建、训练出来一个好的模型用于线上生产是必不可少的基础功能,对于业务人员或者是对于模型细节并不是很清楚或者是关注的人来说,这个就显得很抽象了,这个时候必要的可视化工作就显得很重要了,当前比较成熟的可视化工具大致包括:matplotlib、seaborn、Chaco 、pychart 、VPython 、yellowbrick等,这些是比较主流使用比较多的模块,但是对于模型结构的可是话来说显得就比较鸡肋了,这里迫切需要一些专业领域内的工具来帮助我们完成这些工作。

CNN
CNN
CNN
CNN

上面的这些图片都是可以一键生成的,顿时觉得功能很强大的。

GitHub地址项目 GitHub 地址