💭

結局テンソル積とは何なのか ~工学と数学の定義をつなげる~

に公開

はじめに

a\otimes b 等と表記され、工学の分野では(a\otimes b)c=(b\cdot c)a等が成り立つとされるテンソル積ですが、次のように疑問を持たれた方もいるのではないでしょうか?

  • 定義がどういうモチベーションで出てきた?(他の定義じゃダメ?)
  • n次元ベクトルとm次元ベクトルのテンソル積って何次元?
  • どういう演算なら良くて、どういう演算がダメ?
  • クロネッカー積というのもあるけど、テンソル積と同じ?
  • 外積という名前でテンソル積と同じ記号を使ってるのを見たことがあるけど同じ?
  • b\otimes aa\otimes bって違う?

工学における定義が天下りすぎてよく分からないな、、と思って数学における定義を見るとパッと見て同じ気がしない、、と私は挫折していました。
さらに、以下のような関係式が登場すると、それが定義なのか定理なのか、さらによく分からなくなります。

  • (x''\otimes f)(x\otimes f')=(f\cdot x)x''\otimes f'
  • tr(x\otimes f)=x\cdot f

ここでは、テンソル積の、工学における定義と数学における定義を比較しながら、上記の疑問の解決を目指します。

前提知識

  • 基本的な線形代数の知識(ベクトル空間等)

工学における定義と数学における定義の違い

テンソル積は工学分野と数学分野で一見定義が異なるように見えることがあります。

工学における定義(例)

  • 3次元ベクトルxx'を考える。 xx' に変換する線形写像 T をテンソルと呼ぶ
  • 基底 {e_1,e_2,e_3} を用いた時のテンソル T の成分を T_{ij} とすれば、 T=T_{ij}\; e_i\otimes e_j と表される
  • ここで、 \otimes はテンソル積と呼ばれ、任意のベクトル x , x' , f に対して (x'\otimes f)x=(f\cdot x)x' が成り立つ

参考:http://www.ms.t.kanazawa-u.ac.jp/~design/hojo/zairiki/text/07Complex/02tensor.htm

数学における定義(例)

  • V,W,TK上のベクトル空間、 \dim V=n\dim W=m とする
  • 与えられたV,Wに対して、次の条件を満たすベクトル空間 T と双一次写像 \Phi:V\times W\rightarrow T が必ず存在する(※V\times WVWの直積):
    (e_i) (1\le i\le n)(f_j) (1\le j\le m) をそれぞれ V,W の底とするとき、\Phi(e_i,f_j) (1\le i\le n, 1\le j\le m)T の底となる(条件1とします)
  • しかも、そのような条件を満たす (T,\Phi) は次の意味で'普遍的'である。すなわち、任意のベクトル空間 T' と双一次写像 \Phi'=V\times W\rightarrow T' に対し、条件 \Phi'(x,y)=\rho(\Phi(x,y)) (x\in V,y\in W) を満たすような一次写像 \rho:T\rightarrow T' は一意的に定まる
  • この意味で (T,\Phi) が同型を除いて一意に定まるので、与えられた V,W に対し上のように (T,\Phi) を一つ対応させ、それを V,W のテンソル積といい、記号 T=V\otimes W , \Phi(x,y)=x\otimes y (x\in V,y\in W) で表す

参考:線形代数学 佐武一郎著

直積の定義

二つの集合 M,N に対する以下の集合

M\times N=\{(x,y):\; x\in M,y\in N\}
一次写像の定義

写像 fm 次元ベクトル 空間から n 次元ベクトル空間への写像とする。 m 次元ベクトル a,a_1,a_2\cdots、スカラー c,c_1,c_2\cdots に対して以下が成立する時、 f を一次写像という

\begin{align*} f(a_1+a_2)&=f(a_1)+f(a_2) \\ f(ca)&=cf(a) \end{align*}
双一次写像の定義

V,V' をそれぞれ n,m 次元ベクトル空間とし、 '直積空間' V\times V' から K への写像で次の条件を満たす BV,V' 上の双一次形式と呼ぶ

