[基础]斯坦福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授权翻译.本篇教程由杜客翻译完成,堃堃和李艺颖进行校对修改.译文含公式 ...
随机推荐
- ScratchJr是什么,有什么作用
什么是ScratchJr? ScratchJr是一个入门级的编程语言,可以让5到7岁的小朋友去创建他们的互动故事和游戏.孩子们使用图形化的程序积木让角色移动.跳跃.舞蹈.唱歌.孩子们可以利用绘图编辑器 ...
- 28.Java基础_抽象类
抽象类的成员特点 public abstract class Animal { private String name; private int age; public Animal() { } pu ...
- Node.js Koa2开发微信小程序服务端
1.promise.async.await const Koa = require('koa') const app = new Koa() // 应用程序对象 有很多中间件 // 发送HTTP KO ...
- Vue 中的 子组件 给 父组件 传值
子组件的某一个事件(sendData)内部,通过this.$emit('事件名', 传递的值)传递数据父组件在调用子组件的地方,绑定了子组件自定义的 事件名(change-data) 定义父组件的地方 ...
- LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理
问题描述 LG4111 题解 矩阵树定理板子题. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #defin ...
- Aug.2019_Memory
转眼间这半个月的时光已经过去了,现在就像妈说的,生活又要回归正常了.尽管我一直不愿意去承认说前半个月的时光是一种不正常的生活,但有一点是我无法否认的,那就是那些人和那些事所带给我的…… 想想最初自己也 ...
- python数据分析教程大全
第一篇:Anaconda安装和使用 第二篇:Jupyter norebook使用 第三篇:pandas教程 第四篇:numpy教程 第五篇:Matplotlib教程 第六篇:实战项目 期待吗?(微笑脸 ...
- Paper | Toward Convolutional Blind Denoising of Real Photographs
目录 故事背景 建模现实噪声 CBDNet 非对称损失 数据库 实验 发表在2019 CVPR. 摘要 While deep convolutional neural networks (CNNs) ...
- 小白专场-FileTransfer-python语言实现
目录 更新.更全的<数据结构与算法>的更新网站,更有python.go.人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11407287.h ...
- Oracle 存储过程包(Package、Package Body)
初出茅庐,不知原来存储过程还可以写得如此复杂,而且还竟然可以调试! 好吧,得整理一下存储过程的一些语法,以备以后用到时可以查阅. 使用数据库:Oracle 数据库工具:PL/SQL Developer ...