テンソル分解(英: 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はテンソルのランクと呼ばれる量である。

タッカー分解

タッカー分解は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}}} は直交行列である。

テンソルトレイン分解

テンソルトレイン分解はテンソルを三階のテンソルのテンソル積の和で表現する方法である。量子力学の分野では、行列積状態(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)、テンソルトレイン分解ではTT-SVD (Tensor-train singular value decomposition)などが知られている。

脚注

注釈

出典

参考文献

  • 石黒, 勝彦; 林, 浩平. 関係データ学習. 講談社. 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 
  • Andrzej Cichocki; Rafel Zdunek; Anh Huy Phan; Shun-ichi Amari: Nonnegative Matrix and Tensor Factorizations: Applications to Exploratory Multi-way Data Analysis and Blind Source Separation, John Wiley & Sons,ISBN 978-0-470-74666-0 (2009).

2014 3 13(テンソル分解の基礎)

テンソル分解を用いた教師なし学習による変数選択

テンソル分解 CP分解、タッカー分解他 / Tensor CP , Tucker

テンソル分解と生成モデル yasuhisa's blog

2014 3 13(テンソル分解の基礎)