图解-AI-数学基础-ShowMeAI--全-
图解 AI 数学基础(ShowMeAI)(全)
图解 AI 数学基础:从入门到精通系列教程

教程地址:http://www.showmeai.tech/tutorials/83
声明:版权所有,转载请联系平台与作者并注明出处
引言
本系列教程展开讲解 AI 所需的数学基础知识,力求以最直观最易懂的方式给帮助大家掌握 AI 依赖的数学知识最小子集。本教程内容覆盖线性代数与矩阵论,概率与统计,信息论,微积分与最优化几个核心的知识板块。
教程地址
点击查看完整教程学习路径
内容章节
1.线性代数与矩阵论

2.概率与统计

3.信息论

4.微积分与最优化

ShowMeAI 系列教程推荐
- 图解 Python 编程:从入门到精通系列教程
- 图解数据分析:从入门到精通系列教程
- 图解 AI 数学基础:从入门到精通系列教程
- 图解大数据技术:从入门到精通系列教程
- 图解机器学习算法:从入门到精通系列教程
- 机器学习实战:手把手教你玩转机器学习系列
- 深度学习教程 | 吴恩达专项课程 · 全套笔记解读

图解 AI 数学基础 | 线性代数与矩阵论

作者:韩信子@ShowMeAI
教程地址:www.showmeai.tech/tutorials/83
本文地址:www.showmeai.tech/article-detail/162
声明:版权所有,转载请联系平台与作者并注明出处
1.标量(Scalar)
一个标量就是一个单独的数。只具有数值大小,没有方向(部分有正负之分),运算遵循一般的代数法则。

- 一般用小写的变量名称表示。
- 质量 m m m、速率 v v v、时间 t t t、电阻 ρ \rho ρ 等物理量,都是数据标量。
2.向量(Vector)
向量指具有大小和方向的量,形态上看就是一列数。

-
通常赋予向量粗体小写的名称;手写体则在字母上加一个向右的箭头。
-
向量中的元素是有序排列的,通过索引可以确定每个元素。
-
以下两种方式,可以明确表示向量中的元素时(注意用方括号)。
-
可以把向量看作空间中的有向线段,向量的每个组成元素,对应向量在不同的坐标轴上的投影长度。
AI 中的应用:在机器学习中,单条数据样本的表征都是以向量化的形式来完成的。向量化的方式可以帮助 AI 算法在迭代与计算过程中,以更高效的方式完成。
3.矩阵(Matrix)
矩阵是二维数组,其中的每一个元素被两个索引确定。矩阵在机器学习中至关重要,无处不在。

- 通常会赋予矩阵粗体大写的变量名称。
AI 中的应用:样本以矩阵形态表示: m m m 条数据/样本, n n n 个特征的数据集,就是一个 m × n m \times n m×n 的矩阵。
4.张量(Tensor)
几何代数中定义的张量,是基于向量和矩阵的推广。
- 标量,可以视为零阶张量
- 向量,可以视为一阶张量
- 矩阵,可以视为二阶张量


-
图片以矩阵形态表示:将一张彩色图片表示成一个 H × W × C H \times W \times C H×W×C 的三阶张量,其中 H H H 是高, W W W 是宽, C C C 通常取 3,表示彩色图 3 个颜色通道。
-
在这个例子的基础上,将这一定义继续扩展,即:用四阶张量(样本,高度,宽度,通道)表示一个包含多张图片的数据集,其中,样本表示图片在数据集中的编号。
-
用五阶张量(样本,帧速,高度,宽度,通道)表示视频。
AI 中的应用:张量是深度学习中一个非常重要的概念,大部分的数据和权重都是以张量的形态存储的,后续的所有运算和优化算法也都是基于张量进行的。
5.范数(Norm)
范数是一种强化了的距离概念;简单来说,可以把『范数』理解为『距离』。
在数学上,范数包括『向量范数』和『矩阵范数』:
-
向量范数(Vector Norm),表征向量空间中向量的大小。向量空间中的向量都是有大小的,这个大小就是用范数来度量。不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样。
-
矩阵范数(Matrix Norm),表征矩阵引起变化的大小。比如,通过运算 A X = B \boldsymbol{A}\boldsymbol{X} = \boldsymbol{B} AX=B,可以将向量 X \boldsymbol{X} X 变化为 B \boldsymbol{B} B,矩阵范数就可以度量这个变化的大小。

向量范数的计算:
对于 p − \mathrm{p} - p−范数,如果 x = [ x 1 , x 2 , ⋯ , x n ] T \boldsymbol{x}=\left[x_{1}, x_{2}, \cdots, x_{n}\right]^{\mathrm{T}} x=[x1,x2,⋯,xn]T,那么向量 x \boldsymbol{x} x 的 p − \mathrm{p} - p−范数就是 ∥ x ∥ p = ( ∣ x 1 ∣ p + ∣ x 2 ∣ p + ⋯ + ∣ x n ∣ p ) 1 p |\boldsymbol{x}|{p}=\left(\left|x\right|{p}+\left|x_{2}\right|+\cdots+\left|x_{n}\right|{p}\right){p}} ∥x∥p=(∣x1∣p+∣x2∣p+⋯+∣xn∣p)p1。
L1 范数: ∣ ∣ x ∣ ∣ 1 = ∣ x 1 ∣ + ∣ x 2 ∣ + ∣ x 3 ∣ + ⋯ + ∣ x n ∣ || \boldsymbol{x}||{1}=\left|x\right|+\left|x_{2}\right|+\left|x_{3}\right|+\cdots+\left|x_{n}\right| ∣∣x∣∣1=∣x1∣+∣x2∣+∣x3∣+⋯+∣xn∣
-
p = 1 \mathrm{p} =1 p=1 时,就是 L1 范数,是 x \boldsymbol{x} x 向量各个元素的绝对值之和。
-
L1 范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等。
L2 范数: ∥ x ∥ 2 = ( ∣ x 1 ∣ 2 + ∣ x 2 ∣ 2 + ∣ x 3 ∣ 2 + ⋯ + ∣ x n ∣ 2 ) 1 / 2 |\boldsymbol{x}|{2}=\left(\left|x\right|{2}+\left|x_{2}\right|+\left|x_{3}\right|{2}+\cdots+\left|x_{n}\right|\right)^{1 / 2} ∥x∥2=(∣x1∣2+∣x2∣2+∣x3∣2+⋯+∣xn∣2)1/2
-
p = 2 \mathrm{p} =2 p=2 时,就是 L2 范数,是 x \boldsymbol{x} x 向量各个元素平方和的开方。
-
L2 范数是我们最常用的范数,欧氏距离就是一种 L2 范数。
AI 中的应用:在机器学习中,L1 范数和 L2 范数很常见,比如『评估准则的计算』、『损失函数中用于限制模型复杂度的正则化项』等。
6.特征分解(Eigen-decomposition)
将数学对象分解成多个组成部分,可以找到他们的一些属性,或者能更高地理解他们。例如,整数可以分解为质因数,通过 12 = 2 × 3 × 3 12=2 \times 3 \times 3 12=2×3×3 可以得到『12 的倍数可以被 3 整除,或者 12 不能被 5 整除』。
同样,我们可以将『矩阵』分解为一组『特征向量』和『特征值』,来发现矩阵表示为数组元素时不明显的函数性质。特征分解(Eigen-decomposition)是广泛使用的矩阵分解方式之一。

-
特征向量:方阵 A \boldsymbol{A} A 的特征向量,是指与 A \boldsymbol{A} A 相乘后相当于对该向量进行缩放的非零向量,即 A ν = λ ν \boldsymbol{A}\nu =\lambda \nu Aν=λν。
-
特征值:标量 λ \lambda λ被称为这个特征向量对应的特征值。
使用特征分解去分析矩阵 A \boldsymbol{A} A 时,得到特征向量 ν \nu ν构成的矩阵 Q \boldsymbol{Q} Q 和特征值构成的向量 Λ \boldsymbol{\Lambda } Λ,我们可以重新将 A \boldsymbol{A} A 写作: A = Q Λ Q − 1 \boldsymbol{A} = \boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{-1} A=QΛQ−1
7.奇异值分解(Singular Value Decomposition,SVD)
矩阵的特征分解是有前提条件的。只有可对角化的矩阵,才可以进行特征分解。实际很多矩阵不满足这一条件,这时候怎么办呢?
将矩阵的『特征分解』进行推广,得到一种被称为『矩阵的奇异值分解』的方法,即将一个普通矩阵分解为『奇异向量』和『奇异值』。通过奇异值分解,我们会得到一些类似于特征分解的信息。

