mxxhcm's blog

  • 首页

  • 标签

  • 分类

  • 归档

orthogonality(正交性)

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

正交性(Orthogonality)

这一章主要介绍正交性相关的内容。包括正交向量,投影,正交子空间,正交基以及如果求一组正交基,最后介绍QR分解求线性方程组。

正交向量(Orthogonal vectors)

给定向量$v,w$,如果$v^T w = 0$,那么这两个向量就是正交向量。

正交子空间(Orthogonal subspaces)

如果对于$\forall v\in V, \forall w\in W$,都有$v^T w = 0$,那么我们称subspaces $V,W$是orthogonal subspaces。

Column space, nullsapce, row space, left nullspace的正交性

  1. Row space和nullspace是正交的。
    举个例子来证明吧,有$A= \begin{bmatrix}c1&c2\end{bmatrix} = \begin{bmatrix}r1\\r2\end{bmatrix} = \begin{bmatrix}1&1&2&4\\0&0&1&3\end{bmatrix}$
    因为row space是row vector的linear combination,即$c_1 r_1+c_2 r_2$,而nullspace是$Ax=0$的所有解,即$x_1 c_1+x_2c_2 = 0$,这里的$0$是向量,可以推出来$r_1x = 0, r_2x =0 $,所以$c_1 r_1 x =0, c_2 r_2x = 0$,也就是说row space中的任意vector和nullspace中的vector都正交。
    使用数值方法证明:
    $x$表示$Ax=0$中的$x$,$A^Ty$表示row space,那么有
    $$x^T (A^T y) = (Ax)^T y = 0^T y = 0$$

  2. Column space和nullspace是正交的。

正交补(Orthogonal complements)

定义

如果一个subspace包含所有和subspace $V$正交的向量,称这个subspace是$V$的orthogonal complements(正交补)。

示例

Nullspace是row space的正交补($\mathbb{R}^n$上)。
Left nullspace是column space的正交补($\mathbb{R}^m$上)。

投影(Projections)

如下图所示,左边是投影到一条直线上的结果,右边是投影到一个subspace上的结果
projection

$A^T A$

$A^T A$是可逆的,当且仅当$A$有linear independent columns时
证明:
$A^TA$是一个$n\times n$的方阵,$A$的nullspace和$A^T A$的nullspace相等。
如果$Ax= 0$,那么$A^T Ax = 0$,所以$x$也在$A^T A$的nullspace中。如果$A^T Ax=0$,那么我们要证明$Ax=0$,在左右两边同乘$x^T $得$x^T A^T Ax=0$,则$(AX)^T AX =0$,所以$\vert Ax\vert^2 =0$。也即是说如果$A^T Ax=0$,那么$Ax$的长度为$0$,也就是$Ax=0$。
如果$A^T A$的columns是独立的,也就是说nullspace为空,所以$A$的columns也是独立的;同理,如果$A$的columns是独立的,那么$A^T $的columns也是独立的。

最小二乘法(Least Squares Approximations)

$Ax=b$无解的情况,通常是等式个数大于未知数的个数,即$m\gt n$,$b$不在$A$的column space内。我们的目标是想让$e=b-Ax$为$0$,当这个目标不能实现的时候,可以在方程左右两边同时乘上$A^T$,求出一个近似的$\hat{x}$:
$$A^TAx = A^Tb$$
如何推导出这个结果,有以下几种方法:

最小化误差

  1. 几何上
    $Ax=b$的最好近似是$A\bar{x} = p$,最小的可能误差是$e=b-p$,$b$上的点的投影都在$p$上,而$p$在$A$的column space上,从直线拟合的角度上来看,$\bar{x}$给出了最好的结果。

  2. 代数上
    $b=p+e$,$e$在$A$的nullspace上,$Ax=b=p+e$我们解不出来,$A\bar{x} = p$我们可以解出来。

  3. 积分

直线拟合

抛物线拟合

正交基(Orthogonal Bases)

定义

一组向量$q_1, q_2, \cdots , q_n$如果满足以下条件:
$$q_i^T q_j\begin{cases}0, i\neq j \\1, i=j\end{cases}$$
我们称这一组向量是正交向量,由正交column vectors构成的矩阵用一个特殊字母$Q$表示。如果这组正交向量同时还是单位向量,我们叫它单位正交向量。如果columns仅仅正交,而不是单位向量的话,点乘仍然会得到一个对角矩阵,但是它的性质没有那么好。

性质

  1. 满足$Q^T Q=I$。
  2. 如果$Q$是方阵,那么$Q^T = Q^{-1}$,即转置等于逆。
  3. 如果$Q$是方阵的话,$QQ^T = Q^T Q= I$。
  4. 如果$Q$是rectangular的话,$QQ^T =I$不成立,而$Q^T Q =I$依然成立。

用$Q$取代$A$进行正交投影

假设矩阵$A$的所有column vectors都是orthonormal的,$a$就变成了$q$,$A^T A$就变成了$Q^T Q=I$,所以$Ax=b$的解变成了$\bar{x} = Q^T b$,而投影矩阵变成了$P=QQ^T $。

Gram-Schmidi正交化

Gram-Schmidt正交化过程就相当于是在不断的进行投影,这个方法的想法是从$n$个独立的column vector出发,构建$n$个正交向量,然后再单位化。拿$3$个过程举个例子。用$a,b,c$表示初始的$3$个独立向量,$A,B,C$表示三个正交向量,$q_1, q_2,q_3$表示三个正交单位向量。
第一个正交向量,直接对第一个向量单位化
$$A=a, q_1 = \frac{A}{\vert A\vert}$$
第二个正交向量,将第二个向量投影到第一个向量上,计算出一个和第二个向量正交的向量。
$$B=b-\frac{A^T B}{A^T A}A , q_2 = \frac{B}{\vert B\vert}$$
第三个正交向量,将第三个向量分别投影到第一个和第二个正交向量上,计算处第三个正交向量。
$$C=c - \frac{A^T C}{A^T A}A - \frac{B^T C}{B^T B}B , q_2 = \frac{C}{\vert C\vert}$$
gram_schmidi

QR分解

假设一个矩阵$A$的列向量分别为$a,b,c$,最后经过一个三角矩阵$R$化简成一个正交矩阵$Q$,相应的列向量分别为$q_1,q_2,q_3$。
首先根据Gram-Schmidi计算处一组正交基$Q = \begin{bmatrix}q_1&q_2&q_3 \end{bmatrix}$。根据$A$,能直接计算出$Q$,那么如何得到$R$呢?我们假设$A=QR$,在$A$和$Q$已知的情况下,并且满足$Q^T Q = I$,我们可以左右两边同时乘上$Q^T $,就有$Q^T A = Q^T QR = R$,即$R=Q^T A$。

参考文献

1.MIT线性代数公开课

linear algebra vector spaces和subspaces(向量空间和子空间)

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

向量空间和子空间(vector spaces and subspaces)

这一件介绍和space相关的概念以及很多其他的基础知识。

线性组合(Linear of Combinations)

线性组合有两种:加法和数乘。

定义

如果$v$和$w$是column vectors,$c,d$是标量,那么$cv+dw$是$v$和$w$的线性组合。

向量空间(Vector Spaces)

Vector spaces是向量的集合,通常表示为$\mathbb{R}^1 , \mathbb{R}^2 , \mathbb{R}^n $。$\mathbb{R}^5 $表示所有$5$维的column vectors。

定义

Space $\mathbb{R}^n $是所有$n$维column vectors $v$组成的space。

子空间(Subspaces)

定义

某个vector space的subspace是满足以下条件的vectors的集合,如果$v$和$w$是subspace中的vectors,并且$c$是任意的salar,

  1. $v+w$还在subspace中
  2. $cv$还在subspace

也就是说subspace是对加法和数乘封闭的vectors set,所有的线性组合仍然还在这个subspace。

例子

  1. 所有的subspace都包括zero vector。
  2. 通过原点的直线都是subspace。
  3. 包含$v$和$w$的subspace一定得包含所有的线性组合$cv+dw$
  4. 给定两个subspace $S,T$
    1. $S\cup T$不是一个subspace
    2. $S\cap T$是一个subspace,证明
      假设$v,w$是$S\cap T$的,则$v,w\in S, v,w\in T$,$v+w\in S, v+w\in T, cv+dw \in S, cv+dw \in T$,所以$cv+dw \in S\cap T$

列空间(Column Space)

创建矩阵的subspace

取矩阵$A$的column vectors,计算它们的所有线性组合,借得到了一个subspace

定义

给定矩阵$A$,$A$的所有column vectors的linear combinations组成的subspace称为column space,用$C(A)$表示。$C(A)$由$Ax$的所有可能取值构成。

性质

  1. 当且仅当$b$在$A$的column space中,$Ax=b$才有解。
  2. 假设$A$是$m\times n$矩阵,$A$的column space是$\mathbb{R}^m $的subspace。

零空间(Nullspace)

定义

