分P:P15 ·
BV1ou411N7X3?p=15· 时长 1:07:13 · cid 1250615504 官方源:ML Lecture 5: Logistic Regression(YouTubehSXFuypLukA,2017-01-28 上传,4034 s,与 B 站时长差 1 s) 课程版本:2016/17 台大 ML Lecture 系列(旧课),不是 2021 版 讲义:Logistic Regression (v3).pdf,31 页;下文页码一律指 PDF 物理页 依据与边界:B 站匿名player/v2返回subtitle.list=[]且need_login_subtitle=true,YouTube 官方源亦无captionTracks。因此本笔记没有看视频画面、没有逐字稿,所有内容由讲义文字层 + 公式重推得到;凡称"讲义原例"处均给出页码,凡我自己补的例子均标【补充】。
1. 本节要解决什么问题
讲义 p16–p21 先摆出**生成式(generative)**路线做对照:先假设 \(P(x\mid C_i)\) 是高斯,估出 \(\mu,\Sigma\),再用贝叶斯公式反推 \(P(C_1\mid x)\)。这条路要先猜一个分布,猜错就全错。
P15 换**判别式(discriminative)**路线:不关心 \(x\) 是怎么生成的,直接假设后验概率有某个参数形式,用训练数据把参数"拧"到最像。三个步骤和前面完全同构:
- Function set:\(f_{w,b}(x)=P_{w,b}(C_1\mid x)\),形式定为 sigmoid 套线性打分;
- Goodness:给一组 \(w,b\),它"生成"这批标注数据的概率多大 → 最大似然;
- Find best:梯度下降。
一句话:逻辑回归 = 线性打分 + sigmoid + 交叉熵。名字里有 regression,干的却是分类。
2. 直观:为什么是 sigmoid
线性打分 \(z=w\cdot x+b\) 取值 \((-\infty,+\infty)\),而概率必须落在 \((0,1)\)。sigmoid
是一条单调、光滑、值域 \((0,1)\) 的"压缩器",且 \(\sigma(0)=0.5\)、\(\sigma(\pm\infty)\to 1/0\)(讲义 p2–p3)。于是
几何上,\(f=0.5 \iff z=0 \iff w\cdot x+b=0\),这是一张超平面:\(w\) 是它的法向量,\(b\) 决定它离原点多远。所以逻辑回归的决策边界天生是线性的——这一点决定了它后面所有的局限(见第 7 节)。
3. 符号与维度
| 符号 | 含义 | 维度/取值 |
|---|---|---|
| \(x\) | 一个样本的特征向量 | \(\mathbb{R}^{D}\) |
| \(x_{ni}\) | 第 \(n\) 个样本的第 \(i\) 维 | \(\mathbb{R}\) |
| \(w\) | 权重 | \(\mathbb{R}^{D}\) |
| \(b\) | 偏置 | \(\mathbb{R}\) |
| \(z\) | 线性打分 \(w\cdot x+b\) | \(\mathbb{R}\) |
| \(\sigma(\cdot)\) | sigmoid | \((0,1)\) |
| \(f_{w,b}(x)\) | 预测为 \(C_1\) 的概率 | \((0,1)\) |
| \(\hat y_n\) | 标签,\(C_1\!\to\!1\),\(C_2\!\to\!0\) | \(\{0,1\}\) |
| \(N\) | 训练样本数 | 正整数 |
| \(L(w,b)\) | 似然(越大越好) | \(\mathbb{R}_{>0}\) |
| \(\eta\) | 学习率 | \(\mathbb{R}_{>0}\) |
二分类时 \(P(C_2\mid x)=1-f_{w,b}(x)\),两个概率自动加和为 1。
4. 从最大似然到交叉熵
似然(讲义 p5–p7)。假定数据由 \(f_{w,b}\) 独立生成:
\(\hat y_n=1\) 时只剩 \(f(x_n)\),\(\hat y_n=0\) 时只剩 \(1-f(x_n)\)——这个写法只是把两种情况压成一行。取负对数(单调,不改变最优点):
右边正是两个伯努利分布 \(p=(\hat y_n,1-\hat y_n)\) 与 \(q=(f_n,1-f_n)\) 的交叉熵 \(H(p,q)=-\sum_x p(x)\ln q(x)\)。所以"最大似然"和"最小交叉熵"是同一件事,不是两种方法。
5. 梯度:为什么恰好是 \(p-y\)
对单个样本,记 \(f=\sigma(z)\),\(z=\sum_i w_i x_i+b\)。先用链式法则:
关键一步是 \(\sigma'(z)=\sigma(z)(1-\sigma(z))\)(讲义 p9–p10 就是拆这个)。代回:
写成更新式:
三个可直接用的读法:
- 误差信号就是 \(p-y\),范围 \((-1,1)\),预测对了就是 0,错得越离谱越大;
- 它不含 \(\sigma'\)。这是交叉熵相对平方误差的核心优势——就输出层而言,sigmoid 的饱和区不会把梯度掐死(隐藏层仍会因 \(\sigma'\) 逐层连乘而衰减);
- 和线性回归的更新式长得一模一样,只是线性回归里 \(f=w\cdot x+b\),这里 \(f=\sigma(w\cdot x+b)\)(讲义 p12 把两栏并排放,就是在提示这一点)。
6. 为什么不用平方误差
若硬用 \(L=\frac12\sum_n(f_n-\hat y_n)^2\),则
多出来的 \(f(1-f)\) 在 \(f\to 0\) 或 \(f\to 1\) 时趋于 0。最该被纠正的时候(错得很离谱),梯度反而消失了(讲义 p13–p14 用两张图分别画 \(\hat y=1,f=1\) 与 \(\hat y=1,f=0\) 两种情形,标了 "far from target" 却梯度为 0)。
【补充】数值对比(Python 计算,\(\hat y=1\)):
| \(f\) | 交叉熵梯度 \(\lvert f-\hat y\rvert\) | 平方误差梯度 \(\lvert 2(f-\hat y)f(1-f)\rvert\) | 倍数 |
|---|---|---|---|
| 0.98(几乎对) | 0.0200 | 0.000784 | 25.5× |
| 0.02(几乎全错) | 0.9800 | 0.038416 | 25.5× |
倍数相同是巧合(\(2f(1-f)\) 在 \(f\) 与 \(1-f\) 处对称),但绝对量级说明问题:全错时交叉熵给 0.98 的信号,平方误差只给 0.038。讲义 p15 那张等高线图(引自 Glorot & Bengio 2010)画的是同一结论:平方误差的曲面在大偏差区近乎平台。
7. 多分类:softmax 与交叉熵
\(K\) 类时每类一组参数 \((w_k,b_k)\),先打分再归一化(讲义 p22–p23):
性质:\(0<y_k<1\)、\(\sum_k y_k=1\),可解释为 \(P(C_k\mid x)\)。softmax 有平移不变性(所有 \(z_k\) 同加常数,输出不变),所以单独一个类的 bias 无法被确定,实际实现常固定一个或靠正则。
【补充】数值(Python):\(z=(3,1,-3)\) → \(e^z=(20.0855,\,2.7183,\,0.0498)\),和 \(22.8536\),输出 \((0.879,\,0.119,\,0.002)\)。讲义 p22 印的是 \(0.88,\,0.12,\,\approx 0\),一致。注意 \(z\) 只差 6,概率就差了 400 倍——softmax 是"赢家通吃"的放大器。
二分类是 \(K=2\) 的特例:可以证明 softmax 两组参数等价于一组参数的 sigmoid,所以不必写两套。
8. 判别式 vs 生成式:同一个模型,不同的解
讲义 p16–p21 讲了一件容易忽略的事:生成式(高斯/朴素贝叶斯)推出的后验也是 \(\sigma(w\cdot x+b)\) 的形状,其中
也就是说:函数集相同,训练数据相同,但选出的 \(w,b\) 不同——因为生成式多了一个"\(x\) 服从高斯"的假设,这个假设把解往某个方向拉了。讲义 p17 给的实测是 73%(generative)vs 79%(discriminative)。
生成式的三个好处(p21,原文列点):需要的数据更少、对噪声更鲁棒、先验与类条件概率可以来自不同来源。判别式通常在数据充足时更准。两者没有绝对优劣,这是"假设换偏差"的经典案例。
9. 局限:一条直线切不开 XOR
讲义 p24–p25 的四点表:
| \(x_1\) | \(x_2\) | 类别 |
|---|---|---|
| 0 | 0 | C2 |
| 0 | 1 | C1 |
| 1 | 0 | C1 |
| 1 | 1 | C2 |
无论怎么取 \(w_1,w_2,b\),\(z=w_1x_1+w_2x_2+b\) 都无法让 \((0,1),(1,0)\) 在一侧、\((0,0),(1,1)\) 在另一侧——这是线性分类器的硬限制,不是训练不够。
讲义给的两条出路:
- 特征变换(p26):换成"到 \((0,0)\) 的距离"和"到 \((1,1)\) 的距离"两个新特征,点变成 \((0,2),(1,1),(1,1),(2,0)\),此时一条直线就能分开。但讲义自己也写 "Not always easy to find a good transformation"——手工找变换不可扩展。
- 级联逻辑回归(p27–p29):前一层若干逻辑回归各输出一个 \(x'_i\),后一层再拿 \(x'\) 做逻辑回归;p29 给出具体数值,如 \((0.27,0.27)\)、\((0.73,0.05)\)、\((0.05,0.73)\) 三点被后层线性分开。p30 直接写下 "Deep Learning!",并给神经元图。
这里必须说清两件事,否则概念会糊:
- 单个逻辑回归是线性分类器,不是深度网络;它只有一层可训练权重。
- 级联之后才是神经网络:每个 sigmoid 单元是一个"神经元",层数一多就叫深度网络。所以"逻辑回归是深度网络的基本积木"成立,"逻辑回归是深度网络"不成立。
10. 讲义原例(有页码才称课堂例)
| 例子 | 页码 | 内容 | 用途 |
|---|---|---|---|
| XOR 四点 | p24–p27 | 上表 + 特征变换后的 \((0,2),(1,1),(1,1),(2,0)\) | 说明线性边界失效 |
| 级联数值 | p28–p29 | \(x'_1,x'_2\) 取值 \(0.05/0.27/0.73\) | 说明级联可解 |
| 朴素贝叶斯 13 样本 | p18–p20 | \(P(C_1)=1/13,\ P(C_2)=12/13\);\(P(x_1=1\mid C_1)=1\),\(P(x_1=1\mid C_2)=1/3\) | 生成式在少量数据上的行为 |
| softmax 数值 | p22 | \(z=(3,1,-3)\to(0.88,0.12,\approx0)\) | 说明归一化 |
| 判别/生成准确率 | p17 | 73% vs 79% | 说明假设的代价 |
第 6 节的梯度倍数表与第 7 节的精确 softmax 值是【补充】计算,不是讲义原文。
11. 易错对照
| 常见误区 | 正确说法 |
|---|---|
| 逻辑回归是做回归的 | 它是分类模型,输出的是类别概率 |
| 输出直接就是类别 | 输出 \(P(C_1\mid x)\in(0,1)\),还要阈值(默认 0.5)才变成类别 |
| 逻辑回归 = 深度网络 | 单层线性分类器;级联/多层才是网络 |
| 平方误差也能训,没差 | 能跑,但 \(f(1-f)\) 让饱和区梯度消失,收敛慢很多 |
| \(\sigma'(z)=\sigma(z)(1+\sigma(z))\) | 是 \(\sigma(z)(1-\sigma(z))\),符号错会让梯度方向反 |
| 多分类就用 \(K\) 个独立 sigmoid | 类别互斥时用 softmax,保证概率和为 1 |
| 交叉熵是另一种损失,和似然无关 | 交叉熵 = 负对数似然,同一个目标 |
| 生成式和判别式是两种模型 | 高斯生成式推出后验后与逻辑回归同形,只是解不同 |
| 加正则能救训练 loss 高 | 不能。正则约束模型,训练 loss 高时加正则会更高(详见 P16) |
12. 自测(先自己写,再展开)
Q1. 从 \(L=\prod_n f_n^{\hat y_n}(1-f_n)^{1-\hat y_n}\) 推到 \(\partial(-\ln L)/\partial w_i=\sum_n(f_n-\hat y_n)x_{ni}\),写出关键两步。
参考答案
① 取负对数拆成逐样本和;② 对 \(z\) 求导时用 \(\sigma'(z)=\sigma(1-\sigma)\),得 \(\partial\ln f/\partial z=1-f\)、\(\partial\ln(1-f)/\partial z=-f\);③ 合并 \(-\hat y(1-f)+(1-\hat y)f=f-\hat y\);④ 再乘 \(\partial z/\partial w_i=x_i\)。
Q2. \(\hat y=1\)、\(f=0.02\)。分别算交叉熵与平方误差对 \(z\) 的梯度(不含 \(x\)),并解释差别。
参考答案
交叉熵:\(f-\hat y=-0.98\),绝对值 0.98。平方误差:\(2(f-\hat y)f(1-f)=2(-0.98)(0.02)(0.98)=-0.0384\),绝对值 0.0384。差 25.5 倍。原因:平方误差多乘了 \(f(1-f)\),在饱和区趋 0,正好在最需要学习时失去梯度。
Q3. 为什么逻辑回归分不开 XOR?给出两种补救并说明各自的代价。
参考答案
\(z=w_1x_1+w_2x_2+b\) 的等值线是直线,XOR 正负类不线性可分。补救:① 手工特征变换(如到 \((0,0)\) 与 \((1,1)\) 的距离),代价是要靠人找、不可扩展;② 级联多个逻辑回归,让模型自己学特征,代价是参数量/层数上升、需要反向传播训练——这就是深度网络的起点。
Q4. \(z=(3,1,-3)\),算 softmax 并说明为什么不能把三个输出分别过 sigmoid。
参考答案
\(e^z=(20.0855,2.7183,0.0498)\),和 22.8536,输出 \((0.879,0.119,0.002)\)。三个独立 sigmoid 之和不为 1(\(0.953,0.731,0.047\),和 1.731),不构成概率分布;softmax 的分母强制归一化,适合互斥多类。
Q5. 高斯生成式与逻辑回归的函数形式相同,为什么选出的参数不同?各自什么时候更优?
参考答案
生成式额外假设了 \(P(x\mid C)\) 为高斯(含朴素贝叶斯的条件独立假设),这个先验把解拉向"符合假设"的区域;判别式只看条件似然,不受此约束。数据少/噪声大/先验可信时生成式更稳(讲义 p21 的三条好处);数据充足时判别式通常更准(p17 的 79% vs 73%)。
13. 30 秒速记
线性打分 \(z=wx+b\) → sigmoid 得概率 → 最大似然即交叉熵 → 梯度 \( (p-y)x \),干净得不像话 → 平方误差会因 \(f(1-f)\) 饱和而学不动 → 多类用 softmax + CE → 决策边界是超平面,XOR 切不开 → 级联多个才成网络。它是线性分类器,不是深度网络。
与其他 P 的关系:按课程顺序,P14 的分类内容是本节前置,第 8 节的生成式做法可与那里对照;P12 的反向传播是第 5 节链式法则的规模化版本;P16 会接着讲"训练 loss 高不高"该怎么诊断,正好接第 11 节最后一条;P29 的 CNN 是第 9 节"级联"的现代形态。