:线性分类)
1. 从 k-NN 到参数化分类图像分类的目标是建立从输入图像到类别标签的映射。k-NN 依靠整个训练集完成分类因此存在两个问题必须保存全部训练数据存储开销会随着训练集规模增大。预测时需要将输入图像与训练图像逐一比较计算开销也会随着训练集规模增大。为了避免预测过程直接依赖整个训练集可以使用参数化分类方法使用一个由参数控制的得分函数将输入图像映射为各个类别的得分。训练完成后分类所需的信息保存在函数参数中。模型的存储和预测开销主要取决于得分函数的结构与参数数量不再直接取决于训练集规模。得分函数接收一张输入图像并计算它在各个类别上的得分。分类器通常选择得分最高的类别作为预测结果。为了判断参数是否合理需要使用**损失函数Loss Function**衡量预测得分与真实标签之间的不一致程度损失越小说明预测结果与真实标签越一致。损失越大说明预测结果与真实标签越不一致。因此模型训练可以转化为一个优化问题不断调整得分函数的参数使训练数据上的损失尽可能小从而学习到合理的分类映射。2. 线性分类器的得分函数线性分类器使用线性函数计算类别得分f(xi,W,b)Wxib f(x_i,W,b)Wx_ibf(xi,W,b)Wxib其中xix_ixi第iii张输入图像。计算前需要将图像的所有像素展开为一个列向量。WWW权重矩阵。bbb偏置向量。f(xi,W,b)f(x_i,W,b)f(xi,W,b)图像在各个类别上的得分。WWW和bbb是模型需要学习和调整的参数。训练的目标是找到合适的WWW和bbb使训练集中每张图像在正确类别上的得分高于错误类别。与 k-NN 相比线性分类器具有以下优势训练完成后分类信息保存在参数WWW和bbb中不再需要保存整个训练集。对新图像进行预测时只需要完成一次矩阵乘法和一次加法。不需要将测试图像与所有训练图像逐一比较因此预测速度更快。3. 权重矩阵的模板匹配解释线性分类器会对输入图像的所有像素值进行加权求和从而计算图像属于每个类别的得分。权重矩阵WWW可以解释为一组由训练得到的类别模板WWW的每一行对应一个类别模板。每一行分别与输入向量xix_ixi做内积得到对应类别的得分。输入图像与某个模板的内积越大说明该模板给出的匹配得分越高。训练过程通过调整WWW使每一行逐渐学习到对应类别的代表性特征。4. 偏置的作用偏置bbb为每个类别提供一个与输入无关的得分调整量使分类边界不必经过原点从而提高线性模型的表达能力。线性得分函数会在输入空间中形成线性分类边界在二维空间中分类边界表现为直线。在高维空间中分类边界表现为超平面。如果没有偏置bbb当xi0x_i0xi0时无论WWW取什么值所有类别的得分都只能为 0因此分类边界会被限制为必须经过原点。加入偏置后分类边界可以在保持方向不变的情况下发生平移从而扩大线性分类器能够表示的分类边界范围。为了避免分别维护WWW和bbb可以给输入向量xix_ixi追加一个恒为 1 的维度并将bbb合并为WWW的最后一列。此时得分函数可以简写为f(xi,W)Wxi f(x_i,W)Wx_if(xi,W)Wxi5. 损失函数损失函数也叫代价函数或目标函数用于衡量模型预测结果与真实标签之间的差异。完整的损失通常由两部分组成LossData LossRegularization Loss LossData\ LossRegularization\ LossLossDataLossRegularizationLoss5.1 数据损失数据损失Data Loss衡量模型的预测结果与真实标签之间的差异。5.2 正则化损失仅仅降低数据损失通常不能唯一确定一组权重WWW。可能存在多组不同的参数都能得到相同或相近的数据损失。因此需要引入正则化损失Regularization Loss对不同的WWW施加额外的评价标准使模型在多组可行参数中偏向选择我们期望的参数。6. L2 正则化L2 正则化将WWW中的所有参数逐元素平方后求和R(W)∑k∑lWk,l2 R(W)\sum_k\sum_l W_{k,l}^2R(W)k∑l∑Wk,l2它的主要作用包括抑制WWW中出现绝对值过大的参数降低模型过度依赖某些输入特征的可能性。在预测结果相近的情况下更偏向选择权重较小、影响更加分散的参数。让多个特征分别对结果产生较小影响而不是让模型的判断过度集中在少数特征上。降低过拟合风险提高模型在训练集之外的数据上的泛化能力。加入正则化后的损失函数为LData LossλR(W) LData\ Loss\lambda R(W)LDataLossλR(W)其中λ\lambdaλ用于控制正则化损失对总损失的影响程度。7. Softmax 分类器线性得分函数输出的是各类别的原始得分。Softmax 函数可以将这些得分转换为 0 到 1 之间、并且总和为 1 的值Pjefj∑kefk P_j\frac{e^{f_j}}{\sum_k e^{f_k}}Pj∑kefkefj其中fjf_jfj第jjj个类别的原始得分。PjP_jPj输入图像属于第jjj个类别的预测概率。Softmax 函数的作用就是将线性变换得到的类别得分转换为各类别对应的预测概率。因此从图片输入到计算损失的过程可以表示为输入图像 xi→线性函数 f(xi,W,b)Wxib→类别得分 f→Softmax→类别概率 P→损失函数 Li \text{输入图像 }x_i \rightarrow \text{线性函数 }f(x_i,W,b)Wx_ib \rightarrow \text{类别得分 }f \rightarrow \text{Softmax} \rightarrow \text{类别概率 }P \rightarrow \text{损失函数 }L_i输入图像xi→线性函数f(xi,W,b)Wxib→类别得分f→Softmax→类别概率P→损失函数Li线性函数负责将输入图像映射为各个类别的得分Softmax 负责将类别得分转换为概率损失函数再根据真实类别对应的概率评价当前参数是否合理。8. 交叉熵损失Softmax 分类器通常使用交叉熵损失Cross-Entropy Loss。对于单个样本其损失为Li−logP(yi∣xi;W) L_i-\log P(y_i\mid x_i;W)Li−logP(yi∣xi;W)将 Softmax 得到的真实类别概率代入后单个样本的交叉熵损失可以完整地写为Li−log(efyi∑jefj) L_i-\log\left(\frac{e^{f_{y_i}}}{\sum_j e^{f_j}}\right)Li−log(∑jefjefyi)其中P(yi∣xi;W)P(y_i\mid x_i;W)P(yi∣xi;W)表示模型为输入xix_ixi的真实类别yiy_iyi分配的预测概率。真实类别对应的预测概率越高交叉熵损失越小。真实类别对应的预测概率越低交叉熵损失越大。整个训练集的平均交叉熵损失为Cross Entropy Loss1N∑iLi Cross\ Entropy\ Loss\frac{1}{N}\sum_i L_iCrossEntropyLossN1i∑Li加入 L2 正则化后Softmax 分类器的完整损失为LossCross Entropy LossλR(W) LossCross\ Entropy\ Loss\lambda R(W)LossCrossEntropyLossλR(W)因此Softmax 分类器在整个训练集上的完整损失函数为L1N∑i1N[−log(efyi∑jefj)]λR(W) L \frac{1}{N}\sum_{i1}^{N} \left[ -\log\left(\frac{e^{f_{y_i}}}{\sum_j e^{f_j}}\right) \right] \lambda R(W)LN1i1∑N[−log(∑jefjefyi)]λR(W)9. 总结线性分类器的完整流程可以概括为输入图像→线性得分 (Wxb)→Softmax 概率→交叉熵损失→加入正则化→优化参数 \text{输入图像} \rightarrow \text{线性得分 }(Wxb) \rightarrow \text{Softmax 概率} \rightarrow \text{交叉熵损失} \rightarrow \text{加入正则化} \rightarrow \text{优化参数}输入图像→线性得分(Wxb)→Softmax概率→交叉熵损失→加入正则化→优化参数线性分类器将训练数据中的分类信息保存在参数WWW和bbb中。训练过程通过最小化数据损失和正则化损失寻找能够较好完成分类并具有一定泛化能力的参数。