美文网首页
机器学习面试题-为什么LR模型损失函数使用交叉熵不用MSE?

机器学习面试题-为什么LR模型损失函数使用交叉熵不用MSE?

作者: hguo11 | 来源:发表于2020-05-18 23:27 被阅读0次

    关注微信公众号“”机器学习算法面试“获取更多机器学习和深度学习方面的面试题

    问题引入

    大家最熟悉的莫过于LR模型了,LR模型用的激活函数是sigmod,使用的损失函数是交叉熵,但是它为啥不用MSE呢,按理说MSE也可以刻画预测和实际值的偏差大小呀?

    问题解答

    LR的基本表达形式如下:
    {h_\theta }(x) = g({\theta ^T}x) = \frac{1}{{1 + {e^{ - {\theta ^T}x}}}}
    使用交叉熵作为损失函数的梯度下降更新求导的结果如下:
    首先得到损失函数如下:
    C = \frac{1}{n}\sum {[yIn\hat y + (1 - y)In(1 - \hat y)]}
    计算梯度如下:
    \frac{{\partial C}}{{\partial w}} = \frac{1}{n}\sum {x(\sigma (z) - y)}
    如果我们使用MSE作为损失函数的话,那损失函数以及求导的结果如下所示:
    C = \frac{{{{(y - \hat y)}^2}}}{2}
    \frac{{\partial C}}{{\partial w}} = (\hat y - y)\sigma '(z)(x)
    可以看到使用MSE作为损失函数的话,它的梯度是和sigmod函数的导数有关的,如果当前模型的输出接近0或者1时,\sigma '(z)就会非常小,接近0,使得求得的梯度很小,损失函数收敛的很慢。但是我们使用交叉熵的话就不会出现这样的情况,它的导数就是一个差值,误差大的话更新的就快,误差小的话就更新的慢点,这正是我们想要的。因此,我们需要用交叉熵而不是MSE作为损失函数。

    相关文章

      网友评论

          本文标题:机器学习面试题-为什么LR模型损失函数使用交叉熵不用MSE?

          本文链接:https://www.haomeiwen.com/subject/fhvmohtx.html