Logit, Logistic, Sigmoid, Softmax在MLP的区别

Logit在数学和机器学习的常用定义不一样但想法是类似的。Logit和Logistic(Sigmoid的一种函数)也很容易搞混。Softmax和Sigmoid除了单纯的多维输出推广也有其他的影响。

Sigmoid和Softmax的区别,优缺点,细节,和定义可以参考:激活函数和损失函数

Logit在数学上的定义是Logistic函数的反函数:

\[\sigma(x)=\frac1{1+e^{-x}}, \text{logit}(p)=\sigma^{-1}(p)=\ln(\frac{p}{1-p})\]

可以看到因为需要保证\(\frac{p}{1-p}>0\),所以\(p\in (0,1)\)

这里Logit可以解释成logarithm of the odds \(\frac{p}{1-p}, p\in (0,1)\)

Sigmoid代之所有S形的函数,其中包括Logistic,Tanh,等。机器学习中常用的还是Logistic,因为其梯度表达足够简单,当然相比ReLU\(=\max(0,x)\)还是稍微复杂了点。

Softmax是Sigmoid的推广,输出是向量是一个概率分布(每个维度都基于所有输入,而Sigmoid的输入输出彼此互不干扰)。

从信息论的角度可以看到Logit很深刻的含义:(Gemini 2.5 Pro生成)

从信息论的角度来看,Logit 函数的数学意义主要体现在以下三个层面:

  1. Logit 是“证据的累积尺度” (Scale of Additive Evidence)
  2. Logit 是“惊讶度的差异” (Difference in Surprisal)
  3. Logit 是“最大熵模型”的自然结果 (Natural result of MaxEnt Models)

1. Logit 作为“证据的累积尺度”(对数似然比)

在信息论和贝叶斯统计中,信息的核心功能是更新我们的信念(belief)。Logit 函数提供了一个完美的尺度来实现这一点。

我们知道贝叶斯定理的“比率形式” (Odds form):

\[\frac{P(H|D)}{P(\neg H|D)} = \frac{P(D|H)}{P(D|\neg H)} \times \frac{P(H)}{P(\neg H)}\]

这个公式可以被解读为:

\[\text{Posterior Odds} = \text{Likelihood Ratio} \times \text{Prior Odds}\]

  • Odds (比率)\(O = \frac{p}{1-p}\),其中 \(p\) 是信念的概率。
  • Logit (对数比率)\(\log(O) = \log\left(\frac{p}{1-p}\right)\)

如果我们对上面整个公式取对数:

\[\log(\text{Posterior Odds}) = \log(\text{Likelihood Ratio}) + \log(\text{Prior Odds})\]

换成 Logit 的写法就是:

\[\text{logit}(p_{\text{post}}) = \log(LR) + \text{logit}(p_{\text{prior}})\]

信息论意义

  • \(\log(LR)\) 这一项,即对数似然比 (Log-Likelihood Ratio),在信息论中被认为是数据 \(D\) 为我们提供的、用于区分 \(H\)\(\neg H\) 的“信息量”或“证据权重”(Weight of Evidence)。
  • 概率 \(p\) 本身是很难直接累加的(例如,0.5 的概率加上 0.3 的概率没有意义)。
  • 但是,Logit 函数将概率 \(p\) 转换到了一个“对数比率空间”,在这个空间里,信息(证据)是可以直接相加的

结论:Logit 的数学意义是提供了一个证据的线性累积尺度。你每获得一条新证据(\(\log(LR)\)),就可以在 Logit 空间里做一次加法,来更新你的信念。这就是为什么它在逻辑回归(Logistic Regression)中如此基础,\(\text{logit}(p) = \beta_0 + \sum \beta_i x_i\) 的本质就是在 Logit 空间里,将所有特征 \(x_i\) 提供的证据(\(\beta_i x_i\))线性叠加起来。

2. Logit 作为“惊讶度的差异” (Difference in Surprisal)

信息论的奠基人香农(Shannon)定义了一个事件 \(x\) 的“自信息”(Self-Information),也常被称为“惊讶度”(Surprisal):

