😺

TCIのnesting conditionについてパート1

2023/08/21に公開

こちらの論文:
Learning Feynman Diagrams with Tensor Trains
の和訳の補足になります

原論文のFigure~4より

u_iの次元はd=2とする(local dims)
ボンド次元は2とする(Iset, Jsetの次元)
テンソルの数は、7である。

nesting condition

ここで、\mathcal{I}_\alpha\mathcal{J}_\alpha に対してnesting conditionと呼ばれるある制約を課す。

\mathcal{I}_\alpha\left(\mathcal{J}_\alpha\right)\mathcal{I}_{\alpha-1}\left(\mathcal{J}_{\alpha+1}\right)から構成される。

ただし、最後(最初)の変数は例外であり、 \mathbb{K}_\alphaから構成される。

\begin{aligned} & \mathcal{I}_\alpha \subset \mathcal{I}_{\alpha-1} \oplus \mathbb{K}_\alpha \\ & \mathcal{J}_\alpha \subset \mathbb{K}_\alpha \oplus \mathcal{J}_{\alpha+1} . \end{aligned}

言い換えると、もしi \in \mathcal{I}_\alphaならばu_\alpha \in \mathbb{K}_\alphaに対して、i=k \oplus u_\alpha を満たすようなk \in \mathcal{I}_{\alpha-1} が存在する。

同様にj \in \mathcal{J}_\alphaならば、u_\alpha \in \mathbb{K}_\alphaに対してi=u_\alpha \oplus k を満たすようなk \in \mathcal{J}_{\alpha+1} が存在する。

具体例

fully nested

\mathcal{I}セットから見ていく。

\mathcal{I}_0 = []
\mathcal{I}_1 = [[0], [1]]

\mathcal{I}_2は、\mathcal{I}_1から構成される。ここで、\mathcal{I}_1 \oplus u_2は、[[0,0], [1,0], [0,1], [1,1]]となる。

このセットから、2つ選ぶので(ボンド次元2)、\mathcal{I}_2は、例えば

\mathcal{I}_2 = [ [0,0], [1,0] ]

以下、同様である。

\mathcal{I}_3は、\mathcal{I}_2から構成される。ここで、\mathcal{I}_2 \oplus u_3は、[[0,0,0], [1,0,0], [0,0,1], [1,0,1]]

このセットから、2つ選ぶので(ボンド次元2)、\mathcal{I}_3は、例えば

\mathcal{I}_3 = [[0,0,0], [1,0,0]]

このような操作を繰り返していくと、最終的に

\mathcal{I}_6 = [[0,0,0,0,0,0], [1,0,0,0,0,0]]

のような感じで得られる。
この次元は、ボンド次元に対応する。
それぞれの要素には、u_1からu_6のスカラー値の集合が入る。
次元は、テンソルの数よりも1つだけ少ない。

結果として、

\begin{equation} \begin{gathered} \mathcal{I}_6 \in \mathcal{I}_5 \oplus \mathbb{K}_6,\\ \cdots , \, \\ \mathcal{I}_3 \in \mathcal{I}_2 \oplus \mathbb{K}_3 , \\ \mathcal{I}_2 \in \mathcal{I}_1 \oplus \mathbb{K}_2 , \\ \mathcal{I}_1 \in \mathcal{I}_0 \oplus \mathbb{K}_1 \end{gathered} \end{equation}

このような関係を\mathcal{I}について、fully nestedという。
つまり、i \in \mathcal{I}_\alphau_\alpha \in \mathbb{K}_\alphaに対して、i=k \oplus u_\alpha を満たすようなk \in \mathcal{I}_{\alpha-1} が存在する。

平たくいうと、\mathcal{I}_1の選び方に、それ以降の\mathcal{I}セットは引っ張られるということになる。

別の表現では

\begin{equation} \begin{gathered} \mathcal{I}_\alpha \subset \mathcal{I}_{\alpha-1} \oplus \mathbb{K}_\alpha, \\ \mathcal{I}_\alpha \subset \mathcal{I}_{\alpha-2} \oplus \mathbb{K}_{\alpha-1} \oplus \mathbb{K}_\alpha \\ \mathcal{I}_\alpha \subset \mathcal{I}_0 \oplus \mathbb{K}_1 \oplus \ldots \oplus \mathbb{K}_\alpha . \end{gathered} \end{equation}

と書くこともできる。

\mathcal{J}セットについても見ていく。

\mathcal{J}_8 = []
\mathcal{J}_7 = [[0],[1]]

\mathcal{J}_6は、\mathcal{J}_7から構成される。ここで、\mathcal{J}_7 \oplus u_6は、[[0,0], [1,0], [0,1], [1,1]]となる。

このセットから、2つ選ぶので(ボンド次元2)、\mathcal{J}_6は、例えば

\mathcal{J}_6 = [[1, 0],[1,1]]

以下同様である。

このような操作を繰り返していくと、最終的に

\mathcal{J}_2 = [[1,0,0,0,0,0], [1,1,0,0,0,0]]

のような感じで得られる。
この次元は、ボンド次元に対応する。
それぞれの要素には、u_2からu_7のスカラー値の集合が入る。
次元は、テンソルの数よりも1つだけ少ない。

結果として、

\begin{equation} \begin{gathered} \mathcal{J}_2 \in \mathbb{K}_{2} \oplus \mathcal{J}_3 , \\ \cdots , \, \\ \mathcal{J}_5 \in \mathbb{K}_{5} \oplus \mathcal{J}_6 , \, \\ \mathcal{J}_6 \in \mathbb{K}_{6} \oplus\mathcal{J}_7 , \, \\ \mathcal{J}_7 \in \mathbb{K}_{7} \oplus\mathcal{J}_8 , \, \\ \end{gathered} \end{equation}

このような関係をJについて、fully nestedという。
j \in \mathcal{J}_\alphaならば、u_\alpha \in \mathbb{K}_\alphaに対してi=u_\alpha \oplus k を満たすようなk \in \mathcal{J}_{\alpha+1} が存在する。

補足

fig4参照の描くテンソルを抽象的に描くと、

\begin{aligned} & T_\alpha \equiv A\left(\mathcal{I}_{\alpha-1} \oplus \mathbb{K}_\alpha \oplus \mathcal{J}_{\alpha+1}\right), \\ & P_\alpha \equiv A\left(\mathcal{I}_\alpha \oplus \mathcal{J}_{\alpha+1}\right) \end{aligned}

T_\alpha は、\mathbb{K}_\alphaの中の要素u_\alphaに対して、一次元配列が定義でき、その配列に対する関数である。

具体的に、\alpha=2を考える。

\begin{aligned} & T_2 \equiv A\left(\mathcal{I}_{1} \oplus \mathbb{K}_2 \oplus \mathcal{J}_{3}\right), \\ & P_2 \equiv A\left(\mathcal{I}_2 \oplus \mathcal{J}_{3}\right) \end{aligned}

T_2 は、\mathbb{K}_2の中の要素u_2に対して、一次元配列が定義できる。
その配列は、例えば、u_2=1ならば、

T_2 = [[0], [1]] \oplus [1] \oplus [[1,0,0,0,0], [1,1,0,0,0]]

各配列の次元は7となる。これは、テンソルの数とも一致している。

P_\alphaも同様に考える。

まとめ

左から右にsweepする時は、Isetを更新することで、自動的にnested conditionが満たされる。
右から左にsweepするときは、Jsetを更新することで、自動的にnested conditionが満たされる。

nested condtionのありがたみについては、別記事にて。

Discussion