一门面向所有人的人工智能公开课:MIT 6.S191,深度学习入门

选自Medium

机器之心编译

参与:黄小天、李泽南

对初学者来说,有没有易于上手,使用流行神经网络框架进行教学的深度学习课程?近日,麻省理工学院(MIT)正式开源了在线介绍性课程「MIT 6.S191:深度学习入门」。该课程包括一系列有关神经网络及其在序列建模、计算机视觉、生成模型和强化学习等方面的基本应用知识。

  • 课程链接:http://introtodeeplearning.com/
  • 课程视频:https://www.youtube.com/watch?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI&v=JN6H4rQvwgY
  • 课程 GitHub:https://github.com/aamini/introtodeeplearning_labs

MIT 6.S191: MIT 关于深度学习算法及其应用的官方入门课程

MIT 6.S191 不仅仅是一门深度学习课程系列。在设计它时,我们希望做的更多。我们想要听众具备必须的实践技能,部署自己的深度学习模型,并将其应用到课程之外倍感兴奋、深受启发的问题上。

因此,在这门课程的教学中,我们选用了 TensorFlow。我们设计了两个基于 TensorFlow 的软件 lab 作为演讲课程的补充,一个是通过循环神经网络聚焦于音乐生成,另一个则专注于医疗图像的气胸检测。

MIT 6.S191 的课程设计原则是尽可能地易于上手,不仅针对于不同背景不同水平的人,也针对于 MIT 社区内外的人。

相应地,首个 lab 介绍 TensorFlow 基础——构建和执行计算图、sessions 以及在深度学习中常用的一般操作,同样也会重点介绍 TensorFlow 最新的重大更新:Eager mode。

这些背景知识有助于学生在 TensorFlow 中构建音乐生成和气胸检测模型。

通过 RNN 生成音乐

循环神经网络(RNN)多是应用于序列建模和预测任务,诸如从股票趋势到自然语言处理,再到医疗信号识别(比如心电图),范围异常广泛。你可以查看课程中的深度序列建模一节以了解 RNN 及其应用的相关背景知识。

RNN 同样适用于音乐生成,可以捕捉时序数据中的依赖关系。在第一个 lab 中,学生致力于编码音乐文件数据集,界定 TensorFlow 中的 RNN 模型,并从中采样以生成全新的音乐。

音乐生成 RNN 模型

该数据集是一个流行音乐片段的集合,被编码成向量格式以馈送给 RNN 模型。一旦数据被处理,下一步则是使用该数据集定义和训练 RNN 模型。

该模型基于单个 LSTM 模块,其中状态向量追踪两个连续节点之间的时间依赖关系。在每一时间步,先前节点的序列被馈送进模块,LSTM 最后单元的最后输出馈送给全连接层。因此在先前所有时间步的节点给定的情况下,我们可以输出下一节点在时间步 t 上的概率分布。下图是这一过程的可视化。

预测序列中下一音乐节点的可能性

我们为学生提供构建 RNN 模型并定义合适的计算图的指导。再次,我们已经设计这些 lab,供有兴趣的人使用,不管其有无 TensorFlow 经验。

该 lab 首先致力于设置相关超参数,定义占位符变量,初始化 RNN 模型的权重。学生接着定义其自己的 RNN(input_vec, weights, biases),它接受相应的输入变量并定义一个计算图。

Lab 允许学生试验不同的损失函数,优化方案,甚至是准确度指标:

loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(    logits, labels))optimizer = tf.train.AdamOptimizer(learning_rate)true_note = tf.argmax(output_vec,1)  # identify the correct notepred_note = tf.argmax(prediction, 1) # identify the predicted notecorrect_pred = tf.equal(pred_note, true_note) # compare!

生成新音乐

乐趣并不止于构建和训练 RNN!毕竟,该 lab 是关于音乐生成——剩下的是使用 RNN 实际地创建新音乐。

该 Lab 指导学生把一个种子馈送给已训练的模型(毕竟如果没有什么开始的话,它无法预测任何新的音符!),接着使用已训练的 RNN 迭代地预测每一个连续的音符。这相当于从 RNN 在每个时间步输出的下一个音符的概率分布中随机抽样,然后使用这些样本生成一首新歌。

