机器学习数学 · 11
0% READ
课程首页
JUNIOR ML MATH / MATRIX

矩阵让神经网络一次计算一整批

向量装下一名学生的特征;矩阵像一张整齐的数据表,可以装下许多学生,也可以装下许多神经元的权重。行与列按规则相遇,一次乘法就完成大批重复计算。

行、列与形状行点乘列Wx+b批量计算
LEARNING ROUTE① 读懂矩阵形状② 每一行点乘向量③ 行与列配对④ 一次处理整批样本
00 / WHY MATRICES

如果有 30 名学生、8 个特征、16 个神经元,要写多少次内积?

逐个样本、逐个神经元计算会不断重复同一种工作。矩阵把数据和权重排成规则表格,让计算机一次完成所有“对应相乘再求和”。

一个向量

表示一个样本,交给一个或几个神经元分别打分。

30×

一个数据矩阵

每行放一名学生,一次送进同一层神经网络。

矩阵解决的四个问题

整齐存放按行放样本,按列放特征
共享规则整批样本使用同一组权重
批量内积一次算出多个神经元结果
利用硬件电脑和显卡擅长大规模矩阵运算
  • 能说出矩阵的行数、列数和形状
  • 能用“每行点乘向量”计算矩阵向量积
  • 能判断两个矩阵能否相乘及结果形状
  • 能解释 Y=XW+b 如何批量处理样本
01 / ROWS, COLUMNS & SHAPE

矩阵:按行、按列排好的长方形数字表

下面矩阵有 2 行、3 列,形状写作 2×3。先说行,再说列,就像先说教室有几排,再说每排几个座位。

社团活动数据表学生阅读运动音乐小林836小夏594阿诚758每一列是一种特征
数据矩阵常约定:每一行是一个样本,每一列是一种特征。
134−265
2 行横着读的两排数字
3 列竖着读的三组数字
2×3形状永远先行后列
A = [aᵢⱼ]  aᵢⱼ 表示第 i 行、第 j 列的元素
例:上面矩阵的 a₂₃=5。数学下标通常从 1 开始;很多编程语言索引从 0 开始,写程序时不要混淆。
02 / BASIC OPERATIONS

加法与数乘:仍然是对应格子逐项计算

矩阵加法

只有形状相同才能相加;相同位置的元素相加。

[[1,2],[3,4]] + [[5,6],[7,8]] = [[6,8],[10,12]]
标量乘矩阵

一个普通数乘矩阵时,要乘每一个格子。

2[[1,−1],[3,4]] = [[2,−2],[6,8]]
不要把两种“乘法”混在一起:标量乘矩阵是每格缩放;矩阵乘法不是对应格子相乘,而是“左边的行”与“右边的列”做内积。
03 / MATRIX × VECTOR

矩阵乘向量:矩阵的每一行分别给向量打一次分

第 10 章只有一组权重 w·x。现在把多组权重一行一行叠起来,就能同时得到多个分数。

134−265
×
24−3
=
25
第 1 行 · x
1×2+3×4+4×(−3)=2
第 2 行 · x
−2×2+6×4+5×(−3)=5
两个输出

两行各产生一个标量,合起来得到二维向量 (2,5)

形状检查:(2×3)·(3×1)=(2×1)。中间两个 3 必须相同,结果保留外侧的 2 和 1。
04 / INTERACTIVE LAB

拖动输入向量,看两行权重如何产生两个分数

矩阵 A 固定不动。改变 x 的三个特征,每一行都会独立做一次内积。

A×x
ROW SCORER / 行打分器
A=[[1,3,4],[−2,6,5]]
134−265
×
24−3
=
25
1×2+3×4+4×(−3)=2
−2×2+6×4+5×(−3)=5
第 1 行输出2
第 2 行输出5
每一行都读取同一个 x,但使用不同权重,所以得到不同分数。
05 / ONE NEURAL LAYER

神经网络的一层,就是许多神经元整齐排成矩阵

每一行权重属于一个神经元;输入向量同时交给所有行。加上每个神经元自己的偏差,再通过激活函数,就得到下一层向量。

z = Wx + b  →  y = activation(z)
x输入向量

一名样本的 n 个特征。

W权重矩阵

m 行神经元,每行 n 个权重。

b偏差向量

每个输出神经元一个可学习偏差。

形状连接:Wm×nxn×1,那么输出 zm×1。也就是“n 个输入特征 → m 个输出神经元”。
06 / MATRIX × MATRIX