矩阵$A$的nullspace是所有$Ax=0$的解构成的vector space,用$N(A)$表示。$N(A)$是$\mathbb{R}^n $的subspace,因为$x$是在$\mathbb{R}^n $中的$n$维向量,所以是$\mathbb{R}^n $的subspace。

special solution,主元,自由变量(Special solution, Pivot variables和free variables, Pivot columns和free columns)

special solution

如果方程数量小于未知数数量,那么这个方程(组)有无穷多个解,为了表示这个方程组,指定special solution来表示它。
如方程组
\begin{cases}x_1+2x_2=0\\3x_1+6x_2 = 0 \end{cases}
上面的方程组其实是一个方程$x_1+2x_2=0$,两个未知数。随便的选择一个变量,让它的值为$1$,求出另一个$x$。比如令$x_2 = 1$,那么$x_1 = -2$。我们就称$(x_1=-2,x_2=1)$为一个special solution。
再给一个例子,$x+2y+3z=0$,有两个special solution,随机选择两个变量,分别让其中一个取$1$,剩余的另一个取$0$,求解出来最后的一个变量。

主元,主元列,自由变量,自由列

我们通常把选定的两个变量叫做free variables,其他的那些变量叫做pivot variables。比如第一个例子中,$x_2$是free variable,$x_1$是pivot variable。第二个例子中,$x_2, x_3$是free variables,$x_1$是pivot variables。主元所在的column叫做pivot column,free variables所在的column叫做free columns。

秩(rank)

矩阵$A$的秩(rank),用$r(A)$表示,它等于pivots的数量,等于column space的维度,等于row space的维度。

消元法解$Ax=0$

两个步骤:

  1. 将矩阵$A$化为三交矩阵$U$
  2. 解$Ux=0$或者$Rx=0$

示例

矩阵$A= \begin{bmatrix}1&1&2&3\\2&2&8&10\\ 3&3&10&13\end{bmatrix}$化成三角矩阵为:$U= \begin{bmatrix}1&1&2&3\\0&0&4&4\\ 0&0&0&0\end{bmatrix}$,第一列和第三列是pivot columns,第二列和第四列是free columns,然后求出special solutions,再计算出通解。
对于每个free variabled都有一个special solution,$Ax=0$共有$r$个pivots,以及$n-r$个free variables,$A$的nullspace $N(A)$包含$n-r$个special solutions,$N(A)$具有如下的形式:
$$N = \begin{bmatrix} -F\\I\end{bmatrix}$$
其中$F$为free variables取特值的时候,pivtos的取值,$I$为free variables的取值。

行简化阶梯形矩阵(Thre reduced row echelon matrix)

行简化阶梯形矩阵是pivot colunmn恰好构成单位矩阵的矩阵,如:
$$U = \begin{bmatrix}1&1&0&1\\0&0&1&1\\0&0&0&0\end{bmatrix}$$
所有的pivots都是$1$,主元所在列的其余位置都是$0$。
行简化阶梯形矩阵给出了很多有用信息:

  1. pivot columns
  2. pivot rows
  3. pivots是$1$
  4. zero rows显示这一行是其他rows的lihear combination
  5. free columns

$Ax=b$的通解

先求出particular solution,让所有的free variables取$0$,求解出pivots,得到一个solution,我们称它为particular solution。然后求出所有的special solutions,则$Ax=b$的通解可以表示为:
$$x = x_p + a x_{special_solution_1} + b x_{special_solution} + \cdots=x_p+x_n$$
即particular solution加上nullspace组成的新的vector sets。当没有free variables的时候,也就没有special solutions,nullspace为空。

列满秩

定义

对于$m\times n$的矩阵$A$,每一列都有一个pivot,rank $r=n$,matrix是瘦高的$(m\ge n)$,其实就相当于每一个column vector都用到了,没有多余的column vector。可以用以下的形式表示:
$$R = \begin{bmatrix}I\\0\end{bmatrix}=\begin{bmatrix}n\times n 单位矩阵\\m-n行零向量\end{bmatrix}$$

属性

当$A$列满秩的时候,有以下结论:

  1. $A$的所有columns都是pivot columns
  2. 没有free variables,free columns和special solutions
  3. Nullspace只有$x=0$
  4. 如果$Ax=b$有解,那么它只有一个解,或者一个解都没有

行满秩

定义

对于$m\times n$的矩阵$A$,如果$r=m$的话,$A$是一个矮胖的矩阵$(m\le n)$,每一行都有一个pivot。
$$R = \begin{bmatrix}I&F\end{bmatrix}=\begin{bmatrix}m\times m 单位矩阵&F\end{bmatrix}$$

属性

当$A$行满秩的时候,有以下结论:

  1. $A$的所有row都有pivots,$R$没有$0$向量
  2. 对于任何$b$,$Ax=b$都有解
  3. column space就是整个$\mathbb{R}^m$
  4. 总共有$n-r= n-m$个special solutions。

秩和方程解个数之间的关系

  1. $r=m, r=n$,可逆方阵,$Ax=b$有且只有一个解,$R=\begin{bmatrix}I\end{bmatrix}$
  2. $r=m, r\lt n$,矮胖,$Ax=b$有无穷多个解,一个particular solution加上nullspace中的无穷个,$R=\begin{bmatrix}I&F\end{bmatrix}$
  3. $r\lt m, r=m$,瘦高,$Ax=b$没有或者只有一个解,如果$b$恰好在$A$的column space中有一个解,如果$b$恰好不在$A$的column space中无解,因为column vectors是相互独立的,所以$Ax=0$只有零解,$R=\begin{bmatrix}I\\0\end{bmatrix}$
  4. $r\lt m, r\lt n$,并不满秩,$Ax=b$无解或者有无穷多个解,无解的情况是不在$A$的column space中,有解的情况是 在$A$的column space中,而在这部分中,又有无穷多个零解,所以要不无解要不无穷多个解。$R=\begin{bmatrix}I&F\\0&0\end{bmatrix}$

线性独立(Linear independence)

矩阵$A$的columns是linear independent的,当且仅当$Ax=0$的唯一解是$x=0$时。也就是说$A$的nullspace只有零向量的时候。

定义

给定一系列向量$v_1, \cdots, v_n$,$c_1 v_1 +\cdots+c_n v_n=0$当且仅当$c_1, \cdots, c_n=0$时候成立。

生成(Span)

定义

使用一系列vectors生成space的过程就叫做span。

行空间(Row Space)

定义

使用矩阵的row vector生成的subspace就叫做row space,表示维$C(AT)$,它和$AT$的column space是相同的。

基(Basis)

定义

生成space的最小vectors的independent vectors叫做这个space的一组basis,basis不是唯一的。

示例

矩阵的pivot columns是它的column space的一组basis。

维度(Dimension)

定义

Space的dimension指的是每组basis中向量的个数。对于一个space,不同的baisis,它们的vectors不同,但是向量的个数都是相同的,这是space的属性。

秩和维度的关系

和矩阵$A$相关的主要有四个subspace,分别是column space, nullspace, row space以及left nullspace。它们四个具有的属性如下所示:

  1. row space和column space的dimension都是$r$
  2. nullspace和left nullspace的dimension是$n-r, m-r$,为什么是$n-r,m-r$,解$Ax=0$得到$x$是$n$维向量,也就是nullspace是$\mathbb{R}^n$的subspace,$A$的column space的dimension是$r$,free variables,free columns的个数就是$n-r$,special solutions的个数就是$n-r$,而nullspace的basis其实就是所有的special solutions,所以nullspace的dimension就是$n-r$,$m-r$同理。

$A$和$R$的维度和基的关系

这里的$A$是矩阵,$R$是行间化阶梯形矩阵

  1. $A$和$R$的row space相同,dimension相同,为$r$,basis相同
  2. $A$和$R$的column space不同,dimension相同,也为$r$,basis不同
  3. $A$和$R$的nullspace相同,dimension相同,为$n-r$,basis相同
  4. $A$和$R$的left nullspace不同,dimension相同,为$m-r$

Row space和nullspace都是$\mathbb{R}^n $的subspace,它们的dimension加起来等于n,但是这两个subspace加起来并不是$\mathbb{R}^n $。Row space是对$r$个$n$维pivot row vectors进行linear combination,而nullspace是对$n-r$个$n$维的解向量$x$进行linear combination,这里虽然都出现了$n$,但是第一个$n$是row vector的长度$n$,而第二个$n$是解向量的$n$。
同理,可以得column space和left nullspace都是$\mathbb{R}^m$的subspace。

参考文献

1.MIT线性代数公开课

linear algebra idempotent matrix

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

Idempotent Matirx(幂等矩阵)

定义满足$A^2 = A$的矩阵叫做idempotent matirx(幂等矩阵)。
幂等矩阵必须是方阵。

示例

$$\begin{bmatrx} 4&-1\\12&-3\end{bmatrix}$$

