mxxhcm's blog

  • 首页

  • 标签

  • 分类

  • 归档

singular value decomposition(奇异值分解)

发表于 2019-01-03 | 更新于 2019-12-17 | 分类于 线性代数

特征值分解(eigen value decomposition)

要谈奇异值分解,首先要从特征值分解(eigen value decomposition, EVD)谈起。
矩阵的作用有三个:一个是旋转,一个是拉伸,一个是平移,都是线性操作。如果一个$n\times n$方阵$A$对某个向量$x$只产生拉伸变换,而不产生旋转和平移变换,那么这个向量就称为方阵$A$的特征向量(eigenvector),对应的伸缩比例叫做特征值(eigenvalue),即满足等式$Ax = \lambda x$。其中$A$是方阵,$x$是方阵$A$的一个特征向量,$\lambda$是方阵$A$对应特征向量$x$的特征值。
假设$S$是由方阵$A$的$n$个线性无关的特征向量构成的方阵,$\Lambda$是方阵$A$的$n$个特征值构成的对角矩阵,则$A=S\Lambda S^{-1}$,这个过程叫做对角化过程。
证明:
因为$Ax_1 = \lambda_1 x_1,\cdots,Ax_n = \lambda_n x_n$,
所以
\begin{align*}AS &= A\begin{bmatrix}x_1& \cdots&x_n\end{bmatrix}\\
&=\begin{bmatrix} \lambda_1x_1&\cdots&\lambda x_n\end{bmatrix}\\
&= \begin{bmatrix}x_1& \cdots&x_n\end{bmatrix} \begin{bmatrix}\lambda_1& & &\\&\lambda_2&&\\&&\cdots&\\&&&\lambda_n\end{bmatrix}\
&= S\Lambda
\end{align*}
所以$AS=S\Lambda, A=S\Lambda S^{-1}, S^{-1}AS=\Lambda$。
若方阵$A$为对称矩阵,矩阵$A$的特征向量是正交的,将其单位化为$Q$,则$A=Q\Lambda Q^T$,这个过程就叫做特征值分解。

奇异值分解(singular value decomposition)

特征值分解是一个非常好的分解,因为它能把一个方阵分解称两类非常好的矩阵,一个是正交阵,一个是对角阵,这些矩阵都便于进行各种计算,但是它对于原始矩阵的要求太严格了,必须要求矩阵是对称正定矩阵,这是一个很苛刻的条件。所以就产生了奇异值分解,奇异值分解可以看作特征值分解在$m\times n$维矩阵上的推广。对于对称正定矩阵来说,有特征值,对于其他一般矩阵,有奇异值。

奇异值分解可以看作将一组正交基映射到另一组正交基的变换。普通矩阵$A$不是对称正定矩阵,但是$AA^T $和$A^TA $一定是对称矩阵,且至少是半正定的。从对$A^TA $进行特征值分解开始,$A^T A=V\Sigma_1V^T $,$V$是一组正交的单位化特征向量${v_1,\cdots,v_n}$,则$Av_1,\cdots,Av_n$也是正交的。
证明:
\begin{align*}Av_1\cdot Av_2 &=(Av_1)^T Av_2\\
&=v_1^T A^T Av_2\\
&=v_1^T \lambda v_2\\
&=\lambda v_1^T v_2\\
&=0
\end{align*}
所以$Av_1,Av_2$是正交的,同理可得$Av_1,\cdots,Av_n$都是正交的。
而:
\begin{align*}
Av_i\cdot Av_i &= v_i^T A^T Av_i\\
&=v_i \lambda v_i\\
&=\lambda v_i^2\\
&=\lambda
\end{align*}
将$Av_i$单位化为$u_i$,得$u_i = \frac{Av_i}{|Av_i|} = \frac{Av_i}{\sqrt{\lambda_i}}$,所以$Av_i = \sqrt{\lambda_i}u_i$。
将向量组${v_1,\cdots,v_r}$扩充到$R^n $中的标准正交基${v_1,\cdots,v_n}$,将向量组${u_1,\cdots,u_r}$扩充到$R^n $中的标准正交基${u_1,\cdots,u_n}$,则$AV = U\Sigma$,$A=U\sigma V^T $。

事实上,奇异值分解可以看作将行空间的一组正交基加上零空间的一组基映射到列空间的一组正交基加上左零空间的一组基的变换。对一矩阵$A,A\in \mathbb{R}^{m\times n} $,若$r(A)=r$,取行空间的一组特殊正交基${v_1,\cdots,v_r}$,当矩阵$A$作用到这组基上,会得到另一组正交基${u_1,\cdots,u_r}$,即$Av_i = \sigma_iu_i$。
矩阵表示是:
\begin{align*}
AV &= A\begin{bmatrix}v_1&\cdots&v_r\end{bmatrix}\\
&= \begin{bmatrix}\sigma_1u_1 & \cdots & \sigma_ru_r\end{bmatrix}\\
&= \begin{bmatrix}u_1&u_2&\cdots&u_r\end{bmatrix}\begin{bmatrix}\sigma_1&&&\\&\sigma_2&&\\&&\cdots&\\&&&\sigma_n\end{bmatrix}\\
&=U\Sigma
\end{align*}
其中$A\in \mathbb{R}^{m\times n}, V\in \mathbb{R}^{n\times r},U\in \mathbb{R}^{m\times r}, \Sigma \in \mathbb{R}^{r\times n}$。
当有零空间的时候,行空间的一组基是$r$维,加上零空间的$n-r$维,构成$R^n $空间中的一组标准正交基。列空间的一组基也是$r$维的,加上左零空间的$m-r$维,构成$R^m $空间的一组标准正交基。零空间中的向量在对角矩阵$\Sigma$中体现为$0$,
则$A=U\Sigma V^{-1} $,$V$是正交的,所以$A=U\Sigma V^T $,其中$V\in \mathbb{R}^{n\times n}, U\in \mathbb{R}^{m\times m}, \Sigma \in \mathbb{R}^{m\times n}$。

$A=U\Sigma V^T $,
$A^T = V\Sigma^T U^T $,
$AA^T = U\Sigma V^T V\Sigma^T U^T $,
$A^T A = V\Sigma^T U^T U\Sigma V^T $
对$A A^T $和$A^T A$作特征值分解,则$A A^T = U\Sigma_1U^T $,$A^T A=V\Sigma_2V^T $,所以对$AA^T $作特征值分解求出来的$U$和对$A^T A$作特征值分解求出来的$V$就是对$A$作奇异值分解求出来的$U$和$V$,$AA^T $和$A^T A$作特征值分解求出来的$\Sigma$的非零值是相等的,都是对$A$作奇异值分解的$\Sigma$的平方。

$A^T A$和$AA^T $的非零特征值是相等的

证明:对于任意的$m\times n$矩阵$A$,$A^T A$和$AA^T $的非零特征值相同的。 设$A^T A$的特征值为$\lambda_i$,对应的特征向量为$v_i$,即$A^T Av_i = \lambda_i v_i$。
则$AA^T Av_i = A\lambda_iv_i = \lambda_i Av_i$。
所以$AA^T $的特征值为$\lambda_i$,对应的特征向量为$Av_i$。
因此$A^T A$和$AA^T $的非零特征值相等。

几何意义

对于任意一个矩阵,找到其行空间(加上零空间)的一组正交向量,使得该矩阵作用在该向量序列上得到的新的向量序列保持两两正交。奇异值的几何意义就是这组变化后的新的向量序列的长度。

物理意义

奇异值往往对应着矩阵隐含的重要信息,且重要性和奇异值大小正相关。每个矩阵都可以表示为一系列秩为$1$的“小矩阵”的和,而奇异值则衡量了这些秩一矩阵对$A$的权重。
奇异值分解的物理意义可以通过图像压缩表现出来。给定一张$m\times n$像素的照片$A$,用奇异值分解将矩阵分解为若干个秩一矩阵之和,即:
\begin{align*}
A&=\sigma_1 u_1v_1^T +\sigma_2 u_2v_2^T +\cdots+\sigma_r u_rv_r^T\\
&= \begin{bmatrix}u_1&u_2&\cdots&u_r\end{bmatrix}\begin{bmatrix}\sigma_1&&&\&\sigma_2&&\&&\cdots&\&&&\sigma_n\end{bmatrix}\begin{bmatrix}v_1T\v_2T\ \vdots\v_r^T\end{bmatrix}\\
&=U\Sigma V^T
\end{align*}

这个也叫部分奇异值分解。其中$V\in R^{r\times n}, U\in R^{m\times r}, \Sigma \in R^{r\times r}$。因为不含有零空间和左零空间的基,如果加上零空间的$n-r$维和左零空间的$m-r$维,就是奇异值分解。
较大的奇异值保存了图片的主要信息,特别小的奇异值有时可能是噪声,或者对于图片的整体信息不是特别重要。做图像压缩的时候,可以只取一部分较大的奇异值,比如取前八个奇异值作为压缩后的图片:
$$A = \sigma_1 u_1v_1^T +\sigma_2 u_2v_2^T + \cdots + \sigma_8 u_8v_8^T$$
现实中常用的做法有两个:

  1. 保留矩阵中$90%$的信息:将奇异值平方和累加到总值的%90%为止。
  2. 当矩阵有上万个奇异值的时候,取前面的$2000$或者$3000$个奇异值。。

参考文献(references)

1.Gilbert Strang, MIT Open course:Linear Algebra
2.https://www.cnblogs.com/pinard/p/6251584.html
3.http://www.ams.org/publicoutreach/feature-column/fcarc-svd
4.https://www.zhihu.com/question/22237507/answer/53804902
5.http://charleshm.github.io/2016/03/Singularly-Valuable-Decomposition/

主成分分析(Principal Component Analysis)

发表于 2019-01-02 | 更新于 2019-12-17 | 分类于 机器学习

降维

降维的目标

降维可以看做将$p$维的数据映射到$m$维,其中$p\gt m$。或者可以说将$n$个$p$维空间中的点映射成$n$个$m$维空间中的点。

降维的目的

  1. 维度灾难(curse of dimensionity)
  2. 随着维度增加,精确度和效率的退化。
  3. 可视化数据
  4. 数据压缩
  5. 去噪声
    …

降维的方法

无监督的降维

  1. 线性的:PCA
  2. 非线性的: GPCA, Kernel PCA, ISOMAP, LLE

有监督的降维

  1. 线性的: LDA
  2. 非线性的: Kernel LDA

主成分分析(PCA)

主成分分析(principal component analysis,PCA)是一个降维工具。PCA使用正交变换(orthogonal transformation)将可能相关的变量的一系列观测值(observation)转换成一系列不相关的变量,这些转换后不相关的变量叫做主成分(principal component)。第一个主成分有着最大的方差,后来的主成分必须和前面的主成分正交,然后最大化方差。或者PCA也可以看成根据数据拟合一个$m$维的椭球体(ellipsoid),椭球体的每一个轴代表着一个主成分。
上课的时候,老师给出了五种角度来看待PCA,分别是信息保存,投影,拟合,嵌入(embedding),mainfold learning。本文首先从保存信息的角度来给出PCA的推理过程,其他的几种方法就随缘了吧。。。

信息保存(preserve information)

目标

从信息保存的角度来看PCA的目标是用尽可能小的空间去存储尽可能多的信息。一般情况下,信息用信息熵$-\int p lnp$来表示,如果这里使用信息熵的话,不知道信息的概率表示,一般不知道概率分布的情况下就采用高斯分布,带入高斯分布之后得到$\frac{1}{2}log(2\pi e\sigma^2)$,其中$2\pi e$都是常量,只剩下方差。给出一堆数据,直接计算信息熵是行不通的,但是计算方差是可行的,而方差和信息熵是有联系的,所以可以考虑用方差来表示信息。考虑一下降维前的$p$维数据$x$和降维后的$m$维数据$z$方差之间的关系,$var(z)?var(x)$,这里$z$和$x$的方差维度是不同的,所以不能相等,这里我们的目标就是最大化$z$的方差。方差能解释变化,方差越大,数据的变化就越大,越能包含信息。PCA的目标就是让降维后的数据方差最大。

线性PCA过程

目标函数

给定$n$个观测数据$x_1,x_2,\cdots,x_n \in \mathbb{R}^p$,形成一个观测矩阵$X,X\in \mathbb{R}^{p\times n}$,即$X = \begin{bmatrix}x_{11}&\cdots &x_{1n}\\ &\cdots&\\ x_{p1}&\cdots &x_{pn}\end{bmatrix}$。我们的目标是将这样一组$p$维的数据转换成$m$维的数据。线性PCA是通过线性变换(matrix)来实现的,也就是我们要求一个$p\times m$的矩阵$V$,将原始的$X$矩阵转换成$Z$矩阵,使得
$$Z_{m\times n}= V_{p\times m}^{T}X_{p\times n},$$
其中$V\in \mathbb{R}^{p\times m}$, $v_i=\begin{bmatrix}v_{1i}\\v_{2i}\\ \vdots\\v_{pi}\end{bmatrix}$, $V = \begin{bmatrix}v_{11}&v_{12}&\cdots&v_{1m}\\v_{21}&v_{22}&\cdots&v_{2m}\\ \vdots&\vdots&\cdots&\vdots\\v_{p1}&v_{p2}&\cdots&v_{pm}\end{bmatrix}=\begin{bmatrix}v_1&v_2&\cdots&v_m\end{bmatrix}$, $V^T = \begin{bmatrix}v_{11}&v_{21}&\cdots&v_{p1}\\v_{12}&v_{22}&\cdots&v_{p2}\\ \vdots&\vdots&\cdots&\vdots\\v_{1m}&v_{2m}&\cdots&v_{pm}\end{bmatrix}=\begin{bmatrix}v_1^T \\v_2^T \\ \vdots\\v_m^T \end{bmatrix}$。
所以就有:
\begin{align*}
z_1 &= v_1^Tx_j\\
&\cdots\\
z_k &= v_k^Tx_j\\
&\cdots\\
z_m &= v_m^Tx_j
\end{align*}
其中$z_1,\cdots,z_m$是标量,$v_1^T,\cdots, v_m^T $是$1\times p$的向量,$x_j$是一个$p\times 1$维的观测向量,而我们有$n$个观测向量,所以随机变量$z_k$共有$n$个可能取值:
$$z_{k} = v_k^Tx_i= \sum_{i=1}^{p}v_{ik}x_{ij}, j = 1,2,\cdots,n$$
其中$x_i$是观测矩阵$X$的第$i$列,$X\in \mathbb{R}^{p\times n}$。

协方差矩阵

离散型随机变量$X$($X$的取值等可能性)方差的计算公式是:
$$var(X) = E[(X-\mu)^2] = \frac{1}{n}\sum_{i=1}^n (x_i-\mu)^2,$$
其中$\mu$是X的平均数,即$\mu = \frac{1}{n}\sum_{i=1}^nx_i$。

让$z_k$的方差最大即最大化:
\begin{align*}
var(z_1) &=E(z_1,\bar{z_1})^2 \\
&=\frac{1}{n}\sum_{i=1}^n (v_1^T x_i - v_1^T \bar{x_i})^2\\
&=\frac{1}{n}\sum_{i=1}^n (v_1^T x_i - v_1^T \bar{x_i})(v_1^T x_i - v_1^T \bar{x_i})^T\\
&=\frac{1}{n}\sum_{i=1}^n v_1^T (x_i - \bar{x_i})(x_i - \bar{x_i})^T v_1\\
\end{align*}
其中$x_i=\begin{bmatrix}x_{1i}\\x_{2i}\\ \vdots\\x_{pi}\end{bmatrix}$,$\bar{x_i}=\begin{bmatrix}\bar{x_{1i}}\\\bar{x_{2i}}\\ \vdots\\\bar{x_{pi}}\end{bmatrix}$,$x_i$是$p$维的,$x_i^p$也是$p$维的,$(x_i-\bar{x_i})$是$p\times 1$维的,$(x_i -\bar{x_i})^T$是$1\times p$维的。
令$S=\frac{1}{n}\sum_{i=1}^n(x_i -\bar{x_i})(x_i-\bar{x_i})^T$,$S$是一个$p\times p$的对称矩阵,其实$S$是一个协方差矩阵。这个协方差矩阵可以使用矩阵$X$直接求出来,也可以通过对$X$进行奇异值分解求出来。
如果使用奇异值分解的话,首先对矩阵$X$进行去中心化,即$\bar{x_i}=0$,则:
\begin{align*}
S &= \frac{1}{n}\sum_{i=1}^T x_ix_i^T \\
&=\frac{1}{n}X_{p\times n}X_{n\times p}^T
\end{align*}
$X=U\Sigma V^T $
$X X^T =U\Sigma V^T V\Sigma U^T = U\Sigma_1^2 U^T $
$X^T X =V\Sigma U^T U\Sigma V^T = V\Sigma_2^2 V^T $
$S=\frac{1}{n}XX^T =\frac{1}{n}U\Sigma^2 U^T $