像以前一样,我们只给学生一个指导架构,定义采样由其自己决定。

为了提供已生成歌曲的一个采样,我们继续并训练模型,接着从中采样生成新歌。试听一下由已训练模型生成的一个实例:https://soundcloud.com/alexanderamini/mit-6s191-rnn-song。

生成更多逼真的音乐

你很可能已发现,这里还有大量的提升空间。我们希望学生继续通过我们提供的框架,调试超参数,扩充数据集来生成更加悦耳的音乐。

气胸检测

第二个 lab 补充了课程中用于计算机视觉的深度学习一节。学生有机会在逼真的医疗图像数据集上使用 CNN 检测疾病。特别地,学生使用一组真实的胸部 X 射线构建模型,检测和分类被预测有气胸的扫描,这种情况发生在肺与胸壁之间的空气量异常的情况下。

我们把这一 lab 推进到分类之外,以尝试解决可解释性的问题——什么是反映网络为什么和如何把一个特定类别标签分配给指定图像的量化指标。为解决这一问题,学生部署了一项称之为类别激活映射的特征可视化技术,以获得对区分性图像区域的理解。

数据集

在这里,我们使用了 ChestXRay 数据集的一个子集。顾名思义,这是一个大型 X 射线胸透照片数据集,并标有相应的诊断信息。

鉴于它是一个基于真实世界信息的数据集,其中含有大量噪音。在这里,我们希望让学生们能够使用真实的数据,以便了解包装和注释数据会面临的挑战——特别是在计算机视觉的背景下。

CNN 模型

学生们将使用与训练的 CNN 模型展开气胸疾病检测任务;在这里,我们不会让神经网络保持黑箱状态,而是会提供模型和训练模型调用的代码,并希望以此能够让学习者充分参与整个实验。此外,lab 还将实现成本和预测函数,以及 CNN 分类器的评估指标(如 ROC 曲线)。

用于气胸检测的 CNN 架构

用 CAM 解释 CNN 的输出

这一 lab 的主要目的是应用类激活图(CAM)来解释 CNN 的输出。虽然目前已有很多用于图像分类的 CNN 模型资源,但我们发现很少有介绍可解释性的 lab。但对于初学者而言,认识并接受深度学习局限性是非常重要的——这些都是本 lab 的一部分,也是整个课程的一部分。将 CAM 结合到实验中也为学生们提供了阅读和上手实践最新研究成果的机会,这会是一种非常有意义的体验。

CAM 是一种可视化图片在 CNN 中最后的卷积层上被「注意」区域的方法。请注意,CAM 可视化适用于在最终全连接层之前具有全局平均池化层的架构,其中我们输出最后一个卷积层上每个单元的特征映射的空间平均值。

CAM 有效地高亮了输入图像中分配特定类别标签最重要的部分。也可以直观地说:一个类的 CAM 是基于每个特征图,将图像分配给该类的重要性。CNN 中的特征映射反映了图像中特定视觉图案(即特征)的存在。我们通过对特征映射的重要性加权的特征映射和来计算 CAM。因此,在重要信道中具有更大激活的输入图像的区域在 CAM 中被赋予了更大的权重,因此显得「更热」。

在气胸分类器的背景下,这相当于强调胸透照片中识别(或未识别到)气胸最为重要的那些像素。

最终特征图上的类激活映射

为了进行具体说明,我们让 F_k 代表 k-th 在卷积神经网络最后一个卷积层上的特征图,然后让 w_k 代表 k-th 在特征凸和全连接层上的权重。于是,用于气胸检测的类激活图为:

在对最终的类激活图进行上采样以后,我们可以把胸透照片中与气胸检测最相关的区域可视化(至少是从神经网络的角度看)。

该 lab 从头到尾演示了 CAM 在 TensorFlow 中计算和可视化的整个过程。学生们需要定义函数来提取特征图,计算 CAM 的权重:

(feature_maps, dense_weights) = extract_features_weights(model)

在这里,学生们需要将从最后的卷积层中提取的 Feature_maps 输入,并从全连接层 dense_weights 输入到 CAM 计算的函数中,然后定义上采样过程。

