M09:从零实现 Logistic Regression
Logistic Regression 用线性特征组合预测对数优势,再经 sigmoid 映射为 0 到 1 的分数,并以交叉熵学习参数。
内容类型:预习教材(不代表已完成)
日期:2026-09-01
阶段:P1 · AI Model Engineering 90
周次:W2 · 概率、经典 ML、校准与决策损失
节奏:周二最小实现
状态:教材已备;学习未完成
标签:Sigmoid、BCE、Logistic Regression、梯度下降、AML
一句话定义
Logistic Regression 用线性特征组合预测对数优势,再经 sigmoid 映射为 0 到 1 的分数,并以交叉熵学习参数。
学习目标
- 从 log-odds 推出 sigmoid 的概率形式。
- 理解二元交叉熵为何奖励正确且自信、重罚错误且自信。
- 手写 forward、loss、gradient 和 update 的最小循环。
- 知道特征尺度、正则化与数值稳定性的影响。
核心知识
模型先计算 z = wᵀx+b,再令 p = σ(z)=1/(1+e⁻ᶻ)。等价地,log[p/(1-p)] = z,即特征对“阳性优势的对数”线性相加。系数 wⱼ 每增加一个单位,使 odds 乘以 eʷʲ;但只有在其他特征保持不变且特征定义合理时,这个解释才成立。
单样本 BCE 为 L = -[y log p+(1-y)log(1-p)]。若 y=1,p 越接近 1 损失越小;若 y=0,p 越接近 0 越小。把 sigmoid 与 BCE 合并后,对 logit 的梯度简洁为 ∂L/∂z=p-y,因此参数梯度为 (p-y)x,偏置梯度为 p-y。
数值实现不要直接在极端 p 上取 log。稳定形式可基于 logit 计算 max(z,0)-zy+log(1+e⁻|z|)。批量训练时对样本损失求均值,使梯度尺度不随 batch size 线性增长。L2 正则会在目标中加入 λ‖w‖²,对梯度增加 2λw,抑制过大系数但不自动解决数据偏差。
机制与推导
从 BCE 对 z 求导:∂L/∂p = -y/p+(1-y)/(1-p),而 ∂p/∂z=p(1-p)。相乘并整理得到 p-y。这个消去结果说明 sigmoid+BCE 在正确组合下比单独看 sigmoid 导数更稳定,也解释了预测高于标签时梯度推动 z 下降,预测低于标签时推动 z 上升。
可构造合成 AML 特征:近 24 小时交易次数、金额 z-score、新设备标志、收款方历史风险。先明确它们只是教学数字,不代表真实客户。标准化连续特征可避免某一大尺度特征主导梯度;二元标志通常无需同样缩放。
最小练习
- 准备 6~12 条合成样本、2~4 个特征和二元标签。
- 初始化小权重,手写 sigmoid 与稳定 BCE。
- 手算一条样本的 z、p、p-y 和一个权重梯度。
- 写一个短训练循环,每轮执行 forward、平均 loss、gradient、update。
- 只计划记录初始/后续 loss 与少量分数;未运行不得填结果。
常见误区
- 名称含 regression 就以为只能预测连续值;它常用于二分类。
- 把 sigmoid 输出天然当作校准概率;训练分布与采样会影响解释。
- 特征量纲差异很大却直接用同一学习率,导致优化困难。
- 在类别不平衡数据上只看 accuracy。
- 将系数解释为因果作用,忽略共线性、选择偏差与遗漏变量。
金融场景连接
Logistic Regression 是风险建模的重要基线:结构透明、训练快速、容易检查特征方向。它不应因为“简单”被跳过;如果小 MLP 无法稳定超过它,问题可能在数据、评估或任务本身,而不一定需要更复杂模型。
自检问题
- logit 与 probability 有什么区别?
- 为什么 sigmoid+BCE 对 logit 的梯度是 p-y?
- 批量损失求和与求均值会怎样影响学习率解释?
- 一个正系数能否证明该特征导致风险升高?
专业课程对齐
- Stanford CS229 Materials:对应逻辑回归、最大似然与梯度推导,是本日从零实现的主线材料。
- PyTorch Tutorials:对应张量操作和基础训练循环,用来核对手写实现的 shape、dtype 与更新步骤。
- MIT 6.S191:选读分类与优化部分,把逻辑回归视为最小神经网络基线。
深入学习提示
先手推二元交叉熵对 logit 的导数 ∂L/∂z=p-y,再精读 CS229 的似然解释;之后只用张量运算完成前向、损失、梯度和更新,最后才与 PyTorch 官方习惯对照。应观察 bias 的广播、batch 平均、特征尺度和数值稳定性;计算损失时优先从 logits 使用稳定形式,而不是直接计算 log(sigmoid(z))。反例包括线性不可分数据、严重类别不平衡、强共线特征和极端 logit 溢出。还要用一个简单二维数据画出 wᵀx+b=0 决策边界,确认“概率模型”仍受线性边界限制;这能防止把训练成功误解为表达能力足够。
学后填写区
- 合成特征定义:____
- 单样本手算:____
- 最小实现位置:____
- 实际运行观察(未运行留空):____
- 实际学习日期与用时:____