属性

  • 除了identity matrix,所有的idempotent matrix都是singular。如果它是方阵,那么它的determiant是$0$。
  • 如果M是幂等矩阵,那么M-I也一定是幂等矩阵。
    $$(I-M)(I-M) = I^2 - 2IM + M^2 = I - M$$
  • 幂等矩阵的特征值只能是$0$或者$1$
    证明: 如果$A$是idempotent, $\lambda$是一个特征值,$v$是对应的特征向量。
    $$\lambda v = Av = AAv = \lambda Av = \lambda^2 v$$
    因为$v\neq 0$,所以$\lambda=0, or 1$。
  • 幂等矩阵可对角化
  • 幂等矩阵的迹等于幂等矩阵的秩
  • 方阵零矩阵和单位矩阵都是幂等矩阵。

参考文献

1.https://www.statisticshowto.datasciencecentral.com/idempotent-matrix/
2.http://people.stat.sfu.ca/~lockhart/richard/350/08_2/lectures/Theory/web.pdf

花书第二章

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

线性代数

这一章介绍一些线性代数的知识

标量,向量,矩阵和张量

标量,单个的数,用不加粗小写斜体字母表示。
向量,有序的一维数组,用加粗小写斜体字母表示,向量的每一个元素加下标访问。一般一个$n$维的向量表示为:
$$\mathbf{x} = \begin{bmatrix}x_1\\ \cdots x_n\end{bmatrix} = (x_1,\cdots, x_n)^T$$
矩阵:二维数组,用加粗大写斜体字母表示,向量的每个元素需要使用两个索引才能定位。
张量:多维数组,用加粗大写非斜体字母表示,访问一个$k$维的张量,需要使用$k$个索引才能进行定位。

向量和矩阵乘法

矩阵乘法

矩阵乘法要求两个矩阵的shape满足第一个矩阵的第二维和第二个矩阵的第一维相等。Shape为$m\times n$的矩阵$A$和shape维$n\times p$的矩阵$B$,使用矩阵相乘得到一个$m\times p$的矩阵$C$,计算公式如下:
$$C_{i,j} = \sum_{k=1}^n A_{i,k}B_{k,j}$$

Hadamard乘法(element-wise乘法)

Hadamrad乘法要求两个矩阵的shape必须相同。Shape为$m\times n$的矩阵$A$和shape维$m\times n$的矩阵$B$,使用矩阵相乘得到一个$m\times n$的矩阵$C$,计算公式如下:
$$C_{i,j} = A_{i,j}B_{i,j}$$

向量点乘

向量点乘要求两个向量$x$和$y$的维度相同,点乘的结果可以看成$1\times n$的矩阵和$n\times 1$的矩阵进行矩阵乘法的结果。

矩阵乘向量

矩阵乘向量需要满足矩阵的第二维和向量的维度一致,得到新向量的维度和原来的向量维度一样:
$$Ax= b$$

其他定律

矩阵乘法有分配率,结合律,但是没有交换律。
转置的一个公式
$$(AB)^T = B^T A^T $$

单位矩阵和可逆矩阵

除了对角线上为$1$所有其他位置都为$0$的矩阵被称为单位矩阵,用$I_n$表示。矩阵$A$的可逆矩阵被表示为$A^{-1}$,定位为:
$$A^{-1}A= I_n$$
如果矩阵$A$的逆存在,那么$Ax=b$的解就是$x = A^{-1}b$。

线性独立和线性生成子空间(span)

如果$Ax=b$有且只有一个解,那么$A^{-1}$一定存在。但是有时候会没有解或者无穷多个解。不可能存在大于一个但是小于无穷多个解的情况,如果$x,y$是$Ax=b$的解,那么
$\alpha x + (1 - \alpha) y$也一定是$Ax=b$的解。
线性组合:对于向量集中的每个向量乘上一个系数再相加得到的结果就是一个线性组合。最简单的形式:$ax+by$就是一个线性组合,它的结果就是一个span(线性生成子空间)。$Ax$也是一个线性组合,它有一个特殊的名字,叫做$A$的column space,如果$b$在$A$的colum中,那么这个方程组有且只有一个解。

mean, variance, covarance, dependent and independent

发表于 2019-08-08 | 更新于 2019-12-17 | 分类于 概率论与统计

均值(期望)

简单介绍

在概率论和统计学中,一个离散型随机变量的期望值是试验中每次可能的结果乘以相应概率的加和。
换句话说,期望值是变量取值的加权平均。期望并不一定包含于变量的值域内。

定义

如果$X$是概率空间$(\Omega, F,P)$中的随机变量,它的期望值$\mathbb{E}(X)$定义为:
$$\mathbb{E}(X) = \int_{\Omega} XdP$$
如果$X$是离散的随机变量,取值$x_1,x_2,\cdots$的概率分别为$p_1, p_2, \cdots, p_1+p_2+\cdots = 1$,它的期望定义为:
$$\mathbb{E}(X) = \sum_i x_ip_i$$

性质

  • $\mathbb{E}(cX) = c\mathbb{E}(X)$
  • $\mathbb{E}(X+c) = \mathbb{E}(X) + c$
  • $\mathbb{E}(X+Y) = \mathbb{E}(X) + \mathbb{E}(Y)$
  • $\mathbb{E}(XY) = \mathbb{E}(X)\mathbb{E}(Y)$,($X,Y$独立)
  • $\mathbb{E}(aX+bY) = a\mathbb{E}(X) + b\mathbb{E}(Y)$

方差

简单介绍

方差描述的是一个随机变量的离散程度。

定义

假设$X$是服从分布$F$的随机变量,用$\mu=\mathbb{E}(X)$表示随机变量$X$的期望。
随机变量$X$的方差为:
$$Var(X) = \mathbb{E}\left[(X-\mu)^2\right]$$

性质

  1. 方差总是大于等于$0$的
    $$Var(X)\ge 0$$
  2. 常数的方差为$0$
    $$Var ( c ) = 0$$
  3. 随机变量$X$加上一个常数$c$,它的方差不变
    \begin{align*}
    Var(X+c) &= \mathbb{E}\left[(X+c - \mathbb{E}(X+c))^2\right]\\
    &= \mathbb{E}\left[(X-\mathbb{E}(X))^2\right]\\
    &=Var(X)
    \end{align*}
  4. 随机变量$X$乘上一个常数$c$,它的方差变为原来的$c^2$倍。
    \begin{align*}
    Var(cX) &= \mathbb{E}\left[(cX - \mathbb{E}(cX))^2\right]\\
    &= \mathbb{E}\left[c^2 X^2 - 2c^2 X \mathbb{E}(X) + (\mathbb{E}(cX))^2\right]\\
    & = c^2 \mathbb{E}\left[X^2 - 2X \mathbb{E}(X) + \mathbb{E}(X)\cdot \mathbb{E}(X)\right]\\
    &=c^2 Var(x)
    \end{align*}

期望和方差关系

\begin{align*}
Var(X) &= \mathbb{E}\left[(X-\mathbb{E}\left[X\right])^2\right]\\
&= \mathbb{E}\left[(X^2 - 2X \mathbb{E} \cdot \left[X\right]+\mathbb{E}\left[X\right] \cdot \mathbb{E}\left[X\right] )\right]\\
&= \mathbb{E}\left[(X^2) \right] - 2\mathbb{E}\left[(X \cdot \mathbb{E}\left[ X \right]) \right]+\mathbb{E}\left[(\mathbb{E}\left[X \right] \cdot \mathbb{E}\left[ X \right])\right]\\
&= \mathbb{E} \left[(X^2) \right] - \mathbb{E}\left[(\mathbb{E}\left[X \right] \cdot \mathbb{E}\left[ X \right])\right]\\
&= \mathbb{E} \left[(X^2) \right] - \mathbb{E}\left[X \right] \cdot \mathbb{E}\left[ X \right]\\
\end{align*}

均值和样本均值

样本均值是均值的无偏估计。
假设用随机变量$X$表示所有男性的身高,得到一组样本值为$x_1, x_2, \cdots, x_n$,样本均值的计算方式如下:
$$\bar{X} = \frac{x_1 + \cdots +x_n}{n}$$
$\bar{X}$是对$\mu$的一个估计,真实的$\mu$我们不知道,但是我们能根据多个样本计算出来多个样本均值,这些样本均值的均值会收敛于均值。所以叫它无偏估计。

方差和样本方差

样本方差的分母如果是$n$的话,是方差的有偏估计,如果分母是$n-1$的话,是方差的无偏估计。
随机变量$X$方差的计算公式为:
$$Var(X) = \mathbb{E}\left[(X-\mu)^2\right]$$
但是我们往往不知道$X$的真实分布,所以经常用样本方差$S^2$来估计真实方差$Var(X)$:
$$S^2 = \frac{\sum_{i=1}^n (X_i - \mu)^2}{n}$$
而均值$\mu$往往也是不知道的,用样本均值$\bar{X}$代替均值$\mu$,得到
$$S^2 = \frac{1}{n-1}\sum_{i=1}^n (X_i - \bar{X})^2$$
为什么是$\frac{1}{n-1}$呢?
这里先给出几个辅助计算:

  1. 样本均值的方差是样本方差的$\frac{1}{n}$
    \begin{align*}
    Var(\bar{X}) &= Var(\frac{\sum_{i=1}^n X_i}{n})\\
    & = \frac{1}{n^2} Var(\sum_{i=1}^n X_i)\\
    & = \frac{1}{n^2} \sum_{i=1}^n Var(X_i)\\
    & = \frac{n\sigma^2 }{n^2 }\\
    &=\frac{\sigma^2 }{n}
    \end{align*}

