Regression VS Classification
回归问题:定量(quantity)
分类问题:定性(label)
分类问题的标签一般由回归或者直接测量来得到。eg. 预测明天的天气,降水量超过一定阈值$C$为有雨,否则为不下雨。这里的降水量是个连续型随机变量,可以直接测量也可以通过回归来预测。
也可以将阈值$C$与待学习的参数$w$合并:
Logistic Regression
上述函数在 $\boldsymbol{x}=\boldsymbol{0}$ 的时候不可微(differentiable)而且在每一处的导数都是0,在求Loss进行梯度下降的过程中无法学习到任何信息。因此我们引入Logistic Function(Sigmoid Function):
这个函数将 $\boldsymbol{w^Tx}$ 映射到概率取值 $[0,1]$,含义是将 $\boldsymbol{x}$ 标记为 $1$ 的概率。
如果我们使用 ${\mathcal L}2$ 损失函数:
令 $z=\boldsymbol{w^Tx}$ 则:
此时有:
其中:
由于梯度下降的公式为:
可以看到如果 $\sigma(z)\approx 0or1$:
这种情况下会出现梯度消失(Gradient Vanishing),参数 ${\boldsymbol{w}}$ 无法继续进行更新。
Binary Cross-entropy
为了避免 ${\mathcal L}2$ 损失函数在训练过程中的梯度消失问题,我们使用以下损失函数:
其中: $p=\sigma(z)\quad z=\boldsymbol{w^Tx}$
该式解释如下:
要想最大化上述值,就要最小化它的log值的相反数(negative log-likelihood):
Cross-entropy的梯度为:
Multi-class classification
- Multi-label 一个输入可以有多个标签
- Single-label 一个输入只能有一个标签
Multi-label
对于一个输入可以有多个标签的情况,可以同时训练多个分类器,每个分类器对应一个类别,判断该输入是否属于该类别,这些类别之间彼此独立。
对第 $i$ 个类别有:
$z_i=\boldsymbol{W}_i\boldsymbol{x}+b_i\quad p_i=\sigma(z_i)\quad L_{ce}=-y_ilogp_i-(1-y_i)log(1-p_i)$
对于所有类别向量化表示为:
$\boldsymbol{z}=\boldsymbol{W}\boldsymbol{x}+\boldsymbol{b}\quad \boldsymbol{p}=\sigma(\boldsymbol{z})\quad L_{ce}=-\boldsymbol{y}^Tlog\boldsymbol{p}-(1-\boldsymbol{y})^Tlog(1-\boldsymbol{p})$
Single-label
必须在所有标签中选择一个标签出来:维持所有标签的概率总和为1,取概率最大的标签为预测的结果。可以使用Softmax regression (multinomial logistic regression):
满足:$\boldsymbol z=\boldsymbol{Wx}\quad \sum_ip_i=1\quad t= \mathop{\arg\max}\limits_ip_i\quad \widetilde{y_i}=i=t?1:0$
单个实例的预测值为one-hot向量 $\widetilde{\boldsymbol{y}} =(\widetilde{y_1},…,\widetilde{y_K})$,共$K$个类别。
Loss函数为:$L_{ce}(\boldsymbol{x},\boldsymbol{y})=\sum_i-y_ilogp_i=-\boldsymbol{y}^Tlog\boldsymbol{p}=-logp_{k_{right}}$
其中 $\mathbf{X}$ 的每一行是特征向量 $\boldsymbol{x}$, $\mathbf{Y}$ 的每一行是目标one-hot向量 $\boldsymbol{y}$ :
- Sigmoid 代表小写的希腊字母sigma (uppercase Σ, lowercase σ)