什麼是張量
張量是多維數組的泛概念。一維數組我們通常稱之爲向量,二維數組我們通常稱之爲矩陣,但其實這些都是張量的一種。以此類推,我們也會有三維張量、四維張量以及五維張量。那麼零維張量是什麼呢?其實零維張量就是一個數。
張量的基本操作
兩個張量的內積
<χ,y>=i1=1∑I1i2=1∑I2...iN=1∑INxi1i2...iNyi1i2...iN
介紹
observation[I]=image[Iclean]+noise[η]
算法描述
張量簡介
高階奇異值分解(HOSVD)
什麼是奇異值分解
奇異值分解最早是Beltrami與1873年對實正方矩陣提出來的。Beltrami從雙線性函數:
f(x,y)=xTAy,A∈Rn×n
出發,通過引入線性變換x=Uξ,y=Vη,將雙線性函數變爲f(x,y)=ξTSη,其中:
S=UTAV
矩陣的奇異值分解
令A∈Rm×n,則存在正交矩陣U∈Rm×m和V∈Rn×n使得:
A=UΣVT
式中Σ=[Σ1ooo],且Σ1=diag(σ1,σ2,⋅⋅⋅,σr),其對角元素按照順序
σ1⩾σ2⩾⋅⋅⋅σr>0, r=rank(A)
排序。
酉矩陣 設A∈Cn×n,若A滿足AHA=I,則稱A爲酉矩陣。
奇異值分解的理論證明
設A∈Crm×n(r>0),則存在m階酉矩陣U和n階酉矩陣V使得:
UHAV=(Σooo)
式中:Σ=diag(σ1,σ2,⋅⋅⋅,σr),σi爲A的非零奇異值。而:
A=U(Σooo)VH
稱爲A的奇異值分解。
證明:由於AHA爲Hermite陣,則存在n階酉矩陣V使得:
VHAHAV=diag(λ1,λ2,⋅⋅⋅,λn)=(Σ2ooo)
將V分塊爲:
V=(V1,V2) (V1∈Cn×r,V2∈Cn×(n−r))
得:
V1HAHAV1=Σ2,V2HAHAV2=0
於是:
Σ−1V1HAHAV1Σ−1=Ir,(AV2)HAV2=0
從而AV2=0。又記U1=AV1Σ−1,則U1HU1=I,即U1的r個列是兩兩正交的單位向量。取U2∈Cm×(m−r)使U=(U1,U2)爲m階酉矩陣,即U2HU1=0,U2HU2=Im−r。則有:
UHAV=⎝⎛U1HU2H⎠⎞A(V1,V2)=⎝⎛U1HAV1U2HAV1U1HAV2U2HAV2⎠⎞=⎝⎛U1H(U1Σ)U2H(U1Σ)00⎠⎞=⎝⎛Σ000⎠⎞
奇異值分解的應用計算
求矩陣A=(110110)的奇異值分解。
解:因爲:
ATA=⎝⎛211110101⎠⎞
所以ATA的特徵值爲λ1=3,λ2=1,λ3=0,對應的特徵向量爲:
p1=⎝⎛211⎠⎞,p2=⎝⎛0−11⎠⎞,p3=⎝⎛−111⎠⎞
標準化得:
V=⎝⎜⎜⎜⎜⎜⎛6261610−2121−313131⎠⎟⎟⎟⎟⎟⎞
使得:
VHAHAV=⎝⎛310⎠⎞=(Σ20)
計算:
U1=AV1Σ−1=⎝⎛110110⎠⎞⎝⎜⎜⎜⎜⎜⎛6261610−2121⎠⎟⎟⎟⎟⎟⎞⎝⎛31001⎠⎞=⎝⎛212121−21⎠⎞
則U=U1是酉矩陣。故A的奇異值分解爲:
A=U(Σ 0)VH=⎝⎛212121−21⎠⎞⎝⎛300100⎠⎞⎝⎜⎜⎜⎜⎜⎛620−3161−2131612131⎠⎟⎟⎟⎟⎟⎞
什麼是高階奇異值分解
Tucker分解,又稱高階奇異值分解(higher-order SVD)。
Tucker分解與Tucker算子密切相關,而Tucker算子是張量與矩陣的多模態乘法的一種有效表示。
定義 令g∈KJ1×J2×⋅⋅⋅×JN,矩陣U(n)∈KIn×Jn,其中n∈{1,⋅⋅⋅N},則Tucker算子定義爲:
[[g;U(1),U(2),⋅⋅⋅,U(N)]]=g×1U(1)×2U(2)⋅⋅⋅×NU(N)
其結果是一個N階I1×I2×⋅⋅⋅×IN張量。
N階奇異值分解 每一個I1×I2×⋅⋅⋅×IN實張量χ均可以分解爲n-模式積:
χ=g×1U(1)×2U(2)⋅⋅⋅×NU(N)=[[g;U(1),U(2),⋅⋅⋅,U(N)]]
或
xi1i2⋅⋅⋅iN=j1=1∑J1j2=1∑J2⋅⋅⋅jN=1∑JNgi1i2⋅⋅⋅iNui1j1(1)ui2j2(2)⋅⋅⋅uiNjN(N)
其中
(1)U(n)=[u1(n),⋅⋅⋅,uJn(n)]是一個In×Jn半正交矩陣,即U(n)TU(n)=IJn,且Jn⩽In。
(知識補充:實矩陣Qm×n,它只滿足QQT=Im或者QTQ=Im,Q被稱爲半正交矩陣)
(2)核心張量g是一個J1×J2×⋅⋅⋅×JN張量,其子張量gjn=α是固定指標jn=α不變所得到的張量χ。子張量具有以下兩個性質:
全正交性 α=β的兩個子核心張量gjn=α和gjn=β正交
⟨gjn=αgjn=β⟩=0,∀α=β,n=1,⋅⋅⋅,N
排序
∥gin=1∥F≥∥gin=2∥F≥⋅⋅⋅≥∥gin=N∥F
高階奇異值分解的具體計算過程
N階張量的Tucker分解可以寫成一個統一的數學模型:
χ=f(U(1),U(2),⋅⋅⋅,U(N))+ε
式中U(n),n=1,⋅⋅⋅,N爲分解的因子或分量矩陣,ε爲N階噪聲或誤差張量。因此,因子矩陣可以通過下列優化問題求得:
(U^(1),⋅⋅⋅,U^(N))=U(1),⋅⋅⋅,U(N)argmin∥χ−f(U(1),U(2),⋅⋅⋅,U(N))∥22
這是一個N個變元耦合在一起的優化問題。求解這類耦合優化問題的有效方法是交替最小二乘(ALS)算法。
Tucker分解得交替最小二乘算法的基本思想
在第k+1次迭代中,利用在k+1次迭代中已更新的因子矩陣Uk+1(1),⋅⋅⋅,Uk+1(i−1)和在k此更新過的因子矩陣Uk+1(i+1),⋅⋅⋅,Uk+1(N),求因子矩陣U(1)的最小二乘解:
U^k+1(i)=U(i)argmin∥χ−f(Uk+1(1),⋅⋅⋅,Uk+1(i−1),U(i),Uk+1(i+1),⋅⋅⋅,Uk+1(N))∥22
其中i=1,⋅⋅⋅,N。對k=1,2,⋅⋅⋅,交替使用最小二乘法,直至所有因子矩陣收斂。
下面以張量的矩陣化的水平展開爲對象,討論Tucker3分解的優化問題的求解
A,B,C,G(P×QR)min∥X(I×JK)−AG(P×QR)(C⊗B)T∥22
根據交替最小二乘的原理,假定模式-2矩陣B、模式-3矩陣C和核心張量g的水平展開均固定,則上述優化問題就解耦爲僅含模式-1矩陣A的優化問題:
Amin∥X(I×JK)−AG(P×QR)(C⊗B)T∥22
相當於求解矩陣X(I×JK)=AG(P×QR)(C⊗B)T的最小二乘解。在矩陣方程的兩邊右乘矩陣(C⊗B),得:
X(I×JK)(C⊗B)=AG(P×QR)(C⊗B)T(C⊗B)
若對上式左邊得矩陣進行奇異值分解X(I×JK)(C⊗B)=U1S1V1T,則可取前P個左奇異向量作爲矩陣A得估計結果A^=U1(:,1:P)。這一運算可以簡潔表示爲[A,S,T]=SVD[X(I×JK)(C⊗B),P]。
交替最小二乘算法(alternating least square,ALS)
交替最小二乘方法最早由 Paatero與 Tapper用於非負矩陣分解。由於這種方法約束矩陣是非負的,所以現在習慣稱爲交替非負最小二乘算法。
非負矩陣分解XI×J=AI×KSK×J的優化問題:
A,Smin21∥X−AS∥F2 subject to A,S≥0
可以分解爲兩個交替非負最小二乘子問題:
ANLS1 S≥0minf1(S)=21∥AS−X∥F2 (A固定)ANLS2 A≥0minf1(AT)=21∥STAT−XT∥F2 (S固定)
這兩個交替非負最小二乘子問題相當於使用最小二乘方法交替求解矩陣方程AS=X和STAT=XT,其最小二乘解分別爲:
S=P+((ATA)†ATX)AT=P+((SST)†SXT)
當A或S在迭代過程中奇異時,算法將無法收斂。
約束非負矩陣分解(constrained nonnegative matrix factorization,CNMF)
CNMF A,Smin21(∥X−AS∥F2+α∥A∥F2+β∥S∥F2) subject to A,S≥0
式中,α≥0和β≥0是兩個正則化參數,分別起到壓制∥A∥F2和∥S∥F2的作用。
正則化非負矩陣分解問題可以分解爲兩個交替正則化非負最小二乘(ARNLS)問題:
ARNLS1 S∈R+J×KminJ1(S)=21∥AS−X∥F2+21β∥S∥F2 (A固定)ARNLS2 A∈R+I×JminJ2(AT)=21∥STAT−XT∥F2+21α∥A∥F2 (S固定)
由矩陣微分
dJ1(S)=21d(tr[(AS−X)T(AS−X)]+βtr(STS))=tr((STATA−XTA+βST)dS)dJ2(AT)=21d(tr[(AS−X)(AS−X)T]+αtr(ATA))=tr((ASST−XST+αA)dAT)
由此得梯度矩陣:
∂S∂J1(S)=−ATX+ATAS+βS∂A∂J2(AT)=−SXT+SSTAT+αAT
由∂S∂J1(S)=0和∂A∂J2(AT)=0分別得到兩個正則化最小二乘子問題得解爲:
(ATA+βIJ)S=ATX 或 S=(ATA+βIJ)−1ATX(SST+αIJ)AT=SXT 或 AT=(SST+αIJ)−1SXT
高階奇異值分解在去噪的方面的優勢?
均方誤差MSE(Mean Squared Error)
峯值信噪比PSNR(Peak Signal to Noise Ratio)
3D 塊匹配BM(Block-matching)
圖1 由高斯白噪聲(標準差爲15,均值爲0)破壞自然圖像的噪聲中的分組塊插圖。 每個片段都顯示一個標有"R"的參考圖塊,以及與之匹配的幾個圖塊。
高斯白噪聲
https://blog.csdn.net/qq_26309711/article/details/103157812
基於高階奇異值分解的去噪算法
c^n=cnc^+σ2c^
c^n:是過濾核
c^:是第一個通道的圖像核心
cn:是在第一個通道的輸出上使用塊匹配來生成噪聲圖像的核心
算法流程
kHard:patch size
chnls:the number of channels
nSxr:the number of similar patches to the patch at (i,j)