简介《DeepLearning深度学习教程》第一章“数学基础”是一份面向深度学习入门者的PDF教程重点梳理向量、矩阵、张量、导数、特征值、概率分布与统计量等易混淆概念帮助读者在进入神经网络前补足线性代数、微积分和概率论的关键知识。整套资源仅含1个PDF文件压缩包大小约3.53MB便于离线对照学习目前已有288人学习下载。教程按1.11.6节展开从标量、向量、矩阵到张量的层级关系依次讲解范数与正定矩阵、导数和偏导数的区别、特征值分解与奇异值、条件概率、链式法则与独立性、常见概率分布以及期望、方差、协方差和相关系数。各节以对比和举例的方式说明易混概念并配有矩阵运算、范数计算等示例尤其适合对数学符号不熟悉的自学者配合深度学习课程同步查阅。掌握这些数学基础能帮助读者更顺畅地理解后续神经网络的原理与优化过程。1. 这份数学讲义解决什么卡在“懂了但不会用”的人最需要的十几页第一次翻《DeepLearning 深度学习教程》第一章时我以为又是一份劝退性质的数学手册读完才发现它的重点不是推导公式而是把初学者绕不过去的那几组钉子户概念——张量与矩阵、特征值与奇异值、概率密度与概率、条件概率与链式法则——挨个拆开讲对应的是“向量长度”“矩阵能量”“分布选型”这些建模里真正用得到的问题。适合两类人刚要进入深度学习、又不确定自己数学基础够不够的开发者以及准备面试笔试、想把核心概念快速过一遍的从业者。十几页的体量省掉的是自己翻三本书做对照的时间。它的定位不是教科书是一份易混淆概念急救包。2. 线性代数篇用一张表和三个例子理清张量、范数与特征值的关系这一章是全书的第一个陡坡。向量和矩阵大多数人能对付一旦把张量、范数、特征值、正定矩阵放到一起容易变成各记各的合不到一条线。读的时候建议不要按顺序死记先把四个层级的关系立起来再往下看范数和分解。2.1 标量、向量、矩阵、张量一条主线串起四个概念标量是单个数值向量是一组有序排列的数用粗体小写字母表示矩阵是一张二维数据表行可以理解成对象列可以理解成特征张量则是坐标超过两维的数组一个数组中的元素分布在若干维坐标的规则网格里。按原文的说法标量是0阶张量向量是1阶张量矩阵是2阶张量超过两维统一叫张量。这里有个很直观的比喻标量好比知道一根棍子的长度向量还告诉你棍子指向前方还是后方张量更进一步告诉你棍子还向上、向下、向左、向右偏转了多少。信息量逐层增加这就是“阶”的含义。从代数角度看矩阵是向量的推广向量是一维的“表格”矩阵是二维的“表格”n阶张量就是n维的“表格”从几何角度看矩阵和向量都具有不随参照系坐标变换而变化的性质。为什么要强调这一点因为深度学习里的权重、激活值、梯度几乎全以张量形式存在。你以为自己在处理“矩阵”实际上经常是带batch维、通道维、序列维的四维张量主流的框架接口也统一叫tensor不叫matrix。原文在讲矩阵乘法时特意提到了爱因斯坦求和约定矩阵 A 和 B 相乘得到的 C 写作 C_{ij} Σ_k A_{ik}B_{kj}其中重复出现的下标 k 是哑变量表示对该下标遍历求和。实际写代码时没有人真去写这个求和号框架里一行矩阵乘就完成了但读论文时常常看到这种省略求和符号的写法知道它代表什么能省不少困惑。矩阵和向量相乘只是矩阵相乘的一个特殊情况把向量当成只有一列的矩阵即可。2.2 向量和矩阵的范数各范数含义与选型意图范数度量的是“大小”但大小有多种量法。向量的1范数是各元素绝对值之和直观对应曼哈顿距离2范数是各元素平方和再开方对应欧氏距离正无穷范数是绝对值最大的元素负无穷范数则是绝对值最小的元素。p范数是对它们的统一推广当p取1和2时就退化成上面两种常见特例。矩阵的范数种类更多这里直接以表格形式把容易混淆的几个放在一起范数计算方式常见的用途矩阵1范数列范数每列绝对值求和后取最大值衡量矩阵对向量的放大上界矩阵无穷范数行范数每行绝对值求和后取最大值同上按行视角F范数全部元素平方和再开根号最常用的矩阵大小度量可导、易计算核范数所有奇异值求和低秩约束如矩阵补全L0范数非零元素个数理论上的稀疏度量不可导L1范数全部元素绝对值之和L0的凸近似实际稀疏正则化L21范数先求每列的F范数再对这组数求L1结构化稀疏让某些特征列整体归零正则化时 L2 对应权重衰减L1 对应稀疏L21 对应“整列裁剪”核范数对应低秩假设。看到某个具体问题和其中一种范数绑定第一反应不应该是它的公式而是它想把解的什么结构逼出来稀疏、平滑、低秩还是整体收缩。这份讲义把每个范数的计算结果都做了演示照着算一遍就会发现不同范数算同一组数得到的结果差异很大选错类型整个优化目标的意义就变了。注意矩阵F范数形式上与向量L2范数相似但一个是矩阵整体度量一个是向量度量。代码里np.linalg.norm(A, fro)和np.linalg.norm(A, 2)返回的不是同一个东西。2.3 特征值、特征向量与奇异值三者的关系和快速衰减规律特征值分解把一个方阵分解成特征向量组成的矩阵和一个对角线为特征值的对角矩阵。原文有一句值得抄在笔记里的话特征值表示这个特征到底有多重要特征向量表示这个特征是什么。特征向量给出矩阵变化的方向特征值给出这个方向上被拉伸或压缩的倍数从主要变化到次要变化依次排列。奇异值分解是对特征值分解的推广它不要求矩阵是方阵。奇异值和特征值的关系本质上是看 A^T A 的特征值对 A^T A 求特征值得到右奇异向量对 A A^T 求特征值得到左奇异向量奇异值是 A^T A 特征值的算术平方根也是 A A^T 特征值的算术平方根。一句话记住两者的分界方阵可以谈特征值任意矩阵都谈奇异值。实际使用中最值得记住的是奇异值的衰减现象。很多情形下前10%甚至前1%的奇异值之和就占了全部奇异值之和的99%以上。这意味着矩阵的信息高度集中在前几个主要方向上。做PCA、图像压缩、降噪本质都是在利用这个长尾特性把后面那些占比极小的奇异值直接置零用前k个方向近似描述整个矩阵。常见做法是设定一个能量阈值比如保留90%的能量然后反推需要多少个奇异值这样就能把矩阵的有效秩给估出来。2.4 正定矩阵五个等价条件与一个手算例子判断一个矩阵是否正定并不只有“特征值全为正”这一条路。原文列出的判定条件包括顺序主子式全大于0存在可逆矩阵P使该矩阵等于 P^T P正惯性指数等于n合同于单位矩阵特征值全为正。这些条件在数学上等价工程上按情况选最省事的一个。拿一个二阶矩阵手算最直观。设对称矩阵 [[2, 1], [1, 2]]两个顺序主子式分别是2 和行列式 2×2-1×13都大于0因此正定。再看特征值解 |A-λI|0 得到两个特征值3和1都为正与顺序主子式的结果一致。这类手算例子在调试协方差矩阵、二次型函数时非常有用。实际代码里判断正定我一般直接用 Cholesky 分解是否报错来判定因为正定矩阵存在唯一的Cholesky分解能分解成功就是正定报错就说明矩阵至少半正定或不定。这种方法比硬求特征值更快也省去设置判断阈值的麻烦。高斯分布的协方差矩阵必须对称正定很多优化问题也要求Hessian矩阵正定才能保证是局部极小这些场景下会频繁用到上面的判定。3. 微积分与概率基础从偏导数到条件概率把公式变直觉第一章后面半段的话题跨度很大从导数直接跳到随机变量和条件概率。很多人在这里第一次卡住不是因为算不出来而是不知道这些概念之间怎么衔接。偏导是反向传播的直接工具概率则是理解损失函数、噪声假设和贝叶斯方法的底层语言两件事讲的是同一个诉求在不确定性里找到变化规律。3.1 导数与偏导数从一条切线到曲面上的无数条切线导数的定义是在自变量变化趋于无穷小时函数值变化与自变量变化的比值。几何意义是曲线上某一点切线的斜率物理意义是瞬时变化率。平均速度 v Δs / Δt当时间间隔趋向于0平均速度就变成了瞬时速度这就是导数。一元函数里只有一个自变量的变化方向所以不存在偏导数的概念。到了多元函数曲面上任意一点可以有无数条切线偏导数只取其中沿坐标轴正方向的那一条。比如 z x^2 3xy y^2对x求偏导时把y看成常数得到 2x 3y对y求偏导时把x看成常数得到 3x 2y。求解时就是“对一个变量求导其他变量按常数处理”这个操作规则简单真正容易错的是几何直觉偏导数是曲面与坐标平面交线在某点处切线的斜率而不是曲面本身的斜率。关于“导数和偏导数有没有本质区别”这个问题严格说两者的定义都是变化率的极限但偏导数必须声明是沿哪个自变量的方向。一元函数导数是斜率多元函数偏导是沿坐标轴方向的变化率再往外还有方向导数和梯度。如果忽略这个前提后面看反向传播和梯度下降就会觉得处处含糊——反向传播里对每个权重求的正是偏导而梯度则是所有这些偏导拼成的向量。3.2 条件概率、联合概率与边缘概率三个公式的区别与经典面试题联合概率表示多个条件同时成立的概率比如 P(A, B)边缘概率只关心单个事件比如 P(A)实际计算时把联合分布中另一个变量“边缘化”掉条件概率表示在B发生的条件下A发生的概率公式是 P(A|B) P(A, B) / P(B)。三者可以互相换算但方向不同联合分布可以推出边缘分布只知道边缘分布推不出联合分布。原文里有一道面试常考的题一对夫妻有两个小孩已知其中一个是女孩问另一个也是女孩的概率。用穷举法把样本空间按长幼顺序列出来是女女、男女、女男、男男四种各占1/4。已知至少一个是女孩排除男男后剩下三种情况等可能符合“另一个也是女孩”的只有女女所以概率是1/3。很多人会答成1/2原因是把“其中一个”理解成了“特定的某一个”。如果题目改成“已知老大是女孩问老二是女孩的概率”那才是1/2。一字之差样本空间完全不同。链式法则是条件概率定义的直接推论P(A, B, C) P(A) P(B|A) P(C|A, B)任何多维随机变量的联合概率分布都可以分解成只有单个变量的条件概率乘积。这条公式在概率图模型里是贝叶斯网络做推断的基础也是朴素贝叶斯做分类的出发点。注意它和微积分里的求导链式法则名称相同、内容无关这个坑后面避坑篇还会再提。3.3 独立性与条件独立性为什么朴素贝叶斯这么“朴素”也能用两个随机变量独立时联合概率可以写成两个概率的乘积P(A, B) P(A) P(B)这是一个非常好的数学性质。可惜无条件独立在真实数据里十分稀少大部分事件之间都互相影响。这时就要引入条件独立性给定C的情况下A和B条件独立当且仅当 A 和 B 的关系只通过 C 产生而不是 A、B 直接关联。原文用一个天气例子讲透了这件事今天下雨、今天地面湿、明天下雨这三个事件中今天下雨对“今天地面湿”和“明天下雨”都有影响但在已知今天下雨的前提下今天地面湿不湿对明天是否下雨没有任何额外信息。也就是说明天下雨和今天地面湿在给定今天下雨的条件下条件独立。这一点在工程上的典型应用就是朴素贝叶斯分类器判断邮件是否为垃圾邮件时假设单词x出现在邮件中的概率条件独立于单词y。这个假设明显不是真实情况——有些词几乎总是同时出现——但它让计算速度极快而且对最终判别结果的影响并不大算是条件独立性“明知不对但好用”的代表。3.4 变量与随机变量的区别一个容易被一句话带过的考点把这节内容单独提出来是因为它太容易被扫读漏掉。随机变量表示随机现象中各种结果的实值函数比如某段时间公交站等车的人数、电话交换台收到的呼叫次数都是随机变量的实例。变量与随机变量的区别可以这样记当变量取某个值的概率不是1时变量就变成了随机变量当随机变量取某个值的概率为1时它就退化为普通变量。举例来说如果变量x取100的概率是1那它就是确定的除非有进一步运算否则不会变化如果x取50的概率是0.5、取100的概率也是0.5那它就是会随条件变化的随机变量。这个区分之所以重要是因为后面所有概率分布的定义都建立在随机变量之上而初学者常把“随机”理解成“会变化”忽略了它本质上是“取值带概率”的数学对象。4. 概率分布篇从伯努利到经验分布六个分布的适用场景概率分布是第一章里信息密度最大的一节六种分布排在一起初学者很容易背了名字忘了场景。读这一节时不要按公式逐行背先分清楚离散和连续两条线再记住每个分布最核心的一个使用场景。4.1 离散型分布Bernoulli 与 MultinoulliBernoulli分布是单个二值随机变量的分布单参数 φ 控制随机变量等于1的概率取值只有0和1。它的期望是 φ方差是 φ(1-φ)。二分类任务中样本标签的生成假设就是它交叉熵损失也和这种分布直接挂钩。Multinoulli分布又叫范畴分布是单个取k个值随机变量的分布用向量参数化每个分量表示第i个状态的概率所有分量求和为1。它是多分类问题的分布假设softmax输出的正是这种分布。理解这两者的工程价值在于模型的输出层选择什么分布基本决定了损失函数怎么写。二分类用sigmoid加交叉熵多分类用softmax加交叉熵背后都是这两类分布。4.2 连续型分布高斯、指数、拉普拉斯高斯分布也叫正态分布由均值 μ 和方差 σ² 两个参数控制。μ 给出中心峰值的位置σ² 控制峰的宽度。正态分布里 ±1σ、±2σ、±3σ 范围内的概率分别是68.3%、95.5%、99.73%这三个数最好记住做异常检测时经常拿它们当阈值。原文回答了“何时采用正态分布”这个问题缺乏实数上分布的先验知识、不知如何选择时默认选正态分布总是不会错的。理由有两条一是中心极限定理表明很多独立随机变量的叠加近似服从正态分布现实中的复杂系统经常可以被建模成正态噪声二是正态分布是具有相同方差的所有概率分布中不确定性最大的分布换句话说选它是对模型加入先验知识最少的选择。听到“默认选正态”别觉得是偷懒它本质上是一种最大限度保留不确定性的保守建模策略。指数分布用来描述事件发生的时间间隔在0点处取边界负半轴的概率为0。它和无记忆性紧密绑定适合建模“已经等了一段时间后还需再等多久”这类场景。拉普拉斯分布与高斯分布类似但它允许在任意一点处设置概率质量的峰值形态上是双指数尾部比高斯更厚。工程上最有价值的一个对应关系是L1正则化等价于给参数施加拉普拉斯先验L2正则化等价于施加高斯先验。看到权重衰减可以反向理解成对参数分布做了某种假设。4.3 Dirac分布与经验分布训练集本身就是一个分布Dirac分布把所有概率质量都集中在一个点上对应的狄拉克δ函数也叫单位脉冲函数。它的作用是把某个点的概率密度变成无穷大、同时保证积分结果仍为1常用于表示一个固定值。单独看它似乎很极端但它是经验分布的组成部分。经验分布是把给定的 m 个观测点每个都赋予 1/m 的概率质量m个点就是数据集本身。当你在训练集上训练模型时可以认为是从这个训练集得到的经验分布中采样。这样一来“训练集”就从一组静态文件变成了一个概率分布对象数据增强、重采样、类别平衡这些操作本质上都是在修改这个经验分布让它更接近真实分布。这个视角对理解过拟合也有帮助模型拟合得太好往往就是记住了经验分布里的每一个样本点包括噪声。4.4 常用分布速查与选择顺序分布核心参数取值典型场景Bernoullip{0, 1}二分类标签、伯努利试验Multinoulli概率向量k个类别多分类、softmax输出高斯μ, σ²全体实数回归误差、初始化、默认先验拉普拉斯μ, b全体实数L1正则化、稀疏建模指数λ[0, ∞)事件间隔、生存时间Dirac / 经验分布数据点任意训练集采样来源选分布时走一遍这个流程基本不会错先看目标变量是离散还是连续离散二值选Bernoulli离散多类选Multinoulli连续有界或厚尾考虑拉普拉斯连续非负考虑指数毫无头绪就先选高斯最后用数据分布和经验分布做对照检查。5. 避坑篇五个高频翻车点的现象、原因与解决这一章单独拎出来写是因为这份讲义里大量内容是“概念辨析”而这种内容恰恰最容易产生假理解每个词都见过合在一起做题就错。下面五条是初学者最常踩的坑每条都按现象、原因、解决三步拆开。5.1 线性代数里的两个惯性错误坑一L1范数和L2范数总是记混。现象是写正则化项时把L1的公式记成平方和开根号或者提到稀疏就直接写L2。原因在于两者都有数字下标加上平时到处见欧氏距离的平方形式肌肉记忆比概念记忆更顽固。解决方法是记两个距离名词L1对应曼哈顿距离L2对应欧氏距离。想不起来时画个坐标系从(0,0)到(1,1)走折线是L1走直线是L2几何图形一出来就不会混。坑二把特征值分解和奇异值分解当成同一种操作。现象是对一个非方阵直接写特征值分解或者以为SVD就是解 det(A-λI)0。原因是很多资料在介绍SVD时直接说“广义特征值分解”初学者就真的当成一回事。实际上特征值分解只对方阵定义SVD对任意 m×n 矩阵都成立奇异值是 A^T A 特征值的算术平方根不是特征值本身。哪怕只记得一条——“方阵才谈特征值任意矩阵都谈奇异值”——就能避开大部分问题。5.2 概率论里的三个高频翻车点坑三看到概率密度函数值大于1以为公式写错了。现象是计算 N(0, 0.01) 在0处的密度值得到约3.99有人立刻觉得概率大于1不合理。原因是把PDF的值当成了概率。PDF是密度不是概率落在某个微小区域 dx 内的概率约等于 p(x)dx需要积分才有真正概率。中心密度可以远大于1但曲线下的总面积始终等于1。这个理解不到位后面看最大似然估计时也会被类似问题绊住。坑四把概率论的链式法则和微积分的链式法则混成一个概念。现象是看完反向传播的复合函数求导链式法则翻到条件概率一节又出现“链式法则”以为是同一个东西。原因很简单两个数学分支共用了同一个英文词翻译过来又都是“链式法则”。概率里的链式法则是联合概率分解成条件概率的乘积比如 P(A,B,C)P(A)P(B|A)P(C|A,B)微积分里的链式法则是复合函数求导的乘法规则。两者没有任何推导关系建议在笔记里分开记给其中一个标注“条件概率版”给另一个标注“求导版”。坑五两个孩子的问题已知一个是女孩另一个也是女孩答成1/2。现象是觉得两个孩子性别互相独立一个已知是女孩另一个男女各半直觉上应该是1/2。原因在于题目里“已知一个是女孩”是存在性条件没有指明是老大还是老二问题空间比直觉要窄。解决方法是先列四元样本空间女女、男女、女男、男男各占1/4已知条件排除男男剩下三种情况中只有女女满足所以是1/3。如果题目改成“已知老大是女孩”那才是1/2。这类题考察的就是是否愿意把样本空间列完整而不是依靠直觉。6. 把公式变直觉两个Python脚本与一套自查清单数学概念光读不验永远隔一层。第一章里那些结论大部分都可以用十几行代码亲手验证。下面两个脚本建议按顺序跑一遍能解决“看书全会、合书全忘”的问题。6.1 用奇异值能量占比看矩阵长尾import numpy as np # 生成一份 m 行 n 列的特征矩阵模拟真实数据形态 m, n 100, 50 A np.random.randn(m, n) # 只计算奇异值不取 U 和 Vsvdvals 就是奇异值向量 s np.linalg.svd(A, compute_uvFalse) # 奇异值平方代表能量计算前k个奇异值的累积能量占比 cum np.cumsum(s**2) / np.sum(s**2) print(前10个奇异值能量占比:, cum[9])逻辑说明奇异值本身反映该方向上的缩放幅度奇异值平方近似看成矩阵在该方向上的能量累积占比曲线越陡峭说明信息越集中。把这里的 A 换成你自己的数据矩阵、图片矩阵或核矩阵就能直观感受不同数据的“有效秩”差异。参数上m 和 n 控制矩阵尺寸compute_uvFalse表示只返回奇异值索引9对应前10个元素因为数组下标从0开始。6.2 用采样验证高斯分布的经验法则import numpy as np rng np.random.default_rng(42) # 固定随机种子保证任何人运行结果一致 x rng.standard_normal(100_000) # 采样10万个标准正态随机数 # 用均值函数统计落在各区间内的样本比例 p1 np.mean(np.abs(x) 1) # ±1σ 区间 p2 np.mean(np.abs(x) 2) # ±2σ 区间 p3 np.mean(np.abs(x) 3) # ±3σ 区间 print(f±1σ: {p1:.4f} 理论68.3%) print(f±2σ: {p2:.4f} 理论95.5%) print(f±3σ: {p3:.4f} 理论99.7%)逻辑说明大数定律保证样本比例会收敛到真实概率采样量越大越贴近理论值。standard_normal(100_000)从标准正态分布里抽取10万个样本np.mean对布尔数组求均值等价于统计出满足条件的样本占比。参数上随机种子42只是一个约定值换成其他整数不影响结论只会改变具体样本。跑完这两个脚本建议把“样本量”“有效秩”“分布覆盖”这几个词挂在嘴边。以后再看到任何公式都先过一遍这套自查清单符号的定义域是什么每个字母对应模型里的哪个变量条件是否满足比如是否要求方阵或正定能不能用10行代码验证。这份讲义里的每节内容几乎都能找到对应的验证路径正定矩阵手算特征值条件概率穷举样本空间正态分布采样验证经验法则。那次被面试官用“特征值和奇异值什么关系”问住之后我每次拿到这类讲义都强制自己先写完验证脚本再往下一页翻。这本讲义的每节也值得这样对待希望这个习惯帮到你。本文还有配套的精品资源点击获取