矩阵乘矩阵:左边选一行,右边选一列,做内积

结果矩阵的每个格子,都来自一次“行点乘列”。计算一个格子时不要整张表一起看,只圈住那一行和那一列。

A:2×32 行,3 列
里面相同:3=3
所以可以乘
B:3×23 行,2 列
外面留下
2×2
AB:2×2结果形状
134−265
×
214−1−34
=
214512

左上角:第 1 行 · 第 1 列

(1,3,4) · (2,4,−3) = 2

右下角:第 2 行 · 第 2 列

(−2,6,5) · (1,−1,4) = 12
顺序通常不能交换:ABBA 可能形状不同,也可能有一个根本不能计算。矩阵乘法一般不满足交换律。
07 / BATCH COMPUTATION

批量计算:一次把多名样本送进同一组神经元

为了方便批量处理,这里把每个样本写成一行。数据矩阵 X 有 B 行样本、n 列特征;权重矩阵 W 有 n 行、m 列;结果 Y 有 B 行、m 列。

X(B×n) · W(n×m) + b(1×m) = Y(B×m)
X:样本表每行 1 名学生
每列 1 个特征
W:同一套规则每一列代表
1 个输出神经元
Y:批量结果每行仍对应
原来的那名学生
×B
BATCH PRINTER / 批量结果打印机
X·W+b;拖动批量大小,观察一次计算多少行
样本x₁x₂× W+ by₁y₂
样本 A12[[2,−1],[1,3]][1,0]55
样本 B21共享同一个 W[1,0]61
样本 C30共享同一个 W[1,0]7−3
当前 X 是 3×2,W 是 2×2,所以 Y 是 3×2;一次得到 6 个输出数。
偏差如何加?b=(1,0) 只有一行,但会加到每个样本的输出行上,这叫“广播”。它不是只加给第一名样本。
08 / RULES & PITFALLS

四个最容易混淆的地方

先行后列

3×2 表示 3 行 2 列,不是反过来。形状不是乘法题。

里面相同

(a×b)(b×c) 才能相乘;结果形状是外侧 a×c

行点乘列

矩阵乘法不是同位置元素相乘。结果每个格子都是一对行列的内积。

两种书写方向都可能出现:单个样本写成列向量时常见 Wx+b;整批样本按行摆放时常见 XW+b。它们不是矛盾,只是摆放约定不同。永远用形状检查谁该在左、谁该在右。
09 / RECAP

把矩阵计算浓缩成四张卡片

矩阵形状先数行,再数列
m×n
矩阵乘向量每一行分别点乘 x
y=Ax
矩阵乘矩阵左边行点乘右边列
Cᵢⱼ=rowᵢ·colⱼ
批量神经网络共享 W 处理 B 个样本
Y=XW+b
10 / CHECK

知识检测:选择后立即诊断

每一道错题都会说明具体知识缺口并提供回看链接。改对后,章末诊断仍保留首次薄弱点。

题目
已作答0
当前答对0
首次薄弱点0
历史最好
1. 一个矩阵有 4 行、3 列,它的形状是?
2. a₂₃ 表示矩阵中的哪个元素?
3. 2×3 矩阵可以直接与哪个矩阵相加?
4. 计算 Ax 时,A 的第 1 行主要做什么?
5. 行向量 (1,3,4) 与 x=(2,4,−3) 的内积是多少?
6. 在 z=Wx+b 中,W 的一行通常对应什么?
7. 下列哪组矩阵可以按给定顺序相乘?
8. (2×3)(3×5) 的结果形状是什么?
9. 结果矩阵 C=AB 中的 cᵢⱼ 怎样得到?
10. 在 X(B×n) 中,B 和 n 分别通常表示什么?
11. X 是 32×8,W 是 8×16,则 Y=XW 是什么形状?
12. Y=XW+b 中,偏差 b 通常怎样加到一批样本上?
0

VISUAL FIRST · 一图读懂

矩阵怎样一次安排很多次内积?

同一个输入列依次与矩阵的每一行配对,每一行产生一个输出,最后组成新的输出向量。

输入彩色小球进入矩阵网格并从多行产生多个输出小球的无文字插图
HOW TO READ
读图顺序
输入列进入

一个样本的多个特征先按顺序排成输入向量。

每行各算一次

矩阵每一行都与同一个输入向量完成一次内积。

多个结果一起出来

神经网络因此能把很多神经元的计算写成一次矩阵运算。