气胸阳性的胸透照片类激活图

正如气胸阳性的胸透照片示例所展示的那样,CAM 最终可以可视化为一张热图。

或许这个 lab 最有意思的部分是它所引发的讨论。学生们需要仔细研究模型对输入胸透照片进行错误分类的实例,CAM 在这些实例中的样子,并思考自己可以对模型做出哪些修改来突破这些限制。构建一种可以「窥探」神经网络内部运行机制的算法可以帮助激发学生们的好奇心,并让他们体会到机器学习中可解释性的重要性。

以上这些教学 Lab 都是 MIT 6.S191 系列课程所独有的,授课者为本课程进行了专门设计。目前,所有 MIT 6.S191 课程的视频都可以在网上免费观看了。

原文链接:https://medium.com/tensorflow/mit-6-s191-introduction-to-deep-learning-24994d705aca

原文发布于微信公众号 - 目标检测和深度学习(The_leader_of_DL_CV)

原文发表时间:2018-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网大杂烩

预测模型数据挖掘之预测模型

定性研究与定量研究的结合,是科学的预测的发展趋势。在实际预测工作中,应该将定性预测和定量预测结合起来使用,即在对系统做出正确分析的基础上,根据定量预测得出的量化...

49320
来自专栏AI科技大本营的专栏

技术 | 入门机器学习必须知道的6件事,你可未必都了然于心了

翻译 | AI科技大本营(rgznai100) 参与 | shawn 过去两年中,我曾经多次折服于机器学习的魅力。但每当我决定尝试新事物时,经常会不得不重新学习...

38690
来自专栏机器之心

资源 | 学到了!UC Berkeley CS 294深度强化学习课程(附视频与PPT)

选自UC Berkeley 机器之心整理 CS294 深度强化学习 2017 年秋季课程的所有资源已经放出。该课程为各位读者提供了强化学习的进阶资源,且广泛涉及...

36340
来自专栏人工智能

从基础知识到实际应用,一文了解机器学习非凸优化技术

选自arXiv 优化技术在科技领域应用广泛,小到航班表,大到医疗、物理、人工智能的发展,皆可看到其身影,机器学习当然也不例外,且在实践中经历了一个从凸优化到非凸...

249100
来自专栏机器之心

BMVC 2018 | 最佳学生论文:EPFL&FAIR提出QuaterNet,更好地解决人类动作建模问题

对人类动作进行建模对于许多应用都很重要,包括动作识别 [12, 34]、动作检测 [49] 及计算机图形学 [22] 等。最近,神经网络被用于 3D 骨骼关节部...

12110
来自专栏IT派

干货 | 机器学习之必知必会6个点

导语:过去两年中,我曾经多次折服于机器学习的魅力。但每当我决定尝试新事物时,经常会不得不重新学习某些概念和课程,其实大部分学习就是这样一个过程。在学习机器学习这...

36350
来自专栏机器之心

ICML 2018 | 腾讯AI Lab提出误差补偿式量化SGD:显著降低分布式机器学习的通信成本

作者:Jiaxiang Wu、Weidong Huang、Junzhou Huang、Tong Zhang

14820
来自专栏AI研习社

OpenAI“巧妙”发现无监督情感神经元,可利用文本检测用户情感

日前,OpenAI在官网公布了一项新研究成果,介绍了一个可以高效学习情感表征的无监督系统,它能够预测亚马逊评论中的下一个字符。 研究人员采用了线性模型,在一个小...

40790
来自专栏机器之心

一门面向所有人的人工智能公开课:MIT 6.S191,深度学习入门

选自Medium 机器之心编译 参与:黄小天、李泽南 对初学者来说,有没有易于上手,使用流行神经网络框架进行教学的深度学习课程?近日,麻省理工学院(MIT)正式...

34590
来自专栏机器之心

深度 | 学习如何学习的算法:简述元学习研究方向现状

选自TowardsDataScience 作者:Cody Marie Wild 机器之心编译 参与:李诗萌、李泽南 要想实现足够聪明的人工智能,算法必须学会如何...

38250

扫码关注云+社区

领取腾讯云代金券