CS231n笔记 Lecture 2 Image Classification pipeline
距离度量\(L_1\) 和\(L_2\)的区别
一些感性的认识,\(L_1\)可能更适合一些结构化数据,即每个维度是有特别含义的,如雇员的年龄、工资水平等等;如果只是一个一般化的向量,\(L_2\)可能用得更多。但这些仍然需要视具体情况而定。
Nearest Neighbor
KNN-demo
相当于\(K=1\)的KNN分类,这种其实是把所谓的“训练”过程推后了,是一种lazy的做法,model实际上隐藏在了训练数据中。训练时,只是单纯地“记下”训练样本的特征和标签;测试时,拿到一个新的样本,需要遍历所有的训练数据,找到最相似的那个,然后取其label作为当前样本的预测。
K的选取
取1的时候,在训练样本上的精度为100%,但这并不是好事,因为好的模型要有好的泛化能力。
评估model的好坏
像KNN等等这样的模型,存在K这样的超参数。不同超参数的选取是会直接影响模型的好坏的,那么如果评估一个模型,如何去选择最好的超参数呢?
- 只用训练集
用训练集训练,也用训练集来评测。由上一个问题引申出来,如果只用测试集来衡量,可能会在训练集上达到很高的准确度,可能就过拟合了,但实际上我们关注的是unseen的样本。 - 训练集、测试集
这时候我们很自然地就会想到,那我们把训练数据分成两部分,一部分用来训练,另一部分用来测试,我们选取能在测试集上表现最好的模型(or超参数)。这样做带来的问题也是类似的,我们这次会在测试集上过拟合,而测试集却又不能代表未来unseen的样本。 - 训练集、验证集、测试集
更常见的做法是,在训练的初始阶段,就把数据分成(训练集+验证集)+测试集这两大部分。训练时,可以采用比如交叉验证等方法,用验证集上的精度来选择模型的参数,得到最好的模型。然后只在测试集上做一次性的验证,得到的准确度可用于来表征这个模型的能力。需要注意的是,测试集的数据在整个训练过程中都是要保持untouched,只有到了最后要评估模型能力的时候,在测试集上跑一次,得到准确度等度量。
Linear model
\(y = Wx + b\)
b, 处理 imbalanced data , data independent bias terms。 举例来说,10分类的问题,b是一个10维的向量,如果cat的图片多,那b中cat对应的那一维就会大一些。
小感悟
- 在Justin讲课的过程中,有大概5~6次来自学生的提问。这些问题中有一些是作为有一定背景知识的人看来是不值一提的,比如CNN中输入图像的\(28\times 28\times 3\)中的3是代表什么意思等等,但是即便是这样看似“简单”的问题,我们也要敢于去发问。
还有一些问题,是我们会比较容易忽略的,比如在KNN的分类区域图上面,除了几个有颜色的区域外,还有一些白色区域。我看到的时候可能就一看了之,但是有学生就会问白色区域的含义是什么?实际上这些区域是无法采用majority voting产生结果的区域,比如K=3时,新来的样本的三个近邻恰好分属三个类别,那就无法决定它的类别了,这时候就是白色区域——当然这只是Justin的slides中的定义,不具有普遍性。

另一个问题印象比较深刻的是,在说\(L_1\)或者\(L_2\)不适合用作衡量图像距离的度量时,Justin给了下图的几张图片,说右边三张和第一张的\(L_1\)的距离都是一样的。想要说明\(L_1\)并不好。

