テンソルの定義

　ディープラーニング（TensorFlowなど）で使われている基本概念のテンソルを理解したいというのが本記事の目的です。ここでは必要な定義とそこから導かれる事実のみを記述しております。私自身テンソル初心者であり、概念の理解が目的なので数学的な証明や詳細な説明は省いてあります。もう少し一般化された定義が必要かもしれませんが、一応こんなものかぐらいは理解できましたのでまとめておく次第です。




#１．双対空間
##１－１．線形写像
　これは前回の記事で紹介した[ベクトルの共変成分と反変成分](https://qiita.com/sand/items/38b10ed4b6d2f22c3e72)を少しだけ一般化した話です。

　まずは**線形写像**の定義を以下のように行います。

```math
\begin{align}
&R:体、 \quad V:体R上のベクトル空間とする。\\
&任意のa \in R \quadと\quad 任意のx,y \in V に対して\\
&\varphi : V \rightarrow R \quad が以下の２条件を満たす時、\varphiは線形写像と呼ばれる。\\
&\qquad (1) \quad \varphi(x+y) = \varphi(x)+\varphi(y)\\
&\qquad (2) \quad \varphi(ax) = a\varphi(x)\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

##１－２．双対空間
　次にベクトル空間に対する**双対空間**の定義を行います。

```math
\begin{align}
&V^*:線形写像全体の集合とする。\\
&任意のa \in R \quadと\quad 任意の\varphi,\psi \in V^* に対して以下のように定義します。\\
&\qquad (1) \quad \{\varphi+\psi\}(x)=\varphi(x)+\psi(x)\\
&\qquad (2) \quad \{a\varphi\}(x)=a\varphi(x)\\
&この時\{\varphi+\psi\}と\{a\varphi\}も線形写像となり、\\
&\qquad \{\varphi+\psi\},\{a\varphi\} \in V^*となります。\\
&つまりV^*もベクトル空間を成しており、V^*をVの双対空間と呼びます。\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

##１－３．双対基底
　次にベクトル空間の基底に対する双対空間の**双対基底**を定義します。

```math
\begin{align}
&\{e_i\} : Vの基底とします。\\
&任意の \varphi \in V^* に対して以下が成り立ちます。\\
&\qquad \varphi = \sum_i x_ie^i\\
&\qquad where\\
&\qquad \qquad x_i \equiv \varphi(e_i) \quad (x_iは共変成分と呼ばれる。)\\
&\qquad \qquad e^i \in V^* で (e^i)(x) \equiv x^i \quad (x \in V, x=\sum_i x^ie_i)\\
&\qquad \qquad (x^iは反変成分、e^i は射影と呼ばれる。)\\
&\qquad \qquad i.e. \quad  e^j(e_k) = \delta_{jk}\\
&この時\{e_i\}に対して\{e^i\}を V^*の双対基底と呼びます。\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

##１－４．基底変換
　最後にVで**基底変換**を行った時の、Vにおける成分変換、V*の基底変換と成分変換への影響について以下にまとめます。

```math
\begin{align}
&\{e_i\},\{e'_i\} : Vの基底とします。\\
&任意のx \in Vに対して以下のように基底で表現できます。\\
&\qquad x=\sum_ix^ie_i=\sum_ix'^ie'_i\\
&この時、基底変換を(1)のように表現すると、\\
&(2),(3),(4)が導かれます。\\
&\qquad (1) \quad  e'_j=\sum_kp^k_je_k \quad  (Vの基底変換)\\
&\qquad (2) \quad  x^j=\sum_kp^j_kx'^k \quad  (Vの反変成分変換)\\
&ここで双対空間V^*を考えます。\\
&任意の \varphi \in V^* に対して、x_i \equiv \varphi(e_i),\quad x'_i \equiv \varphi(e'_i)とする。\\
&\qquad \varphi=\sum_ix_ie^i=\sum_ix'_ie'^i \quad  where \quad e^iとe'^iは双対基底\\
&\qquad (3) \quad  e^j=\sum_kp^j_ke'^k \quad  (V^*の双対基底変換)\\
&\qquad (4) \quad  x'_j=\sum_kp^k_jx_k \quad  (V^*の共変成分変換)\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

　(1)と(4)の相似性について注目してください。**基底変換**と**共変成分変換**は同じ行列で表されることを示しています。



#２．共変テンソル空間(V*⊗V*)

##２－１．双線形写像
　まず**双線形写像**の定義を以下のように行います。

```math
\begin{align}
&R:体、 \quad V:体R上のベクトル空間とする。\\
&任意のa \in R \quadと\quad 任意のx,y,z \in Vに対して\\
&\varphi :  V \times V  \rightarrow R \quad が以下の４条件を満たす時、\varphiは双線形写像と呼ばれる。\\
&\qquad (1) \quad \varphi(x+z,y) = \varphi(x,y)+\varphi(z,y)\\
&\qquad (2) \quad \varphi(x,y+z) = \varphi(x,y)+\varphi(x,z)\\
&\qquad (3) \quad \varphi(ax,y) = a\varphi(x,y)\\
&\qquad (4) \quad \varphi(x,ay) = a\varphi(x,y)\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

##２－２．テンソル積
　次に直積VxV対する双線形写像全体の集合(VxV)* = V*⊗V* (**テンソル積**)を考えます。

```math
\begin{align}
&V^*⊗V^* \equiv (V \times V)^* :\quad V \times Vの双線形写像全体の集合とする。\\
&(V^*は線形写像全体の集合ですが、直積の(V \times V)^*は双線形写像全体の集合です。）\\
&任意のa \in R \quadと\quad 任意の\varphi,\psi \in V^*⊗V^* に対して以下のように定義します。\\
&\qquad (1) \quad \{\varphi+\psi\}(x,y)=\varphi(x,y)+\psi(x,y)\\
&\qquad (2) \quad \{a\varphi\}(x,y)=a\varphi(x,y)\\
&この時\{\varphi+\psi\}と\{a\varphi\}も双線形写像となり、\{\varphi+\psi\},\{a\varphi\} \in V^*⊗V^*となります。\\
&つまりV^*⊗V^*もベクトル空間を成しており、V^*⊗V^*をV^*のテンソル積と呼びます。\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad   \qquad \qquad \\
\end{align}
```

##２－３．テンソル積の基底
　次にベクトル空間の基底に対するテンソル積の基底を定義します。

```math
\begin{align}
&\{e_i\} : Vの基底とします。\\
&任意の \varphi \in V^*⊗V^* に対して以下が成り立ち、\\
&V^*⊗V^*の基底\{e^j⊗e^k\}が得られます。\\
&\qquad \varphi = \sum_j\sum_k T_{jk}\{e^j⊗e^k\}\\
&\qquad where\\
&\qquad \qquad T_{jk} \equiv \varphi(e_j,e_k) \quad (T_{jk}は共変テンソル成分と呼ばれる。)\\
&\qquad \qquad \{e^j⊗e^k\} \in V^*⊗V^* で \{e^j⊗e^k\}(x,y) \equiv x^jy^kと定義する。\\
&\qquad \qquad (x,y \in V,\quad x=\sum_i x^ie_i,\quad y=\sum_i y^ie_i)\\
&\qquad \qquad (\{e^j⊗e^k\} は射影と呼ばれる。)\\
&\qquad \qquad i.e. \quad  \{e^j⊗e^k\}(e_s,e_t) = \delta_{js}\delta_{kt}\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```



##２－４．基底変換
　最後にVで**基底変換**を行った時の、Vにおける成分変換、V*⊗V*の基底変換と成分変換への影響について以下にまとめます。

```math
\begin{align}
&\{e_i\},\{e'_i\} : Vの基底とします。\\
&任意のx \in Vに対して以下のように基底で表現できます。\\
&\qquad x=\sum_ix^ie_i=\sum_ix'^ie'_i\\
&この時、基底変換を(1)のように表現すると、(2),(3),(4)が導かれます。\\
&\qquad (1) \quad  e'_j=\sum_kp^k_je_k \quad  (Vの基底変換)\\
&\qquad (2) \quad  x^j=\sum_kp^j_kx'^k \quad  (Vの反変成分変換)\\
&ここでテンソル積 V^*⊗V^*を考えます。\\
&任意の \varphi \in V^*⊗V^* に対して、T_{jk} \equiv \varphi(e_j,e_k),\quad T'_{jk} \equiv \varphi(e'_j,e'_k)とする。\\
&\qquad \varphi = \sum_j\sum_k T_{jk}\{e^j⊗e^k\} = \sum_j\sum_k T'_{jk}\{e'^j⊗e'^k\}\\
&\qquad (3) \quad  \{e^j⊗e^k\}=\sum_s\sum_t p^j_s p^k_t \{e'^s⊗e'^t) \quad  (V^*⊗V^*の基底変換)\\
&\qquad (4) \quad  T'_{jk}=\sum_s\sum_t p^s_j p^t_k T_{st} \quad  (V^*⊗V^*の共変テンソルの成分変換)\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

　基底変換を行った時に、成分変換が(4)のようになることをテンソル変換と定義することもあります。この定義に従えば双線形写像はテンソル変換を受けると言えます。


#３．反変テンソル空間(V⊗V)

　共変テンソル空間では出発点として直積VxVを考えました。それに対しここでの議論は直積V*xV*を考えることから始めます。ほぼ同じ議論ですが、実用的な「ベクトルからテンソルを作る方法」を補足しています。

##３－１．双線形写像
　まずV*xV*上の**双線形写像**の定義を以下のように行います。

```math
\begin{align}
&R:体、 \quad V:体R上のベクトル空間、\quad　V^*:Vの双対空間とする。\\
&任意のa \in R \quadと\quad 任意のx,y,z \in V^*に対して\\
&\varphi :  V^* \times V^*  \rightarrow R \quad が以下の４条件を満たす時、\varphiは双線形写像と呼ばれる。\\
&\qquad (1) \quad \varphi(x+z,y) = \varphi(x,y)+\varphi(z,y)\\
&\qquad (2) \quad \varphi(x,y+z) = \varphi(x,y)+\varphi(x,z)\\
&\qquad (3) \quad \varphi(ax,y) = a\varphi(x,y)\\
&\qquad (4) \quad \varphi(x,ay) = a\varphi(x,y)\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

##３－２．テンソル積
　次に直積V*xV*対する双線形写像全体の集合(V*xV*)* = V⊗V (**テンソル積**)を考えます。

```math
\begin{align}
&V⊗V \equiv (V^* \times V^*)^* :\quad V^* \times V^*の双線形写像全体の集合とする。\\
&任意のa \in R \quadと\quad 任意の\varphi,\psi \in V⊗V に対して以下のように定義します。\\
&\qquad (1) \quad \{\varphi+\psi\}(x,y)=\varphi(x,y)+\psi(x,y)\\
&\qquad (2) \quad \{a\varphi\}(x,y)=a\varphi(x,y)\\
&この時\{\varphi+\psi\}と\{a\varphi\}も双線形写像となり、\{\varphi+\psi\},\{a\varphi\} \in V⊗Vとなります。\\
&つまりV⊗Vもベクトル空間を成しており、V⊗VをVのテンソル積と呼びます。\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad   \qquad \qquad \\
\end{align}
```


##３－３．テンソル積の基底
　次にベクトル空間の基底に対するテンソル積の基底を定義します。

```math
\begin{align}
&\{e_i\} : Vの基底とし、\{e^i\}：V^*の双対基底とします。\\
&任意の \varphi \in V⊗V に対して以下が成り立ち、\\
&V⊗Vの基底\{e_j⊗e_k\}が得られます。\\
&\qquad \varphi = \sum_j\sum_k T^{jk}\{e_j⊗e_k\}\\
&\qquad where\\
&\qquad \qquad T^{jk} \equiv \varphi(e^j,e^k) \quad (T^{jk}は反変テンソル成分と呼ばれる。)\\

&\qquad \qquad \{e_j⊗e_k\} \in V⊗V で \{e_j⊗e_k\}(x,y) \equiv x_jy_kと定義する。\\
&\qquad \qquad (x,y \in V^*,\quad x=\sum_i x_ie^i,\quad y=\sum_i y_ie^i)\\
&\qquad \qquad (\{e_j⊗e_k\} は射影と呼ばれる。)\\
&\qquad \qquad i.e. \quad  \{e_j⊗e_k\}(e^s,e^t) = \delta_{js}\delta_{kt}\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```


---

#####３－３－X．ベクトルからテンソルを作る

　具体的にテンソルを作り出す方法です。多くの場合、もしかしたらこれがテンソルの定義として使われているのかもしれませんが。

```math
\begin{align}
&上の\{e_j⊗e_k\} を再定義することから始めます。\\
&\\
&任意のa,b \in V に対して、a⊗b \in V⊗V を以下のように定義する。\\
&ここで V⊗V \equiv (V^* \times V^*)^*であることに注意してください。\\
&\qquad 任意のx,y \in V^* に対して\\
&\qquad a⊗b(x,y)=a(x)b(y) \qquad i.e. \quad =x(a)y(b)  \quad (*1)\\
&この定義から \{e_j⊗e_k\}(x,y) = x_jy_k が導かれることに注意してください。\\
&(∵ \quad e^j(e_k) = \delta_{jk} )\\
&この時 ⊗ : V \times V \longrightarrow V⊗V \quad は双線形写像となる。\\
&\\
&a=\sum_ia^ie_i \quad b=\sum_ib^ie_i とした時のa⊗bの成分を以下に調べる。\\
&\qquad 任意のx,y \in V^* に対して展開していきます。\\
&\qquad a⊗b(x,y) = x(a)y(b)\\
&\qquad \qquad \qquad =\Bigl(\sum_i a^i x(e_i)\Bigr)\Bigl(\sum_i b^i y(e_i)\Bigr)\\
&\qquad \qquad \qquad =\sum_j \sum_k \Bigl(a^j b^k x(e_j)y(e_k)\Bigr)\\
&\qquad \qquad \qquad =\sum_j \sum_k  \Bigl(a^j b^k (e_j⊗e_k)(x,y)\Bigr)\\
&\qquad \qquad \qquad =\Bigl(\sum_j \sum_k  a^j b^k (e_j⊗e_k)\Bigr)(x,y)\\
&\qquad i.e. \quad x⊗y = \sum_j \sum_k  a^j b^k (e_j⊗e_k)\\
&\\
&つまりa,bの成分が与えられれば、具体的にa⊗bの成分\{a^jb^k\}が計算できます。\\
&i.e. \quad  v⊗u形式のテンソルに限れば、T^{jk}=a^jb^kとなります。(*2)\\
&\\
&(*1) （補足）\quad (V^*)^* = V と見る方法\\
& a \in V, x \in V^* \quad a(x) \equiv x(a) とすればxはV^*上の線形写像になります。\\
&i.e. \quad a \in (V^*)^*\\
&i.e. \quad V \subset (V^*)^* \\
&dim(V) = dim(V^*) = dim((V^*)^*) \\
&∴ (V^*)^* = V\\
&\\
&(*2) （注意） \quad  V⊗V \neq Im(⊗) \equiv ⊗(V \times V)\\
&任意の\varphi \in V⊗V に対して \varphi = \sum_j\sum_k T^{jk}\{e_j⊗e_k\} と表現できるけど、\\
&必ずしも \varphi = a⊗b となるa,b \in V が存在するわけではありません。\\
&もう少し厳密に言えば、V⊗Vの基底に関してe_j⊗e_k \in Im(⊗)だから、\\
&V⊗VをIm(⊗)が生成するベクトル空間と再定義することもできます。\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```

[(*2) Wikipedia テンソル積](https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E7%A9%8D)


---



##３－４．基底変換
　最後にV*で**基底変換**を行った時の、V*における成分変換、V⊗Vの基底変換と成分変換への影響について以下にまとめます。

```math
\begin{align}
&\{e^i\},\{e'^i\} : V^*の基底とします。\\
&任意のx \in V^*に対して以下のように基底で表現できます。\\
&\qquad x=\sum_ix_ie^i=\sum_ix'_ie'^i\\
&この時、基底変換を(1)のように表現すると、(2),(3),(4)が導かれます。\\
&\qquad (1) \quad  e'^j=\sum_kp^k_je^k \quad  (V^*の基底変換)\\
&\qquad (2) \quad  x_j=\sum_kp^j_kx'_k \quad  (V^*の共変成分変換)\\
&ここでテンソル積 V⊗Vを考えます。\\
&任意の \varphi \in V⊗V に対して、T^{jk} \equiv \varphi(e_j,e_k),\quad T'^{jk} \equiv \varphi(e'_j,e'_k)とする。\\

&\qquad \varphi = \sum_j\sum_k T^{jk}\{e_j⊗e_k\} = \sum_j\sum_k T'^{jk}\{e'_j⊗e'_k\}\\

&\qquad (3) \quad  \{e_j⊗e_k\}=\sum_s\sum_t p^j_s p^k_t \{e'_s⊗e'_t) \quad  (V⊗Vの基底変換)\\
&\qquad (4) \quad  T'^{jk}=\sum_s\sum_t p^s_j p^t_k T^{st} \quad  (V⊗Vの反変テンソルの成分変換)\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad \qquad \qquad  \qquad \qquad  \qquad \qquad \\
\end{align}
```