Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

4.7 多项逻辑回归

有时类别不止两个。例如,情感分类可能包含正面、负面和中性三类;也可能要预测第 18 章将介绍的标签,如从 10、30 甚至 50 个词性中选择一个,或从人名、地点、组织等标签中选择短语的命名实体类型。对大语言模型而言,还要从词表的 V|V| 个候选词中预测下一个词,因此是 VV 路分类。

这类任务使用多项逻辑回归(multinomial logistic regression),也称 softmax 回归(softmax regression;早期 NLP 文献中有时称为最大熵分类器)。模型从 KK 个类别中为每个观测选择类别 kk,并规定只有一个类别是正确的,这有时称为硬分类(hard classification)。

用长度为 KK 的向量 y\mathbf y 表示每个输入 xx 的输出。若正确类别为 cc,令 yc=1y_c=1,其余元素均为 0,即 yj=0,jcy_j=0,\forall j\ne c。这种仅一个值为 1、其余均为 0 的向量称为独热向量(one-hot vector)。分类器要生成估计向量 y^\hat{\mathbf y},其中每个类别 kk 对应的值 y^k\hat y_k 是概率 P(yk=1x)P(y_k=1\mid\mathbf x) 的估计。

4.7.1 Softmax

多项逻辑分类器使用 sigmoid 的推广——softmax 函数——计算 p(yk=1x)p(y_k=1\mid\mathbf x)。softmax 接收由 KK 个任意值构成的向量 z=[z1,z2,,zK]\mathbf z=[z_1,z_2,\ldots,z_K],将其映射为概率分布:每个值均在 [0,1][0,1] 内,且总和为 1。与 sigmoid 一样,它也是指数函数。

KK 维向量 z\mathbf z,softmax 定义为:

softmax(zi)=exp(zi)j=1Kexp(zj),1iK(4.33)\operatorname{softmax}(z_i)=\frac{\exp(z_i)}{\sum_{j=1}^K\exp(z_j)},\qquad1\le i\le K\tag{4.33}

因此,输入向量的 softmax 本身也是向量:

softmax(z)=[exp(z1)i=1Kexp(zi),exp(z2)i=1Kexp(zi),,exp(zK)i=1Kexp(zi)](4.34)\operatorname{softmax}(\mathbf z)=\left[\frac{\exp(z_1)}{\sum_{i=1}^K\exp(z_i)},\frac{\exp(z_2)}{\sum_{i=1}^K\exp(z_i)},\ldots,\frac{\exp(z_K)}{\sum_{i=1}^K\exp(z_i)}\right]\tag{4.34}

分母 i=1Kexp(zi)\sum_{i=1}^K\exp(z_i) 将所有值归一化为概率。例如,给定:

z=[0.6,1.1,1.5,1.2,3.2,1.1]\mathbf z=[0.6,1.1,-1.5,1.2,3.2,-1.1]

则四舍五入后的 softmax(z)\operatorname{softmax}(\mathbf z) 为:

[0.05,0.09,0.01,0.10,0.74,0.01][0.05,0.09,0.01,0.10,0.74,0.01]

与 sigmoid 一样,softmax 会把数值压向 0 或 1。如果某个输入大于其他输入,它会倾向于将对应概率推近 1,同时抑制较小输入的概率。与 sigmoid 情形相同,softmax 的输入分数向量 z\mathbf z 称为 logit(见式 4.7)。

4.7.2 在逻辑回归中应用 softmax

将 softmax 用于逻辑回归时,其输入仍是权重向量 w\mathbf w 与输入向量 x\mathbf x 的点积再加偏置。不过,现在 KK 个类别分别需要权重向量 wk\mathbf w_k 和偏置 bkb_k。每个输出类别的概率为:

P(yk=1x)=exp(wkx+bk)j=1Kexp(wjx+bj)(4.35)P(y_k=1\mid\mathbf x)=\frac{\exp(\mathbf w_k\cdot\mathbf x+b_k)}{\sum_{j=1}^K\exp(\mathbf w_j\cdot\mathbf x+b_j)}\tag{4.35}

式 4.35 看似要分别计算每个输出;实际中通常会改写为更适合现代向量处理硬件的形式。把 KK 个权重向量表示为权重矩阵 W\mathbf W,把偏置表示为向量 b\mathbf bW\mathbf W 的第 kk 行对应权重向量 wk\mathbf w_k,因此若输出类别数为 KK、输入特征数为 ffW\mathbf W 的形状为 [K×f][K\times f]b\mathbf b 则为每个输出类别包含一个值。于是,KK 类输出概率向量可以用一个简洁方程计算:

y^=softmax(Wx+b)(4.36)\hat{\mathbf y}=\operatorname{softmax}(\mathbf W\mathbf x+\mathbf b)\tag{4.36}

展开矩阵运算可知,第一个输出类别在 softmax 之前的估计分数恰好是 w1x+b1\mathbf w_1\cdot\mathbf x+b_1

理解权重矩阵 W\mathbf W 的一种有用方式,是把每一行 wk\mathbf w_k 看作类别 kk原型(prototype)。学到的权重向量以模板形式表示该类别。两个向量越相似,点积越高,因此点积可以充当相似度函数。逻辑回归由此为每个类别学习一个原型表示,再将输入向量分到 KK 类中与其最相似的类别(Doumbouya et al., 2025)。

图 4.6 通过比较权重向量与权重矩阵,展示二元逻辑回归与多项逻辑回归在计算输出类别概率时的区别。

4.7.3 多项逻辑回归中的特征

多项逻辑回归的特征与二元逻辑回归类似,不同之处在于 KK 个类别分别拥有权重向量和偏置。回顾第 97 页的二元感叹号特征:

x5={1if “!”doc0otherwisex_5=\left\{\begin{array}{ll}1&\text{if ``!''}\in\text{doc}\\0&\text{otherwise}\end{array}\right.

二元分类中,特征的正权重使分类器倾向 y=1y=1(正面情感),负权重使其倾向 y=0y=0(负面情感),绝对值表示该特征的重要程度。多项逻辑回归中,每个类别拥有独立权重,因此同一特征可以分别成为支持或反对各类别的证据。

例如,三分类情感分析要把每篇文档分为正面(+)、负面(−)或中性(0)。感叹号特征对中性文档可能具有负权重,对正面或负面文档则具有正权重:

特征定义w5,+w5,w5,0f5(x)1[“!”doc]3.53.15.3\begin{array}{c|c|ccc}\text{特征}&\text{定义}&w_{5,+}&w_{5,-}&w_{5,0}\\\hline f_5(x)&\mathbf1[\text{``!''}\in\text{doc}]&3.5&3.1&-5.3\end{array}

由于这些特征权重同时依赖输入文本和输出类别,有时会把这种依赖显式写成 f(x,y)f(x,y)。例如,上面的 f5(x)f_5(x) 可写成三个特征 f5(x,+)f_5(x,+)f5(x,)f_5(x,-)f5(x,0)f_5(x,0),每个特征各有一个权重。第 18 章介绍 CRF 时将使用这种记号。

图 4.6 二元逻辑回归与多项逻辑回归。二元逻辑回归使用单个权重向量 w\mathbf w,输出为标量 y^\hat y;多项逻辑回归为 KK 个类别使用 KK 个权重向量,并把它们装入单个权重矩阵 W\mathbf W,输出为向量 y^\hat{\mathbf y}。为清晰起见,两图均省略偏置。