張量分解(二) CP分解

2021-08-25 19:40:09 字數 1351 閱讀 2470

張量分解系列:

張量分解(一):基礎知識

張量分解(二):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 ...