数学基础

本文经授权转载自《动手学深度学习》。全书内容参见 zh.d2l.ai,GitHub项目参见 github.com/d2l-ai/d2l-zh

本节总结了本书中涉及的有关线性代数、微分和概率的基础知识。为避免赘述本书未涉及的数学背景知识,本节中的少数定义稍有简化。

线性代数

下面分别概括了向量、矩阵、运算、范数、特征向量和特征值的概念。

向量

本书中的向量指的是列向量。一个nn维向量x\boldsymbol{x}的表达式可写成

$$ \boldsymbol{x} = \begin{bmatrix} x_{1} \ x_{2} \ \vdots \ x_{n} \end{bmatrix}, $$

其中x1,,xnx_1, \ldots, x_n是向量的元素。我们将各元素均为实数的nn维向量x\boldsymbol{x}记作xRn\boldsymbol{x} \in \mathbb{R}^{n}xRn×1\boldsymbol{x} \in \mathbb{R}^{n \times 1}

矩阵

一个mmnn列矩阵的表达式可写成

$$ \boldsymbol{X} = \begin{bmatrix} x_{11} & x_{12} & \dots & x_{1n} \ x_{21} & x_{22} & \dots & x_{2n} \ \vdots & \vdots & \ddots & \vdots \ x_{m1} & x_{m2} & \dots & x_{mn} \end{bmatrix}, $$

其中xijx_{ij}是矩阵X\boldsymbol{X}中第ii行第jj列的元素(1im,1jn1 \leq i \leq m, 1 \leq j \leq n)。我们将各元素均为实数的mmnn列矩阵X\boldsymbol{X}记作XRm×n\boldsymbol{X} \in \mathbb{R}^{m \times n}。不难发现,向量是特殊的矩阵。

运算

nn维向量a\boldsymbol{a}中的元素为a1,,ana_1, \ldots, a_nnn维向量b\boldsymbol{b}中的元素为b1,,bnb_1, \ldots, b_n。向量a\boldsymbol{a}b\boldsymbol{b}的点乘(内积)是一个标量:

ab=a1b1++anbn.\boldsymbol{a} \cdot \boldsymbol{b} = a_1 b_1 + \ldots + a_n b_n.

设两个mmnn列矩阵

$$ \boldsymbol{A} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \ a_{21} & a_{22} & \dots & a_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix},\quad \boldsymbol{B} = \begin{bmatrix} b_{11} & b_{12} & \dots & b_{1n} \ b_{21} & b_{22} & \dots & b_{2n} \ \vdots & \vdots & \ddots & \vdots \ b_{m1} & b_{m2} & \dots & b_{mn} \end{bmatrix}. $$

矩阵A\boldsymbol{A}的转置是一个nnmm列矩阵,它的每一行其实是原矩阵的每一列: $$ \boldsymbol{A}^\top = \begin{bmatrix} a_{11} & a_{21} & \dots & a_{m1} \ a_{12} & a_{22} & \dots & a_{m2} \ \vdots & \vdots & \ddots & \vdots \ a_{1n} & a_{2n} & \dots & a_{mn} \end{bmatrix}. $$

两个相同形状的矩阵的加法是将两个矩阵按元素做加法:

$$ \boldsymbol{A} + \boldsymbol{B} = \begin{bmatrix} a_{11} + b_{11} & a_{12} + b_{12} & \dots & a_{1n} + b_{1n} \ a_{21} + b_{21} & a_{22} + b_{22} & \dots & a_{2n} + b_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} + b_{m1} & a_{m2} + b_{m2} & \dots & a_{mn} + b_{mn} \end{bmatrix}. $$

我们使用符号\odot表示两个矩阵按元素做乘法的运算:

$$ \boldsymbol{A} \odot \boldsymbol{B} = \begin{bmatrix} a_{11} b_{11} & a_{12} b_{12} & \dots & a_{1n} b_{1n} \ a_{21} b_{21} & a_{22} b_{22} & \dots & a_{2n} b_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} b_{m1} & a_{m2} b_{m2} & \dots & a_{mn} b_{mn} \end{bmatrix}. $$