拉格朗日乘子法

将$S$代入得:
$$var(z_1) = v_1^TSv_1,$$
接下来的目标是最大化$var(z_1)$,这里要给出一个限制条件,就是$v_1^Tv_1 = 1$,否则的话$v_1$无限大,$var(z_1)$就没有最大值了。
使用拉格朗日乘子法,得到目标函数:
$$L=v_1^TSv_1 - \lambda (v_1^Tv_1 -1)$$
求偏导,令偏导数等于零得:
\begin{align*}
\frac{\partial{L}}{\partial{v_1}}&=2Sv_1 - 2\lambda v_1\\
&=2(S-\lambda) v_1\\
&=0
\end{align*}
即$Sv_1 = \lambda v_1$,所以$v_1$是矩阵$S$的一个特征向量(eigenvector)。所以:
$$var(z_1) = v_1^TSv_1 = v_1^T\lambda v_1 = \lambda v_1^Tv_1 = \lambda,$$
第一个主成分$v_1$对应矩阵$S$的最大特征值。

其他主成分

对于$z_2$,同理可得:
$var(z_2) = v_2^TSv_2$,
但是这里要加一些限制条件$v_2Tv_2=1$,除此以外,第2个主成分还有和之前的主成分不相关,即$cov[z_1,z_2]=0$,或者说是$v_1Tv_2=0$,证明如下。
\begin{align*}
cov[z_1,z_2] &=\mathbb{E}[(z_1-\bar{z_1})(z_2-\bar{z_2})]\\
&=\frac{1}{n}(v_1^T x_i - v_1^T \bar{x_i})(v_2^T x_i-v_2^T \bar{x_i})\\
&=\frac{1}{n}v_1^T (x_i-\bar{x_i})(x_i-\bar{x_i})v_2\\
&=\frac{1}{n}v_1^T SV_2\\
&=\frac{1}{n}\lambda v_1^T v_2\\
&=0
\end{align*}

维基百科上是通过将数据减去第一个主成分之后再最大化方差,这两种理解方法都行。
所以拉格朗日目标函数就成了:
$$L=v_1^TSv_1 - \lambda (v_1^Tv_1 -1) -\beta v_2^Tv_1$$
求导,令导数等于零得:
$$\frac{\partial{L}}{\partial{v_1}}=2Sv_2 - 2\lambda v_2 - \beta v_1 = 0$$
而$v_1$和$v_2$不相关,所以$\beta=0$,所以$Sv_2 = \lambda v_2$,即$v_2$也是矩阵$S$的特征向量,但是最大的特征值对应的特征向量已经被$v_1$用了,所以$v_2$是第二大的特征值对应的特征向量。
同理可得第$k$个主成分是$S$的第$k$大特征值对应的特征向量。

但是这种理解方法没有办法推广到非线性PCA。接下来的集中理解方式可以由线性PCA开始,并且可以推广到非线性PCA。

函数拟合

线性PCA过程

非线性PCA过程

广义主成分分析(Generalized PCA,GPCA)

刚才讲的PCA是线性PCA,是拟合一个超平面(hyperplane)的过程,但是如果数据不是线性的,比如说是一个曲面$x^2 +y^2 +z=0$,这样子线性PCA就不适用了,可以稍加变化让其依然是可以用的。比如$x+y+1=0$可以看成$\begin{bmatrix}a&b&c\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}$,而$x^2 +y^2 +z=0$可以看成$\begin{bmatrix}a&b&c\end{bmatrix}\begin{bmatrix}x^2 \\y^2 \\z\end{bmatrix}$。

