このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

線形代数の難所とアダムとイブと矢印一元論

量子計算や可逆計算って、なんか面白そうだと思っているのですが、あんまり先に進めないでいます。とりあえず線形代数の復習でもしよう、と、紙ナプキンで計算とかはじめました。

それでいまさら気がついたのですが、線形代数(「線型」を使う場合もあり)って、いくつかの流儀があるんですよね。もちろん、おおすじにおいては同じなんだけど、細かい差異がある。この差で混乱したり、理解が阻害されそう。線形代数の難所(つまずきの石)になりかねませんね。

特に、双対空間の扱いは、定式化に「ものの見方」が反映されるので、流儀によりだいぶ違った印象があります。このへんの違いは、抽象的に見てるとあまり鮮明じゃないのですが、なんかのプログラミング言語で線形計算ライブラリを作ろうと思うとハッキリ認識できます。僕の場合、具体的なプログラミング言語じゃなくて(インフォーマルな)ラムダ計算で線形手計算しようと思ったんですが、やり方が何種類も出てきてしまったのです。

内容:

コベクトルは物か働きか?

世の中には「物と働き」があるとみなせます。プログラミングっぽく言えば、データと関数です。もっとも、この区別は絶対的ではなくて、米田埋め込みなんてのは「物だって働きだろうよ」って考え方です。働きも物化(エンコーディング)できるって発想がノイマン型コンピュータの基本的アイディアで、圏論では指数と呼んでいます。あっ、いやっ、今日は圏論の話はあまりしないんですけどね。

さて、線形代数に登場する事物達(entities)も、通常は物と働きに分けます。ベクトルは物でいいでしょう。問題はコベクトルなんですよ。コベクトルって何か? って。双対空間の元です。双対空間って? その定義が微妙なんですよ。多数派の定義としては、ベクトル空間Uがあったとして、Uからスカラー体Kへの線形写像の全体を Lin(U, K)として、U* = Lin(U, K) と定義します。Uに対して一意的に決まるU*が「Uの双対空間」です、標準的には。

この定義からは、双対空間U*の元は関数だから、明らかに働きですよね。U*の元は、線形(線型)形式、一次形式、単に形式と呼ばれたりしますが、これは働き(関数)だという感じが言葉に込められています。一方で、U*の元を双対ベクトルといったり、普通のベクトルを縦ベクトルとみなして横ベクトルと呼んだりもします。「関数とはいえ、やっぱりベクトルだよ」ってな雰囲気。この記事では、用語「コベクトル」を採用します。

ベクトルあってのコベクトルなのか

個人的には、上で紹介した標準的定義は嫌いです。ベクトルとコベクトルの対称性がないんですよ。物と働きだから扱いが違っている。なんかぎごちない、不格好、美しくない。「どっちも物」か「どっちも働き」にしたほうが対称性があっていいと思います。

それとね、Lin(U, K)の形の双対空間U*は、もとのベクトルUから事後的に作られているでしょ。Uより前に存在できないですよね。神様がアダムを創り、イブはアダムの肋骨から創られたみたいな。コベクトルは、ベクトルがないと、それ自体として意味がない、つうか定義さえできないですよね。これ、おかしくないですか。

アダムとイブはカップルなんだから、神様は同時に創るべきだったんじゃ? と、双対カップルの同時創造の流儀もあります。以下に紹介しましょう。

UとWは2つのベクトル空間とします。双線形写像φ:U×W→Kがあって、次を満たしているとします。

  1. 任意のw∈Wに対して φ(u, w) = 0 ならば、u = 0 である。
  2. 任意のu∈Uに対して φ(u, w) = 0 ならば、w = 0 である。

有限次元では、どっちか一方の条件でいいんだけど、対称性があるから両方書いておきますね。

上の状況で、(U, W, φ)を双対ペアと呼びましょう。注意すべきことは、UとWでどっちが先とかどっちがエライとかは一切ないことです。UとWは完全に平等です。神様が同時に創ったカップルみたいなもんですね。UはWの双対パートナー、WはUの双対パートナーです。ただし、カップルに男女の違いがあるように、φの左引数に入るか右引数に入るかの違いはあるので、UはWの左双対パートナー、WはUの右双対パートナーと呼び分けましょう。

