《动手学深度学习》笔记——预备知识(数据操作、数据预处理、线性代数、梯度、自动微分、概率)。本文首先介绍了数据操作,包括n维数组与张量的基本概念以及如何初始化、访问和运算。接着,探讨了数据预处理的技巧,如创建和读取人工数据集,以及处理缺失数据的方法。此外,线性代数内容详细讲解了标量、向量和矩阵的基本概念,并结合PyTorch进行实际实现。然后,介绍梯度的多种求导方式和自动微分的原理,最后涵盖了概率基础,包括联合概率、条件概率及其相关定律。
目录
1 数据操作
1.1 n维数组与张量
$n$维数组 / $n$阶张量是机器学习和神经网络的主要数据结构
1.2 初始化
x = torch.arange(10) # tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x = torch.zeros((2, 3, 4)) # 全0
x = torch.ones((2, 3, 4)) # 全1
x = torch.randn(3, 4) # 均值为0、标准差为1的标准正态分布
x = torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]) # 根据(嵌套)列表为每个元素赋确定值
# 查看形状
x.shape # 返回形状类:torch.Size(维度张量)
x.shape[0] # 获取维度张量
# 获取元素个数
x.numel() # 计算张量中元素的总数(维度的乘积)
# 变形
X = x.reshape(3, -1) # 用-1自动计算维度
1.3 访问元素
X[-1] # 选择最后一个元素
X[1:3] # 选择索引在[1, 3)上的元素(左开右闭,右-左 为切片长度,下同)
X[1, 2] = 9 # 指定索引写入元素
X[0:2, :] = 12 # 在索引0~1行批量写入元素
1.4 运算
# 按元素运算
X + Y, X - Y, X * Y, X / Y, X ** Y # 所有基本运算符均升级为按元素运算(形状不同则广播,下同)
torch.exp(X) # 指数运算
X == Y # 通过逻辑运算符构建二元张量(True / False)
# 连结(dim=x: 沿轴x……)
torch.cat((X, Y), dim=0) # 沿轴0(行)连结张量(上下拼接)
torch.cat((X, Y), dim=1) # 沿轴1(列)连结张量(左右拼接)
# 降维函数(详见下文)
X.sum() # 求和(返回只含1个元素的张量,下同)
X.mean() # 求平均值
# 与NumPy数组的转换
A = X.numpy() # 张量转化为n维数组(numpy.ndarray)
B = torch.tensor(A) # n维数组转化为张量(torch.Tensor)
# 与Python标量的转换
a = torch.tensor([3.7]) # 大小为1的张量 tensor([3.7000])
a.item() # 调用方法获取元素
float(a), int(a) # 使用python
2 数据预处理
2.1 创建人工数据集
创建一个人工数据集,存储于csv(逗号分割值)文件中
import os
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
f.write('NumRooms, Alley, Price\n') # 列名
f.write('NA, Pave, 127500\n') # 每行表示一个数据样本
f.write('2, NA, 106000\n')
f.write('4, NA, 178100\n')
f.write('NA, NA, 140000\n')
2.2 读取数据集
从创建的csv文件中加载原始数据集
import pandas as pd
data = pd.read_csv(data_file) # pandas读取csv文件
print(data)
2.3 处理缺失数据
# 使用插值法
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean()) # 填充缺失值为均值(仅适用于数值类型数据)
inputs = pd.get_dummies(inputs, dummy_na=True) # 视为特征:缺失值 - Alley_nan,Str - Alley
# 所有条目都是数值类型,故可转换成张量
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
3 线性代数
3.1 标量
按元素操作:
c=a+b \\ c=a\cdot b \\ c=\sin a
长度:
|a|=\begin{cases}
a & \text{ if } a>0 \\
-a & \text{ otherwise }
\end{cases} \\ |a+b|≤|a|+|b| \\ |a \cdot b|=|a| \cdot |b|
3.2 向量
按元素操作:
\mathbf{c}=\mathbf{a}+\mathbf{b} \text{ where } c_i=a_i+b_i \\ \mathbf{c}=a \cdot \mathbf{b} \text{ where } c_i=a\cdot b_i \\ \mathbf{c}=\sin \mathbf{a} \text{ where } c_i=\sin a_i
长度(L_2
范数):
\left\| \mathbf{a}\right\|_2=(\sum\limits_{i=1}^m a_i^2)^{\frac12}\\ \left\| \mathbf{a}\right\|≥0 \text{ for all }\mathbf{a}\\
\left\| a \cdot \mathbf{b} \right\|=|a| \cdot \left\| \mathbf{b}\right\|
点积:
\left \langle \mathbf{a},\mathbf{b} \right \rangle =\mathbf{a}^{\text{T}}\mathbf{b}=\sum_i a_ib_i \\ \left \langle \mathbf{a},\mathbf{b} \right \rangle =\mathbf{a}^{\text{T}}\mathbf{b}=0 \Leftrightarrow \mathbf{a}\ \bot\ \mathbf{b}
3.3 矩阵
按元素操作:
\mathbf{C}=\mathbf{A}+\mathbf{B} \text{ where } C_{ij}=A_{ij}+B_{ij} \\ \mathbf{C}=a \mathbf{B} \text{ where } C_{ij}=a B_{ij} \\ \mathbf{C}=\sin \mathbf{A} \text{ where } C_{ij}=\sin A_{ij}
矩阵向量积:
\mathbf{c}=\mathbf{Ab} \text{ where } c_i=\sum_j A_{ij}b_j
矩阵乘法:
\mathbf{C}=\mathbf{AB} \text{ where } C_{ik}=\sum_j A_{ij}B_{jk}
范数:
(1)矩阵范数:满足下列条件的的最小值
\mathbf{c}=\mathbf{Ab} \text{ hence } \left\| \mathbf{c}\right\|≤\left\|\mathbf{A}\right\|\cdot\left\| \mathbf{b}\right\|
(2)Frobenius范数(更常用)
\left\| \mathbf{A}\right\|_{\text{Frob}}=[\sum\limits_{ij}A_{ij}^2]^{\frac12}
特殊矩阵
(1)对称矩阵、反对称矩阵:\mathbf{A}_{ij}=\mathbf{A}_{ji}
、\mathbf{A}_{ij}=-\mathbf{A}_{ji}
(2)正定矩阵:
\left\| \mathbf{x}\right\|^2=\mathbf{x}^{\text{T}}\mathbf{x}≥0 \text{ generalizes to } \mathbf{x}^{\text{T}}\mathbf{Ax}≥0
(3)正交矩阵:QQ^T=1
(4)置换矩阵(置换矩阵必正交):
\mathbf{P} \text{ where } P_{ij}=1 \text{ if and only if } j=\pi(i)
特征向量和特征值:\mathbf{Ax}=\lambda \mathbf{x}
特征向量:不被矩阵改变方向的向量
3.4 PyTorch实现
a = torch.tensor([3.0])
x = torch.arange(10, dtype=torch.float32)
A = torch.arange(20, dtype=torch.float32).reshape(5, 4) # 5x4的矩阵
len(x)
A.shape
# 转置
A.T
# 深拷贝
B = A.clone()
# 按元素操作
A + B
A * B # 哈达玛积
# 求和
A.sum() # 对所有元素求和,降为标量
A.sum(axis=0) # 沿轴0(行)求和,降为向量(参考连结方法cat())
A.sum(axis=[0, 1]) # 沿轴0、轴1求和,同方法sum()
# 求平均值
A.mean() # 等价于 A.sum() / A.numel()
A.mean(axis=0) # 等价于 A.sum(axis=0) / A.shape[0]
# 保持轴数不变,便于广播
sum_A = A.sum(axis=1, keepdims=True) # 对每一行求和
A / sum_A # 每个元素分别除以其所在行元素和
# 累加求和
A.cumsum(axis=0) # 沿轴0累加求和(形状不变)
# 向量点积(PyTorch的点积只能计算向量!)
torch.dot(x, y) # 等价于torch.sum(x * y)
# 矩阵向量积
torch.mv(A, x)
# 矩阵乘法
torch.mm(A, A)
# L2范数:向量元素的平方和的平方根
torch.norm(x)
# L1范数:向量元素的绝对值之和
torch.abs(x).sum()
# Frobenius范数:矩阵元素的平方和的平方根
torch.norm(A)
4 梯度
梯度是一个向量,指向函数变化率最大的方向。
\begin{matrix}
& & 标量 & 向量 & 矩阵\\
& &\underset{(1,)}{x} & \underset{(n,1)}{\mathbf{x}} & \underset{(n,k)}{\mathbf{X}}\\
标量 & \underset{(1,)}{y} & \underset{(1,)}{\frac{\partial y}{\partial x}} & \underset{(1,n)}{\frac{\partial y}{\partial \mathbf{x} }} & \underset{(k,n)}{\frac{\partial y}{\partial \mathbf{X}}} \\
向量 & \underset{(m,1)}{\mathbf{y}} & \underset{(m,1)}{\frac{\partial \mathbf{y} }{\partial x}} & \underset{(m,n)}{\frac{\partial \mathbf{y} }{\partial \mathbf{x} }} & \underset{(m,k,n)}{\frac{\partial \mathbf{y}}{\partial \mathbf{X}}} \\
矩阵 & \underset{(m,l)}{\mathbf{Y}} & \underset{(m,l)}{\frac{\partial \mathbf{Y}}{\partial x}} & \underset{(m,l,n)}{\frac{\partial \mathbf{Y}}{\partial \mathbf{x}}} & \underset{(m,l,k,n)}{\frac{\partial \mathbf{Y}}{\partial \mathbf{X}}}
\end{matrix}
4.1 标量导数
对于单变量函数,梯度即为导数
$$y$$ | $$a$$ | $$x^n$$ | $$\exp(x)$$ | $$\log(x)$$ | $$\sin(x)$$ |
---|---|---|---|---|---|
$$\frac{\mathrm{d} y}{\mathrm{d} x}$$ | $$0$$ | $$nx^{n-1}$$ | $$\exp(x)$$ | $$\frac1x$$ | $$\cos(x)$$ |
$$y$$ | $$u+v$$ | $$uv$$ | $$y=f(u),u=g(x)$$ |
---|---|---|---|
$$\frac{\mathrm{d} y}{\mathrm{d} x}$$ | $$\frac{\mathrm{d} u}{\mathrm{d} x}+\frac{\mathrm{d} v}{\mathrm{d} x}$$ | $$\frac{\mathrm{d} u}{\mathrm{d} x}v+\frac{\mathrm{d} v}{\mathrm{d} x}u$$ | $$\frac{\mathrm{d} y}{\mathrm{d} u}\frac{\mathrm{d} u}{\mathrm{d} x}$$ |
4.2 标量对向量求导
标量 $y$ 对向量 $\mathbf{x}$ 的每一个分量求导,组成行向量
\mathbf{x}=\begin{bmatrix}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{bmatrix},\
\frac{\partial y}{\partial \mathbf{x} } =[
\frac{\partial y}{\partial x_1} , \frac{\partial y}{\partial x_2} ,\cdots, \frac{\partial y}{\partial x_n}]
$$y$$ | $$a$$ | $$au$$ | $$\text{sum}(\mathbf{x})$$ | $$\lVert \mathbf{x} \rVert^2$$ |
---|---|---|---|---|
$$\frac{\partial y}{\partial \mathbf{x} }$$ | $$\mathbf{0}^{\text{T}}$$ | $$a\frac{\partial u}{\partial \mathbf{x} }$$ | $\mathbf{1}^{\text{T}}$ | $$2\mathbf{x}^{\text{T}}$$ |
$$y$$ | $$u+v$$ | $$uv$$ | $$\left \langle \mathbf{u} ,\mathbf{v} \right \rangle=\mathbf{u}^{\text{T}}\mathbf{v}$$ |
---|---|---|---|
$$\frac{\partial y}{\partial \mathbf{x} }$$ | $$\frac{\partial u}{\partial \mathbf{x}}+\frac{\partial v}{\partial \mathbf{x}}$$ | $$\frac{\partial u}{\partial \mathbf{x}}v+\frac{\partial v}{\partial \mathbf{x}}u$$ | $$\mathbf{u}^{\text{T}}\frac{\partial \mathbf{v}}{\partial \mathbf{x}}+\mathbf{v}^{\text{T}}\frac{\partial \mathbf{u}}{\partial \mathbf{x}}$$ |
4.3 向量对标量求导
向量 $\mathbf{y}$ 的每一个分量对标量 $x$ 求导,组成列向量
\mathbf{y}=\begin{bmatrix}
y_1 \\
y_2 \\
\vdots \\
y_m
\end{bmatrix},\
\frac{\partial \mathbf{y}}{\partial x} =\begin{bmatrix}
\frac{\partial y_1}{\partial x} \\
\frac{\partial y_1}{\partial x} \\
\vdots \\
\frac{\partial y_m}{\partial x}
\end{bmatrix}
4.4 向量对向量求导
向量 $\mathbf{y}$ 的每一个分量对向量 $\mathbf{x}$ 的每一个分量求导,先展开 $\mathbf{y}$ 再展开 $\mathbf{x}$ 可得,结果为矩阵
\mathbf{x}=\begin{bmatrix}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{bmatrix},\ \mathbf{y}=\begin{bmatrix}
y_1 \\
y_2 \\
\vdots \\
y_m
\end{bmatrix},\
\frac{\partial \mathbf{y} }{\partial \mathbf{x} }=\begin{bmatrix}
\frac{\partial y_1}{\partial \mathbf{x} } \\
\frac{\partial y_2}{\partial \mathbf{x} } \\
\vdots \\
\frac{\partial y_m}{\partial \mathbf{x} }
\end{bmatrix}
=\begin{bmatrix}
\frac{\partial y_1}{\partial x_1}&\frac{\partial y_1}{\partial x_2}&\cdots&\frac{\partial y_1}{\partial x_n} \\
\frac{\partial y_2}{\partial x_1}&\frac{\partial y_2}{\partial x_2}&\cdots&\frac{\partial y_2}{\partial x_n} \\
\vdots&\vdots&&\vdots \\
\frac{\partial y_m}{\partial x_1}&\frac{\partial y_m}{\partial x_2}&\cdots&\frac{\partial y_m}{\partial x_n}
\end{bmatrix}
$$\mathbf{y}$$ | $$\mathbf{a}$$ | $$\mathbf{x}$$ | $$\mathbf{Ax}$$ | $$\mathbf{x}^{\text{T}}\mathbf{A}$$ |
---|---|---|---|---|
$$\frac{\partial \mathbf{y} }{\partial \mathbf{x} }$$ | $$\mathbf{0}$$ | $$\mathbf{I}$$ | $$\mathbf{A}$$ | $$\mathbf{A}^{\text{T}}$$ |
$$\mathbf{y}$$ | $$a\mathbf{u}$$ | $$\mathbf{Au}$$ | $$\mathbf{u}+\mathbf{v}$$ |
---|---|---|---|
$$\frac{\partial \mathbf{y} }{\partial \mathbf{x} }$$ | $$a\frac{\partial \mathbf{u} }{\partial \mathbf{x} }$$ | $$\mathbf{A}\frac{\partial \mathbf{u} }{\partial \mathbf{x} }$$ | $$\frac{\partial \mathbf{u} }{\partial \mathbf{x} }+\frac{\partial \mathbf{v} }{\partial \mathbf{x} }$$ |
5 自动微分
5.1 向量链式法则
将标量链式法则拓展到向量,可得
\underset{(1,n)}{\frac{\partial y}{\partial \mathbf{x}}}=\underset{(1,)}{\frac{\partial y}{\partial u}}\underset{(1,n)}{\frac{\partial u}{\partial \mathbf{x} }},\
\underset{(1,n)}{\frac{\partial y}{\partial \mathbf{x} }}=\underset{(1,k)}{\frac{\partial y}{\partial \mathbf{u} }}\underset{(k,n)}{\frac{\partial \mathbf{u} }{\partial \mathbf{x} }},\
\underset{(m,n)}{\frac{\partial \mathbf{y} }{\partial \mathbf{x} }}=\underset{(m,k)}{\frac{\partial \mathbf{y} }{\partial \mathbf{u} }}\underset{(k,n)}{\frac{\partial \mathbf{u} }{\partial \mathbf{x}}}
【例1】设\mathbf{x},\mathbf{w} \in \mathbb{R}^n,\ y\in \mathbb{R},\ z=(\left \langle \mathbf{x},\mathbf{w} \right \rangle -y )^2
,求 \frac{\partial z}{\partial \mathbf{w} }
【解】令 a=\left \langle \mathbf{x},\mathbf{w} \right \rangle,\ b=a-y,\ z=b^2
,则
\frac{\partial z}{\partial \mathbf{w} } =\frac{\partial z}{\partial b} \frac{\partial b}{\partial a} \frac{\partial a}{\partial \mathbf{w} }
=\frac{\partial b^2}{\partial b}\frac{\partial a-y}{\partial a}\frac{\partial \left \langle \mathbf{x},\mathbf{w} \right \rangle}{\partial \mathbf{w}}
= 2b \cdot1\cdot \mathbf{x}^{\text{T}}
= 2(\left \langle \mathbf{x},\mathbf{w} \right \rangle -y) \mathbf{x}^{\text{T}}
【例2】设\mathbf{X} \in \mathbb{R}^{m\times n},\ \mathbf{w} \in \mathbb{R}^n,\ \mathbf{y}\in \mathbb{R}^m,\ z=\lVert\mathbf{Xw}-\mathbf{y} \rVert^2
,求\frac{\partial z}{\partial \mathbf{w} }
【解】令\mathbf{a}=\mathbf{Xw},\ \mathbf{b}=\mathbf{a}-\mathbf{y},\ z=\lVert \mathbf{b} \rVert^2
,则
\frac{\partial z}{\partial \mathbf{w} } = \frac{\partial z}{\partial \mathbf{b} } \frac{\partial \mathbf{b} }{\partial \mathbf{a} } \frac{\partial \mathbf{a} }{\partial \mathbf{w} }
= \frac{\partial \lVert\mathbf{b}\rVert ^2}{\partial \mathbf{b} }\frac{\partial \mathbf{a}-\mathbf{y}}{\partial \mathbf{a} }\frac{\partial \mathbf{Xw} }{\partial \mathbf{w}}
= 2\mathbf{b}^{\text{T}} \times\mathbf{I} \times \mathbf{X}
= 2(\mathbf{Xw} -\mathbf{y} )^{\text{T}}\mathbf{X}
5.2 自动求导
自动求导计算一个函数在指定值上的导数:1. 将代码分解成操作子;2. 将计算表示成一个无环图(计算图)
- 符号求导
D_x[4x^3 + x^2 + 3]=12x^2 +2x
- 数值求导
\frac{\partial f(x)}{\partial x} =\lim_{h \to 0} \frac{f(x+h)-f(x)}{h}
由链式法则\frac{\partial y}{\partial x}=\frac{\partial y}{\partial u_n}\frac{\partial u_n}{\partial u_{n-1}}\cdots\frac{\partial u_2}{\partial u_1}\frac{\partial u_1}{\partial x}
可得自动求导的两种模式:
(1)正向累积(时间复杂度太高,不常用):
\frac{\partial y}{\partial x}=\frac{\partial y}{\partial u_n}(\frac{\partial u_n}{\partial u_{n-1}}(\cdots(\frac{\partial u_2}{\partial u_1}\frac{\partial u_1}{\partial x})))
(2)反向累积(反向传递,如下图所示):
\frac{\partial y}{\partial x}=(((\frac{\partial y}{\partial u_n}\frac{\partial u_n}{\partial u_{n-1}})\cdots)\frac{\partial u_2}{\partial u_1})\frac{\partial u_1}{\partial x}
反向传递的过程
- 构造计算图
- 前向:执行图,存储中间结果
- 反向:从反方向执行图(同时去除不需要的枝)
5.3 PyTorch实现
【例1】设函数y=2\mathbf{x}^{\text{T}}\mathbf{x}
,通过自动求导求\frac{\partial y}{\partial \mathbf{x} }
import torch
# x = torch.arange(4.0) # tensor([0., 1., 2., 3.])
x = torch.arange(4.0, requires_grad=True) # 开启梯度存储,用x.grad获取梯度
y = 2 * torch.dot(x, x) # tensor(28., grad_fn=<MulBackward0>)
y.backward() # 调用反向传播函数来自动计算标量y关于向量x每个分量的梯度
x.grad # (tensor([0., 4., 8., 12.])
【例2】设函数y=\text{sum}(\mathbf{x})
,通过自动求导求\frac{\partial y}{\partial \mathbf{x} }
x.grad.zero_() # PyTorch默认累积梯度,故需清除之前的梯度(以单下划线结尾的函数表示重写内容)
y = x.sum()
y.backward()
x.grad # tensor([1., 1., 1., 1.])
【例3】设函数\mathbf{y}=\mathbf{x}\odot \mathbf{x}
,通过自动求导求\frac{\partial \mathbf{y}}{\partial \mathbf{x} }
深度学习中,我们的目的不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和。
对非标量调用
backward()
需要传入一个gradient
参数,该参数指定微分函数关于self
的梯度
本例只想求偏导数的和,所以应传入分量全为1
的梯度(由求导公式\frac{\partial \text{sum}(\mathbf{x} )}{\partial \mathbf{x} } =\mathbf{1}^{\text{T} }
可得)
x.grad_zero_()
y = x * x
y.sum().backward() # 等价于 y.backward(torch.ones(len(x)))
x.grad # tensor([0., 2., 4., 6.])
【例4】构建如下函数的计算图需经过Python控制流,计算变量的梯度
def f(a):
b = a * 2
while b.norm() < 1000:
b *= 2
if b.sum() > 0:
c = b
else:
c = 100 * b
return c
a = torch.randn(size=(), requires_grad=True)
d = f(a) # d实为关于a的线性函数,因此梯度即为该直线的斜率
d.backward()
a.grad == d / a # tensor(True)
6 概率
6.1 基本概率论
抽样(Sampling)是统计学中把从概率分布中抽取样本的过程。分布(Distribution)可以视作是对事件(Event)的概率分配,将概率分配给一些离散选择的分布称为多项分布(Multinomial Distribution)。随机变量(Random Variable)可以在随机实验的一组可能性中取一个值。
事件(Event)是一组给定样本空间(Sample Space,或称结果空间,Outcome Space)的随机结果。若对于所有i≠j
都有\mathcal{A}_i \cap \mathcal{A}_j=\emptyset
,则称这两个事件互斥(Mutually Exclusive)。
概率(Probability)可以被认为是将集合映射到真实值的函数。在给定的样本空间\mathcal{S}
中,事件\mathcal{A}
的概率表示为P(\mathcal{A})
。概率满足以下3条概率论公理:
(1)对于任意事件\mathcal{A}
,其概率必定非负,即P(\mathcal{A})≥0
(2)整个样本空间的概率为1
,即P(\mathcal{S})=1
(3)对于互斥事件的任一可数序列\mathcal{A}_1,\mathcal{A}_2,\cdots
,序列中任意一个事件发生的概率等于它们各自发生的概率之和,即P(\bigcup\limits_{i=1}^{\infin} \mathcal{A}_i)=\sum\limits_{i=1}^{\infin} P(\mathcal{A}_i)
6.2 多个随机变量的运算
6.2.1 联合概率
联合概率(Joint Probability)P(A=a,B=b)
表示同时满足A=a
和B=b
的概率,对于任意a,b
,有
P(A=a,B=b)≤\min(P(A=a),P(B=b))
6.2.2 条件概率
由联合概率的不等式可得0≤\frac{P(A=a,B=b)}{P(A=a)}≤1
。将上式中的比率称为条件概率(Conditional Probability),记为P(B=b \mid A=a)
,即
P(B=b \mid A=a)=\frac{P(A=a,B=b)}{P(A=a)}
6.2.3 贝叶斯定理
Bayes定理(Bayes’ Theorem):根据乘法法则(multiplication rule )可得P(A,B)=P(B\mid A)P(A)
,根据对称性可得P(A,B)=P(A\mid B)P(B)
,设P(B)>0
,则有
P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}
6.2.4 求和法则
求和法则(Sum Rule):求 $B$ 的概率相当于计算A
的所有可能选择,并将所有选择的联合概率聚合在一起,即
P(B)=\sum\limits_A P(A,B)
该操作又称为边际化(Marginalization),边际化结果的概率或分布称为边际概率(Marginal Probability) 或边际分布(Marginal Distribution)。
6.2.5 独立性
如果事件A
的发生跟事件 $B$ 的发生无关,则称两个随机变量A
和B
是独立(Dependence)的,记为
A \perp B
易得此时P(A\mid B)=P(A)
。在所有其他情况下,称A
和B
依赖(Independence)。
同理,若对于三个随机变量A,B,C
有P(A,B\mid C)=P(A\mid C)P(B\mid C)
,则称A
和B
是条件独立(Conditionally Independent)的,记为
A \perp B \mid C
6.3 期望和方差
为了概括概率分布的关键特征,我们需要一些测量方法。
一个随机变量X
的期望(expectation,或平均值,Average)表示为
E[X]=\sum\limits_x xP(X=x)
当函数f(x)
的输入是从分布P
中抽取的随机变量时,f(x)
的期望值为
E_{x\sim P}[f(x)]=\sum_xf(x)P(x)
方差(Variance)可以量化随机变量与其期望值的偏置,定义为
\text{Var}[X]=E[(X-E[X])^2]=E[X^2]-E^2[X]
方差的平方根称为标准差(Standard Deviation)。
随机变量函数f(x)
的方差衡量的是:当从该随机变量分布中采样不同值x
时, 函数值偏离该函数的期望的程度,即
\text{Var}[f(x)]=E[(f(x)-E[f(x)])^2]
7 如何读论文
- title
- abstract
- introduction
- method
- experiments
- conclusion
第一遍:标题、摘要、结论。可以看一看方法和实验部分重要的图和表。这样可以花费十几分钟时间了解到论文是否适合你的研究方向。
第二遍:确定论文值得读之后,可以快速的把整个论文过一遍,不需要知道所有的细节,需要了解重要的图和表,知道每一个部分在干什么,圈出相关文献。觉得文章太难,可以读引用的文献。
第三遍:提出什么问题,用什么方法来解决这个问题。实验是怎么做的。合上文章,回忆每一个部分在讲什么。