CP分解

CP分解

將高維的張量分解成為Rank-One Tensors的和。

\mathbf{X} \approx \sum _ { r = 1 } ^ { R } \mathbf { a } _ { r } \circ \mathbf { b } _ { r } \circ \mathbf { c } _ { r }

這里的\circ是指的外積畦徘。

上面的式子也可以展開成:

x _ { i j k } \approx \sum _ { r = 1 } ^ { R } a _ { i r } b _ { j r } c _ { k r } \text { for } i = 1 , \ldots , I , j = 1 , \ldots , J , k = 1 , \ldots , K

定義因子矩陣(factor matrices)表示向量的組合萧福。例如\mathbf { A } = \left[ \begin{array} {} { \mathbf { a } _ { 1 } } & { \mathbf { a } _ { 2 } } & { \cdots } & { \mathbf { a } _ { R } } \end{array} \right]耻矮。然后對三維的情況赫模,我們可以將上面的表達(dá)式寫成下面的形式:

\begin{array} { l } { \mathbf { X } _ { ( 1 ) } \approx \mathbf { A } ( \mathbf { C } \odot \mathbf { B } ) ^ { \top } } ,\\ { \mathbf { X } _ { ( 2 ) } \approx \mathbf { B } ( \mathbf { C } \odot \mathbf { A } ) ^ { \top } } ,\\ { \mathbf { X } _ { ( 3 ) } \approx \mathbf { C } ( \mathbf { B } \odot \mathbf { A } ) ^ { \top } } .\end{array}

其中的\odot表示KR積慎宾。然后\mathbf{X}_{(1)}表示張量\mathbf{X}的的mode-n unfolding潜支。

例如:\mathbf{X}\in\mathbb { R } ^ { 3 \times 4 \times 2 }甸赃,

\mathbf { X } _ { 1 } = \left[ \begin{array} { } { 1 } & { 4 } & { 7 } & { 10 } \\ { 2 } & { 5 } & { 8 } & { 11 } \\ { 3 } & { 6 } & { 9 } & { 12 } \end{array} \right] , \quad \mathbf { X } _ { 2 } = \left[ \begin{array} { } { 13 } & { 16 } & { 19 } & { 22 } \\ { 14 } & { 17 } & { 20 } & { 23 } \\ { 15 } & { 18 } & { 21 } & { 24 } \end{array} \right]

那么

\mathbf { X } _ { ( 1 ) } = \left[ \begin{array} {} { 1 } & { 4 } & { 7 } & { 10 } & { 13 } & { 16 } & { 19 } & { 22 } \\ { 2 } & { 5 } & { 8 } & { 11 } & { 14 } & { 17 } & { 20 } & { 23 } \\ { 3 } & { 6 } & { 9 } & { 12 } & { 15 } & { 18 } & { 21 } & { 24 } \end{array} \right]

\mathbf { X } _ { ( 2 ) } = \left[ \begin{array} { } { 1 } & { 2 } & { 3 } & { 13 } & { 14 } & { 15 } \\ { 4 } & { 5 } & { 6 } & { 16 } & { 17 } & { 18 } \\ { 7 } & { 8 } & { 9 } & { 19 } & { 20 } & { 21 } \\ { 10 } & { 11 } & { 12 } & { 22 } & { 23 } & { 24 } \end{array} \right]

\mathbf { X } _ { ( 3 ) } = \left[ \begin{array} { } { 1 } & { 2 } & { 3 } & { 4 } & { 5 } & { \cdots } & { 9 } & { 10 } & { 11 } & { 12 } \\ { 13 } & { 14 } & { 15 } & { 16 } & { 17 } & { \cdots } & { 21 } & { 22 } & { 23 } & { 24 } \end{array} \right]

我們可以把它展開后驗證一下式子的正確性,當(dāng)然肯定是對的冗酿。也可以從維度的角度去進(jìn)行驗證埠对。

CP分解可以簡明的表述為:

x \approx [[\mathbf { A } , \mathbf { B } , \mathbf { C } ]] \equiv \sum _ { r = 1 } ^ { R } \mathbf { a } _ { r } \circ \mathbf { b } _ { r } \circ \mathbf { c } _ { r }

如果將\mathbf { A } , \mathbf { B } , \mathbf { C }標(biāo)準(zhǔn)化络断,然后提取出權(quán)重\lambda \in \mathbb { R } ^ { R },可以得到如下的表述:

