本文内容
了解 logit 前,我们先了解一下 Odds。Odds 在概率中,它指的是“几率”或“赔率”,通常用来表示某个事件发生的可能性与其不发生的可能性之间的比例关系。
假定一个事件发生的概率为 ,其对应的 Odds 值(用 表示)的计算公式为:
逆公式:
用 p 表示概率,p/(1 − p) 为对应的 Odds,那么该概率的 logit 定义为 Odds 的对数。
可以推导出,该函数的逆函数即为标准 sigmoid 函数。
在深度学习中,logits 层是指向 softmax(或其他类似的归一化函数)提供输入的层。softmax的输出是分类任务的概率,而其输入则是 logits 层。logits 层通常产生从负无穷到正无穷的值,而 softmax 层将这些值转换为 0 到 1 之间的值。
如上图,logit、Odds和sigmoid之间的关系,可以从以下几个方面来理解:
import torch
import math
prob = 0.8
t = torch.tensor([prob], requires_grad=False)
print(f"{prob} logit value by torch.tensor: {torch.logit(t)}")
print(f"{prob} logit value by math.log: {math.log(prob/(1-prob)):.4f}")
# 给定概率,先做 logit操作,再做 sigmod 操作,会得到原值。
# logit 函数的取值范围为 (-∞,+∞),在机器学习中方便训练,故 logit 相对原始概率更常用。
print(f"logit+sigmod 返回原来的概率值: {torch.sigmoid(torch.logit(t))}")
# 输出结果如下。
# 0.8 logit value by torch.tensor: tensor([1.3863])
# 0.8 logit value by math.log: 1.3863
# logit+sigmod 返回原来的概率值: tensor([0.8000])
在 20 世纪 30 年代和 40 年代,许多人试图将线性回归应用于预测概率的问题。然而,线性回归产生的输出范围是从负无穷到正无穷,而我们期望的概率输出范围是 0 到 1。实现这一目标的一个方法是将 0 到 1 的概率映射到负无穷到正无穷的范围,然后像往常一样使用线性回归。
其中一个映射方法是累积正态分布,由 Chester Ittner Bliss 在 1934 年提出,他将其称为“概率单位”(probit)模型,是“probability unit”的缩写。然而,这个函数计算成本较高,且对多分类支持不好。
1944 年,Joseph Berkson 使用函数 (同上面的数学定义)进行这种映射,并称之为logit,是“logistic unit”的缩写。术语“逻辑回归”(logistic regression)也是由此而来的。
发布于:2024-03-21 描述有误?我来纠错