点击上方“AI有道”,选择“置顶”公众号
重磅干货,第一时间送达
来源 | 知乎@杜客
现为美国斯坦福大学教授和谷歌云人工智能和机器学习首席科学家的李飞飞拥有众多头衔,毫无疑问是人工智能领域的大 IP。她在斯坦福开设的机器视觉课程 CS231n 一直以来都是王牌课程,惠及数十万的人工智能爱好者。笔者最近在知乎发现@杜客及其团队发布了该课程非常全面的官方中文翻译笔记,特此整理出来,供大家交流学习!感谢@杜客团队!
CS231n 简介
CS231n的全称是CS231n: Convolutional Neural Networks for Visual Recognition,即面向视觉识别的卷积神经网络。课程地址:
http://vision.stanford.edu/teaching/cs231n/index.html
该课程是斯坦福大学计算机视觉实验室推出的课程。需要注意的是,目前大家说CS231n,大都指的是2016年冬季学期(一月到三月)的最新版本。
课程描述:请允许我们引用课程主页上的官方描述如下:
计算机视觉在社会中已经逐渐普及,并广泛运用于搜索检索、图像理解、手机应用、地图导航、医疗制药、无人机和无人驾驶汽车等领域。而这些应用的核心技术就是图像分类、图像定位和图像探测等视觉识别任务。近期神经网络(也就是“深度学习”)方法上的进展极大地提升了这些代表当前发展水平的视觉识别系统的性能。 本课程将深入讲解深度学习框架的细节问题,聚焦面向视觉识别任务(尤其是图像分类任务)的端到端学习模型。在10周的课程中,学生们将会学习如何实现、训练和调试他们自己的神经网络,并建立起对计算机视觉领域的前沿研究方向的细节理解。最终的作业将包括训练一个有几百万参数的卷积神经网络,并将其应用到最大的图像分类数据库(ImageNet)上。我们将会聚焦于教授如何确定图像识别问题,学习算法(比如反向传播算法),对网络的训练和精细调整(fine-tuning)中的工程实践技巧,指导学生动手完成课程作业和最终的课程项目。本课程的大部分背景知识和素材都来源于ImageNet Challenge竞赛。
课程内容:官方课程安排及资源获取请看下方链接:
http://vision.stanford.edu/teaching/cs231n/syllabus.html
通过查看官方课程表,我们可以看到 CS231n 课程资源主要由授课视频与PPT,授课知识详解笔记和课程作业三部分组成。其中:
授课视频15课。每节课时约1小时左右,每节课一份PPT。
授课知识详解笔记共9份。光看课程视频是不够的,深入理解课程笔记才能比较扎实地学习到知识。
课程作业3次。其中每次作业中又包含多个小作业,完成作业能确保对于课程关键知识的深入理解和实现。
课程项目1个。这个更多是面向斯坦福的学生,组队实现课程项目。
拓展阅读若干。课程推荐的拓展阅读大多是领域内的经典著作节选或论文,推荐想要深入学习的同学阅读。
课程评价:我们觉得赞!很多人都觉得赞!当然也有人觉得不好。具体如何,大家搜搜 CS231n 在网络,在知乎上的评价不就好了嘛!个人认为:入门深度学习的一门良心课。适合绝大多数想要学习深度学习知识的人。
课程不足:课程后期从RCNN开始就没有课程笔记。
课程学习方法
三句话总结:
看授课视频形成概念,发现个人感兴趣方向。
读课程笔记理解细节,夯实工程实现的基础。
码课程作业实现算法,积累实验技巧与经验。
引用一下学习金字塔的图,意思大家都懂的:
我们的工作
一、完成了CS231n全部9篇课程知识详解笔记的翻译:
1. Python Numpy Tutorial
原文:
http://cs231n.github.io/python-numpy-tutorial/
翻译:
https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit
https://zhuanlan.zhihu.com/p/20900216?refer=intelligentunit
我们将使用 Python 编程语言来完成本课程的所有作业。Python 是一门伟大的通用编程语言,在一些常用库(numpy, scipy, matplotlib)的帮助下,它又会变成一个强大的科学计算环境。我们期望你们中大多数人对于 Python 语言和 Numpy 库比较熟悉,而对于没有 Python 经验的同学,这篇教程可以帮助你们快速了解 Python 编程环境和如何使用 Python 作为科学计算工具。
2. Image Classification
原文:
http://cs231n.github.io/classification/
翻译:
https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit
https://zhuanlan.zhihu.com/p/20900216?refer=intelligentunit
该笔记是一篇介绍性教程,面向非计算机视觉领域的同学。教程将向同学们介绍图像分类问题和数据驱动方法,内容列表:
图像分类、数据驱动方法和流程
Nearest Neighbor分类器
k-Nearest Neighbor 译者注:上篇翻译截止处
验证集、交叉验证集和超参数调参
Nearest Neighbor的优劣
小结
小结:应用kNN实践
拓展阅读
3. Linear Classification
原文:
http://cs231n.github.io/linear-classify/
翻译:
https://zhuanlan.zhihu.com/p/20918580?refer=intelligentunit
https://zhuanlan.zhihu.com/p/20945670?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21102293?refer=intelligentunit
我们将要实现一种更强大的方法来解决图像分类问题,该方法可以自然地延伸到神经网络和卷积神经网络上。这种方法主要有两部分组成:一个是评分函数(score function),它是原始图像数据到类别分值的映射。另一个是损失函数(loss function),它是用来量化预测分类标签的得分与真实标签之间一致性的。该方法可转化为一个最优化问题,在最优化过程中,将通过更新评分函数的参数来最小化损失函数值。内容列表:
线性分类器简介
线性评分函数
阐明线性分类器 译者注:上篇翻译截止处
损失函数
多类SVM
Softmax分类器
SVM和Softmax的比较
基于Web的可交互线性分类器原型
小结
4. optimization notes
原文:
http://cs231n.github.io/optimization-1/
翻译:
https://zhuanlan.zhihu.com/p/21360434?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21387326?refer=intelligentunit
该笔记介绍了图像分类任务的第三个关键部分:最优化。内容列表如下:
简介
损失函数可视化
最优化
策略#1:随机搜索
策略#2:随机局部搜索
策略#3:跟随梯度 译者注:上篇截止处
梯度计算
使用有限差值进行数值计算
微分计算梯度
梯度下降
小结
5. backprop notes
原文:
http://cs231n.github.io/optimization-2/
翻译:
https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit
该笔记本将帮助读者对反向传播形成直观而专业的理解。反向传播是利用链式法则递归计算表达式的梯度的方法。理解反向传播过程及其精妙之处,对于理解、实现、设计和调试神经网络非常关键。内容里列表如下:
简介
简单表达式和理解梯度
复合表达式,链式法则,反向传播
直观理解反向传播
模块:Sigmoid例子
反向传播实践:分段计算
回传流中的模式
用户向量化操作的梯度
小结
6. Neural Nets notes 1
原文:
http://link.zhihu.com/?target=http%3A//cs231n.github.io/neural-networks-1/
翻译:
https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21513367?refer=intelligentunit
该笔记介绍了神经网络的建模与结构,内容列表如下:
不用大脑做类比的快速简介
单个神经元建模
生物动机和连接
作为线性分类器的单个神经元
常用的激活函数
神经网络结构
层组织
前向传播计算例子
表达能力设置层的
数量和尺寸
小节
参考文献
7. Neural Nets notes 2
原文:
http://link.zhihu.com/?target=http%3A//cs231n.github.io/neural-networks-2/
翻译:
https://zhuanlan.zhihu.com/p/21560667?refer=intelligentunit
该笔记介绍了数据的预处理,正则化和损失函数,内容列表如下:
设置数据和模型
数据预处理
权重初始化
批量归一化(Batch Normalization)
正则化(L2/L1/Maxnorm/Dropout)
损失函数
小结
8. Neural Nets notes 3
原文:
http://cs231n.github.io/neural-networks-3/
翻译:
https://zhuanlan.zhihu.com/p/21741716?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21798784?refer=intelligentunit
该笔记讲解了神经网络的动态部分,即神经网络学习参数和搜索最优超参数的过程。内容列表如下:
梯度检查
合理性(Sanity)检查
检查学习过程
损失函数
训练集与验证集准确率
权重:更新比例
每层的激活数据与梯度分布
可视化 译者注:上篇翻译截止处
参数更新
一阶(随机梯度下降)方法,动量方法,Nesterov动量方法
学习率退火
二阶方法
逐参数适应学习率方法(Adagrad,RMSProp)
超参数调优
评价
模型集成
总结
拓展引用
9. ConvNet notes
原文:
http://cs231n.github.io/convolutional-networks/
翻译:
https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit
内容列表:
结构概述
用来构建卷积神经网络的各种层
卷积层
汇聚层
归一化层
全连接层
将全连接层转化成卷积层卷积神经网络的结构
层的排列规律
层的尺寸设置规律
案例学习(LeNet / AlexNet / ZFNet / GoogLeNet / VGGNet)
计算上的考量
拓展资源
二、完成了3个课程作业页面的翻译:
1. Assignment #1
原文:
http://cs231n.github.io/assignments2016/assignment1/
翻译:
https://zhuanlan.zhihu.com/p/21441838?refer=intelligentunit
作业内容:实现 k-NN,SVM 分类器,Softmax 分类器和两层神经网络,实践一个简单的图像分类流程。
2. Assignment #2
原文:
http://cs231n.github.io/assignments2016/assignment2/
翻译:
https://zhuanlan.zhihu.com/p/21941485?refer=intelligentunit
作业内容:练习编写反向传播代码,训练神经网络和卷积神经网络。
3. Assignment #3
原文:
http://cs231n.github.io/assignments2016/assignment3/
翻译:
https://zhuanlan.zhihu.com/p/21946525?refer=intelligentunit
作业内容:实现循环网络,并将其应用于在微软的 COCO 数据库上进行图像标注。实现 DeepDream 等有趣应用。
另外,为了方便大家学习这门课,网易云课堂已经有了中文字幕版本:
https://study.163.com/course/introduction.htm?courseId=1003223001#/courseDetail?tab=1
最后,CS231n 的所有视频 + PPT 文件,小编已经打包完毕,需要的同学请关注公众号『AI有道』,在公众号后台直接回复:【231】即可!
【推荐阅读】
干货 | 公众号历史文章精选(附资源)
我的深度学习入门路线
我的机器学习入门路线图