线性分类器 Linear Classifier
2. 线性分类器 Linear Classifier
2.1 评分函数 Score Function
评分函数(score function) 是\(\mathbb{R}^D \to \mathbb{R}^C\)的线性映射,即一张图片在每个标签上所得到的评分: \[ f(x, W) = Wx+b, x\in \mathbb{R}^D, W\in \mathbb{R}^{C\times D}, b\in \mathbb{R}^D \]
式中\(x\)是将图像数据拉长(flatten)得到的\(D\)维列向量,\(W\)是参数(parameter) 或称权重(weight) ,\(b\)为偏差向量(bias vector)
\(C\)为待分类的标签个数,\(f(x,W)\)即为该图像对于每个标签的评分
2.2 损失函数 Loss Function
损失函数(loss funtion) 量化了线性分类器的效果,其值越高,则线性分类器效果越差,又被称为目标函数(objective function)、代价函数(cost function)
对于一个数据集: \[ \{(x_i, y_i)\}_{i=1}^N \] 式中\(x_i\)是图像,\(y_i\)是该图像对应的正确标签
则对于单个的一张图像的损失为: \[ L_i(f(x_i, W), y_i) \] 对于数据集来说,损失是每张图像损失的平均值: \[ L=\frac1N\sum_iL_i(f(x_i,W),y_i) \] \(L_i\)即为损失函数
2.3 多类支持向量机损失 Multiclass SVM Loss
朴素的想法是,正确的标签的评分应当比其他标签的评分要高
所以,对于给定的一张图像\(x_i, y_i\),其评分\(s=f(x_i, W)\),则SVM损失有如下形式: \[ L_i = \sum_{j\neq y_i}\max(0,s_j-s_{y_i}+1) \] 当评分均为很小的随机值时,损失应当接近\(C-1\),\(C\)为待分类的总标签数,此性质可作为debug的依据
2.4 正则化 Regularization
使上述的损失\(L\)最小的\(W\)并不唯一
若\(W\)可使损失\(L\)最小,则\(\lambda W\)也可使\(L\)最小
于是,我们在损失函数的表达式中引入一项\(\lambda R(W)\) : \[ L=\frac1N\sum_iL_i(f(x_i,W),y_i)+\lambda R(W) \] 式中\(\lambda\)为正则化强度(regularization strength) ,为超参数
正则化的好处:
进一步地筛选\(W\),使所选定的\(W\)拥有除最小化损失以外的其他功能
避免过拟合(overfitting)
通过增加曲率以提高优化(optimization) 效果
常用的正则化有:
L2正则化 \[ R(W) = \sum_k \sum_l W_{k,l}^2 \] L1正则化 \[ R(W)= \sum_k \sum_l \left| W_{k,l}^2 \right | \] 或者将二者联系起来: \[ R(W) = \sum_k \sum_l \beta W_{k,l}^2 + \left |W_{k,l}^2 \right | \] 其他还有dropout、Batch normalization、Cutout、Mixup、Stochastic depth等等
2.5 交叉熵损失 Cross-Entropy Loss
另一种损失函函数使用归一化指数函数(softmax function) 将评分用概率来描述 ,被称为交叉熵损失(Cross- Entropy Loss) 或者多元逻辑回归(Multinomial Logistic Regression)
对于一个评分函数\(s=f(x_i,W)\),其softmax function的形式为: \[ P(Y = k|X = x_i) = \frac{e^{s_k}}{\sum_j e^{s_j}} \] 我们假设真实的概率分布为\(P\),训练得到的概率分布为\(Q\),我们使用\(Q\)来拟合\(P\),则交叉熵为: \[ H(P, Q) = H(P) + D_{KL}(P||Q) \] 式中\(D_{KL}(P||Q)\)为相对熵(Kullback-Leibler Divergence) : \[ D_{KL}(P||Q) = \sum_{i=1}^n P(x_i)\log \frac{P(x_i)}{Q(x_i)} \] 由于真实的概率分布不变,即\(H(P)\)不变,则若交叉熵\(H(P,Q)\)最小,只需相对熵\(D_{KL}(P||Q)\)最小即可
当单张图片的损失具有如下形式时,交叉熵最小: \[ L_i = - \log P(Y=y_i|X = x_i) \] 所以交叉熵损失的具体形式为: \[ L = \frac1N \sum_i\left(-\log \left(\frac{e^{s_{y_i}}}{\sum_je^{s_j}}\right)\right)+\lambda R(W) \]