• 拉普拉斯------图拉普拉斯


    拉普拉斯------图拉普拉斯

    扩展

    拉普拉斯算子处理的对象一般是在欧氏空间中的,而图上的拉普拉斯则是将其拓展到了非欧氏空间上,并且其处理的数据不在是规则区域,而是具有一定拓扑结构的图。

    先从离散的拉普拉斯说起: [ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ] left[ egin{matrix}-1 & -1 & -1 \-1 & 8 & -1 \-1 & -1 & -1end{matrix} ight] 111181111或者 [ 1 1 1 1 − 8 1 1 1 1 ] left[ egin{matrix}1 & 1 & 1 \1 & -8 & 1 \1 & 1 & 1end{matrix} ight] 111181111

    这里算子的操作主要是对中心点的周围点进行运算,如果类比到图上的话就是对应顶点的邻接点。同样我们也需要定义一个关于顶点的函数来与之前的多元函数对应,并且还要相应的定义偏导与散度。

    形式

    邻接矩阵 W W W:对应描述了各顶点之间与边的关系,对应的 W i j W_{ij} Wij表示 i , j i,j i,j之间存在边(有向或无向),对应值为1(无权)或相应权值(有权),其余的元素为0。
    度矩阵 D D D:该矩阵是一个对角矩阵,如果是无向图就对应为每个点的度,分布到对角的相应区域,如果是有向图就是取顶点的出度或者入度作为元素。
    拉普拉斯矩阵 D − W D-W DW,度矩阵减去邻接矩阵。

    拉普拉斯矩阵为一个实对称矩阵,并且由于其各行各列的元素和为0,所以其不是一个正定矩阵,而是一个半正定矩阵。于是其特征值有 0 = λ 1 ⩽ λ 2 ⩽ λ 3 ⩽ λ 4 ⩽ λ 5 . . . . ⩽ λ n 0=lambda_1leqslantlambda_2leqslantlambda_3leqslantlambda_4leqslantlambda_5....leqslantlambda_n 0=λ1λ2λ3λ4λ5....λn特征值均为非负的。

    拉普拉斯矩阵还有其他的形式,比如将其标准化,也就是对角上的数值为1:
    D − 1 2 L D − 1 2 = I − D − 1 2 W D − 1 2 D^{-frac12}LD^{-frac12}=I-D^{-frac12}WD^{-frac12} D21LD21=ID21WD21
    其中的 I I I为单位矩阵。

    关联

    以一个图为例子:
    在这里插入图片描述
    其关联矩阵为 C = [ 1 1 0 0 0 0 0 0 0 − 1 1 0 0 − 1 0 1 − 1 0 0 − 1 1 0 0 0 0 0 − 1 1 0 0 1 0 0 0 0 0 − 1 1 − 1 0 0 0 0 0 0 0 0 − 1 ] C=left[ egin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0\0 & -1 & 1 & 0 & 0 & -1 & 0 & 1\-1 & 0 & 0 & -1 & 1 & 0 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0 & 1 & 0\0 & 0 & 0 & 0 & -1 & 1 & -1 & 0\0 & 0 & 0 & 0 & 0 & 0 & 0 & -1end{matrix} ight] C=101000110000010100001100001010010010000110010001
    其对应的行为顶点 V 1 − V 6 V_1-V_6 V1V6,其对应的列为边 e 1 − e 8 e_1-e_8 e1e8

    进行一个转置相乘 C C T = [ 1 1 0 0 0 0 0 0 0 − 1 1 0 0 − 1 0 1 − 1 0 0 − 1 1 0 0 0 0 0 − 1 1 0 0 1 0 0 0 0 0 − 1 1 − 1 0 0 0 0 0 0 0 0 − 1 ] [ 1 0 − 1 0 0 0 1 − 1 0 0 0 0 0 1 0 − 1 0 0 0 0 − 1 1 0 0 0 0 1 0 − 1 0 0 − 1 0 0 1 0 0 0 0 1 − 1 0 0 1 0 0 0 − 1 ] CC^T=left[ egin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0\0 & -1 & 1 & 0 & 0 & -1 & 0 & 1\-1 & 0 & 0 & -1 & 1 & 0 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0 & 1 & 0\0 & 0 & 0 & 0 & -1 & 1 & -1 & 0\0 & 0 & 0 & 0 & 0 & 0 & 0 & -1end{matrix} ight] left[ egin{matrix}1 & 0 & -1 & 0 & 0 & 0 \1 & -1 & 0 & 0 & 0 & 0 \0 & 1 & 0 & -1 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0\0 & 0 & 1 & 0 & -1 & 0\0 & -1 & 0 & 0 & 1 & 0 \0 & 0 & 0 & 1 & -1 & 0 \0 & 1 & 0 & 0 & 0 & -1end{matrix} ight] CCT=101000110000010100001100001010010010000110010001110000000110010110011000001100100000111000000001

    = [ 2 − 1 − 1 0 0 0 − 1 4 0 − 1 − 1 − 1 − 1 0 3 − 1 − 1 0 0 − 1 − 1 3 − 1 0 0 − 1 − 1 − 1 3 0 0 − 1 0 0 0 1 ] =left[ egin{matrix}2 & -1 & -1 & 0 & 0 & 0 \-1 & 4 & 0 & -1 & -1 & -1\-1 & 0 & 3 & -1 & -1 & 0 \0 & -1 & -1 & 3 & -1 & 0 \0 & -1 & -1 & -1 & 3 & 0 \0 & -1 & 0 & 0 & 0 & 1end{matrix} ight] =211000140111103110011310011130010001

    = [ 2 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0 1 ] − [ 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 ] =left[ egin{matrix}2 & 0 & 0 & 0 & 0 & 0 \0 & 4 & 0 & 0 & 0 & 0\0 & 0 & 3 & 0 & 0 & 0 \0 & 0 & 0 & 3 & 0 & 0 \0 & 0 & 0 & 0 & 3 & 0 \0 & 0 & 0 & 0 & 0 & 1end{matrix} ight]-left[ egin{matrix}0 & 1 & 1 & 0 & 0 & 0 \1 & 0 & 0 & 1 & 1 & 1\1 & 0 & 0 & 1 & 1 & 0 \0 & 1 & 1 & 0 & 1 & 0 \0 & 1 & 1 & 1 & 0 & 0 \0 & 1 & 0 & 0 & 0 & 0end{matrix} ight] =200000040000003000000300000030000001011000100111100110011010011100010000

    = D − W = L =D-W=L =DW=L
    我们通过对关联矩阵的运算得到了拉普拉斯矩阵的形式,但是其描述的是无向图,并且得到的矩阵是一个是实对称矩阵(有向图的描述就不一定了),拉普拉斯矩阵在这一形式下常用于无向图(转置的操作使得边的方向抵消),并且在频域卷积(GCNN中)的时候无向图是其前提条件,因此我们主要考虑的是其描述无向图的应用。

    类比

    在这里插入图片描述
    首先就是一个函数定义,对应到图中就是一个关于顶点的函数 F G ( V ) F_G(V) FG(V),对应离散的顶点就是其自变量,实现一个对顶点的映射。

    在欧式空间中,偏导变量之间是要有一个正交的关系的,而在图中我们可以认为各个邻接边之间都是正交的, f ( x 1 , . . . x n ) − f ( x 1 ′ , . . . x n ′ ) x 1 − x 1 ′ frac{f(x_1,...x_n)-f(x'_1,...x'_n)}{x_1-x'_1} x1x1f(x1,...xn)f(x1,...xn)描述在 x 1 x_1 x1方向上的变化率( x 1 ′ = x 1 + d x 1 x'_1=x_1+dx_1 x1=x1+dx1),其中分母为函数值的差,同样在图中也可以由 F G ( V 2 ) − F G ( V 1 ) F_G(V_2)-F_G(V_1) FG(V2)FG(V1)来表示,分子表示的就是自变量的变化,类比到图上就是两点之间的边,对应 V 1 , V 2 V_1,V_2 V1,V2就是需要 e 12 e_{12} e12(顶点1,2之间的边),但是这里描述时并不是以边的权值为分母,而是以其倒数,对应所有边表示的方向上的梯度就有如下的形式:

    [ e 1 ( F G ( V 1 ) − F G ( V 3 ) ) e 2 ( F G ( V 1 ) − F G ( V 2 ) ) e 3 ( F G ( V 2 ) − F G ( V 4 ) ) e 4 ( F G ( V 4 ) − F G ( V 3 ) ) e 5 ( F G ( V 3 ) − F G ( V 5 ) ) e 6 ( F G ( V 5 ) − F G ( V 2 ) ) e 7 ( F G ( V 4 ) − F G ( V 5 ) ) e 8 ( F G ( V 2 ) − F G ( V 6 ) ) ] = [ e 1 0 − e 1 0 0 0 e 2 − e 2 0 0 0 0 0 e 3 0 − e 3 0 0 0 0 − e 4 e 4 0 0 0 0 e 5 0 − e 5 0 0 − e 6 0 0 e 6 0 0 0 0 e 7 − e 7 0 0 e 8 0 0 0 − e 8 ] [ F G ( V 1 ) F G ( V 2 ) F G ( V 3 ) F G ( V 4 ) F G ( V 5 ) F G ( V 6 ) F G ( V 7 ) F G ( V 8 ) ] left[ egin{matrix}e_1(F_G(V_1)-F_G(V_3))\e_2(F_G(V_1)-F_G(V_2))\e_3(F_G(V_2)-F_G(V_4))\e_4(F_G(V_4)-F_G(V_3)) \e_5(F_G(V_3)-F_G(V_5))\e_6(F_G(V_5)-F_G(V_2))\e_7(F_G(V_4)-F_G(V_5))\e_8(F_G(V_2)-F_G(V_6))end{matrix} ight]=left[ egin{matrix}e_1&0&-e_1&0&0&0\e_2&-e_2&0&0&0&0\0&e_3&0&-e_3&0&0\0&0&-e_4&e_4&0&0\0&0&e_5&0&-e_5&0\0&-e_6&0&0&e_6&0\0&0&0&e_7&-e_7&0\0&e_8&0&0&0&-e_8end{matrix} ight]left[ egin{matrix}F_G(V_1)\F_G(V_2)\F_G(V_3)\F_G(V_4)\F_G(V_5)\F_G(V_6)\F_G(V_7)\F_G(V_8)end{matrix} ight] e1(FG(V1)FG(V3))e2(FG(V1)FG(V2))e3(FG(V2)FG(V4))e4(FG(V4)FG(V3))e5(FG(V3)FG(V5))e6(FG(V5)FG(V2))e7(FG(V4)FG(V5))e8(FG(V2)FG(V6))=e1e20000000e2e300e60e8e100e4e500000e3e400e700000e5e6e700000000e8FG(V1)FG(V2)FG(V3)FG(V4)FG(V5)FG(V6)FG(V7)FG(V8)

    我们记每个边的梯度为 g r a d ( e ) grad(e) grad(e),之后相应的定义散度,用顶点处梯度的变化来描述,对应流入的梯度减去流出的梯度,于是有:
    [ g r a d ( e 1 ) + g r a d ( e 2 ) − g r a d ( e 2 ) + g r a d ( e 3 ) − g r a d ( e 6 ) + g r a d ( e 8 ) − g r a d ( e 1 ) − g r a d ( e 4 ) + g r a d ( e 5 ) − g r a d ( e 3 ) + g r a d ( e 4 ) − g r a d ( e 7 ) − g r a d ( e 5 ) + g r a d ( e 6 ) − g r a d ( e 7 ) − g r a d ( e 8 ) ] = [ 1 1 0 0 0 0 0 0 0 − 1 1 0 0 − 1 0 1 − 1 0 0 − 1 1 0 0 0 0 0 − 1 1 0 0 1 0 0 0 0 0 − 1 1 − 1 0 0 0 0 0 0 0 0 − 1 ] [ g r a d ( e 1 ) g r a d ( e 2 ) g r a d ( e 3 ) g r a d ( e 4 ) g r a d ( e 5 ) g r a d ( e 6 ) g r a d ( e 7 ) g r a d ( e 8 ) ] left[ egin{matrix}grad(e_1)+grad(e_2)\-grad(e_2)+grad(e_3)-grad(e_6)+grad(e_8)\-grad(e_1)-grad(e_4)+grad(e_5)\-grad(e_3)+grad(e_4)-grad(e_7)\-grad(e_5)+grad(e_6)-grad(e_7)\-grad(e_8)end{matrix} ight]=left[ egin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0\0 & -1 & 1 & 0 & 0 & -1 & 0 & 1\-1 & 0 & 0 & -1 & 1 & 0 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0 & 1 & 0\0 & 0 & 0 & 0 & -1 & 1 & -1 & 0\0 & 0 & 0 & 0 & 0 & 0 & 0 & -1end{matrix} ight]left[ egin{matrix}grad(e_1)\grad(e_2)\grad(e_3)\grad(e_4)\grad(e_5)\grad(e_6)\grad(e_7)\grad(e_8)end{matrix} ight] grad(e1)+grad(e2)grad(e2)+grad(e3)grad(e6)+grad(e8)grad(e1)grad(e4)+grad(e5)grad(e3)+grad(e4)grad(e7)grad(e5)+grad(e6)grad(e7)grad(e8)=101000110000010100001100001010010010000110010001grad(e1)grad(e2)grad(e3)grad(e4)grad(e5)grad(e6)grad(e7)grad(e8)
    与之前的相关矩阵的运算对应。

    距离

    对应于欧氏空间中的两点之间的距离(坐标差的平方和),拉普拉斯矩阵其实也对应相似的操作,对应顶点的函数 f ( V i ) f(V_i) f(Vi)与拉普拉斯矩阵 L L L
    f T L f = f T ( D − W ) f = f T D f − f T W f f^TLf=f^T(D-W)f=f^TDf-f^TWf fTLf=fT(DW)f=fTDffTWf
    = ∑ i = 1 n d ( V i ) f ( V i ) 2 − ∑ i , j = 1 n W i j f ( V i ) f ( V j ) =sum_{i=1}^nd(V_i)f(V_i)^2-sum_{i,j=1}^nW_{ij}f(V_i)f(V_j) =i=1nd(Vi)f(Vi)2i,j=1nWijf(Vi)f(Vj)
    = 1 2 ( ∑ i = 1 n d ( V i ) f ( V i ) 2 + ∑ j = 1 n d ( V j ) f ( V j ) 2 − 2 ∑ i , j = 1 n W i j f ( V i ) f ( V j ) ) =frac12(sum_{i=1}^nd(V_i)f(V_i)^2+sum_{j=1}^nd(V_j)f(V_j)^2-2sum_{i,j=1}^nW_{ij}f(V_i)f(V_j)) =21(i=1nd(Vi)f(Vi)2+j=1nd(Vj)f(Vj)22i,j=1nWijf(Vi)f(Vj))
    由于 d ( V i ) d(V_i) d(Vi)为顶点的度,所以有 d ( V i ) = ∑ j = 1 n W i j d(V_i)=sum_{j=1}^nW_{ij} d(Vi)=j=1nWij,原式为:
    = 1 2 ∑ i , j = 1 n W i j ( f ( V i ) − f ( V j ) ) 2 =frac12sum_{i,j=1}^nW_{ij}(f(V_i)-f(V_j))^2 =21i,j=1nWij(f(Vi)f(Vj))2
    有类似欧式距离的形式。

  • 相关阅读:
    深入浅出Vue基于“依赖收集”的响应式原理(转)
    10道初级渗透测试面试题,测测你离职场有多远?
    CTF必备技能丨Linux Pwn入门教程——格式化字符串漏洞
    CTF必备技能丨Linux Pwn入门教程——利用漏洞获取libc
    CTF必备技能丨Linux Pwn入门教程——调整栈帧的技巧
    CTF必备技能丨Linux Pwn入门教程——ROP技术(下)
    用实力燃爆暑期丨i春秋渗透测试工程师线下就业班开课了!
    CTF必备技能丨Linux Pwn入门教程——ROP技术(上)
    CTF必备技能丨Linux Pwn入门教程——ShellCode
    CTF必备技能丨Linux Pwn入门教程——栈溢出基础
  • 原文地址:https://www.cnblogs.com/yanzs/p/13788227.html
Copyright © 2020-2023  润新知