内容が正しいかどうか分かりません。間違っていたらごめんなさい!あくまで自分なりの理解・個人的なメモとして残しています。
「テンソル」について調べると、だいたい絶望しませんか?
物理の本を開けば添字だらけの数式が押し寄せてくるし、数学の本を開けば抽象的な概念の空中戦。AIの話になると急に「ただの多次元配列だよ」と言われて、「で、結局なんなの?本を読んでもさっぱり分からん!」となるのが落ちでした。
でも、一度そういった難解な説明を全部横に置いて、自分なりに本質だけを削ぎ落として考えてみました。
テンソルって要するに、「多変数から多変数への線形変換」なんじゃないの?
- インプット:複数のベクトル(多変数)
- テンソル:それらを綺麗に変形・結合するルール
- アウトプット:複数のベクトル(多変数)
どうやらら、「多変数から多変数への線形変換」のことは、「多重線形写像」というみたいです。
なんだ、要するにそれだけのことなんじゃないの?と思ったら、自分の中では急に難しくなくなりました。
入力がいくつかあって、出力をいくつか吐き出す。その間を繋いでいる「綺麗で頑丈な変換ルール」のことを、わざわざ「テンソル」なんて大層な名前で呼んでいるだけなんじゃないかと……。
プログラム的なイメージ
個人的に一番スッキリ腑に落ちたのは、プログラムの関数みたいなこのイメージです。
Vector_out群 = Tensor(Vector_in群)
Tensor() の中身は 線形変換
もっと具体的に書くと、こんな感じです。
Vector_out1(a,b,c,d), Vector_out2(e,f), ...
= Tensor(Vector_in1(v,w), Vector_in2(x,y,z), ...)
究極、ベクトルである必要もなく、こうなるのではないかと思っています。
a,b,c,d,e,f, ... = Tensor(v,w,x,y,z, ...)
複数のインプットを関数に突っ込んだら、設定された線形変換のルールに従って処理されて、複数のアウトプットが返ってくるということです。
まとめ

テンソルは、本を読んでもさっぱり分かりませんでした。今は、スッキリしています。
「複数の入力を受け取って、各変数に対して綺麗なルールで複数の出力に変える変換の仕組み(多変数→多変数の多重線形変換)」と捉えておけば、自分の中ではこれで十分納得がいきました。
なんだ、難しくない……のかな?(繰り返しますが間違っていたらごめんなさい!)
たとえ間違えていたとしても、自分にとっては、確実に一歩進んだ感はあります。
