准大二学生从0开始学AI——机器学习Day4
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 循环遍历每个样本
更多推荐



所有评论(0)