Transformer 前置知识 06:神经网络,线性层与激活函数
数学基础讲完了,这一课开始搭模型。
神经网络听起来很神秘,其实只有两种零件:线性层和激活函数,反复叠起来就是神经网络。
一个神经元:加权求和 + 偏置
先看最小的单位:一个神经元。它做的事很简单:
把每个输入乘以一个权重,加起来,再加上一个偏置。
比如判断要不要带伞:
- 下雨概率 0.8,乘以权重 2
- 天色暗的程度 0.5,乘以权重 0.4
- 最后加上偏置 −1
这些权重和偏置,就是模型要学习的参数。
一层 = 一次矩阵乘法
把很多个神经元并排放在一起,就是一层。
每个神经元都在算一次点积(第 1 课),所以整层就是一次矩阵乘法(第 2 课):
:输入向量 :权重矩阵,每一行是一个神经元的权重 :偏置向量 :输出向量,每个元素是一个神经元的结果
这就是线性层,也叫全连接层。
1 | import numpy as np |
只用线性层,有个大问题
两个线性层叠在一起,先乘
等于乘以一个新的矩阵
而且线性层只能画直线(高维里是平面),可真实世界里,很多关系是弯的。
激活函数:给它掰个弯
解决办法是:在每一层后面,加一个激活函数。
最常用的是 ReLU:
小于 0 的变成 0,大于 0 的保持不变。就这么简单地一折:
- 叠起来的层不能再合并成一层
- 很多个”折线”拼在一起,网络就能拼出各种复杂的曲线
考考你:ReLU 的输入是 −3、0、2,输出分别是多少?
答案是 0、0、2。负数变成 0,其余的原样输出。
Transformer 里:GELU 与前馈网络
Transformer 里常用的是 GELU,它像一个平滑版的 ReLU,在 0 附近是圆滑过渡的:
每个 Transformer 层里都有一个前馈网络(Feed-Forward Network):
线性层 → GELU → 线性层
这个前馈网络,占了模型参数的很大一部分。
全部连起来
整个神经网络,就是线性层和激活函数一层一层叠起来。训练过程把前几课全部串在了一起:
| 步骤 | 用到的知识 |
|---|---|
| 前向计算:线性层 + 激活函数,算出输出 | 第 1、2、6 课 |
| 算误差:用交叉熵衡量猜得准不准 | 第 4、5 课 |
| 反向传播:倒着乘,求出每个参数的梯度 | 第 3B 课 |
| 梯度下降:沿梯度的反方向更新参数 | 第 3 课 |
小结
- 神经元 = 加权求和 + 偏置
- 线性层 = 很多神经元并排 = 一次矩阵乘法
- 只有线性层,叠多少层都等于一层,所以要加激活函数
- ReLU 把负数变成 0;Transformer 里常用更平滑的 GELU
- Transformer 的前馈网络:线性层 → GELU → 线性层
下一课讲分词与词嵌入:文字是怎么变成向量的。