如果原始数据是非线性的,我们可以通过多个特征映射函数$\Phi$从原始数据提取非线性特征(也可看成升维,变成高维空间中数据,在高维中可以看成是线性的),然后利用线性PCA对非线性特征进行降维。例如:
假设$x=[x_1,x_2,x_3]^T \in \mathbb{R}^3$,按照转换函数$v(x) = [x_1^2 , x_1x_2,x_1x_3,x_2^2 ,x_2x_3,x_3^2 $将其转换成$\mathbb{R}^6$中的特征,接下来使用线性PCA对这些非线性特征进行降维。

给定一个函数$\Phi$将$p$维数据映射到特征空间$F$中,即$\Phi:\mathbb{R}^p\rightarrow F,\mathbf{x}\rightarrow X$。我们可以通过计算协方差矩阵$C_F = \frac{\Phi\Phi^T }{n}$,即$C_F = \frac{1}{n}\sum_{i=1}{n}\phi(x_i)\phi(x_i)T $,然后对协方差矩阵$C_F$进行特征值分解$C_Fx=\lambda x$就可以求解,这里我们假设空间$F$中的数据均值为$0$,即$E[\Phi(x)] = 0$。

嵌入(embedding),保距离

核函数技巧(Kernel trick)

在GPCA中,如果不知道$\Phi$的话,或者$\Phi$将数据映射到了无限维空间中,就没有办法求解了。这里就给出了一个假设,假设低维空间中$x_i,x_j$的点积(dot product)可以通过一个函数计算,将$x_i,x_j$的点积记为$K_{ij}$,则:
$$K_{ij} = < \phi(x_i),\phi(x_j) > = k(x_i,x_j)$$
其中$k()$是一个函数,比如可以取高斯函数,$k(x,y) = e^{\frac{(\Vert x-y\Vert)^2 }{2\sigma^2 }}$,我们叫它核函数(kernel function)。
这样即使我们不知道$\Phi$,也可以计算点积,直接使用核函数计算。

dot PCA

给定原始数据$X_D = [x_1,\cdots,x_n],x_i\in \mathbb{R}^p$,假定$\hat{x}=0$,那么$X_D$的协方差矩阵:
\begin{align*}
S&= \frac{\sum_{i=1}^n (x_i-\bar{x})(x_i-\bar{x})^T }{n}\\
&= \frac{\sum_{i=1}^n (x_i-0)(x_i-0)^T }{n}\\
&= \frac{\sum_{i=1}^n (x_i)(x_i)^T }{n}\\
&= \frac{\begin{bmatrix}x_1&\cdots&x_n\end{bmatrix}\begin{bmatrix}x_1\\\vdots\\x_n\end{bmatrix}}{n}\\
&= \frac{X_DX_D^T}{n}\\
&= Cov(X_D, X_D)
\end{align*}
即$S=\frac{X_DX_D^T}{n}$,而对$X_D$做奇异值分解,有$X_D = V\Sigma U^T$,所以$S = \frac{V\Sigma^2 V^T}{n}$,其中$U$是$S$的特征值矩阵,则:$Z’ = V^T X’$,其中$V\in \mathbb{R}^{p\times m}$,$X’$是新的样本数据。

这里我们推导一下点积和PCA的关系,即假设我们有$K = Dot(X_D,X_D) = X_D^T X_D$,则$K=U^T \sigma^2U$,而我们根据奇异值分解$X_D = V\Sigma U^T $可以得到$U$和$V$的关系,即$V=X_DU\Sigma^{-1} $,对$K$进行特征值分解,可以求得$U$和$\Sigma$,所以来了一个新的样本$X’$,
$$Z’ = V^TX’ = D^{-1} U^T X_D^T X’ = D^{-1} U^T < X_D,X’ >.$$
事实上,这里$X’$是已知的,可以直接计算协方差,但是这里是为了给Kernel PCA做引子,所以,推导的过程中是没有用到$X$的,只用到了$X$的点积,在测试的时候会用到$X’$。

Kernel PCA

Kernel PCA就是将Kernel trick应用到了dot PCA中,由Kernel trick得$K = \Phi^T \Phi$,$K=U\Sigma^2 U^T $,则
$$V = \Phi U\Sigma^{-1} = \Phi U diag(1/sqrt(\lambda_1),1/sqrt(\lambda_2),\cdots)$$
但是我们求不出来$V$,因为$\Phi$不知道,但是可以让$V$中的$\Phi$和样本$X’$中的$\Phi$在一起,就可以计算了,即
$$Z’ = V^T\phi(X’) = \Sigma^{-1}U\Phi\phi(X’) = \Sigma^{-1}UK(X,X’)$$

流形学习(manifold)

线性

PCA
MDS

非线性

LLE
ISOMAP

线性判断分析(Fisher linear discrimiant analysis,LDA)

线性LDA

两类

示例

C类(C$\gt 2$)

两维的问题是通过将原始数据投影到一维空间进行分类,而$C$维的问题则是将原始数据投影到$C-1$空间进行分类,通过一个投影矩阵$W=\begin{bmatrix}w_1&\cdots&w_{C-1}\end{bmatrix}$将$C$维的$x$投影到$C-1$维,得到$y=\begin{bmatrix}y_1&\cdots&y_{C-1}\end{bmatrix}$,即$y_i = w_i^Tx\Rightarrow y = W^Tx$。

示例

不足

  • 最多投影到$C-1$维特征空间。
  • LDA是参数化的方法,它假设数据服从单高斯分布,并且所有类的协方差都是等价的。对于多个高斯分布,线性的LDA是无法分开的。
  • 当数据之间的差异主要通过方差而不是均值体现的话,LDA就会失败(fail)。如下图
    figure

Kernel LDA

PCA和LDA区别和联系

PCA是一个无监督的降维方法,通过最大化降维后数据的方差实现;LDA是一个有监督的降维方法,通过最大化类可分性实现(class discrimnatory)。

参考文献

1.https://en.wikipedia.org/wiki/Principal_component_analysis
2.https://en.wikipedia.org/wiki/Variance
3.https://sebastianraschka.com/faq/docs/lda-vs-pca.html

内积空间、赋范空间和希尔伯特空间

发表于 2018-12-28 | 更新于 2019-11-21 | 分类于 线性代数

引言

数学的空间是研究工作的对象和遵循的规则。
线性空间:加法和数乘
拓扑空间:距离,范数和内积。

距离

距离是用来衡量两个点有多“近”的。

距离定义

$X$是一非空集合,任给一对这一集合中的元素$x,y$,都会给定一个实数$d(x,y)$与它们对应,并且这个实数满足以下条件:

  1. $d(x,y)\ge 0, d(x,y) = 0 \Leftrightarrow x=y$;
  2. $d(x,y) = d(y,x)$;
  3. $d(x,y) \le d(x,z) + d(z,y)$。

则$d(x,y)$为这两点$x$和$y$之间的距离。

示例

向量的距离

$d_1(x,y) = \sqrt{(x_1-y_1)2+\cdots,(x_n-y_n)n}$
$d_2(x,y) = max{|x_1-y_1|,\cdots,|x_n,y_n|}$
$d_3(x,y) = |x_1-y_1|+\cdots+|x_n,y_n|$

曲线的距离

$d_1(f,g) = \int_ab(f(x)-g(x))2 dx$
$d_2(f,g) = max_{a\le x\le b}|f(x)-f(y)|$
$d_3(f,g) = \int_ab(f(x)-g(x))k dx$

线性空间

向量的加法和数乘

线性空间的八个性质

加法的交换律和结合律,零元,负元,数乘的交换律,单位一,数乘与加法的结合律。

范数(向量到零点的距离)定义

如果$\Vert x\Vert $是$R^n$上的范数($x$是向量),那么它需要满足以下条件:

  1. $\Vert x\Vert \ge 0, \forall x\in R, \Vert x\Vert = 0 \Leftrightarrow x = 0$;
  2. $\Vert \alpha x\Vert = |\alpha|\Vert x\Vert, \forall \alpha \in R, x\in R^n$
  3. $\Vert x+y\Vert \le \Vert x\Vert + \Vert y\Vert , \forall x,y\in R$

可以看成是点到零点距离多了条件2。

示例

$\Vert x\Vert_2 = \sqrt{x_12+\cdots,x_nn}$
$\Vert x\Vert_{\infty} = max{|x_1|,\cdots,|x_n|}$
$\Vert x\Vert_1 = |x_1|+\cdots+|x_n|$

距离和范数的关系

由范数可以定义距离。$d(x,y) = \Vert x-y\Vert$。
但是由距离不一定可以定义范数。如$\Vert x\Vert = d(0,x)$,但是$\Vert \alpha x\Vert = d(0, \alpha x) \ne |\alpha|\Vert x\Vert $。

赋范空间和度量空间

赋予范数的集合称为赋范空间。
距离的集合称为度量空间。

线性赋范空间和线性度量空间

赋予范数加上线性空间称为线性赋范空间。
距离加上线性空间称为线性度量空间。

内积

引言

赋范空间有向量的模长,即范数。但是范数只有大小,没有夹角,所以就引入了内积。

定义

给定$(x,y)\in R$,如果它满足:

  1. 对称性;
  2. 对第一变元的线性性;
  3. 正定性。

那么就称$(x,y)$为内积。

示例

  1. $(x,y) = \sum_{n=1}^nx_ny_n$。
  2. $(f,g) = \int_{-\infty}^{\infty}f(x)g(x)dx$。

内积和范数的关系

  • 内积可以导出范数
  • 范数不能导出距离

内积空间

在线性空间上定义内积,这个空间称为内积空间。
常见的欧几里得空间就是一个内积空间,内积空间是一个抽象的空间,而欧几里得空间是一个具象化了的内积空间。
希尔伯特引入了无穷维空间并定义了内积,其空间称为内积空间,再加上完备性,称为希尔伯特空间。完备性是取极限之后还在这个空间内。
完备的赋范空间称为巴拿赫空间。

拓扑空间

欧几里得几何学需要定义内积,连续的概念不需要内积,甚至不需要距离。

定义

给定一个集合$X$,$\tau$是$X$的一系列子集,如果$\tau$满足以下条件:

  1. 空集(empty set)和全集X都是$\tau$的元素;
  2. $\tau$中任意元素的并集(union)仍然是$\tau$的元素;
  3. $\tau$中任意有限多个元素的交集(intersection)仍然是$\tau$中的元素。
    则称$\tau$是$X$上的一个拓扑。

距离,范数和内积之间的关系

距离$\gt$范数$\gt$内积

convex optimization chapter 2 Convex sets

发表于 2018-12-24 | 更新于 2019-12-17 | 分类于 凸优化

仿射集(affine sets)和凸集(convex sets)

直线(line)和线段(line segmens)

假设$x_1,x_2 \in \mathbb{R}^n $是n维空间中不重合$(x_1 \ne x_2)$的两点,给定:
$$y = \theta x_1 + (1 - \theta)x_2,$$
当$\theta\in R$时,$y$是经过点$x_1$和点$x_2$的直线。当$\theta=1$时,$y=x_1$,当$\theta=0$时,$y=x_2$。当$\theta\in[0,1]$时,$y$是$x_1$和$x_2$之间的线段(line segment)。 把$y$改写成如下形式: $$y = x_2 + \theta(x_1 - x_2)$$,可以给出另一种解释,$y$是点$x_2$和方向$x_1 - x_2$(从$x_2$到$x_1$的方向)乘上一个缩放因子$\theta$的和。
如下图所示,可以将y看成$\theta$的函数。
line_line-segment

仿射集(affine sets)

仿射集的定义

给定一个集合$C\subset \mathbb{R}^n $,如果经过$C$中任意两个不同点的直线仍然在$C$中,那么$C$就是一个仿射集。即,对于任意$x_1,x_2\in C$和$\theta\in R$,都有$\theta x_1 + (1 - \theta)x_2 \in C$。换句话说,给定线性组合的系数和为$1$,$C$中任意两点的线性组合仍然在$C$中,我们就称这样的集合是仿射的(affine)。

仿射组合(affine combination)

我们可以把两个点的线性组合推广到多个点的线性组合,这里称它为仿射组合。
仿射组合的定义:给定$\theta_1+\cdots+\theta_k = 1$,则$\theta_1 x_1 + \cdots + \theta_k x_k$是点$x_1,\cdots,x_k$的仿射组合(affine combination)。
根据仿射集的定义,一个仿射集(affine set)包含集合中任意两个点的仿射(线性)组合,那么可以推导出仿射集包含集合中任意点(大于等于两个)的仿射组合,即:如果$C$是一个仿射集,$x_1,\cdots,x_k\in C$,且$\theta_1 x_1 + \cdots + \theta_k x_k = 1$,那么点$\theta_1 x_1 + \cdots + \theta_k x_k$仍然属于$C$。

仿射集的子空间(subspce)

如果$C$是一个仿射集,$x_0 \in C$,那么集合
$$V = C - x_0 = {x - x_0\big|x \in C}$$
是一个子空间(subspace),因为$V$是加法封闭和数乘封闭的。
证明:
假设$v_1, v_2 \in V$,并且$\alpha,\beta \in R$。
要证明V是一个子空间,那么只需要证明$\alpha v_1 + \beta v_2 \in V$即可。
因为$v_1, v_2 \in V$,则$v_1+x_0, v_2+x_0 \in C$。
而$x_0 \in C$,所以有
$$\alpha(v_1+x_0) + \beta(v_2+x_0) + (1 - \alpha - \beta)x_0 \in C$$
即:
\begin{align*}
\alpha v_1 + \beta v_2 + (\alpha + \beta + 1 - \alpha - \beta)x_0 &\in C\\
\alpha v_1 + \beta v_2 + x_0 &\in C
\end{align*}
所以$\alpha v_1 + \beta v_2 \in V$。
所以,仿射集$C$可以写成:
$$C = V + x_0 = { v + x_0\big| v \in V},$$
即,一个子空间加上一个偏移(offset)。而与仿射集$C$相关的子空间$V$与$x_0$的选择无关,即$x_0$可以为$C$中任意一点。

示例

线性方程组的解。一个线性方程组的解可以表示为一个仿射集:$C={x\big|Ax = b}$,其中 $A\in \mathbb{R}^{m \times n}, b \in \mathbb{R}^m $。
证明:
设$x_1, x_2 \in C$,即$Ax_1 = b, Ax_2 = b$。对于任意$\theta \in R$,有:
\begin{align*}
A(\theta x_1 + (1-\theta x_2) &= \theta Ax_1 + (1-\theta)Ax_2\\
&= \theta b + (1 - \theta) b\\
&= b \end{align*}
所以线性方程组的解是一个仿射组合:$\theta x_1 + (1 - \theta) x_2$,这个仿射组合在集合$C$中,所以线性方程组的解集$C$是一个仿射集。
和该仿射集$C$相关的子空间$V$是$A$的零空间(nullspace)。因为仿射集$C$中的任意点都是方程$Ax = b$的解,而$V = C - x_0 = {x - x_0\big|x \in C}$,有$Ax = b, Ax_0 = b$,则$Ax - Ax_0 = A(x - x_0) = b - b = 0$,所以$V$是$A$的零空间。

仿射包(affine hull)

给定集合$C\subset \mathbb{R}^n $,集合中点的仿射组合称为集合$C$的仿射包(affine hull),表示为$aff C$:
$aff C = {\theta_1 x_1 + \cdots + \theta_k x_k\big| x_1,\cdots,x_k \in C, \theta_1 + \cdots + \theta_k = 1}$
集合$C$可以是任意集合。仿射包是包含集合$C$的最小仿射集(一个集合的仿射包只有一个,是不变的)。即如果$S$是任意仿射集,满足$C\subset S$,那么有$aff C \subset S$。或者说仿射包是所有包含集合$C$的仿射集的交集。

仿射纬度(affine dimension)和相对内部(relative interior)

拓扑(topology)

拓扑(topology),开集(open sets),闭集(close sets),内部(interior),边界(boundary),闭包(closure),邻域(neighbood),相对内部(relative interior)
同一个集合可以有很多个不同的拓扑。

定义

给定一个集合$X$,$\tau$是$X$的一系列子集,如果$\tau$满足以下条件:

  1. 空集(empty set)和全集X都是$\tau$的元素;
  2. $\tau$中任意元素的并集(union)仍然是$\tau$的元素;
  3. $\tau$中任意有限多个元素的交集(intersection)仍然是$\tau$中的元素。

则称$\tau$是集合$X$上的一个拓扑。
如果$\tau$是$X$上的一个拓扑,那么$(X,\tau)$对称为一个拓扑空间(topological space)。
如果$X$的一个子集在$\tau$中,这个子集被称为开集(open set)。
如果$X$的一个子集的补集是在$\tau$中,那么这个子集是闭集(closed set)。
$X$的子集可能是开集,闭集,或者都是,都不是。
空集和全集是开集,也是闭集(定义)。

示例
  1. 给定集合$X={1,2,3,4}$, 集合$\tau = { {},{1,2,3,4} }$就是$X$上的一个拓扑。
  2. 给定集合$X={1,2,3,4}$, 集合$\tau = { {},{1}, {3,4},{1,3,4},{1,2,3,4} }$就是$X$上的另一个拓扑。
  3. 给定集合$X={1,2,3,4}$, $X$的幂集(power set)也是$X$上的另一个拓扑。

通常如果不说的话,默认是在欧式空间(1维,2维,…,n维欧式空间)的拓扑,即欧式拓扑。以下讲的一些概念是在欧式空间的拓扑(通常拓扑)上的定义和一般拓扑直观上可能不太一样,但实际上意义是相同的。

$\epsilon-disc$或$\epsilon$邻域

定义

给定$x\in \mathbb{R}^n $以及$\epsilon\gt 0$,集合
$$D(x,\epsilon) = {y\in \mathbb{R}^n \big|d(x,y) \lt \epsilon}$$
称为关于$x$的$\epsilon-disc$或者$\epsilon$邻域(neighbood)或者$\epsilon$球(ball)。即所有离点$x$距离小于$\epsilon$的点$y$的集合。

开集(open sets)

定义

给定集合$A\subset \mathbb{R}^n $,对于$A$中的所有元素,即$\forall x\in A$,都存在$\epsilon \gt 0$使得$D(x,\epsilon)\subset A$,那么就称该集合是开的。
即集合$A$中所有元素的$spsilon$邻域都还在集合$A$中(定理$1$)。
注意:必须满足$\epsilon \gt 0$

定理
定理$1$ $epsilon$邻域是开集
  • 在$\mathbb{R}^n $中,对于一个$\epsilon \gt 0, x\in \mathbb{R}^n $,那么集合$x$的$\epsilon$邻域$D(x,\epsilon)$是开的,给定一个$\epsilon$,能找到一个更小的$epsilon$邻域。
定理$2$
  • $\mathbb{R}^n $中有限个开子集的交集是$\mathbb{R}^n $的开子集。
  • $\mathbb{R}^n $中任意个开子集的并集是$\mathbb{R}^n $的开子集。

注意:任意开集的交可能不是开集,一个点不是开集,但是它是所有包含它的开集的交。

示例

unit_circle

  1. $\mathbb{R}^2 $中的不包含边界的球是开的,如图。
  2. 考虑一个$\mathbb{R}^1 $中的开区间,如$(0,1)$,它是一个开集,但是如果把它放在二维欧式空间中(是x轴上的一个线段),它不是开的,不满足定义,所以开集是必须针对于某一个给定的集合$X$。
  3. $\mathbb{R}^2 $上的包含边界的单位圆$X = {x\in \mathbb{R}^2 \big||x|\le 1}$不是开的。因为边界上的点$x$不满足$\epsilon \gt 0, D(x,\epsilon) \subset X$。
  4. 集合$S={(x,y) \in \mathbb{R}^2 \big|0 \lt x \lt 1}$是开集。对于每个点$(x,y)\in S$,我们可以画出半径$r = min{x,1-x}$的邻域并且其全部含于$S$,所以$S$是开集。
  5. 集合$S={(x,y) \in \mathbb{R}^2 \big|0 \lt x \le 1}$不是开集。因为点$(1,0) \in S$的邻域包含点$(x,0)$,其中$x\gt 1$。

内部(interior)

定义

给定集合$A\subset \mathbb{R}^n $,点$x \in A$,如果有一个开集$U$使得$x \in U\subset A$,那么该点就称为$A$的一个内点。或者说对于$x\in A$,有一个$\epsilon \gt 0$使得$D(x,\epsilon)\subset A$。$A$的所有内点组成的集合叫做$A$的内部(interior),记做$int(A)$。

属性
  1. 集合内部可能是空的,单点的内部就是空的。
  2. 单位圆的内部是不包含边界的单位圆。
  3. 事实上$A$的内部是$A$所有开子集的并,由开集的定理得$A$的内部是开的,且$A$的内部是$A$的最大的开集。
  4. 当且仅当$A$的内部等于$A$的时候,$A$是开集($A$可能是闭集)。
  5. 只需要寻找集合内$\epsilon$邻域还在这个集合内的点即可。
示例
  1. 给定集合$S={(x,y)\in \mathbb{R}^2 \big| 0 \lt x \le 1}$,$int(S) = {(x,y)\big|0 \lt x \lt 1}$。因为区间$(0,1)$中的点都满足它们的$\epsilon$邻域在$S$中。
  2. $int(A) \cup int(B) \ne int(A\cup B)$。在实数轴上,$A=[0,1],B=[1,2]$,那么$int(A) = (0,1),int(B) = (1,2)$,所以$int(A) \cup int(B) = (0,1)\cup (1,2) = (0,2)\backslash {1}$,而$int(A\cup B) = int[0,2] = (0,2)$。

闭集(closed set)

定义

对于$\mathbb{R}^n $中的集合$B$,如果它在$\mathbb{R}^n $的补(即集合$\mathbb{R}^n \backslash B$)是开集,那么它是闭集。
单点是闭集。含有边界的单位圆组成的集合是闭集,因为它的补集不包含边界。一个集合可能既不是开集也不是闭集。例如,在一维欧几里得空间,半开半闭区间(如$(0,1]$)既不是开集也不是闭集。

定理
  1. $\mathbb{R}^n $中有限个闭子集的并是闭集。
  2. $\mathbb{R}^n $中任意个闭子集的交是闭集。

这个定理是从开集的定理中得出的,在对开集取补变成闭集时候,并与交相互变换即可。

示例
  1. 给定集合$S={(x,y) \in \mathbb{R}^2 \big| 0 \lt x \le 1, 0 \lt y \lt 1}$,$S$不是闭集。因为目标区域的下边界不在S中。
  2. 给定集合$S={(x,y) \in \mathbb{R}^2 \big| x^2 +y^2 \le 1}$,$S$是闭集,因为它的闭集是$\mathbb{R}^2 $中的开集。
  3. $\mathbb{R}^n $中任何有限集是闭集。因为单点是闭集,有限集可以看成很多个单点的并,由定理$1$可以得出。

聚点(accumulation point)

定义

对于点$x\in \mathbb{R}^n $,如果包含$x$的每个开集$U$包含不同于$x$但依然属于集合$A$中的点,那么就称$x$是$A$的一个聚点(accumulation points),也叫聚类点(cluster points)。**注意这里是包含集合$A$中的点,而不是全部是集合$A$中的点,所以集合的聚点不一定必须在集合中。**如,在一维欧式空间中,单点集合没有聚点,开区间$(0,1)$的聚点是$[0,1]$,${0,1}$不在区间内,但是是聚点。
此外,$x$是聚类点等价于:对于每个$\epsilon \gt 0$,$D(x,\epsilon)$包含$A$中的某点$y$且$y\ne x$。

定理

当且仅当集合$S$的所有聚点属于$S$时,$S\subset \mathbb{R}^n $是闭集。

示例
  1. 给定集合$S={x\in R\big|x\in [0,1]且x是有理数}$,$S$的聚点为$[0,1]$中所有点。任何不属于$[0,1]$的点都不是聚点,因为这类点有一个包含它的$\epsilon$邻域与$[0,1]$不相交。
  2. 给定集合$S={(x,y)\in \mathbb{R}^2 \big| 0 \le x\le 1\ or\ \ x = 2}$, 它的聚点是它本身,因为它是闭集。
  3. 给定集合$S={(x,y)\in \mathbb{R}^2 \big|y \lt x^2 + 1}$,S的聚点为集合${(x,y)\in \mathbb{R}^2 \big|y \le x^2 + 1}$,

闭包(closure)

定义

给定集合$A\subset \mathbb{R}^n $,集合$A$的闭包$cl(A)$定义成所有包含$A$的闭集的交,所以$cl(A)$是一个闭集。定价的定义是给定集合$A$,包含$A$的最小闭集叫做这个集合$X$的闭包(closure),用$cl(A)$或者${\overline{A}}$表示。

定理

给定$A\subset \mathbb{R}^n $,那么$cl(A)$由$A$和$A$的所有聚点组成。

示例
  1. $R$中$S=[0,1)\cup {2}$的闭包是$[0,1]$和${2}$。$S$的聚点是$[0,1]$,再并上$S$得到$S$的闭包是$[0,1]\cup{2}$。
  2. 对于任意$S\subset \mathbb{R}^n $,$\mathbb{R}^n \backslash cl(S)$是开集。因为$cl(S)$是闭集,所以它的补集是开集。
  3. $cl(A\cap B) \ne cl(A)\cap cl(B)$。比如$A=(0,1),B(1,2),cl(A)=[0,1],cl(B)=[1,2]$,$A\cap B = \varnothing$,$cl(A\cap B) = \varnothing$,而$cl(A)\cap cl(B) = {1}$。

边界(boundary)

定义

对于$\mathbb{R}^n $中的集合$A$,边界定义为集合:
$bd(A) = cl(A)\cap cl(\mathbb{R}^n \backslash A)$
即集合$A$的补集的闭包和$A$的闭包的交集,所以$bd(A)$是闭集。$bd(A)$是$A$与$\mathbb{R}^n \backslash A$之间的边界。

定理

给定$A\subset \mathbb{R}^n $,当且仅当对于每个$\epsilon \gt 0$,$D(x,\epsilon)$包含$A$与$\mathbb{R}^n \backslash A$的点,$x\in bd(A)$。

示例
  1. 给定集合$S={x\in R\big|x\in [0,1],x是有理数}$,$bd(S) = [0,1]$。因为对于任意$\epsilon \gt 0, x\in [0,1],D(x,\epsilon) = (x-\epsilon, x+\epsilon)$包含有理数和无理数,即x是有理数和无理数之间的边界。
  2. 给定$x\in bd(S)$,$x$不一定是聚点。给定集合$S = {0} \subset R$,$bd(S) = {0}$,但是单点没有聚点。
  3. 给定集合$S={(x,y)\in \mathbb{R}^2 \big| x^2 -y^2 \gt 1 }$,$bd(S)={(x,y)\big|x^2 - y^2 = 1}$。

仿射维度(affine dimension)

定义

给定一个仿射集$C$,仿射维度是它的仿射包的维度。
仿射维度和其他维度的定义不总是相同的,具体可以看以下的示例。

示例

给定一个二维欧几里得空间的单位圆,${x\in C\big|x_1^2 +x_2^2 =1}$。它的仿射包是整个$\mathbb{R}^2$,所以二维平面的单位圆仿射维度是$2$。但是在很多定义中,二维平面的单位圆的维度是$1$。

相对内部(relative interior)

给定一个集合$C\subset \mathbb{R}^n $,它的仿射维度可能小于$n$,这个时候仿射集$aff\ C \ne \mathbb{R}^n $。

定义

给定集合$C$,相对内部的定义如下:
$relint\ C = {x\in C\big|(B(x,r)\cup aff\ C) \subset C, \exists \ r \gt 0}.$
就是集合$C$内所有$\epsilon$球在$C$的仿射集内的点的集合。
其中$B(x,r)={y \big|\Vert y- x\Vert \le r}$,是以$x$为中心,以$r$为半径的圆。这里的范数可以是任何范数,它们定义的相对内部是相同的。

示例

给定一个$\mathbb{R}^3 $空间中$(x_1,x_2)$平面上的正方形,$C={x\in \mathbb{R}^3 \big|-1 \le x_1 \le 1, -1\le x_2 \le 1, x_3 = 0}$。它的仿射包是$(x_1,x_2)$平面,$aff\ C = {x\in \mathbb{R}^3 \big|x_3=0}$。$C$的内部是空的,但是相对内部是:
$relint\ C = {x \in \mathbb{R}^3 \big|-1 \le x_1 \le 1, -1\le x_2 \le 1,x_3=0}$。

相对边界(relative boundary)

定义

给定集合$C$,相对边界(relative boundary)定义为$cl\ C \backslash relint\ C$,其中$cl\ C$是集合$C$的闭包(closure)。

示例

对于上例(相对内部的示例)来说,它的边界(boundary)是它本身。它的相对内部是边框,${x\in \mathbb{R}^3 \big|max{|x_1|,|x_2|}=1,x_3=0}$。

凸集(convex sets)

凸集定义

给定一个集合$C$,如果集合$C$中经过任意两点的线段仍然在$C$中,这个集合就是一个凸集。
给定$\forall x_1,x_2 \in C, 0 \le \theta \le 1$,那么我们有$\theta x_1 + (1-\theta)x_2 \in C$。
每一个仿射集都是凸的,因为它包含经过任意两个不同点的直线,所以肯定就包含过那两个点的线段。

凸组合(convex combination)

给定$k$个点$x_1,x_2,\cdots,x_k$,如果具有$\theta_1 x_1 + \cdots, \theta_k x_k$形式且满足$\theta_1 + \cdots + \theta_k=1, \theta_i \ge 0,i=1,\cdots,k$,那么就称这是$x_1,\cdots,x_k$的一个凸组合。
当且仅当一个集合包含其中所有点的凸组合,这个集合是一个凸集。点的一个凸组合可以看成点的混合或者加权,$\theta_i$是第$i$个点$x_i$的权重。
凸组合可以推广到无限维求和,积分,概率分布等等。假设$\theta_1,\theta_2,\cdots$满足:
$$\theta_i \le 0, i = 1,2,\cdots, \sum_{i=1}^{\infty}\theta_i = 1$$
并且$x_1,x_2,\cdots \in C$,$C\subset \mathbb{R}^n $是凸的,如果(series)$\sum_{i=1}^{\infty} \theta_i x_i$收敛,那么$\sum_{i=1}^{\infty} \theta_i x_i \in C$。
更一般的,假设概率分布$p$,$\mathbb{R}^n \rightarrow R$满足$p(x)\le 0 for\ all\ x\in C, \int_{C}p(x)dx = 1$,其中$C\subset \mathbb{R}^n $是凸的,如果$\int_{C}p(x)xdx$存在的话,那么$\int_{C}p(x)xdx\in C$。

凸包(convex hull)

给定一个集合$C$,凸包的定义为包含集合$C$中所有点的凸组合的结合,记为$conv\ C$,公式如下:
$conv\ C = {\theta_1 x_1 + \cdots + \theta_k x_k\big|x_i \in C, \theta_i \ge 0, i = 1,\cdots,k,\theta_1 +\cdots + \theta_k = 1}$
任意集合都是有凸包的。一个集合的凸包总是凸的。集合$C$的凸包是包含集合$C$的最小凸集。如果集合$B$是任意包含$C$的凸集,那么$conv\ C \subset B$。

示例

figure 2.2
figure 2.3

锥(cones)

锥(cones)和凸锥(convex cones)的定义

给定集合$C$,如果$\forall x \in C, \theta \ge 0$,都有$\theta x\in C$,这样的集合就称为一个锥(cone),或者非负同质(nonnegative homogeneour)。
一个集合$C$如果既是锥又是凸的,那这个集合是一个凸锥(convex cone),即:$\forall x_1,x_2 \in C, \theta_1,\theta_2 \ge 0$,那么有$\theta_1 x_1+\theta_2 x_2 \in C$。几何上可以看成经过顶点为原点,两条边分别经过点$x_1$和$x_2$的$2$维扇形。

锥组合(conic combination)

给定$k$个点$x_1,x_2,\cdots,x_k$,如果具有$\theta_1 x_1 + \cdots, \theta_k x_k$形式且满足$\theta_i \ge 0,i=1,\cdots,k$,那么就称这是$x_1,\cdots,x_k$的一个锥组合(conic combination)或者非负线性组合(nonnegative combination)。
给定集合$C$是凸锥,那么集合$C$中任意点$x_i$的锥组合仍然在集合$C$中。反过来,当且仅当集合$C$包含它的任意元素的凸组合时,这个集合是一个凸锥(convex cone)。

锥包(conic hull)

给定集合$C$,它的锥包(conic hull)是集合$C$中所有点的锥组合。即:
$conic\ C = {\theta_1 x_1 + \cdots + \theta_k x_k\big|x_i \in C, \theta_i \ge 0, i = 1,\cdots,k}$
集合$C$的锥包是包含集合$C$的最小凸锥。

示例

figure 2.4
figure 2.5

一些想法

在我自己看来,在几何上
仿射集可以看成是集合中任意两个点的直线的集合。
凸集可以看成是集合中任意两个点的线段的集合,因为直线一定包含线段,所以仿射集一定是凸集。
锥集可以看成是集合中任意一个点和原点构成的射线的集合,锥集不一定是连续的(两条射线也是锥集),所以锥集不一定是凸集。
而凸锥既是凸集又是锥集。
我在stackexchange看到这样一句话觉得说的挺好的。

What basically distinguishes the definitions of convex, affine and cone, is the domain of the coefficients and the constraints that relate them.

区别凸集,仿射和锥的是系数的取值范围和一些其他限制。仿射集要求$\theta_1+\cdots+\theta_k = 1$,凸集要求$\theta_1 +\cdots +\theta_k = 1, 0\le \theta \le 1$,锥的要求是$\theta \ge 0$,凸锥的要求是$\theta_i \ge 0,i=1,\cdots,k$。
仿射集不是凸集的子集,凸集也不是仿射集的子集。所有仿射集的集合是所有凸集的集合的子集,一个仿射集是一个凸集。

示例

  • $\emptyset$,单点(single point)${x_0}$,整个$\mathbb{R}^n $空间都是$\mathbb{R}^n $中的仿射子集,所以也是凸集,点不一定是凸锥(在原点熵是凸锥),空集是凸锥,$\mathbb{R}^n $维空间也是凸锥。根据定义证明。
  • 任意一条直线都是仿射的,所以是凸集。如果经过原点,它是一个子空间,也就是一个凸锥,否则不是。
  • 任意一条线段都是凸集,不是仿射集,当它退化成一点的时候,它是仿射的,线段不是凸锥。
  • 一条射线${x_0 + \theta v\big| \theta \ge 0}$是凸的,但是不是仿射的,当$x_0=0$时,它是凸锥。
  • 任意子空间都是仿射的,也是凸锥,所以是凸的。

补充最后一条,任意子空间都是仿射的,也是凸锥。
如果$V$是一个子空间,那么$V$中任意两个向量的线性组合还在$V$中。即如果$x_1,x_2\in V$,对于$\theta_1,\theta_2 \in R$,都有$\theta_1 x_1 + \theta_2 x_2 \in V$。正如前面说的,子空间是加法和数乘封闭的。
而根据仿射集的定义,如果$x_1,x_2$在一个仿射集$C$中,那么对于$\theta_1+\theta_2 = 1$,都有$\theta_1 x_1 + \theta_2 x_2 \in C$。我们可以看出来,如果取子空间中线性组合的系数和为$1$,那么就成了仿射集。如果取子空间中的系数$\theta_1,\theta_2 \in R_+$,那么就成了锥,如果同时满足$\theta_1+\theta_2 = 1$,那么就成凸锥。那么如果加上这些限制条件,即取子空间中线性组合的系数和为$1$,或者取子空间中的系数$\theta_1,\theta_2 \in R_+$,同时满足$\theta_1+\theta_2 = 1$。
事实上,子空间要求的条件比仿射集和凸锥的条件要更严格。仿射集和凸锥只要求在系数$\theta_i$满足相应的条件时,有$\theta_1 x_1 + \theta_2 x_2 \in \mathbb{R}^n $;而子空间要求的是在系数$\theta_i$取任意值的时候,都有$\theta_1 x_1 + \theta_2 x_2 \in \mathbb{R}^n $,所以子空间一定是仿射集,也一定是凸锥。(拿二维的举个例子,给定$x_1$和$x_2$,仿射集可以看成是$\theta_1$的函数,因为$\theta_2=1-\theta_1$,而子空间可以看成$\theta_1$和$\theta_2$的函数,一个是一元函数,一个是二元函数)

超平面(hyperplane)和半空间(halfspace)

超平面是一个仿射集,也是凸集,但不一定是锥集(过原点才是锥集,也是一个子空间)。
闭的半空间是一个凸集,不是仿射集。

超平面(hyperplane)

超平面通常具有以下形式:
$${x\big|a^T x=b},$$
其中$a\in \mathbb{R}^n ,a\ne 0,b\in R$,它其实是一个平凡(nontrivial)线性方程组的解,因此也是一个仿射集。几何上,超平面可以解释为和一个给定向量$a$具有相同内积(inner product)的点集,或者说是法向量为$a$的一个超平面。常数$b$是超平面和原点之间的距离(offset)。
几何意义可以被表示成如下形式:
$${x\big|a^T (x-x_0) = 0},$$
其中$x_0$是超平面上的一点,即满足$a^T x_0=0$。可以被表示成如下形式:
$${x\big|a^T (x-x_0)=0} = x_0+a^{\perp},$$
其中$a^{\perp} $是$a$的正交补,即所有与$a$正交的向量的集合,满足$a^{\perp} ={v\big|a^T v=0}$。所以,超平面的几何解释可以看做一个偏移(原点到这个超平面的距离)加上所有垂直于一个特定向量$a$(正交向量)的向量,即这些垂直于$a$的向量构成了一个过原点的超平面,再加上这个偏移量就是我们要的超平面。几何表示如下图所示。
figure 2.6

半空间(halfspace)

一个超平面将$\mathbb{R}^n $划分为两个半空间(halfspaces),一个是闭(closed)半空间,一个是开半空间。闭的半空间可以表示成${x\big|a^T x\le b}$,其中$a\ne 0$,半空间是凸的,但不是仿射的。下图便是一个闭的半空间。
figure 2.7
这个半空间也可以写成:
$${x\big|a^T (x-x_0)\le 0},$$
其中$x_0$是划分两个半空间的超平面上的一点,即满足$a^T x_0=b$。一个几何解释是:半空间由一个偏移$x_0$加上所有和一个特定向量$a$(超平面的外(outward)法向量)成钝角(obtuse)或者直角(right)的所有向量组成。
这个半空间的边界是超平面${x\big|a^T x=b}$。这个半空间${x\big|a^T x\le b}$的内部是${x\big|a^T x\lt b}$,也被称为一个开半平面。

欧几里得球(Euclidean ball)和椭球(ellipsoid)

欧几里得球

$\mathbb{R}^n $空间中的欧几里得球或者叫球,有如下的形式:
$$B(x_r,r = {x\big|\Vert x-x_c\Vert_2\le r}={x \big|(x-x_c)^T (x-x_c)\le \mathbb{R}^2 },$$
其中$r\gt 0$,$\Vert \cdot\Vert_2$是欧几里得范数(第二范数),即$\Vert u\Vert_2=(u^T u)^{\frac{1}{2}} $。向量$x_c$是球心,标量$r$是半径。$B(x_c,r)$包含所有和圆心$x_c$距离小于$r$的球。
欧几里得球的另一种表示形式是:
$$B(x_c,r)={x_c + ru\big| \Vert u \Vert_2 \le 1},$$
一个欧几里得球是凸集,如果$\Vert x_1-x_c\Vert_2 \le r,\Vert x_2-x_c\Vert_2\le r, 0\le\theta\le1$,那么:
\begin{align*}
\Vert\theta x_1 + (1-\theta)x_2 - x_c\Vert_2 &= \Vert\theta(x_1-x_c)+(1-\theta)(x_2-x_c)\Vert_2\\
&\le\theta\Vert x_1-x_c\Vert_2 + (1-\theta)\Vert x_2 - x_c \Vert_2\\
&\le r
\end{align*}
用其次性和三角不等式可证明

椭球

另一类凸集是椭球,它们有如下的形式:
$$\varepsilon ={x\big|(x-x_c)^T P^{-1} (x-x_c) \le 1},$$
其中$P=P^T \succ 0$即$P$是对称和正定的。向量$x_c\in \mathbb{R}^n $是椭球的中心。矩阵$P$决定了椭球从$x_c$向各个方向扩展的距离。椭球$\varepsilon$的半轴由矩阵$P$的特征值$\lambda_i$算出,$\sqrt{\lambda_i}$,球是$P=\mathbb{R}^2 I$的椭球。
这里这种表示形式为什么要用$P^{-1} $?
椭球的另一种表示是:
$$\varepsilon = {x_c + Au\big| \Vert u \Vert_2 \le 1},$$
其中$A$是一个非奇异方阵。假设$A$是对称正定的,取$A=P^{\frac{1}{2}} $,这种表示就和上面的表示是一样的。第一次看到这种表示的时候,我在想,椭球的边界上有无数个点,一个方阵$A$是怎么实现对这无数个操作的,后来和球做了对比,发现自己一直都想错了,这无数个点是通过范数实现的而不是通过矩阵$A$实现的,到球心距离为$\Vert u\Vert_2\le 1$的点有无数个,$A$对这无数个点的坐标都做了仿射变换,将一个球变换成了椭球,特殊情况下就是球。当矩阵$A$是对称半正定但是是奇异的时候,这个情况下称为退化椭球(degenerate ellipsoid),它的仿射维度和矩阵$A$的秩(rank)是相同的。退化椭球也是凸的。

范数球(norm ball)和范数锥(norm cone)

范数球(norm ball)

定义

$\Vert \cdot\Vert$是$\mathbb{R}^n $上的范数。一个范数球(norm ball)可以看成一个以$x_c$为中心,以$r$为半径的集合,但是这个$r$可以是任何范数,即${x\big|\Vert x-x_c \Vert \le r}$,它是凸的。

示例

我们常见的球是二范数(欧几里得范数)对应的范数球。

范数锥

定义

和范数相关的范数锥是集合:$C = {(x,t)\big|\Vert x\Vert \le t} \subset \mathbb{R}^{n+1} $,它也是凸锥。

示例

figure 2.10
二阶锥(second-order cone)是欧几里得范数对应的范数锥,如图所示,其表达式为:
\begin{align*}
C &={(x,t)\in \mathbb{R}^{n+1} \big| \Vert x\Vert_2 \le t}\\
&= \left{ \begin{bmatrix}x\\t\end{bmatrix} \big| \begin{bmatrix}x\\t\end{bmatrix}^T \begin{bmatrix}I&0\\ 0&-1\end{bmatrix} \begin{bmatrix}x\\t\end{bmatrix}\le 0, t \gt 0 \right}
\end{align*}
这个二阶锥也被称为二次锥(quadratic cone),因为它是通过一个二次不等式定义的,也被叫做Lorentz cone或者冰激凌锥(ice-cream cone)。

范数锥和范数球的区别

范数球是所有点到圆心$x_c$的范数小于一个距离$r$。
范数锥是很多直线组成的锥。

多面体(polyhedra)

定义

多面体(polyhedron)是有限个线性不等式或者线性方程组的解集的集合:
$P = {x\big|a_j^T x\le b_j, j=1,\cdots,m,c_j^T x=d_j,j=1,\cdots,p}$
多面体因此也是有限个半空间或者超平面的交集。仿射集(如,子空间,超平面,直线),射线,线段,半空间等等都是多面体,多面体也是凸集。有界的polyhedron有时也被称为polytope,一些作者会把它们两个反过来叫。
上式的紧凑(compact)表示是:
$$P={x\big|Ax\preceq b, Cx=d}$$
其中$A=\begin{bmatrix}a_1^T \\ \vdots\\ a_m^T \end{bmatrix},C=\begin{bmatrix}c_1^T \\ \vdots\\c_p^T \end{bmatrix}$,$\preceq$表示$\mathbb{R}^m $空间中的向量不等式(vector ineuqalitied)或者分量大小的不等式,$u\preceq v$代表着$u_i\le v_i, i=1,\cdots,m$。

simplexes

simplexes是另一类很重要的多面体。假设$\mathbb{R}^n $空间中的$k+1$个点是仿射独立(affinely independent),意味着$v_1-v_0, \cdots,v_k-v_0$是线性独立的。由$k+1$个仿射独立的点确定的simplex是:
$$C = conv{v_0,\cdots,v_k} = {\theta_0v_0+\cdots+\theta_kv_k\big| \theta \succeq 0, \mathcal{1}\theta=1 },$$
其中$\mathcal{1}$是全为$1$的列向量。这个simplex的仿射维度是$k$,所以它也叫$\mathbb{R}^n $空间中的$k$维simplex。为什么仿射维度是$k$,我的理解是simplex是凸集,而凸集不是子空间,凸集去掉其中任意一个元素才是子空间,所以就是$k$维而不是$k+1$维。
为了将simplex表达成一个紧凑形式的多面体。定义$y=(\theta_1,\cdots,\theta_k)$和$B=[v_1-v_0\ \cdots\ v_k-v_0]\in \mathbb{R}^{n\times k} $,当且仅当存在$y\succeq 0, \mathcal{1}^T y\le 1$,$x=v_0+By$有$x\in C$,疑问,这里为什么变成了$\mathcal{1}^T y\le 1$,难道是因为少了个$v_0$吗。点$v_0,\cdots,v_k$表明矩阵$B$的秩为$k$。因此存在一个非奇异矩阵$A=(A_1,A_2)\in \mathbb{R}^{n\times n} $使得:
$$AB = \begin{bmatrix}A_1\\A_2\end{bmatrix}B= \begin{bmatrix}I\\0\end{bmatrix}.$$
对$x = v_0+By$同时左乘$A$,得到:
$$A_1x = A_1v_0+y, A_2x=A_xv_0.$$
从中我们可以看出如果$A_2x=A_2v_0$,且向量$y=A_1x-A_1v_0$满足$y\succeq 0, \mathcal{1}^T y\le1$时,$x\in C$。换句话说,当且仅当$x$满足以下等式和不等式时:
$$A_2x = A_2v_0,A_1x\succeq A_1v_0, \mathcal{1}A_1x\le1+\mathcal{1}^T A_1v_0,$$
有$x\in C$。

多面体的凸包描述

一个有限集合${v_1,\cdots,v_k}$的凸包是:
$$conv{v_1,\cdots,v_k} = {\theta_1 v_1 +\cdots +\theta_k v_k\big| \theta \succeq 0, \mathcal{1}^T \theta = 1}.$$
这个集合是一个多面体,并且有界。但是它(除了simplex)不容易化成多面体的紧凑表示,即不等式和等式的集合。
一个一般化的凸包描述是:
$${\theta_1 v_1 +\cdots +\theta_k v_k\big| \theta_1+\cdots + \theta_m = 1,\theta_i \ge 0,i=1,\cdots,k}.$$
其中$m\le k$,它可以看做是点$v_1,\cdots,v_m$的凸包加上点$v_{m+1},\cdots,v_{k}$的锥包。这个集合定义了一个多面体,反过来,任意一个多面体可以看做凸包加上锥包。
一个多面体如何表示是很有技巧的。比如一个$\mathbb{R}^n $空间上的无穷范数单位球$C$:
$$C={x\big|\ |x_i|\le 1,i = 1,\cdots,n}.$$
集合$C$可以被表示成$2n$个线性不等式$\pm e_i^T x\le 1$,其中$e_i$是第$i$个单位向量。然而用凸包形式描述这个集合需要用至少$2^n $个点:
$$C = conv{v_{1},\cdots,v_{2^n }},$$
其中$v_{1},\cdots,v_{2n}$是$2^n $个向量,每个向量的元素都是$1$或$-1$。因此凸包描述和不等式描述有很大差异,尤其是$n$很大的时候。
这里为什么是$2^n $个点呢?因为是无穷范数构成的单位圆,在数轴上是区间$[-1,1]$,在$\mathbb{R}^2 $是正方形${(x,)\big|-1 \le x\le 1,-1\le y\le 1}$,对应的四个点是${(1,1),(1,-1),(-1,1),(-1,-1)}$,而在$\mathbb{R}^3 $是立方体${(x,y,z)\big|-1 \le x\le 1,-1\le y\le 1, -1\le z\le 1}$,对应的是立方体的八个顶点${(1,1,1),(1,1,-1),(1,-1,1),(1,-1,-1),(-1,1,1),(-1,1,-1),(-1,-1,1),(-1,-1,-1)}$。

示例

  1. 如图所示,是五个半平面的交集定义的多面体。
    figure 2.11
  2. 非负象限(nonnegative orthant)是非负点的集合,即:
    $$R_{+}^n = {x\in \mathbb{R}^n \big| x_i\ge 0, i = 1,\cdots,n} = {x\in \mathbb{R}^n \big| x\succeq 0}.$$
    非负象限是一个多面体,也是一个锥,所以也叫多面体锥(polyhedral cone),也叫非负象限锥。
  3. 一个1维的simplex是一条线段。一个二维的simplex是一个三角形(包含它的内部)。一个三维的simple是一个四面体(tetrahedron)。
  4. 由$\mathbb{R}^n $中的零向量和单位向量确定的simplex是$n$维unit simplex。它是向量集合:
    $$x\succeq 0, \mathcal{1}^T x \le 1.$$
  5. 由$\mathbb{R}^n $中的单位向量确定的simplex是$n-1$维probability simplex。它是向量集合:
    $$x\succeq 0, \mathcal{1}^T x = 1.$$
    Probability simplex是中的向量可以看成具有$n$个元素的集合的概率分布,$x_i$解释为第$i$个元素的概率。

半正定锥(positive sefidefinite cone)

定义

用$S^n $表示$n\times n$的对称矩阵:$S^n ={X\in \mathbb{R}^{n\times n} \big| X = X^T }$,$S^n $是一个$n(n+1)/2$维基的向量空间。比如,三维空间中对称矩阵的一组基是:
$$\begin{bmatrix}1&0&0\\0&0&0\\0&0&0\end{bmatrix}\begin{bmatrix}0&0&0\\1&0&0\\0&0&0\end{bmatrix}\begin{bmatrix}0&0&0\\0&1&0\\0&0&0\end{bmatrix}\begin{bmatrix}0&0&0\\0&0&0\\1&0&0\end{bmatrix}\begin{bmatrix}0&0&0\\0&0&0\\0&1&0\end{bmatrix}\begin{bmatrix}0&0&0\\0&0&0\\0&0&1\end{bmatrix}.$$
用$S_{+}^n $表示半正定的对称矩阵集合:
$$S_{+}^n = {X\in S^n \big| X\succeq 0},$$
用$S_{++}^n $表示正定的对称矩阵集合:
$$S_{+}^n = {X\in S^n \big| X\succ 0},$$
集合$S_{+}^n $是凸锥:如果$\theta_1,\theta_2 \ge 0$且$A,B\in S_{+}^n $,那么$\theta_1 A+\theta_{2} B\in S_{+}^n $。这个可以直接从依靠半正定的定义来证明,如果$A,B\in S_{+}^n ,\theta_1,\theta_2\ge 0$,(这里原书中用的是$A,B\succeq 0$,我觉得应该是写错了吧),对任意$\forall x \in \mathbb{R}^n $,都有:
$$x^T (\theta_1A+\theta_2B)x = \theta_1x^T Ax + \theta_2x^T Bx.$$

示例

对于$S^2 $空间中的半正定锥,有
$$X=\begin{bmatrix}x&y\\y&z\end{bmatrix}\in S_{+}^2 \Leftrightarrow x\ge 0,z\ge 0, xz\ge y^2 $$
这个锥的边界如下图所示。
figure 2.12

常见的几种锥

范数锥,非负象限锥,半正定锥,它们都过原点。
想想对应的图像是什么样的。
范数锥和非负象限锥图像还好理解一些,非负象限锥是$\mathbb{R}^n $空间所有非负半轴围成的锥,范数锥的边界像一个沙漏,但是是无限延伸的。半正定锥怎么理解,还没有太好的类比。

保凸运算(operations that preserve convexity)

这一小节介绍的是一些保留集合凸性,或者从一些集合中构造凸集的运算。这些运算和simplex形成了凸集的积分去确定或者建立集合的凸性。

集合交(intersection)

凸集求交集可以保留凸性:如果$S_1$和$S_2$是凸集,那么$S_1\cup S_2$是凸集。扩展到无限个集合就是:如果$\forall \alpha \in A,S_{\alpha}$都是凸的,那么$\cup_{\alpha\in A S_{\alpha}}$是凸的

仿射函数(affine functions)

线性分式(linear-fractional)和视角函数(perspective functions)

线性分式(linear-fractional)

视角函数(perspective functions)

广义不等式(Generalized inequalities)

真锥(Proper cones)和广义不等式(Generalized inequalities)

最小(Minimum)和最小元素(minimal elemetns)

Separating和supporting hyperplanes

Separating hyperplane theorem

Supporting Hyperplanes

对偶锥(dual cones)和广义不等式(generalized inequalities)

符号定义

$\preceq$表示$\mathbb{R}^m $空间中的向量不等式(vector ineuqalitied)或者element-wise的不等式,$u\preceq v$代表着$u_i\le v_i, i=1,\cdots,m$。

参考文献

1.stephen boyd. Convex optimization
2.https://en.wikipedia.org/wiki/Topology
3.https://en.wikipedia.org/wiki/Topological_space
4.https://en.wikipedia.org/wiki/Power_set
5.https://en.wikipedia.org/wiki/Open_set
6.https://en.wikipedia.org/wiki/Closed_set
7.https://en.wikipedia.org/wiki/Clopen_set
8.https://en.wikipedia.org/wiki/Interior_(topology)
9.https://en.wikipedia.org/wiki/Closure_(topology)
10.https://en.wikipedia.org/wiki/Boundary_(topology)
11.https://en.wikipedia.org/wiki/Ball_(mathematics)
12.https://blog.csdn.net/u010182633/article/details/53792588
13.https://blog.csdn.net/u010182633/article/details/53819910
14.https://blog.csdn.net/u010182633/article/details/53983642
15.https://blog.csdn.net/u010182633/article/details/53997843
16.https://blog.csdn.net/u010182633/article/details/54093987
17.https://blog.csdn.net/u010182633/article/details/54139896
18.https://math.stackexchange.com/questions/1168898/why-is-any-subspace-a-convex-cone
19.https://www.zhihu.com/question/22799760/answer/139753685
20.https://www.zhihu.com/question/22799760/answer/34282205
21.https://www.zhihu.com/question/22799760/answer/137768096
22.https://en.wikipedia.org/wiki/Positive-definite_matrix

entropy, cross entropy, kl divergence,条件熵,互信息

发表于 2018-12-23 | 更新于 2019-12-17 | 分类于 机器学习

乡农熵(Shannon entropy)

乡农定义了一个事件的信息量是其发生概率的负对数($-log§$),即乡农信息量,乡农熵是信息量的期望。

介绍

这里的熵都是指的信息论中的熵,也叫乡农熵(shannon entropy)。通常,熵是无序或不确定性的度量。
与每个变量可能的取值相关的信息熵是每个可能取值的概率质量函数的负对数:
$$S = - \sum_i P_i lnP_i$$
当事件发生的概率较低时,该事件比高概率事件携带更多“信息”。这种方式定义的每个事件所携带的信息量是一个随机变量,事实上乡农熵定义的一个事件的信息量就是这个事件发生的概率的负对数,这个随机变量(信息量)的期望值是信息熵。信息熵通常以比特(或者称为shannons),自然单位(nats)或十进制数字(dits,bans或hartleys)来测量。具体的单位取决于用于定义熵的对数的基。
采用概率分布的对数形式作为信息的度量的原因是因为它的可加性。例如,投掷公平硬币的熵是$1$比特,投掷$m$个硬币的熵是$m$比特。以比特为单位的时候,如果$n$是$2$的指数次方,则需要$log_2n$位来表示一个具有$n$个取值的变量。如果该变量的$n$个取值发生的可能性是相等的,则熵等于$log_2n$。
如果一个事件发生的可能性比其他事件发生的可能性更高,观察到该事件发生的信息量少于观测到一些罕见事件,即观测到更罕见的事件时能提供更多的信息。由于小概率事件发生的可能性更低,因此最终的结果是从非均匀分布的数据接收的熵总是小于或等于$log_2n$。当一个结果一定发生时,熵为零。
但是熵仅仅量化考虑事件发生的概率,它封装的信息是有关概率分布的信息,事件本身的意义在这种度量方式的定义中无关紧要。
熵的另一种解释是最短平均编码长度。

定义

乡农定义了entropy, 定义离散型随机变量$X$,其可能取值为${x_1,\cdots,x_n}$,它对应的概率质量函数(probability mass function) P(X),则熵$H$为:
$$H(X) = E[I(X)] = E[-log(P(X))]$$
其中$E$是求期望,$I$是随机变量$X$的信息量, $I(X)$本身是一个随机变量。
它可以显示写成:
$$H(X) = \sum_{i=1}^nP(x_i)I(x_i) = -\sum_{i=1}^nP(x_i)log_bP(x_i)$$
其中b是自然对数的底,$b$常取的值为$2,e,10$,对应的熵的单位是bits, nats,bans。
当$P(x_i)=0$的时候,对应的$PlogP$的值为$0log_b(0)$, 和极限(limit)是一致的:
$$lim_{p\rightarrow 0_+}plog§ = 0.$$

连续型随机变量的熵

将概率质量函数替换为概率密度函数,即可得到连续性随机变量的熵:
$$h[f] = E[-ln(f(x))] = - \int_X f(x)ln(f(x))dx.$$

示例

抛一枚硬币,已知其正反两面出现的概率是不相等的,求其正面朝上的概率,该问题可以看做一个伯努利分布问题。
如果硬币是公平的,此时得到结果的熵是最大的。这是因为此时抛一次抛硬币的结果具有最大的不确定性。每一个抛硬币的结果会占满一整个bit位。因为
\begin{align*}
H(X) &= - \sum_{i=1}^n P(x_i)log_bP(x_i)\\
&= - \sum_{i=1}^2\frac{1}{2}log_2\frac{1}{2}\\
&= - \sum_{i=1}^2\frac{1}{2}\cdot(-1)\\
&= 1
\end{align*}
如果硬币是不公平的,正面向上的概率是$p$,反面向上的概率是$q$,$p \ne q$, 则结果的不确定性更小。因为每次抛硬币,出现其中一面的可能性要比另一面要大,减小的不确定性就得到了更小的熵:每一次抛硬币得到的信息都会小于$1$bit,比如,$p=0.7$时:
\begin{align*}
H(X) &= -plog_2p - qlog_2q\\
&= -0.7log_20.7 - 0.3log_20.3\\
&= -0.7\cdot(-0.515) - 0.3\cdot(-1.737)\\
&= 0.8816\\
&\le 1
\end{align*}
上面的例子证明不确定性跟变量取值的概率有关。
不确定性也跟变量的取值个数有关,上面例子的极端情况是正反面一样(即只有一种取值),那么熵就是0,没有不确定性。

解释(rationale)

为什么乡农定义了信息量为$-log§$?$-\sum p_i log(p_i)$的意义是什么?
首先我们需要想一想信息量需要满足什么条件,然后定义一个信息函数I表示发生概率为$p_i$的事件$i$的信息量,那么这个信息函数需要满足以下条件。

  • $I§$是单调下降的;
  • $I§ \ge 0$, 即信息是非负的;
  • $I(1) = 0$, 一定发生的事件不包含信息;
  • $I(p_1p_2) = I(p_1) + I(p_2)$, 独立事件包含的信息是可加的。
    最后一个条件很关键,它指出了两个独立事件的联合分布和两个分开的独立事件所包含的信息是一样多的。例如,$A$事件有$m$个等可能性的结果,$B$事件有$n$个等可能性的结果,$AB$有$mn$个等可能性的结果。$A$事件需要$log_2(m)$bits去编码,$B$事件需要用$log_2(n)$bits去编码,$AB$需要$log_2(mn) = log_2(m) + log_2(n)$bits编码。乡农发现了$log$函数能够保留可加性,即:
    $$I§ = log(\frac{1}{p}) = - log§$$
    事实上,这个函数$I$是唯一的(可以证明),选择$I$当做信息函数。如果一个分布中事件$i$发生的概率是$p_i$,那么采样$N$次,事件$i$发生的次数为$n_i = N p_i$, 所有$n_i$次的信息为$$\sum_in_iI(p_i) = - \sum_iNp_ilog(p_i).$$
    每个事件的平均信息就是:
    $$-\sum_ip_ilog(p_i)$$
    所以$-\sum_ip_ilog(p_i)$就是信息量的期望,即信息熵。
    在信息论中,熵的另一种解释是最短平均编码长度。

交叉熵(cross entropy)

介绍

交叉熵用于衡量在给定真实分布下,用非真实分布表示真实概率分布需要付出的花费。
交叉熵是信息熵的推广。假设有两个分布$p$和$q$,$p$是真实分布,$q$是非真实分布。信息熵是用真实分布$p$来衡量识别一个事件所需要的编码长度的期望。而交叉熵是用非真实分布$q$来估计真实分布$p$的期望编码长度,用$q$来编码的事件来自分布$p$,所以期望中使用的概率是$p(i)$,$H(p,q)$称为交叉熵。

定义

给定真实分布$q$,分布p和q在给定集合X的交叉熵定义为:
$$H(p,q) = E_p[log\frac{1}{q}] = H§ + D_{KL}(p||q)$$
其中$H§$是$p$的信息熵,$D_{KL}(p||q)$是从$q$到$p$的$K-L$散度,或者说$p$相对于$q$的相对熵。

示例

如含有4个字母$(A,B,C,D)$的数据集中,真实$p=(\frac{1}{2}, \frac{1}{2}, 0, 0)$,即$A$和$B$出现的概率均为$\frac{1}{2}$,$C$和$D$出现的概率都为$0$。使用完美的编码方案进行编码所需要的编码长度是$H§$为$1$,即只需要$1$位编码即可识别$A$和$B$。如果使用非完美编码方案$q=(\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4})$编码则得到$H(p,q)=2$,即需要$2$位编码来识别$A$和$B$。

解释

在机器学习中,交叉熵用于衡量估计的概率分布与真实概率分布之间的差异。
在信息论中,Kraft-McMillan定理建立了任何可直接解码的编码方案,为了识别一个$X$的可能值$x_i$f可以看做服从一个在$X$上的隐式概率分布$q(x_i)=2^{-l_i}$,其中$l_i$是$x_i$的编码长度,单位是bits。因此,交叉熵可以被解释为当数据服从真实分布$p$时,在假设分布$q$下得到的每个信息编码长度的期望。

性质

  • $H(p,q) \ge H§$,由吉布森不等式可以知道,该式子恒成立,当$q$等于$p$时等号成立。

to do ?交叉熵损失函数和logistic regression之间的关系。

$K-L$散度(Kullback-Leibler divergence)

介绍

$K-L$散度也叫相对熵(relative entropy),是用来衡量估计分布和真实分布之间的差异性。
$K-L$散度也叫相对熵(relative entropy),信息熵是用来度量信息量的,信息熵给出了最小熵是多少,但是信息熵并没有给出如何得到最小熵,$K-L$散度也没有给出来如何得到最小熵。但是$K-L$散度可以用来衡量用一个带参数的估计分布来近似真实数据分布时损失了多少信息,可以理解为根据非真实分布$q$得到的平均编码长度比由真实分布$p$得到的平均编码长度多出的长度叫做相对熵。

定义

离散型随机变量

给定概率分布$P$和$Q$在相同的空间中,它们的$K-L$散度定义为:
\begin{align*}
D_{KL}(P||Q) &= -\sum_iP(i)(logQ(i)) - (-\sum_iP(i)logP(i))\\
D_{KL}(P||Q) &= \sum_iP(i)(logP(i) - logQ(i))\\
D_{KL}(P||Q) &= -\sum_iP(i)log(\frac{Q(i)}{Q(i)})\\
D_{KL}(P||Q) &= \sum_iP(i)log(\frac{P(i)}{Q(i)})
\end{align*}
可以看出,$K-L$散度是概率分布$P$和$Q$对数差相对于概率分布$P$的期望。需要注意的是$D_{KL}(P||Q) \ne D_{KL}(Q||P),$因为$P$和$Q$的地位是不同的。相对熵的前半部分就是交叉熵,后半部分是相对熵。

连续型随机变量

对于连续性随机变量的分布$P$和$Q$,$K-L$散度被定义为积分:
$$D_{KL}(P||Q) = \int_{-\infty}^{\infty} p(x)log(\frac{p(x)}{q(x)})dx,$$
其中$p$和$q$代表分布$P$和分布$Q$的概率密度函数。
更一般的,$P$和$Q$表示是同一个集合$X$的概率分布,$P$相对于$Q$是绝对连续的,从$Q$到$P$的$K-L$散度定义为:
$$D_{KL}(P||Q) = \int_X log(\frac{dP}{dQ})dP$$
上式可以被写成:
$$D_{KL}(P||Q) = \int_X log(\frac{dP}{dQ})\frac{dP}{dQ}dP$$
可以看成$\frac{P}{Q}$的熵。

示例

$P$是一个二项分布,$P~(2,0.4)$,$Q$是一个离散型均匀分布,$x = 0,1,2$, 每一个取值的概率都是$p=\frac{1}{3}$。

0 1 2
$P$分布 0.36 0.48 0.16
$Q$分布 0.333 0.333 0.333

$K-L$散度的计算公式如下(使用自然对数):
\begin{align*}
D_{KL}(Q||P) &= \sum_iQ(i)ln(\frac{Q(i)}{P(i)})\\
& = 0.333ln(\frac{0.333}{0.36}) + 0.333ln(\frac{0.333}{0.48}) + 0.333ln(\frac{0.333}{0.16})\\
& = -0.02596 + (-0.12176) + 0.24408\\
& = 0.09637(nats)
\end{align*}
上面计算出来的是从$P$到$Q$的K-L散度,或者$Q$相对于$P$的相对熵。

解释

从$Q$到$P$的$K-L$散度表示为$D_{KL}(P||Q)$。在机器学习中,$D_{KL}(P||Q)$被称为信息增益。
在信息论中,$K-L$散度也被称为$P$相对于$Q$的相对熵。从信息编码角度来看,$D_{KL}(P||Q)$可以看做用估计分布$q$得到的平均编码长度比用真实分布p得到的平均编码长度多出的长度。

性质

  • 非负性,$D_{KL}(P||Q)\ge 0$,当且仅当$P=Q$时等号成立。
  • 可加性,如果$P_1,P_2$的分布是独立的,即$P(x,y) = P_1(x)P_2(y)$, $Q,Q_1,Q_2$类似,那么:
    $$D_{KL}(P||Q) = D_{KL}(P_1||Q_1) + D_{KL}(P_2||Q_2)$$
  • 不对称性,所以K-L散度不是距离,距离需要满足对称性。

条件熵

定义

给定$X$,$Y$的条件熵定义如下:
给定离散变量${\displaystyle X}$和${\displaystyle Y}$,给定${\displaystyle X}$以后,${\displaystyle Y}$的条件熵定义为每一个${\displaystyle x}$使用权值${\displaystyle p(x)}$ 的加权和${\displaystyle \mathrm {H} (Y|X=x)}$。
$$H(Y|X) \equiv \sum_{x\in\boldsymbol{X} } p(x) H(Y|X=x)$$
可以证明它等价于下式:
$$H(Y|X) = -\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X,Y)log{\frac{p(X,Y)}{p(X)}}$$

证明

\begin{align*}
H(Y|X) &\equiv \sum_{x\in\boldsymbol{X}}p(x)H(Y|X=x)\\
&=-\sum_{x\in\boldsymbol{X}}p(x)\sum_{y\in \boldsymbol{Y}}p(y|x)logp(y|x)\\
&=-\sum_{x\in\boldsymbol{X}}\sum_{y\in \boldsymbol{Y}}p(x)p(y|x)logp(y|x)\\
&=-\sum_{x\in\boldsymbol{X},y\in \boldsymbol{Y}}p(x,y)logp(y|x)\\
&=-\sum_{x\in\boldsymbol{X},y\in \boldsymbol{Y}}p(x,y)\frac{logp(x,y)}{logp(x)}\\
&=\sum_{x\in\boldsymbol{X},y\in \boldsymbol{Y}}p(x,y)\frac{logp(x)}{logp(x,y)}\\
\end{align*}

属性

  • 当且仅当$Y$完全由$X$的值确定时,条件熵为$0$。
  • 当且仅当$X$和$Y$是独立随机变量的时候,$H(Y|X) = H(Y)$。
  • 链式法则。假设一个系统由随机变量$X,Y$确定,他们有联合熵$H(X,Y)$,我们需要$H(X,Y)$个比特去表述这个系统,如果我们已经知道了$X$的值,相当于我们已经有了$H(X)$位的信息。一旦$X$已知了,我们只需要$H(X,Y)-H(X)$位去描述整个系统。所以就有了链式法则:$H(Y|X) = H(X,Y) - H(X)$。
    \begin{align*}
    H(Y|X) &= \sum_{X\in \boldsymbol{X}, Y\in \boldsymbol{Y}}p(X,Y)log{\frac{p(X)}{p(X,Y)}}\\
    &= - \sum_{X\in \boldsymbol{X}, Y\in \boldsymbol{Y}}p(X,Y)log{p(X,Y)}+\sum_{X\in \boldsymbol{X}, Y\in \boldsymbol{Y}}p(X,Y)log{p(X)}\\
    &=H(X,Y) +\sum_{X\in \boldsymbol{X}}p(X)log{p(X)}\\
    &=H(X,Y) - H(X)
    \end{align*}
  • 贝叶斯公式。$H(Y|X) = H(X|Y) - H(X) + H(Y)$。
    证明:$H(Y|X)=H(X,Y) - H(X),H(X|Y) = H(X,Y) - H(Y)$。两个式子相减就可以得到。

互信息

决策树中的信息增益指的是互信息不是KL散度。

定义

用$(X,Y)$表示空间$\boldsymbol{X}\times\boldsymbol{Y}$上的一对随机变量,他们的联合分布是$P_{(X,Y)}$,边缘分布是$P_X,P_Y)$,信息熵被定义为:
$I(X;Y) = D_{KL}(P_{(X,Y)}||P_XP_Y)$
对于离散变量:
$I(X;Y)=\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X,Y)log(\frac{p(X,Y)}{p(X)p(Y)})$
对于随机变量:
$I(X;Y)=\int_X\int_Y p(X,Y)log(\frac{p(X,Y)}{p(X)p(Y)})dxdy$

