[基础]斯坦福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授权翻译.本篇教程由杜客翻译完成,堃堃和李艺颖进行校对修改.译文含公式 ...
随机推荐
- 修改Tooltip 文字提示 的背景色 箭头颜色
3==>vue 鼠标右击<div @contextmenu.prevent="mouseRightClick">prevent是阻止鼠标的默认事件 4==> ...
- vue.nextTick()方法的使用详解
什么是Vue.nextTick()?? 定义:在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 所以就衍生出了这个获取更新后的DOM的Vue方法 ...
- linux学习(六)文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Linux中我们可 ...
- Host '10.133.3.34' is not allowed to connect to this MySQL server mysql 本地拒接连接
mysql 本地拒接连接 解决方案是,把mysql库中的user表的host 改成% 运行所电脑连接 也可以把第一行复制一遍 把localhost改成你要连接电脑的ip(推荐这改,这样安全一点) 改 ...
- oracle 周岁年龄计算
以下三种方法均可实现周岁年龄的计算: --算法一: SELECT TRUNC(months_between(sysdate, csrq)/12) AS "Age" FROM wrx ...
- Ubuntu下的录GIF神器——Peek
最近一直在找Ubuntu下面录GIF好用方便的软件一直没找到,很多都是要获取录屏四角的坐标,现在终于找到了,就是我们的录GIF神器——Peek. 1 获取Peek的ppa源 sudo add-apt- ...
- C++ string push_back()
函数功能: 在后面添加一项 vector头文件的push_back函数,在vector类中作用为在vector尾部加入一个数据.string中的push_back函数,作用是字符串之后插入一个字符. ...
- flask-windows部署
由于supervisor不支持windows,但要防止程序异常中断,所以需要采取措施 通过pywin32,使得flask以服务的方式运行 创建pythonservice.py import win32 ...
- word设置标题1,标题2,标题3项目编号联动
word经常要按层级显示标题,并且标题样式之间要联动 如: 设置办法: word内鼠标右键 2.选择项目符号和编号 3.选择一个样式并自定义 将级别链接到样式.选择对应标题样式即可实现联动.
- win10 配置python3虚拟环境
1.安装virtualenv pip install virtaulenv 2.创建虚拟环境 env03 virtualenv env03 3.切换到进入虚拟换环境脚本目录(activate) cd ...