[基础]斯坦福cs231n课程视频笔记(一) 图片分类之使用线性分类器
线性分类器的基本模型: f = Wx
Loss Function and Optimization
1. LossFunction
衡量在当前的模型(参数矩阵W)的效果好坏
Multiclass SVM Loss:
Hinge Loss
样本 \(i\) 的损失:\(L_i = \sum_{j \neq y_i} \max(0, s_j-s_{y_i}+1)\), \(y_i\) 是样本 \(i\) 的正确标签. 损失取值范围是0~正无穷
- 当网络初始化的时候,参数随机初始化为比较小的值,输出 即属于各个类别的概率可能差不多(\(s_j \approx s_{y_i}\)) ,且值也比较小,因此单个样本的损失应为C-1 (C为类别总数)这个规律便于调试:如果一开始跑网络的时候得到的损失不符合以上规律 则可能代码有问题
- 另一个trick,是在损失函数中max项的基础上再求平方,这样能够加大对判断失误的惩罚。不过这和原本的hinge loss不一样,具有非线性。
Softmax Classifier(Multinomial Logistic Regression)
原本分类器得到的分数是没有实际意义的,得分可以粗略认为只是模型的输出。
HingeLoss关心的只是:对于一个样本分类到各个类别的得分中,在真实类别的得分应该比其他类别的得分要高,从而loss更小;而Softmax将这些分数转换成概率,从原本的"分类到各个类别的得分"转换成"分类到各个类别的概率",从而得到概率分布 \(P(Y=C_i|X=X_i)\),\(X_i\)为该样本,\(C_i\)为各个类别,而target probability distribution是只有在真实类别的概率值为1,其余类别为0
假设该样本要分到四类中的一类,其真实类别是第一类
期望得到的概率分布是:\([1,0,0,0]\), Softmax算出的概率分布是:\([0.4, 0.4, 0.15, 0.05]\) ,
则损失函数为:最大化对数似然函数
\(L_i=-\sum_ky_k \cdot \log P(Y=y_k|X=X_i) =-\log P(Y=Y_i|X=X_i)\),
\(Y_i\)是该样本的真实类别, \(y_k\) 取0或1,即类别标签使用one-hot编码。
另一个角度也可以理解成计算这两个概率分布的距离(KL散度or交叉熵)
损失的最小可能取值是0,最大取值是正无穷:损失为0,要求原本的分数中,真实类别的分数为正无穷,其他类别的分数都为负无穷;损失为正无穷,要求原本的分数中,真实类别的分数为负无穷。这些都是实际运算达不到的,所以损失的最小值只能理论上取到0。
当网络初始化的时候,所有分数的取值都几乎相同且都接近0,则得到的损失值大约为log(1/C), C为类别总数. 当W很小时, scores=X.dot(W)约等于0,对应的\(e^{scores}\)=1,归一化后变成1/C
https://zhuanlan.zhihu.com/p/29376573 在具体实现Softmax时需要注意的地方 为了解决计算机中位数的overflow 通过引入一个常数偏移来调整
https://zhuanlan.zhihu.com/p/25723112 softmax的求导
正则项,用于防止过拟合,避免模型为了在训练数据上表现好而过于复杂 不能适应于新的测试数据,【设计一个模型,最终关心的其实是在测试数据上的表现!】
L2范数,类似欧式norm,倾向于更稠密且取值更小的参数矩阵
L1范数,恰好相反,倾向于更稀疏的参数矩阵
2.Optimization
如何得到更好的参数矩阵W
梯度下降,及其变种
Linear Classification VS ConvNet
从提取特征的角度看它们的区别:
- Linear Classification
- 最开始是直接将图像像素作为线性模型的输入,计算output=Wx,但是存在局限性
- 改用特征表示 feature representation,即人为定义一些特征,然后将图像用这些特征来代表,再输入到分类器。简单列举常用的一些特征:
- 直方图 color histogram 统计整幅图中各个灰度级的出现次数
- HoG Histogram of Oriented Gradients 统计整幅图中各个小区域的edge direction [gradient]
- bag of words 根据一系列图像构建一个codebook of visual words, [随机选取图像的patch然后聚类得到],再通过codebook里的word来编码图像 将图像用图中含有的word及其出现次数来表示
- 需要注意的是,这些传统的方法在训练模型时只会改变参数,而不会改变特征【特征已经提前计算好了 可以这样理解:假设原图是x,通过z=g(x)提取特征,然后再输入到分类器 f = Wz,训练过程中改变的只有W 】
- ConvNet
- 将多层卷积层堆叠起来,可以认为每一层卷积层都是提取特征的过程,在训练时整个网络一起被训练(所有层的参数都会被调整)
- 个人粗略猜测:是不是可以认为 layer1_output = W1* x, layer2_output=W2 * (layer1_output), layer3_output=W3 * (layer2_output) 类推...因此用卷积网络时特征并不是已经人为规定好的,而是从数据中学习到的?
[基础]斯坦福cs231n课程视频笔记(一) 图片分类之使用线性分类器的更多相关文章
- [基础]斯坦福cs231n课程视频笔记(三) 训练神经网络
目录 training Neural Network Activation function sigmoid ReLU Preprocessing Batch Normalization 权重初始化 ...
- [基础]斯坦福cs231n课程视频笔记(二) 神经网络的介绍
目录 Introduction to Neural Networks BP Nerual Network Convolutional Neural Network Introduction to Ne ...
- 转:深度学习斯坦福cs231n 课程笔记
http://blog.csdn.net/dinosoft/article/details/51813615 前言 对于深度学习,新手我推荐先看UFLDL,不做assignment的话,一两个晚上就可 ...
- CS231n课程笔记翻译9:卷积神经网络笔记
译者注:本文翻译自斯坦福CS231n课程笔记ConvNet notes,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客和猴子翻译完成,堃堃和李艺颖进行校对修改. 原文如下 内容列 ...
- CS231n课程笔记翻译2:图像分类笔记
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记image classification notes,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客翻译完成.Shiqin ...
- CS231n课程笔记翻译8:神经网络笔记 part3
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Neural Nets notes 3,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和巩子嘉进行校对修改.译文含 ...
- CS231n课程笔记翻译7:神经网络笔记 part2
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Neural Nets notes 2,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃进行校对修改.译文含公式和代 ...
- CS231n课程笔记翻译5:反向传播笔记
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Backprop Note,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和巩子嘉进行校对修改.译文含公式和代码, ...
- CS231n课程笔记翻译4:最优化笔记
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Optimization Note,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和李艺颖进行校对修改.译文含公式 ...
随机推荐
- Vuex简介
一. 什么是Vuex? Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...
- excel工资表,转化为word工资单
1.新建excel表,.xls格式; .xlsx格式的添加到word中会报错‘无法打开数据源’(office 2007): 2.新建word文档.docx格式: 3.邮件——开始邮件合并——信函,选择 ...
- 再次体会wireshark的威力!
今天一位同学给我打电话,说是重启了客户机房里的一台服务器A,重启之后此台服务器不能与B服务器通信了,要命的是A台服务器上有关键数据需要与B服务器进行通信交互.客户大发雷霆,同学的老板也发火一再催促要尽 ...
- python多版本共存pip指向问题
这两天一致被一个问题困扰,电脑里装了anaconda和python3.7,在命令行里输入python,想要python3.7,出现的确实python3.6,或使用pip安装包时,不知道是装在里pyth ...
- 浅谈this指向问题
链接地址:https://www.jianshu.com/p/34572435b5d0
- vue阻止事件冒泡和默认事件
本文地址:https://www.cnblogs.com/guomin/p/9273862.html 原生js取消事件冒泡 try{ e.stopPropagation();//非IE浏览器 } ca ...
- 第十周计划周二&周三计划
今天又一次被导师训了,怎么也达不到他的要求,好像我俩不在一条线上.所以现在重新整理一遍思路,继续走. 我认为重点还是主题追踪这一块,但是主题追踪的结果以及显示是个问题,目前还是打算做出来当天最热的前几 ...
- Reat学习笔记4
相信很多初学react的朋友在研究组件的路由配置问题时都很困扰,我也是折腾了半天才搞明白的. 一般情况下路由配置包含path和component两个信息: component顾名思义是组件的意思,指的 ...
- pycharm配置docker
- 数据仓库004 - 复习Linux shell命令 - vi 进程 端口号 系统命令 高危命令 wget yum rpm压缩
一.复习 1.vi的使用方法: 1.1 .正常编辑一个文件,保存退出 1.2. 粘贴的坑:必须在i键 编辑模式 2.找error cat xxx.log | grep -C 10 ERROR > ...