根据 Stanford CS131 课程写的笔记(大部分为 note 翻译),英语水平一般,如有错误请评论指正
Lecture 11 Object Recognition
Mean-Shift
一种通过分析密度方程检测它局部最大值的模式寻找 (mode-seeking) 技术。
Optimizations
为了提高算法速度,需要平移窗或减少窗的数量。使用吸引盆 (basin of attraction) 方法达成。
Parallelization 移动不同窗口的计算是独立的,可以被分割给多个不同的处理器平行运算。因此可以在没有损失精度的前提下,平行计算提高速度。
Basin of Attraction 因为靠近窗移动路径和停止位置的点很可能被包含进同一集群,所以我们在初始化时就加入这些点,以减少计算时间。
方法:
在移动完窗的停止点,将半径 内的所有点加入。因为停止点密度较大。
将窗移位路径上,所有半径在 内的点加入。因为窗是往密度大的地区移动的。
需要权衡 和 值,因为值越小,越少附近点被加入,计算量增加。但值小也减少了错误率,提高了精度。
Technical Details
为了正确移动窗,我们需要确定一个有最高密度的邻近地区,来计算移动向量。这里我们使用多变量核密度估计 (the multivariate kernel density estimate),是估计一个随机变量的概率密度函数的方法。
给定
个数据点
,使用径向对称核 (radially symmetric kernel)
,多变量核密度估计被定义为:
其中, 是带宽 (bandwidth) 参数,定义了核的半径。径向对称核 定义为
其中, 代表标准化常数。
选择合适的 对精确密度估计十分重要。 过小导致半径过小,使得数据受到噪音影响。 过大导致包括太多偏远点,集群数减少。
多变量核密度估计的导数为
其中 ,代表被选择的核剖面的导数。
第一项 ,与 的密度估计成正比。第二项 ,是指向最大密度的均值 - 偏移矢量。
Mean-shift Procedure
对于给定的点 ,执行以下步骤找到集群中心。
计算均值 - 偏移矢量 (公式 (13) 的第二项):
用均值 - 偏移矢量转换密度窗:
重复以上两步,直到收敛
Kernel Functions
是一个非负函数,在 的所有值上相加为 1。这些要求保证了核密度评估会产生概率密度函数。
常用的核函数有:
均匀(矩形)
高斯
Epanechnikov(抛物线)
Mean-Shift Conclusions
优点:
- 非常普遍,可以独立应用。
- 均值 - 偏移对数据集群形状无要求
- 只需要一个因子定义窗的大小。如果需要应用吸引盆,则加上 和 因子。
- 找到可变数量的模式。分布函数的模式是局部最大值,这些局部最大值的位置就是集群中心。
- 对异常值有强健性。如果异常值与其他点的距离大于窗大小,均值 - 偏移不会将异常值强制加入已有的集群。
缺点:
- 输出取决于窗大小,但不容易定义合适的窗大小。
- 计算量相对来说较大
- 不能很好的拓展特征空间的维度
Object recognition
Object recognition tasks
物体识别可以被分为数个不同的视觉识别任务
Classification 分类任务是让计算机基于物品目录给物体标记标签。专注于 “图像内是否有特定物品?”
Image search 搜索包含特定物体的图像
Organizing photo collections 物体识别可以基于图像位置、活动相似性、人物等等来帮助组织图像。
Detection 专注于 “这个特定物体在图像的哪个位置?” 传统探测方法只把物体在图像上框出。
但结合图像分割技术,物体也可被更准确的选出(即标出物体轮廓),被称作准确定位 (accurate localization)。
检测也可以用于寻找几何和语义特征。例如:物体之间的距离;图像拍摄物体的角度
Single Instance Recognition 单一实例识别寻求识别图像上特定的物体或地标,而不是通常的物体大类。例如:寻找金毛犬,而不只是识别出狗;寻找某品牌的麦片
Activity or event recognition 活动或事件识别用于检测图中发生了什么事,例如:图中场景是否发生在婚礼上。
Challenges
Category numbers 目前最好的识别方法只能分类 1000 种物体,检测 200 种物体,远低于人类识别物体数量。
Viewpoint variation 看物体视角不同
Illumination 不同程度的光照,会导致阴影、物体细节被遮挡
Scale 一个类下的物体大小多变,不能只识别一个大小。一种解决方法是取得包含多种大小变化的数据集。
Deformation 同一物体可能有各种看起来不同的形态。例如:人的不同姿势。
Occlusion 物体可能被遮挡,导致部分几何特征被隐藏。
Background cluster 由于背景相似,导致物体难以被识别,或者导致物体与同类看起来很不一样。
Intra-class variation 一类物体可能有很不同的形状。例如:沙发、板凳都属于椅子类。
K-nearest neighbors
Supervised learning
目标:用已有的数据集找到以下方程:
其中, 是输出, 是预测函数, 是图像的特征集。
监督学习分训练与测试两个阶段。在第一阶段,使 与训练集 相符。 可以用最小化预测误差来评估,即 与 之间的差异。
在第二阶段,我们用测试集评估方程 。
任意决策规则将输入空间划分为由决策边界分割的决策区域。
Nearest neighbor classifier
最近邻分类器是基于最近的邻居给物体分类的算法。将测试点标记为最近邻居的标签。
最近邻居通过特征间的欧几里德距离找到。设
和
分别是训练集中的第
和第
个数据点,则距离方程为:
最近邻分类器的定义允许在训练集中的每个数据点周围形成复杂的决策边界。
K-nearest neighbors classifier
K - 最近邻分类器:计算 K 个最近的邻居,然后通过在最近邻集上计算一个分数,来标记新物体。常用的方法是用大多数邻居属于的类标记新物体。启发法被用于打破联系,并根据最有效的方法进行评估。
例子:下图中”+” 为待标记的数据,根据绿圈内的五个邻居占大多数的,这个点将被标记为绿”O”。
Pros of using k-nearest neighbors
- K-NN 算法简单,值得作为第一个尝试的模型。
- K-NN 决策边界灵活
- 当有无限样本时,1-NN 被证明误差最多是贝叶斯最优误差的两倍。
Problems with K-NN
Choosing the value of K
若 值过小,算法会对噪音点过敏感。如果 值过大,邻居会包括过多的其他类点,精度下降。随着 的增加,决策边界也会更加平滑。
Solution: 交叉验证
从训练集中分离出交叉验证集。用不同的 在训练集上训练,在交叉验证集上验证。最后选择在交叉验证集上精度最高的 ,用于测试集。
Euclidean measurement
欧几里德测量可能会得出反直觉的结果。例如:
Solution 标准化
将向量标准化至单位长度。
Curse of dimensionality
当维数增长,K-NN 算法会越来越慢。这代表我们需要更多的实例用于训练。
目前尚未有最佳的方法解决维数灾难。
Problem: 假设有 5000 个点均匀分布在单位超立方体中,我们想要应用 5-NN 算法,假设我们的查询点在原点:
- 在 1 维,我们平均需要走过 距离,来捕捉 5-NN
- 在 2 维,我们平均需要走过 距离,得到一个包含 0.001 体积的正方形。
- 在 维,我们需要
Note: K-NN 只是众多分类器中的一种。
Bias-variance trade-off
减少泛化误差的关键是找到正确数量 / 类型的参数。泛化误差有两种:偏差 (bias)、方差 (variance)。偏差:在训练集上平均模型与训练模型有多少不同?方差:不同训练集的模型估计有多少不同?
我们需要在方差与偏差间找到平衡点。太少参数的模型因为高偏差(不灵活);太多参数的模型因为高方差(对样本过于敏感),而导致精确低。非正确拟合类型如下:
Underfitting: 模型过于 “简单”,无法表示所有相关特征
- 高偏差低方差
- 高训练、高测试误差
Overfitting: 模型过于 “复杂”,对数据中不相关的特征(噪音)进行了拟合。
- 低偏差高方差
- 高训练、高测试误差