MENU

Logistic Regression

January 4, 2020 • Read: 3492 • Deep Learning阅读设置

本文简单介绍一下 Logistic Regression 的定义和原理。对于 (Linear Regression) 线性回归模型,输入 $x$,网络参数为 $w$ 和 $b$,输出值为 $y$,是个连续值。但是分类问题最终的输出值应该为离散的,那么如何转化为分类问题呢?

可以考虑增加一个 $\sigma$ 函数,变为 $y=\sigma (wx+b)$,这个 $\sigma$ 也叫 sigmoid 函数或 logistic 函数,这样输出的值就能压缩到 $[0,1]$,我们可以将这个值等效为 probability

对于 Regression 问题,其目标是使 pred(预测值)近似于输出的 $y$ 值,即最小化 $\text {dist}(pred,y)$;对于 Classification 问题,其目标是最大化 accuracy,或者说最小化 $\text {dist}(p_\theta (y|x), p_r (y|x))$。两者最主要的区别是 traning 的目标不同,这里可能会有疑问,why not maximize accuracy?

因为一般 acc 的计算公式为:$\frac {预测对的数量}{总的数量}$

$$ acc = \frac{\sum I(pred = y_i)}{\text{len}(Y)} $$

对于一个二分类问题,我们假设阈值为 0.5,即 $pred>0.5$,认为是第一类,$pred<0.5$,我们认为是第二类。一开始肯定会有分类不正确的,假设真实类别为 1,预测值为 0.4,则网络将其归为 0 这一类,在网络更新后,预测值变大为 0.45,虽然更加靠近 1,更加接近真实值,但是由于没有发生本质的变化,即仍然没有大于 0.5

再比方说,假如一开始一个预测值为 0.499,真实类别为 1,网络更新后,预测值变为 0.501,预测正确了,但是计算梯度时,可能会导致梯度非常非常大,甚至不连续

上面两个问题总结起来就是:

  • gradient = 0 if accuracy unchanged but weights changed
  • gradient not continuous since the number of correct is not continuous

最后一个问题,why call logistic regression?logistic 好理解,因为使用了 $\sigma$ 函数,但是为什么叫 regression,而不是 classification 呢?这个问题的解答网上有很多争议,其中一个解释是说,因为一开始做 classification 的时候,用的就是 MSE,所以叫做 regression(解决 regression 问题常用的 loss 就是 MSE),但是现在解决 classification 问题用的是 Cross Entropy,只不过叫法以及被大家习惯了,所以没改

Last Modified: August 3, 2021
Archives Tip
QR Code for this page
Tipping QR Code