大学時代、線形代数を履修した。
行列の計算をした記憶はある。ベクトルという言葉も覚えている。試験も受けたはずだ。
ただ、何を学んでいたのかと聞かれると、うまく説明できない。
そんな線形代数を、今になってもう一度学び始めた。
何かの資格を取得するためでも、仕事で必要になったからでもない。
単純に、昔よく分からなかったものを、もう一度理解してみたいと思ったからだ。
一生かけて、少しずつものにできればいい。
そんな気持ちで始めた学び直しである。
そもそも、線形代数とは何なのか
まず、「線形代数」という言葉から考えてみた。
線形とは何か。代数とは何か。
代数といえば、私の中では変数を使って式を表現することだった。
例えば、
という式を使って、変数の関係を表現する。
プログラミングでも変数を使う。だから、代数という言葉には、それほど違和感がなかった。
一方、線形という言葉は少し難しい。
調べてみると、線形代数では足し算とスカラー倍が重要らしい。
スカラー倍とは、ベクトルを数値で定数倍することだ。
そして、その演算がどのような規則に従うのかを考える。
どうやら、単に行列の計算方法を覚える学問ではないようだ。
ベクトルとは何か
ここで、ベクトルという言葉に戻ってきた。
ベクトルといえば、方向と大きさを持つ矢印。
あるいは、数値を縦に並べたもの。
そんな理解だった。
例えば、
これなら分かる。
ところが、線形代数では、多項式や関数もベクトルとして扱えるという。
どういうことだろう。
矢印ではない。数値を並べたものでもない。
それなのにベクトルなのか。
学び直しを始めたばかりなのに、ベクトルが何なのか分からなくなってしまった。
「何であるか」ではなく「どんな性質を持つか」
ここで、一つ面白い考え方に出会った。
ベクトルが何であるかを考えるより、どのような性質を持つかを考える。
線形代数では、ベクトル同士の足し算とスカラー倍に注目する。
そして、それらの演算が一定の規則を満たす集合を、ベクトル空間と呼ぶ。
その集合の要素がベクトルになる。
つまり、ベクトルを具体的な形で定義するのではなく、演算の性質によって捉えるということらしい。
なるほど。
何であるかを先に決めるのではなく、どんな規則を満たすかによって、共通の理論で扱える対象を決める。
そう考えれば、矢印も、多項式も、関数も、同じ線形代数の世界で扱える理由が少し見えてくる。
もちろん、これでベクトル空間を理解できたとは思っていない。
ただ、何を理解しようとしているのかは、以前より明確になった気がする。
分子生物学を学んだときの感覚に似ている
私は以前、分子生物学に関わる仕事をしていた。
生命現象は複雑だ。
例えば、細胞が増殖するという現象も、詳しく調べれば、受容体、シグナル伝達、遺伝子発現、細胞周期といったさまざまな過程に分かれていく。
複雑な現象を細分化して、解像度を上げていく。
そんなアプローチにはなじみがある。
線形代数の教科書には、複雑な現象でも一部分を取り出して細かく見れば、直線的な関係として近似できる場合が多い、という趣旨の説明があった。
なるほど、と思った。
現実世界が単純な直線関係でできているわけではない。
それでも、条件や範囲を限定すれば、複雑な現象を比較的単純な数学的モデルで扱える場合がある。
一方で、線形代数には、複数の情報をベクトルとしてまとめ、全体の構造を捉えるという側面もある。
細かく見ることで理解する。
まとめて見ることで理解する。
一見すると逆方向のアプローチだが、どちらも複雑な世界を理解しようとする試みなのだろう。
LLMもベクトルを使っている
学び直していて、もう一つ興味深かったのが生成AIとのつながりだ。
LLM(大規模言語モデル)では、言葉を処理するために、トークンをベクトルで表現する。
そして、行列による変換やAttentionなどの仕組みを通じて、文脈に応じた処理を行っている。
もちろん、LLMは線形代数だけで動いているわけではない。
それでも、今まで単なる計算問題だと思っていた行列やベクトルが、普段使っている生成AIの基礎にもなっている。
これはなかなか面白い。
とはいえ、LLMの仕組みを理解するために線形代数を始めたわけではない。
学んでいる途中で、知っている技術との接点が見つかった。
それくらいの距離感が、今はちょうどよい。
昔は、理解する前に先へ進んでいた
大学時代を振り返ると、線形代数の授業では計算方法を覚えることに意識が向いていた気がする。
行列を計算する。
連立方程式を解く。
試験に出る問題に対応する。
それらも大切な学習だったはずだが、そもそも何を扱っているのかを十分に理解しないまま進んでいたのかもしれない。
今は違う。
「写像って何だっけ?」
「ベクトル空間って何だっけ?」
「そもそも代数って何だっけ?」
そんなところで、いくらでも立ち止まれる。
生成AIに質問して、説明を聞いて、また疑問が出てくる。
分かったつもりになったところで、もう一度聞いてみる。
すると、実は理解できていなかったことが見つかる。
それも含めて面白い。
もちろん、生成AIの説明が常に正しいわけではない。数学的な定義や証明は教科書でも確認する必要がある。
それでも、初歩的な疑問を何度でも投げかけられる相手がいることは、学び直しのハードルをずいぶん下げてくれる。
学ぶことに、目的は必要なのだろうか
私はIT系の専門学校で教員をしている。
学生には、学習の目的や意義を考えてもらう機会も多い。
- 資格を取るため。
- 就職するため。
- 何かを作れるようになるため。
どれも大切な目的だと思う。
ただ、自分自身の学び直しについて考えると、必ずしも明確な目的があるわけではない。
線形代数を学んだからといって、すぐに仕事が変わるわけでも、収入が増えるわけでもない。
それでも、学びたい。
かつて理解できなかったことが、今なら少し理解できるかもしれない。
その感覚だけでも、十分に学ぶ理由になるのではないだろうか。
まだ、ほとんど分かっていない
今のところ、線形代数を理解したとは到底いえない。
ベクトル空間の定義を聞いて、なるほどと思った程度である。
行列や線形写像についても、入口をのぞいたばかりだ。
それでも、大学時代とは少し違う。
当時は、分からないことが苦痛だったように思う。
今は、分からないことから次の疑問が生まれるのが面白い。
何の役に立つかは、まだ分からない。
そもそも、役に立たなくても構わない。
一生かけて少しずつ理解できれば、それでいい。
そんな気持ちで、線形代数へのRetryを続けてみようと思う。
今度は、計算方法だけではなく、その背後にある考え方も楽しみながら。
まだ分からない。でも、今度は面白い。

コメント