如果使用$\frac{1}{n-1}\sum_{i=1}^n (X_i - \bar{X})^2$进行计算
\begin{align*}
\mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n \left(X_i-\bar{X}\right)^2\right]&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n \left(X_i-\bar{X}+\mu-\mu\right)^2 \right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n \left(X_i-\mu - (\bar{X} - \mu)\right)^2 \right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n \left((X_i-\mu)^2 - 2(X_i-\mu)(\bar{X} - \mu) + (\bar{X} - \mu)^2 \right)\right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n (X_i-\mu)^2 - \frac{2}{n}\sum_{i=1}^n (X_i-\mu)(\bar{X} - \mu) + \frac{1}{n}\sum_{i=1}^n (\bar{X} - \mu)^2 \right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n (X_i-\mu)^2 - 2(\bar{X}-\mu)(\bar{X} - \mu) + \frac{1}{n}\sum_{i=1}^n (\bar{X} - \mu)^2 \right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n (X_i-\mu)^2 - 2(\bar{X}-\mu)^2 + (\bar{X} - \mu)^2 \right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n (X_i-\mu)^2 - (\bar{X}-\mu)^2\right]\\
&= \mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n (X_i-\mu)^2 \right]-\mathbb{E}\left[ (\bar{X}-\mu)^2\right]\\
&= Var(X) - Var(\bar{X})\\
&= \sigma^2 - \frac{\sigma^2}{n}\\
&= \frac{n-1}{n}\sigma^2
\end{align*}
最后得到$\mathbb{E}\left[\frac{1}{n}\sum_{i=1}^n \left(X_i-\bar{X}\right)^2 \right] = \frac{n-1}{n}\sigma^2 $,少算了$\frac{1}{n}\sigma^2 $,
所以,如果取$\mathbb{E}\left[S^2 \right] =\mathbb{E}\left[\frac{1}{n-1}\sum_{i=1}^n \left(X_i-\bar{X}\right)^2 \right]$,最后能得到$\mathbb{E}\left[S^2 \right] =\sigma^2$,是无偏估计。

矩

设$X$为随机变量,$c$为常数,$k$为正整数,称$\mathbb{E}\left[(X-c)^k\right] = \int_{-\infty}^{\infty} (X-c)^k f(X) dX $ 为$X$关于$c$的$k$阶矩。

  1. $c=0, \alpha_k=\mathbb{E}\left[X^k\right] = \int_{-\infty}^{\infty} X^k f(X) dX $称为$X$的$k$阶原点矩。
  2. $c=\mathbb{E}\left[X\right],\mu_k=\mathbb{E}\left[(X-\mathbb{E}(X))^k \right] = \int_{-\infty}^{\infty}( X^k - \mathbb{E}(X))^k f(X)dX $称为$X$的$k$阶中心矩。

一阶原点矩为期望,任意随机变量的一阶中心距为$0$,二阶中心矩为方差。三阶中心矩表示偏度,任何对称分布的偏度为$0$,分布尾部在左侧比较长具有负偏度,分布尾部在右侧较长具有正偏度。四阶中心距表示峰度,俗称方差的方差。

协方差

方差和标准差通常是用来描述一维随机变量的特性。那么对于多维随机变量来说,怎么衡量它们之间的关系呢?引入了协方差衡量两维随机变量之间的关系。

定义