信息熵,相对熵,交叉熵,条件熵,互信息之间的关系

信息论

信息熵是对随机事件用真实的概率分布$p$进行编码的长度的期望,是最短平均编码长度。
交叉熵是对随机事件用估计的概率分布$q$按照其真实概率分布$p$进行编码的长度的期望(随机事件是从真实概率分布$p$中取的,但是用分布$q$进行编码),大于等于最短平均编码长度,只有$q$等于真实分布$q$时,才是最短编码长度。
而相对熵对随机事件用估计的概率分布$q$比用真实的概率分布$p$进行编码多用的编码长度,如果$p$和$q$相等的话,相对熵为$0$。

机器学习

在机器学习中,交叉熵通常作为一个loss函数,用来衡量真实分布$p$和估计分布$q$之间的差异。而$K-L$散度也是用来衡量两个概率分布的差异,但是多了一个信息熵项。$K-L$散度的前半部分是交叉熵,后半部分是真实分布$p$的信息熵。(一个我自己认为的不严谨的说法是相对熵算的是相对值,而交叉熵算的是绝对值)。交叉熵正比于负的对数似然估计,最小化交叉熵等价于最大化对数似然估计。
如果$p$是固定的,那么随着$q$的增加相对熵也在增加,但是如果$p$是不固定的,很难说相对熵是差异的绝对量度,因为它随着$p$的增长而改变。而在机器学习领域,真实分布$p$是固定的,随着$q$的改变,$H§$是不变的,也就是信息熵是固定的。所以,从优化的角度来说,最小化交叉熵也就是最小化了相对熵。但是在其他领域,$p$可能是变化的,最小化交叉熵和最小化相对熵就不是等价的了。

