テーマ
第1章 数学の準備(1)— 関数と記号に慣れる
この章で学ぶこと
- 関数とは何か。
という記法の読み方と意味 - グラフで関数を「見る」方法(一次関数・二次関数の復習)
- 累乗と指数関数(
など)、そして「爆発的な増加」の感覚 - 対数(
)— 指数の逆演算。なぜ機械学習は対数だらけなのか - 自然対数の底
と の意味 (シグマ)記法 — 「たくさん足す」を1つの記号で書く方法 と の違い - 添字(
)と「 個のデータ」という考え方 - 関数の合成
— 後の章(微分の連鎖律、ニューラルネットワークの層)への布石
この章の前提
- 中学数学(文字式、正負の数、簡単な方程式)
- 文系高校数学の基礎(一次関数・二次関数のグラフを見たことがある程度)
これ以上の知識は必要ありません。忘れていても大丈夫なように、必要なことはすべてこの章で復習します。
1.1 なぜ数学の準備から始めるのか
本書のゴールは、ChatGPTなどの対話AIの中核にある Transformer(トランスフォーマー) という仕組みを、ゼロから理解することです。
ところが、Transformerの解説を開くと、いきなりこんな式が目に飛び込んできます。
(読み下し: この式は第8章の主役です。今は「なんだか記号だらけで怖い」と思ってもらえれば十分です)
この式、実は使われている数学の部品は多くありません。関数、行列、内積、指数関数、割り算。それだけです。部品を1つずつ手に取って、触って、慣れてしまえば、この式は「読める」ようになります。
本書の第1〜3章は、そのための数学の準備体操です。この第1章では、いちばん土台になる「関数」と「数学の記号の読み方」に慣れます。
TIP
この章の心構え: 数学は「暗記科目」というより「言語」に近いものです。外国語が丸暗記だけでは身につかず、実際に使ううちにだんだん慣れていくのと同じで、数式も、記号とその読み方に触れているうちに自然と読めるようになります。この章の目的はその「慣れ」を作ることです。計算がスラスラできる必要はありません。「読める」ようになれば十分です。
1.2 関数とは何か — 「入れると出てくる機械」
1.2.1 自動販売機のたとえ
関数(function) とは、ひとことで言えば「何かを入れると、決まったルールで何かが出てくる機械」です。
身近な例で考えましょう。自動販売機は「お金とボタンの選択」を入れると「飲み物」が出てくる機械です。同じボタンを押せば必ず同じ飲み物が出てきます。この「同じ入力には必ず同じ出力」というのが関数の大事な性質です。
数学の関数は、入れるものも出てくるものも「数」である機械です。
text
+-----------+
x ------> | f | ------> f(x)
+-----------+(図: 入力
たとえば「入れた数を2倍して1を足す」という機械を考えます。
- 3 を入れると → 2×3 + 1 = 7 が出てくる
- 0 を入れると → 2×0 + 1 = 1 が出てくる
- −1 を入れると → 2×(−1) + 1 = −1 が出てくる
1.2.2 という書き方
この機械を数学では次のように書きます。
(読み下し: 「エフ・エックスは、2エックス足す1」と読みます。「
記号の意味を分解しましょう。
| 記号 | 読み方 | 意味 |
|---|---|---|
| エフ | 機械(関数)の名前。 | |
| エックス | 機械に入れるもの(入力)。何を入れるかはまだ決めていない「空欄」 | |
| エフ・エックス | 機械 |
「
(読み下し:
大事な注意:
1.2.3 なぜ「関数」がそんなに大事なのか
先に本書の結論めいたことを言っておきます。
IMPORTANT
ChatGPTのような言語モデルの正体は、巨大な関数です。
「これまでの文章」を入力すると、「次に来る単語の予測」が出力される、とても大きな関数がTransformerです。入力と出力の間には膨大な計算が詰まっていますが、「入れると出てくる機械」という構図自体は
だからこそ、まず関数に慣れることが、本書のすべての出発点になります。
(図: 言語モデルは「文章を入れると次の単語の予測が出てくる」関数。この見方は第3章と第7章であらためて詳しく説明します)
1.3 グラフで関数を「見る」
1.3.1 一次関数の復習
関数は式だけでなくグラフでも表せます。グラフとは「入力
さきほどの
| 入力 | −2 | −1 | 0 | 1 | 2 |
|---|---|---|---|---|---|
| 出力 | −3 | −1 | 1 | 3 | 5 |
これを点として打ち、つなぐと直線になります。
(図: 一次関数
このように、出力が一直線に増えたり減ったりする関数を 一次関数(linear function) と呼びます。一般形は次のとおりです。
(読み下し: 出力は、入力
は 傾き(slope): が 1 増えたとき がいくつ増えるか は 切片(intercept): のときの出力
具体例:
この「傾き」は、第3章で学ぶ微分の中心になる考え方です。頭の片隅に置いておいてください。
1.3.2 二次関数の復習 — 「谷」の形
次は 二次関数(quadratic function) です。いちばん簡単な例で見ます。
(読み下し: 出力は、入力
表を作ります。
| 入力 | −3 | −2 | −1 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|---|
| 出力 | 9 | 4 | 1 | 0 | 1 | 4 | 9 |
(図: 二次関数
注目してほしいのは、このグラフが「谷」の形をしていて、谷底(いちばん低い点)があることです。
なぜこれが大事なのか。実は機械学習の「学習」とは、「モデルの間違い度合い」を表す関数(損失関数と呼びます)の谷底を探すことだからです。谷の形をした関数の底を、坂を転がり降りるようにして探す方法が、第4章で学ぶ勾配降下法です。二次関数の「谷」の絵には本書で何度も戻ってくるので、ここでしっかり覚えておいてください。
1.4 累乗と指数関数 — 爆発的な増加
1.4.1 累乗の復習
累乗(power) は「同じ数を繰り返し掛ける」ことです。
(読み下し: 「2の3乗」は、2を3回掛け合わせたもので、8)
(約1000)
右肩の小さい数(
ついでに、後で使う約束事を2つ紹介します。
(どんな数でも、0乗は1と定義されています。なぜそう定義するのかは、すぐ下の表で説明します) 、 (マイナス乗は「1をその数の累乗で割る」という意味です。 なら、1を で割って )
「0乗が1?」と不思議に感じるかもしれませんが、なぜそう定義されているのかは、表を見ると分かります。
| 3 | 2 | 1 | 0 | −1 | −2 | |
|---|---|---|---|---|---|---|
| 8 | 4 | 2 | 1 | 1/2 | 1/4 |
右に1つ進むごとに「÷2」されています。
1.4.2 指数関数 — 増え方が「加速」する
指数の部分を変数
(読み下し: 出力は、2の
を 指数関数(exponential function) と呼びます。グラフを見てみましょう。
(図: 指数関数
一次関数
| 1 | 2 | 3 | 5 | 10 | 20 | |
|---|---|---|---|---|---|---|
| 2 | 4 | 6 | 10 | 20 | 40 | |
| 2 | 4 | 8 | 32 | 1024 | 1,048,576 |
1.4.3 なぜ指数関数が本書に必要なのか
指数関数は本書で2回、重要な場面に登場します。
- softmax関数(第5章): Transformerが「次の単語の確率」を計算するとき、
という指数関数を使います。指数関数の「大きい値をさらに大きく引き伸ばす」性質が、「有力候補を際立たせる」働きをします。 - 組み合わせ爆発(第7章): 「単語の並びのパターン数」は文が長くなると指数的に爆発します。これが昔の言語モデル(n-gram)の限界の原因でした。
「指数 = とんでもない勢いで増える」という体感を持っておいてください。
1.5 対数 — 指数の「逆」
1.5.1 対数とは「何乗?」に答える数
対数(logarithm、ログ) は、指数の逆の質問に答えるものです。
- 指数の質問: 「2 を 3 乗したらいくつ?」 → 答え 8(
) - 対数の質問: 「2 を 何乗 したら 8 になる?」 → 答え 3
この「何乗?」の答えを、次のように書きます。
(読み下し: 「ログ、底2の8」は3。意味は「2を何乗したら8になるか? その答えは3」)
具体例をいくつか並べます。声に出して「2を何乗したら○○?」と読んでみてください。
(2を1乗したら2) (2を2乗したら4) (2を10乗したら1024) (2を0乗したら1。さっきの「0乗は1」がここで効きます) (2をマイナス1乗したら1/2)
グラフにすると、指数関数を横倒しにしたような、ゆるやかに増える曲線になります。
(図: 対数関数
指数関数が「爆発」なら、対数はその爆発を扱いやすい大きさに戻すものです。1024 という大きな数も、対数を通すと 10 というおとなしい数になります。100万を超える
1.5.2 なぜ機械学習は対数だらけなのか
機械学習の教科書や論文を開くと、
理由1: 掛け算を足し算に変えられる
対数には次の便利な性質があります。
(読み下し: 「掛け算のログ」は「ログの足し算」に分解できる)
具体例で確かめます。
機械学習では「確率をたくさん掛け合わせる」計算が頻出します(例:「文全体の確率 = 各単語の確率の掛け算」— 第7章で登場します)。掛け算の連続は扱いにくいのですが、対数をとれば全部足し算になり、計算も分析も楽になります。
理由2: 極端に小さい数・大きい数を扱いやすくする
確率は 1 より小さい数です。それを100個も掛け合わせると、
| 元の数 | 対数( |
|---|---|
| 1,000,000 | 6 |
| 1,000 | 3 |
| 1 | 0 |
| 0.001 | −3 |
| 0.000001 | −6 |
(表: 桁違いの数たちが、対数の世界では「6, 3, 0, −3, −6」と等間隔に並ぶ。対数は「桁数を数えるものさし」)
この性質は、第5章の交差エントロピー(モデルの採点法)や、第13章のスケーリング則(両対数グラフ)でそのまま効いてきます。
1.5.3 自然対数 と
対数の底には 2 や 10 のほか、数学で特別扱いされる数
NOTE
本書では「
具体例:
1.6 (シグマ)記法 — 「たくさん足す」を短く書く
1.6.1 読み方
機械学習の数式でおそらく最頻出の記号が、ギリシャ文字の
(読み下し: 「
記号の各部分はこう読みます。
text
5 <- 上端: i をどこまで動かすか(5 まで)
Σ i <- Σ の右にあるのが「足すもの」(この式を i を変えながら足す)
i=1 <- 下端: カウンタの名前は i、1 からスタートプログラミングを知っている方なら「forループで合計を計算する」ことと完全に同じです。知らない方は「
1.6.2 具体例を3つ
例1: 2乗の和
(読み下し:
例2: データの平均
(読み下し: 3つのデータを全部足して、データの個数3で割る。つまり平均。答えは5)
見慣れた「平均」も、シグマで書くとこうなります。
例3: 「確率の合計は1」
サイコロの各目が出る確率を
(読み下し: 全部の目の確率を足すと1になる)
この「確率を全部足すと1」は第3章で確率を学ぶときの大原則で、シグマを使うとこのように1行で書けます。Transformerが出力する「次の単語の確率分布」も、語彙5万語分の確率をシグマで全部足すと1になります。
1.6.3 シグマを恐れないコツ
シグマの式に出会ったら、必ず小さい具体例で展開してみること。
1.7 と — 「最大値」と「最大にする場所」
1.7.1 : いちばん大きい値そのもの
(読み下し: 3, 8, 5 のうち最大の値は 8)
1.7.2 : 最大値が「どこで」出たか
一方、
(読み下し:
| 記号 | 質問 | 上の例での答え |
|---|---|---|
| 最大の値はいくつ? | 8 | |
| 最大値を出したのはどれ? | 2番目 |
1.7.3 本書での使いどころ
言語モデルは「次の単語」として語彙中の全単語に確率を割り当てます。たとえば「猫は魚が」の続きとして、
| 候補の単語 | 好き | 嫌い | 食べ | 走る |
|---|---|---|---|---|
| 確率 | 0.6 | 0.1 | 0.25 | 0.05 |
このとき、
(最有力候補の確率の値) 「好き」(最有力候補の単語そのもの)
「いちばん確率の高い単語を選んで出力する」という操作は「確率の
1.8 添字と「 個のデータ」という考え方
1.8.1 添字は「背番号」
データが3個くらいなら
(読み下し: エックス・イチ、エックス・ニ、…、エックス・エヌ。「
は「1番のデータ」、 は「 番のデータ」(番号をまだ決めていない代表選手) は「データの総数」。 なら5個、 なら100万個
具体例: 文「猫は魚が好き」を単語に区切ると [猫, は, 魚, が, 好き] の5個。これを
(読み下し: 1番目の単語は「猫」、2番目は「は」、…、5番目は「好き」。単語の総数は
と書けます(
1.8.2 添字が2つ付くこともある
第2章で学ぶ行列では、
1.8.3 シグマとの合わせ技
添字とシグマを組み合わせると、「
(読み下し:
機械学習で頻出する「全データについての損失の平均」(第4章)、「全単語についての重み付き平均」(第8章のAttention!)は、すべてこの形の式です。この形に見慣れておくと、後の章がぐっと楽になります。
1.9 関数の合成 — 機械を直列につなぐ
1.9.1 合成とは「出力を次の入力にする」こと
この章の締めくくりは、本書の設計思想に直結する 関数の合成(function composition) です。
2つの関数(機械)を用意します。
(3を足す機械) (2倍する機械)
この2つを直列につなぐとどうなるでしょうか。まず
(図: 合成
これを数式では
(読み下し: 「エフ・オブ・ジー・オブ・エックス」。まず
と書きます。内側の
具体例:
- まず内側:
- 次に外側:
- 検算: 合成した式
に を入れると 。一致しました。
1.9.2 順番を変えると結果が変わる
つなぐ順番を逆にしてみます。先に2倍、後で3を足す:
(読み下し: まず
1.9.3 なぜ合成が本書の鍵なのか
理由を2つ、はっきり予告しておきます。
その1: ニューラルネットワークは「関数の合成」そのもの(第5章)
ニューラルネットワークの「層を重ねる」という操作は、関数を合成することに他なりません。
(読み下し: 入力を関数
Transformerが「96層」などと言われるのは、96台の機械が直列につながっているということです。1台1台は単純でも、直列につなぐと非常に複雑な変換ができる。これが深層学習の核心にあるアイデアです。
その2: 合成された関数の微分には「連鎖律」が使える(第3章)
96台も直列につないだ機械を「学習」させるには、「最後の出力の誤差に対して、各機械がどれだけ責任を負っているか」を計算する必要があります。それを可能にするのが、合成関数の微分ルール=連鎖律(chain rule) です。第3章で登場し、第5章の逆伝播で本領を発揮します。
(図: この節で学んだ「関数の合成」が、後の章でどうつながっていくかの地図)
1.10 この章の記号一覧(チートシート)
この章で登場した記号を一覧にまとめます。以降の章で迷子になったら、ここに戻ってきてください。
| 記号 | 読み方 | 意味 | 例 |
|---|---|---|---|
| エフ・エックス | 関数 | ||
| エーの | |||
| エーの0乗 | 必ず 1 | ||
| エーのマイナス | |||
| ログ、底 | 「 | ||
| イー(ネイピア数) | 約2.718。自然な成長の底 | ||
| ナチュラルログ | 底が | ||
| シグマ | |||
| マックス | 最大の値 | ||
| アーグマックス | 最大値を出した場所・番号 | ||
| エックス・アイ | |||
| エフ・オブ・ジー・オブ・エックス | 合成: |
この章のまとめ
- 関数は「入れると決まったルールで出てくる機械」。
のカッコは掛け算ではなく投入口。言語モデルの正体も巨大な関数である - 一次関数
の は「傾き」。二次関数 のグラフは「谷」の形で、「谷底を探す」発想が機械学習の学習の原型になる - 指数関数
は爆発的に増える。対数 はその逆で、「何乗?」に答え、掛け算を足し算に変え、桁違いの数を扱いやすくする。だから機械学習は対数だらけ は自然な成長の底。 は底 の対数 は「足し算の繰り返し」。迷ったら小さい で展開して読む は最大の値、 は最大値が出た場所(番号) - 添字
は「 個のデータの背番号」。文は単語の列 と書ける - 関数の合成
は機械の直列つなぎ。順番が大事。ニューラルネットワークの「層」と微分の「連鎖律」への布石
次の章へ
次の章では、ベクトルと行列を学びます。Transformerの中では、単語も文も「数の並び(ベクトル)」として扱われます。そして本書全体で一番大事な考え方である「内積は類似度である」が、いよいよ登場します。この考え方が、第8章のAttentionを理解する鍵になります。