type: daily_note

title: Phase 2.1 Day 4 — 多元线性回归 + 向量化

date: 2026-07-23

person: 吴恩达

day: 4

topics: [多类特征, 向量化, 多元线性回归, np.dot, 梯度下降实现]

 

2026-07-23 学习笔记

 

笔记区

 

核心观点

 

多类特征(Multiple Features):现实问题不止一个特征。房价=面积×卧室数×楼层,SOH=循环次数×温度×放电深度。写法从 ŷ = wx + b 变成 ŷ = w₁x₁ + w₂x₂ + ... + wₙxₙ + b

 

向量化(Vectorization):用 np.dot(w, x) + b 替代手写 for 循环,底层用 BLAS 并行算,比 Python 循环快几十到几百倍

 

多元线性回归梯度下降:每个 wⱼ 各自求偏导,公式形式和单变量完全一样,只是从单个 w 变成对每个 wⱼ 算一次

 

两个符号体系:w 作为向量(w = [w₁, w₂, ..., wₙ]) vs w 作为标量——区分清楚

关键方法/流程

 

单特征 vs 多特征对比:

 

单特征 多特征

模型 ŷ = wx + b ŷ = w₁x₁ + ... + wₙxₙ + b

参数 w (标量), b w (向量), b

预测计算 w*x + b np.dot(w, x) + b

梯度 ∂J/∂wⱼ ∂J/∂w = 1/m·Σ(ŷ-y)x ∂J/∂wⱼ = 1/m·Σ(ŷ-y)xⱼ

 

向量化计算预测值:

 

# 替代 for 循环

ŷ = np.dot(w, x) + b

# w 和 x 都是长度相同的向量

 

梯度下降(单特征版)代码框架:

 

x = np.array([1.0, 2.0])

y = np.array([300, 500])

w, b = 0, 0

m = 2

alpha = 0.01

dj_dw, dj_db = 0, 0

 

for i in range(m):

    f_wb = w * x[i] + b

    dj_dw += (f_wb - y[i]) * x[i]

    dj_db += f_wb - y[i]

 

dj_dw /= m

dj_db /= m

w = w - alpha * dj_dw

b = b - alpha * dj_db

 

实战记录

 

验证题:w = [-0.02, -0.1, -0.05], x = [500, 35, 80], b = 100, y = 90

ŷ = np.dot(w, x) + b = 82.5 ✅

∂J/∂w₁ = (82.5 - 90) × 500 = -3750 ✅

梯度为负 → w₁ 应该增大(模型低估了,往上调)

 

线索区(学完后合上材料,自问自答)

 

Q: ŷ = w·x + b 和 ŷ = wx + b 有什么区别?

A: 前者是向量点积(多特征,w 和 x 都是向量),后者是标量乘法(单特征,w 和 x 都是标量)。多特征时 w·x = w₁x₁ + w₂x₂ + ... + wₙxₙ。

 

Q: 为什么用 np.dot 而不是 for 循环?

A: np.dot 底层调用 BLAS(基础线性代数库),用 C/Fortran 并行计算,比 Python for 循环快几十倍。特征越多差距越大。

 

Q: 多元线性回归的梯度公式和单变量有什么不同?

A: 形式上完全一样,都是 ∂J/∂wⱼ = 1/m·Σ(ŷ - y)·xⱼ。区别是单变量只算 1 个 w,多变量要对每个 wⱼ 算一次。可以并行算(向量化)。

 

Q: 批量梯度下降中 dj_dw 累加完为什么除以 m?

A: 要取平均梯度。每个样本贡献一个梯度,∑ 是所有样本梯度之和,除以 m 得到平均梯度,这样参数更新步长不受样本数量影响。

.

Q: 第一阶段的实验

A: Lab03 — Model Representation (单特征线性回归模型,调 w/b 看拟合线);Lab04 — Cost Function (实现 MSE J=1/(2m)Σ(ŷ-y)²,滑块看不同 w 下的代价);Lab05 — Gradient Descent (从零实现 compute_gradient + gradient_descent 函数,跑 10000 轮看参数收敛,看学习率太大发散的现象)

 

总结(50字以内)

 

多特征→向量化→多元回归梯度下降。代码上从标量 w 变成向量 w,用 np.dot 替代 for 循环,梯度公式形式不变但要对每个特征单独算。

 

复习卡片

 

概念 一句话 我的场景

多类特征 多个输入特征,每个特征有自己的权重 wⱼ SOH 预测:循环次数×温度×放电深度

向量化 np.dot(w,x) 替代 for 循环,底层并行计算 多元线性回归的快速预测计算

多元线性回归梯度下降 每个 wⱼ 各自求偏导,形式和单变量一致 多特征电池寿命预测模型的参数训练

学习率 α 过大 代价发散,参数震荡,不收敛 lab 里 alpha=0.8 时 cost 指数级增长

compute_gradient 实现 ∂J/∂w 和 ∂J/∂b 的累加 + 取平均 lab05 的核心函数,for 循环遍历每个样本

 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