互信息和条件熵,相对熵的关系

互信息可以被等价定义为:
\begin{align*}
I(X;Y)& \equiv H(X)-H(X|Y)\\
&\equiv H(Y) - H(Y|X)\\
&\equiv H(X)+H(Y)-H(X,Y)\\
&\equiv H(X,Y)-H(X|Y)-H(Y|X)\\
\end{align*}

证明:
\begin{align*}
I(X;Y)&=\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X,Y)log(\frac{p(Y,Y)}{p(X)p(Y)})\\
&=\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X,Y)log(\frac{p(Y,Y)}{p(X)})-\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X,Y)logp(Y)\\
&=\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X)P(Y|X)logp(Y|X)-\sum_{X\in \boldsymbol{X},Y\in \boldsymbol{Y}}p(X,Y)logp(Y)\\
&=\sum_{X\in \boldsymbol{X}}p(X)(\sum_{Y\in \boldsymbol{Y}}P(Y|X)logp(Y|X))-\sum_{Y\in \boldsymbol{Y}}(\sum_{X\in \boldsymbol{X}}p(X,Y))logp(Y)\\
&=\sum_{X\in \boldsymbol{X}}p(X)H(Y|X=x)-\sum_{Y\in \boldsymbol{Y}}p(Y)logp(Y)\\
&=-H(Y|X)+H(Y)\\
&=H(Y)-H(Y|X)
\end{align*}

