计算机视觉学习--分类算法&损失函数&优化

先解释下为什么前缀有一个图像分类,是因为几乎所有的图像识别任务中,图像分类是一个基础功能,不分好类,何谈后续的处理。

图像识别面对的挑战有:光线的变化,图像形变,图像遮挡,背景干扰等。。。。

能想到的最简单的分类器是K-NN分类器,步骤如下:

将当前图片和样本图片一一相减,在相加,取绝对值。

按照距离排序(L1距离,L2距离)

选取与距离最小的K个图像

判断这K个图像属于哪个类别数目最多

从步骤可以看出KNN的准确率依赖两个超参数,K,和距离的选择。经过很多测试K=7是最合适的。

这种方法,计算量大,错误率很高,所以在人脸识别领域,一般不采用这个方法。所有都是采用的线性分类器

如图所示:

计算机视觉学习--分类算法&损失函数&优化_第1张图片

F(x,w)是一个线性函数模型,x是输入图像,w是权重参数,W的行数取决于几分类,列数取决于图像的特征个数。w的每一行点乘图像。w的每一行决定了这个类别的得分值。但是我们寻找一个合适的W参数,来使得得分值才对应类别最高。所以要有一个损失函数来惩罚W权重参数。

这里介绍两种损失函数。如图所示:

计算机视觉学习--分类算法&损失函数&优化_第2张图片

这两种损失函数的都能正常使用,区别就是SVM不如softmax精细,这是由它的的函数特性决定的。一般使用第二种。

现在我们有了

1 数据(x,y) 2 得分函数   3 损失函数

所以接下来要想办法利用以上值来优化算法,具体步骤如下:

计算机视觉学习--分类算法&损失函数&优化_第3张图片

 

梯度说白了就是损失函数L对W求导得到的导数值,但因为w本来就含有多个变量,多以求导结果也是一个向量,导数的本身含义就是当自变量变化一个单位时,因变量会跟随变化多少,在我们的例子中,梯度向量dw中的每一个值代表的是,当权重变量变化0.0001的时候,损失函数值会变化多少。具体的计算过程参照上图,因为对于W中的每一个权重变量都要计算一次损失函数,可想而知。计算量是巨大的。所以我们会使用解析梯度计算。

解析梯度的核心是:

计算机视觉学习--分类算法&损失函数&优化_第4张图片

在运用这个chain rule 之前,我们回忆下前面提到过的得分函数:

而我们知道,在softmax分类器中,得分值需要转化成概率值,损失函数的值就是正确类别的分值对应的 负对数:

计算机视觉学习--分类算法&损失函数&优化_第5张图片

式子中K表示某个特定的类别,i是任意图像i.

运用链式法则,我们想要得到的无非是下面这个表达式:

计算机视觉学习--分类算法&损失函数&优化_第6张图片

 计算机视觉学习--分类算法&损失函数&优化_第7张图片

 对于Pk-1 的含义可以这样理解,当我们有一个分值向量f,损失函数对这个这个分值向量的求导结果等于 分值向量里每个类别对的概率值,但除了正确的那个类别概率值,它要再减去1 例如 我们的概率向量是p=[0.2,0.3,0.5] ,第二类是正确概率,那么他的分值梯度就为df=[0.2,-0.7,0.5].

 

 

你可能感兴趣的:(计算机视觉)