x \approx[[\mathbf { A } , \mathbf { B } , \mathbf { C } ]] \equiv \sum _ { r = 1 } ^ { R } \lambda _ { r } \mathbf { a } _ { r } \circ \mathbf { b } _ { r } \circ \mathbf { c } _ { r }

對于N維的情況项玛,

x \approx \mathbb { [[ } \lambda ; \mathbf { A } ^ { ( 1 ) } , \mathbf { A } ^ { ( 2 ) } , \ldots , \mathbf { A } ^ { ( N ) } \mathbb { ]] } \equiv \sum _ { r = 1 } ^ { R } \lambda _ { r } \mathbf { a } _ { r } ^ { ( 1 ) } \circ \mathbf { a } _ { r } ^ { ( 2 ) } \circ \cdots \circ \mathbf { a } _ { r } ^ { ( N ) }

Tensor Rank

當(dāng)取等號的時候貌笨,R的最小取值,就是該張量的秩襟沮。

對張量的秩的定義和對矩陣的張量的定義類似锥惋。但是存在一些不同。

  1. 張量的秩在實數(shù)域和復(fù)數(shù)域可以不同开伏。
  2. 沒有直接的算法去計算給定張量的秩膀跌。這是一個NP-hard問題。

張量集合的最大秩和典型秩固灵。對一個張量的集合捅伤,所能取到的最大的秩成為最大秩(maximum rank),發(fā)生概率大于0的秩成為典型秩typical rank巫玻。

對于不同形狀的張量有不同的最大秩和典型秩丛忆,可以通過查表獲得。

Uniqueness 唯一性

高階張量的一個特性是他們的分解通常是唯一的仍秤,但是矩陣分解通常不是唯一的熄诡。

矩陣的分解是不唯一的。令\mathbf { X } \in \mathbb { R } ^ { I \times J }是一個秩為R的矩陣诗力,它的分解為:

\mathbf { X } = \mathbf { A } \mathbf { B } ^ { \top } = \sum _ { r = 1 } ^ { R } \mathbf { a } _ { r } \circ \mathbf { b } _ { r }

如果\mathbf{X}的SVD分解是\mathbf { U } \Sigma \mathbf { V } ^ { \top }那么我們可以選擇\mathbf { A } = \mathbf { U } \boldsymbol { \Sigma } ,\mathbf { B } = \mathbf { V }凰浮,同時可以選擇\mathbf { A } = \mathbf { U } \boldsymbol { \Sigma } \mathbf { W }, \mathbf { B } = \mathbf { V } \mathbf { W }

張量分解的唯一性是指排除簡單的重新組合和縮放的情況后,只存在一種可能的分解姜骡。

三維情況下导坟,CP分解唯一性的充分條件是:

k _ { \mathrm { A } } + k _ { \mathrm { B } } + k _ { \mathrm { C } } \geq 2 R + 2

其中的k _ { \mathrm { A } }是矩陣的秩屿良。

將其擴(kuò)展到N維情況為:

x = \sum _ { r = 1 } ^ { R } \mathbf { a } _ { r } ^ { ( 1 ) } \circ \mathbf { a } _ { r } ^ { ( 2 ) } \circ \cdots \circ \mathbf { a } _ { r } ^ { ( N ) } = [[ \mathbf { A } ^ { ( 1 ) } , \mathbf { A } ^ { ( 2 ) } , \ldots , \mathbf { A } ^ { ( N ) } ]]

充分條件為:

\sum _ { n = 1 } ^ { N } k _ { \mathbf { A } ^ { ( n ) } } \geq 2 R + ( N - 1 )

CP分解唯一性的必要條件為:

\min \{ \operatorname { rank } ( \mathbf { A } \odot \mathbf { B } ) , \operatorname { rank } ( \mathbf { A } \odot \mathbf { C } ) , \operatorname { rank } ( \mathbf { B } \odot \mathbf { C } ) \} = R

對N維的情況圈澈,

\min _ { n = 1 , \ldots , N } \operatorname { rank } \left( \mathbf { A } ^ { ( 1 ) } \odot \cdots \odot \mathbf { A } ^ { ( n - 1 ) } \odot \mathbf { A } ^ { ( n + 1 ) } \odot \cdots \odot \mathbf { A } ^ { ( N ) } \right) = R

然后,因為:

\operatorname { rank } ( \mathbf { A } \odot \mathbf { B } ) \leq \operatorname { rank } ( \mathbf { A } \otimes \mathbf { B } ) \leq \operatorname { rank } ( \mathbf { A } ) \cdot \operatorname { rank } ( \mathbf { B } )

所以尘惧,更一般的必要條件為:

\min _ { n = 1 , \ldots , N } \left( \prod _ { m = 1,m \neq n } ^ { N } \operatorname { rank } \left( \mathbf { A } ^ { ( m ) } \right) \right) \geq R

三維張量在以下的條件下康栈,CP分解通常是唯一的。

R \leq K \text { and } R ( R - 1 ) \leq I ( I - 1 ) J ( J - 1 ) / 2

低秩近似和邊界秩Low-Rank Approximations and the Border Rank

令R是矩陣\mathbf{A}的秩喷橙,假設(shè)\mathbf{A}的SVD為:

\mathbf { A } = \sum _ { r = 1 } ^ { R } \sigma _ { r } \mathbf { u } _ { r } \circ \mathbf { v } _ { r } \quad \text { with } \sigma _ { 1 } \geq \sigma _ { 2 } \geq \cdots \geq \sigma _ { R } > 0

然后他的rank-k近似可以寫作:

\mathbf { B } = \sum _ { r = 1 } ^ { k } \sigma _ { r } \mathbf { u } _ { r } \circ \mathbf { v } _ { r }

但是這種結(jié)果不適用于高階張量啥么。

存在低階近似不是高階近似的因子的情況。導(dǎo)致最佳秩近似的分量不能夠按照順序一個個的求解贰逾,必須同時找到所有的因子悬荣。

\mathcal { X } \in \mathbb { R } ^ { I \times J \times K }是一個rank-three張量,被定義為:

\mathbf{X} = \mathbf { a } _ { 1 } \circ \mathbf { b } _ { 1 } \circ \mathbf { c } _ { 2 } + \mathbf { a } _ { 1 } \circ \mathbf { b } _ { 2 } \circ \mathbf { c } _ { 1 } + \mathbf { a } _ { 2 } \circ \mathbf { b } _ { 1 } \circ \mathbf { c } _ { 1 }

然后這個張量可以被下面的rank-two張量任意的近似:

\mathbf{Y} = \alpha \left( \mathrm { a } _ { 1 } + \frac { 1 } { \alpha } \mathrm { a } _ { 2 } \right) \circ \left( \mathrm { b } _ { 1 } + \frac { 1 } { \alpha } \mathrm { b } _ { 2 } \right) \circ \left( \mathrm { c } _ { 1 } + \frac { 1 } { \alpha } \mathrm { c } _ { 2 } \right) - \alpha \mathrm { a } _ { 1 } \circ \mathrm { b } _ { 1 } \circ \mathrm { c } _ { 1 }

然后:

\| \mathbf{X} - \mathbf{Y} \| = \frac { 1 } { \alpha } \left\| \mathbf { a } _ { 2 } \circ \mathbf { b } _ { 2 } \circ \mathbf { c } _ { 1 } + \mathbf { a } _ { 2 } \circ \mathbf { b } _ { 1 } \circ \mathbf { c } _ { 2 } + \mathbf { a } _ { 1 } \circ \mathbf { b } _ { 2 } \circ \mathbf { c } _ { 2 } + \frac { 1 } { \alpha } \mathbf { a } _ { 2 } \circ \mathbf { b } _ { 2 } \circ \mathbf { c } _ { 2 } \right\|

但是在某些情況下疙剑,低秩近似是不存在的氯迂,并且這不是一個少見的情況践叠。在不存在低秩近似的時候,引入邊界秩的概念嚼蚀。他被定義為等于一個張量的最小數(shù)量禁灼,其足以近似給定張量且具有任意小的非零值。

計算CP分解

沒有明確的算法去計算張量的秩轿曙,因此計算CP分解的第一個問題是如何去選取rank-one張量的數(shù)量弄捕。大多數(shù)的程序選擇好多個不同的值,直到其中一個表現(xiàn)比較好的時候导帝。對于無噪聲的理想數(shù)據(jù)守谓,我們可以從\mathbf{R}=1,2,3,...依次選取,直到達(dá)到100\%合適的時候您单。但是在給定R的情況下分飞,我們也沒有完美的程序去計算CP分解。另外根據(jù)低秩近似睹限,我們也知道可以通過低秩的張量近似表示高秩張量譬猫,這在實踐中會引發(fā)一些問題。

假設(shè)組件的數(shù)量已經(jīng)確定羡疗,有很多方法去計算CP分解染服,我們關(guān)注ALS(交替最小二乘法)算法去計算CP分解。

在三維情況下:令\mathcal { X } \in \mathbb { R } ^ { I \times J \times K }叨恨,最終的計算目標(biāo)是計算一個R個組件的CP分解能夠最好的近似\mathcal{X}柳刮。

