第 5 讲在 PDF 第 7–13 页回顾了本页内容。理解二分类之后,可以继续看多分类逻辑回归与 softmax,了解怎样处理两个以上的类别。
II. 让模型给出一个概率 Lec 4 · Sep 3
一条评论里可能有好几个判断情感的线索。逻辑回归会把这些线索合成一个分数:每个特征 \(x_i\) 乘上对应的权重 \(w_i\),再把结果相加。
最后还要加上偏置项(bias) \(b\),有时也写作 \(w_0\)。它不依附于某个具体特征,而是让模型能够整体调整分数。所有参数合起来记为 \(\theta = [w; b]\),计算过程是:
得到的分数 \(z\) 可以是任意实数,范围为 \((-\infty,\infty)\)。但概率必须在 0 到 1 之间,所以我们还需要把这个分数转成类别 1 的概率 \(P(y=1 \mid x; \theta)\),以及类别 0 的概率 \(P(y=0 \mid x; \theta)\)。
用 sigmoid 把分数变成概率
Sigmoid 函数也叫逻辑函数。它把任意实数映射到 0 与 1 之间,而且输入的分数越高,输出的概率也越高:
这个函数有三个适合我们使用的性质:
- 它的图像是一条 S 形曲线,因此是非线性的。任意有限输入都会得到 \((0,1)\) 内的结果,可以用来表示概率。
- 它可以求导,所以能用梯度来训练模型。导数的形式也很简洁:\(\sigma'(z) = \sigma(z)(1-\sigma(z))\)。
- 它满足 \(1 - \sigma(z) = \sigma(-z)\),正好可以把两个类别的概率配成一对。
把刚才的加权分数代入 sigmoid,就得到二分类逻辑回归。一个类别的概率算出来后,另一个类别的概率就是剩下的部分:
我们常把类别 1 的预测概率简写为 \(\hat y = \sigma(w \cdot x + b)\)。
根据概率作出分类判断
通常以 0.5 为分界:类别 1 的概率超过一半,就选类别 1;否则选类别 0,恰好等于一半也按这个规则选 0。下面判断式中的 \(\hat y\) 表示最后输出的类别标签:
两个类别的边界是 \(w \cdot x + b = 0\)。只有两个特征时,这是一条直线;维度更多时,它是直线和平面的高维推广,称为超平面。因此,虽然 sigmoid 本身是弯曲的,逻辑回归仍然是一个线性分类器。
权重和偏置应该取多少?
训练时,我们已经知道每个输入 \(x\) 的正确标签 \(y\),也就是 0 或 1;模型则给出预测概率 \(\hat y\)。我们希望调整 \(w\) 和 \(b\),让预测更符合这些已知答案。为此,需要两个东西:
- 一个损失函数(loss function),用来衡量预测有多差;这就是下面的第三部分。
- 一个优化算法,根据损失更新 \(w\) 和 \(b\);这就是下一页介绍的第四部分。
III. 用交叉熵衡量预测错误 Lec 4 · Sep 3
损失可以理解为给预测开出的“罚单”。这里要比较模型给出的概率 \(\hat y = \sigma(w \cdot x + b)\) 和真实标签 \(y \in \{0, 1\}\),把罚分记作 \(L(\hat y, y)\)。真实标签在英文材料中也常叫 ground truth 或 gold label。模型给正确答案分配的概率越高,损失就应该越小。
让模型给已经观察到的答案更高的概率
回想抛硬币的例子:观察到 (H, H, H, T),把正面概率设为 \(p=0.75\),就能使这组数据最可能出现。这里沿用同一个思路,只是标签的概率现在取决于输入。
这称为条件最大似然估计(conditional maximum likelihood estimation):选择 \(w,b\),让模型在看到输入后,尽可能给真实标签较高的概率。也可以最大化概率的对数,因为取对数不会改变大小顺序。对单个样本,写成:
对整套训练数据,则把每个样本的对数概率相加。先看一个样本:如果 \(y=1\),正确答案的概率就是 \(\hat y\);如果 \(y=0\),正确答案的概率就是 \(1-\hat y\)。两个情况可以合并成同一个式子:
这里的指数负责“选择”正确的一项:标签为 1 时,第二个因子的指数为 0,所以该因子等于 1;标签为 0 时,第一个因子等于 1。取对数之后,不需要的那一项会被乘以 0。留下的结果,就是模型对真实答案给出的对数概率。
加一个负号,就能改成最小化问题
正确答案的对数概率越大越好,而损失越小越好。在对数概率前加上负号,就把这两个目标统一起来。得到的就是二分类交叉熵(cross-entropy),也称为正确标签的负对数似然:
假设真实标签 \(y=1\)。如果模型给出 \(\hat y=0.9\),损失为 \(-\log 0.9\approx0.105\);如果它只给出 \(\hat y=0.1\),损失则为 \(-\log 0.1\approx2.30\)。把正确答案的概率估得很低,就会受到更大的惩罚。
只有正确类别的概率达到 1,损失才等于 0。对于有限的 sigmoid 输入,这个概率只能趋近于 1;而正确类别的概率越接近 0,损失就越大,没有上界。
- 先计算加权分数,再用 \(\hat y = \sigma(w \cdot x + b)\) 得到概率。以 0.5 为阈值,就能把概率转成类别判断。
- 交叉熵就是正确答案概率的负对数。它来自最大似然的思路,与估计 n-gram 概率的原理相同,只是这里以输入为条件。
- 训练要找到一组 \(\theta=[w;b]\),让训练样本的平均交叉熵下降。下一页用梯度下降说明具体怎么更新。