技术大牛讲解CS231n课后作业——第一讲(含代码实现)| 分享总结

2018 年 1 月 13 日 AI研习社 杨文

CS231n 是斯坦福大学开设的计算机视觉与深度学习的入门课程,授课内容在国内外颇受好评。但是只听课不复习,不做作业来巩固知识点的话,效果肯定不好。雷锋网 AI 研习社在近期的线上公开课上请来了一位技术大牛为大家来讲解这门课的配套作业。

本文根据 AI 研习社公开课上的直播视频内容整理而成,主要介绍 Assignment 1 的完成思路与重点部分代码实现。如果你还没开始听 CS231n,可直接在下方课程链接观看回放视频。

http://www.mooc.ai/open/course/364

王煦中,CS 硕士,主要研究方向为自然语言处理与深度学习。知乎专栏喵神大人的深度工坊(http://t.cn/RTc9wfy)作者,日语及 ACGN 爱好者。

  CS231n 课后作业讲解第一讲(含代码实现)

分享提纲

  • CS231n 作业介绍,

  • kNN 的介绍

  • 关于 SVM

  • 关于 Softmax

  • 关于 Two-Layer NN

  • 关于 Features

以下是分享内容:

CS231n 的全称是 CS231n: Convolutional Neural Networks for Visual Recognition,即面向视觉识别的卷积神经网络。该课程是斯坦福大学计算机视觉实验室推出的入门课程,授课内容在国内外颇受好评。所有课程资料、PPT 等都可以在网络上下载:http://cs231n.stanford.edu/syllabus.html。课程的目的是帮助学生深入了解深度学习框架的细节,主要面向视觉识别任务(尤其是图像分类任务)的端到端学习模型。

  关于 kNN

kNN 主要分为两步:第一步是训练,分类器简单地记住所有的训练数据。

第二步是测试,比第一步要重要。每一个测试样本要和每一个训练数据分别计算距离,选取 k 个最近的训练样本的 label,通过投票机制获得预测值。

投票机制就是大家在一起对所有的类投票,哪一个类的投票数最多,这个测试样本就会被分为该类的下面。

这个作业主要分为三步,第一步用双循环实现 kNN, 双循环就是对每个测试数据和每个训练数据分别计算,第一层循环就是对测试数据的循环,第二层循环是对训练 数据的循环。距离的计算用的是函数 np.linalg.norm().

下面使用单循环实现。单循环要求每个测试数据通过一次计算就可以得到和训练数据整体的距离。训练分为两个部分,首先是每个测试数据和训练数据做差,需要注意参数 axis 的设置,用了广播机制。

使用无循环实现

具体的实现代码,可以观看回放视频学习。

最后的一个部分是预测:np.argsort() 可以对 dist 进行排序选出 k 个最近的训练样本的下标;np.bincount() 会统计输入数组出现的频数,结合 np.argmax() 就可以实现 vote 机制。

该部分作业要求在测试样本中需要得到 28% 的准确率。

  关于线性多分类 SVM

推导 SVM 过程很复杂,这里不涉及过多问题,用线性计算就可以了。注意下面这个式子汇总只有错误的分类才能产生 loss。即 j=i 正确分类是没有 loss 的。

分别对 Wj 和 Wyi 求导,具体的实现代码可以观看视频回播。这个作业要求在验证集上得到大约 40% 的正确率。

  关于 Softmax

Softmax 的公式如图

需要注意的是,所有的分类问题都是一对一的,一个测试样本只能分到一个类下面。

loss 具体代码实现过程可观看视频回放。有了 loss 之后,在 j=i 和 j≠i 的情况下,分别对 w 求导:

这部分作业要求在验证集上达到 35% 的准确率。

第四部分,关于 Two-Layer NN,实现两层的神经网络

具体详解过程见视频回放。实现反向传播后,要求调一些参数在测试集上达到 48% 以上的准确率。

第五部分:特征

该部分不再直接输入图片,而是输入图片的特征。

使用 SVM 需要在验证集上达到 44% 的准确率,使用双层神经网络可以很轻松达到 55% 以上的准确率,在测试机的分类准确率可达到 59.4%。

以上为 AI 研习社公开课上的关键内容提要。视频回放课到 AI 慕课学院观看,或直接点击链接:

http://www.mooc.ai/open/course/364

CCF ADL 系列又一诚意课程

两位全球计算机领域 Top 10 大神加盟

——韩家炜 &  Philip S Yu

共 13 位专家,覆盖计算机学科研究热点

▼▼▼



新人福利




关注 AI 研习社(okweiwu),回复  1  领取

【超过 1000G 神经网络 / AI / 大数据,教程,论文】



CS231n 2017 正式开课!双语字幕版独家上线!

登录查看更多
5

相关内容

斯坦福大学CS231n课程
【圣经书】《强化学习导论(2nd)》电子书与代码,548页pdf
专知会员服务
197+阅读 · 2020年5月22日
《深度学习》圣经花书的数学推导、原理与Python代码实现
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
195+阅读 · 2020年2月11日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
计算机视觉最佳实践、代码示例和相关文档
专知会员服务
17+阅读 · 2019年10月9日
公开课 | CS231n 课后作业第三讲 : Assignment 3
AI研习社
8+阅读 · 2018年4月16日
代码分享系列(1)之感知机【代码可下载】
机器学习算法与Python学习
4+阅读 · 2018年2月10日
第9弹:从零开始学习CNN架构 | 2017 CS231n
AI研习社
21+阅读 · 2018年1月4日
第5弹!CS231n 2017中文字幕视频:卷积神经网络
AI研习社
9+阅读 · 2017年12月7日
CS231n 2017 今天正式开课!双语字幕版独家上线!
AI研习社
36+阅读 · 2017年11月9日
Arxiv
7+阅读 · 2020年3月1日
The Matrix Calculus You Need For Deep Learning
Arxiv
11+阅读 · 2018年7月2日
VIP会员
Top
微信扫码咨询专知VIP会员