\[I(x) = -\log(P(x))\]

一个事件发生的概率 \(P(x)\) 越低,它发生时带给我们的信息量(惊讶度)就越大。

现在我们来看 Logit 函数:

\[\text{logit}(p) = \log\left(\frac{p}{1-p}\right) = \log(p) - \log(1-p)\]

我们可以重新排列这个公式:

\[\text{logit}(p) = [-\log(1-p)] - [-\log(p)]\]

假设我们有一个二元事件:

  • 事件 A:“成功”,概率为 \(p\)
  • 事件 B:“失败”,概率为 \(1-p\)

那么它们的惊讶度分别是:

  • \(I(\text{成功}) = -\log(p)\)
  • \(I(\text{失败}) = -\log(1-p)\)

代入 Logit 的定义:

\[\text{logit}(p) = I(\text{失败}) - I(\text{成功})\]

信息论意义

Logit(p) 的值,等于“失败”这一事件的惊讶度减去“成功”这一事件的惊讶度

  • \(p = 0.5\)\(\text{logit}(0.5) = 0\)。这意味着 \(I(\text{失败}) = I(\text{成功})\)。成功和失败的惊讶度相同,我们处于最大的不确定性中(这对应着最大熵)。
  • \(p = 0.9\) (成功概率高) 时\(\text{logit}(0.9) \approx 2.2\) (为正数)。这意味着 \(I(\text{失败}) > I(\text{成功})\)。因为成功是大概率事件,所以它发生时我们“不惊讶”;而失败是小概率事件,它发生时我们“非常惊讶”。Logit 是一个正数,代表“失败”比“成功”更令人惊讶。
  • \(p = 0.1\) (成功概率低) 时\(\text{logit}(0.1) \approx -2.2\) (为负数)。这意味着 \(I(\text{失败}) < I(\text{成功})\)。此时,“成功”是小概率事件,它的发生比“失败”的发生更令人惊讶。

结论:Logit 衡量的是二元结果中,两种相对事件的“信息不对称性”。

3. Logit 作为“最大熵模型”的自然结果

在信息论中,最大熵原理 (Principle of Maximum Entropy) 指出:当我们在构建一个概率模型时,我们应该选择在满足所有已知约束(例如,观测到的均值)的前提下,熵(不确定性)最大的那个模型。

这等同于“不要做任何不必要的假设”。

假设我们有一个二元分类问题(\(y \in \{0, 1\}\)),并且我们有一些特征 \(x\)。我们希望模型 \(\pi(x) = P(y=1|x)\) 能够匹配我们从数据中观测到的特征期望值。

根据最大熵原理推导(这涉及到拉格朗日乘子法和指数簇分布的知识),能够满足这些约束并且熵最大的那个概率分布必然具有以下形式:

\[\pi(x) = P(y=1|x) = \frac{\exp(\theta_0 + \sum \theta_i x_i)}{1 + \exp(\theta_0 + \sum \theta_i x_i)}\]

这正是 Logistic Sigmoid 函数

现在,我们来看看这个最大熵模型的 Logit 是什么。

\[P(y=0|x) = 1 - \pi(x) = \frac{1}{1 + \exp(\theta_0 + \sum \theta_i x_i)}\]

计算 \(\text{logit}(\pi(x))\)

\[\text{logit}(\pi(x)) = \log\left(\frac{\pi(x)}{1-\pi(x)}\right) = \log\left(\frac{\frac{\exp(\theta_0 + \sum \theta_i x_i)}{1 + \dots}}{\frac{1}{1 + \dots}}\right)\]

\[\text{logit}(\pi(x)) = \log(\exp(\theta_0 + \sum \theta_i x_i)) = \theta_0 + \sum \theta_i x_i\]

信息论意义

Logit 函数并不是我们为了方便计算而“发明”的,它是在信息论的最大熵原理这个基本公理下,自然推导出来的结果。

结论:Logit 函数是连接“最大熵模型”的概率 \(\pi(x)\) 和“约束条件”(即特征的线性组合)之间的自然桥梁(Canonical Link Function)

总结