将矩阵 A \boldsymbol{A} A 分解成三个矩阵的乘积 A = U D V − 1 \boldsymbol{A} = \boldsymbol{U} \boldsymbol{D} \boldsymbol{V}^{-1} A=UDV−1。
-
假设 A \boldsymbol{A} A 是一个 m ∗ n mn m∗n 矩阵,那么 U \boldsymbol{U} U 是一个 m ∗ m mm m∗m 矩阵, D D D 是一个 m ∗ n mn m∗n 矩阵, V V V 是一个 n ∗ n nn n∗n 矩阵。
-
U V D \boldsymbol{U} \boldsymbol{V} \boldsymbol{D} UVD 这几个矩阵都拥有特殊的结构:
-
U \boldsymbol{U} U 和 V \boldsymbol{V} V 都是正交矩阵,矩阵 U \boldsymbol{U} U 的列向量被称为左奇异向量,矩阵 V \boldsymbol{V} V 的列向量被称右奇异向量。
-
D \boldsymbol{D} D 是对角矩阵(注意, D \boldsymbol{D} D 不一定是方阵)。对角矩阵 D \boldsymbol{D} D 对角线上的元素被称为矩阵 A \boldsymbol{A} A 的奇异值。
-
AI 中的应用:SVD 最有用的一个性质可能是拓展矩阵求逆到非方矩阵上。而且大家在推荐系统中也会见到基于 SVD 的算法应用。
8.Moore-Penrose 广义逆/伪逆(Moore-Penrose Pseudoinverse)
假设在下面问题中,我们想通过矩阵 A \boldsymbol{A} A 的左逆 B \boldsymbol{B} B 来求解线性方程: A x = y \boldsymbol{A} x=y Ax=y,等式两边同时左乘左逆 B 后,得到: x = B y x=\boldsymbol{B} y x=By。是否存在唯一的映射将 A \boldsymbol{A} A 映射到 B \boldsymbol{B} B,取决于问题的形式:
-
如果矩阵 A \boldsymbol{A} A 的行数大于列数,那么上述方程可能没有解;
-
如果矩阵 A \boldsymbol{A} A 的行数小于列数,那么上述方程可能有多个解。
Moore-Penrose 伪逆使我们能够解决这种情况,矩阵 A \boldsymbol{A} A 的伪逆定义为:
A + = lim a → 0 ( A T A + α I ) − 1 A T \boldsymbol{A}^{+}=\lim _{a \rightarrow 0}\left(\boldsymbol{A}^{T} \boldsymbol{A}+\alpha \boldsymbol{I}\right)^{-1} \boldsymbol{A}^{T} A+=a→0lim(ATA+αI)−1AT

但是计算伪逆的实际算法没有基于这个式子,而是使用下面的公式:
A + = U D + V T \boldsymbol{A}^{+}=\boldsymbol{U} \boldsymbol{D}^{+} \boldsymbol{V}^{T} A+=UD+VT
-
矩阵 U \boldsymbol{U} U、 D \boldsymbol{D} D 和 V T \boldsymbol{V}^{T} VT 是矩阵 A \boldsymbol{A} A 奇异值分解后得到的矩阵;
-
对角矩阵 D \boldsymbol{D} D 的伪逆 D + \boldsymbol{D}^{+} D+是其非零元素取倒之后再转置得到的。
9.常用的距离度量
在机器学习里,大部分运算都是基于向量的,一份数据集包含 n 个特征字段,那每一条样本就可以表示为 n 维的向量,通过计算两个样本对应向量之间的距离值大小,有些场景下能反映出这两个样本的相似程度。还有一些算法,像 KNN 和 K-means,非常依赖距离度量。
设有两个 n n n 维变量:
A = [ x 11 , x 12 , . . . , x 1 n ] T A=[ x_{11}, x_{12},...,x_{1n} ] ^{T} A=[x11,x12,...,x1n]T
B = [ x 21 , x 22 , . . . , x 2 n ] T B=[ x_{21} ,x_{22} ,...,x_{2n} ] ^{T} B=[x21,x22,...,x2n]T
一些常用的距离公式定义如下:

1)曼哈顿距离(Manhattan Distance)

曼哈顿距离也称为城市街区距离,数学定义如下:
d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ d_{12} =\sum_{k=1}^{n}{| x_{1k}-x_{2k} | } d12=k=1∑n∣x1k−x2k∣
曼哈顿距离的 Python 实现:
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])
manhaton_dist = np.sum(np.abs(vector1-vector2))
print("曼哈顿距离为", manhaton_dist)
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
2)欧氏距离(Euclidean Distance)

欧氏距离其实就是 L2 范数,数学定义如下:
d 12 = ∑ k = 1 n ( x 1 k − x 2 k ) 2 d_{12} =\sqrt{\sum_{k=1}^{n}{( x_{1k} -x_{2k} ) ^{2} } } d12=k=1∑n(x1k−x2k)2
欧氏距离的 Python 实现:
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])
eud_dist = np.sqrt(np.sum((vector1-vector2)**2))
print("欧式距离为", eud_dist)
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
3)闵氏距离(Minkowski Distance)

从严格意义上讲,闵可夫斯基距离不是一种距离,而是一组距离的定义:
d 12 = ∑ k = 1 n ( x 1 k − x 2 k ) p p d_{12} =\sqrt[p]{\sum_{k=1}^{n}{( x_{1k} -x_{2k} ) ^{p} } } d12=pk=1∑n(x1k−x2k)p
实际上,当 p = 1 p=1 p=1 时,就是曼哈顿距离;当 p = 2 p=2 p=2 时,就是欧式距离。
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
4)切比雪夫距离(Chebyshev Distance)

切比雪夫距离就是无穷范数,数学表达式如下:
d 12 = m a x ( ∣ x 1 k − x 2 k ∣ ) d_{12} =max( | x_{1k}-x_{2k} |) d12=max(∣x1k−x2k∣)
切比雪夫距离的 Python 实现如下:
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])
cb_dist = np.max(np.abs(vector1-vector2))
print("切比雪夫距离为", cb_dist)
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
5)余弦相似度(Cosine Similarity)
余弦相似度的取值范围为[-1,1],可以用来衡量两个向量方向的差异:
- 夹角余弦越大,表示两个向量的夹角越小;
- 当两个向量的方向重合时,夹角余弦取最大值 1;
- 当两个向量的方向完全相反时,夹角余弦取最小值-1。

机器学习中用这一概念来衡量样本向量之间的差异,其数学表达式如下:
c o s θ = A B ∣ A ∣ ∣ B ∣ = ∑ k = 1 n x 1 k x 2 k ∑ k = 1 n x 1 k 2 ∑ k = 1 n x 2 k 2 cos\theta =\frac{AB}{| A | |B | } =\frac{\sum_{k=1}^{n}{x_{1k}x_{2k} } }{\sqrt{\sum_{k=1}{n}{x_{1k} } } \sqrt{\sum_{k=1}{n}{x_{2k} } } } cosθ=∣A∣∣B∣AB=∑k=1nx1k2 ∑k=1nx2k2 ∑k=1nx1kx2k
夹角余弦的 Python 实现:
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])
cos_sim = np.dot(vector1, vector2)/(np.linalg.norm(vector1)*np.linalg.norm(vector2))
print("余弦相似度为", cos_sim)
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
6)汉明距离(Hamming Distance)

汉明距离定义的是两个字符串中不相同位数的数目。例如,字符串‘1111’与‘1001’之间的汉明距离为 2。信息编码中一般应使得编码间的汉明距离尽可能的小。
d 12 = ∑ k = 1 n ( x 1 k ⊕ x 2 k ) d_{12} = \sum_{k=1}^{n} \left ( x_{1k} \oplus x_{2k}\right ) d12=k=1∑n(x1k⊕x2k)
汉明距离的 Python 实现:
import numpy as np
a=np.array([1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0])
b=np.array([1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1])
hanm_dis = np.count_nonzero(a!=b)
print("汉明距离为", hanm_dis)
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
7)杰卡德系数(Jaccard Index)

两个集合 A A A 和 B B B 的交集元素在 A A A 和 B B B 的并集中所占的比例称为两个集合的杰卡德系数,用符号 J ( A , B ) J(A,B) J(A,B)表示,数学表达式为:
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J( A,B ) =\frac{| A\cap B| }{|A\cup B | } J(A,B)=∣A∪B∣∣A∩B∣
杰卡德相似系数是衡量两个集合的相似度的一种指标。一般可以将其用在衡量样本的相似度上。
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
8)杰卡德距离(Jaccard Distance)

与杰卡德系数相反的概念是杰卡德距离,其定义式为:
J σ = 1 − J ( A , B ) = ∣ A ∪ B ∣ − ∣ A ∩ B ∣ ∣ A ∪ B ∣ J_{\sigma} =1-J( A,B ) =\frac{| A\cup B | -| A\cap B | }{| A\cup B | } Jσ=1−J(A,B)=∣A∪B∣∣A∪B∣−∣A∩B∣
杰卡德距离的 Python 实现:
import numpy as np
vec1 = np.random.random(10)>0.5
vec2 = np.random.random(10)>0.5
vec1 = np.asarray(vec1, np.int32)
vec2 = np.asarray(vec2, np.int32)
up=np.double(np.bitwise_and((vec1 != vec2),np.bitwise_or(vec1 != 0, vec2 != 0)).sum())
down=np.double(np.bitwise_or(vec1 != 0, vec2 != 0).sum())
jaccard_dis =1-(up/down)
print("杰卡德距离为", jaccard_dis)
前往我们的在线编程环境运行代码:
blog.showmeai.tech/python3-compiler/#/
ShowMeAI 相关文章推荐
ShowMeAI 系列教程推荐

图解 AI 数学基础 | 概率与统计

作者:韩信子@ShowMeAI
教程地址:www.showmeai.tech/tutorials/83
本文地址:www.showmeai.tech/article-detail/163
声明:版权所有,转载请联系平台与作者并注明出处
1.概率论及在 AI 中的使用
概率(Probability),反映随机事件出现的可能性大小。事件 A A A 出现的概率,用 P ( A ) P(A) P(A)表示。
概率论(Probability Theory),是研究随机现象数量规律的数学分支,度量事物的不确定性。

机器学习大部分时候处理的都是不确定量或随机量。因此,相对计算机科学的其他许多分支而言,机器学习会更多地使用概率论。很多典型的机器学习算法模型也是基于概率的,比如朴素贝叶斯(Naive Bayesian)等。
在人工智能领域,概率论有广泛的应用:
- 可以借助于概率方法设计算法(概率型模型,如朴素贝叶斯算法)。
- 可以基于概率与统计进行预测分析(如神经网络中的 softmax)。
2.随机变量(Random Variable)
简单地说,随机变量是指随机事件的数量表现,是可以『随机』地取不同值的『变量』。通常,用大写字母来表示随机变量本身,而用带数字下标的小写字母来表示随机变量能够取到的值。
- 例如, X X X 为随机变量, x 1 x_{1} x1、 x 2 x_{2} x2、 x i x_{i} xi是随机变量 X X X 可能的取值。

