线性回归
线性回归(Linear Regression) 就是要在杂乱的数据点中,寻找一条“最契合”的直线,用来揭示变量之间的数量关系,并预测未来。

多元线性回归
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from mpl_toolkits.mplot3d import Axes3D
# 让图里的中文能正常显示(按顺序尝试多种常见中文字体)
plt.rcParams['font.sans-serif'] = [
'Noto Sans CJK SC', 'Source Han Sans SC', 'WenQuanYi Zen Hei',
'SimHei', 'Microsoft YaHei', 'PingFang SC', 'Heiti SC',
'Arial Unicode MS', 'DejaVu Sans'
]
plt.rcParams['axes.unicode_minus'] = False
# 1) 先造一批“示例房屋数据”
# 设置随机种子以保证结果可复现
np.random.seed(42)
# 生成 150 个样本的面积和房龄数据
n_samples = 150
# 面积在 50 到 200 平方米之间,房龄在 0 到 50 年之间
area = np.random.uniform(50, 200, n_samples)
age = np.random.uniform(0, 50, n_samples)
# 这里人为设定“价格生成规则”:
# 价格 = 面积影响 + 房龄影响 + (面积和房龄一起作用) + 常数 + 随机噪声
# 其中 area*age 就是“交互项”,表示两个因素叠加后的共同影响
price = 2 * area - 1 * age + 0.05 * (area * age) + 100 + np.random.normal(0, 10, n_samples)
# 2) 组织模型输入:面积、房龄、交互项(面积*房龄)
interaction_term = area * age
X = np.column_stack((area, age, interaction_term))
# 3) 用线性回归拟合数据
model = LinearRegression()
model.fit(X, price)
# 4) 为画曲面准备网格点(把面积和房龄都切成很多小点)
area_range = np.linspace(50, 200, 30)
age_range = np.linspace(0, 50, 30)
Area, Age = np.meshgrid(area_range, age_range)
# 在每个网格点上,按训练出的公式计算预测价格
# 公式:y = w1*x1 + w2*x2 + w3*(x1*x2) + b
Price_pred = (model.coef_[0] * Area +
model.coef_[1] * Age +
model.coef_[2] * (Area * Age) +
model.intercept_)
# 5) 画 3D 图
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
# 散点:真实样本点
ax.scatter(area, age, price, c=price, cmap='viridis', alpha=0.6, label='房产成交数据')
# 曲面:模型学到的价格变化趋势
surf = ax.plot_surface(Area, Age, Price_pred, cmap='coolwarm', alpha=0.4, antialiased=True)
ax.set_xlabel('面积 ($x_1$)')
ax.set_ylabel('房龄 ($x_2$)')
ax.set_zlabel('价格 ($y$)')
plt.title('带有交互项的回归:平整平面演变为扭曲曲面')
fig.colorbar(surf, ax=ax, shrink=0.5, aspect=10)
plt.show()

| 模型类型 | 方程形式 | 几何形状 | 变量关系 |
|---|---|---|---|
| 多元线性回归 | $y = \sum w_i x_i + b$ | 平面 (Hyperplane) | 变量之间互不相干,各自独立对结果做贡献。 |
| 带交互项的回归 | $y = … + w_{ij}(x_i x_j) + b$ | 扭曲曲面 (Warped Surface) | 变量之间存在协同或拮抗作用,一个变量的影响力取决于另一个变量。 |
多元线性回归
\[y = \sum_i w_i x_i + b\]带交互项的回归
\[y = \sum_i w_i x_i + \sum_{i,j} w_{ij} x_i x_j + b\]损失函数
损失函数是一个数学公式,用来计算模型的预测值 ($y_{pred}$) 与真实值 ($y_{true}$) 之间的差异
\[y = w_1 x_1 + w_2 x_2 + w_{12}(x_1 x_2) + b\]| 组件 | 物理意义 | 图形表现 | 机器学习中的角色 |
|---|---|---|---|
| 权重 (Weight, w) | 重要程度/斜率 | 决定直线的倾斜角度。 | 代表特征对结果的贡献强度与方向(正相关或负相关)。 |
| 偏置 (Bias, b) | 基础分/截距 | 决定直线在 Y 轴上的上下平移。 | 补偿预测值与真实值之间的整体系统性偏差。 |
在寻找最好的模型参数w和b之前,我们需要两个内容:
- 一种模型质量的度量方式
- 一种能够更新模型以提高模型预测质量的方法
均方误差 (Mean Squared Error, MSE)
\[J(w, b) = \frac{1}{n} \sum_{i=1}^{n} (y^{(i)} - \hat{y}^{(i)})^2\]
总 MSE 就是图中所有阴影正方形面积的平均值
- 视觉化“平方”:当你看到代码中画出的蓝色矩形(虽然为了美观做了比例调整),你会意识到 MSE 其实是在衡量误差围成的面积。
- 正向与负向:样本 1 预测高了(差值为正),样本 2 预测低了(差值为负)。通过公式中的平方,它们都变成了正数。
- 对异常值的敏感性:你可以试着在代码里把“样本 3”的预测值改成 15.0,你会发现公式里的平方项会从 9.0 瞬间爆炸到极大的数值,从而拉高整个 MSE。这就是为什么 MSE 会强迫模型去特别关照那些偏离太远的坏点
解析解
对于线性回归这种简单的模型,其实存在一种可以一步到位算出最优权重 $w$ 和偏置 $b$ 的数学方法。这个“标准答案”就被称为解析解(Analytical Solution),或者叫正规方程(Normal Equation)。
\[w = (X^T X)^{-1} X^T y\]