Logit 函数 \(\log\left(\frac{p}{1-p}\right)\) 在数学上的意义,从信息论角度看,是将概率 \(p \in (0, 1)\) 转换到了一个具有特定物理含义的标尺(\(\mathbb{R}\))上。在这个标尺上:

  1. 信息是可加的:它是一个“证据”空间,新的证据(对数似然比)可以直接累加上去。
  2. 信息的不对称性被量化了:它直接衡量了“失败”和“成功”两个对立事件的惊讶度之差。
  3. 它符合最大熵原理:它是构建最“诚实”、最不武断的概率模型时自然出现的数学结构。

不过在机器学习中,Logit一般指Sigmoid层的输入层,也就是其最基本的意义:Logit是Logistic / Sigmoid 函数的“反函数”。

Softmax的输入层也用Logits来代指,由于分类任务使用的CE损失函数需要输入基于一个概率分布,Softmax目前被广泛用于分类神经网络最后一层的激活函数,所以Logits的实际意义比Logit多很多:(Gemini 2.5 Pro生成)

Logits \(\mathbf{z}\) 对于 Softmax 的意义,比它对 Sigmoid 的意义更丰富。它不仅是“反函数”的输入,更重要的是,它定义了一个“对数概率比” (Log-Odds) 空间

1. 核心意义:Logits 的差异 = 对数概率比

这是理解 Logits for Softmax 的最关键的数学意义。

我们先看 Softmax 函数的定义,它将 Logits 向量 \(\mathbf{z}\) 转换为概率向量 \(\mathbf{p}\)

\[p_i = \text{Softmax}(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}}\]

其中 \(p_i\) 是模型预测第 \(i\) 个类别的概率。

现在,让我们任选两个类别 \(i\)\(j\),看看它们最终概率 \(p_i\)\(p_j\)比率 (Odds) 是多少:

\[\frac{p_i}{p_j} = \frac{\frac{e^{z_i}}{\sum e^k}}{\frac{e^{z_j}}{\sum e^k}}\]

分母 \(\sum e^k\) (归一化项)被消掉了:

\[\frac{p_i}{p_j} = \frac{e^{z_i}}{e^{z_j}} = e^{z_i - z_j}\]

对这个等式两边取自然对数 (log):

\[\log\left(\frac{p_i}{p_j}\right) = z_i - z_j\]

这就是 Logits 在 Softmax 中的核心数学意义:

任意两个类别的 Logit 值之差 (\(z_i - z_j\)),直接等于这两个类别最终概率的对数比 (Log-Odds)

举例说明:

假设一个三分类(猫、狗、鸟)模型的 Logits 向量 \(\mathbf{z}\) 是:

  • \(z_{\text{猫}} = 5.0\)
  • \(z_{\text{狗}} = 3.0\)
  • \(z_{\text{鸟}} = 0.0\)

我们不需要计算 Softmax 就能立即知道:

  1. 猫 vs 狗: \(\log\left(\frac{p_{\text{猫}}}{p_{\text{狗}}}\right) = z_{\text{猫}} - z_{\text{狗}} = 5.0 - 3.0 = 2.0\)

    这意味着 \(p_{\text{猫}} / p_{\text{狗}} = e^2 \approx 7.39\)。模型认为“猫”的概率是“狗”的 7.39 倍。

  2. 猫 vs 鸟: \(\log\left(\frac{p_{\text{猫}}}{p_{\text{鸟}}}\right) = z_{\text{猫}} - z_{\text{鸟}} = 5.0 - 0.0 = 5.0\)

    这意味着 \(p_{\text{猫}} / p_{\text{鸟}} = e^5 \approx 148.4\)。模型认为“猫”的概率是“鸟”的 148.4 倍。

机器学习意义:

这个特性意味着,模型的线性层(\(W \cdot x + b\))的任务不是直接去拟合一个 \((0, 1)\) 之间的复杂概率,而是去学习一个线性的 “Logits 空间”。在这个空间里,模型只需要让“正确”类别的 \(z_i\) 值比“错误”类别的 \(z_j\) 值高出一个差值 \(k\),它就能保证 \(p_i\)\(p_j\)\(e^k\) 倍。这极大地简化了模型的学习任务。