随机变量可以分为『离散型随机变量』和『连续型随机变量』:
-
离散型随机变量(discrete random variable):即在一定区间内变量取值为有限个(或可数个)。例如,某地区某年的出生人口数。
-
连续型随机变量(continuous random variable):即在一定区间内变量取值为无限个(或数值无法一一列举出来)。例如,某地区男性健康成人的体重值。
3.随机向量(Random Vector)

将几个随机变量按顺序放在一起,组成向量的形式,就是随机向量。
在样本空间全部都一样的情况下,一个 n n n 维的随机向量是 x ( ξ ) → = ( x 1 ( ξ ) x 2 ( ξ ) ⋯ x n ( ξ ) ) x \overrightarrow{(\xi)}=\left(\begin{array}{c} x_{1}(\xi) \ x_{2}(\xi) \ \cdots \ x_{n}(\xi) \end{array}\right) x(ξ) =⎝⎜⎜⎛x1(ξ)x2(ξ)⋯xn(ξ)⎠⎟⎟⎞
其中, ξ \xi ξ就是样本空间中的样本点。随机变量是1维随机向量的特殊情况。
4.概率分布(Probability Distribution)
广义上,概率分布用于表述随机变量取值的概率规律。或者说,给定某随机变量的取值范围,概率分布表示该随机事件出现的可能性。
狭义地,概率分布指随机变量地概率分布函数,也称累积分布函数(Cumulative Distribution Function,CDF)。

离散型随机变量的概率分布:
-
使用分布列描述离散型随机变量的概率分布,即给出离散型随机变量的全部取值及每个值的概率。
-
常见的离散型随机变量的分布有:单点分布、0-1 分布、几何分布、二项分布、泊松分布等。
连续型随机变量的概率分布:
如果随机变量 X X X 的分布函数为 F ( x ) F(x) F(x),存在非负函数 f ( x ) f (x) f(x)使对于任意实数 x x x 有 F ( x ) = ∫ − ∞ x f ( t ) d t F(x)=\int_{-\infty}^{x} f(t) d t F(x)=∫−∞xf(t)dt,则称 X X X 为连续型随机变量 ,其中函数 f ( x ) f(x) f(x)称为 X X X 的概率密度函数。
常见的连续型随机变量的分布有:正态分布、均匀分布、指数分布、 t − t- t−分布、 F − F- F−分布、 ξ 2 − \xi^{2}- ξ2−分布等。
机器学习中一个典型的概率分布应用,是分类问题中,很多模型最终会预估得到样本属于每个类别的概率,构成 1 个概率向量,表征类别概率分布。
5.条件概率(Conditional Probability)

很多情况下我们感兴趣的是,某个事件在给定其它事件发生时出现的概率,这种概率叫条件概率。
给定 A A A 时 B B B 发生的概率记为 P ( B ∣ A ) P(B \mid A) P(B∣A),概率的计算公式为: P ( B ∣ A ) = P ( A B ) P ( A ) P(B \mid A)=\frac{P(A B)}{P(A)} P(B∣A)=P(A)P(AB)
6.贝叶斯公式(Bayes’ Theorem)
先看看什么是“先验概率”和“后验概率”,以一个例子来说明:
先验概率:某疾病在人群中发病率为 0.1%,那某人没有做检验之前,预计患病率为 P ( 患病 ) = 0.1 % P(\text { 患病 })=0.1 % P( 患病 )=0.1%,这个概率就叫做『先验概率』。
后验概率:该疾病的检测准确率为 95%,即该病患者检测显示阳性的概率为 95%(检测显示阴性的概率为 5%),即 P ( 显示阳性|患病 ) = 95 % P(\text { 显示阳性|患病 })=95% P( 显示阳性|患病 )=95%;或者说未患病的检测者,检测结果显示阴性的概率为 95%,检测显示阳性的概率为 5%。那么,检测显示为阳性时,此人的患病概率 P ( 患病| 显示阳性 ) P(\text { 患病| 显示阳性}) P( 患病| 显示阳性)就叫做『后验概率』。

贝叶斯公式:贝叶斯提供了一种利用『先验概率』计算『后验概率』的方法:
-
条件概率公式: P ( B ∣ A ) = P ( A B ) P ( A ) P(B \mid A)=\frac{P(A B)}{P(A)} P(B∣A)=P(A)P(AB), P ( A ∣ B ) = P ( A B ) P ( B ) P(A \mid B)=\frac{P(A B)}{P(B)} P(A∣B)=P(B)P(AB)
-
由条件概率公式变换得到乘法公式: P ( A B ) = P ( B ∣ A ) P ( A ) = P ( A ∣ B ) P ( B ) P(A B)=P(B \mid A) P(A)=P(A \mid B) P(B) P(AB)=P(B∣A)P(A)=P(A∣B)P(B)
-
将条件概率公式和乘法公式结合: P ( B ∣ A ) = P ( A ∣ B ) ⋅ P ( B ) P ( A ) P(B \mid A)=\frac{P(A \mid B) \cdot P(B)}{P(A)} P(B∣A)=P(A)P(A∣B)⋅P(B)
-
引入全概率公式: P ( A ) = ∑ i = 1 N P ( A ∣ B i ) ⋅ P ( B i ) P(A)=\sum_{i=1}^{N} P\left(A \mid B_{i}\right) \cdot P\left(B_{i}\right) P(A)=∑i=1NP(A∣Bi)⋅P(Bi)
-
将全概率代入 P ( B ∣ A ) P(B \mid A) P(B∣A),可以得到贝叶斯公式: P ( B i ∣ A ) = P ( A ∣ B i ) ⋅ P ( B i ) ∑ i = 1 N P ( A ∣ B i ) ⋅ P ( B i ) P\left(B_{i} \mid A\right)=\frac{P\left(A \mid B_{i}\right) \cdot P\left(B_{i}\right)}{\sum_{i=1}^{N} P\left(A \mid B_{i}\right) \cdot P\left(B_{i}\right)} P(Bi∣A)=∑i=1NP(A∣Bi)⋅P(Bi)P(A∣Bi)⋅P(Bi)
上述例子的计算结果:
P ( 患病 ∣ 显示阳性 ) = P ( 显示阳性|患病 ) P ( 患病 ) P ( 显示阳性 ) = P ( 显示阳性|患病 ) P ( 患病 ) P ( 显示阳性|患病 ) P ( 患病 ) + P ( 显示阳性|无病) P ( 无病 ) = 95 % ∗ 0.1 % 95 % ∗ 0.1 % + 5 % ∗ 99.9 % = 1.86 % \begin{aligned} P(\text { 患病 } \mid \text { 显示阳性 }) &=\frac{P(\text { 显示阳性|患病 }) P(\text { 患病 })}{P(\text { 显示阳性 })} \ &=\frac{P(\text { 显示阳性|患病 }) P(\text { 患病 })}{P(\text { 显示阳性|患病 }) P(\text { 患病 })+P(\text { 显示阳性|无病) } P(\text { 无病 })} \ &=\frac{95 % * 0.1 %}{95 % * 0.1 %+5 % * 99.9 %}=1.86 % \end{aligned} P( 患病 ∣ 显示阳性 )=P( 显示阳性 )P( 显示阳性|患病 )P( 患病 )=P( 显示阳性|患病 )P( 患病 )+P( 显示阳性|无病) P( 无病 )P( 显示阳性|患病 )P( 患病 )=95%∗0.1%+5%∗99.9%95%∗0.1%=1.86%
贝叶斯公式贯穿了机器学习中随机问题分析的全过程。从文本分类到概率图模型,其基本分类都是贝叶斯公式。
期望、方差、协方差等主要反映数据的统计特征。机器学习的一个很大应用就是数据挖掘等,因此这些基本的统计概念也是很有必要掌握。另外,像后面的 EM 算法中,就需要用到期望的相关概念和性质。
7.期望(Expectation)
在概率论和统计学中,数学期望是试验中每次可能结果的概率乘以其结果的总和。期望是最基本的数学特征之一,反映随机变量平均值的大小。

假设 X X X 是一个离散型随机变量,其可能的取值有 { x 1 , x 2 , … , x n } \left{x_{1}, x_{2}, \ldots, x_{n}\right} {x1,x2,…,xn},各取值对应的概率取值为 P ( x k ) P\left(x_{k}\right) P(xk), k = 1 , 2 , … , n k=1, 2, \ldots, n k=1,2,…,n。其数学期望被定义为:
E ( X ) = ∑ k = 1 n x k P ( x k ) E(X)=\sum_{k=1}^{n} x_{k} P\left(x_{k}\right) E(X)=k=1∑nxkP(xk)
假设 x x x 是一个连续型随机变量,其概率密度函数为 f ( x ) f(x) f(x),其数学期望被定义为:
E ( x ) = ∫ − ω + w x f ( x ) d x E(x)=\int_{-\boldsymbol{\omega}}^{+\boldsymbol{w}} x f(x) d x E(x)=∫−ω+wxf(x)dx
8.方差(Variance)
在概率论和统计学中,样本方差,是各个样本数据分别与其平均数之差的平方和的平均数。方差用来衡量随机变量与其数学期望之间的偏离程度。

