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 地址

机器学习模型合并工具库:Combo

机器学习中的模型合并(model combination)可以通过合并多个模型达到提升性能与稳定性的目的。模型合并往往被认为是集成学习(ensemble learning)的一个子领域,但其实也可以被单独拿出来讨论,作为一项实用的性能提升的手段。在绝大部分的机器学习/数据挖掘竞赛中(比如 Kaggle),最终获胜的方案都是多个模型的合成体。除此之外,模型合并也常被用于减少数据和模型中的随机性,提高模型的稳定性,详情可以参考:「大部分机器学习算法具有随机性,只需多次实验求平均值即可吗?」

为了方便大家对机器学习模型进行合并,我最近开发了一个新的 Python 工具库「combo」,起这个名字是因为 combo 代表“点套餐” ,与我们的目的不谋而合 🙂 combo 有以下特点:

  • 包括多种合并方法,从最简单的平均到在 Kaggle 中常见的 Stacking,再到更复杂的 Dynamic Classifier Selection(动态分类器选择)。
  • 支持多种不同的场景,包括分类器合并,原始结果(raw score)合并,聚类合并(对聚类结果进行合并),异常检测器(outlier detector)合并。未来或许会支持更多不同的场景。
  • 简单易用且一致的API,只需要几行代码就可以完成模型融合,方便评估大量算法。
  • 全面的文档,详细的示例。每个模型都搭配相对应的支持文件,方便学习与使用。
  • 使用 JIT 和并行化(parallelization)进行优化,加速算法运行及扩展性(scalability),可以处理大量数据。
  • 支持 Python 3.5+及主流操作系统:WIN,macOS 和 Linux,使用 CI 工具保证代码稳定性。
combo: A Python Toolbox for Machine Learning Model Combination
combo: A Python Toolbox for Machine Learning Model Combination

GitHub地址项目 GitHub 地址

吴恩达《Machine Learning》课程笔记

吴恩达在 Coursera 上开设的《Machine Learning》课程。这门课最大的特点就是基本没有复杂的数学理论和公式推导,非常适合入门!本课程将广泛介绍机器学习、数据挖掘和统计模式识别。相关主题包括:

  1. 监督式学习(参数和非参数算法、支持向量机、核函数和神经网络)。
  2. 无监督学习(集群、降维、推荐系统和深度学习)。
  3. 机器学习实例(偏见/方差理论;机器学习和 AI 领域的创新)。

课程将引用很多案例和应用,您还需要学习如何在不同领域应用学习算法,例如智能机器人(感知和控制)、文本理解(网络搜索和垃圾邮件过滤)、计算机视觉、医学信息学、音频、数据库挖掘等领域。

这门课基本涵盖了机器学习的主要知识点,例如:线性回归、逻辑回归、支持向量机、神经网络、K-Means、异常检测等等。而且课程中没有复杂的公式推导和理论分析。Ng 的目的是让机器学习初学者能够快速对整个机器学习知识点有比较整体的认识,便于快速入门。

这门课的笔记网上有很多,但今天推荐一份不错的全面的笔记。该笔记的特点是所有内容都是基于 Jupyter Notebook 写的,集图片、公式、代码、练习题于一体,非常方便实用!另外,这门课配套相应的练习题。Github 上已经有人把作业整理成为 Python 的形式了。有 .py 和 .ipynb 两种格式。

https://github.com/nsoojin/coursera-ml-py

https://github.com/kaleko/CourseraML 

GitHub地址项目 GitHub 地址