线性层就像一个 "特征打分器",它的工作原理可以类比为老师给学生作业打分:
- 输入特征(x1-x5):相当于作业的各个评分项(比如解题步骤、书写工整度等)。
- 权重(w1-w5):相当于每个评分项的重要程度(比如解题步骤权重 0.8,书写权重 0.2)。
- 偏置(b):相当于基础分(比如所有项都 0 分也有 10 分基础分)。
线性层的计算过程就是:
总分 = 解题步骤得分 ×0.8 + 书写得分 ×0.2 + 基础分 10
假设我们有两类学生:
- 好学生(标签 1):解题步骤正确且书写工整
- 一般学生(标签 0):解题步骤错误或书写潦草
训练线性层的目标是调整权重和基础分,使得:
- 好学生的总分更高(比如平均分 80 分)
- 一般学生的总分更低(比如平均分 40 分)
这样就能通过总分快速区分两类学生。
假设我们要区分两类样本:
- 正类样本(标签 1):第 1 个数 > 第 5 个数(比如 x=[0.6,0.2,0.3,0.4,0.1],x [0]>x [4])
- 负类样本(标签 0):第 1 个数≤第 5 个数(比如 x=[0.1,0.2,0.3,0.4,0.6],x [0]≤x [4])
线性层的任务是给 5 个特征分配权重,使得:
- 正类样本的线性输出(总分)更大:
比如让 x [0] 的权重 w1 更大(如 w1=0.8),x [4] 的权重 w5 更小(如 w5=-0.5),这样当 x [0] 大、x [4] 小时,总分会更高。
- 负类样本的线性输出(总分)更小:
当 x [0] 小、x [4] 大时,w1x[0] + w5x [4] 会变小,导致总分更低。
训练的过程就像调收音机的音量旋钮:
- 初始状态:权重和偏置是随机的(比如 w1=0.1,w5=0.1),此时正类和负类的总分可能混在一起,无法区分。
- 反向传播:模型发现 "预测错误" 时,会告诉线性层:
- 如果正类样本的总分不够高(比如只得了 50 分),就把 w1 调大一点,w5 调小一点,让下次类似样本的总分变高。
- 如果负类样本的总分太高(比如得了 60 分),就把 w1 调小一点,w5 调大一点,让下次类似样本的总分变低。
- 反复调整:经过多次训练(比如 20 轮),权重会逐渐优化,最终让正类样本的总分普遍 > 0,负类样本的总分普遍 < 0。
线性层输出的总分可能是任意实数(比如 - 5 到 + 5),而 sigmoid 函数会把它转换为 0-1 之间的概率:
- 正类样本总分 > 0 → sigmoid (总分)>0.5 → 模型认为是正类的概率 > 50%
- 负类样本总分 < 0 → sigmoid (总分)<0.5 → 模型认为是负类的概率 > 50%
这就像把学生的总分转换为 "是好学生的概率":
- 总分 80 分 → 概率 80%(是好学生)
- 总分 40 分 → 概率 20%(是好学生)
| 线性层的角色 | 类比场景 | 目标 |
| 输入特征 x1-x5 |
学生作业的各项评分 |
不同项组合区分好学生 / 一般学生 |
| 权重 w1-w5 |
各项评分的重要程度 |
让好学生的总分更高 |
| 偏置 b |
基础分 |
调整总分整体高低 |
| 线性输出(总分) |
学生的最终得分 |
好学生得分 > 0,一般学生 < 0 |
| sigmoid (总分) |
是好学生的概率 |
好学生概率 > 50%,一般 < 50% |
| 阈值 0.5 判断 |
按概率判断是否为好学生 |
概率 > 50% 判为好学生 |
线性层通过学习权重和偏置,本质上是在寻找一个 "打分规则",使得:
- 正类样本(标签 1)的打分更高,转换为概率后 > 0.5
- 负类样本(标签 0)的打分更低,转换为概率后 < 0.5
这个过程不需要模型理解 "第 1 个数 > 第 5 个数" 的具体含义,只需要通过数据驱动,自动找到最能区分两类样本的打分方式。