离散型:( μ \mu μ表示期望)
D ( X ) = ∑ k = 1 n ( x k − μ ) 2 D(X)=\sum_{k=1}^{n} \left(x_{k}-\mu\right)^{2} D(X)=k=1∑n(xk−μ)2
一个快速计算方差的公式(即平方的期望减去期望的平方):
D ( X ) = E { [ X − E ( X ) ] 2 } = E ( X 2 ) − [ E ( X ) ] 2 D(X)=E\left{[X-E(X)]{2}\right}=E\left(X\right)-[E(X)]^{2} D(X)=E{[X−E(X)]2}=E(X2)−[E(X)]2
连续型:( μ \mu μ表示期望)
D ( x ) = ∫ ( x − μ ) 2 f ( x ) d x D(x)=\int(x-\mu)^{2} f(x) d x D(x)=∫(x−μ)2f(x)dx
9.协方差(Covariance)

在概率论和统计学中,协方差被用于衡量两个随机变量 X X X 和 Y Y Y 之间的总体误差。期望值分别为 E [ X ] E[X] E[X]与 E [ Y ] E[Y] E[Y]的两个实随机变量 X X X 与 Y Y Y 之间的协方差为:
C o v ( X , Y ) = E [ X − E ( X ) ] [ Y − E ( Y ) ] = E ( X Y ) − E ( X ) E ( Y ) Cov(X,Y) =E { [X-E(X)][Y-E(Y)] } =E(XY)-E(X)E(Y) Cov(X,Y)=E[X−E(X)][Y−E(Y)]=E(XY)−E(X)E(Y)
以下是几个常用等式:
C o v ( X , Y ) = C o v ( Y , X ) Cov(X, Y)=Cov(Y, X) Cov(X,Y)=Cov(Y,X)
C o v ( X , X ) = D ( X ) Cov(X, X)=D(X) Cov(X,X)=D(X)
D ( X + Y ) = D ( X ) + D ( Y ) + 2 C o v ( X , Y ) D(X+Y)=D(X)+D(Y)+2 Cov(X, Y) D(X+Y)=D(X)+D(Y)+2Cov(X,Y)
C o v ( X , Y ) = E ( X Y ) − E ( X ) E ( Y ) Cov(X, Y)=E(X Y)-E(X) E(Y) Cov(X,Y)=E(XY)−E(X)E(Y)
10.相关系数(Correlation coefficient)

相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,用以研究变量之间线性相关程度。相关系数有多种定义方式,较为常用的是皮尔逊相关系数。从协方差中会得到引申,就是关联系数,即:( σ \sigma σ是标准差)
ρ = C o v ( X , Y ) σ x σ y \rho = \frac{Cov(X,Y)}{\sigma _{x} \sigma _{y}} ρ=σxσyCov(X,Y)
这个公式还有另外的一个表达形式:
ρ = C o v ( X , Y ) D ( X ) D ( Y ) \rho = \frac{Cov(X,Y)}{\sqrt{D(X)} \sqrt{D(Y)}} ρ=D(X) D(Y) Cov(X,Y)
11.常见分布函数

1)伯努利分布(Bernoulli Distribution)(离散型)
在概率论和统计学中,伯努利分布也叫 0-1 分布,是单个二值型离散随机变量的分布。

- 概率分布函数: P ( X = k ) = p k ( 1 − p ) 1 − k P(X=k)=p{k}(1-p) P(X=k)=pk(1−p)1−k
- 期望: E ( X ) = p E(X)=p E(X)=p
- 方差: D ( X ) = p ( 1 − p ) D(X)=p(1-p) D(X)=p(1−p)
2)几何分布(Geometric Distribution)(离散型)
在概率论和统计学中,几何分布是离散型概率分布,数学符号为 X ∼ G ( p ) X\sim G(p) X∼G(p)。其定义为:在 n n n 次伯努利试验中,试验 k k k 次才得到第一次成功的机率(即前 k − 1 k-1 k−1 次皆失败,第 k k k 次成功的概率)

- 概率分布函数: P ( X = k ) = ( 1 − p ) k − 1 p P(X=k)=(1-p)^{k-1} p P(X=k)=(1−p)k−1p
- 期望: E ( X ) = 1 p E(X)=\frac{1}{p} E(X)=p1
- 方差: D ( X ) = 1 − p p 2 D(X)=\frac{1-p}{p^{2}} D(X)=p21−p
3)二项分布(Binomial Distribution)(离散型)
在概率论和统计学中,二项分布即重复 n n n 次伯努利试验,各次试验之间都相互独立,并且每次试验中只有两种可能的结果,而且这两种结果发生与否相互对立,数学符号为 X ∼ B ( n , p ) X∼B(n,p) X∼B(n,p)。

如果每次试验时,事件发生的概率为 p p p,不发生的概率为 1 − p 1-p 1−p,则 n n n 次重复独立试验中发生 k k k 次的概率为: P ( X = k ) = C n k p k ( 1 − p ) n − k P(X=k)=C_{n}^{k} p{k}(1-p) P(X=k)=Cnkpk(1−p)n−k
-
期望: E ( X ) = n p E(X)=n p E(X)=np
-
方差: D ( X ) = n p ( 1 − p ) D(X)=n p(1-p) D(X)=np(1−p)
4)泊松分布(Poisson Distribution)(离散型)
在概率论和统计学中,泊松分布是一种统计与概率学里常见到的离散概率分布,用于描述某段时间内事件具体的发生概率,数学符号为 X ∼ π ( λ ) X∼\pi \left ( \lambda \right ) X∼π(λ)。

泊松分布的参数 λ \lambda λ表示单位时间(或单位面积)内随机事件的平均发生次数,其概率分布函数为: P ( X = k ) = ( λ ) k e − λ k ! P(X=k)=\frac{(\lambda )^{k} e^{-\lambda}}{k !} P(X=k)=k!(λ)ke−λ
- 期望: E ( X ) = λ E(X)=\lambda E(X)=λ
- 方差: D ( X ) = λ D(X) = \lambda D(X)=λ
例如,某医院平均每小时出生 2.5 个婴儿( λ=2.5 ),那么接下来一个小时,会出生几个婴儿?
-
没有婴儿出生( k = 0 k=0 k=0)的概率为: P ( X = 0 ) = ( 2.5 ) 0 ⋅ e − 2.5 0 ! ≈ 0.082 P(X=0)=\frac{(2.5)^{0} \cdot e^{-2.5}}{0 !} \approx 0.082 P(X=0)=0!(2.5)0⋅e−2.5≈0.082
-
有 1 个婴儿出生( k = 1 k=1 k=1)的概率为: P ( X = 1 ) = ( 2.5 ) 1 ⋅ e − 2.5 1 ! ≈ 0.205 P(X=1)=\frac{(2.5)^{1} \cdot e^{-2.5}}{1 !} \approx 0.205 P(X=1)=1!(2.5)1⋅e−2.5≈0.205
-
有 2 个婴儿出生( k = 2 k=2 k=2)的概率为: P ( X = 2 ) = ( 2.5 ) 2 ⋅ e − 2.5 2 ! ≈ 0.257 P(X=2)=\frac{(2.5)^{2} \cdot e^{-2.5}}{2 !} \approx 0.257 P(X=2)=2!(2.5)2⋅e−2.5≈0.257
| k | 0 | 1 | 2 | ··· |
|---|---|---|---|---|
| p | 0.082 | 0.205 | 0.257 | ··· |
通常,柏松分布也叫等待概率,是一种比二项分布应用场景更为丰富的概率模型,在数控、电商优化中也经常能见到它的影子。
5)正态分布(Normal Distribution)(连续型)
在概率论和统计学中,正态分布又叫高斯分布(Gaussian Distribution),其曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形。数学符号为 X ∼ N ( μ , σ 2 ) X∼N\left(\mu, \sigma^{2}\right) X∼N(μ,σ2)。

若随机变量 X X X 服从一个数学期望为 μ \mu μ、方差为 σ 2 \sigma^{2} σ2 的正态分布,其概率分布函数: f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2 \pi} \sigma} e {-\frac{(x-\mu){2}}{2 \sigma^{2}}} f(x)=2π σ1e−2σ2(x−μ)2
- 期望: E ( X ) = μ E(X)=\mu E(X)=μ
- 方差: D ( X ) = σ 2 D(X)=\sigma^{2} D(X)=σ2
6)均匀分布(Uniform Distribution)(连续型)
在概率论和统计学中,均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。
均匀分布由两个参数 a a a 和 b b b 定义,数学符号为 X ∼ U ( a , b ) X∼U (a, b) X∼U(a,b)(其中, a a a 为数轴上较小值, b b b 为数轴上较大值)。

其概率分布函数:$f(x)=\frac{1}{b-a} , a
- 期望: E ( X ) = a + b 2 E(X)=\frac{a+b}{2} E(X)=2a+b
- 方差: D ( X ) = ( b − a ) 2 12 D(X) = \frac{(b-a)^{2}}{12} D(X)=12(b−a)2
7)指数分布(Exponential Distribution)(连续型)
在概率论和统计学中,指数分布与其他分布的最大不同之处在于,随机变量 X X X 指的是不同独立事件发生的时间间隔值,时间越长事件发生的概率指数型增大(减小),数学符号为 X ∼ E ( λ ) X∼E(\lambda) X∼E(λ)。

