章の構成(ツリー構造)
第1章: 機械学習に至るまでの基礎数学(線形代数と微分)
├── 1.1 機械学習の目的と全体像:何を予測しようとしているのか?
│ ├── 1.1.1 予測というタスクの本質(回帰と分類)
│ ├── 1.1.2 世界を数式で結ぶ:説明変数、目的変数、パラメータ
│ └── 1.1.3 「学習」の正体:誤差関数を最小化するということ
├── 1.2 単回帰から重回帰へ:直感から多次元の世界へ
│ ├── 1.2.1 中学数学から始める1次関数(y = wx + b)
│ ├── 1.2.2 データが増えることの意味と「積和」の嵐
│ └── 1.2.3 膨大な連立方程式と向き合う限界
├── 1.3 線形代数:大量のデータを一挙に扱う「空間と変換」の道具
│ ├── 1.3.1 積和演算の美しいパッケージ化:行列とベクトルの導入
│ ├── 1.3.2 複雑な連立方程式を一撃で書き下す行列の威力
│ └── 1.3.3 計算手段から「空間」と「変換」の理解へ
├── 1.4 微分:最適なパラメータを見つけ出す「傾き」の極限
│ ├── 1.4.1 微分の本質は中学で習う「直線の傾き」にすぎない
│ ├── 1.4.2 極限の導入と微分の厳密な定義
│ └── 1.4.3 誤差の谷底へ下る:勾配降下法という最適化のイメージ
└── 1.5 まとめ:機械学習とは基礎数学の美しい集大成である
第1章: 機械学習に至るまでの基礎数学(線形代数と微分)
1.1 機械学習の目的と全体像:何を予測しようとしているのか?
現代において「機械学習」や「AI」という言葉は、まるで魔法の杖のように語られることが多い。画像を見せれば何が写っているかを答え、文章を入力すれば人間のように自然な返答を返す。その振る舞いを見ると、コンピュータの中に高度な知性が宿っているかのように錯覚してしまうかもしれない。
しかし、その蓋を開けてみれば、中で行われていることは「非常に膨大な四則演算」に過ぎない。機械学習のアルゴリズムは、感情や直感を持っているわけではなく、与えられたデータから数学的な規則性を抽出しているだけである。この章では、一番簡単な機械学習の例である「単回帰」を題材にとり、線形代数(行列)と微分という二つの数学的道具が、機械学習においてどのように使われ、どのような役割を果たしているのかを解き明かしていく。
1.1.1 予測というタスクの本質(回帰と分類)
機械学習が最終的に行おうとしていることは、極めてシンプルに言えば「未知のデータに対する予測」である。
例えば、過去のデータをもとにある物件の「家賃」を予測したり、明日の「気温」を予測したりするタスクがある。このように、予測したい対象(目的変数)が連続する数値である場合、これを回帰タスクと呼ぶ。 一方で、メールが「迷惑メール」か「正常なメール」かを判定したり、画像に写っている動物が「犬」か「猫」かを見分けたりするタスクもある。このように、予測したい対象が飛び飛びの値(カテゴリやラベル)である場合、これを分類タスクと呼ぶ。
実社会における応用例を見ると、回帰と分類は全く異なる処理を行っているように見えるかもしれない。しかし、数学的な根本の仕組みに立ち返ると、両者に決定的な違いはない。どちらも最終的には「何らかの関数にデータを入力し、その結果を出力として得る」という構造を持っている。分類タスクであっても、内部的には「犬である確率が80%」といった連続値を計算し、最終的にしきい値を用いて離散値に変換しているに過ぎないのだ。
1.1.2 世界を数式で結ぶ:説明変数、目的変数、パラメータ
予測を行うためには、原因と結果を結びつけるための「枠組み」が必要となる。機械学習において、この原因にあたる入力データを説明変数()、予測したい結果を目的変数()と呼ぶ。
家賃の予測を例に考えよう。家賃()は、「駅からの距離」「部屋の広さ」「築年数」といった複数の要因()によって決まると考えられる。これを最も単純な関数で表現すると、以下のようになる。
この関数の中身を、各要素の足し合わせ(線形結合)として具体的に書き下すと次のようになる。
ここで新たに登場した(重み)と(バイアス)が、機械学習における最重要概念であるパラメータである。 重みは「その説明変数が結果にどれくらい影響を与えるか」という重要度を表す。例えば「部屋の広さ」の重みが大きければ、部屋が少し広くなるだけで家賃が大きく跳ね上がることを意味する。バイアスは、すべての条件がゼロ(駅徒歩0分、広さ0、築0年など現実にはあり得ないが)のときの基準値、あるいは予測のゲタ履かせのような役割を果たす。
データが個(1件目の物件、2件目の物件……件目の物件)存在する場合、世界はこの積と和の繰り返しで表現されることになる。
機械学習のモデルとは、結局のところ、説明変数とパラメータを掛け合わせ、それらを足し合わせる「積和」によって目的変数と結びつける数式の束に他ならない。
1.1.3 「学習」の正体:誤差関数を最小化するということ
では、機械はどのようにして「賢く」なるのだろうか。それは、前項で登場したパラメータ(や)の値を、最適なものに自動で調整していく過程にある。この調整プロセスこそが、機械学習における**「学習(学習フェーズ)」**の正体である。
最初、コンピュータは適切なパラメータの値を全く知らないため、適当な乱数をとに設定する。当然、そのパラメータを使って予測した値(予測値)は、実際のデータが示す真の値(正解値)から大きくかけ離れている。この「予測値と正解値のズレ」を数学的に定義したものが**誤差関数(または損失関数)**である。
機械学習がやろうとしていることは極めて一貫している。それは**「手元のデータに対する誤差関数の値を最小化するような、最適なパラメータとを見つけ出すこと」**に尽きる。一度最適なパラメータが見つかれば、あとは結果的にもとまった関数に対して、未知の新しいデータ(ただし、学習したデータの範囲内である内挿に限られることが多い)を代入することで、精度の高い予測値を即座に得ることができるようになるのだ。
つまり機械学習とは、魔法ではなく「誤差を最小にするパラメータ探しの旅」であると言える。そして、この膨大な式をスッキリと表現・処理するための道具が「線形代数(行列)」であり、誤差を最小化するための道しるべとなる道具が「微分」なのである。
1.2 単回帰から重回帰へ:直感から多次元の世界へ
機械学習の土台となる数式がどのような構造をしているか理解したところで、次はその数式がデータ量の増加に伴ってどのように複雑化していくかを見ていこう。
1.2.1 中学数学から始める1次関数(y = wx + b)
機械学習の中で最もシンプルで基礎的なアルゴリズムが「単回帰」である。単回帰とは、たった1つの説明変数()から目的変数()を予測する手法だ。例えば、「気温()」から「アイスクリームの売上()」を予測するといった状況である。
この単回帰を数式で表すとどうなるだろうか。
この式を見て、何か見覚えはないだろうか。そう、これは中学数学の「1次関数」で習う (直線の式)と全く同じ形をしている。(重み)は直線の「傾き()」に対応し、(バイアス)は「切片(軸との交点)」に対応している。
つまり、単回帰がやろうとしていることは、散布図の上に打たれたデータ点の群れの中を通る「最も当てはまりの良い1本の直線(回帰直線)」を引くことである。
この直線の傾きと切片の値を決定することが、先ほど述べた「学習」に相当する。
1.2.2 データが増えることの意味と「積和」の嵐
単回帰は非常に分かりやすいが、現実世界の問題は1つの要因だけで決まるほど単純ではない。アイスクリームの売上は、気温だけでなく「湿度」「曜日」「周辺のイベントの有無」など、複数の要因が絡み合って決まるはずだ。
このように、複数の説明変数()を用いて目的変数()を予測する手法を「重回帰」と呼ぶ。重回帰の式は、単回帰の式を拡張しただけであり、1.1節で示した以下の形となる。
1件のデータを予測するためだけでも、これだけの掛け算(積)と足し算(和)が必要になる。さらに現実の機械学習では、モデルに学習させるためのデータ(学習データ)が数千件、数百万件と存在する。データが件ある場合、それぞれのデータに対して以下の数式が成立しなければならない。
右下の添字が少し複雑に見えるが、恐れる必要はない。例えば は「2件目のデータにおける、1番目の説明変数」という意味に過ぎない。
1.2.3 膨大な連立方程式と向き合う限界
さて、この数式の束をよく見てほしい。これは中学校で習う「連立方程式」の形そのものである。
機械学習の目的は、この連立方程式の制約の中で、予測値と実際の値の誤差が最も小さくなるような未知のパラメータ( および )を求めることだ。しかし、変数の数(次元数)が数百、データ数()が数百万となった場合、この連立方程式をそのままの形でプログラムに書き起こし、計算させることは現実的だろうか。
プログラミング言語のループ処理(for文など)を使って一つ一つの積和を計算していくと、コードは非常に煩雑になり、計算速度も絶望的に遅くなってしまう。数学的な見通しも極めて悪くなる。この「積和の嵐」をどうにかして簡潔に、かつ効率よく扱う方法が必要となるのだ。
1.3 線形代数:大量のデータを一挙に扱う「空間と変換」の道具
ここで救世主として登場するのが「線形代数」の主要な道具である**「行列(Matrix)」と「ベクトル(Vector)」**である。
1.3.1 積和演算の美しいパッケージ化:行列とベクトルの導入
行列とは、数や文字を縦横の長方形の形に並べて括弧でくくったものである。これを用いると、先ほどの気が遠くなるような連立方程式を一撃で書き下すことができる。
まず、件の目的変数()を縦に並べたものをベクトル とする。同様に、パラメータ()も縦に並べてベクトル とする。そして、膨大な説明変数のデータ群は、そのまま表の形(行列 )としてまとめる。
行列の積のルールは「左の行列の行と、右の行列の列の内積(対応する要素を掛けて足す)」であるため、この行列表記を展開すれば、見事に先ほどの連立方程式が復元される。
1.3.2 複雑な連立方程式を一撃で書き下す行列の威力
これらの行列とベクトルをそれぞれ1つの文字として置くと、世界は驚くほどシンプルになる。
いかがだろうか。どれだけデータ数(行数)が増えようが、どれだけ変数の数(列数)が増えようが、このたった1行の美しい数式で全データを表現できてしまうのだ。
行列は「積和演算を効率的に表現・演算するための究極のパッケージ」である。そして、現代のコンピュータ(特にGPU)は、この行列演算を高速に並列処理する機能に特化している。プログラミングの観点からも、ループ処理を回す代わりに「行列の掛け算」という1回の命令で済ませることは、計算速度の劇的な向上に直結する。
1.3.3 計算手段から「空間」と「変換」の理解へ
行列の恩恵は単なる「計算の省略」に留まらない。線形代数は、データを「空間」として捉え、行列を「変換」として捉える視点を与えてくれる。
データが行列 として表現されるとき、それは多次元の空間上に散らばる点の集まりと見なせる。そこにパラメータの行列(ベクトル) を掛けるということは、空間を伸縮させたり回転させたりする「線形変換」を施していることに等しい。機械学習は、入力データの空間を、目的変数の空間(分類の正解や、回帰の予測値)へと都合よく「変換」するための、最適な変換ルール(行列)を探す作業でもあるのだ。
1.4 微分:最適なパラメータを見つけ出す「傾き」の極限
行列によって大量のデータを一挙に扱うための「数式の整理」は完了した。次はいよいよ、機械学習の中核である「学習」のプロセス、すなわち「最適なパラメータ(と)をどうやって見つけ出すのか」という問題に踏み込んでいく。ここで最大の武器となるのが「微分」である。
1.4.1 誤差を測るものさし:平均二乗誤差(MSE)の導入
1.1節で「予測値と正解値のズレ(誤差)を最小化する」ことが学習の目的だと述べた。この目的を数学的に達成するためには、まず「誤差の大きさ」を計算するための明確な数式(ものさし)が必要になる。
最も簡単な単回帰モデル(説明変数が1つの1次関数)を例に考えよう。
(※ここでは実際の正解値 と区別するため、予測値を (ワイハット)と表記する)
あるデータ をこの関数に入力したときの予測値が であり、実際の正解データが だとする。このとき、予測と正解のズレは で表せる。しかし、このズレはプラスになることもマイナスになることもあるため、単純に足し合わせると誤差が打ち消し合ってしまう。
そこで、ズレを**「2乗」して必ずプラスの値にし、すべてのデータ(個)について足し合わせ、最後にデータ数で割って平均をとる。これが、回帰タスクで最も標準的に使われる誤差関数である平均二乗誤差(Mean Squared Error:MSE)**である。
この式の に、単回帰の関数 を代入して展開すると、以下のようになる。
これが機械学習の「最適化の標的」である。文字である や にはすでに手元にある実際のデータ(定数)が入るため、この関数 は実質的に「パラメータ と によって値が変化する関数」となる。機械学習の目的は、**「この関数 の値が最小(ゼロに近い谷底)になるような と の組み合わせを見つけること」**に他ならない。
1.4.2 微分の本質と「偏微分」の導入
では、どうやってその谷底を見つけるのか。ここで「微分」が登場する。
微分とは、一言で言えば「ある瞬間におけるグラフの傾き」を求める計算である。中学で習う1次関数の傾き において、極限まで の増加量を に近づけたものが微分だ。
しかし、今回の誤差関数 には、動かせる変数が と の「2つ」存在する。このように変数が複数ある関数の傾きを調べるときは、**偏微分(へんびぶん)**という手法を使う。名前は仰々しいが、やっていることは非常にシンプルだ。「で偏微分する」ときは、をただの定数(ただの数字)として扱い、についてだけ通常の微分を行うのである。
先ほどのMSEの式を、 と それぞれについて偏微分すると、以下の2つの「傾きを示す式」が得られる。
(※ はラウンドディーと読み、偏微分を表す記号である)
この2つの式に、現在の と の値を代入すれば、「今いる場所における、それぞれの方向の坂の傾き」が正確にわかるのだ。
1.4.3 谷底へ下るアルゴリズム:勾配降下法(Gradient Descent)
現在の「傾き」がわかれば、あとは谷底に向かって少しずつパラメータの値を更新して(歩みを進めて)いけばよい。このプロセスのことを**勾配降下法(Gradient Descent)**と呼ぶ。
更新のルールは、以下の極めて直感的な数式で表される。
もし現在の場所で「傾き()」がプラス(右上がり)であれば、谷底は左側にあるため、現在の から値を引いて左へ移動する。 逆に「傾き」がマイナス(右下がり)であれば、谷底は右側にあるため、マイナスを引く(つまり足す)ことで を増やして右へ移動する。
ここで式に含まれる (アルファ)は、**学習率(Learning Rate)**と呼ばれる人間が設定する重要なパラメータだ。これは「1回の更新でどれくらいの歩幅で進むか」を決定する。 学習率が大きすぎると、谷底を飛び越えてしまっていつまでも正解にたどり着けない(発散する)。逆に小さすぎると、谷底に到達するまでに天文学的な時間がかかってしまう。
着実に谷底へ収束する
谷底を飛び越え発散する
進みが遅く到達できない
コンピュータは、この「現在の誤差を計算する」→「傾き(偏微分)を計算する」→「学習率を掛けてパラメータを少し更新する」というサイクルを何千回、何万回と高速で繰り返す。少しずつ直線の角度と位置が変化し、やがてデータ群の中央を貫く最も美しい1本の直線(回帰直線)へと収束していく。
これが、機械学習が「データから学習する」という魔法の正体である。蓋を開けてみれば、そこにあるのは中学レベルの「2次関数の谷底」を「極限な傾き」を頼りに探り当てる、泥臭くも極めて論理的な探求のプロセスなのである。
1.5 まとめ:機械学習の土台をなす数学的アプローチ
長い議論となったが、これで機械学習の基礎的な土台となる数学的背景を一通り見渡すことができた。この第1章の締めくくりとして、ここまで学んできた「線形代数」と「微分」の役割を統合し、機械学習というシステム全体の中でそれらがどう機能しているかを整理しよう。
1.5.1 線形代数と微分の役割分担
機械学習、特に今回例に挙げた回帰モデルの構築は、大きく分けて「モデルの表現」と「最適化の実行」という2つのフェーズから成り立つ。この2つのフェーズに対して、それぞれ異なる数学的アプローチが用いられている。
第一のフェーズ「モデルの表現」を担うのが**線形代数(行列とベクトル)**である。 現実世界のデータは複数の変数から成り、計算には膨大な「積和」が発生する。これを連立方程式のままで扱うことは計算機にとっても非効率であるため、データとパラメータを行列という形にパッケージ化する。
この数式によって大規模なデータを一挙に表現し、並列計算に適した状態へと落とし込む。線形代数は、大量のデータを効率的に処理するための土台として機能している。
第二のフェーズ「最適化の実行」を担うのが**微分(偏微分)**である。 適当な初期値から算出された予測値と、実際の正解値とのズレを「平均二乗誤差(MSE)」として定義する。この誤差を最小化するための指標として偏微分が用いられる。
現在の地点での「傾き」を偏微分で計算し、誤差が減少する方向へパラメータを反復的に更新していく(勾配降下法)。微分は、機械がデータから規則性を抽出し、パラメータを収束させるための指針として機能している。
1.5.2 計算の集積としての機械学習
「AI」や「人工知能」という言葉は、時に実態以上に擬人化されて語られることがある。しかし、その内部で起きていることは人間の持つ意志や直感の再現ではなく、膨大な四則演算の連続である。
データの関係性を関数の拡張として定義し、行列を用いて効率的に計算し、微分を用いて誤差関数を最適化する。そこに未知の知性や魔法のような仕掛けはなく、統計的アプローチと計算機科学、そして基礎的な数学が組み合わさった実用的な技術に過ぎない。しかし、論理的な数式で記述されているからこそ、その挙動を客観的に分析し、より複雑な課題に対応できるよう改良していくことが可能となる。
1.5.3 ブラックボックス構造の紐解きと今後の展望
機械学習のアルゴリズムは一見すると複雑に見えるかもしれないが、根本にあるのは「直線を引く」「傾きを求める」といった基礎数学の延長である。
本章を通して、機械学習アルゴリズムの内部でどのような計算が行われているのか、その大枠を掴むことができたはずだ。アルゴリズムを単なる入力と出力のブラックボックスとして扱うのではなく、内部の数学的構造を理解することは、モデルの挙動を正確に解釈し、適切なチューニングを行うための重要な基盤となる。
次の章では、この基礎的な回帰モデルから一歩踏み出し、目的変数が離散値である「分類タスク」への応用(ロジスティック回帰など)や、より複雑なデータを扱うための手法について見ていく。