互信息和KL散度的联系:
从联合分布$p(x,y)$到边缘分布$p(X)p(Y)$或者条件分布$p(X|Y)p(X)$的KL散度。

参考文献(references)

1.https://en.wikipedia.org/wiki/Entropy_(information_theory)
2.https://zh.wikipedia.org/wiki/熵_(信息论)
3.https://www.zhihu.com/question/22178202/answer/49929786
4.https://en.wikipedia.org/wiki/Cross_entropy
5.https://en.wikipedia.org/wiki/Kullback-Leibler_divergence
6:https://www.zhihu.com/question/41252833/answer/108777563
7.https://www.zhihu.com/question/41252833/answer/141598211
8.https://stats.stackexchange.com/questions/265966/why-do-we-use-kullback-leibler-divergence-rather-than-cross-entropy-in-the-t-sne
9.https://en.wikipedia.org/wiki/Conditional_entropy
10.https://en.wikipedia.org/wiki/Mutual_information
11.https://zhuanlan.zhihu.com/p/26551798
12.https://blog.csdn.net/gangyin5071/article/details/82228827#4相对熵kl散度

convex optimization chapter 1 Introduction

发表于 2018-12-22 | 更新于 2019-12-17 | 分类于 凸优化

数学优化(mathematical optimization)

定义

一个数学优化问题(或者称为优化问题)通常有如下的形式:
\begin{align*}
&minimize \quad f_0(x)\\
&subject \ to \quad f_i(x) \le b_i, i = 1,\cdots,m.
\end{align*}
其中$x = (x_1, \cdots, x_m)$被称为优化变量(optimization variables), 或者决策变量(decision variables)。 $f_0(x):\mathbb{R}^n \rightarrow \mathbb{R}$是目标函数(object function), $f_i(x):\mathbb{R}^n \rightarrow \mathbb{R},i =1,\cdots,m$是约束函数(constraint functions)。 常量(constraints) $b_1,\cdots,b_m$是约束的限界(limits)或者边界(bounds), $b_i$可以为$0$,这个可以通过移项构造出新的$f_i(x)$实现。如果向量$x$使得目标函数取得最小的值,并且满足所有的约束条件,那么这个向量被称为最优解$x^{*} $。

线性优化(linear program)

目标函数和约束函数$f_0,\cdots,f_m$是线性的, 它们满足不等式:
$$f_i(\alpha x+\beta y) = \alpha f_i(x) + \beta f_i(y)$$
对于所有的$x,y \in \mathbb{R}^n $和所有的$\alpha, \beta \in\mathbb{R}$。
线性优化是凸优化的一个特殊形式, 它的目标函数和约束函数都是线性的等式。

非线性问题(non-linear problem)