指数分布的参数 λ \lambda λ表示单位时间(或单位面积)内随机事件的平均发生次数,其概率分布函数为: f ( x ) = λ e − λ x , x ≥ 0 f(x) = \lambda e^{-\lambda x}, x\ge 0 f(x)=λe−λx,x≥0
- 期望: E ( X ) = 1 λ E(X)=\frac{1}{\lambda} E(X)=λ1
- 方差: D ( X ) = 1 λ 2 D(X)=\frac{1}{\lambda^{2}} D(X)=λ21
在我们日常的消费领域,通常的目的是求出在某个时间区间内,会发生随机事件的概率有多大。如:银行窗口服务、交通管理、火车票售票系统、消费市场研究报告中被广泛运用。
例如:某医院平均每小时出生 2.5 个婴儿( λ=2.5 )。如果到下一个婴儿出生需要的间隔时间为 t (即时间 t 内没有任何婴儿出生)。
- 间隔 15 分钟( X = 1 4 X=\frac{1}{4} X=41)后才有婴儿出生的概率为: f ( 1 4 ) = 2.5 e − 2.5 ⋅ 1 4 ≈ 0.9197 f(\frac{1}{4}) = 2.5 e^{-2.5 \cdot \frac{1}{4}} \approx 0.9197 f(41)=2.5e−2.5⋅41≈0.9197
- 间隔 30 分钟( X = 1 2 X=\frac{1}{2} X=21)后才有婴儿出生的概率为: f ( 1 2 ) = 2.5 e − 2.5 ⋅ 1 2 ≈ 0.7163 f(\frac{1}{2}) = 2.5 e^{-2.5 \cdot \frac{1}{2}} \approx 0.7163 f(21)=2.5e−2.5⋅21≈0.7163
一些总结:


12.拉格朗日乘子法(Lagrange Multiplier)
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和 KKT(Karush Kuhn Tucker)条件是两种最常用的方法。
在机器学习的过程中,我们经常遇到在有限制的情况下,最大化表达式的问题。如:
m a x f ( x , y ) s . t . g ( x , y ) = 0 maxf(x,y)s.t. \quad g(x,y)=0 maxf(x,y)s.t.g(x,y)=0
此时我们可以构造 L ( x , y , λ ) = f ( x , y ) − λ ( g ( x , y ) − c ) L(x,y,\lambda )=f(x,y) − \lambda \left ( g(x,y) -c \right ) L(x,y,λ)=f(x,y)−λ(g(x,y)−c),其中 λ \lambda λ称为拉格朗日乘子。接下来要对拉格朗日函数 L ( x , y , λ ) L(x,y,\lambda ) L(x,y,λ)求导,令其为 0,解方程即可。
以下是图文解释:

红线标出的是约束 g ( x , y ) = c g(x,y)=c g(x,y)=c 的点的轨迹。蓝线是 f ( x , y ) f(x,y) f(x,y)的等高线。箭头表示斜率,和等高线的法线平行,从梯度的方向上来看显然有 d 1 > d 2 d_{1}>d_{2} d1>d2。
红色的线是约束。如果没有这条约束, f ( x , y ) f(x,y) f(x,y)的最小值应该会落在最小那圈等高线内部的某一点上。现在加上了约束,正好落在这条红线上的点才可能是满足要求的点。也就是说,应该是在 f ( x , y ) f(x,y) f(x,y)的等高线正好和约束线 g ( x , y ) g(x,y) g(x,y)相切的位置。
对约束也求梯度 ∇ g ( x , y ) \nabla g(x,y) ∇g(x,y)(如图中红色箭头所示),可以看出要想让目标函数 f ( x , y ) f(x,y) f(x,y)的等高线和约束相切 g ( x , y ) g(x,y) g(x,y),则他们切点的梯度一定在一条直线上。也即在最优化解的时候 ∇ f ( x , y ) = λ ∇ g ( x , y ) − C \nabla f(x,y)=λ \nabla g(x,y)-C ∇f(x,y)=λ∇g(x,y)−C,即 ∇ [ f ( x , y ) + λ ( g ( x , y ) − c ) ] = 0 , λ ≠ 0 \nabla [f(x,y)+λ(g(x,y)−c)]=0,λ≠0 ∇[f(x,y)+λ(g(x,y)−c)]=0,λ=0。
那么拉格朗日函数 L ( x , y , λ ) = f ( x , y ) − λ ( g ( x , y ) − c ) L(x,y,\lambda )=f(x,y) − \lambda \left ( g(x,y) -c \right ) L(x,y,λ)=f(x,y)−λ(g(x,y)−c)在达到极值时与 f ( x , y ) f(x,y) f(x,y)相等,因为 F ( x , y ) F(x,y) F(x,y)达到极值时 g ( x , y ) − c g(x,y)−c g(x,y)−c 总等于零。
简单的说, L ( x , y , λ ) L(x,y,λ) L(x,y,λ)取得最优化解的时候,也就是 L ( x , y , λ ) L(x,y,λ) L(x,y,λ)取极值的时候。此时 L ( x , y , λ ) L(x,y,λ) L(x,y,λ)的导数为 0,即 ∇ L ( x , y , λ ) = ∇ [ f ( x , y ) − λ ( g ( x , y ) − c ) ] = 0 \nabla L(x,y,\lambda )=\nabla \left [ f(x,y) − \lambda \left ( g(x,y) -c \right ) \right ] =0 ∇L(x,y,λ)=∇[f(x,y)−λ(g(x,y)−c)]=0,可以得出 f ( x , y ) f(x,y) f(x,y)与 g ( x , y ) g(x,y) g(x,y)梯度共线,此时就是在条件约束 g ( x , y ) g(x,y) g(x,y)下, f ( x , y ) f(x,y) f(x,y)的最优化解。
在支持向量机模型(SVM)的推导中,很关键的一步就是利用拉格朗日对偶性,将原问题转化为对偶问题。
13.最大似然估计(Maximum Likelihood Estimate)
最大概似估计(MLE)是一种粗略的数学期望,指在模型已定、参数 θ \theta θ未知的情况下,通过观测数据估计未知参数 θ \theta θ的一种思想或方法。
最大似然估计的哲学内涵就是:我们对某个事件发生的概率未知,但我们做了一些实验,有过一些对这个事件的经历(经验),那么我们认为,这个事件的概率应该是能够与我们做的实验结果最吻合。当然,前提是我们做的实验次数应当足够多。
举个例子,假设我们要统计全国人口的身高。首先假设这个身高服从服从正态分布,但是该分布的均值。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值。

