出典: フリー百科事典『ウィキペディア(Wikipedia)』
テンソル分解 (英 : tensor decomposition )とはテンソル をより階数 の少ないテンソル (含む行列 やベクトル )の積和で表現する数学的な手法の総称である。行列 に対する行列分解 のテンソル への拡張とみなすことができる。
上述の様にテンソル分解には非常に多彩な自由度が存在するが、主に歴史的な経緯からいくつかのよく用いられる分解が存在する。
CP分解 (英語版 ) はテンソル をベクトル のクロネッカー積 の和で表現する方法である。
A
=
∑
i
=
1
R
λ
i
a
i
1
⊗
a
i
2
⊗
⋯
⊗
a
i
m
,
{\displaystyle {\mathcal {A}}=\sum _{i=1}^{R}\lambda _{i}\mathbf {a} _{i}^{1}\otimes \mathbf {a} _{i}^{2}\otimes \cdots \otimes \mathbf {a} _{i}^{m},}
ここで
A
∈
R
N
1
×
N
2
×
⋯
×
N
m
{\displaystyle {\mathcal {A}}\in \mathbb {R} ^{N_{1}\times N_{2}\times \cdots \times N_{m}}}
はm 階のテンソル 、
a
∈
R
N
i
{\displaystyle \mathbf {a} \in \mathbb {R} ^{N_{i}}}
は
N
i
{\displaystyle N_{i}}
次元のベクトル である。
λ
i
∈
R
{\displaystyle \lambda _{i}\in \mathbb {R} }
は各項の重みを表す係数であり、R はテンソル のランク[ 注釈 1] と呼ばれる量である。
タッカー分解 (英語版 ) はm 階のテンソル をテンソル とベクトル のテンソル積 の和で表現する方法である。
A
=
∑
j
1
=
1
N
1
∑
j
2
=
1
N
2
⋯
∑
j
m
=
1
N
d
s
j
1
,
j
2
,
…
,
j
m
u
j
1
1
⊗
u
j
2
2
⊗
⋯
⊗
u
j
m
m
,
{\displaystyle {\mathcal {A}}=\sum _{j_{1}=1}^{N_{1}}\sum _{j_{2}=1}^{N_{2}}\cdots \sum _{j_{m}=1}^{N_{d}}s_{j_{1},j_{2},\ldots ,j_{m}}\mathbf {u} _{j_{1}}^{1}\otimes \mathbf {u} _{j_{2}}^{2}\otimes \cdots \otimes \mathbf {u} _{j_{m}}^{m},}
但し、
u
i
∈
R
N
i
×
N
i
{\displaystyle \mathbf {u} ^{i}\in \mathbb {R} ^{N_{i}\times N_{i}}}
は直交行列 である。
テンソルトレイン分解[ 1] はテンソル を三階のテンソル のテンソル積 の和で表現する方法[ 注釈 2] である。量子力学 の分野では、行列積状態 (MPS: Matrix Product State)(への分解)とも呼ばれる。
A
j
1
j
2
⋯
j
m
=
∑
i
1
=
1
R
1
∑
i
2
=
2
R
1
⋯
∑
i
m
−
1
=
1
R
m
−
1
U
i
1
j
1
U
i
1
i
2
j
2
⋯
U
i
m
−
2
i
m
−
1
j
m
−
1
U
i
m
−
1
j
m
{\displaystyle {\mathcal {A}}_{j_{1}j_{2}\cdots j_{m}}=\sum _{i_{1}=1}^{R_{1}}\sum _{i_{2}=2}^{R_{1}}\cdots \sum _{i_{m-1}=1}^{R_{m-1}}U_{i_{1}j_{1}}U_{i_{1}i_{2}j_{2}}\cdots U_{i_{m-2}i_{m-1}j_{m-1}}U_{i_{m-1}j_{m}}}
ここで
U
i
1
j
1
∈
R
R
1
×
N
1
,
U
i
m
−
1
j
m
∈
R
R
m
−
1
×
N
m
,
U
i
k
−
1
i
k
j
k
∈
R
R
k
−
1
×
R
k
×
N
k
{\displaystyle U_{i_{1}j_{1}}\in \mathbb {R} ^{R_{1}\times N_{1}},U_{i_{m-1}j_{m}}\in \mathbb {R} ^{R_{m-1}\times N_{m}},U_{i_{k-1}i_{k}j_{k}}\in \mathbb {R} ^{R_{k-1}\times R_{k}\times N_{k}}}
である。
最適化アルゴリズムとしては、CP分解では交互最小二乗法 (英語版 ) 、タッカー分解ではHOSVD (英語版 ) (Higher order singular value decomposition)やHOOI(higher order orthogonal iteration)[ 注釈 3] 、テンソルトレイン分解ではTT-SVD (Tensor-train singular value decomposition)などが知られている。
^ ランクはrankであり階数と訳されるべきであるがorderの方を階数と訳してしまったため通常はカタカナ表記でランクと書くことで区別している。本来はorderの方は次数と訳すべきであっただろう
^ 両端は行列
^ HOOIはHOSVDの結果を初期条件として交互最小二乗法を行うアルゴリズムである