• 矩阵分析与应用+张贤达


    第一章 矩阵与线性方程组(二十五)

    1. 举例Hadamard积的应用

    令观测数据模型由
    x k = A s k , k = 1 , 2 , … , N x_k=As_k, k=1,2,…,N xk=Ask,k=1,2,,N
    给出,其中 x k x_k xk s k s_k sk分别是 k k k时刻的 m m m维观测向量和 n n n维源信号向量, A A A是表示信号线性混合状况的矩阵,称为混合矩阵。
    现在,希望自适应更新权矩阵 W k W_k Wk,使得
    y k = W k x k y_k=W_kx_k yk=Wkxk
    是信号向量 s k s_k sk的估计。这个问题称为盲信号分离问题
    盲信号分离有三种典型的最小均方(LMS)型自适应算法:
    自然梯度算法,EASI算法和迭代求逆算法。

    这三类算法更新权矩阵的公式可以统一写作
    W k + 1 = W k + η k G ( y k ) W k (1) W_{k+1}=W_k+\eta_kG(y_k)W_k \tag{1} Wk+1=Wk+ηkG(yk)Wk(1)
    不同的算法体现在非线性函数 G ( y k ) G(y_k) G(yk)的选择不同。式中, n k n_k nk称为学习步长或者学习速率,它的选择决定自适应算法的收敛速率和信号跟踪性能。
    当学习速率 η k \eta_k ηk固定时,要兼顾收敛速率和信号恢复质量是困难的。因此, η k \eta_k ηk通常取时变函数。最简单的做法是取时间递减函数,更好的选择是采用自适应的学习速率,但它们都没有和信号的分离状态或者相依性直接挂钩,效果有限。为了克服这缺陷,提出了分阶段学习的盲信号分离算法:
    W k + 1 = W k + Λ k ⊙ G ( y k ) W k (2) W_{k+1}=W_k+\Lambda_k \odot G(y_k)W_k \tag{2} Wk+1=Wk+ΛkG(yk)Wk(2)
    即使用学习速率矩阵 A k A_k Ak取代一维的学习速率 η k \eta_k ηk。式中, A ⊙ B A \odot B AB表示矩阵 A A A B B B的Hadamard积。

    整个信号分离过程分为三个阶段,每个阶段使用的学习速率矩阵不同:
    (1)初始阶段:为加速混合信号的分离,对所有信号分量采用大的学习速率 η k \eta_k ηk。此时,学习速率矩阵取 Λ k = η k I \Lambda_k=\eta_kI Λk=ηkI,(2)式的盲信号分离算法取(1)式的形式。
    (2)捕捉阶段:为了捕捉到所有的信号分量,并考虑到有的信号可能已被分离或者被部分分离,因此对所有信号分量采用相同学习速率不再是最优。为了在跟踪已分离信号的同时,加速捕捉未分离的信号,宜对不同的信号采用不同的学习速率:根据分离的程度(其测度为不同信号之间的二阶和高阶相关系数),分离程度越好的信号使用越小的学习速率;反之,分离程度越差的信号使用越大的学习速率。具体而言,此阶段取学习速率矩阵KaTeX parse error: Undefined control sequence: \Lambbda at position 1: \̲L̲a̲m̲b̲b̲d̲a̲_k=D_k为对角矩阵,对角元素对应为不同信号分量的学习速率。此时,盲信号分离算法式简化为
    W k + 1 = W k + D k G ( y k ) W k (3) W_{k+1}=W_k+D_kG(y_k)W_k \tag{3} Wk+1=Wk+DkG(yk)Wk(3)
    因为 D k ⊙ G ( y k ) = D k G ( y k ) D_k \odot G(y_k)=D_kG(y_k) DkG(yk)=DkG(yk)
    (3)跟踪阶段:一旦捕捉到所有的信号分量,信号分离便进入跟踪阶段。在本阶段,学习速率矩阵 Λ k \Lambda_k Λk的各个元素取小的值,盲信号分离算法取(2)式的形式。

    2.矩阵化函数和向量化函数

    矩阵与向量之间存在相互转换的函数。
    定义
    一个 m n × 1 mn\times 1 mn×1向量 a = [ a 1 , a 2 , … , a m n ] T a=[a_1,a_2,…,a_{mn}]^T a=[a1,a2,,amn]T的矩阵化函数 u n v e c m , m unvec_{m,m} unvecm,m是一个将 m n mn mn个元素的列向量转化为 m × n m\times n m×n矩阵的算子,即
    u n v e c m , n ( a ) = A m × n = [ a 1 a m + 1 ⋯ a m ( n − 1 ) + 1 a 2 a m + 2 ⋯ a m ( n − 1 ) + 2 ⋮ ⋮ ⋮ a m a 2 m ⋯ a m n ] unvec_{m,n}(a)=A_{m\times n}=

    [a1am+1am(n1)+1a2am+2am(n1)+2ama2mamn]" role="presentation" style="position: relative;">[a1am+1am(n1)+1a2am+2am(n1)+2ama2mamn]
    unvecm,n(a)=Am×n= a1a2amam+1am+2a2mam(n1)+1am(n1)+2amn
    相反,若 A = [ a i j ] A=[a_{ij}] A=[aij]是一个 m × n m\times n m×n矩阵,则 A A A的向量化函数 v e c ( A ) vec(A) vec(A)是一个 m n × 1 mn\times 1 mn×1向量,其元素是 A A A的元素的字典式排序,即
    [ a 11 ⋮ a m 1 ⋮ a 1 n ⋮ a m n ]
    [a11am1a1namn]" role="presentation" style="position: relative;">[a11am1a1namn]
    a11am1a1namn

    矩阵元素的字典式排序也称按列堆栈

    根据定义,矩阵化算子和向量化算子有以下关系:
    u n v e c m , n ( a ) = A m × n ⇒ v e c ( A m × n ) = a unvec_{m,n}(a)=A_{m\times n}\Rightarrow vec(A_{m\times n})=a unvecm,n(a)=Am×nvec(Am×n)=a
    矩阵也可以按行堆栈为行向量,称为矩阵的行向量化,用符号
    r v e c ( A ) rvec(A) rvec(A)表示,定义为
    r v e c ( A ) = [ a 11 , … , a 1 n , . . . , a m 1 , … , a m n rvec(A)=[a_{11},…,a_{1n},...,a_{m1},…,a_{mn} rvec(A)=[a11,,a1n,...,am1,,amn
    注意,矩阵的向量化结果为列向量,行向量化结果为行向量。显然,矩阵的向量化和行向量化之间存在以下关系;
    r v c c ( A ) = ( v e c ( A T ) ) T , v e c ( A T ) = ( r v e c ( A ) ) T rvcc(A)=(vec(A^T))^T,vec(A^T)=(rvec(A))^T rvcc(A)=(vec(AT))Tvec(AT)=(rvec(A))T

    对一幅图像进行采样,采样数据组成一矩阵。为了传送图像信号,通常先按行扫描,然后将各行数据串接起来。因此,这是一种典型的行向量化。

    根据定义,容易证明矩阵的向量化算子vec与迹之间有以下关系:
    t r ( A T B ) = ( v e c ( A ) ) T v e c ( B ) tr(A^TB)=(vec(A))^Tvec(B) tr(ATB)=(vec(A))Tvec(B)
    m × n m\times n m×n矩阵 A A A B B B的Hadamard积的向量化函数为
    v e c ( A ⊙ B ) = v e c ( A ) ⊙ v e c ( B ) vec(A\odot B)=vec(A)\odot vec(B) vec(AB)=vec(A)vec(B)
    v e c ( A ⊙ B ) = d i a g ( v e c ( A ) ) v e c ( B ) = d i a g ( v e c ( B ) ) v e c ( A ) vec(A\odot B)=diag(vec(A))vec(B)=diag(vec(B))vec(A) vec(AB)=diag(vec(A))vec(B)=diag(vec(B))vec(A)
    式中, d i a g ( v e c ( A ) ) diag(vec(A)) diag(vec(A))表示用向量化函数 v e c ( A ) vec(A) vec(A)的各个元素依次为对角元素的对角矩阵。
    显然,对于一个 m × n m\times n m×n矩阵 A A A,向量 v e c ( A ) vec(A) vec(A) v e c ( A T ) vec(A^T) vec(AT)含有相同的元素,但排列次序不同。因此,存在一个唯一的 m n × m n mn\times mn mn×mn置换矩阵,可以将 v e c ( A ) vec(A) vec(A)变换为 v e c ( A T ) vec(A^T) vec(AT)。这一置换矩阵称为交换矩阵,记作 K m n K_{mn} Kmn,即其满足
    K m n v e c ( A ) = v e c ( A T ) K_{mn}vec(A)=vec(A^T) Kmnvec(A)=vec(AT)
    容易验证交换矩阵具有以下性质:
    K m n T = K m n − 1 = K n m K_{mn}^T=K_{mn}^{-1}=K_{nm} KmnT=Kmn1=Knm
    由于 K m n T K m n = K m n K m n T = I m n K_{mn}^TK_{mn}=K_{mn}K_{mn}^T=I_{mn} KmnTKmn=KmnKmnT=Imn,故交换矩阵 K m n K_{mn} Kmn为正交矩阵。
    m n × m n mn\times mn mn×mn交换矩阵 K m n K_{mn} Kmn的构造方法如下:每一行只赋一个元素1,其他元素全部为0。首先,第1行第1个元素为1,然后这个1元素右移m位,变成第2行该位置的1元素。第2行该位置的1元素右移m位,又变成第3行该位置的1元素。依此类推,找到下一行1元素的位置。但是,如果向右移位时超过第mn列,则应该转到下一行继续移位,并且多移1位,并在此位置赋1。例如,
    K 24 = [ 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 ] , K 42 = [ 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 ] , K_{24}=

    [100000000001000000000001000000000010010000000000010000000000100000000001]" role="presentation" style="position: relative;">[100000000001000000000001000000000010010000000000010000000000100000000001]
    ,K_{42}=
    [100000000000010000010000000000000100001000000000000010000100100000000001]" role="presentation" style="position: relative;">[100000000000010000010000000000000100001000000000000010000100100000000001]
    , K24= 100000000000100001000000000000000000010000100000000000100001000000000001 ,K42= 100000000010000000001000000000100100000000000000000100100000010000000001 ,
    因此,交换矩阵 K m n K_{mn} Kmn K n m K_{nm} Knm是唯一确定的。以矩阵 A 4 × 2 A_{4\times 2} A4×2为例,显然
    K 42 v e c ( A ) = [ 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 ] [ a 11 a 21 a 31 a 41 a 12 a 22 a 32 a 42 ] = [ a 11 a 12 a 13 a 14 a 22 a 31 a 32 a 42 ] = v e c ( A T ) K_{42}vec(A) =
    [100000000000010000010000000000000100001000000000000010000100100000000001]" role="presentation" style="position: relative;">[100000000000010000010000000000000100001000000000000010000100100000000001]
    [a11a21a31a41a12a22a32a42]" role="presentation" style="position: relative;">[a11a21a31a41a12a22a32a42]
    =
    [a11a12a13a14a22a31a32a42]" role="presentation" style="position: relative;">[a11a12a13a14a22a31a32a42]
    =vec(A^T)
    K42vec(A)= 100000000010000000001000000000100100000000000000000100100000010000000001 a11a21a31a41a12a22a32a42 = a11a12a13a14a22a31a32a42 =vec(AT)

    3. Kronecker积

    Kronecker积是表示矩阵特殊乘积的一种简洁数学符号。一个 m × n m\times n m×n矩阵 A A A和一个 p × q p\times q p×q矩阵 B B B的Kronecker积记作 A ⊗ B A\otimes B AB,它是一个 m p × n q mp\times nq mp×nq矩阵。
    定义 (右Kronecker积)
    m × n m\times n m×n矩阵 A A A p × q p\times q p×q矩阵 B B B的右Kronecker积 A ⊗ B A\otimes B AB定义为
    A ⊗ B = [ a i j B ] = [ a 11 B a 12 B ⋯ a 1 n B a 21 B a 22 B ⋯ a 2 n B ⋮ ⋮ ⋮ a m 1 B a m 2 B ⋯ a m n B ] A \otimes B=[a_{ij}B]=

    [a11Ba12Ba1nBa21Ba22Ba2nBam1Bam2BamnB]" role="presentation" style="position: relative;">[a11Ba12Ba1nBa21Ba22Ba2nBam1Bam2BamnB]
    AB=[aijB]= a11Ba21Bam1Ba12Ba22Bam2Ba1nBa2nBamnB
    定义 (左Kronecker积)
    m × n m\times n m×n矩阵 A A A p × g p\times g p×g矩阵 B B B的左Kronecker
    A ⊗ B A \otimes B AB定义为
    [ A ⊗ B ] l e f t = [ A b i j ] = [ A b 11 A b 12 ⋯ A b 1 q A b 21 A b 22 ⋯ A b 2 q ⋮ ⋮ ⋮ A b p 1 A b p 2 ⋯ A b b q ] [A \otimes B]_{left}=[Ab_{ij}]=
    [Ab11Ab12Ab1qAb21Ab22Ab2qAbp1Abp2Abbq]" role="presentation" style="position: relative;">[Ab11Ab12Ab1qAb21Ab22Ab2qAbp1Abp2Abbq]
    [AB]left=[Abij]= Ab11Ab21Abp1Ab12Ab22Abp2Ab1qAb2qAbbq

    容易看出,如果用右Kronecker积的形式书写,则左Kronecker积可写成 [ A ⊗ B ] l e f t = B ⊗ A [A\otimes B]_{left}= B\otimes A [AB]left=BA。由于这一原因,为了避免混淆,今后将对Kronecker积采用右Kronecker积的定义,除非另有申明。

    Kronecker积也称直积或者张量积。若
    矩阵 A m × n = a b T A_{m\times n}=ab^T Am×n=abT,则
    v e c ( a b T ) = b ⊗ a vec(ab^T)=b\otimes a vec(abT)=ba
    如下面的定理所述,向量化算子的这一性质公式可以推广为矩阵乘积的向量化公式。
    定理
    A m × p , B p × q , C q × n A_{m\times p},B_{p\times q},C_{q\times n} Am×p,Bp×q,Cq×n,则
    v e c ( A B C ) = ( C T ⊗ A ) v e c ( B ) vec(ABC)=(C^T\otimes A)vec(B) vec(ABC)=(CTA)vec(B)

    定理的两个特例:
    (1)若 A A A为单位矩阵 I m I_m Im,而 B ∈ R m × q , C ∈ R q × n B\in R^{m\times q},C\in R^{q\times n} BRm×q,CRq×n,则
    v e c ( B C ) = ( C T ⊗ I m ) v e c ( B ) = ( C T ⊗ B ) v e c ( I q ) = ( I n ⊗ B ) v e c ( C ) vec(BC)=(C^T\otimes I_m)vec(B)=(C^T\otimes B)vec(I_q)=(I_n\otimes B)vec(C) vec(BC)=(CTIm)vec(B)=(CTB)vec(Iq)=(InB)vec(C)
    (2)若 C = d C=d C=d q q q向量,则
    A B d = v e c ( A B d ) = ( d T ⊗ A ) v e c ( B ) = ( A ⊗ d T ) v e c ( B T ) ABd=vec(ABd)=(d^T\otimes A)vec(B)=(A\otimes d^T)vec(B^T) ABd=vec(ABd)=(dTA)vec(B)=(AdT)vec(BT)

    Kronecker积具有以下性质。
    (1)对于矩阵 A m × n A_{m\times n} Am×n B p × q B_{p\times q} Bp×q,一般有 A ⊗ B ≠ B ⊗ A A\otimes B≠B\otimes A AB=BA
    (2)任意矩阵与零矩阵的Kronecker积等于零矩阵,即 A ⊗ O = O ⊗ A = O A\otimes O=O\otimes A=O AO=OA=O
    (3)若 α \alpha α β \beta β为常数,则
    α A ⊗ β B = α β ( A ⊗ B ) \alpha A\otimes \beta B=\alpha \beta (A\otimes B) αAβB=αβ(AB)
    (4)对于矩阵 A m × n , B n × k , C l × p , D p × q A_{m\times n},B_{n\times k},C_{l\times p},D_{p\times q} Am×n,Bn×k,Cl×p,Dp×q,有
    A B ⊗ C D = ( A ⊗ C ) ( B ⊗ D ) AB\otimes CD=(A\otimes C)(B\otimes D) ABCD=(AC)(BD)
    (5)对于矩阵 A m × n , B p × q , C p × q A_{m\times n},B_{p\times q},C_{p\times q} Am×n,Bp×q,Cp×q,有
    A ⊗ ( B ± C ) = A ⊗ B ± A ⊗ C A\otimes(B±C)=A\otimes B± A\otimes C A(B±C)=AB±AC
    ( B ± C ) ⊗ A = B ⊗ A ± C ⊗ A (B±C)\otimes A=B\otimes A±C\otimes A (B±C)A=BA±CA
    (6)若矩阵 A A A B B B分别有广义逆矩阵 A + A^+ A+ B + B^+ B+,则
    ( A ⊗ B ) + = A + ⊗ B + (A\otimes B)^+=A^+\otimes B^+ (AB)+=A+B+
    特别地,若 A A A B B B是可逆的正方矩阵,则
    ( A ⊗ B ) − 1 = A − 1 ⊗ B − 1 (A \otimes B)^{-1} = A^{-1}\otimes B^{-1} (AB)1=A1B1
    (7)对于矩阵 A m × n A_{m\times n} Am×n B p × q B_{p\times q} Bp×q,有
    ( A ⊗ B ) T = A T ⊗ B T (A\otimes B)^T = A^T \otimes B^T (AB)T=ATBT
    ( A ⊗ B ) H = A H ⊗ B H (A\otimes B)^H= A^H\otimes B^H (AB)H=AHBH
    (8)对于矩阵 A m × n A_{m\times n} Am×n B p × q B_{p\times q} Bp×q,有
    r a n k ( A ⊗ B ) = r a n k ( A ) r a n k ( B ) rank(A\otimes B)=rank(A)rank(B) rank(AB)=rank(A)rank(B)
    (9)若 A A A m × m m\times m m×m矩阵, B B B n × n n\times n n×n矩阵,则
    d e t ( A ⊗ B ) = ( d e t ( A ) ) n ( d e t ( B ) ) m det(A\otimes B)=(det(A))^n(det(B))^m det(AB)=(det(A))n(det(B))m
    (10)若 A A A m × m m\times m m×m矩阵, B B B n × n n\times n n×n矩阵,则
    t r ( A ⊗ B ) = t r ( A ) t r ( B ) tr(A\otimes B)=tr(A)tr(B) tr(AB)=tr(A)tr(B)
    (11)对于矩阵 A m × n , B m × n , C p × q , D p × q A_{m\times n},B_{m\times n},C_{p\times q},D_{p\times q} Am×n,Bm×nCp×qDp×q,有
    ( A + B ) ⊗ ( C + D ) = A ⊗ C + A ⊗ D + B ⊗ C + B ⊗ D (A+B)\otimes (C+D)=A\otimes C+A\otimes D+B\otimes C+B\otimes D (A+B)(C+D)=AC+AD+BC+BD
    更一般地,有
    [ ∑ i = 1 M A ( i ) ] ⊗ [ ∑ j = 1 N B ( j ) ] = ∑ i = 1 M ∑ j = 1 N [ A ( i ) ⊗ B ( j ) ]

    [i=1MA(i)]" role="presentation" style="position: relative;">[i=1MA(i)]
    \otimes
    [j=1NB(j)]" role="presentation" style="position: relative;">[j=1NB(j)]
    =\sum_{i=1}^M\sum_{j=1}^N[A(i)\otimes B(j)] [i=1MA(i)][j=1NB(j)]=i=1Mj=1N[A(i)B(j)]
    (12)对于矩阵 A m × n , B k × l , C p × q , D r × s A_{m\times n},B_{k\times l},C_{p\times q},D_{r\times s} Am×nBk×lCp×qDr×s,有
    ( A ⊗ B ) ⊗ ( C ⊗ D ) = A ⊗ B ⊗ C ⊗ D (A\otimes B)\otimes(C\otimes D)=A\otimes B\otimes C\otimes D (AB)(CD)=ABCD
    (13)若 α i \alpha_i αi是矩阵 A A A与特征值 λ i \lambda_i λi对应的特征向量, β i \beta_i βi是矩阵 B B B与特征值 μ i μ_i μi对应的特征向量,则 α i ⊗ β i \alpha_i \otimes \beta_i αiβi是矩阵 A ⊗ B A\otimes B AB与特征值 λ i μ i \lambda_iμ_i λiμi对应的特征向量,也是与特征值 λ i + μ i \lambda_i+μ_i λi+μi对应的特征向量。
    (14)对于矩阵 A m × n , B p × q , C k × l A_{m\times n},B_{p\times q},C_{k\times l} Am×nBp×q,Ck×l,有
    ( A ⊗ B ) ⊗ C = A ⊗ ( B ⊗ C ) (A\otimes B)\otimes C=A\otimes (B\otimes C) (AB)C=A(BC)
    A ⊗ B ⊗ C A\otimes B\otimes C ABC的结果是无模糊的。
    (15)对于矩阵 A m × n , B p × q , C n × r , D q × s A_{m\times n},B_{p\times q},C_{n\times r},D_{q\times s} Am×nBp×qCn×rDq×s,有
    ( A ⊗ B ) ( C ⊗ D ) = A C ⊗ B D (A\otimes B)(C\otimes D)=AC\otimes BD (AB)(CD)=ACBD
    (16)对于矩阵 A m × n , B p × q A_{m\times n},B_{p\times q} Am×nBp×q,有
    e x p ( A ⊗ B ) = e x p ( A ) ⊗ e x p ( B ) exp(A\otimes B)=exp(A)\otimes exp(B) exp(AB)=exp(A)exp(B)
    (17)作为式(15)的特例,若 B = I p B=I_p B=Ip C = I p C=I_p C=Ip,则
    A ⊗ D = ( A I p ) ⊗ ( I q D ) = ( A ⊗ I q ) ( I q ⊗ D ) A\otimes D=(AI_p)\otimes (I_qD)=(A\otimes I_q)(I_q\otimes D) AD=(AIp)(IqD)=(AIq)(IqD)
    式中, I q ⊗ D I_q\otimes D IqD为块对角矩阵(对右Kronecker积)或稀疏矩阵(对左Kronecker积),而 A ⊗ I q A\otimes I_q AIq为稀疏矩阵(对右Kronecker积)或块对角矩阵(对左Kronecker积)。

  • 相关阅读:
    使用时间序列数据预测《Apex英雄》的玩家活跃数据
    使用Watchtower实现Docker容器自动更新
    132 分割回文串II
    Docker中php安装redis扩展
    单链表的定义(数据结构与算法)
    商业化广告--体系学习--5--广告产品存在那些共性和区别
    Kubernetes集群部署
    如何解决Web前端安全问题?
    【ansible】自动化运维ansible之playbook剧本编写与运行
    Android 各版本及API对照表
  • 原文地址:https://blog.csdn.net/m0_45085885/article/details/126127487