对初学者来讲,有没有易于上手,使用流行神经网络框架进行教学的深度学习课程?近日,麻省理工学院(MIT)正式开源了在线介绍性课程「MIT 6.S191:深度学习入门」。该课程包括一系列有关神经网络及其在序列建模、计算机视觉、生成模型和强化学习等方面的基本应用知识。
因次,在这门课程的教学中,咱们选用了 TensorFlow。咱们设计了两个基于 TensorFlow 的软件 lab 做为演讲课程的补充,一个是经过循环神经网络聚焦于音乐生成,另外一个则专一于医疗图像的气胸检测。git
相应地,首个 lab 介绍 TensorFlow 基础——构建和执行计算图、sessions 以及在深度学习中经常使用的通常操做,一样也会重点介绍 TensorFlow 最新的重大更新:Eager mode。github
RNN 一样适用于音乐生成,能够捕捉时序数据中的依赖关系。在第一个 lab 中,学生致力于编码音乐文件数据集,界定 TensorFlow 中的 RNN 模型,并从中采样以生成全新的音乐。算法
该数据集是一个流行音乐片断的集合,被编码成向量格式以馈送给 RNN 模型。一旦数据被处理,下一步则是使用该数据集定义和训练 RNN 模型。bash
咱们为学生提供构建 RNN 模型并定义合适的计算图的指导。再次,咱们已经设计这些 lab,供有兴趣的人使用,无论其有无 TensorFlow 经验。网络
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 note
pred_note = tf.argmax(prediction, 1) # identify the predicted note
correct_pred = tf.equal(pred_note, true_note) # compare!复制代码
该 Lab 指导学生把一个种子馈送给已训练的模型(毕竟若是没有什么开始的话,它没法预测任何新的音符!),接着使用已训练的 RNN 迭代地预测每个连续的音符。这至关于从 RNN 在每一个时间步输出的下一个音符的几率分布中随机抽样,而后使用这些样本生成一首新歌。session
咱们把这一 lab 推动到分类以外,以尝试解决可解释性的问题——什么是反映网络为何和如何把一个特定类别标签分配给指定图像的量化指标。为解决这一问题,学生部署了一项称之为类别激活映射的特征可视化技术,以得到对区分性图像区域的理解。架构
鉴于它是一个基于真实世界信息的数据集,其中含有大量噪音。在这里,咱们但愿让学生们可以使用真实的数据,以便了解包装和注释数据会面临的挑战——特别是在计算机视觉的背景下。框架
学生们将使用与训练的 CNN 模型展开气胸疾病检测任务;在这里,咱们不会让神经网络保持黑箱状态,而是会提供模型和训练模型调用的代码,并但愿以此可以让学习者充分参与整个实验。此外,lab 还将实现成本和预测函数,以及 CNN 分类器的评估指标(如 ROC 曲线)。机器学习
CAM 是一种可视化图片在 CNN 中最后的卷积层上被「注意」区域的方法。请注意,CAM 可视化适用于在最终全链接层以前具备全局平均池化层的架构,其中咱们输出最后一个卷积层上每一个单元的特征映射的空间平均值。ide
在气胸分类器的背景下,这至关于强调胸透照片中识别(或未识别到)气胸最为重要的那些像素。
为了进行具体说明,咱们让 F_k 表明 k-th 在卷积神经网络最后一个卷积层上的特征图,而后让 w_k 表明 k-th 在特征凸和全链接层上的权重。因而,用于气胸检测的类激活图为:
该 lab 从头至尾演示了 CAM 在 TensorFlow 中计算和可视化的整个过程。学生们须要定义函数来提取特征图,计算 CAM 的权重:
(feature_maps, dense_weights) = extract_features_weights(model)复制代码
正如气胸阳性的胸透照片示例所展现的那样,CAM 最终能够可视化为一张热图。
以上这些教学 Lab 都是 MIT 6.S191 系列课程所独有的,授课者为本课程进行了专门设计。目前,全部 MIT 6.S191 课程的视频均可以在网上免费观看了。