テンソル分解

テンソル分解: tensor decomposition)とはテンソルをより階数の少ないテンソル(含む行列ベクトル)の積和で表現する数学的な手法の総称である。行列に対する行列分解テンソルへの拡張とみなすことができる。

よく用いられるテンソル分解

上述の様にテンソル分解には非常に多彩な自由度が存在するが、主に歴史的な経緯からいくつかのよく用いられる分解が存在する。

CP分解

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]である。 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)などが知られている。

脚注

[脚注の使い方]

注釈

  1. ^ ランクはrankであり階数と訳されるべきであるがorderの方を階数と訳してしまったため通常はカタカナ表記でランクと書くことで区別している。本来はorderの方は次数と訳すべきであっただろう
  2. ^ 両端は行列
  3. ^ HOOIはHOSVDの結果を初期条件として交互最小二乗法を行うアルゴリズムである

出典

  1. ^ Oseledets, Ivan (2011), “Tensor-Train Decomposition”, SIAM J. Sci. Comput 33 (5): 2295–2317, doi:10.1137/090752286 

参考文献

  • 石黒, 勝彦; 林, 浩平. 関係データ学習. 講談社. ISBN 978-4-06-152921-2 
  • Kolda, Tamara; Bader, Brett (2009), “Tensor Decompositions and Applications”, SIAM REVIEW 51 (3): 455-500, doi:10.1137/07070111X 
  • 表示
  • 編集
Glossary of tensor theory(英語版)
範囲 (Scope)
数学
物理学 • 工学
表記法 (Notation)
テンソルの定義
算法
関連事項
有名なテンソル
数学
物理学
数学者
カテゴリカテゴリ