构造一个显式的、总是可逆的矩阵
By 苏剑林 | 2019-03-01 | 43133位读者 |从《恒等式 det(exp(A)) = exp(Tr(A)) 赏析》一文我们得到矩阵$\exp(\boldsymbol{A})$总是可逆的,它的逆就是$\exp(-\boldsymbol{A})$。问题是$\exp(\boldsymbol{A})$只是一个理论定义,单纯这样写没有什么价值,因为它要把每个$\boldsymbol{A}^n$都算出来。
有没有什么具体的例子呢?有,本文来构造一个显式的、总是可逆的矩阵。
其实思路非常简单,假设$\boldsymbol{x},\boldsymbol{y}$是两个$k$维列向量,那么$\boldsymbol{x}\boldsymbol{y}^{\top}$就是一个$k\times k$的矩阵,我们就来考虑
\begin{equation}\begin{aligned}\exp\left(\boldsymbol{x}\boldsymbol{y}^{\top}\right)=&\sum_{n=0}^{\infty}\frac{\left(\boldsymbol{x}\boldsymbol{y}^{\top}\right)^n}{n!}\\
=&\boldsymbol{I}+\boldsymbol{x}\boldsymbol{y}^{\top}+\frac{\boldsymbol{x}\boldsymbol{y}^{\top}\boldsymbol{x}\boldsymbol{y}^{\top}}{2}+\frac{\boldsymbol{x}\boldsymbol{y}^{\top}\boldsymbol{x}\boldsymbol{y}^{\top}\boldsymbol{x}\boldsymbol{y}^{\top}}{6}+\dots\end{aligned}\end{equation}
注意到
\begin{equation}\boldsymbol{y}^{\top}\boldsymbol{x}=\langle \boldsymbol{x},\boldsymbol{y}\rangle\end{equation}
实际上就只是个标量,因此可以继续化简
\begin{equation}\begin{aligned}\exp\left(\boldsymbol{x}\boldsymbol{y}^{\top}\right)=&\boldsymbol{I}+\boldsymbol{x}\boldsymbol{y}^{\top}\left(1+\frac{\langle \boldsymbol{x},\boldsymbol{y}\rangle}{2}+\frac{\langle \boldsymbol{x},\boldsymbol{y}\rangle^2}{6}+\dots\right)\\
=&\boldsymbol{I}+\boldsymbol{x}\boldsymbol{y}^{\top}\left(\frac{e^{\langle \boldsymbol{x},\boldsymbol{y}\rangle}-1}{\langle \boldsymbol{x},\boldsymbol{y}\rangle}\right)
\end{aligned}\end{equation}
现在这个矩阵就很具体了,它可以很简单地算出来,因为它只涉及到标量的指数运算。括号里的$(e^x - 1)/x$有个可去的间断点$x=0$,当$x=0$时它的值为1。
根据恒等式$\det(\exp(\boldsymbol{A})) = \exp(\text{Tr}(\boldsymbol{A}))$,这个矩阵的行列式为
\begin{equation}\det\left(\exp\left(\boldsymbol{x}\boldsymbol{y}^{\top}\right)\right)= e^{\langle \boldsymbol{x},\boldsymbol{y}\rangle}\end{equation}
它的逆矩阵为
\begin{equation}\exp\left(-\boldsymbol{x}\boldsymbol{y}^{\top}\right)=\boldsymbol{I}-\boldsymbol{x}\boldsymbol{y}^{\top}\left(\frac{1 - e^{-\langle \boldsymbol{x},\boldsymbol{y}\rangle}}{\langle \boldsymbol{x},\boldsymbol{y}\rangle}\right)\end{equation}
也是一个显式的结果。
当然,一般的矩阵有$k^2$个独立参数,而这里两个向量构造出来的矩阵只有$2k$个参数,就表达能力来说应该是不足够的。为了增强表达能力,可以考虑多个这样的矩阵乘起来:
\begin{equation}\exp\left(\boldsymbol{x}_1\boldsymbol{y}_1^{\top}\right)\exp\left(\boldsymbol{x}_2\boldsymbol{y}_2^{\top}\right)\exp\left(\boldsymbol{x}_3\boldsymbol{y}_3^{\top}\right)\dots\end{equation}
注意它一般不等于
\begin{equation}\exp\left(\boldsymbol{x}_1\boldsymbol{y}_1^{\top}+\boldsymbol{x}_2\boldsymbol{y}_2^{\top}+\boldsymbol{x}_3\boldsymbol{y}_3^{\top}+\dots\right)\end{equation}
好了,推了这么多,那它究竟有什么用?
呃...我也不知道它有什么用,权当欣赏吧。
(其实我的初衷是想要通过构造法来直接构造出可逆的神经网络出来。按照这个现成的矩阵,构造出可逆的全连接网络并不困难,但我没想好怎么推广到卷积层。等我搞定了这个推广,再来继续讨论这个矩阵的应用吧~)
转载到请包括本文地址:https://kexue.fm/archives/6407
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Mar. 01, 2019). 《构造一个显式的、总是可逆的矩阵 》[Blog post]. Retrieved from https://kexue.fm/archives/6407
@online{kexuefm-6407,
title={构造一个显式的、总是可逆的矩阵},
author={苏剑林},
year={2019},
month={Mar},
url={\url{https://kexue.fm/archives/6407}},
}
March 6th, 2019
老师,您好,我猜测这个变换可以用来实现一种新的flow。但是其表达能力如何,还需要考证(或许靠实验)。因为我最近的flow实验(RNVP)表示现有的flow对较复杂的分布拟合效果较差。所以我对能否实现新的,表达能力更强的flow有兴趣,请问老师您如何看呢?
刚开始确实是这个目的,但是后来发现不大可行。你可以试试最新的可逆resnet。
March 15th, 2019
请问根据这个矩阵怎样构造全连接的网络呢?没太想明白
直接把它当做全连接的权重。
November 9th, 2019
$$exp(At) = {\mathcal L}^{-1}\large[(sI-A)^{-1}] $$
November 26th, 2019
老师,您好,请问一个问题,就是exp(A)究竟如何求出?看了许多文章,都是只能用泰勒展开求。能不能用有限次计算求出?如何求?
还有ln(A)能不能用有限次计算求出?如何求?
你要明白一个点,就是
$$\exp(\boldsymbol{A})=\sum_{n=0}^{\infty}\frac{\boldsymbol{A}^n}{n!}$$
事实上就是$\exp(\boldsymbol{A})$的定义,而不是所谓的泰勒展开,所以只能这样求。除非$A$是幂零矩阵,否则一般不存在有限次能求出$\exp(\boldsymbol{A})$的公式。
December 10th, 2019
谢谢苏老师