定义一个标量kk。标量与矩阵的乘法也是按元素做乘法的运算:

$$ k\boldsymbol{A} = \begin{bmatrix} ka_{11} & ka_{12} & \dots & ka_{1n} \ ka_{21} & ka_{22} & \dots & ka_{2n} \ \vdots & \vdots & \ddots & \vdots \ ka_{m1} & ka_{m2} & \dots & ka_{mn} \end{bmatrix}. $$

其他诸如标量与矩阵按元素相加、相除等运算与上式中的相乘运算类似。矩阵按元素开根号、取对数等运算也就是对矩阵每个元素开根号、取对数等,并得到和原矩阵形状相同的矩阵。

矩阵乘法和按元素的乘法不同。设A\boldsymbol{A}mmpp列的矩阵,B\boldsymbol{B}ppnn列的矩阵。两个矩阵相乘的结果

$$ \boldsymbol{A} \boldsymbol{B} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1p} \ a_{21} & a_{22} & \dots & a_{2p} \ \vdots & \vdots & \ddots & \vdots \ a_{i1} & a_{i2} & \dots & a_{ip} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} & a_{m2} & \dots & a_{mp} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} & \dots & b_{1j} & \dots & b_{1n} \ b_{21} & b_{22} & \dots & b_{2j} & \dots & b_{2n} \ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots \ b_{p1} & b_{p2} & \dots & b_{pj} & \dots & b_{pn} \end{bmatrix} $$

是一个mmnn列的矩阵,其中第ii行第jj列(1im,1jn1 \leq i \leq m, 1 \leq j \leq n)的元素为

ai1b1j+ai2b2j++aipbpj=k=1paikbkj.a_{i1}b_{1j} + a_{i2}b_{2j} + \ldots + a_{ip}b_{pj} = \sum_{k=1}^p a_{ik}b_{kj}.

范数

nn维向量x\boldsymbol{x}中的元素为x1,,xnx_1, \ldots, x_n。向量x\boldsymbol{x}LpL_p范数为

|\boldsymbol{x}|p = \left(\sum{i=1}^n \left|x_i \right|^p \right)^{1/p}.

例如,x\boldsymbol{x}L1L_1范数是该向量元素绝对值之和:

|\boldsymbol{x}|1 = \sum{i=1}^n \left|x_i \right|.

x\boldsymbol{x}L2L_2范数是该向量元素平方和的平方根:

|\boldsymbol{x}|2 = \sqrt{\sum{i=1}^n x_i^2}.

我们通常用x|\boldsymbol{x}|指代x2|\boldsymbol{x}|_2

X\boldsymbol{X}是一个mmnn列矩阵。矩阵X\boldsymbol{X}的Frobenius范数为该矩阵元素平方和的平方根:

|\boldsymbol{X}|F = \sqrt{\sum{i=1}^m \sum_{j=1}^n x_{ij}^2},

其中xijx_{ij}为矩阵X\boldsymbol{X}在第ii行第jj列的元素。

特征向量和特征值

对于一个nnnn列的矩阵A\boldsymbol{A},假设有标量λ\lambda和非零的nn维向量v\boldsymbol{v}使

Av=λv,\boldsymbol{A} \boldsymbol{v} = \lambda \boldsymbol{v},

那么v\boldsymbol{v}是矩阵A\boldsymbol{A}的一个特征向量,标量λ\lambdav\boldsymbol{v}对应的特征值。

微分

我们在这里简要介绍微分的一些基本概念和演算。

导数和微分

假设函数f:RRf: \mathbb{R} \rightarrow \mathbb{R}的输入和输出都是标量。函数ff的导数

f(x)=limh0f(x+h)f(x)h,f'(x) = \lim_{h \rightarrow 0} \frac{f(x+h) - f(x)}{h},

且假定该极限存在。给定y=f(x)y = f(x),其中xxyy分别是函数ff的自变量和因变量。以下有关导数和微分的表达式等价:

f(x)=y=dydx=dfdx=ddxf(x)=Df(x)=Dxf(x),f'(x) = y' = \frac{\text{d}y}{\text{d}x} = \frac{\text{d}f}{\text{d}x} = \frac{\text{d}}{\text{d}x} f(x) = \text{D}f(x) = \text{D}_x f(x),

其中符号D\text{D}d/dx\text{d}/\text{d}x也叫微分运算符。常见的微分演算有DC=0\text{D}C = 0CC为常数)、Dxn=nxn1\text{D}x^n = nx^{n-1}nn为常数)、Dex=ex\text{D}e^x = e^xDln(x)=1/x\text{D}\ln(x) = 1/x等。

如果函数ffgg都可导,设CC为常数,那么

$$ \begin{aligned} \frac{\text{d}}{\text{d}x} [Cf(x)] &= C \frac{\text{d}}{\text{d}x} f(x),\ \frac{\text{d}}{\text{d}x} [f(x) + g(x)] &= \frac{\text{d}}{\text{d}x} f(x) + \frac{\text{d}}{\text{d}x} g(x),\ \frac{\text{d}}{\text{d}x} [f(x)g(x)] &= f(x) \frac{\text{d}}{\text{d}x} [g(x)] + g(x) \frac{\text{d}}{\text{d}x} [f(x)],\ \frac{\text{d}}{\text{d}x} \left[\frac{f(x)}{g(x)}\right] &= \frac{g(x) \frac{\text{d}}{\text{d}x} [f(x)] - f(x) \frac{\text{d}}{\text{d}x} [g(x)]}{[g(x)]^2}. \end{aligned} $$

如果y=f(u)y=f(u)u=g(x)u=g(x)都是可导函数,依据链式法则,

dydx=dydududx.\frac{\text{d}y}{\text{d}x} = \frac{\text{d}y}{\text{d}u} \frac{\text{d}u}{\text{d}x}.

泰勒展开

函数ff的泰勒展开式是

f(x)=n=0f(n)(a)n!(xa)n,f(x) = \sum_{n=0}^\infty \frac{f^{(n)}(a)}{n!} (x-a)^n,

其中f(n)f^{(n)}为函数ffnn阶导数(求nn次导数),n!n!nn的阶乘。假设ϵ\epsilon是一个足够小的数,如果将上式中xxaa分别替换成x+ϵx+\epsilonxx,可以得到

f(x+ϵ)f(x)+f(x)ϵ+O(ϵ2).f(x + \epsilon) \approx f(x) + f'(x) \epsilon + \mathcal{O}(\epsilon^2).

由于ϵ\epsilon足够小,上式也可以简化成

f(x+ϵ)f(x)+f(x)ϵ.f(x + \epsilon) \approx f(x) + f'(x) \epsilon.

偏导数

uu为一个有nn个自变量的函数,u=f(x1,x2,,xn)u = f(x_1, x_2, \ldots, x_n),它有关第ii个变量xix_i的偏导数为

uxi=limh0f(x1,,xi1,xi+h,xi+1,,xn)f(x1,,xi,,xn)h. \frac{\partial u}{\partial x_i} = \lim_{h \rightarrow 0} \frac{f(x_1, \ldots, x_{i-1}, x_i+h, x_{i+1}, \ldots, x_n) - f(x_1, \ldots, x_i, \ldots, x_n)}{h}.

以下有关偏导数的表达式等价:

\frac{\partial u}{\partial x_i} = \frac{\partial f}{\partial x_i} = f_{x_i} = f_i = \text{D}i f = \text{D}{x_i} f.

为了计算u/xi\partial u/\partial x_i,只需将x1,,xi1,xi+1,,xnx_1, \ldots, x_{i-1}, x_{i+1}, \ldots, x_n视为常数并求uu有关xix_i的导数。

梯度