$\mathbb{E}\left[(X-\mathbb{E}(X))(Y-\mathbb{E}(Y)\right]$称为$X,Y$的协方差,记为$Cov(X,Y)$。
当$X=Y$时,其实就是方差的定义。

属性

  1. \begin{align*}
    Cov(c_1X+c_2, c_3Y + c_4) &= \mathbb{E}\left[(c_1X +c_2 - \mathbb{E}(c_1X+c_2))(c_3Y +c_4 - \mathbb{E}(c_3Y+c_4))\right]\\
    &= \mathbb{E}\left[(c_1X - c_1\mathbb{E}\left[X\right])(c_3Y - c_3\mathbb{E}\left[Y\right])\right]\\
    &= c_1c_3\mathbb{E}\left[(X - \mathbb{E}\left[X\right])(Y - \mathbb{E}\left[Y\right])\right]\\
    &= c_1c_3Cov(X,Y)\\
    \end{align*}
  2. \begin{align*}
    Cov(X,Y) &= \mathbb{E}\left[(X-\mathbb{E}\left[X\right])(Y-\mathbb{E}\left[Y\right])\right]\\
    &= \mathbb{E}\left[XY - \mathbb{E}\left[Y\right]X - \mathbb{E}\left[X\right]Y + \mathbb{E}\left[X\right]\mathbb{E}\left[Y\right]\right]\\
    &= \mathbb{E}\left[XY\right] - \mathbb{E}\left[X\right]\mathbb{E}\left[Y\right]\\
    \end{align*}

独立与协方差之间的关系

若$X,Y$独立,则$Cov(X,Y) = 0$,因为独立变量有$\mathbb{E}(XY) = \mathbb{E}(X)\mathbb{E}(Y)$,所以:
$$\mathbb{E}(XY) - \mathbb{E}(X)\mathbb{E}(Y) = Cov(X,Y) = 0$$

协方差矩阵

用一个矩阵表示多维随机变量之间的关系,比如三个维度的随机变量。可以两两求出它们之间的协方差,因为协方差是对称的,所以这个矩阵是对称矩阵,对角线元素是方差。
协方差矩阵一般记为$\Sigma$,计算公式如下:
$$\sigma = \mathbb{E}\left[(\mathbf{X} - \mathbb{E}\left[\mathbf{X}\right])(\mathbf{X} - \mathbb{E}\left[\mathbf{X}\right])^T \right]$$
这里的$\mathbf{X}$是多维的随机向量,而方差和期望中的$\mathbf{X}$是一维的随机变量。

相关系数

定义

称$Cov(X,Y)/(\sigma_1,\sigma_2)$为$X,Y$的相关系数,记为$Corr(X,Y)$。

性质

  1. 若$X,Y$独立,则$Covv(X,Y) = 0$
  2. $\Vert Corr(X,Y)\Vert \le 1$,等号当且仅当$X$和$Y$有严格线性关系时取到
  3. 当$Corr(X,Y)= 0$或者$Cov(X,Y) = 0$时,称$X,Y$不相关。

独立和相关

$X,Y$独立能够推出他们不相关,因为$Corr(X,Y) = 0$,满足不相关的定义。而$Corr(X,Y) = 0$不一定能推出$X,Y$独立。
即独立一定相关,但是相关不一定独立。有一个特例是正太分布,独立和相关互为充要条件。

参考文献

1.https://zh.wikipedia.org/wiki/期望值
2.https://zh.wikipedia.org/wiki/方差
3.https://www.zhihu.com/question/22983179/answer/404391738
4.https://www.matongxue.com/madocs/607.html
5.https://math.stackexchange.com/a/2113753/629287
6.https://blog.csdn.net/yangdashi888/article/details/52397990

reinforcement learning an introduction 第8章笔记

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

Planning and Learning with Tabular Methods

前面几章,介绍了MC算法,TD算法,再用$n$-step TD框架把它们统一了起来,此外,这些算法都属于model free的方法。这一章要介绍model based方法,model based方法主要用于planning,而model free的方法主要用于learning。

Models和Planning

Model

定义

Environment的model是agents用来预测environment会如何对agent的action做出响应的任何东西。给定一个state和一个action,model可以预测下一个state和action。如果model是stochastic的话,有多个可能的next states和rewards,每一个都有一定概率。Distribution models计算所有可能性以及相应概率,sample models根据概率进行采样,只计算采样的结果。

用处

Model可以用来模仿或者仿真。给定一个start state和action,sample model产生一个transition,distribution model产生所有可能的transitions,并使用概率进行加权。给定start state和一个policy,sample model产生一个episode,distribution model产生所有可能的episodes以及相应的概率。Model被用来模拟environment或者产生simulated experience。

示例

DP中使用的$p(s’, r|s,a)$就是distribution model,第五章中blackjack例子中使用的模型是sample model。Distribution model可以用来产生samples,但是sample model要比distribution models好获得。考虑投掷很多骰子的和,distribution models计算所有可能值和相应的概率,而sample model只计算根据概率产生的一个样本。

Planning

定义

Planning的定义是给定model,不断的与environment交互生成或者改进poilcy的过程。有两种planning的方法,state space在state space中寻找一个optimal policy或者optimal path,这本书中介绍的方法都是这类。Plan-space planning在plans space中search。Plan-sapce 方法很难高效的应用到stochastic sequential decision problems,在这本书中不做过多介绍。
这一章要介绍的state-space planning方法具有相同的结构,这个结构在learing和planning中都有。基本的想法是:计算value funtions,通过应用simulated experience的update以及backup操作计算value functions。

示例

如DP方法,扫描整个state space,然后生成每一个state可能的transitions的distribution,用于计算update target,更新state’s estimated value。这一章介绍的其他方法,也满足这个结构,只不过计算target的方式顺序以及长度不同而已。

planning和learning的关系

将planning方法表示成这种形式主要是为了强调planning方法和learning方法之间的联系。learning和planning的重点都是使用backup update op更新estimations of value functions。区别在于plannning使用了model生成的simulate experience,而learning使用environment生成的real experience。同时perfomance measure以及experience的灵活性也不同,但是由于相同的结构,许多learning的方法可以直接应用到planning上去,使用simulated experience代替real experience即可。
给出一个利用sample model和Q-learning结合起来的planning算法:

learning算法示例

Random-sample one-step tabular Q-planning
Loop forever
$\qquad 1.$随机选择初始state $S\in \mathbb{S}, A\in \mathbb{A}$
$\qquad 2.$将$S,A$发送给sample model,得到next state和reward $S’, R$
$\qquad 3.$应用one-step Q-learning更新公式:
$\qquad\qquad Q(S,A) \leftarrow Q(S,A) + \alpha \left[R+\gamma mx_a Q(S’, a) - Q(S, A)\right]$

Dyna

简介

Online的planning更新需要不断的与environment交互,从交互中获得的information可能会改变model,以及与environment的交互,所以可能model也需要不断的学习。这一节主要介绍Dyna-Q,将online planning需要的内容都整合了起来,Dyna算法中包含了planning, acting以及learning。
Planning中real experience至少有两个作用,一个是改进model,叫做model-learning,另一个是使用learning的方法直接改进value function和policy,叫做direct reinforcement learning。相应的关系如下图所示:
model_learning
如图所示,experience可以直接改进value function,也可以通过model间接改进value fucntion,叫做indirect reinforcement learning。Direct learning和indirect learning各有优势,indirect方法能够充分利用有限的experience,得到一个更好的policy;direct方法更简单,不会受到model bias的影响。

Dyna-$Q$简介

Dyna-$Q$包含planning, acting, model-learning和direct RL。planning是random-sample one-step tabular Q-planning;direct RL就是one-step tabular Q-learning,model-learning是table-based并且假设environment是deterministic,对于每一个transition $S_t,A_t\rightarrow R_{t+1}, S_{t+1}$,model用表格的形式记录下$S_t,A_t$的prediction值是$R_{t+1}, S_{t+1}$。如下图是Dyna算法的整体框架图(Dyna-Q是一个示例)。
dyna_q
左边使用real experience进行direct RL,右边是model-based的方法,从real experience中学习出model,然后利用model生成simulated experience。search control指的是从model生成的simulated experiences中选择指定starting state和actions的experience。最后,planning使用simulated experience更新value function。从概念上来讲,Dyna agents中planning, acting, model-learning以及direct RL几乎同时发生。但是在实现的时候,还是需要串行的进行。Dyna-$Q$中,计算量主要集中在planning上。具体的算法如下:

Tabular Dyna-Q

初始化$Q(s,a), Model(s,a), s\in \mathbb{S}, a\in \mathbb{A}$
Loop forever
$\qquad (a)S\leftarrow$ current state
$\qquad (b)A\leftarrow \epsilon$-greedy$(S,Q)$
$\qquad ( c )$采取action $A$,得到下一时刻的state $S’$和reward $R$
$\qquad (d)Q(S,A) \leftarrow Q(S,A) + \alpha\left[R+\gamma max_a Q(S’, a) -Q(S,A)\right]$
$\qquad (e)Model(S,A)\leftarrow R,S’$(假设deterministic environment)
$\qquad (f)$Loop repeat $n$ 次
$\qquad\qquad S\leftarrow$ 任意之前的观测状态
$\qquad\qquad A\leftarrow$ 在$S$处采取的任意action $A$
$\qquad\qquad R,S’\leftarrow Model(S,A)$
$\qquad\qquad Q(S,A) \leftarrow Q(S,A) + \alpha\left[R+\gamma max_a Q(S’, a) -Q(S,A)\right]$

其中$Model(s,a)$表示预测$(s,a)$的next state。(d)是direct RL,(e)是model-learning,(f)是planning。如果忽略了(e,f),就是one-step tabular Q-learning。

如果model出错

前面给的例子很简单,model是不会错的。但是如果environment是stochastic的,或者samples很少的话,或者function approximation效果不好,或者environment刚刚改变,新的behaviour还没有被观测到,model就可能会出错。当model是错的话,就可能会产生suboptimal policy。在一些情况下,suboptimal会发现并且纠正model的error。当模型预测的结果比真实的结果好的时候就会发生这种情况。这里给出两个例子。一个environment变坏,一个environment变好。
第一个例子,有一个迷宫,如图所示。
blocking mase
刚开始,路在右边,1000步之后,右边的路被堵上了,左边有一条新的路。
blocking mase
第二个例子,刚开始路在左边,3000步之后,右边有一条新的路,左边的路也被保留。
这又是一个exploration和exploitation问题。在planning中,exploration意味着尝试那些让model变得更好的actions,而exploitation意味着给定当前的model,选择optimal action。我们想要agents能够explore environment的变化,但是不影响performance。

启发式搜索

Dyna-Q+ 使用了一个简单有效的heuristics,agent记录每一个state-action pair 在real environment中从上次使用到现在经历了多少个time steps,累计的时间步越多,说明这个pair改变的可能性越大,model不对的可能性越大。为了鼓励使用很久没有用的action,这里加了一个bonus reward,如果一个transition的reward是$r$,这个transition已经有$\tau$步没有试过,在planning进行update的时候,用一个新的reward $r + k\sqrt{\tau}$,$k$很小。不过新添加的bonus会有一定的cost,而且会对value function造成影响,但是在上面的两个例子中,这个cost比performance的提升要好。

优先级

在Dyna进行planning时,所有的state-action pair被选中的概率是一样的,显然是不合理的,planning的效率太低,可以有效的集中在某些state-action pair中。举个例子,在dyna_maze例子中,在第二个episode开始的时候,只有goal state前的那个state会产生正的reward,其余的都仍然是$0$,这里意味着很多updates都是无意义的。从一个value为$0$的state转移到另一个value为$0$的state,这个updates是没有意义的。只有那些在goal前面的state才会被更新,或者,那些value不为$0$的state的前面的state的value的更新才有意义。在planning过程中,有用的更新变多了,但是离effcient还差得多。在真实应用中,states可能相当大,这种没有重点的更新是非常低效的。。

backward focusing

Dyna maze的例子给了我们一个提示,从goal state backward的进行更新。这里的goal state不是一个具体的goal state,指的是抽象的goal state。一般来说,包括goal state以及value改变的state。假设model的value都是正确的,如果agent发现了environment的一个变化以及相应state value的变化,首先更新这个state的predecessor states value,然后一直往前利用value改变的state进行更新就行了。这种想法叫做backward focusing。对于那些低效的state,不更新就是了。
Backward过程很快,会有很多state-action被更新,但并不是所有的pair是等价的。有的state value变化很大,有的变化很小。在stochastic环境中,对transiton probability变化的估计也会导致change大小的变化和紧急性的变化。所以,根据紧急性对不同的pair排一个优先级,然后根据这个优先级进行更新。用一个queue记录如果更新某个state-action pair的话,它的estimated value会变多少,根据这个值的大小排优先级。队头的元素取出来进行更新以后,计算它的predecessor pair变化大小。如果这个大小大于某个阈值,就使用新的优先级,把它加入队列,如果queue中有这个pair了,queue中保存大的优先级。完整的算法如下所示:

deteriministic environment下的优先级

初始化$Q(s,a), Model(s,a), \forall s, a$,置$PQueue$为空
Loop forever
$\qquad(a) S\leftarrow$ currnet state
$\qquad(b) A\leftarrow policy(S,Q)$
$\qquad( c )$采取action $A$;得到下一个reward $R$和state $S’$
$\qquad(d)Model(S,A) \leftarrow R, S’$
$\qquad(e) P\leftarrow |R+\gamma max_aQ(S’,a) - Q(S,A)|$
$\qquad$(f)如果$P\gt \theta$,将$S,A$以$P$的优先级插入$PQueue$
$\qquad$(g) Loop repeat $n$次,当$PQueue$非空的时候
$\qquad S, A\leftarrow fisrt(PQueue)$
$\qquad R,S’\leftarrow Model(S,A)$
$\qquad Q(S,A) \leftarrow Q(S,A) +\alpha \left[R+\gamma max_a Q(S’,a) -Q(S,A)\right]$
$\qquad$Loop for all 预计能到$S$的$\bar{S}, \bar{A} $
$\qquad\qquad \bar{R} \leftarrow $predicted reward for $\bar{S}, \bar{A}, S$
$\qquad\qquad P\leftarrow |\bar{R}+\gamma max_aQ(S,a) -Q(\bar{S}, \bar{A})$
$\qquad\qquad$如果$P\gt \theta$,将$\bar{S},\bar{A}$以$P$的优先级插入到$PQueue$

推广到stochastic environment上,用model记录state-action pair experience的次数,以及next state,计算出概率,然后进行expected update。Expected update会计算许多低概率transition上,浪费资源,所以可以使用sample update。
Sample update相对于expected update的好处,相当于将完整的backup分解成单个更小的transition。这个idea是从van Seijen和Sutton(2013)的一篇论文中得到的,叫做"small backups",使用单个的transition进行更新,像sample update,但是使用的是这个transition的概率,而不是sampling的$1$。

Expected updates和Sample updates

这本书介绍了不同的value function updates,就one-step方法来说,主要有三个binary dimensions。第一个是估计state values还是action values;第二个是估计optimal policy还是random policy的value,对应四种组合:$q_{*}, v_{*}, q_{\pi}, v_{\pi}$;第三个是使用expected updates还是sample updates,也是这节的内容。总共有八种组合,其中七种对应具体的算法,如下图所示:
seven_bakcup
这些算法都可以用来planning,之前介绍的Dyna-$Q$使用的是$q_{*}$ sample update,也可以用$q_{*}$ expected update,还可以用$q_{\pi}$ sample updates。

简介和比较

Expected update对于每一个$(s,a)$ pair,考虑所有可能的next state和next action $(s’,a’)$,需要distributions model进行精确计算;而sample update仅仅需要sample model,考虑一个next state,会有采样误差。所以expected upadte一定要比sample update好,但是需要的计算量也大。当环境是deteriministic的话,expected udpaet和sample update其实是一样的,只有在stochastic环境下才有区别。
假设每一个state有$b$个next state,expected upadte要比sample update的计算量大$b$倍。如果有足够的时间进行完全的expected update,进行一次完全的expected update一定比进行$b$次sample update好,因为虽然计算次数相等,但是sample update有sampling error;如果没有足够的时间的话,在计算次数小于$b$次的时候,sample update要比expected update好,sample update至少进行了一部分improvement,而sample update只有完全进行$b$次计算后才会得到正确的value function。而当state-action pairs很多的情况下,进行完全的expected update是不可能的,sample update是一个可行的方案。
给定一个state-action pair,到底是进行一些(小于$b$次)expected update好呢,还是进行$b$次sample updates好呢?如下图所示,展示了expected update和sample update在不同的$b$下,estimation error关于计算次数的函数。
fig_8_7
在这个例子中,所有$b$个后继状态出现的可能性相等,开始的error为$1$。假设所有的next state value都是正确的,expected update完成之后,error从$1$变成了$0$。而sample updates根据$\sqrt{\frac{b-1}{bt}}$减少error。对于$b$很大的值来说,进行$b$的很小比例次数的更新,error就会下降很快。

Sample updates的好处

上图中,sample update的结果可能要比实际结果差一些。在实际问题中,后继状态的value会被它们自身更新。他们的estimate value会更精确,从后继状态进行backup也会更精确。

结论

在stochastic环境下,如果每个state处可能的next state数量非常多,并且有很多个states,那么sample update可能要比expected update好。

Trajectory Sampling

这里比较两种distributing updates。
DP进行update的时候,每一次扫描整个state spaces,很多state其实是没有用的,没有focus,所有的states地位一样。原则上,只要确保收敛,任何distributed方法都行,然而在实际上常用的是exhaustive sweep。
第二种是根据一些distributions从state space或者state action space中进行采样。Dyna-$Q$使用均匀分布采样,和exhaustive sweep问题一样,没有focus。使用on-policy distribution是一种很不错的想法,根据当前的policy不断的与model交互,产生一个trajectory。Sample state transitions以及reward是model给出来的,sample action是当前的policy给出来的。这种方法叫做generating experience和update trajectory sampling。

原因

如果on-policy的distribution是已知的,可以根据这个distribution对所有的states进行加权,但是这和exhaustive sweeps的计算量差不多。或者从distribution中采样state-action paris,这比simulating trajectories好在哪里呢?事实上我们不知道distribution,当policy改变,计算distribution的计算量和policy evaluation相等。

分析

使用on-policy distribution可以去掉很多我们不感兴趣的内容,或者一遍又一遍的进行无用的重复更新。通过一个小例子分析它的效果。使用one-step expected updates,公式如下:
$$Q(s,a) \leftarrow \sum_{s’,r} \hat{p}(s’,r|s,a)\left[r+\gamma max_{a’}Q(s’,a’)\right]$$
使用均匀分布的时候,对所有的state-action pair进行in place的expected update更新;使用on-policy的时候,使用当前$\epsilon$-greedy policy($\epsilon=0.1$)直接生成episodes,对episodes中出现的state-action pair进行expected update。也就是说一个是随机选的,一个是on-policy中出现的,选择的方式不一样,但是都是进行expected update。
简单介绍一下environment。每个state都有两个action,等可能性的到达$b$个next states,$b$对于所有state-action pair都是一样的,所有的transition都有$0.1$的概率到达terminal state。Expected reward服从均值为$0$,方差为$1$的高斯分布。
在planning过程中的任何一步都可以停止,根据当前估计的action value,计算greedy policy $\hat{\pi}$下start state的value $v_{\hat{\pi}}(s_0)$,也就是说告诉我们使用greedy重新开始一个新的episodes,agent的表现会怎么样。(假设model是正确的)。
fig_8_8
上半部分是进行了$200$次sample任务,$1000$个states,$b$分别为$1,3,10$的结果。在图中根据on-policy 采样更新的方法,一开始很快,时间一长,就慢下来了。当$b$越小的时候,效果越好,越快。另一个实验中表明,随着states数量的增加,on-policy distribution采样的效果也在变好。
使用on-policy distribtion进行采样,能够帮助我们关注start state的后继状态。如果states很多,并且$b$很小,这个效果很好并且会持续很久。在长时间的计算中,使用on-policy distribution采样可能会有副作用,因为一直在更新那些value已经正确的states。对它们进行采样没用了,还不如采样一些其他的states。这就是为什么在长时间的运行中使用均匀分布进行采样的效果更好。

Real-time DP

Real time DP是DP的on-policy trajectory sampling版本。RLDP和上一节介绍的on-policy expected update的区别在update的方式不同,上一届实际上使用的是state-action pair,而这一节DP用的是state,它的更新公式是:
$$v_{k+1}(s) = \max_a \sum_{s’,r}p(s’,r|s,a) \left[r+\gamma v_k(s’)\right]$$
一个是更新action value function,一个是更新state valut function。

irrelevant states

如果trajectories可以仅仅从指定的states开始,我们感兴趣的仅仅是给定policy下states的value,on-policy trajectory sampling可以完全跳过给定policy下不能到达的states。这些states跟prediction问题无关。对于control问题,目标是找到optimal policy而不是evaluating一个给定的policy,可能存在无论从哪个start states开始都无法到达的states,所以就没有必要给出这些无关states的action。我们需要的是一个optimal partial policy,对于relevant states,给出optimal policy,而对于irrelevant states,给出任意的actions。
找到这样一个policy,按道理来说需要访问所有的state-action pairs无数次,包括那些无关状态。Korf证明了在满足以下条件的时候,能够在很少访问relevant states甚至不访问的时候,找到这样一个policy。

  1. goal state的初始value为$0$
  2. 存在至少一个policy保证从任何start state都能到达goal state
  3. 所有到达的非goal states的reward是严格为负的
  4. 所有states的初始value要大于等于optimal values(可以设置为$0$,一定比负值大)

如果满足这些条件,RTDP一定会收敛到relevant states的optimal policy。

决策时进行planning

backgroud planning

进行planning至少有两种方法。第一种是已经介绍的DP和Dyna这些算法,使用planning基于从model得到的simulated experience不断的改进policy和value function。通过比较某一个state处不同state-action pairs value值的大小选择action。在action被选择之前,planning更新所有的$Q$值。这里planning的结果被很多个states用来选择action。这种planning叫做background planning。

decision-time planning

第二种方法是使用planning输出单个state的action,遇到一个新的state $S_t$,输出是单个的action $A_t$,然后再下一个时间步根据$S_{t+1}$继续计算$A_{t+1}$。最简单的一个例子是当只有states value可以使用的时候,通过比较model预测每一个action能够到达的后继state的value(也就是使用after state value)选择相应的action,。这种方法叫做decision-time planning。
事实上,decision-time planning和background planning的流程是一样的,都是使用simulated experience到backup values再到policy。只不过decision-time planning只是对当前可访问的单个state和action的value和policy进行planning。在许多decision-time planning的过程中,用于选择当前state对应的action时,使用到的value和policy用过以后都被丢弃了,这并不会造成太大的计算损失,因为在大部分任务中很多states在短时间内都不会被再次访问到。

应用场景

decision-time planning适用于不需要快速实时相应的场景,比如各种下棋。如果需要快速响应的,那么最好使用backgroud planning计算一个policy可以快速应用到新的states。

启发式搜索

AI中经典的state-space方法都是decision-time planning方法,统称为heuristic search。在启发式搜索中,会使用树进行搜索,近似的value function应用到叶子节点,进行backup到根节点(当前state),相应的backup diagram和optimal的expected updates类似。根据计算的backed-up值,选择相应的action之后,丢弃这些值。
传统的启发式搜索并不保存backup value,它更像是多步的greedy policy,目的是更好的选择actions。如果我们有一个perfect model以及imperfect action value function,搜索的越深结果越好。如果search沿着所有可能的路一直到episode结束,那么imperfect value function的结果被抵消了,选出来的action也是optimal。如果搜索的深度$k$足够深,$\gamma^k$接近于$0$,那么找到的action也是近乎于最优的。当然,搜索的深度越深,需要的计算资源就越多。
启发式搜索的的updates集中在current state,它的search tree集中在接下来可能的states和actions,这也是它的结果为什么很好的原因。在某些特殊的情况下,我们可以将具体的启发式搜索算法构建出一个tree,自底向上的执行one-step update,如下图所示:
heuristic_search_tree
如果update是有序的,并且使用tabular representation,整个updates可以看成深搜,所有的state-space搜索可以看成很多个one-step updates的组合。我们得出了一个结论,搜索深度越深,性能越好的原因不是multistep updates的使用,因为它实际上使用的是多个one-step update。真正的原因是更新都集中在current state downstream的states和actions上,所有的计算都集中在candidate actions相关的states和actions上。

Rollout算法

什么是Rollout算法

Rollout算法是将Monte Carlo Control应用到从current state开始的simulate trajectories上的decision-time planning算法。Rollout算法根据给定的policy,这个policy叫做rolloutpolicy,从当前state可能采取的所有action开始生成很多simulated trajectories,对得到的returns进行平均估计aciton values。当action value估计的足够精确的时候,选择最大的那个action执行。
和MC Control的区别在于,MC Control的目的是估计整个action value function $q_{\pi}$或者$q_{*}$,而Rollout算法的目的是对于每一个current state,在一个给定policy下估计每一个可能的action的value。Rollout是decision-time planning算法,计算完相应的estimate action value之后,就丢弃它们。

Rollout算法做了什么

Rollout算法和policy iteration差不多。在policy improvement theorem理论中,如果在一个state处采取新的action,它的value要比原来的value高,那么就说这个新的policy要比老的policy好。Rollout算法在每个current state处,估计不同的state action value,然后选择最好的,其实就相当于one-step的policy iteration,或者更像on-step的asynchronous value iteration。
也就是说,rollout算法的目的是改进rollout policy,而不是寻找最优的policy。Rollout算法非常有效,但是它的效果也取决于rollout policy,roloout policy越好,最后算法生成的policy就越好。

如何选择好的rollout policy

更好的rollout policy也就需要更多的资源,因为是decision-time算法,时间约束一定要满足,rollout算法的计算时间取决于每一个decision需要选择的action数量,sample trajectories的长度,rollout policy做决策的事件,以及足够的sample trajectories的数量。接下来给出几种方法去权衡这些影响因素:
第一个方法,MC trials都是独立的,所以可以使用多个分开的处理器运行多个trials。第二个方法是在simulated trajectories结束之前截断,通过一个分类评估函数对truncated returns进行修正。第三个方法是剪枝,剪掉那些不可能是最优的actions,或者那些和当前最优结果没啥差别的acitons。

rollout算法和learning算法的关系

Rollout算法并不是learning算法,因为它没有保存values和polices。但是rollout算法具有rl很多好的特征。作为MC Control的应用,他们使用sample trajectories,避免了DP的exhausstive sweeps,同时不需要使用distributin models,使用sample models。最后,rollout算法还使用了policy improvement property,即选择当前estimate action values最大的action。

Monte Carlo Tree Search

MCTS是decision-time planning算法,实际上,MCTS是一个rollout算法,它在上一节介绍的rollout算法上,加上了acucumulating value estimates的均值。MCTS是AlphaGO的基础算法。
每到达一个新的state,MCTS根据state选择action,到达新的state,再选择action,持续下去。在大多数情况下,simulated trajectories使用rollout policy生成actions。当model和rollout policy都不需要大量计算的时候,可以在短时间内生成大量simulated trajectories。只保留在接下来的几步内最后可能访问到的state-action pairs的子集,形成一棵树,如下图所示。任意simulated trajectory都会经过这棵树,并且从叶子节点退出。在tree的外边,使用rollout policy选择actions,在tree的内部使用一个新的policy,称为tree policy,平衡exploration和exploitation。Tree policy可以使用$\epsilon$-greedy算法。
mcts
MCTS总共有四个部分,一直在迭代进行,第一步是Selection,根据tree policy生成一个episode的前半部分;第二步是expansion,从选中的叶子节点处的上一个节点探索其他没有探索过的节点;第三步是simulation,从选中节点,或者第二步中增加的节点处,使用rollout policy生成一个episode的后半部分;第四步是backup,从第一二三步得到的episode进行backup。这四步一直迭代下去,等到资源耗尽,或者没有time的时候,就退出,然后根据生成的tree中的信息选择相应的aciton,比如可以选择root node处action value最大的action,也可以选择最经常访问的action。
MCTS是一种rollout算法,所以它拥有online,incremental,sample-based和policy improvement等优点。同时,它保存了tree边上的estimate action value,并且使用sample update进行更新。优势是让trivals的初始部分集中在之前simulated的high-return trajectories的公共部分。然后不断的expanding这个tree,高效增长相关的action value table,通过这样子,MCTS避免了全局近似value funciton,同时又能够利用过去的experience指定exploraion。

参考文献

1.《reinforcement learning an introduction》第二版

python selenium

发表于 2019-08-06 | 更新于 2019-12-17 | 分类于 python

ubuntu 安装chrome driver

  1. 下载chrome driver
    http://chromedriver.chromium.org/downloads
    根据自己的操作系统和chrome下载相应的chrome driver
  2. 解压
    将解压后的chromedriver放置在PATH环境变量中的任意目录即可,我是放置在了/usr/local/bin

参考文献

1.https://www.jianshu.com/p/dd848e40c7ad

python-spider

发表于 2019-08-06 | 更新于 2019-12-17 | 分类于 python

requests

获取网页
response = requests.post(url, headers)
返回的response包含有网页返回的内容。
response.text以文字方式访问。

beautiful soup

soup.find_all()

selenium

  1. xpath查找
    查找class为"wos-style-checkbox",type为"checkbox"的任意elements。可以把*号换成input,就变成查找满足上述条件的input elemetns。
1
driver.find_elements_by_xpath("//*[@type='checkbox'][@class='wos-style-checkbox']")
  1. 访问元素的内容
    element.text
  2. 复选框选中与取消选中
1
2
3
4
5
checkbox = driver.find_element_by_id("checkbox")
if checkbox.is_selected(): #如果被选中
checkbox.click() # 再点击一次,就变成了取消选中
else: # 如果没有被选中
checkbox.click() # 再点击一次,就变成了选中
  1. 提交表单
1
2
3
4
5
keywords = driver.find_element_by_id("input")
# 清空表单默认值
keywords.clear()
# 提交表单
keywords.send_keys(values)
  1. 输完表单内容需要回车
    直接在表单内容中添加\n即可。
  2. 下拉框
    使用Select对象
1
2
3
4
5
6
7
from selenium.webdriver.support.ui import Select
from selenium import webdriver
s = Select(driver.find_element_by_id("databases"))

s.select_by_value("value")
s.select_by_index(index)
s.select_by_visible_text("visible_text")
  1. 模拟鼠标操作
1
2
3
4
5
6
7
8
from selenium.webdriver.common.action_chains import ActionChains

# 定位element
arrow = driver.find_element_by_id("next")
# 单击
ActionChains(driver).click(arrow).perform()
# 双击
ActionChains(driver).double_click(arrow).perform()
  1. display:none和visible: hidden
    display:none表示完全不可见,不占据页面空间,而visible: hidden仅仅隐藏了element的显示效果,仍然占据页面空间,并且是可以被定位到,但是无法被访问(如selenium的click,clear以及send_keys等,会报错ElementNotVisibleException’: Message: Element is not currently visible and so may not be interacted with)。

参考文献

1.https://www.w3schools.com/xml/xml_xpath.asp
2.https://devhints.io/xpath
3.https://zhuanlan.zhihu.com/p/31604356

Monte Carlo Markov Chain

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

概述

Monte Carlo方法在很多地方都出现过,但是它具体到底是干什么的,之前从来没有仔细了解过,这次正好趁着这个机会好好学习一下。
统计模拟中有一个重要的问题就是给定一个概率分布$p(x)$,生成它的样本。对于一些简单的分布,可以使用均匀分布产生的样本进行样本。但是对于一些复杂的样本,单单使用均匀分布就不行了,需要使用更加复杂的随机模拟方法。Markov Chain Monte Carlo就是一种随机模拟方法(simple simulation),我们常见的gibbs sampling也是。通过多次模拟,产生多组实验数据,进行积分啊什么的。

Monte Carlov Markov Chain

考虑以下,给定一个beta分布,如何进行采样?MCMC提供了从任意概率分布中采样的方法,尤其是当我们计算后验概率时极为有用。在贝叶斯公式中,如下图所示,我们需要从后验分布中进行采样,但是后验分布并不是那么好计算的,因为牵扯到$p(D)$的计算,根据全概率公式,需要进行积分,而beta分布的积分并不好解。
bayesian

Wikipedia上MCMC的定义:MCMC是一类方法的统称,MCMC方法构建一个Markov chain,这个Markov chain的stationary distribution是我们的目标distribution,然后进行采样。经过很多步之后的一个state可以看成是我们目标distribution的一个样本。简单解释以下就是,给定一个概率分布$p(x)$,我们想要生成这个概率分布的一些样本。因为马尔科夫链能够收敛到stationary distribution,我们的想法就是构造一个转移矩阵为$P$的马尔科夫连,使得该马尔科夫的stationry distribution是$p(x)$,那么不管我们从任何初始状态$x_0$出发,得到一个马尔科夫链$x_0,x_1,\cdots, x_t,x_{t+1}, \cdots$,如果马尔科夫链在第$n$步已经到了stationary distribution,那么$t+1$后的states都可以看成$p(x)$的样本。

示例

我们从Beta分布中进行采样,Beta分布的公式如下所示:
$$f(\theta;\alpha, \beta) = \frac{1}{B(\alpha, \beta)}\theta^{\alpha-1}(1-\theta)^{\beta-1},\alpha\gt 0,\beta\gt 0, x\in \left[0,1\right]$$
其中,$\frac{1}{B(\alpha, \beta)} = \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}$,是$\alpha,\beta$的函数,这里我们假设$\alpha,\beta$是固定的。
MCMC方法能够创建一个Markov chain,它的stationary distribution是Beta distribution。

