文章目录

  • 分类器设计
  • 1. 线性分类器
  • 1.1 图像类型:略
  • 1.2 图像表示:大多数分类算法都要求输入**向量**
  • 1.2.1 最简单的方法
  • 1.3 分类模型
  • 1.3.1 线性分类器定义
  • 1.3.3 线性分类器的分界面
  • 1.4 损失函数
  • 1.4.1 损失函数定义
  • 1.4.3 正则项与超参数
  • 1.5 优化算法
  • 1.5.1 什么是参数优化
  • 1.5.2 各类优化算法
  • 1.6 数据集划分
  • 1.7 数据预处理


分类器设计

1. 线性分类器

知识点分布:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类

1.1 图像类型:略

1.2 图像表示:大多数分类算法都要求输入向量

1.2.1 最简单的方法

直接将图像矩阵转化成列向量

计算机视觉的分类 计算机视觉分类器构建_深度学习_02

1.3 分类模型

1.3.1 线性分类器定义

线性分类器是一种线性映射,将输入的图象特征映射为类别分数。

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_03


计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_04


通过w和b进行线性变换,给x一个分数 其中,w:d行1列

计算机视觉的分类 计算机视觉分类器构建_cv_05


第i个类的分数最高,决策结果就是第i个类例:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_06


任务即为为图片分配类别标签,以线性分类器实现。

计算机视觉的分类 计算机视觉分类器构建_deep learning_07


决策过程,单纯以权值乘图像表示,加上偏移量最终的得分高低来评判。

矩阵表示:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_08


其中,w行数由类数决定,列数由图像表示的长度决定。具体如下:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_09


1.3.2 线性分类器的权值向量:w

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_10


w其实记录了类别的信息,具体来说,就是各个类别的统计信息。

当x和w很相似时,他们的点乘值会很大(a*a相对同定义域内的两数相乘而言最大)

权值w可以看作是一种模板,输入图像与评估模板的相似程度越高,分类器输出的分数就越高

1.3.3 线性分类器的分界面

分类问题的本质就是找一些分界面把各个图像分开。

计算机视觉的分类 计算机视觉分类器构建_deep learning_11


其中,分数等于0的线就是决策面,所以分类任务学习的就是一个个的分界面,对于未知的图片,依照得分f,将其归到该得分属于的类中。 w控制线的方向,b控制着线的偏移(其实就是一个截距),箭头方向代表分类器的正方向,沿着箭头方向距离决策面越远分数就越高。

计算机视觉的分类 计算机视觉分类器构建_cv_12

1.4 损失函数

1.4.1 损失函数定义

问题:如何定量表示分类器的好坏

答:用损失函数,它搭建模型性能与模型参数之间的桥梁,指导模型参数优化。

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_13


计算机视觉的分类 计算机视觉分类器构建_deep learning_14


1.4.2 多类支撑向量机损失

计算机视觉的分类 计算机视觉分类器构建_深度学习_15


其中,Syi代表第i个样本真实类别的预测分数,+1加一个边界,是为了防止噪声产生误差。

若真实类别的的预测分数大于其他类别的预测分数,表明预测正确,损失值给定0。相反的,若对其他类别的预测分数大于真实的预测分数,则相差越大,损失值越大。

相当于样本i对每一个类(不包含真实类别)别都求了损失值,再求和,得到总的损失值,最后求平均。

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_16


图示如下(折页损失):

计算机视觉的分类 计算机视觉分类器构建_deep learning_17


例:

计算机视觉的分类 计算机视觉分类器构建_cv_18


其中,真实类与其他类得分不超过一分的情况下,一定会有损失。

计算机视觉的分类 计算机视觉分类器构建_deep learning_19

1.4.3 正则项与超参数

引入:使得L等于0的w不止一个,那么,应该在这些w中,应该选择哪一个,能够使损失函数L只有一个结果?

正则项损失:

计算机视觉的分类 计算机视觉分类器构建_深度学习_20


计算机视觉的分类 计算机视觉分类器构建_cv_21


超参数:在开始学习过程之前设置值的参数,不是学习得到的。

超参数一般都会对模型性能有着重要的影响。

以λ为例:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_22


以L2正则项为例:

计算机视觉的分类 计算机视觉分类器构建_deep learning_23


使得最后的结果(损失值)只会有一个结果,在数据损失相同的情况下取正则损失小的。

L2正则损失对大数值权值进行惩罚,喜欢分散权值,鼓励分类器将所有维度的特征都用起来,而不是强烈地依赖其中少数的几维特征。

得出结论,1.正则项让模型有了偏好。

2.正则项让解唯一。

(更重要的功能是防止过拟合,本章还没讲到,只提了一下)

其余正则项:

计算机视觉的分类 计算机视觉分类器构建_deep learning_24

1.5 优化算法

1.5.1 什么是参数优化

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_25

1.5.2 各类优化算法

1.直接方法

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_26


但L形式通常比较复杂,很难直接求出w。

2.梯度下降算法(一种简单又高效的迭代优化算法):

往哪走:负梯度方向

走多远:由步长决定(学习率)

算法伪代码:

第一步:

计算机视觉的分类 计算机视觉分类器构建_cv_27


之后每一步:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_28


梯度计算:

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_29


(计算量大,不精确)

那数值梯度有什么用?

答:求梯度时一般使用解析梯度,数值梯度主要用于解析梯度的正确性校验。

计算机视觉的分类 计算机视觉分类器构建_deep learning_30


(精确,速度快,导数函数推导易错)例:

计算机视觉的分类 计算机视觉分类器构建_deep learning_31


效率分析:

当n很大时,权值的计算量很大。

解决方法:

2. 随机梯度下降算法,每次随机选择一个样本Xi,计算梯度并更新梯度。

虽然单个样本的训练可能会带来很多噪声,不是每次迭代都朝着最优化方向,但是大部分样本会朝着最优化方向迭代,所以整体依旧是朝着最优化方向。

3.小批量梯度下降法

每次随机选择m(批量的大小)个样本,计算损失并更新梯度

计算机视觉的分类 计算机视觉分类器构建_深度学习_32


其中,通常使用2的幂数作为批量大小,例如32、64或128个样本4.总结

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_33

1.6 数据集划分

1. 理想划分

计算机视觉的分类 计算机视觉分类器构建_cv_34


问题:

如果模型含有超参数(比如正则化强度),如何找到泛化能力最强的超参数?

答:

使用验证集

2.真实划分

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_35


计算机视觉的分类 计算机视觉分类器构建_计算机视觉_36


问题:如果数据很少,那么验证集包含的样本就很少,从而无法在统计上代表数据。答:K折交叉验证

计算机视觉的分类 计算机视觉分类器构建_cv_37


保证不会因为验证集里面的数据出现偏颇,导致验证集给出的精度不准确。

计算机视觉的分类 计算机视觉分类器构建_计算机视觉的分类_38


该验证的随机性会更好一些。

1.7 数据预处理

问题:数据能否直接使用,有哪些处理方式?

计算机视觉的分类 计算机视觉分类器构建_计算机视觉_39


归一化:将各个轴归一到相同的量纲(去均值和归一化用的更多)

计算机视觉的分类 计算机视觉分类器构建_深度学习_40