编译 | 周翔
斯坦福的 CS231n 是深度学习和计算机视觉领域的经典课程之一。近日,斯坦福又开放了由李飞飞主讲的 CS231n Spring 2017 全部视频课程。
在AI科技大本营微信公众号会话回复“斯坦福”,打包下载16张课程PDF
根据官网信息,此次课程的主题为:Convolutional Neural Networks for Visual Recognition,一共包括 16 个视频,主要对深度学习架构进行了详细介绍,而且主要集中在端到端的模型,特别是图像分类任务上。在 10 周的课程中,学生将学习执行、训练和调试神经网络,并详细了解计算机视觉的前沿领域。最终,学生将完成包含数百万个参数的卷积神经网络的训练任务,并将其应用于最大的图像分类数据集(ImageNet)。
除了李飞飞之外,此次课程还邀请了 Song Han 和 Ian Goodfellow 作为客座讲师,两人分别对加速深度学习的方法和硬件、以及对抗性样本和对抗性训练进行了详细介绍。
课程官网:
http://cs231n.stanford.edu/
YouTube 地址:
https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv
Bilibili 视频地址:
http://www.bilibili.com/video/av13260183/#page=1(由微博博主 @ 爱可可老师上传)
先决条件
熟练掌握Python、C / C ++
大学微积分、线性代数
基本的概率和统计论
最好学习过 CS229 (机器学习课程)
课程简介
不管是搜索、图像理解、应用程序、绘图、医学、无人机、还是自动驾驶汽车,计算机视觉的应用已经无处不在。这些应用里的核心任务大多是视觉识别,比如图像分类、定位、检测等等。神经网络(又称“深度学习”)方法的最新进展大大提高了这些最先进的视觉识别系统的性能。
本课程对深度学习架构进行了详细介绍,主要集中在端到端的模型,特别是图像分类任务上。在 10 周的课程中,学生将学习执行、训练和调试自己的神经网络,并详细了解计算机视觉的前沿领域。最终,学生将完成包含数百万个参数的卷积神经网络的训练任务,并将其应用于最大的图像分类数据集(ImageNet)。我们将重点介绍如何建立图像识别问题、相应的学习算法(例如反向传播)、训练网络的技巧,并引导学生进行实际操作,通过最终的课程项目。本课程的背景和材料的大部分内容来自 ImageNet 挑战赛。
课程大纲
课程1:应用于视觉识别的卷积神经网络简介(Introduction to Convolutional Neural Networks for Visual Recognition)
简介:课程1介绍了计算机视觉领域,讨论了它的历史和关键性的挑战。 计算机视觉涵盖了各种各样的不同任务,尽管近期深度学习取得了一系列的成功,但我们离实现人类水平的视觉智能的目标仍然很远。
课程2:图像分类( Image Classification)
简介:课程2提出了图像分类问题。我们讨论了图像分类的固有难题,并介绍了数据驱动的方法。在该课程中,我们讨论了两个简单的数据驱动的图像分类算法:K-Nearest Neighbors 和 Linear Classifiers,并介绍了超参数和交叉验证的概念。
课程3:损失函数和优化(Loss Functions and Optimization)
简介:课程3继续讨论线性分类器。我们介绍了一种损失函数的概念,来量化我们对模型预测结果的不满意的程度,并讨论了图像分类中两种常用的损失函数:多类SVM(支持向量机)损失和多项逻辑回归损失。我们介绍了如何用正则化的思想来避免过拟合。此外,我们还介绍了优化的概念和随机梯度下降的算法,并简要讨论了计算机视觉中的特征表示。
课程4:神经网络简介(Introduction to Neural NetworksB)
简介:在课程4中,我们从线性分类器一直讲到了全连接神经网络,并介绍了计算机梯度的反向传播算法,简要讨论了人工神经网络和生物神经网络的关联。
课程5:卷积神经网络(Convolutional Neural Networks)
简介:在课程5中,我们从全连接神经网络转向卷积神经网络。我们讨论了卷积网络发展过程中的一些关键里程碑,包括感知器、神经认知机、LeNet、以及AlexNet。我们介绍了卷积、池化、以及全连接层的概念,这些都是构成现代卷积网络的基础。
课程6:训练神经网络(一)(Training Neural Networks I)
简介:在课程6中,我们讨论了训练现代神经网络中的许多实际问题。比如,我们讨论了不同的激活函数、数据预处理和权重初始化的重要性,以及 batch normalization。此外,我们还介绍了监控学习过程和选择超参数的一些策略。
课程7:训练神经网络(二)(Training Neural Networks II)
简介:课程7继续讨论训练神经网络过程中的实际问题。我们探讨了在训练期间经常用于优化神经网络的不同更新规则,以及用于大型神经网络(包括dropout)正则化的不同策略。此外,我们还讨论了迁移学习和 finetuning(微调)。
课程8:深度学习软件(Deep Learning Software)
简介:在课程8中,我们讨论了如何使用不同的软件包进行深度学习,主要是 TensorFlow 和 PyTorch。 此外,我们还讨论了 CPU 和 GPU 之间的一些区别。
课程9:卷积神经网络的结构(CNN Architectures)
简介:在课程9中,我们讨论了卷积神经网络的一些常见架构,主要是一些在 ImageNet 挑战中表现良好的架构,包括 AlexNet、VGGNet、GoogLeNet、ResNet 以及其他有趣的模型。
课程10:循环神经网络(Recurrent Neural Networks)
简介:在课程10中,我们讨论了如何使用循环神经网络进行序列数据建模。我们展示了如何将循环神经网络用于语言建模和图像字幕,以及如何将 soft spatial attention 用在图像字幕模型中。此外,我们讨论用于循环神经网络的不同架构,包括 LSTM(Long Short Term Memory)和 GRU(Gated Recurrent Units)。
课程11:检测和分割(Detection and Segmentation)
简介:在课程11中,我们展示了如何将卷积网络应用于其他核心计算机视觉任务,而不仅仅是图像分类。我们展示了如何将具备 downsampling 和 upsampling 层的完全卷积网络用于语义分割,以及多任务损失(multitask losses)如何能够用于定位和姿态估计。 我们讨论了一些目标检测的方法,包括基于区域的 R-CNN 系列方法和 single-shot 方法,如 SSD 和 YOLO。 最后,我们展示了如何将语义分割和对象检测的想法结合起来进行实例分割(instance segmentation)。
课程12:可视化和理解(Visualizing and Understanding)
在课程12中,我们讨论了实现可视化以及理解卷积神经网络内部机制的方法。我们还讨论了如何使用卷积网络来生成新的图像,包括 DeepDream 以及艺术风格的迁移。
课程13:生成式模型(Generative Models)
简介:在课程13中,我们将生成模型作为一种无监督学习的形式进行了讨论。该课程涵盖了自回归的 PixelRNN 和 PixelCNN 模型、传统和变分自动编码器(VAE)、以及生成对抗网络(GAN)。
课程14:深度加强学习(Deep Reinforcement Learning)
简介:在课程14中,我们从监督学习转向强化学习(RL),在这种学习中,agent 必须学会与环境交互,才能最大程度地提高回报。 我们使用马尔可夫决策过程(MDPs)、policies、价值函数和Q值函数的语言来进行强化学习。我们讨论了强化学习的不同算法,包括 Q-Learning,策略梯度 和 Actor-Critic。我们展示了强化学习已经被用于进行 Atari 游戏,并在 AlphaGo 中实现超越人类棋手的表现。
课程15:针对深度学习的高效方法和硬件(Efficient Methods and Hardware for Deep Learning)
简介:在课程15中,客座讲师 Song Han 讨论了可用于加快深度学习训练和推论过程的算法和专用硬件。我们讨论了剪枝、weight sharing、量化(quantization)等可加速推理过程的技术,以及并行化(parallelization)、混合精度(mixed precision)等可加速训练过程的技术。此外,我们还讨论专用于深度学习的硬件,如 GPU,FPGA 和 ASIC,包括 NVIDIA 最新 Volta GPU 中的 Tensor Core 以及Google 的 TPU。
课程16:对抗性样本和对抗性训练(Adversarial Examples and Adversarial Training)
简介:在课程16中,客座讲师 Ian Goodfellow 讨论了深度学习中的对抗性例子。我们讨论了为什么深度网络和其他机器学习模型容易受到对抗性示例的影响,以及如何使用对抗性样本来训练机器学习系统。 此外,我们探讨了针对对抗性样本的潜在防御,以及在没有明确的对抗下,如何用对抗样本来改进机器学习系统。