最大似然函数的求解思想是:给定样本取值后,该样本最有可能来自参数 θ \theta θ为何值的总体。即:寻找 θ ˉ M L E \bar{\theta}_{M LE} θˉMLE使得观测到样本数据的可能性最大。
最大似然函数估计值的一般求解步骤是:
- 写出似然函数 L ( θ 1 , θ 2 , ⋯ , θ n ) = { ∏ i = 1 n p ( x i ; θ 1 , θ 2 , ⋯ , θ n ) ∏ i = 1 n f ( x i ; θ 1 , θ 2 , ⋯ , θ n ) L\left(\theta_{1}, \theta_{2}, \cdots, \theta_{n}\right)=\left{\begin{array}{l} \prod_{i=1}^{n} p\left(x_{i} ; \theta_{1}, \theta_{2}, \cdots, \theta_{n}\right) \ \prod_{i=1}^{n} f\left(x_{i} ; \theta_{1}, \theta_{2}, \cdots, \theta_{n}\right) \end{array}\right. L(θ1,θ2,⋯,θn)={∏i=1np(xi;θ1,θ2,⋯,θn)∏i=1nf(xi;θ1,θ2,⋯,θn)
- 对似然函数取对数
- 两边同时求导数
- 令导数为 0 解出似然方程
在机器学习中也会经常见到极大似然的影子。比如后面的逻辑斯特回归模型(LR),其核心就是构造对数损失函数后运用极大似然估计。
ShowMeAI 相关文章推荐
ShowMeAI 系列教程推荐

图解 AI 数学基础 | 信息论

作者:韩信子@ShowMeAI
教程地址:www.showmeai.tech/tutorials/83
本文地址:www.showmeai.tech/article-detail/164
声明:版权所有,转载请联系平台与作者并注明出处
信息论是运用概率论与数理统计的方法研究信息、信息熵、通信系统、数据传输、密码学、数据压缩等问题的应用数学学科。信息论中包含的知识和概念在机器学习中也有应用,典型的例子是其核心思想『熵』的应用。
例如,决策树模型 ID3、C4.5 中是利用信息增益来确定划分特征而逐步生长和构建决策树的;其中,信息增益就是基于信息论中的熵。
1.熵(Entropy)
熵是 1854 年由克劳休斯提出的一个用来度量体系混乱程度的单位,并阐述了热力学第二定律熵增原理:在孤立系统中,体系与环境没有能量交换,体系总是自发的向混乱度增大的方向变化,使整个系统的熵值越来越大。
熵越大,表征的随机变量的不确定度越大,其含有的信息量越多。

随机变量 X X X 可能的取值为 { x 1 , x 2 , … , x n } \left{ x_{1},x_{2} ,\dots ,x_{n} \right} {x1,x2,…,xn},其概率分布为 P ( X = x i ) = p i P\left( X=x_{i} \right) =p_{i} P(X=xi)=pi, i = 1 , 2 , … , n i = 1, 2, \dots, n i=1,2,…,n,则随机变量 X X X 的熵定义为 H ( X ) H(X) H(X):
H ( X ) = − ∑ i = 1 n P ( x i ) l o g P ( x i ) = ∑ i = 1 n P ( x i ) 1 l o g P ( x i ) H\left( X \right) =-\sum_{i=1}^{n}{P\left( x_{i} \right) logP\left( x_{i} \right) } =\sum_{i=1}^{n}{P\left( x_{i} \right) \frac{1}{logP\left( x_{i} \right) } } H(X)=−i=1∑nP(xi)logP(xi)=i=1∑nP(xi)logP(xi)1
2.联合熵(Joint Entropy )

联合熵,就是度量一个联合分布的随机系统的不确定度。分布为 P ( x , y ) P(x,y) P(x,y)的一对随机变量 ( X , Y ) (X,Y) (X,Y),其联合熵定义为:
H ( X , Y ) = − ∑ i = 1 n ∑ j = 1 n P ( x i , y j ) l o g P ( x i , y j ) = E [ log 1 p ( x , y ) ] H\left( X,Y \right) =-\sum_{i=1}{n}{\sum_{j=1} ,y_{j} \right)} logP\left( x_{i},y_{j} \right) } =E\left[ \log\frac{1}{p(x,y)} \right] H(X,Y)=−i=1∑nj=1∑nP(xi,yj)logP(xi,yj)=E[logp(x,y)1]
联合熵的物理意义,是观察一个多随机变量的随机系统获得的信息量,是对二维随机变量 ( X , Y ) (X,Y) (X,Y)不确定性的度量。
3.条件熵(Conditional Entropy)
Y Y Y 的条件熵是指『在随机变量 X X X 发生的前提下,随机变量 Y Y Y 发生新带来的熵』,用 H ( Y ∣ X ) H(Y | X) H(Y∣X)表示:
H ( Y ∣ X ) = − ∑ x , y P ( x , y ) l o g P ( y ∣ x ) H\left(Y|X \right) =-\sum_{x,y}^{}{P\left( x,y \right) logP\left( y|x \right) } H(Y∣X)=−x,y∑P(x,y)logP(y∣x)

条件熵的物理意义,在得知某一确定信息的基础上获取另外一个信息时所获得的信息量,用来衡量在已知随机变量的 X X X 条件下,随机变量 Y Y Y 的不确定性。
4.相对熵(Kullback–Leibler divergence)
相对熵在信息论中用来描述两个概率分布差异的熵,叫作 KL 散度、相对熵、互熵、交叉熵、信息增益。对于一个离散随机变量的两个概率分布 P P P 和 Q Q Q 来说,它们的相对熵定义为:
D ( P ∣ ∣ Q ) = ∑ i = 1 n P ( x i ) l o g P ( x i ) Q ( x i ) D\left( P||Q \right) =\sum_{i=1}^{n}{P\left( x_{i} \right) log\frac{P\left( x_{i} \right) }{Q\left( x_{i} \right) } } D(P∣∣Q)=i=1∑nP(xi)logQ(xi)P(xi)

注意:公式中 P P P 表示真实分布, Q Q Q 表示 P P P 的拟合分布, D ( P ∣ ∣ Q ) ≠ D ( Q ∣ ∣ P ) D(P||Q) ≠ D(Q||P) D(P∣∣Q)=D(Q∣∣P)
相对熵表示当用概率分布 Q Q Q 来拟合真实分布 P P P 时,产生的信息损耗。
5.互信息(Mutual Information)
互信息是信息论里一种有用的信息度量方式,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
互信息的计算方式定义如下:
I ( X , Y ) = ∑ x ∈ X ∑ y ∈ Y P ( x , y ) l o g P ( x , y ) P ( x ) P ( y ) I\left( X,Y \right) =\sum_{x\in X}^{}{\sum_{y\in Y}^{}{P\left( x,y \right) } log\frac{P\left( x,y \right) }{P\left( x \right) P\left( y \right) } } I(X,Y)=x∈X∑y∈Y∑P(x,y)logP(x)P(y)P(x,y)

6.常用等式(useful equations)
1)条件熵、联合熵与熵之间的关系
H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H\left( Y|X \right) =H\left( X,Y\right) -H\left( X \right) H(Y∣X)=H(X,Y)−H(X)
推导过程如下:
H ( X , Y ) − H ( X ) = − ∑ x , y p ( x , y ) log p ( x , y ) + ∑ x p ( x ) log p ( x ) = − ∑ x , y p ( x , y ) log p ( x , y ) + ∑ x ( ∑ y p ( x , y ) ) log p ( x ) = − ∑ x , y p ( x , y ) log p ( x , y ) + ∑ x , y p ( x , y ) log p ( x ) = − ∑ x , y p ( x , y ) log p ( x , y ) p ( x ) = − ∑ x , y p ( x , y ) log p ( y ∣ x ) \begin{array}{l} H(X, Y)-H(X) \ =-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x} p(x) \log p(x) \ =-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x}\left(\sum_{y} p(x, y)\right) \log p(x) \ =-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x, y} p(x, y) \log p(x) \ =-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)} \ =-\sum_{x, y} p(x, y) \log p(y \mid x) \end{array} H(X,Y)−H(X)=−∑x,yp(x,y)logp(x,y)+∑xp(x)logp(x)=−∑x,yp(x,y)logp(x,y)+∑x(∑yp(x,y))logp(x)=−∑x,yp(x,y)logp(x,y)+∑x,yp(x,y)logp(x)=−∑x,yp(x,y)logp(x)p(x,y)=−∑x,yp(x,y)logp(y∣x)
-
第二行推到第三行的依据是边缘分布 P ( x ) P(x) P(x)等于联合分布 P ( x , y ) P(x,y) P(x,y)的和;
-
第三行推到第四行的依据是把公因子 l o g P ( x ) logP(x) logP(x)乘进去,然后把 x , y x,y x,y 写在一起;
-
第四行推到第五行的依据是:因为两个 σ \sigma σ都有 P ( x , y ) P(x,y) P(x,y),故提取公因子 P ( x , y ) P(x,y) P(x,y)放到外边,然后把里边的 − ( l o g P ( x , y ) − l o g P ( x ) ) -(log P(x,y) - log P(x)) −(logP(x,y)−logP(x))写成 − l o g ( P ( x , y ) / P ( x ) ) - log (P(x,y) / P(x) ) −log(P(x,y)/P(x));
-
第五行推到第六行的依据是: P ( x , y ) = P ( x ) ∗ P ( y ∣ x ) P(x,y) = P(x) * P(y|x) P(x,y)=P(x)∗P(y∣x),故 P ( x , y ) / P ( x ) = P ( y ∣ x ) P(x,y) / P(x) = P(y|x) P(x,y)/P(x)=P(y∣x)。
2)条件熵、联合熵与互信息之间的关系
H ( Y ∣ X ) = H ( Y ) − I ( X , Y ) H\left( Y|X \right) =H\left( Y \right) -I\left( X,Y \right) H(Y∣X)=H(Y)−I(X,Y)
推导过程如下:
H ( Y ) − I ( X , Y ) = − ∑ y p ( y ) log p ( y ) − ∑ x , y p ( x , y ) log p ( x , y ) p ( x ) p ( y ) = − ∑ y ( ∑ x p ( x , y ) ) log p ( y ) − ∑ x , y p ( x , y ) log p ( x , y ) p ( x ) p ( y ) = − ∑ x , y p ( x , y ) log p ( y ) − ∑ x , y p ( x , y ) log p ( x , y ) p ( x ) p ( y ) = − ∑ x , y p ( x , y ) log p ( x , y ) p ( x ) = − ∑ x , y p ( x , y ) log p ( y ∣ x ) = H ( Y ∣ X ) \begin{array}{l} H(Y)-I(X, Y) \ =-\sum_{y} p(y) \log p(y)-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x) p(y)} \ =-\sum_{y}\left(\sum_{x} p(x, y)\right) \log p(y)-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x) p(y)} \ =-\sum_{x, y} p(x, y) \log p(y)-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x) p(y)} \ =-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)} \ =-\sum_{x, y} p(x, y) \log p(y \mid x) \ =H(Y \mid X) \end{array} H(Y)−I(X,Y)=−∑yp(y)logp(y)−∑x,yp(x,y)logp(x)p(y)p(x,y)=−∑y(∑xp(x,y))logp(y)−∑x,yp(x,y)logp(x)p(y)p(x,y)=−∑x,yp(x,y)logp(y)−∑x,yp(x,y)logp(x)p(y)p(x,y)=−∑x,yp(x,y)logp(x)p(x,y)=−∑x,yp(x,y)logp(y∣x)=H(Y∣X)
3)互信息的定义

由上方的两个公式
-
H ( Y ∣ X ) = H ( Y ) − I ( X , Y ) H(Y|X) = H(Y) - I(X,Y) H(Y∣X)=H(Y)−I(X,Y)
-
H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(Y|X) = H(X,Y) - H(X) H(Y∣X)=H(X,Y)−H(X)
可以推出 I ( X , Y ) = H ( X ) + H ( Y ) − H ( X , Y ) I(X,Y)= H(X) + H(Y) - H(X,Y) I(X,Y)=H(X)+H(Y)−H(X,Y),此结论被多数文献作为互信息的定义
7.最大熵模型(Max Entropy Model)
机器学习领域,概率模型学习过程中有一个最大熵原理,即学习概率模型时,在所有可能的概率分布中,熵最大的模型是最好的模型。
通常用约束条件来确定模型的集合,所以最大熵模型原理也可以表述为:在满足约束条件的模型集合中,选取熵最大的模型。
前面我们知道,若随机变量 X X X 的概率分布是 P ( x i ) P\left( x_{i} \right) P(xi),其熵的定义如下:
H ( X ) = − ∑ i = 1 n P ( x i ) l o g P ( x i ) = ∑ i = 1 n P ( x i ) 1 l o g P ( x i ) H\left( X \right) =-\sum_{i=1}^{n}{P\left( x_{i} \right) logP\left( x_{i} \right) } =\sum_{i=1}^{n}{P\left( x_{i} \right) \frac{1}{logP\left( x_{i} \right) } } H(X)=−i=1∑nP(xi)logP(xi)=i=1∑nP(xi)logP(xi)1

熵满足下列不等式: 0 ≤ H ( X ) ≤ l o g ∣ X ∣ 0\leq H\left( X \right) \leq log\left| X \right| 0≤H(X)≤log∣X∣
- ∣ X ∣ |X| ∣X∣是 X X X 的取值个数
- 当且仅当 X X X 的分布是均匀分布时,右边的等号成立;也就是说,当 X X X 服从均匀分布时,熵最大。
直观地看,最大熵原理认为:
- 要选择概率模型,首先必须满足已有的事实,即约束条件;
- 在没有更多信息的情况下,那些不确定的部分都是『等可能的』。最大熵原理通过熵的最大化来表示等可能性;『等可能』不易操作,而熵则是一个可优化的指标。
ShowMeAI 相关文章推荐
ShowMeAI 系列教程推荐