刚开始说的时候我也疑惑了一下,怎么可能是一样的?直到有一个同学在后面提出了这个疑问,Justin解答说这是他特地凑的......好吧。说这个只想说明,有时候我们自己疑惑的点也许也正是很多其它人所疑惑的,有问题就问出来 :-)
CS231n笔记 Lecture 2 Image Classification pipeline的更多相关文章
- CS231n笔记 Lecture 5 Convolutional Neural Networks
一些ConvNets的应用 Face recognition 输入人脸,推测是谁 Video classfication Recognition 识别身体的部位, 医学图像, 星空, 标志牌, 鲸.. ...
- CS231n笔记 Lecture 4 Introduction to Neural Networks
这一讲主要介绍了神经网络,基本内容之前如果学习过Andrew的Machine learning应该也都有所了解了.不过这次听完这一讲后还是有了新的一些认识. 计算图 Computational gra ...
- CS231n笔记 Lecture 3 Loss Functions and Optimization
这一讲总体上就是引入Loss Function的概念,以及让大家对优化有一个初步的认识,和其他课程里面说的内容大同小异. Loss function Multiclass svm loss multi ...
- CS231n笔记 Lecture 1 Introduction
主题有关 这一讲主要是介绍性质的,虽然大多数概念以前听说过,但还是在他们的介绍中让我有如下一些认识,所谓温故而知新,不无道理: IMAGENET Feifei Li的团队首先爬取.标注了IMAGENE ...
- 【cs231n笔记】assignment1之KNN
k-Nearest Neighbor (kNN) 练习 这篇博文是对cs231n课程assignment1的第一个问题KNN算法的完成,参考了一些网上的博客,不具有什么创造性,以个人学习笔记为目的发布 ...
- 深度学习课程笔记(二)Classification: Probility Generative Model
深度学习课程笔记(二)Classification: Probility Generative Model 2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...
- CS231n-lecture2-Image Classification pipeline 课堂笔记
---恢复内容开始--- 相关资源 Event Type Date Description Course Materials Lecture 2 Thursday April 6 Image ...
- cs231n spring 2017 lecture2 Image Classification 听课笔记
1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别
Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...
随机推荐
- stixel-world和psmnet结合出现的问题
float32位,4字节 原本的stixel-world是用sgbm生成深度图,并且转成了float型 psmnet保存最终的disparity图是保存成uint16的,skimage.io.imsa ...
- python面试笔试题汇总
Python面试攻略(嗨谈篇) 110道python面试笔试题汇总,你能答对几道? Python 面试问答 Top 25 2018 年最常见的 Python 面试题 & 答案
- Spring boot 集成Kafka
搭建Kafka集群,参考: https://www.cnblogs.com/jonban/p/kafka.html 源码示例如下: 1.新建 Maven 项目 kafka 2.pom.xml < ...
- Win10开机启动项
键盘输入:win+r 输入命令:shell:startup
- 十分钟看懂,未来Web前端开发最新趋势
首先,展望未来趋势我们就要弄懂过去的一年,也就是18年,web前端开发的重要新闻.重要事件和JavaScript的各种流行框架.模式发展趋势. 我们来快速回顾一下. NPM热门前端框架下载 先来看最热 ...
- 最大长度回文子串(Manacher's algorithm)
输出最大长度的回文子串. string longestPalindrome(string s) { int id, mx, i, j, len, maxlen; vector<char> ...
- Python——数据类型
如果是C语言,Java使用一个变量之前需要声明,数字,字符,布尔等都有特定的声明方式,前端中常用的js中都要使用var,而python中直接用就行了 比如: 虽然是这样使用,但其实是当你给一个变量赋值 ...
- java,求1-100之和。
package study01; public class TestWhile { public static void main(String[] args) { int sum = 0; int ...
- ssh整合思想 Spring与Hibernate和Struts2的action整合 调用action添加数据库 使用HibernateTemplate的save(entity)方法 update delete get 等方法crud操作
UserAction类代码: package com.swift.action; import com.opensymphony.xwork2.ActionSupport; import com.sw ...
- Js 数组去重的几种方法总结
去重是开发中经常会碰到的一一个热点问题,不过目前项目中碰到的情况都是后台接口使用SQL去重,简单高效,基本不会让前端处理去重.那么前端处理去重会出现什么情况呢?假如每页显示10条不同的数 ...