如果优化问题不是线性的,就是非线性问题。只要目标函数或者约束函数至少有一个不是线性的,那么这个优化问题就是非线性优化问题。

凸问题(convex problem)

凸问题是目标函数和约束函数都是凸的的优化问题,它们满足:
$$f_i(\alpha x + \beta y) \le \alpha f_i(x) + \beta f_i(y)$$
对于所有的$x,y \in \mathbb{r}^n $和所有的$\alpha, \beta \in \mathbb{r}$且$\alpha + \beta = 1, \alpha \ge 0, \beta \ge 0$。
凸性比线性的范围更广,不等式取代了更加严格的等式,不等式只有在$\alpha$和$\beta$取一些特定值时才成立。凸优化和线性问题以及非线性问题都有交集,它是线性问题的超集(superset),是非线性问题的子集(subset)。技术上来说,nonlinear problem包括convex optimization(除了linear programming), 可以用来描述不确定是非凸的问题。
Nonlinear program > convex problem > linear problem

示例

组合优化(portfolio optimization)

变量:不同资产的投资数量
约束:预算,每个资产最大/最小投资数量,至少要得到的回报
目标:所有的风险,获利的变化

电子设备的元件大小(device sizing in electronic circuits)

变量:元件的宽度和长度
约束:生产工艺的炼制,时间要求,面积等
目标:节约能耗

数据拟合(data fitting)

变量:模型参数
约束:先验知识,参数约束条件
目标:错误率

优化问题求解(solving optimization problems)

所有的问题都是优化问题。
绝大部分优化问题我们解不出来。

一般的优化问题(general optimization problem)

  • 很难解出来。
  • 做一些compromise,比如要很长时间才能解出来,或者并不总能找到解。

一些例外(some exceptions)

  • 最小二乘问题(least-squares problems)
  • 线性规划问题(linear programming problems)
  • 凸优化问题(convex optimization problems)

最小二乘(least-squares)和线性规划(linear programming)

least-squares和linear programming是凸优化问题中最有名的两个子问题。

最小二乘问题(least-squares problems)

最小二乘问题是一个无约束的优化问题,它的目标函数是项$a_i^T x-b_i$的平方和。
\begin{align*}
minimize \quad f_0(x) &= {||Ax-b||}^2_2 \\
&=\sum_{i=1}^k (a_i^T x-b_i)^2
\end{align*}

求解(solving least-squares problems)

  • 最小二乘问题的解可以转换为求线性方程组$(A^T A)x = A^T b$的解。线性代数上我们学过该方程组的解析解为$x=(A^T A)^{-1} A^T b$。
  • 时间复杂度是$n^2 k = n*k*n+n*k+n*n*n, (k > n)$(转置,求逆,矩阵乘法)。
  • 该问题具有可靠且高效的求解算法。
  • 是一个很成熟的算法

应用(using least-squares)

很容易就可以看出来一个问题是最小二乘问题,我们只需要验证目标函数是不是二次函数,以及对应的二次型是不是正定的即可。

加权最小二乘(weighted least-squares)

加权最小二乘形式如下:
$$\sum_{i=1}^k \omega_i(a_i^T x-b_i)^2 ,$$
其中$\omega_1,\cdots,\omega_k$是正的,被最小化。 这里选出权重$\omega$来体现不同项$a_i^T x-b_i$的比重, 或者仅仅用来影响结果。

正则化(regularization)

目标函数中被加入了额外项, 形式如下:
$$\sum_{i=1}^k (a_i^T x-b_i)^2 + \rho \sum_{i=1}^n x_i^2 ,$$
正则项是用来惩罚大的$x$, 求出一个仅仅最小化第一个求和项的不出来的好结果。合理的选择参数$\rho$在原始的目标函数和正则化项之间做一个trade-off, 使得$\sum_{k=1}^i (a_i^T - b_i)^2 $和$\rho \sum_{k=1}^n x_i^2 $都很小。
正则化项和加权最小二乘会在第六章中讲到,它们的统计解释在第七章给出。

线性规划(linear programming)

线性规划问题装目标函数和约束函数都是线性的:
\begin{align*}
&minimize \quad c^T x\\
&subject \ to \quad a_i^T \le b_i, i = 1, \cdots, m.
\end{align*}
其中向量$c,a_1,\cdots,a_m \in \mathbb{R}^n $, 和标量$b_1,\cdots, b_m \in \mathbb{R}$是指定目标函数和约束函数条件的参数。

求解线性规划(solving linear programs)

  • 除了一个特例,没有解析解公式(和least-squares不同);
  • 有可靠且高效的算法实现;
  • 时间复杂度是$O(n^2 m)$, m是约束条件的个数, m是维度$;
  • 是一个成熟的方法。

应用(using linear programs)

一些应用直接使用线性规划的标准形式,或者其中一个标准形式。在很多时候,原始的优化问题没有一个标准的线性规划形式,但是可以被转化为等价的线性规划形式。比如切米雪夫近似问题(Chebyshev approximation problem)。它的形式如下:
$$minimize \quad max_{i=1,\cdots,k}|a_i^T x-b_i|$$
其中$x\in \mathbb{R}^n $是变量,$a_1,\cdots,a_k \in \mathbb{R}^n , b_1,\cdots,b_k \in \mathbb{R}$是实例化的问题参数,和least-squares相似的是,它们的目标函数都是项$a^T_i x-b_i$。不同之处在于,least-squares用的是该项的平方和作为目标函数,而Chebyshev approximation中用的是绝对值的最大值。Chebyshev approximation problem的目标函数是不可导的(max operation), least-squares problem的目标函数是二次的(quadratic), 因此可导的(differentiable)。

凸优化(Convex optimization)

凸优化问题是优化问题的一种,它的目标函数和优化函数都是凸的。
具有以下形式的问题是一种凸优化问题:
\begin{align*}
&minimize \quad f_0(x)\\
&subject \ to \quad f_i(x) \le b_i, i = 1,\cdots,m.
\end{align*}
其中函数$f_0,\cdots,f_m:\mathbb{R}^n \rightarrow \mathbb{R}$是凸的(convex), 如满足
$$f_i(\alpha x+ \beta y) \le \alpha f_i(x) + \beta f_i(y)$$
对于所有的$x,y \in \mathbb{R}^n $和所有的$\alpha, \beta \in \mathbb{R}$且$\alpha + \beta = 1, \alpha \ge 0, \beta \ge 0$。
或者:
$$f_i(\theta x+ (1-\theta) y) \le \theta f_i(x) + (1 - \theta) f_i(y)$$
其中$\theta \in [0,1]$。
课上有人问这里为$\theta$是0和1, 有没有什么物理意义,Stephen Boyd回答说这是定义,就是这么定义的。
The least-squares和linear programming problem都是convex optimization problem的特殊形式。线性函数(linear functions)也是convex,它们正处在边界上,它们的曲率(curvature)为0。一种方式是用正曲率去描述凸性。

凸优化求解(solving convex optimization problems)

  • 没有解析解;
  • 有可靠且有效的算法;
  • 时间复杂度正比于$max{n^3 , n^2 m,F},$F$是评估$f$和计算一阶导数和二阶导数的时间;
  • 有成熟的方法,如interior-point methods。

凸优化的应用(using convex optimization)

将实际问题形式化称凸优化问题。

非线性优化(Nonlinear optimization)

非线性优化

非线性优化用来描述目标函数和约束函数都是非线性函数(但不是凸的)优化问题。因为凸优化问题包括least-squares和linear programming, 它们是线性的。刚开始给出的优化问题就是非线性优化问题,目前没有有效的方法解该问题。目前有一些方法来解决一般的非线性问题,但是都做了一些compromise。

局部优化(local optimization)

局部优化是非线性优化的一种解法,compromise是寻找局部最优点,而不是全局最优点,在可行解附近最小化目标函数,不保证能得到一个最小的目标值。
局部优化需要随机初始化一个初值,这个初值很关键,很大程度的影响了局部解得到的目标值, 也就是说是一个初值敏感的算法。关于初始值和全局最优值距离有多远并没有很多有用的信息。局部优化对于算法的参数值很敏感,需要根据具体问题去具体调整。
使用局部优化的方法比解least-squares problems, linear program, convex optimization problem更有技巧性,因为它牵扯到算法的选择,算法参数的选择,以及初值的选取。

全局优化(global optimization)

全局优化也是非线性优化的一种解法, 在全局优化中,优化目标的全局最优解被找到, compromise是效率。

凸优化问题在非凸优化问题中的应用(role of convex optimization in nonconvex problems)

初始化局部优化(initialization for local optimization)
用于非凸优化的凸的启发式搜索(convex heuristics for nonconvex optimization)
全局最优的边界(bounds for global optimization)

大纲(outline)

理论(part one: Theory)

第一部分是理论,给出一些概念和定义,第一章是Introduction, 第二章和第三章分别介绍凸集(convex set)和凸函数(convex function), 第四章介绍凸优化问题, 第五章引入拉格朗日对偶性。

应用(part two: Applications)

第二部分主要给出凸优化在一些领域的应用,如概率论与数理统计,经济学,计算几何以及数据拟合等领域。
凸优化如何应用在实践中。

算法(part three: Algorithms)

第三部分给出了凸优化的数值解法,如牛顿法(Newton’s algorithm)和内点法(interior-point)。
第三部分有三章,分别包含了无约束优化,等式约束优化和不等式约束优化。章节之间是递进的,解一个问题被分解为解一系列简单问题。二次优化问题(包括,如least-squares)是最底层的基石,它可以通过线性方程组精确求解。牛顿法,在第十章和第十一章介绍到,是下个层次,无约束问题或者等式约束问题被转化成一系列二次优化问题的求解。第十一章介绍了内点法,是最顶层, 这些方法将不等式约束问题转化为一系列无约束或者等式约束的问题。

参考文献

1.stephen boyd. Convex optimization

latex笔记

发表于 2018-12-22 | 更新于 2019-12-17 | 分类于 工具

命令重命名

在写博客时也能用

1
2
3
\newcommand{\mmm}{\mathbf}
\mmm{x}
\bf{x}

$\newcommand{\mmm}{\mathbf}$
$\mmm{x}$
$\bf{x}$

常用Latex符号

$\arg$ \arg
$\max$ \max
$\lim$ \lim

上标

$\bar{x}$ \bar{x}
$\hat{x}$ \hat{x}

等号

$\sim$ \sim
$\simeq$ \simeq
$\approx$ \approx
$\cong$ \cong
$\equiv$ \equiv
正比于 $\propto$ \propto

各种乘法

$\times$ \times
$*$ *
$\cdot$ \cdot
$\bullet$ \bullet
$\otimes$ \otimes
$\circ$ \circ
$\odot$ \odot

上下花括号

$\overbrace{x+y}^{1+2}=\underbrace{z}_3$ \overbrace{x+y}^{1+2}=\underbrace{z}_3

括号

\left(\frac{1}{2}\right) $\left(\frac{1}{2} \right)$
\left[\frac{1}{2} \right] $\left[\frac{1}{2} \right]$
\left\{\frac{1}{2} \right\} $\left\{\frac{1}{2} \right\}$

1
\begin{cases}x=1\\\\y=x\end{cases}

$$\begin{cases}x=0\\y=x\end{cases}$$

矩阵

1
\begin{matrix}1&2\\\\3&4\end{matrix}

$$\begin{matrix}1&2\\3&4\end{matrix}$$

1
\begin{pmatrix}1&2\\\\3&4\end{pmatrix}

$$\begin{pmatrix}1&2\\3&4\end{pmatrix}$$

1
\begin{bmatrix}1&2\\\\3&4\end{bmatrix}

$$\begin{bmatrix}1&2\\3&4\end{bmatrix}$$

1
\begin{Bmatrix}1&2\\\\3&4\end{Bmatrix}

$$\begin{Bmatrix}1&2\\3&4\end{Bmatrix}$$

1
\begin{vmatrix}1&2\\\\3&4\end{vmatrix}

$$\begin{vmatrix}1&2\\3&4\end{vmatrix}$$

1
\begin{Vmatrix}1&2\\\\3&4\end{Vmatrix}

$$\begin{Vmatrix}1&2\\3&4\end{Vmatrix}$$

希腊字母

$\alpha$ \alpha
$\Alpha$ \Alpha
$\beta$ \beta
$\Beta$ \Beta
$\Delta$ \Delta
$\delta$ \delta
$\theta$ \theta
$\Theta$ \Theta
$\gamma$ \gamma
$\Gamma$ \Gamma
$\eta$ \eta
$\Eta$ \Eta
$\lambda$ \lambda
$\Lambda$ \Lambda
$\sigma$ \sigma
$\Sigma$ \Sigma
$\pi$ \pi
$\Pi$ \Pi
$\mu$ \mu
$\Mu$ \Mu
$\psi$ \psi
$\Psi$ \Psi
$\epsilon$ \epsilon
$\varepsilon$ \varepsilon
$\phi$ \phi
$\varphi$ \varphi
$\Phi$ \Phi
$\nabla$ \nabla
$\zeta$ \zeta
$\xi$ \xi

字体

粗体
$\mathbf{A}$ \mathbf{A}
$\boldsymbol{A}$ \boldsymbol{A}
$\mathit{A}$ \mathit{A}
$\mathrm{A}$ \mathrm{A}
花体
$\mathcal{A}$ \mathcal{A}
$\mathcal{S}$ \mathcal{S}

数学运算

求积$\prod$ \prod
求和$\sum$ \sum
积分$\int$ \int
根号$\sqrt{x}$ \sqrt{x}
根号$\sqrt[4]{y}$ \sqrt[4]{y}
分数$(\frac{1}{2})$ (\frac{1}{2})
分数$\left(\frac{1}{2}\right)$ \left(\frac{1}{2}\right)
无穷$\infty$ \infty
期望$\mathbb{E}$ \mathbb{E}
范数$\Vert$ \Vert
$\mathbb{\pi}$ \mathbb{\pi} # 可以看出来,没有起作用,因为mathbb没有只支持大写字母。
$\pm$ \pm
$\mp$ \mp

集合

真含于$\subset$ \subset
含于$\subsetneqq$ \subsetneqq
真包含$\supset$ \supset
包含$\supsetneqq$ \supsetneqq
交$\cap$ \cap
并$\cup$ \cup
属于$\in$ \in
$\succ$ \succ
$\succeq$ \succeq
$\prec$ \prec
$\preceq$ \preceq
空集$\emptyset$ \emptyset

谓词逻辑

否定$\neg$ \neg
任意$\forall$ \forall
存在$\exists$ \exists
合取$\wedge$ \wedge
析取$\vee$ \vee

空格

$a\qquad b$ a\qquad b
$a\quad b$ a\quad b
$a\ b$ a\ b
$a;b$ a;b
$a,b$ a,b
$ab$ ab
$a!b$ a!b

其他

长竖线$\big|$ \big|
长竖线$\Big|$ \Big|
长竖线$\bigg|$ \bigg|
长竖线$\Bigg|$ \Bigg|
双箭头$\Leftrightarrow$ \Leftrightarrow
左箭头$\leftarrow$ \leftarrow
右箭头$\rightarrow$ \rightarrow
上划线$\overline{A}$ \overline{A}
下划线$\underline{A}$ \underline{A}
$\backslash$ \backslash
$\sim$ \sim

列表

有序列表

1
2
3
4
5
\begin{enumerate}
\item First.
\item Second.
\item Third.
\end{enumerate}

效果如下:

  1. First.
  2. Second.
  3. Third.

无序列表

1
2
3
4
5
\begin{itemize}
\item {First.}
\item {Second.}
\item {Third.}
\end{itemize}

效果如下:

  • First.
  • Second.
  • Third.

跨多行公式对齐

注意:不要忘了每行后面的两个\

示例1

1
2
3
4
5
6
\begin{align*}
f(x) &= (3 + 4)\^2 + 4\\
&= 7\^2 + 4\\
&= 49 + 4\\
&= 53
\end{align*}

效果如下:
\begin{align*}
f(x) &= (3 + 4)^2 + 4\\
&= 7^2 + 4\\
&= 49 + 4\\
&= 53
\end{align*}

示例2

1
2
3
4
5
\begin{align*}
v &= R + \gamma Pv\\
(1-\gamma P) &= R\\
v &= (1 - \gamma P)\^{-1} R
\end{align*}

