线性模型

以房价预测为例引入线性模型 y = w·x + b,理解权重、偏置与单层感知机,并使用 NumPy 与 PyTorch tensor 完成构造数据与前向计算的实践。

知识课 · 约 30 分钟 · 更新于 2026-06-14

从房价预测说起

上节课我们看到,深度学习的工作流由 四大组件 组成——数据、模型、目标函数、优化算法。 从这节课开始,我们会逐节课展开这四件事;今天先从最关键的 模型 讲起,并且选最简单的一种: 线性模型 。

什么是「模型」?回到上节课的定义——它是一个把 输入 映射成 输出 的函数。 要把这个抽象定义讲清楚,最好的办法是看一个具体例子。下面我们用 预测房价 这个生活化的任务,来感受一个最简单的模型长什么样。

假设我们想根据房子的一些属性来预测价格。属性包括面积、楼层、卧室数量, 分别用 表示——它们就是模型的 输入 ; 要预测的价格 就是模型的 输出 。

我们先大胆假设:价格是各个属性的 线性函数 (即「按比例叠加」),那么:

想预测房价,就是要确定 的值——但怎么确定呢? 这就是后续几节课要解决的问题。本节课先聚焦于 定义模型 本身。

线性模型

我们刚才在房价例子里写下的式子 ,其实有一个通用的名字。像这样 「输出是一组输入的加权求和,再加上一个偏置」 的模型,就叫做 线性模型 (Linear Model)。它是深度学习里最基础、也最重要的一种结构—— 我们后续要讲的神经网络,本质上就是把多个线性模型串起来再额外引入一些非线性变换得到的。

房价例子用的是 3 个属性。把它从 3 个推广到任意 个属性,就得到线性模型的一般形式:

  • 输入为 维向量:
  • 参数为 维权重向量 和标量偏置

输出是输入的加权求和加偏置:

写成矩阵形式(向量点积):

换一种画法:单层感知机

前面我们用 公式 写出了线性模型。其实它还有一种更直观的 网络图 画法: 左侧画 个输入节点,右侧画 1 个输出节点,每条连线上标一个权重 , 输出节点再加上偏置 。

这个网络图有一个专门的名字—— 单层感知机 (Perceptron)。 所以请记住一个简单的对应关系:

  • 线性模型 = 单层感知机 ,只是同一个东西的两种表达方式:前者是公式语言,后者是网络图语言
  • 「单层」指只有一层权重连线;后续课程会把它堆叠起来,演化成 多层感知机 ,再到更复杂的神经网络

下面是一个 3 → 1 的示例图,你可以通过控件调节神经元数量来直观感受:

实践准备:数据从哪里来

模型的结构搭好后, 、 还只是随机初始化的数值, 不携带任何关于具体任务(房价、图像、语言)的先验知识,自然给不出有意义的预测。 要让这组参数从随机起点收敛到能刻画真实规律的取值,必须依赖一批 带标签(标准答案)的样本 作为监督信号—— 这批样本就是 训练数据 ,也是上节课提到的四大组件之一。

深度学习项目里的训练数据,绝大多数来自「 采集 + 标注 」: 从图像、文本、传感器等渠道获取原始信号,再为每条样本打上标签, 组成 形式的有监督样本—— ImageNet 的百万级标注图片、 卖房网站上的成交记录都是这样得来的。

本节课的目标只是把线性模型的训练流程跑通,无须真去爬一份房价数据集, 因此我们换一种学习专用的做法—— 构造数据 : 人为指定一个真实规律 (即 、 ), 在这条直线上等间距撒点,再叠加少量随机噪声模拟数据的不完美。 这样得到的样本, 正确答案是已知的 ——模型训完,把学到的 、 与真实值一对照,训练流程是否跑通就一目了然。

构造过程涉及生成等间距的 、按规律计算 、再加噪声,都是数组运算, 正好是 NumPy 和 PyTorch 的强项。下面就用这两个工具把样本造出来。

实践:用 NumPy 构造数据

NumPy (Numerical Python 的缩写) 是 Python 中做数值计算最基础的库。如果你之前没用过,不用担心—— 我们会从最基本的「创建一个数组」开始,一步步学到构造训练数据所需的全部操作。

你可以把 NumPy 的数组想象成一个 高效的数字表格 : 一维数组像一行数字,二维数组像一张表格,可以方便地进行整行整列的批量运算。

下面只演示构造数据所需的核心操作;本节末尾的 附录 A 提供了更完整的 NumPy 常用语法速查表,按需翻阅即可。

实践:用 PyTorch 做同样的事

PyTorch 是当前最流行的深度学习框架。 它的核心数据结构叫 Tensor (张量),用法和 NumPy 的 ndarray 非常相似。

那为什么不直接用 NumPy?因为 PyTorch 的 Tensor 多了两个关键能力:

  • 自动微分 :训练模型时需要计算梯度,PyTorch 可以自动帮你算
  • GPU 加速 :可以利用显卡的并行计算能力,大幅加速大规模运算

现在先不用关心这两个能力——本节课只需要知道,PyTorch 的 Tensor 操作和 NumPy 几乎一样。

同样地,下面只演示构造数据相关的几条 API;本节末尾的 附录 B 提供了更完整的 Tensor 常用语法速查表。

实践:动手感受 w 和 b 的影响

到这里,数据有了,模型也定义了( )。 但模型里的 和 取多少,预测才贴合数据呢?

其实这就是 深度学习的核心任务 ——给定数据,找到一组合适的参数(这里是 和 ),让模型尽可能贴近真实规律。 后续几课会讲 怎么让计算机自动找到 这组参数;本节我们先 用手 找一找—— 拖动下面的滑块,亲自感受不同的 、 会让预测线变成什么样:

附录 A:NumPy 常用语法参考

主线课程中只用到了 NumPy 的一小部分语法。以下整理了更完整的速查表,不需要顺序阅读,遇到不熟悉的写法时翻回来对照即可。

附录 B:PyTorch Tensor 常用语法参考

以下是 PyTorch Tensor 的更完整参考,同样按需查阅即可。