1. 相比于传统的人工提取特征(边、角等),深度学习是一种Data-Driven Approach。深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体。而人工提取特征的方式很脆弱,换一个物体就要重新设计特征。

2. 描述图像之间相似程度,可以直接把每个对应像素做减法,然后把差的绝对值累加起来。这个差值的和越小,图片越接近。这是曼哈顿距离L1。

对应像素点的差值的平方累加再开平方,这是欧几里得距离L2。

L1和L2谁更好,这取决于具体问题。但一般来说,如果做差的向量有很具体的含义,比如对于员工分类,向量的每一个元素可能是“工作年限”、“工资”等,这种用L1会更好一点,因为L1更依赖坐标系。

3. K近领域算法是计算当前图片和所有候选图片的相似程度(或者说距离),最近的K个候选中,最多的那个标签就被作为当前图片的标签。K越大,对噪音越鲁棒(当然,也不是越大越好,会有最佳值)。

这种算法的缺点是:1)预测的复杂度太高,需要和每一个训练数据去比较。2)不鲁邦,测试数据和训练数据必须很像,如果有遮挡、旋转之类的,会误认为差别很大。3)维度问题,数据集必须在整个空间很稠密的分布,需要指数级增加的数据集,维度高的时候就很不现实。

4. Hyperparameter:预先设定的参数,而不是算法学习得到的。比如K近领域算法中的K。这种参数是很依赖具体问题的。如何设置Hyperparameter呢?

  方案一:在训练集上表现最好的。这个方案是不行的,因为我们在乎的不是在训练集上表现怎么样,而是在乎在没见过的测试集上表现好。或者说方案一并不能保证很好的泛化能力。

  方案二:把数据集分为训练集和测试集,选在测试集上最好的。这个方案的问题和方案一一样,依旧不能保证很好的泛化能力。

  方案三:把数据集分为训练集、验证集、测试集,根据验证集上的表现来选择hyperparameter,然后再在测试集上评估。这种方案很好。对于很多hyperparameter的情况,验证集最好也设定的更大一点。  

  方案四:把数据集分为n组,交叉验证。随机挑选n-2组用来训练,1组用来验证,1组用来测试。这种方法比较适合小数据集,在深度学习中,由于训练的代价太大,所以用的也不算多这种方案。

5. 深度学习的框架像是拼乐高积木,而线性回归是最基本最好用的最广泛使用的积木。

6. 深度学习的训练过程就是训练出一组参数W,在预测x的时候计算y=f(x,W),W的每一行都是一个template,对应一个标签,计算出的y是一个向量,每个元素对应一个标签的相似程度,最大的值就对应预测出的标签。深度学习的框架反映在函数f上。

对于线性回归,f就是简单相乘,f(x,W) = Wx。

cs231n spring 2017 lecture2 Image Classification 听课笔记的更多相关文章

  1. cs231n spring 2017 lecture9 CNN Architectures 听课笔记

    参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...

  2. cs231n spring 2017 lecture13 Generative Models 听课笔记

    1. 非监督学习 监督学习有数据有标签,目的是学习数据和标签之间的映射关系.而无监督学习只有数据,没有标签,目的是学习数据额隐藏结构. 2. 生成模型(Generative Models) 已知训练数 ...

  3. cs231n spring 2017 lecture14 Reinforcement Learning 听课笔记

    (没太听明白,下次重新听) 1. 增强学习 有一个 Agent 和 Environment 交互.在 t 时刻,Agent 获知状态是 st,做出动作是 at:Environment 一方面给出 Re ...

  4. cs231n spring 2017 lecture2 Image Classification

    1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...

  5. cs231n spring 2017 lecture9 CNN Architectures

    参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...

  6. cs231n spring 2017 lecture11 Detection and Segmentation 听课笔记

    1. Semantic Segmentation 把每个像素分类到某个语义. 为了减少运算量,会先降采样再升采样.降采样一般用池化层,升采样有各种"Unpooling"." ...

  7. cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记

    1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...

  8. cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training 听课笔记

    (没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比 ...

  9. cs231n spring 2017 lecture15 Efficient Methods and Hardware for Deep Learning 听课笔记

    1. 深度学习面临的问题: 1)模型越来越大,很难在移动端部署,也很难网络更新. 2)训练时间越来越长,限制了研究人员的产量. 3)耗能太多,硬件成本昂贵. 解决的方法:联合设计算法和硬件. 计算硬件 ...

随机推荐

  1. JavScript--表单提交

    前台代码 <div > <div id="show">asdasdas</div> <form id="form"&g ...

  2. cell的复用机制

    以下全部都是转载自别人的博客:http://blog.sina.com.cn/s/blog_9c3c519b01016aqu.html 转自:http://www.2cto.com/kf/201207 ...

  3. c#创建access数据库和数据表

      由于在程序中使用了ADOX,所以先要在解决方案中引用之,方法如下: 解决方案资源管理器(项目名称)-->(右键)添加引用-->COM--> Microsoft ADO Ext. ...

  4. bat获取系统时间修改系统密码

    @echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...

  5. C#序列化总结

    贴一下自己序列化的代码: public class XMLUtil { /// <summary> /// XML & Datacontract Serialize & D ...

  6. Windows 刷新DNS缓存

    释放IP配置信息 ipconfig /release 刷新DNS ipconfig /flushdns 更新网卡适配器 ipconfig /renew

  7. 15个超强悍的CSS3圆盘时钟动画赏析

    在网页上,特别是个人博客中经常会用到时钟插件,一款个性化的时钟插件不仅可以让页面显得美观,而且可以让访客看到当前的日期和时间.今天我们给大家收集了15个超强悍的圆盘时钟动画,很多都是基于CSS3,也有 ...

  8. 【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis Nginx与Lua编写脚本的基本构建块是指令. 指令用于指定何时运行用户Lua代码以及如何使用结果. 下 ...

  9. Netty对Protocol Buffer的支持(七)

    Netty对Protocol Buffer的支持(七) 一.简介 在上一篇博文中笔者已经介绍了google的Protocol Buffer的使用,那么本文笔者就开始介绍netty对Protocol B ...

  10. Spring异常处理@ExceptionHandler

    最近学习Spring时,认识到Spring异常处理的强大.之前处理工程异常,代码中最常见的就是try-catch-finally,有时一个try,多个catch,覆盖了核心业务逻辑: try{ ... ...