2. 引申意义 (1):Logits 是“未归一化的对数概率”

我们可以从另一个角度看 Softmax。我们重写 \(\log\left(\frac{p_i}{p_j}\right) = z_i - z_j\)

\[\log(p_i) - \log(p_j) = z_i - z_j\]

\[\log(p_i) - z_i = \log(p_j) - z_j\]

这个等式告诉我们,对于所有类别 \(k\)\(\log(p_k) - z_k\) 的值都是一个常数。我们把这个常数记为 \(C\)

\[\log(p_i) - z_i = C \implies \log(p_i) = z_i + C\]

这个常数 \(C\) 是什么?

我们知道 \(\sum p_j = 1\),所以 \(\sum e^{z_j + C} = 1 \implies e^C \sum e^{z_j} = 1 \implies e^C = \frac{1}{\sum e^{z_j}}\)

所以 \(C = -\log(\sum e^{z_j})\)。(这个 \(\log(\sum e^{z_j})\) 在数学上被称为 LogSumExp 函数,是 Softmax 的归一化因子)。

机器学习意义:

\(\log(p_i) = z_i - \log(\sum e^{z_j})\)

这个公式说明,\(z_i\) (Logit)就是 \(p_i\) 的对数概率 \(\log(p_i)\),只不过它“未被归一化” (它只是和 \(\log(p_i)\) 差了一个全局的常数)。

这就是为什么 Softmax 函数(以及对应的交叉熵损失)经常被称赞为在操作“对数概率”(Log-Probs)。因为它的输入 Logits \(\mathbf{z}\) 本质上就是“未归一化的对数概率”。

3. 引申意义 (2):Logits 具有“平移不变性”

\(\log(\frac{p_i}{p_j}) = z_i - z_j\) 我们可以推导出一个在工程上极其重要的特性。

如果我们给所有的 Logits \(z_k\) 都加上一个相同的常数 \(C\)

  • 新的 Logits 向量:\(\mathbf{z}' = [z_1+C, z_2+C, ..., z_K+C]\)
  • 新的概率 \(p_i'\) 是:

\[p_i' = \frac{e^{z_i+C}}{\sum_{j=1}^K e^{z_j+C}} = \frac{e^{z_i} \cdot e^C}{\sum (e^{z_j} \cdot e^C)} = \frac{e^C \cdot e^{z_i}}{e^C \cdot (\sum e^{z_j})} = \frac{e^{z_i}}{\sum e^{z_j}} = p_i\]

机器学习意义:

Softmax 的输出概率完全不受 Logits 向量的“整体平移”的影响。

  • \(\mathbf{z} = [1, 2, 3]\)
  • \(\mathbf{z} = [101, 102, 103]\)

这两个 Logits 向量会产生完全相同的 Softmax 概率输出。

这再次印证了核心意义:Logits 的绝对大小不重要,它们之间的“差异”才是一切

这个特性在工程上被广泛用于数值稳定性(Numerical Stability)。当 \(z_i\) 很大时(例如 1000),\(e^{1000}\) 会导致计算机溢出(Infinity)。为了防止溢出,我们会在计算 Softmax 之前,将所有 \(z_i\) 减去它们之中的最大值 \(\max(\mathbf{z})\)

\[z_i' = z_i - \max(\mathbf{z})\]

这保证了最大的 Logit 变为 0,所有 \(e^{z_i'}\) 都不会溢出,而最终的 \(p_i\) 结果保持不变。

总结

Logits \(\mathbf{z}\) 在 Softmax 语境中的意义是:

  1. 数学上:它是一个向量,其元素间的差异 \(z_i - z_j\) 直接定义了最终概率间的对数比率 \(\log(p_i / p_j)\)
  2. 概念上:它代表了模型对每个类别的“未归一化的对数概率”。
  3. 工程上:它具有平移不变性,只关心差异,不关心绝对值,这使得模型训练(使用 \(W \cdot x + b\) 产生 \(\mathbf{z}\))和数值计算(减去最大值)都变得高效和稳定。

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...