0%

pytorch

回归 vs 分类

回归估计一个连续值,单连续数值输出,自然区间R

分类估计一个离散值,通常为多输出,输出i为第i类的置信度 \[ \hat{y}_{i}=\frac{\exp \left(o_{i}\right)}{\sum_{k} \exp \left(o_{k}\right)} \]

softmax回归

softmax回归的输出层是一个全连接层。

softmax运算符

softmax解决了输出层的输出值的范围不确定的问题;由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

softmax将输出值变换成值为正且和为1的概率分布: \[ {\hat y}_1,{\hat y}_2,{\hat y}_3 = sfotmax(o_1,o_2,o_3) \] 其中 \[ \hat{y}_{1}=\frac{\exp (o_1)}{\sum_{i=1}^{3} \exp \left(o_{i}\right)},\hat{y}_{1}=\frac{\exp (o_2)}{\sum_{i=1}^{3} \exp \left(o_{i}\right)},\hat{y}_{1}=\frac{\exp (o_3)}{\sum_{i=1}^{3} \exp \left(o_{i}\right)} \] 容易看出\({\hat y}_1+{\hat y}_2+{\hat y}_3=1\)且$0 {1}, {2}, _{3} $.

softmax并不改变预测类别的输出结果。

小批量样本分类的矢量计算表达式

为了进一步提升计算效率,通常对小批量数据进行矢量计算。

对于给定的一个小批量样本,其批量大小为n,输入个数(特征数)为d,输出个数(类别数)为q。设批量特征为\(\boldsymbol{X} \in \mathbb{R}^{n \times d}\)。假设softmax回归的回归权重和偏差参数分别为\(\boldsymbol{W} \in \mathbb{R}^{d \times q}\)\(\boldsymbol{b} \in \mathbb{R}^{1 \times q}\)。softmax回归的矢量计算表达式为 \[ \begin{array}{l} \boldsymbol{O}=\boldsymbol{X} \boldsymbol{W}+\boldsymbol{b} \\ \hat{\boldsymbol{Y}}=\operatorname{softmax}(\boldsymbol{O}) \end{array} \]

交叉熵损失函数

交叉熵损失函数思路:想要预测分类结果正确并不需要预测概率完全等于标签概率。而只需要正确的标签概率比其他的预测值都大就行。

改善的方法是使用更适合衡量两个概率分布差异的测试函数。其中,交叉熵(cross entropy)是一个常用的方法: \[ H\left(\boldsymbol{y}^{(i)}, \hat{\boldsymbol{y}}^{(i)}\right)=-\sum_{j=1}^{q} y_{j}^{(i)} \log \hat{y}_{j}^{(i)} \] 其中带下标的\(y^{(i)}_j\)是向量\(\boldsymbol y^{(i)}\)中非0即1的元素,即是元素值。

交叉熵只关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确。

假设训练数据集的样本数为n,交叉熵损失函数定义为 \[ \ell(\boldsymbol{\Theta})=\frac{1}{n} \sum_{i=1}^{n} H\left(\boldsymbol{y}^{(i)}, \hat{\boldsymbol{y}}^{(i)}\right) \] 其中\(\boldsymbol{\Theta}\)代表模型参数。