2つの流儀を比較する

最初に紹介した多数派の定式化を不平等双対方式、後の定式化を平等双対方式と呼ぶことにします。

不平等方式から平等な双対ペアを作るのは簡単で、(U, U*)とペアにして、φ:U×U*→K はφ(u, f) = f(u) とします。U* = Lin(U, K) だったので、f∈U* は u∈U に適用(apply)できるのです。

今度は、(U, W, φ)から出発します。w∈W に対して、λu∈U.φ(u, w) を考えると、これは変数uの関数なので、U→K という線形写像だと思えます。U→K の線形写像は Lin(U, K)、つまりU* の元です。w に λu∈U.φ(u, w) を対応させる写像は W→U* という線形写像です。

Φ(w) = λu∈U.φ(u, w) (あるいは Φ = λw∈W.λu∈U.φ(u, w) )と置いて、いつΦ(w) = 0 となるかを考えると、どんなuに対しても (Φ(w))(u) = 0 のときです。つまり、Φ(w) = 0 ⇔ ∀u.[(Φ(w))(u) = 0] ⇔ ∀u.[φ(u, w) = 0] です。最初に導入したφの条件から ∀u.[φ(u, w) = 0] ⇔ w = 0 が結論できます。

まとめると、Φ(w) = 0 ⇔ w = 0。これは、Φ:W→U*の核空間が零空間{0}であることなので、Φは単射、有限次元空間なら次元を考慮してΦが同型であることがいえます。(U, W, φ) が双対ペアならWはU*と同型であり、その同型写像Φにより、双線形形式φは次のように書けます。

  • φ(u, w) = (Φ(w))(u)

右と左を交換した議論をすると、UとW*が同型で、同型写像Φ'により、

  • φ(u, w) = (Φ'(u))(w)

小さな差異が不愉快に付きまとうから第三の流儀へ

なーんだ、結局は同型なんだから、どっちだっていいじゃん -- いやっ、実際の計算をしてみると、この2つの流儀では随分と違った感じです。論理的なレベルで話をするなら、どっちでもいいんだけど、感性レベルと作業レベルだとこの違いが効いてくるんですよ。2つの流儀を行ったり来たりすると頭が混乱するうー。

実はさらに、「ベクトルもコベクトルも働きだ」って考える第三の流儀があるんですよ。僕としては、この第三の流儀が一番好きだな。これはマイナーな定式化ですけどね。手短に紹介。

u∈U に対して、線形写像 K→U を次のように定義できます。

  • λk∈K.uk

ukはベクトルuとスカラーkの乗法です。この K→U をあらためてベクトルと呼んで、U→K をコベクトルと呼ぶことにします。対称的でしょ。こう考えると、Uの元としてのベクトルは忘れてしまっていいのです。u:K→U がベクトル、f:U→K がコベクトルで、u;f = f(u):K→K が適用した結果です。適用と結合の区別はありません。u;f は K→K ですが、これこそがスカラーです。つまり、スカラー体の元という概念が消えて、K→K という矢印がスカラーそのものになるのです。

こうなると、UとかKが元(element; 要素)を持つ集合である必要性はまったくなくなります。主役は矢印、K→U、U→K、K→K に移っているので、KやUは単に矢印の両端の目印(となる記号)に過ぎません。

このままでは、u:K→U と f:U→K は何の関係もありません。KやUという記号やuやfという矢印に作用する(-)*を考えて、u*:U*→K*、あるいは作用(-)による u:U→K などを適切に設定すると、線形代数の双対や随伴の概念を再現できます。

今ザッと説明した第三の流儀がスッキリしていると僕は思うのですが、なにしろ普及してないので、第一あるいは第二の流儀に翻訳する必要が生じます。結局、3つの流儀を行ったり来たりして頭がもっと混乱するうー。