图解 AI 数学基础 | 微积分与最优化

作者:韩信子@ShowMeAI
教程地址:www.showmeai.tech/tutorials/83
本文地址:www.showmeai.tech/article-detail/165
声明:版权所有,转载请联系平台与作者并注明出处
1.最优化理论(Optimality Theory)
我们在做事过程中,会希望以最小的代价取得最大的收益。在解决一些工程问题时,人们常会遇到多种因素交织在一起与决策目标相互影响的情况;我们会使用最优化数学理论来应对这一挑战,而大家了解的线性规划也是最早的最优化方法之一。

李航博士的《统计学习方法》将机器学习总结为:机器学习 = 模型 + 策略 + 算法。而公式中的算法指的就是优化算法。大家在算法求职面试过程中,在项目模型效果调优过程中,都经常会遇到优化算法,它是学习 AI 必备的数学知识。
2.最优化问题的数学描述
最优化的基本数学模型如下公式所示:
min f ( x ) s.t. h i ( x ) = 0 g j ( x ) ⩽ 0 \begin{array}{ll} \min & f(\mathbf{x}) \ \text { s.t. } & h_{i}(\mathbf{x})=0 \ & g_{j}(\mathbf{x}) \leqslant 0 \end{array} min s.t. f(x)hi(x)=0gj(x)⩽0
它有三个基本要素,即:
-
设计变量: x \bold{x} x 是一个实数域范围内的 n n n 维向量,被称为决策变量或问题的解;
-
目标函数: f ( x ) f(x) f(x)为目标函数;
-
约束条件: h i ( x ) = 0 h_{i} \left( x \right) =0 hi(x)=0 称为等式约束, g j ( x ) ≤ 0 g_{j} \left( x \right) \leq 0 gj(x)≤0 为不等式约束, i , j = 0 , 1 , 2 , … i,j=0,1,2,\dots i,j=0,1,2,…
3.凸集与凸集分离定理
1)凸集(Convex Set)
实数域 R R R 上(或复数 C C C 上)的向量空间中,如果集合 S S S 中任两点的连线上的点都在 S S S 内,则称集合 S S S 为凸集。

设集合 S ⊂ R n S\subset R^{n} S⊂Rn,若对于任意两点 x , y ∈ S x, y \in S x,y∈S,及实数 λ ( 0 ≤ λ ≤ 1 ) \lambda(0 \leq \lambda \leq 1) λ(0≤λ≤1)都有: λ x + ( 1 − λ ) y ∈ S \lambda x+(1-\lambda) y \in S λx+(1−λ)y∈S 则称集合 S \mathrm{S} S 为凸集。
2)超平面和半空间
实际上,二维空间的超平面就是一条线(可以使曲线),三维空间的超平面就是一个面(可以是曲面)。其数学表达式如下:
超平面: H = { x ∈ R n ∣ a 1 + a 2 + … + a n = b } H=\left{x \in R^{n} \mid a_{1}+a_{2}+\ldots+a_{n}=b\right} H={x∈Rn∣a1+a2+…+an=b}
半空间: H + = { x ∈ R n ∣ a 1 + a 2 + … + a n ≥ b } H^{+}=\left{x \in R^{n} \mid a_{1}+a_{2}+\ldots+a_{n} \geq b\right} H+={x∈Rn∣a1+a2+…+an≥b}
3)凸集分离定理(Hyperplane Separation Theorem)
所谓两个凸集分离,直观地看是指两个凸集合没有交叉和重合的部分,因此可以用一张超平面将两者隔在两边,如图所示。

4)凸函数(Convex Function)
凸函数就是一个定义域在某个向量空间的凸子集 C C C 上的实值函数。

数学定义为:对于函数 f ( x ) f(x) f(x),如果其定义域 C C C 是凸的,且对于 ∀ x 1 , x 2 ∈ C ∀x_{1},x_{2}∈C ∀x1,x2∈C 0 ≤ t ≤ 1 0\leq t \leq 1 0≤t≤1,有: f ( t x 1 + ( 1 − t ) x 2 ) ≤ t f ( x 1 ) + ( 1 − t ) f ( x 2 ) f\left( t x_{1}+\left( 1- t \right) x_{2} \right) \leq t f\left( x_{1} \right) +\left( 1- t \right) f\left( x_{2} \right) f(tx1+(1−t)x2)≤tf(x1)+(1−t)f(x2),则 f ( x ) f(x) f(x)是凸函数。
注:如果一个函数是凸函数,则其局部最优点就是它的全局最优点。这个性质在机器学习算法优化中有很重要的应用,因为机器学习模型最后就是在求某个函数的全局最优点,一旦证明该函数(机器学习里面叫“损失函数”)是凸函数,那相当于我们只用求它的局部最优点了。
4.梯度下降算法(Gradient Descent Algorithm)
1)背景
计算机在运用迭代法做数值计算(比如求解某个方程组的解)时,只要误差能够收敛,计算机最后经过一定次数的迭代后是可以给出一个跟真实解很接近的结果的。
其中有一个非常核心的问题,如果我们得到的目标函数是非线性的情况下,按照哪个方向迭代求解误差的收敛速度会最快呢?答案就是沿梯度方向。
这就引入了我们的梯度下降法。
2)梯度下降法
在多元微分学中,梯度就是函数的导数方向。梯度法是求解无约束多元函数极值最早的数值方法,很多机器学习的常用算法都是以它作为算法框架,进行改进而导出更为复杂的优化方法。
在求解目标函数 f ( x ) f(x) f(x)的最小值时,为求得目标函数的一个凸函数,在最优化方法中被表示为:
min f ( x ) \min f(x) minf(x)

根据导数的定义,函数 f ( x ) f(x) f(x)的导函数就是目标函数在 x x x 上的变化率。在多元的情况下,目标函数 f ( x , y , z ) f(x, y, z) f(x,y,z)在某点的梯度 grad f ( x , y , z ) = ( ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ) \operatorname{grad}f(x, y, z)=\left(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}\right) gradf(x,y,z)=(∂x∂f,∂y∂f,∂z∂f)是一个由各个分量的偏导数构成的向量,负梯度方向是 f ( x , y , z ) f(x, y, z) f(x,y,z)减小最快的方向。
如上图所示,当需要求 f ( x ) f(x) f(x)的最小值时(机器学习中的 f ( x ) f(x) f(x)一般就是损失函数,而我们的目标就是希望损失函数最小化),我们就可以先任意选取一个函数的初始点 x 0 x_{0} x0(三维情况就是 ( x 0 , y 0 , z 0 ) \left(x_{0}, y_{0}, z_{0}\right) (x0,y0,z0)),让其沿着图中红色箭头(负梯度方向)走,依次到$x_{1}, x_{2}, \ldots, x_{n} $(迭代 n 次)这样可最快达到极小值点。
3)梯度下降法的过程
输入:目标函数 f ( x ) f(x) f(x),梯度函数 g ( x ) = grad f ( x ) g(x)=\operatorname{grad} f(x) g(x)=gradf(x),计算精度 ε \varepsilon ε。
输出: f ( x ) f(x) f(x)的极小值点 x ∗ x^{*} x∗
-
1、任取取初始值 x 0 x_{0} x0,置 k = 0 k=0 k=0;
-
2、计算 f ( x k ) f\left(x_{k}\right) f(xk);
-
3、计算梯度 g k = grad f ( x k ) g_{k}=\operatorname{grad} f\left(x_{k}\right) gk=gradf(xk),当 ∥ g k ∥ < ε \left|g_{k}\right|<\varepsilon ∥gk∥<ε时停止迭代,令 x ∗ = x k x^{*}=x_{k} x∗=xk;
-
4、否则令 P k = − g k P_{k}=-g_{k} Pk=−gk,求 λ k \lambda_{k} λk使 f ( x k + 1 ) = min f ( x k + λ k P k ) f\left(x_{k+1}\right)=\min f\left(x_{k}+\lambda_{k} P_{k}\right) f(xk+1)=minf(xk+λkPk);
-
5、置 x k + 1 = x k + λ k P k x_{k+1}=x_{k}+\lambda_{k} P_{k} xk+1=xk+λkPk,计算 f ( x k + 1 ) f\left(x_{k+1}\right) f(xk+1),当 ∥ f ( x k + 1 ) − f ( x k ) ∥ < ε \left|f\left(x_{k+1}\right)-f\left(x_{k}\right)\right|<\varepsilon ∥f(xk+1)−f(xk)∥<ε或 ∥ x k + 1 − x k ∥ < ε \left|x_{k+1}-x_{k}\right|<\varepsilon ∥xk+1−xk∥<ε时,停止迭代,令 x ∗ = x k + 1 x^{*}=x_{k+1} x∗=xk+1;
-
6、否则,置 k = k + 1 k=k+1 k=k+1,转 3。
5.随机梯度下降算法(Stochastic Gradient Descent, SGD)
在梯度下降法的迭代中,除了梯度值本身的影响外,另外一个很重要的参数是每一次取的步长,而且这个参数的选择非常重要:
- 步长值取得越大,收敛速度就会越快,但是带来的可能后果就是容易越过函数的最优点,导致发散;
- 步长取太小,算法的收敛速度又会明显降低。
我们希望找到一种比较好的方法能够平衡步长。