假设函数f:RnRf: \mathbb{R}^n \rightarrow \mathbb{R}的输入是一个nn维向量x=[x1,x2,,xn]\boldsymbol{x} = [x_1, x_2, \ldots, x_n]^\top,输出是标量。函数f(x)f(\boldsymbol{x})有关x\boldsymbol{x}的梯度是一个由nn个偏导数组成的向量:

xf(x)=[f(x)x1,f(x)x2,,f(x)xn].\nabla_{\boldsymbol{x}} f(\boldsymbol{x}) = \bigg[\frac{\partial f(\boldsymbol{x})}{\partial x_1}, \frac{\partial f(\boldsymbol{x})}{\partial x_2}, \ldots, \frac{\partial f(\boldsymbol{x})}{\partial x_n}\bigg]^\top.

为表示简洁,我们有时用f(x)\nabla f(\boldsymbol{x})代替xf(x)\nabla_{\boldsymbol{x}} f(\boldsymbol{x})

假设x\boldsymbol{x}是一个向量,常见的梯度演算包括

$$ \begin{aligned} \nabla_{\boldsymbol{x}} \boldsymbol{A}^\top \boldsymbol{x} &= \boldsymbol{A}, \ \nabla_{\boldsymbol{x}} \boldsymbol{x}^\top \boldsymbol{A} &= \boldsymbol{A}, \ \nabla_{\boldsymbol{x}} \boldsymbol{x}^\top \boldsymbol{A} \boldsymbol{x} &= (\boldsymbol{A} + \boldsymbol{A}^\top)\boldsymbol{x},\ \nabla_{\boldsymbol{x}} |\boldsymbol{x} |^2 &= \nabla_{\boldsymbol{x}} \boldsymbol{x}^\top \boldsymbol{x} = 2\boldsymbol{x}. \end{aligned} $$

类似地,假设X\boldsymbol{X}是一个矩阵,那么 XXF2=2X.\nabla_{\boldsymbol{X}} |\boldsymbol{X} |_F^2 = 2\boldsymbol{X}.

海森矩阵

假设函数f:RnRf: \mathbb{R}^n \rightarrow \mathbb{R}的输入是一个nn维向量x=[x1,x2,,xn]\boldsymbol{x} = [x_1, x_2, \ldots, x_n]^\top,输出是标量。假定函数ff所有的二阶偏导数都存在,ff的海森矩阵H\boldsymbol{H}是一个nnnn列的矩阵:

$$ \boldsymbol{H} = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \dots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \dots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \ \vdots & \vdots & \ddots & \vdots \ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \dots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix}, $$

其中二阶偏导数

2fxixj=xj(fxi).\frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{\partial }{\partial x_j} \left(\frac{\partial f}{ \partial x_i}\right).

概率

最后,我们简要介绍条件概率、期望和均匀分布。

条件概率

假设事件AA和事件BB的概率分别为P(A)P(A)P(B)P(B),两个事件同时发生的概率记作P(AB)P(A \cap B)P(A,B)P(A, B)。给定事件BB,事件AA的条件概率

P(AB)=P(AB)P(B).P(A \mid B) = \frac{P(A \cap B)}{P(B)}.

也就是说,

P(AB)=P(B)P(AB)=P(A)P(BA).P(A \cap B) = P(B) P(A \mid B) = P(A) P(B \mid A).

当满足

P(AB)=P(A)P(B)P(A \cap B) = P(A) P(B)

时,事件AA和事件BB相互独立。

期望

离散的随机变量XX的期望(或平均值)为

E(X)=xxP(X=x).E(X) = \sum_{x} x P(X = x).

均匀分布

假设随机变量XX服从[a,b][a, b]上的均匀分布,即XU(a,b)X \sim U(a, b)。随机变量XXaabb之间任意一个数的概率相等。

小结

  • 本节总结了本书中涉及的有关线性代数、微分和概率的基础知识。

练习

  • 求函数f(x)=3x12+5ex2f(\boldsymbol{x}) = 3x_1^2 + 5e^{x_2}的梯度。

扫码直达讨论区