定义$s=(s_1,s_2,\cdots, s_M)$是desired stationary distribution。我们的目标是创建一个Markov Chain,它的stationary distribution是desitred stationary distribution。随机初始化一个具有$M$个states的Markov Chain,transition matrix 是$P$,$p_{ij}$代表从state $i$到$j$的概率。
随机初始化的Markov Chain肯定有一个stationary distribution,但是不是我们想要的哪个。我们的目标就是改变这个Markov Chain让它的stationary distribution是我们想要的。为了实现这个目的:

  1. 随机选择一个初始state $i$
  2. 根据$P$的第$i$行随机选择一个新的proposal state
  3. 计算一个measure称作Acceptance Probabiliby:
    $$a_{ij} = min(\frac{s_j p_{ji}}{s_ip_{ij}},1)$$
  4. 投掷一枚正面向上概率为$a_{ij}$的硬币,如果正面向上,accept这个proposal,移动到下一个state,否则,reject 这个proposal,留在当前state。
  5. 重复下去

经过很长时间以后,这个chain会收敛,我们可以使用这个chain的states作为从任意distribution的采样。不同的分布,使用的acceptance probability不同而已,其实就是根据给出的分布计算一个接收概率而已。

从beta分布中采样

Beta分布是定义在$[0,1]$上的连续分布,它有$[0,1]$上的无穷多个states。假设具有$[0,1]$上无限个states的markov chain的transition matrix $P$是一个对称矩阵,即$p_{ij}=p_{ji}$,acceptance probability中的$p_{ij}$项就可以消掉。
接下来我们要做的是:

  1. 从均匀分布$(0,1)$中随机选择一个初始state $i$
  2. 根据$P$的第$i$行值随机选择一个新的proposal state。
  3. 计算Acceptance Probability:
    $$a_{ij} = min(\frac{s_j p_{ji}}{s_ip_{ij}},1)$$
    可以化简为:
    $$a_{ij} = min(\frac{s_j}{s_i},1)$$
    其中$s_i = Ci^{\alpha-1} (1-i)^{\beta-1},s_j = Cj^{\alpha-1} (1-j)^{\beta-1}$,
  4. 投掷一枚正面向上概率为$a_{ij}$的硬币,如果正面向上,accept这个proposal,移动到下一个state,否则,reject 这个proposal,留在当前state。
  5. 重复下去

