Just 做 IT

求知若饥 虚心若愚 안년하세요 (•‾̑⌣‾̑•)

深度学习-邻近分类

1 year ago 0

邻近分类

图像分类:计算机视觉核心任务
图片组成:一张图片被表示成三维数组的形式,每个像素值:0-255 例如:300*100*3
挑战:拍摄角度、光照强度、形状的改变、部分遮蔽、背景混入、
常规套路:
1.收集数据并给定标签
2.训练一个分类器
3.测试、评估

def train(train_images, tran_labels):
    #build a model for images -> labels...
    #记录所有训练数据和他们的标签
    return model

def predict(model, test_images):
    #predict test_labels using the model...
    #测试数据被赋予和它最相似的标签
    return test_labels

K最近邻分类(邻近分类):
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

数据库样例:CIFAR-10
10类标签
50000个训练数据
10000个测试数据
大小均为32*32
如何计算呢?
曼哈顿距离.
把所有值|相减|然后再求和
dl distance
最邻近代码
问题:测试集越大速度越慢
关注:速度&准确度
距离: L1(曼哈顿距离)、L2(欧式距离)...

K 距离:最邻近K个,按占大比例来归类
超参数:对K的选择,对结果有重大的影响,例如:最相近的3个,最相近的5个...这些参数的选择对结果有重大的影响,我们把这些参数就叫做超参数
问题:
1.对于距离如何设定?
2.对于K近邻的,如何确定K?
3.如果有的话,其他的超参数该怎么设定?当算法复杂读提升的时候,超参数远不止这两种

找到最好的参数之误区:不能拿测试数据来拟合我们的参数
错误的找参数方法

测试结果:
保持测试数据不动,分块,交叉验证训练集,来调节参数
测试结果
1. 1234做测试 5来做验证.
2. 2345做测试 1来做验证.
....

事实:
k近邻在图像分类上从来不用.
原因:原始图经过 origin、shifted、messed up、darkness 变换、
不同的变换和原图具有相同的L2距离


总结:
1.要做什么?挑战?
2.如何衡量相似度?
3.数据如何划分?

Write a Comment