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

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

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

本文根据 AI 研习社公开课上的直播视频内容整理而成,主要介绍 Assignment 1 的完成思路与重点部分代码实现。如果你还没开始听 CS231n,可直接点击课程链接(http://www.mooc.ai/open/course/364 )观看回放视频。

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

  分享主题

CS231n 课后作业讲解第一讲(含代码实现)作业链接:https://github.com/Observerspy/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 

  作业链接

https://github.com/Observerspy/CS231n 

NLP 工程师入门实践班:基于深度学习的自然语言处理

三大模块,五大应用,手把手快速入门 NLP

海外博士讲师,丰富项目经验

算法 + 实践,搭配典型行业应用

随到随学,专业社群,讲师在线答疑

▼▼▼





新人福利





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

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



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

登录查看更多
19

相关内容

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