参考文献

1.https://stats.stackexchange.com/questions/165/how-would-you-explain-markov-chain-monte-carlo-mcmc-to-a-layperson
2.https://towardsdatascience.com/mcmc-intuition-for-everyone-5ae79fff22b1
3.http://bloglxm.oss-cn-beijing.aliyuncs.com/lda-LDA数学八卦.pdf
4.https://jeremykun.com/2015/04/06/markov-chain-monte-carlo-without-all-the-bullshit/

Markov Matrices

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

Markov Matrices

定义

马尔科夫矩阵满足两个条件

  1. 所有元素大于$0$
  2. 行向量之和为$1$

属性

  1. $\lambda = 1$是一个特征值,对应的特征向量的所有分量大于等于$0$。可以直接验证,假设$A = \begin{bmatrix}a&b\\c&d\\ \end{bmatrix}, a + b = 1, c + d = 1$,$A-\lambda I = \begin{bmatrix}a - 1&b\\c&d - 1\\ \end{bmatrix}$,所有元素加起来等于$0$,即$(A-I)\begin{bmatrix}1\\ \vdots\\ 1\end{bmatrix} = 0$,所以这些向量线性相关,因为存在一组不全为$0$的系数使得他们的和为$0$。所以$A-I$是奇异矩阵,也就是说$1$是$A$的一个特征值。
  2. 所有其他的特征值小于$1$。

