Question 1000921: 证明LogLoss是凸函数

统计/机器学习 损失函数

这是个后续问题。我之前问了逻辑回归的Log Loss是凸函数吗?


现在我想知道为什么它是凸函数,因为我还是看不明白为什么它的凸的,最好是有证明的。谢谢!



Answer

Answer 1:

严格意义上来说,我们是说logloss对于逻辑回归中任意一个变量的系数是凸的。

下面开始证明

$$L = -\frac{1}{n} \sum_{i=1}^n y_i \log(p_i) + (1-y_i) \log(1-p_i) $$

其中

$$ p_i = \frac{1} {1 + e^ { - v_i }} $$

其中

$ v_i = \beta X_i $,$ \beta$ 是逻辑回归的回归系数,$X_i$是第$i$个样本的特征。

凸函数的复合还是凸函数,并且凸函数的正线性组合还是凸函数,所以我们只要证明

$$F(v) = -\log\left(\frac{1}{1+e^{-v}}\right)=\log(1+e^{-v})$$

是凸函数。

要证明$F(v)$是关于$v$的凸函数,只要证明它的二阶导数非负。很容易可得,

$$F'(v)=\frac{-e^{-v}}{1+e^{-v}}$$

$$F''(v)=\frac{e^v}{(1+e^v)^2}\geq 0$$

证毕。



Question 1001139: R语言里求二分类的log-loss

统计/机器学习 R 损失函数

R语言里怎么求二元分类的log-loss?

谢谢!



Answer

Answer 1:

自己写一个咯

LogLoss <- function(actual, predicted){
  result=-1/length(actual)*(sum((actual*log(predicted)+(1-actual)*log(1-predicted))))
  return(result)
}


Answer 2:

需要Metrics这个library

> library(Metrics)

> logLoss(y_true, y_pred)



Question 1002581: hinge loss的公式是什么?

统计/机器学习 损失函数

hinge loss的公式是什么?求解!谢谢!


Answer

Answer 1:

$$HingeLoss(y)=\max(0,1-ty)$$

其中$t$是真实标签,$+1$或$-1$。$y$是分类分数,也就是模型输出。图像上是这样的



Question 1003329: 怎么判断一个损失函数的凹凸性?

统计/机器学习 最优化 损失函数

怎么判断一个损失函数的凹凸性?


Answer

Answer 1:

通常来说是很难判断的,不过有两个可行的办法。

    1. 画图。但是因为损失函数是多元的,所以可以一个切面一个切面的画。

    2. 求导。如果能够得到损失函数和模型参数的表达式,那么你就可以对这个表达式求二阶导,得到Hessian Matrix,然后再判断这个矩阵是否是正定的,如果正定,那么就是凸的。


以上两个办法在实际过程中都不一定可行。

Answer 2:

刚刚在西瓜书上看到相关的一段话,希望有帮助,在54页左下角:

“对实数集上的函数,可以通过求二阶导数来判别:若二阶导数在区间上非负,则称为凸函数;若二阶导数在区间上恒大于零,则称为严格凸函数。”

Answer 3:

求导吧


Question 1003504: focal loss是什么?

统计/机器学习 损失函数

focal loss是什么?能简单介绍一下吗?


Answer

Answer 1:

focal loss是在这篇论文(Focal Loss for Dense Object Detection)中提出的,是对log loss(或者交叉熵)的一种推广。

对于LogLoss,我们比较熟悉

$$\text{LogLoss}=-y\log(p)-(1-y)\log(1-p)$$

而focal loss是对预测值$p$本身加了权重$\gamma$,

$$\text{FocalLoss}=-y(1-p)^\gamma\log(p) - (1-y)p^{\gamma}\log(1-p)$$

当权重$\gamma=0$,focal loss就和log loss等价了。$\gamma$可以取大于0的数,比如0.1,0.5,1,2等等。如下图:


那这个权重有什么作用呢?通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。所谓“易分样本”就是正样本并且预测出来的概率$p$接近1或者负样本并且预测出来的概率接近0。


此外,focal loss还结合了正负样本的比重(解决正负样本非平衡问题),增加了另一个权重$\alpha$,这个$\alpha$的取值在0到1之间。

$$\text{FocalLoss}=-\alpha y(1-p)^\gamma\log(p) - (1-\alpha)(1-y)p^{\gamma}\log(1-p)$$

比如正样本较少,你想增加正样本的权重,可以设置$\alpha>0.5$


Question 1005702: tensorflow如何实现F1值作为损失函数?

统计/机器学习 损失函数 TensorFlow

F1值不光滑,那么怎么能把F1值作为损失函数优化


Answer

Answer 1:

F1不光滑,所以不可能直接用来做损失函数的。只能用binary crossentropy,如果不平衡的话,你可以加weight,或者focal loss。


来自sofasofa(一个专业的机器学习社区),建议去sofa社区阅读,这里只是记录。防止网站在网络中走失。