\begin{align*}
v &= R + \gamma Pv\\
(1-\gamma P) &= R\\
v &= (1 - \gamma P)^{-1} R
\end{align*}

参考文献

1.http://blog.huangyuanlove.com/2018/02/27/LaTeX笔记-六/
2.https://blog.csdn.net/xxzhangx/article/details/52778539
3.https://blog.csdn.net/hunauchenym/article/details/7330828
4.http://geowu.blogspot.com/2012/10/latex_25.html
5.https://math.stackexchange.com/questions/20412/element-wise-or-pointwise-operations-notation
6.https://xilazimu.net/

reinforcement learning an introduction 第3章笔记

发表于 2018-12-21 | 更新于 2019-12-17 | 分类于 强化学习

马尔科夫过程(markov process)、马尔科夫链(markov chain)

马尔科夫过程或者马尔科夫链(markov chain)是一个tuple $\lt S,P\gt$,其中S是一个有限(或者无限)的状态集合,P是状态转移矩阵(transition probability matrix)或马尔科夫矩阵(markov matrix),$P_{ss’}= P[S_{t+1} = s’|S_t = s]$.

马尔科夫奖励过程(markov reward process)

马尔科夫奖励过程是一个tuple $\lt S,P,R,\gamma\gt$,和马尔科夫过程相比,它多了一个奖励R,R和某个具体的状态相关,MRP中的reward只和state有关,和action无关。
S是一个(有限)状态的集合。
P是一个状态转移概率矩阵。
R是一个奖励函数$R = \mathbb{E}[R_{t+1}|S_t = s]$, 这里为什么是t+1时刻的reward?这仅仅是一个约定,为了描述RL问题中涉及到的observation,action,reward比较方便。这里可以理解为离开这个状态才能获得奖励而不是进入这个状态即获得奖励。如果改成$R_t$也是可以的,这时可以理解为进入这个状态获得的奖励。
$\gamma$称为折扣因子(discount factor), $\gamma \epsilon [0,1]$.为什么引入$\gamma$,David Silver的公开课中提到了四个原因:(1)数学上便于计算回报(return);(2)避免陷入无限循环;(3)长远利益具有一定的不确定性;(4)符合人类对眼前利益的追求。

奖励(reward)

每个状态s在一个时刻t立即可得到一个reward,reward的值需要由环境给出,这个值可正可负。目前的强化学习算法中reward都是人为设置的。

回报(return)

回报是累积的未来的reward,其计算公式如下:
$$G_t = R_{t+1} + R_{t+2} + … = \sum_{k=0}^{\infty} {\gamma^k R_{t+k+1}} \tag{1}$$
它是一个马尔科夫链上从t时刻开始往后所有奖励的有衰减(带折扣因子)的总和。

值函数(value function)

值函数是回报(return)的期望(expected return), 一个MRP过程中某一状态的value function为从该状态开始的markov charin return的期望,即$v(s) = \mathbb{E}[G_t|S_t=s]$.
MRP的value function和MDP的value function是不同的, MRP的value function是对于state而言的,而MDP的value function是针对tuple $\lt$state, action$\gt$的。
这里为什么要取期望,因为policy是stotastic的情况时,在每个state时,采取每个action都是可能的,都有一定的概率,next state也是不确定的了,所以value funciton是一个随机变量,因此就引入期望来刻画随机变量的性质。
为什么在当前state就知道下一时刻的state了?对于有界的RL问题来说,return是在一个回合结束时候计算的;对于无界的RL问题来说,由于有衰减系数,只要reward有界,return就可以计算出来。

马尔科夫奖励过程的贝尔曼方程(bellman equation for MRP)

\begin{align*}
v(s) &= \mathbb{E}[G_t|S_t = s]\\
&= \mathbb{E}[R_{t+1} + \gamma R_{t+2} + … | S_t = s]\\
&= \mathbb{E}[R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + …|S_t = s]\\
&= \mathbb{E}[R_{t+1} + \gamma G_{t+1} |S_t = s]\\
&= \mathbb{E}[R_{t+1} + \gamma v(S_{t+1})|S_t = s]\\
v(s) &= \mathbb{E}[R_{t+1} + \gamma v(S_{t+1})|S_t = s]
\end{align*}
v(s)由两部分组成,一部分是immediate reward的期望(expectation),$\mathbb{E}[R_{t+1}]$, 只与当前时刻state有关;另一部分是下一时刻state的value function的expectation。如果用s’表示s状态下一时刻的state,那么bellman equation可以写成:
$$v(s) = R_s + \gamma \sum_{s’ \epsilon S} P_{ss’}v(s’)$$
我们最终的目的是通过迭代使得t轮迭代时的v(s)和第t+1轮迭代时的v(s)相等。将其写成矩阵形式为:
$$v_t = R + \gamma P v_{t+1}$$
$$(v_1,v_2,…,v_n)^T = (R_1,R_2,…,R_n)^T + \gamma \begin{bmatrix}P_{11}&P_{12}&…&P_{1n}\\P_{21}&P_{22}&…&P_{2n}\\&&…&\\P_{n1}&P_{n2}&…&P_{nn}\end{bmatrix} (v_1,v_2,…,v_n)^T $$
MRP的Bellman方程组是线性的,可以直接求解:
\begin{align*}
v &= R + \gamma Pv\\
(1-\gamma P) &= R\\
v &= (1 - \gamma P)^{-1} R
\end{align*}
可以直接解方程,但是复杂度为$O(n^3)$,对于大的MRP方程组不适用,可以通过迭代法求解,常用的迭代法有动态规划,蒙特卡洛算法和时序差分算法等求解(动态规划是迭代法吗?)

马尔科夫决策过程(markov decision process)

马尔科夫决策过程,比markov reward process多了一个A,它也是一个tuple $\lt S,A,P,R,\gamma\gt$, 在MRP中奖励R仅仅和状态S相关,在MDP中奖励R和概率P对应的是某个状态S和某个动作A的组合。
\begin{align*}
P_{ss’}^a &= P[S_{t+1} = s’ | S_t = s, A_t = a]\\
R_s^a &= \mathbb{E}[R_{t+1} | S_t = s, A_t = a]
\end{align*}
这里的reward不仅仅与state相关,而是与tuple $\lt state,action\gt$相关。

回报

MDP中的$G_t$和式子$(1)$的$G_t$是一样的,将$G_t$写成和后继时刻相关的形式如下:
\begin{align*}
G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + …\\
&= R_{t+1} + \gamma (R_{t+2} + \gamma^1 R_{t+3} + \gamma^2 R_{t+4} + …)\\
&= R_{t+1} + \gamma G_{t+1} \tag{2}
\end{align*}
这里引入$\gamma$之后,即使是在continuing情况下,只要$G_t$是非零常数,$G_t$也可以通过等比数列求和公式进行计算,即:
$$G_t = \sum_{k=1}^{\infty} \gamma^k = \frac{1}{1-\gamma} \tag{3}$$

策略(policy)

策略$\pi$的定义:给定状态时采取各个动作的概率分布。
$$\pi(a|s) = P[A_t = a | S_t = a] \tag{4}$$

值函数(value function)

这里给出的是值函数的定义,就是这么定义的。
MDP的值函数有两种,状态值函数(state value function)和动作值函数(action value function), 这两种值函数的含义其实是一样的,也可以相互转换。具体来说, 值函数定义为给定一个policy $\pi$,得到的回报的期望(expected return)。
一个MDP的状态s对应的值函数(state value function) $v_{\pi}(s)$是从状态s开始采取策略$\pi$得到的回报的期望。
\begin{align*}
v_{\pi}(s) &= \mathbb{E}_{\pi}[G_t|S_t = s]\\
&=\mathbb{E}_{\pi}[\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1}|S_t=s] \tag{5}
\end{align*}
这里的$G_t$是式子(2)中的回报。
一个MDP过程中动作值函数(action value function) $q_{\pi}(s,a)$是从状态s开始,采取action a,采取策略$\pi$得到的回报的期望。
<action value function $q_{\pi}(s,a)$ is the expected return starting from states, taking action a, and then following policy \pi.>
\begin{align*}
q_{\pi}(s,a) &= \mathbb{E}_{\pi}\left[G_t | S_t = s, A_t = a\right]\\
&= \mathbb{E}_{\pi}\left[\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1}|S_t=s, A_t=a\right] \tag{6}
\end{align*}

状态值函数(state value function)

\begin{align*}
v_{\pi}(s) &= \sum_{a \epsilon A} \pi(a|s) q_{\pi} (s,a) \tag{7}\\
v_{\pi}(s) &= \sum_a \pi(a|s)\sum_{s’,r}p(s’,r|s,a) \left[r + \gamma v_{\pi}(s’) \right] \tag{8}\\
\end{align*}
式子$(7)$是$v(s)$和$q(s,a)$的关系,式子$(8)$是$v(s)$和它的后继状态$v(s’)$的关系。
式子$(8)$的推导如下:
\begin{align*}
v_{\pi}(s) &= \mathbb{E}_{\pi}[G_t|S_t = s]\\
&= \mathbb{E}_{\pi}\left[R_{t+1}+\gamma G_{t+1}|S_t = s\right]\\
&= \sum_a \pi(a|s)\sum_{s’}\sum_rp(s’,r|s,a) \left[r + \gamma \mathbb{E}_{\pi}\left[G_{t+1}|S_{t+1}=s’\right]\right]\\
&= \sum_a \pi(a|s)\sum_{s’,r}p(s’,r|s,a) \left[r + \gamma v_{\pi}(s’) \right]\\
\end{align*}

动作值函数(action value function)

\begin{align*}
q_{\pi}(s,a) &= \sum_{s’}\sum_r p(s’,r|s,a)(r + \gamma v_{\pi}(s’)) \tag{9}\\
q_{\pi}(s,a) &= \sum_{s’}\sum_r p(s’,r|s,a)(r + \gamma \sum_{a’}\pi(a’|s’)q(s’,a’)) \tag{10}\\
\end{align*}
式子$(9)$是$q(s,a)$和$v(s)$的关系,式子$(10)$是$q(s,a)$和它的后继状态$q(s’,a’)$的关系。
以上都是针对MDP来说的,在MDP中,给定policy $\pi$下,状态s下选择a的action value function,$q_{\pi}(s,a)$类似MRP里面的v(s),而MDP中的v(s)是要考虑在state s下采率各个action后的情况。

贝尔曼期望方程(Bellmam expectation equation)

\begin{align*}
v_{\pi}(s) &= \mathbb{E}_{\pi}[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t = s] \tag{11}\\
v_{\pi}(s) &= \mathbb{E}_{\pi}\left[q_{\pi}(S_t,A_t)|S_t=s,A_t=a\right]\tag{12}\\
q_{\pi}(s,a)&= \mathbb{E}_{\pi}\left[R_{t+1} + \gamma v_{\pi}(S_{t+1}) |S_t=s,A_t=a\right]\tag{13}\\
q_{\pi}(s,a) &= \mathbb{E}_{\pi}[R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t = s, A_t = a] \tag{14}
\end{align*}

矩阵形式

\begin{align*}
v_{\pi} &= R^{\pi} + \gamma P^{\pi} v_{\pi}\\
v_{\pi} &= (I-\gamma P^{\pi} )^{-1} R^{\pi}
\end{align*}

最优策程的求解(how to find optimal policy)

最优价值函数(optimal value function)

$v_{*} = \max_{\pi}v_{\pi}(s)$,从所有策略产生的state value function中,选取使得state s的价值最大的函数
$q_{*}(s,a) = \max_{\pi} q_{\pi}(s,a)$,从所有策略产生的action value function中,选取使$\lt s,a\gt$价值最大的函数
当我们得到了optimal value function,也就知道了每个state的最优价值,便认为这个MDP被解决了

最优策略(optimal policy)

对于每一个state s,在policy $\pi$下的value 大于在policy $\pi’$的value, 就称策略$\pi$优于策略$\pi’$, $\pi \ge \pi’$ if $v_{\pi}(s) \ge v_{\pi’}(s)$, 对于任意s都成立
对于任何MDP,都满足以下条件:

  1. 都存在一个optimal policy,它比其他策略好或者至少相等;
  2. 所有的optimal policy的optimal value function是相同的;
  3. 所有的optimal policy 都有相同的 action value function.

寻找最优策略

寻找optimal policy可以通过寻找optimal action value function来实现:
$${\pi}_{*}(a|s) =
\begin{cases}1, &if\quad a = \arg\max\ q_{*}(s,a)\\0, &otherwise\end{cases}$$

贝尔曼最优方程(bellman optimal equation)

*号表示最优的策略。

最优状态值函数(state value function)

\begin{align*}
v_{*}(s) &= \max_a q_{*}(s,a)\\
&= \max_a\mathbb{E}_{\pi_{*}}\left[G_t|S_t=s,A_t=a\right]\\
&= \max_a\mathbb{E}_{\pi_{*}}\left[R_{t+1}+\gamma G_t|S_t=s,A_t=a\right]\\
&= \max_a\mathbb{E}\left[R_{t+1} +\gamma v_{*}(S_{t+1})|S_t=s,A_t=a\right]\\
&= \max_a \left[\sum_{s’,r} p(s’,r|s,a)(r+\gamma v_{*}(s’) )\right] \tag{15}\\
\end{align*}

最优动作值函数(action value function)

\begin{align*}
q_{*}(s,a) &= \sum_{s’,r} p(s’,r|s,a) (r + \gamma v_{*}(s’))\\
&= \sum_{s’,r} p(s’,r|s,a) (r + \gamma \max_{a’} q_{*}(s’,a’))\\
&=\mathbb{E}\left[R_{t+1}+\gamma \max_{a’}q_{*}(S_{t+1},a’)|S_t=s,A_t=a \right]\tag{16}\\
\end{align*}

贝尔曼最优方程的求解(solution to Bellman optimal equation)

Bellman equation和Bellman optimal equation相比,一个是对于给定的策略,求其对应的value function,是对一个策略的估计,而bellman optimal equation是要寻找最优策略,通过对action value function进行贪心。
Bellman最优方程是非线性的,没有固定的解决方案,只能通过迭代法来解决,如Policy iteration,value iteration,Q-learning,Sarsa等。

参考文献

1.http://incompleteideas.net/book/the-book-2nd.html
2.https://www.bilibili.com/video/av32149008/?p=2

linux 常见问题(不定期更新)

发表于 2018-12-20 | 更新于 2019-12-17 | 分类于 linux

问题1 Undefined reference to pthread_create in Linux

在阅读自然语言处理的一篇论文时,读到了bype pair encoding(bpe)算法。在github找到了一个实现fastBPE, 算法是用C++写的,在编译的过程中遇到了问题"Undefined reference to pthread_create in Linux",

terminal下解决方案

查阅资料了解到pthread不是Linux操作系统默认的库函数,所以需要在编译的时候将pthread链接该库函数,后来在看fastBPE的文档时发现文档中已经有说明:
Compile with:

1
g++ -std=c++11 -pthread -O3 fast.cc -o fast

codeblocks下解决方案

上面给出的方案是使用gcc在terminal进行编译时加入静态库,但是对于不习惯在命令行使用gdb进行调试的人来说没有用。
在codeblocks中,如果要链接静态库,找到Settings --> Compiler… --> Linker settings,点击add,添加相应的库函数即可。

参考文献

1:https://stackoverflow.com/questions/1662909/undefined-reference-to-pthread-create-in-linux
2:https://blog.csdn.net/zhaoyue007101/article/details/7705753

随笔

发表于 2018-12-18 | 更新于 2019-12-17 | 分类于 工具

目的

看到别人在本科,硕士阶段记录了很多自己学到的东西,再看看自己,本科四年什么都没留下,现在进入实验室已经一年多了,没有沉淀下来,本来是很好的一手牌,被自己打的稀烂。今天就下定决心搭建一个自己的博客,用来记录自己的收获,一方面防止自己忘记,另一方面也确定自己是否已经懂了,能否把一个东西讲解出来。

恩!

爱你呦,荟荟~

1…323334
马晓鑫爱马荟荟

马晓鑫爱马荟荟

记录硕士三年自己的积累

337 日志
26 分类
77 标签
RSS
GitHub E-Mail
© 2022 马晓鑫爱马荟荟
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v6.6.0