\begin{align*} B(x+y,x')&=B(x,x')+B(y,x') \\ B(x,x'+y')&=B(x,x')+B(x,y') \\ B(ax,x')&=B(x,ax')=a\cdot B(x,x')\quad (x,y\in V,\; x',y'\in V') \end{align*}
同型の定義

二つのベクトル空間の間に一対一上への線形写像が存在するとき、両者はベクトル空間として全く同じ構造をもつと考えられ、これらのベクトル空間は'同型'であるという

条件1と必要十分な条件

以下のうち、(T1)、(T2)または(T1')、(T2)が成立することが条件1と必要十分である

(T1)
x_1, \cdots ,x_r \in V が一次独立ならば、y_1, \cdots ,y_r \in Wに対して、

\sum_{i=1}^r \Phi(x_i, y_i)=0\quad\longrightarrow\quad y_i=0\quad(1\le i\le r) (T1')

y_1, \cdots ,y_r \in W が一次独立ならば、x_1, \cdots ,x_r \in Vに対して、

\sum_{i=1}^r \Phi(x_i, y_i)=0\quad\longrightarrow\quad x_i=0\quad(1\le i\le r) (T2)

T\Phi(x,y) (x\in V, y\in W) によって生成される。

定義の比較

  • 工学における定義には、(x'\otimes f)x=(f\cdot x)x'という関係式がありますが、数学における定義には一見同じ形を持つものはありません

一次写像の空間との同型性

数学における定義は一般性の高いものになっています。しかし、上のように"同型を除いて一意に定まる"テンソル積を定義しても、具体的にテンソル積としてどのようなものを想定したらよいのか分かりづらいでしょう。そこで、次に示すような一次写像の空間と同型になることを示せます。

V,V'をそれぞれ n,n' 次元のベクトル空間とし、V から V' の中への一次写像全体の作るベクトル空間を \mathscr{L}(V,V') で表す(写像の空間における和、スカラー倍は線形性を満たすように定義する)。 f\in V^*, x'\in V' に対し、V から V' への一次写像

\phi_{x',f} : V\ni x\longrightarrow (f\cdot x)x'\in V'

が定義される。

V^*Vの双対空間です。x\in Vf\in V^*に対して内積が定義できることに注意してください。

双対空間の定義

VK上のn次元ベクトル空間とする。V上の一次関数、すなわちVからKへの一次写像全体の集合をV^*で表す。f,g\in V^*, a\in Kに対し、和f+gおよびスカラー倍\alpha f

\begin{align*} (f+g)(x)&=f(x)+g(x) \\ (\alpha f)(x)&=\alpha\cdot f(x) \qquad (x\in V) \end{align*}

により定義する。この時、V^*は上記の演算に対してK上のn次元ベクトル空間になり、これをVの双対空間と呼ぶ。

対応

V'\times V^*\ni (x',f)\longrightarrow \phi_{x',f}\in\mathscr{L}(V,V')

は明らかに双一次的で、条件1を満たす。つまり、以下の標準的な同型が得られる

\mathscr{L}(V,V')\cong V'\otimes V^*

(対応は\phi_{x',f}\leftrightarrow x'\otimes fによって与えられる)

つまり、x'\in V', f\in V^*の時、x'\otimes fVからV'への一次写像と対応していて、(x'\otimes f)x=(f\cdot x)x'が成り立ちます。工学における定義と同じ形になりました。

以上の定義から、(a\otimes b)cという式を見たら、bcは互いに双対なベクトル空間の元でなければならず、一方aはこれらと体が同じであれば異なるベクトル空間の元であっても良い訳です。

テンソル積の"気持ち"

ここまで理解すれば、テンソル積の気持ちを少し理解することができます。具体的には、

  • テンソル積は、K上のベクトル空間 V, V'の底をそれぞれ(e_i) (1\le i\le n)(e'_j) (1\le j\le m) としたとき、\Phi(e_i,e'_j) (1\le i\le n, 1\le j\le m)K上のベクトル空間T の底となるような双一次写像 \Phi:V\times V'\rightarrow T からなる組み合わせ (T,\Phi) のうち1つとして定義される
  • そのような組み合わせはどれも同型だが、例えば V'^* からV への写像 \phi_{x,x'}: f'\longrightarrow (x'\cdot f')x は上の双一次写像の条件を満たす(x\in V, x'\in V', f'\in V'^*)
  • よって、このように定義した \phi_{x,x'} に対して対応\phi_{x,x'}\leftrightarrow x\otimes x' が与えられる

もっと噛み砕くと、

  • 数学的なテンソル積の定義では、テンソル積とは無数の写像と空間を同型を除いて一意に定めたもので、具体的な形式を定めていない
  • ただし、工学的には具体的な計算をしたいので、一つの具体的な形式を採用している
  • ただし、他の形式を採用したとしても、同型になることが数学的に保証されている

ということになります。数学的な定義と工学的な定義が繋がってきました。

関係式の証明

冒頭で紹介した関係式を、(x'\otimes f)x=(f\cdot x)x'を用いて証明していきましょう。

\begin{align*} (x''\otimes f)(x\otimes f')x'&=(f'\cdot x')(x''\otimes f) x \\ &=(f\cdot x)(f'\cdot x')x'' \\ &=(f\cdot x)(x''\otimes f')x' \end{align*}

より、(x''\otimes f)(x\otimes f')=(f\cdot x)(x''\otimes f')

V, V^*の互いに双対な底(e_i), (f_i)をとり、x=\sum_i\xi_i e_i, f=\sum_i\lambda_i f_iとおけば、

\begin{align*} tr(x\otimes f) &=\sum_i f_i\cdot((x\otimes f)e_i) \\ &=\sum_i (f\cdot e_i)(f_i\cdot x) \\ &=\sum_i \xi_i \lambda_i \\ &=x\cdot f \end{align*}

ここで、tr(A)=\sum_i A_{ii}で、x\otimes fは、VからVへの写像であること、A_{ij}=f_i\cdot (A e_j)を用いました。

冒頭の疑問に対する答え

  • 定義がどういうモチベーションで出てきたのか分からない
     →具体的な形式は、以下のような計算を分かりやすくするモチベーションで出てきたのではないでしょうか?
\begin{align*} &\begin{bmatrix} a_1b_1 & a_1b_2 & \dots & a_1b_n \\ a_2b_1 & a_2b_2 & \dots & a_2b_n \\ \vdots & \vdots & \ddots & \vdots \\ a_mb_1 & a_mb_2 & \dots & a_mb_n \end{bmatrix} \begin{bmatrix} c_1 \\ c_2 \\ \vdots \\ c_n \end{bmatrix} \\ &=\begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_m \end{bmatrix} \begin{bmatrix} b_1 & b_2 & \cdots & b_n \end{bmatrix} \begin{bmatrix} c_1 \\ c_2 \\ \vdots \\ c_n \end{bmatrix} \\ &= \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_m \end{bmatrix} (b_1 c_1+b_2 c_2+\cdots +b_n c_n) \end{align*}

上記の計算をテンソル積を用いて書くと以下のようになります。

\begin{align*} (a\otimes b)c=(b\cdot c)a \end{align*}
  • n次元ベクトルとm次元ベクトルのテンソル積って何次元?
    →定義より底がnm個あるため、nm次元になります。

  • どういう演算なら良くて、どういう演算がダメか分からない
     →(a\otimes b)cという式を見たら、bcは互いに双対なベクトル空間の元でなければならず、一方aはこれらと体が同じであれば異なるベクトル空間の元であっても良いです。

  • b\otimes aa\otimes bって違う?
     →テンソル積に関して交換法則が成り立たないので、一般的に異なります。

  • クロネッカー積というのもあるけど、テンソル積と同じ?
     →クロネッカー積も同じ記号を使って表現しますが、テンソル積の具体的な形式の一つとして、行列同士の積を定めたものです。ですので、クロネッカー積もテンソル積の一つです。A = (aij) を m × n 行列、B = (bkl) を p × q 行列とすると、それらのクロネッカー積 A\otimes B

A\otimes B = \begin{bmatrix} a_{11} B & \cdots & a_{1n}B \\ \vdots & \ddots & \vdots \\ a_{m1} B & \cdots & a_{mn} B \end{bmatrix}

で与えられる mp × nq 区分行列です。成分をはっきり書けば、

\begin{bmatrix} a_{11} b_{11} & a_{11} b_{12} & \cdots & a_{11} b_{1q} & \cdots & \cdots & a_{1n} b_{11} & a_{1n} b_{12} & \cdots & a_{1n} b_{1q} \\ a_{11} b_{21} & a_{11} b_{22} & \cdots & a_{11} b_{2q} & \cdots & \cdots & a_{1n} b_{21} & a_{1n} b_{22} & \cdots & a_{1n} b_{2q} \\ \vdots & \vdots & \ddots & \vdots & \ddots & \ddots & \vdots & \vdots & \ddots & \vdots \\ a_{11} b_{p1} & a_{11} b_{p2} & \cdots & a_{11} b_{pq} & \cdots & \cdots & a_{1n} b_{p1} & a_{1n} b_{p2} & \cdots & a_{1n} b_{pq} \\ \vdots & \vdots & \ddots & \vdots & \ddots & \ddots & \vdots & \vdots & \ddots & \vdots \\ \vdots & \vdots & \ddots & \vdots & \ddots & \ddots & \vdots & \vdots & \ddots & \vdots \\ a_{m1} b_{11} & a_{m1} b_{12} & \cdots & a_{m1} b_{1q} & \cdots & \cdots & a_{mn} b_{11} & a_{mn} b_{12} & \cdots & a_{mn} b_{1q} \\ a_{m1} b_{21} & a_{m1} b_{22} & \cdots & a_{m1} b_{2q} & \cdots & \cdots & a_{mn} b_{21} & a_{mn} b_{22} & \cdots & a_{mn} b_{2q} \\ \vdots & \vdots & \ddots & \vdots & \ddots & \ddots & \vdots & \vdots & \ddots & \vdots \\ a_{m1} b_{p1} & a_{m1} b_{p2} & \cdots & a_{m1} b_{pq} & \cdots & \cdots & a_{mn} b_{p1} & a_{mn} b_{p2} & \cdots & a_{mn} b_{pq} \end{bmatrix}

です。私は最初この定義を見て、あれ?と思いました。なぜなら、数学における定義で、テンソル積はベクトル空間の元の組に対して定義すると述べているのに、ここでは行列の組に対して定義しているからです。
しかし、ここでは行列もベクトル空間の元として扱います。具体的には上の例で、行列Aを含むベクトル空間の底を、ij成分のみ1で他は0の行列E_{ij}として、それらの一次結合として表す、つまりA=\sum_{ij}a_{ij}E_{ij}として、ベクトル空間を考えます。

  • 外積でテンソル積と同じ記号を使ってるのを見たことがあるけど同じ?

日本語で外積と言う時、以下のどれのことを指しているか注意が必要ですが、同じ記号を使っている2.はテンソル積の一つです。

  1. cross product(クロス積とも表記されることがあります。)

定義:

\boldsymbol{a} \times \boldsymbol{b} = \left| \boldsymbol{a} \right| \left| \boldsymbol{b} \right| \sin (\theta) \ \boldsymbol{n}

ただし、\theta は2つのベクトルのなす角の角度、|⋅| はベクトルの大きさ、\boldsymbol{n} は2つのベクトルがなす平面に対し垂直な単位ベクトルを表します(\boldsymbol{n}\boldsymbol{a}, \boldsymbol{b} ,\boldsymbol{n}が右手系になるように取る)。

  1. outer product(直積(direct product)と表記される場合もあります。※ 集合論における直積は、冒頭に示したように、各集合の元を組としたものを元として持つ新たな集合のことを指し、別の意味なので注意が必要です。)
    m\times 1ベクトル、n\times 1ベクトルが与えられた時、
\mathbf{u} = \begin{bmatrix} u_1 \\ u_2 \\ \vdots \\ u_m \end{bmatrix}, \quad \mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix}
\mathbf{u} \otimes \mathbf{v} = \mathbf{A} = \begin{bmatrix} u_1v_1 & u_1v_2 & \dots & u_1v_n \\ u_2v_1 & u_2v_2 & \dots & u_2v_n \\ \vdots & \vdots & \ddots & \vdots \\ u_mv_1 & u_mv_2 & \dots & u_mv_n \end{bmatrix}

この定義は、行列のクロネッカー積の特別な場合になっています。つまりテンソル積の一つです。

  1. exterior product(ウェッジ積(wedge product)と呼ばれる場合もあります。)

定義は以下です。

a\wedge b=a\otimes b-b\otimes a

参考文献

  • 線形代数学 佐武一郎著
  • Wikipedia "Tensor product", "Kronecker product"

Discussion