损失函数(MSE)的“形状”决定了结局
右图中的黑色曲线(抛物线)就是你的均方误差(MSE)。
- 每一个随机尝试的红点,都对应着这条曲线上的一个高度。
- 解析解的任务,就是不需要通过踩点,直接利用微积分算得这个“碗底”的横坐标。
为什么解析解是“静态”的?
在这个动画里,你会发现第一阶段红线在疯狂跳动,而第二阶段绿线出现后就一动不动。 这就是解析解的特征:它是数学上的必然结果。 只要你的 100 组数据($X, y$)不变,算出来的 $w$ 就是永恒不变的最优值。
解析解存在的问题
- 计算效率问题:特征越多,算得越慢
- 内存瓶颈问题:贪心的“内存吞噬者”
- 数值稳定性问题:当矩阵“塌陷”时
- 适用范围局限:只认 MSE 这一种标准
- 缺乏“增量学习”能力
“解析解是机器学习中的‘公式化真理’,它揭示了问题的数学本质。但在大数据和深度学习的战场上,我们往往需要放弃这种‘一次性的完美’,转而拥抱梯度下降这种‘渐进式的卓越’
随机梯度下降

| 维度 | Batch GD (全量梯度下降) | Minibatch SGD (小批量随机) |
|---|---|---|
| 单步样本量 | 包含整个数据集的所有样本 | 随机抽取的小部分样本 (如 32, 64) |
| 动画轨迹 | 平滑直线:直奔当前感知的最低点 | 乱序抖动:像醉汉一样边走边晃 |
| 计算速度 | 极慢:单次更新需遍历全量数据 | 极快:单次更新仅需计算少量样本 |
| 硬件利用 | 内存压力大,难以处理超大规模数据 | GPU 友好,适合大规模并行计算 |
| 收敛特性 | 稳定收敛到导数为 0 的点 | 在最小值附近震荡,需配合衰减学习率 |
| 避障能力 | 容易困在微小的局部最小值(死板) | 随机噪声能帮助模型跳出浅坑(灵活) |
💡 为什么动画里的绿球(Minibatch SGD)能赢?
- 时间效率:虽然绿球在动画里看起来在走弯路(抖动),但在现实世界中,红球计算 1 步的时间,绿球已经跑了 100 步了。
- 跳出陷阱:在 3D 的非凸地形中,全量梯度(红球)太“老实”,遇到小坑就停。而小批量的随机噪声(绿球)相当于给球加了一个“微小震动”,让它有机会跳过局部最优,找到全局最优。
全量梯度下降 (Batch GD) 的现实困境
| 困境维度 | 表现描述 | 产生的后果 |
|---|---|---|
| 内存溢出 (OOM) | 必须将整个数据集一次性载入内存或显存。 | 面对 TB 级别的数据,硬件成本将不可想象。 |
| 计算冗余 | 数据集中往往存在大量相似样本(如 100 万张猫的照片)。 | 为了算一个梯度去重复遍历相似数据,极其低效。 |
| 更新频率极低 | 只有遍历完所有数据后才能更新一次参数。 | 训练大型模型可能需要数小时才能看到一次进度。 |
| 陷阱困守 | 梯度路径过于“死板”,缺乏随机性。 | 极其容易卡在平滑的局部最小值或鞍点处。 |
并行计算特性对比
| 特性 | 单样本 SGD (Size=1) | Minibatch SGD (Size=32~256) | Batch GD (Size=All) |
|---|---|---|---|
| 并行度 | 极低,无法利用 GPU 优势 | 高,完美适配 GPU 架构 | 极高,但受限于显存容量 |
| 计算吞吐量 | 慢 (系统开销占比高) | 极快 (吞吐量与延迟的最佳平衡) | 慢 (数据搬运成本溢出) |
| 显存占用 | 极低 | 适中 | 极高 (容易导致 OOM) |
多个 Nvidia GPU 的协同作战
- 分发 (Broadcast):将相同的模型参数发送到所有 GPU 上。
- 计算 (Compute):
- 每块 GPU 获得一部分数据(子批次)。
- 各自执行前向传播(Forward)和反向传播(Backward)。
- 产出局部梯度 (Local Gradients)。
- 聚合 (All-Reduce):
- 核心通信环节。利用 Nvidia NCCL 库,所有 GPU 互相交换梯度。
- 最终每块 GPU 都拥有了全量数据的平均梯度。
- 同步 (Step):所有 GPU 根据相同的平均梯度更新权重,确保下一轮开始前模型依然一致。
AI 数据中心连接图