Markov Property

简单的来说,就是下一时刻的状态只取决于当前状态,跟之前所有时刻的状态无关,即:
$$P(X_{t+1} = k |X_t=k_t,\cdots, X_1 = k_1) = P(X_{t+1}=k |X_t=k_t) \tag{1}$$

Markov Chain(Process)

如果一个Chain(process)是Markov的,就叫它Markov Chain(Process)。

Stationary Distribution

为什么要用Markov Chain呢?因为它有一个很好的性质,叫做stationary distribution。简单的来说,就是不论初始状态是什么,经过很多步之后,都会达到一个stable state。举个例子,股票有牛市和熊市,还有波动状态,它们的转换关系如下所示:
markov_transition
状态转义矩阵矩阵如下表所示:

牛市 熊市 波动
牛市 0.9 0.075 0.025
熊市 0.15 0.8 0.05
波动 0.25 0.25 0.5

假如从熊市开始,初始state是熊市,用数值表示就是$(0, 1, 0)^T$。根据当前时刻计算下一时刻的公式为:
$$s_{t+1} = s_t Q \tag{2}$$
相应结果为$s_{t+1} = (0.15, 0.8, 0.05)^T$
$t+2$时刻的计算公式为:
$$s_{t+2} = s_t Q^2 \tag{3}$$
这样一直计算下去,可以到达一个稳定state $s$满足:
$$sQ = s \tag{4}$$
对于这个例子来说,不管从什么初始状态开始,最后都会到达稳定状态$s = (0.625, 0.3125, 0.0625)^T$。
那么这个stationary distribution有什么用呢?它能够给出一个process稳定以后在任意时刻某个state出现的概率,比如牛市出现的概率是$62.5\% $,熊市出现的概率是$31.25\%$。

马尔科夫链的稳定性

如果一个非周期性马尔科夫链有转移矩阵$P$,并且它的任意两个状态都是连通的,那么$lim_{n\rightarrow \infty} P_{ij}^m$存在,且与$i$无关,记为$lim_{n\rightarrow \infty }P_{ij}^n = \pi(j)$,即矩阵$P^n$的所有第$j$列都是$\pi(j)$,与$P$的初始值无关。

马尔科夫矩阵的幂

$u_{k+1}=Au_k$,其中$A$是马尔科夫矩阵。我们能得到
$$u_k = A^k u_0 = c_1 \lambda_1^k x_1 + c_2 \lambda_2^k x_2 + \cdots \tag{5}$$
如果只有一个特征值为$1$,对于所有其他特征值$\lambda \neq 1$,当$k\rightarrow \infty$时,幂运算$\lambda^k \rightarrow 0$,能到达一个稳态。

参考文献

1.https://towardsdatascience.com/mcmc-intuition-for-everyone-5ae79fff22b1

1…171819…34
马晓鑫爱马荟荟

马晓鑫爱马荟荟

记录硕士三年自己的积累

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