随机梯度下降法引进了随机样本抽取方式,并提供了一种动态步长取值策略。目的就是又要优化精度,又要满足收敛速度。
也就是说,上面的批量梯度下降法每次迭代时都会计算训练集中所有的数据,而随机梯度下降法每次迭代只是随机取了训练集中的一部分样本数据进行梯度计算,这样做最大的好处是可以避免有时候陷入局部极小值的情况(因为批量梯度下降法每次都使用全部数据,一旦到了某个局部极小值点可能就停止更新了;而随机梯度法由于每次都是随机取部分数据,所以就算局部极小值点,在下一步也还是可以跳出)。
两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。
6.牛顿法(Newton’s Method)
1)牛顿法介绍
牛顿法也是求解无约束最优化问题常用的方法,最大的优点是收敛速度快。从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。

通俗地说,比如你想找一条最短的路径走到一个盆地的最底部。梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步;牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
或者从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
2)牛顿法的推导
将目标函数 f ( x ) f(x) f(x)在 x k x_{k} xk处进行二阶泰勒展开,可得:
f ( x ) = f ( x k ) + f ′ ( x k ) ( x − x k ) + 1 2 f ′ ′ ( x k ) ( x − x k ) 2 f(x)=f\left(x_{k}\right)+f^{\prime}\left(x_{k}\right)\left(x-x_{k}\right)+\frac{1}{2} f^{\prime \prime}\left(x_{k}\right)\left(x-x_{k}\right)^{2} f(x)=f(xk)+f′(xk)(x−xk)+21f′′(xk)(x−xk)2
-
目标函数 f ( x ) f(x) f(x)有极值的必要条件,是在极值点处一阶导数为 0,即: f ′ ( x ) = 0 f^{\prime}(x)=0 f′(x)=0
-
所以,对上面的展开式两边同时求导(注意 x x x 才是变量, x k x_{k} xk是常量 ⇒ \Rightarrow ⇒ f ′ ( x k ) f^{\prime}\left(x_{k}\right) f′(xk), f ′ ′ ( x k ) f^{\prime \prime}\left(x_{k}\right) f′′(xk)都是常量),并令 f ′ ( x ) = 0 f^{\prime}(x)=0 f′(x)=0 可得: f ′ ( x k ) + f ′ ′ ( x k ) ( x − x k ) = 0 f{\prime}\left(x_{k}\right)+f\left(x_{k}\right)\left(x-x_{k}\right)=0 f′(xk)+f′′(xk)(x−xk)=0
-
即: x = x k − f ′ ( x k ) f ′ ′ ( x k ) x=x_{k}-\frac{f{\prime}\left(x_{k}\right)}{f\left(x_{k}\right)} x=xk−f′′(xk)f′(xk)
-
于是可以构造如下的迭代公式: x k + 1 = x k − f ′ ( x k ) f ′ ′ ( x k ) x_{k+1}=x_{k}-\frac{f{\prime}\left(x_{k}\right)}{f\left(x_{k}\right)} xk+1=xk−f′′(xk)f′(xk)
-
这样,就可以利用该迭代式依次产生的序列 { x 1 , x 2 , … , x k } \left{x_{1}, x_{2}, \ldots, x_{k}\right} {x1,x2,…,xk}才逐渐逼近 f ( x ) f(x) f(x)的极小值点了。
牛顿法的迭代如图:
上面讨论的是 2 维情况,高维情况的牛顿迭代公式是:
x n + 1 = x n − [ H f ( x n ) ] − 1 ∇ f ( x n ) , n ≥ 0 \mathbf{x}{n+1}=\mathbf{x}-\left[H f\left(\mathbf{x}{n}\right)\right]^{-1} \nabla f\left(\mathbf{x}\right), n \geq 0 xn+1=xn−[Hf(xn)]−1∇f(xn),n≥0
-
∇ f \nabla f ∇f 是的梯度,即: ∇ f = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ⋮ ∂ f ∂ x N ] \nabla f=\left[\begin{array}{c} \frac{\partial f}{\partial x_{1}} \ \frac{\partial f}{\partial x_{2}} \ \vdots \ \frac{\partial f}{\partial x_{N}} \end{array}\right] ∇f=⎣⎢⎢⎢⎢⎡∂x1∂f∂x2∂f⋮∂xN∂f⎦⎥⎥⎥⎥⎤
-
H H H 是 Hessen 矩阵,即: H ( f ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H(f)=\left[\begin{array}{cccc} \frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1} \partial x_{2}} & \cdots & \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}} & \cdots & \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}} & \cdots & \frac{\partial^{2} f}{\partial x_{n}^{2}} \end{array}\right] H(f)=⎣⎢⎢⎢⎢⎢⎡∂x12∂2f∂x2∂x1∂2f⋮∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f∂x2∂xn∂2f⋮∂xn2∂2f⎦⎥⎥⎥⎥⎥⎤
3)牛顿法的过程
-
1、给定初值 x 0 x_{0} x0和精度间值 ε \varepsilon ε,并令 k = 0 k=0 k=0;
-
2、计算 x k x_{k} xk和 H k H_{k} Hk;
-
3、若 ∥ g k ∥ < ε \left|g_{k}\right|<\varepsilon ∥gk∥<ε则停止迭代;否则确定搜索方向: d k = − H k − 1 ⋅ g k d_{k}=-H_{k}^{-1} \cdot g_{k} dk=−Hk−1⋅gk;
-
4、计算新的迭代点: x k + 1 = x k + d k x_{k+1}=x_{k}+d_{k} xk+1=xk+dk};
-
5、令 k = k + 1 k=k+1 k=k+1,转至 2。
7.阻尼牛顿法( Damped Newton’s Method )
1)背景
牛顿法的迭代公式中没有步长因子,是定步长迭代。对于非二次型目标函数,有时候会出现的情况,这表明,原始牛顿法不能保证函数值稳定的下降。在严重的情况下甚至会造成序列发散而导致计算失败。

为消除这一弊病,人们又提出阻尼牛顿法。阻尼牛顿法每次迭代的方向仍然是 x k x_{k} xk,但每次迭代会沿此方向做一维搜索,寻求最优的步长因子 λ k \lambda_{k} λk,即:
λ k = minf ( x k + λ d k ) \lambda_{k}=\operatorname{minf}\left(x_{k}+\lambda d_{k}\right) λk=minf(xk+λdk)
2)阻尼牛顿法算法过程
-
1、给定初值 x 0 x_{0} x0和精度阈值 ε \varepsilon ε,并令 k = 0 k=0 k=0;
-
2、计算 g k g_{k} gk( f ( x ) f(x) f(x)在 x k x_{k} xk处的梯度值)和 H k H_{k} Hk;
-
3、若 ∥ g k ∥ < ε \left|g_{k}\right|<\varepsilon ∥gk∥<ε则停止迭代;否则确定搜索方向: d k = − H k − 1 ⋅ g k d_{k}=-H_{k}^{-1} \cdot g_{k} dk=−Hk−1⋅gk;
-
4、利用 d k = − H k − 1 ⋅ g k d_{k}=-H_{k}^{-1} \cdot g_{k} dk=−Hk−1⋅gk得到步长 λ k \lambda_{k} λk,并令 x k + 1 = x k + λ k d k x_{k+1}=x_{k}+\lambda_{k} d_{k} xk+1=xk+λkdk;
-
5、令 k = k + 1 k=k+1 k=k+1,转至 2。
8.拟牛顿法(Quasi-Newton Method)
1)概述
由于牛顿法每一步都要求解目标函数的 Hessen 矩阵的逆矩阵,计算量比较大(求矩阵的逆运算量比较大),因此提出一种改进方法,即通过正定矩阵近似代替 Hessen 矩阵的逆矩阵,简化这一计算过程,改进后的方法称为拟牛顿法。
2)拟牛顿法的推导
先将目标函数在 x k + 1 x_{k+1} xk+1处展开: f ( x ) = f ( x k + 1 ) + f ′ ( x k + 1 ) ( x − x k + 1 ) + 1 2 f ′ ′ ( x k + 1 ) ( x − x k + 1 ) 2 f(x)=f\left(x_{k+1}\right)+f^{\prime}\left(x_{k+1}\right)\left(x-x_{k+1}\right)+\frac{1}{2} f^{\prime \prime}\left(x_{k+1}\right)\left(x-x_{k+1}\right)^{2} f(x)=f(xk+1)+f′(xk+1)(x−xk+1)+21f′′(xk+1)(x−xk+1)2
-
两边同时取梯度,得: f ′ ( x ) = f ′ ( x k + 1 ) + f ′ ′ ( x k + 1 ) ( x − x k + 1 ) f{\prime}(x)=f\left(x_{k+1}\right)+f^{\prime \prime}\left(x_{k+1}\right)\left(x-x_{k+1}\right) f′(x)=f′(xk+1)+f′′(xk+1)(x−xk+1)
-
取上式中的 x = x k x=x_{k} x=xk,得: f ′ ( x k ) = f ′ ( x k + 1 ) + f ′ ′ ( x k + 1 ) ( x − x k + 1 ) f{\prime}\left(x_{k}\right)=f\left(x_{k+1}\right)+f^{\prime \prime}\left(x_{k+1}\right)\left(x-x_{k+1}\right) f′(xk)=f′(xk+1)+f′′(xk+1)(x−xk+1)
-
即: g k + 1 − g k = H k + 1 ⋅ ( x k + 1 − x k ) g_{k+1}-g_{k}=H_{k+1} \cdot\left(x_{k+1}-x_{k}\right) gk+1−gk=Hk+1⋅(xk+1−xk)
-
可得: H k − 1 ⋅ ( g k + 1 − g k ) = x k + 1 − x k H_{k}^{-1} \cdot\left(g_{k+1}-g_{k}\right)=x_{k+1}-x_{k} Hk−1⋅(gk+1−gk)=xk+1−xk
上面这个式子称为“拟牛顿条件",由它来对 Hessen 矩阵做约束。
ShowMeAI 相关文章推荐
ShowMeAI 系列教程推荐


浙公网安备 33010602011771号