張量分解系列:
張量分解(一):基礎知識
張量分解(二):cp分解
張量分解(三):tucker分解
張量分解(四):tensor-train decomposition
張量分解(五):tensorizing neural network
張量分解(六):ttrnn model for video classification
\lambda
λ對三維向量a,b
,ca,b,c
a,b,
c進行歸一化:
當然,這是當核是三維的情況下,當核是n維時,同個道理:
以上,就是cp分解的介紹。
接下來,我將講一下cp分解的優化。上面我們已經有了cp分解的形式了,那麼我們怎麼去優化所有引數,使得分解後跟分解前盡可能的相似呢?
乙個常用的方法是使用交替最小二乘法(the alternating least squares,als)去優化。我們以三維張量為例,如下所示:
其中,x
xx為已知的張量,x
^\hat x
x^為待優化的引數,已經被分解成向量外積的形式。
我們這裡的優化方法是:先固定b,c
b,cb,
c,優化a
aa;接著固定a,c
a,ca,
c,優化b
bb;固定a,b
a,ba,
b,優化c
cc;然後繼續迭代,直到達到終止條件(達到迭代次數或者損失不再降低等)。
對於引數a
aa,完整的優化過程如下圖所示:
引數b ,c
b,cb,
c同理,然後不斷迭代即可。
n維tensor完整的交替最小二乘法優化cp分解引數的過程如下圖:
以上,便是關於cp分解的所有內容。
cp分解實現 張量分解 一 資料篇
暫時不接觸張量了,但是之前有些工作還是要總結一下,否則總是心裡不踏實,有空我就補上一些,別指望我能更很快哦。首先我們來看看一些工具吧。這裡介紹的都是python相關的,matlab看看需不需要補吧。算是比較良心的乙個python庫,cp分解,tucker分解,以及tt分解 貌似最近更新的 的都有。支...
CP分解和Tucker分解的區別
cp分解圖示 tucker分解圖示 兩者的區別如下 1.主要區別 核張量 core tensor tucker分解的結果會形成乙個核張量,即pca中的主成分因子,來表示原張量的主要性質,而cp分解沒有核張量。2.tensor分解是n 秩與低秩近似,而cp分解是秩與低秩近似 在cp分解時我們都是先固定...
ALS計算CP分解
眾所周知,cp分解就是將乙個張量分解為一系列秩一張量之和。那麼在計算cp分解之前,首先我們會遇到的乙個問題就是如何確定張量的秩?也就是應該選擇多少個秩一張量來組成原始張量呢?不幸的是,確定張量的秩是乙個np hard問題,目前,已知的只能夠確定乙個張量秩的上界。例如,對於乙個一般的三維張量而言,r ...