図で説明する線形代数入門
(ducktyped.org)- この記事は、線形代数の基本概念を図解とともに紹介する内容
- 序盤では ガウス消去法 と 行の見方 vs 列の見方 の概念に重点を置いて説明
- 現実的な例(コイン、食べ物)を使って、線形方程式と解を見つける過程をわかりやすく説明
- ベクトルや行列表記など、数列を超えた数学的な考え方への転換を強調
- 数字の代わりに 配列、ベクトル、行列 を扱うことが線形代数の核心であることを強調
はじめに
この記事は、これまでの代数は知っているが線形代数は知らない人のための入門資料である。
最初に扱う2つの重要な概念は ガウス消去法(Gaussian elimination) と 行の見方(row picture) vs 列の見方(column picture) である。
お金の例
- 複数のニッケル硬貨(nickel)とペニー硬貨(penny)があるとき、23セントを作るために各硬貨が何枚必要かを計算する問題を説明
- x はニッケルの枚数、y はペニーの枚数である。式にすると、x と y の値の組み合わせで 23 を作る線形方程式になる
- この例では解が複数ありうる(例: ニッケル4枚とペニー3枚、またはペニー23枚など)
- 線形方程式(linear equation) とは、曲線や穴がなく、すべてが平面上にある数式であることを強調
- 変数2つで 1つの数 に合わせるのは簡単だが、変数2つで 2つの数 に同時に合わせる状況になると複雑になり、このような場合にガウス消去法が有用であることを紹介
食べ物の例
- パン(bread)と牛乳(milk)のような2種類の食品があり、それぞれの 炭水化物(carbs) と たんぱく質(protein) の情報をもとに、決められた目標(例: 炭水化物 5g、たんぱく質 7g)を満たす組み合わせを求める問題
- この場合は2つの方程式を作り、x(牛乳の個数)、y(パンの個数)の値を見つける必要がある
- このような問題に ガウス消去法 を使う
ガウス消去法
- 2つの線形方程式として書き直したあと、片方の方程式の一定倍をもう片方の方程式に引いたり足したりして、変数を1つずつ消去しながら値を絞っていく過程を説明
- 例では y を消して x の値を求め、そのあと再び代入して y の値を求める
- 結果として 牛乳3個、パン1個 が答えである
- ガウス消去法 は長い歴史を持つ一般的なテクニックであることに言及
図で理解する方法
- 上では行の見方(row picture)で解いたが、ここでは 図/グラフ を通じて問題を視覚的に解く
- 各式を x(牛乳)基準に変形し、グラフ上に直線を描く
- 1本目の式のグラフは、目標の炭水化物を満たすすべての牛乳-パンの組み合わせ(直線上の点)である
- 2本目の式も同様に図示する
- 2つの目標を同時に達成するには、2本の直線が交わる1つの点が答えであることを強調
- この方法でも結論として牛乳3個、パン1個が得られる
- ガウス消去法 は線形代数がなくても2000年以上にわたって使われてきた、非常に基本的で不可欠なテクニックであると説明
列の見方 (Column Picture)
- ここまでは各式をそれぞれ見る 行の見方(row picture) に集中していたが、ここからは 列の見方(column picture) を導入
- 2つの式を1つの式にまとめ、係数を 配列(ベクトル) として表現する
- ベクトルは、番号が順番についている配列と考えても差し支えない(コンピュータサイエンスにおけるベクトルに近い)
- ベクトルのグラフ化: ベクトルは点として表すことも、矢印として表すこともできる
- ベクトル同士の加算を視覚的に見ると、答えに至る経路(例: 牛乳ベクトルを3回、パンベクトルを1回足す)として直感的に確認できる
- ベクトルの乗算と加算も、それぞれベクトルの各要素ごとの演算であることを説明
- ベクトルを使った列の見方は、多くの点で従来の方法より直感的である場合がある
線形代数を理解する
- 数字単位の代数から 配列、ベクトル 中心の代数へと発想を転換することが、線形代数の主要な内容であると喚起
- 列の見方、行の見方のどちらも線形代数の核心的な可視化方法である
- 最後に 行列(matrix) 表記 を短く紹介し、システム全体を行列 x ベクトルの形で整理できることを示す
次の内容予告
- 今後のチャプターでは 行列、ドット積(dot product) など、線形代数の重要概念がさらに扱われる予定
- 興味があれば購読を勧める
追加の読み物と締めくくり
- より多くの資料やアート作品を見ることができる Instagram リンクを提供
1件のコメント
Hacker Newsの意見
明快で役に立つ内容だという点には同意するが、例として使われている数字の 1 と 2 がパンと牛乳を同時に表しているため、行列の形で見たときにどの 1 がパンでどの 1 が牛乳なのか直感的に区別しづらい。もし 1,2,3,4 のようにそれぞれ異なる数字を使っていれば、ずっとわかりやすくなったと思う
ブログ記事の後半は本当に気に入った。ただ、最初をガウス消去法から始めるのは、うまい言葉が思いつかないが少し「神秘的」なアプローチだ。まず問題があって(「連立方程式をどう解く?」「2本の直線の交点をどう求める?」)、それを図で見せて、そのあとに方法やアルゴリズムを紹介するほうが論理的に感じる。逆にすると、微積分の連鎖律を幾何学的な意味抜きで先に教えるような感じだ
筆者です。たしかにその通りかもしれない。ガウス消去法の部分は、ほとんどの読者がすでに一度は触れたことがあるだろうと思って復習のつもりで書いたし、本題を早く伝えたかった。もしこの部分で難しさを感じた人がほかにもいるなら、ぜひフィードバックを聞きたい。たぶん、もっとゆっくり詳しく説明する必要があるのかもしれない
「消去できるというのはどういう意味なんだ?」というあたりが、まだはっきりしない。でも、(筆者が)列の視点を導入するやり方そのものはとても魅力的で、自分のような初心者には本当に役に立つ<br>それに付け加えると、線形代数の教科書は無数にあるのに、内容も順序もみんな違う。このせいで線形代数は教えるのも理解するのも難しいのだと思う。だからこそ、さまざまな視点がもっと必要だと思う。万人に同じように合う唯一のアプローチはないからだ
今回の記事はとても気に入った。パンと牛乳を表す変数名に x, y だけを使うより、別の変数文字で表したほうが混乱が少ない気がする。というのも、あとで x, y がグラフ上の炭水化物やタンパク質のような別の概念の x, y に変わってしまうからだ
Aditya Bhargava の仕事をまた見られてうれしい。昔の Grokking Algorithms の頃からすでにファンだった
内容はかなり良い。大学で1学期受けるまでは、線形代数は完全にミステリーだった。とてもよく整理されている<br>ベクトルという概念に慣れていない人向けには、2つのベクトル(大きさと向き)がそれぞれパン1個、牛乳1本をどう表すのか、そしてベクトルをどう移動したり足したりできるのかを簡単に説明してくれると、さらに良くなると思う
こういうコンテンツが世の中にもっと増えてほしい。数学教育コンテンツをうまく作るのは本当に難しいが、これはとても良い内容だ
視覚的な説明のしかたと動機づけの方法がとても気に入った。今は "The No Bullshit Guide to Linear Algebra" のようないくつかの資料で線形代数を勉強していて、かなり良いと思っている。もしこういう実用的で直接応用できるレベルの線形代数の本のおすすめがほかにもあれば、共有してほしい。多くの本は理論寄りすぎるか、参入障壁が高すぎるように感じる
自分もちょうど今、LinAlg の教科書をいろいろ見ているところだ。ML/AI に関心があるので、その観点からアプローチしている<br>KA academy で線形代数まで受講して、ほかの資料や教科書も並行して見ている<br>3B1B や Strang(MIT OCW の LinAlg 講義)を勧める人が多いと思うけど、3B1B は直感的で入門にはすばらしい一方、最初にしっかり学ぶには少し速く感じるし、Strang は本当に優れているけれど、ときどき講義で横道にそれて追いにくい。それでも補助資料としては必ず使っている<br>LADR4e(Linear Algebra Done Right) も良いが、証明の部分が難しくてまだ全部は追いきれていない<br>'Linear Algebra done wrong' や Hefferon の本もあるが、これらもかなり早い段階で証明中心になる。2周目、3周目の学習にはすばらしいと思う<br>さらに、「抽象線形代数(abstract linear algebra)」という科目が別にあるが、従来の線形代数の本と複雑さの差はそれほど大きくない<br>自分がかなり進められたのは ROB101 の教科書 (https://github.com/michiganrobotics/rob101/blob/main/Fall%202021/Textbook/ROB_101_December_2021_Grizzle.pdf) で、線形独立性までは主にこれを参考にしつつ、MIT の Strang 講義も並行して見ていた<br>ROB101 はコーディング面もよく扱っているので、ML/AI でコーディングと結びつけて考えるのに向いている<br>それと、演習問題用に東欧の数学の教科書を何冊か持っている<br>最近は https://www.math.ucdavis.edu/~linear/ のコース/教材を復習していて、https://math.berkeley.edu/~arash/54/notes/ のノートにもかなり助けられている
自分が本当におもしろく読んだ本は "Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares" だ <br>https://web.stanford.edu/~boyd/vmls/
「実用的で、直接適用できるレベルの理解が目標」と書いていたけれど、具体的にどこへ適用したいのかが気になる。自分の考えでは、理論(たとえば線形代数)を実用的な動機だけで学ぶのは少し変だ。むしろ実際の応用書を読みながら理論を並行して学んでもいいのではないかと思う。そして本当に理論が必要になる状況なら、内容がどれだけ難しくても結局は学ぶしかない<br>たとえば、線形代数は量子力学を学ぶときに非常に重要だ。だからその目的なら、量子力学の教科書を先に見たほうがむしろよいと思う
「実用的で、直接適用できるレベルが目標」と書いたけれど、自分も同じだ。ML で実際に使うにはまさに最適な分野だと思うし、自分もそれを扱うシリーズを準備している
3blue1brown の線形代数シリーズにもぜひ言及すべきだと思う。この記事のレベルより少し上だが、説明が本当にすばらしく、それでもなおアクセスしやすい<br>https://youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
3B1B の動画は本当に驚異的だ。ただ、自分には線形代数の動画はやや速く感じられたので、それが今回このシリーズを書き始めたきっかけでもある
3B1B が使っているグラフィックフレームワークがオープンソースで公開されているのもすごい<br>https://github.com/ManimCommunity/manim
いつもこういうタイプの記事を読むと、最初は「わあ! ついに自分にも理解できる形で数学を説明してくれる人が現れた!」と思うのに、ガウス消去法のあたりからまた内容を見失ってしまう
Josh Starmer という名前を見ると、「Bam!」という表現が自動的に思い浮かぶ。絵を描きながら機械学習を説明していたあの本を覚えている人がいるかわからないが、YouTube チャンネルも昔よく見ていた。こういう説明コンテンツは本当に学習をもっと楽しくしてくれる気がする