单机
┌───────────────────────┐
│ 单台服务器 │
│ │
│ GPU0 ── NVLink ── GPU1
│ │ ╲ ╱ │
│ │ ╲ ╱ │
│ GPU2 ── NVSwitch ── GPU3
│ │ ╱ ╲ │
│ │ ╱ ╲ │
│ GPU4 ── NVLink ── GPU5
│ │
│ │ │
│ PCIe │
│ │ │
│ CPU │
│ │ │
│ IB 网卡 │
└───────────────────────┘
| 通信路径 | 技术 | 特点 |
|---|---|---|
| GPU ↔ GPU | NVLink / NVSwitch | 极高带宽 |
| GPU ↔ CPU | PCIe | 中等带宽 |
| 服务器 ↔ 外部 | InfiniBand 网卡 | 跨机通信 |
多机(同一机架内)
┌─────────────── 机架 ───────────────┐
┌────────────┐ ┌────────────┐
│ 服务器 A │ │ 服务器 B │
│ (8 GPUs) │ │ (8 GPUs) │
└──────┬─────┘ └──────┬─────┘
│ │
│ InfiniBand │
└────────┬────────────┘
│
┌───────────┐
│ Leaf 交换机 │
└───────────┘
- 每台服务器通过 IB 网卡接入 Leaf 交换机
- 服务器之间通过 IB 交换机互联
- NCCL 在此层构建跨节点 Ring
多机架(数据中心级)
┌─────────────── Spine 交换机 ───────────────┐
│ │ │
┌───────┴───────┐ ┌───────┴───────┐ ┌───────┴───────┐
│ Rack 1 │ │ Rack 2 │ │ Rack 3 │
│ │ │ │ │ │
│ [Leaf] │ │ [Leaf] │ │ [Leaf] │
│ │ │ │ │ │ │ │ │
│ Servers... │ │ Servers... │ │ Servers... │
└───────────────┘ └───────────────┘ └───────────────┘
- Leaf 连接服务器
- Spine 连接各个 Leaf
- 实现全互联低阻塞网络
Vera Rubin
Vera Rubin 并不是“只是 GPU + 机箱”,而是一个完整的自家计算体系,包括 CPU、GPU、互联总线、网络、DPU 等核心部件基本由 NVIDIA 自己设计或主导整合。
在 AI 基础设施层面 NVIDIA 的角色从“芯片供应商”提升到了“完整系统方案供应商”
| 维度 | Blackwell / Grace Blackwell | Vera Rubin |
|---|---|---|
| GPU 性能 | 强大 | 更强(更高 PFLOPS) |
| CPU 性能 | 良好 | 更高(自研 Vera) |
| 内存 | HBM3e | HBM4(更高带宽) |
| 互联 | NVLink 旧版 | NVLink 6 / 更强互联 |
| 系统规模 | Rack 级别 | 整个平台级协同 |
| 性能 / 功效 | 优秀 | 更高、更节能 |
| 安全 & 平台能力 | 有限 | 机密计算集成更全面 |
0
次点赞