本文出发点是对Hyperbolic Nerual Network做一个简短的调研,旨在对这个领域做一个不甚完整的描述.
考虑到没学过相关方面的数学知识,paper也只是挑了比较著名的,因此本文更偏向于直觉上的描述,比较适合想要对此领域先有一个直观感觉,然后深入研究的需求.
先推荐一下合适的非paper材料:
目前几乎所有模型都是基于欧式空间.比如经典的Word2Vec,我们利用向量在空间中合适的分布来表征语义信息.
我们通常使用向量距离来表示这种语义信息,如相似的实体距离较近,无关的实体距离较远;特别的向量距离具有语义上的信息,正如经典的women-men=queen-king;也比如trans系列.我们认为距离也是这种语义信息的表达形式之一.
那么我们为什么要使用欧式空间呢.因为它最符合直觉,简单直观.这是一个被深入研究且广泛使用的空间,我们可以很自然的在这个空间中继承推广一些向量操作,如向量加减法,向量内积,矩阵乘法,定义体积面积等.
然而欧式空间在简单直观的代价下也有一些限制.
首先,双曲空间是不能在实际生活中被表现出来的,我们只能通过数学形式或者想象来表现它,至于如何想象可以参考youtube上的一些模拟实验.
然而我们可以先给出一些直接的结论来论证我们的一些观点,然后再通过实际的双曲模型来进行直观的理解.
Poincare? Ball是一种典型双曲空间模型.
可以认为他的定义域为半径为1的圆盘.
\(\mathcal{B}^{d}=\left\{\boldsymbol{x} \in \mathbb{R}^{d} \mid\|\boldsymbol{x}\|<1\right\}\).相对应的在这个空间上向量之间的距离是如下定义.\(d(\boldsymbol{u}, \boldsymbol{v})=\operatorname{arcosh}\left(1+2 \frac{\|\boldsymbol{u}-\boldsymbol{v}\|^{2}}{\left(1-\|\boldsymbol{u}\|^{2}\right)\left(1-\|\boldsymbol{v}\|^{2}\right)}\right)\).
距离函数可以直观的通过下图理解:可知当向量越接近边界,其距离会呈现指数级的增长,而当向量越接近圆心,其距离会越短.
如果我们将树投影到这个空间,我们利用节点至原点的距离来正比于树中的层级关系,则会呈现如下形式:.图中每条线段长度实际上是相等的,虽然在欧式空间中看上来越接近边界其长度越短.这种特性可以认为是在有限的空间中实现了无限的距离定义,其边界指数增长的特性也能保证了足够的空间来容纳树形结构.
因此我们可以有这样一种直觉,树中第r层的节点因为数量的原因,在学习过程中,模型会根据数量多少将其推到合适大小的空间位置中,从而更好的均匀分开.对于前几层的节点,空间足够,因此不会特别推离原点,对于后几层的节点,数量指数级增长,就需要更远的距离,更宽阔的空间来均匀分开,因此会将其推向边界.而这一点,因为欧式空间是均匀分布(或者说跟不上增长速度),就不存在所谓的将数据推开的趋势.我们通过下图实验结果的可视化来验证我们的直觉,其中上面是Poincare? Embedding,下面是欧式Embedding.
因此我们可以认为双曲空间的这种特性(主要指距离定义)为数据层次结构提供了一种几何先验.
Lorentz model也是典型双曲空间模型。我们无须知道其具体的特性,只需了解它避免了Poincare? Distance的数值不稳定性,因为后者涉及到趋近于0的除法。
该模型定义域为\(\mathcal{H}^{n}=\left\{\boldsymbol{x} \in \mathbb{R}^{n+1}:\langle\boldsymbol{x}, \boldsymbol{x}\rangle_{\mathcal{L}}=-1, x_{0}>0\right\}\),其距离函数定义为\(d_{\ell}(\boldsymbol{x}, \boldsymbol{y})=\operatorname{arcosh}\left(-\langle\boldsymbol{x}, \boldsymbol{y}\rangle_{\mathcal{L}}\right)\).可知就数学表达式上来说该模型数值稳定性比Poincare? Ball还是要强很多的.
为什么我们要考虑这个模型呢,因为有一个好消息是它能和Poincare? Ball构成双射.因此我们可以在Lorentz model中进行数值优化,然后在Poincare? Ball中进行可视化.具体的我们有:
L->P:\(p\left(x_{0}, x_{1}, \ldots, x_{n}\right)=\frac{\left(x_{1}, \ldots, x_{n}\right)}{x_{0}+1}\)
P->L:\(p^{-1}\left(x_{1}, \ldots, x_{n}\right)=\frac{\left(1+\|x\|^{2}, 2 x_{1}, \ldots, 2 x_{n}\right)}{1-\|x\|^{2}}\)
我们讨论了双曲空间的一些实际空间模型,自然地我们要考虑怎么像利用欧式空间一样的利用他们呢.
这里考虑GNN作为代表,但是显然这可以使用到任何NN中.
GNN归根到底是将node features联合图结构信息映射到d维空间中.\(f:\left(\mathcal{V}, \mathcal{E},\left(\mathbf{x}_{i}^{0, E}\right)_{i \in \mathcal{V}}\right) \rightarrow Z \in \mathbb{R}^{|\mathcal{V}| \times d^{\prime}}\)
以GCN作为例子,我们通常要经过feature transform(\(\mathbf{h}_{i}^{\ell, E}=W^{\ell} \mathbf{x}_{i}^{\ell-1, E}+\mathbf{b}^{\ell}\))和aggregation(\(\mathbf{x}_{i}^{\ell, E}=\sigma\left(\mathbf{h}_{i}^{\ell, E}+\sum_{j \in \mathcal{N}(i)} w_{i j} \mathbf{h}_{j}^{\ell, E}\right)\))两个过程.
因此具体的,如果我们要在双曲空间中执行GNN,我们需要考虑如下问题:
首先我们必须要明确为什么我们不能直接将一些向量操作直接推广到双曲空间中.不妨考虑Poincare? Ball模型,向量都在单位圆内,如果直接做向量加法,显然向量会超出这个圆范围,因此直接推广其操作是不合理的,我们需要从数学流形上来对其进行严格推广.
TODO
原文:https://www.cnblogs.com/y1s1/p/13193375.html