\min _ { \hat { x } } \| x - \hat { x } \| \ \ \text{with}\ \hat { \boldsymbol { X } } = \sum _ { r = 1 } ^ { R } \lambda _ { r } \mathbf { a } _ { r } \circ \mathbf { b } _ { r } \circ \mathbf { c } _ { r } = [[\boldsymbol { \lambda } ; \mathbf { A } , \mathbf { B } , \mathbf { C } ]]

ALS的步驟是固定\mathbf{B}\mathbf{C}去優(yōu)化\mathbf{A},然后固定\mathbf{A}\mathbf{C}去優(yōu)化\mathbf{B}痒钝,最后固定\mathbf{A},\mathbf{B}優(yōu)化\mathbf{C}秉颗,持續(xù)迭代更新,直到收斂送矩。

\mathbf{B}\mathbf{C}固定的情況下蚕甥,我們可以得到:

\min _ { \hat { \mathbf { A } } } \left\| \mathbf { X } _ { ( 1 ) } - \hat { \mathbf { A } } ( \mathbf { C } \odot \mathbf { B } ) ^ { \top } \right\| _ { F }

其中\hat { \mathbf { A } } = \mathbf { A } \cdot \operatorname { diag } ( \boldsymbol { \lambda } )

優(yōu)化的結(jié)果是:

\hat { \mathbf { A } } = \mathbf { X } _ { ( 1 ) } \left[ ( \mathbf { C } \odot \mathbf { B } ) ^ { \top } \right] ^ { \dagger }

這里的\dagger表示矩陣的偽逆栋荸。\boldsymbol { A } \boldsymbol { G } \boldsymbol { A } = \boldsymbol { A }菇怀。又因為:( \mathbf { C } \odot \mathbf { B } ) ^ { \dagger } = \left( \left( \mathbf { C } ^ { \top } \mathbf { C } \right) * \left( \mathbf { B } ^ { \top } \mathbf { B } \right) \right) ^ { \dagger } ( \mathbf { C } \odot \mathbf { B } ) ^ { \top },所以得到:

\hat { \mathbf { A } } = \mathbf { X } _ { ( 1 ) } ( \mathbf { C } \odot \mathbf { B } ) \left( \mathbf { C } ^ { \top } \mathbf { C } * \mathbf { B } ^ { \top } \mathbf { B } \right) ^ { \dagger }

這個地方有一步?jīng)]想清楚晌块。

通過上面的變化爱沟,我們就不用計算一個JK×R的矩陣的偽逆了,只需要計算一個R×R的矩陣的逆即可匆背。然后對\hat { \mathbf { A } }標(biāo)準(zhǔn)化后可以得到\mathbf{A}呼伸。

N維張量CP分解的完整的步驟如上圖所示。

ALS方法易于理解和擴(kuò)展钝尸,但是需要花費比較多的迭代次數(shù)使它收斂括享。同時闽铐,它不能夠保證一定能夠收斂到全局最小值,僅保證目標(biāo)函數(shù)不再減小奶浦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兄墅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澳叉,更是在濱河造成了極大的恐慌隙咸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件成洗,死亡現(xiàn)場離奇詭異五督,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓶殃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門充包,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遥椿,你說我怎么就攤上這事基矮。” “怎么了冠场?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵家浇,是天一觀的道長。 經(jīng)常有香客問我碴裙,道長钢悲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任舔株,我火速辦了婚禮莺琳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘载慈。我一直安慰自己惭等,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布娃肿。 她就那樣靜靜地躺著咕缎,像睡著了一般珠十。 火紅的嫁衣襯著肌膚如雪料扰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天焙蹭,我揣著相機(jī)與錄音晒杈,去河邊找鬼。 笑死孔厉,一個胖子當(dāng)著我的面吹牛拯钻,可吹牛的內(nèi)容都是我干的帖努。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼粪般,長吁一口氣:“原來是場噩夢啊……” “哼拼余!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亩歹,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤匙监,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后小作,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亭姥,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年顾稀,在試婚紗的時候發(fā)現(xiàn)自己被綠了达罗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡静秆,死狀恐怖粮揉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抚笔,我是刑警寧澤滔蝉,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站塔沃,受9級特大地震影響蝠引,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛀柴,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一螃概、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鸽疾,春花似錦吊洼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至豺鼻,卻和暖如春综液,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儒飒。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工谬莹, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓附帽,卻偏偏與公主長得像埠戳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蕉扮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容