Skip to content

第1章 数学の準備(1)— 関数と記号に慣れる ​

この章で学ぶこと ​

  • 関数とは何か。 f(x) という記法の読み方と意味
  • グラフで関数を「見る」方法(一次関数・二次関数の復習)
  • 累乗と指数関数(2x など)、そして「爆発的な増加」の感覚
  • 対数(log)— 指数の逆演算。なぜ機械学習は対数だらけなのか
  • 自然対数の底 e と ln の意味
  • Σ(シグマ)記法 — 「たくさん足す」を1つの記号で書く方法
  • max と arg⁡max の違い
  • 添字(x1,x2,…,xn)と「 n 個のデータ」という考え方
  • 関数の合成 f(g(x)) — 後の章(微分の連鎖律、ニューラルネットワークの層)への布石

この章の前提 ​

  • 中学数学(文字式、正負の数、簡単な方程式)
  • 文系高校数学の基礎(一次関数・二次関数のグラフを見たことがある程度)

これ以上の特別な前提知識は必要ありません。忘れていても無理なく読み進められるよう、必要な数学の道具はこの章で順番に復習します。


1.1 なぜ数学の準備から始めるのか ​

本書のゴールは、ChatGPTなどの対話AIの中核にある Transformer(トランスフォーマー) という仕組みを、ゼロから理解することです。

Transformerの解説書を開くと、最初に次のような数式を目にすることがよくあります。

Attention(Q,K,V)=softmax(QK⊤dk)V

読み下し: この式は第8章の主役です。現時点では「いくつかの記号が組み合わさっている」と眺めるだけで構いません

一見すると複雑に見えるこの式も、分解してみると使われている数学の部品は多くありません。関数、行列、内積、指数関数、平方根、割り算。基本となる部品はこれだけです。部品の意味と役割を1つずつ理解していけば、この式は自然と読めるようになります。

本書の第1〜3章は、そのための基礎となる道具を揃える章です。この第1章では、すべての土台となる「関数」と「数学の記号の読み方」を身につけます。

TIP

この章のポイント: 数学の記号は、複雑な処理を短く正確に伝えるための「表記ルール」です。記号の読み方と「何を意味しているか」を押さえれば、数式は文章と同じように読み下せるようになります。まずは計算の細部にとらわれず、「何を入力して、何を出力しているか」に注目してください。


1.2 関数とは何か — 「入れると出てくる機械」 ​

1.2.1 自動販売機のたとえ ​

関数(function) とは、ひとことで言えば「何かを入れると、決まったルールで何かが出てくる機械」です。

身近な例で考えましょう。自動販売機は「お金とボタンの選択」を入れると「飲み物」が出てくる機械です。同じボタンを押せば必ず同じ飲み物が出てきます。この「同じ入力には必ず同じ出力」というのが関数の大事な性質です。

数学の関数は、入れるものも出てくるものも「数」である機械です。

text
            +-----------+
  x ------> |     f     | ------> f(x)
            +-----------+

(図: 入力 x を関数 f という機械に入れると、出力 f(x) が出てくる)

たとえば「入れた数を2倍して1を足す」という機械を考えます。

  • 3 を入れると → 2×3 + 1 = 7 が出てくる
  • 0 を入れると → 2×0 + 1 = 1 が出てくる
  • −1 を入れると → 2×(−1) + 1 = −1 が出てくる

1.2.2 f(x) という書き方 ​

この機械を数学では次のように書きます。

f(x)=2x+1

読み下し: 「エフ・エックスは、2エックス足す1」と読みます。「 f という名前の機械に x を入れると、 2x+1 が出てくる」という意味です

記号の意味を分解しましょう。

記号読み方意味
fエフ機械(関数)の名前。 g や h など別の名前でもよい
xエックス機械に入れるもの(入力)。何を入れるかはまだ決めていない「空欄」
f(x)エフ・エックス機械 f に x を入れたときの出力

「 f(3) 」と書いたら「機械 f に 3 を入れた結果」という意味です。

f(3)=2×3+1=7

読み下し: f に 3 を入れると、2掛ける3足す1で、7 が出てくる

大事な注意: f(x) は「 f 掛ける x 」ではありません。カッコは掛け算ではなく「機械への投入口」です。ここは初学者が最初につまずくポイントなので、強調しておきます。

1.2.3 なぜ「関数」がそんなに大事なのか ​

先に本書の結論めいたことを言っておきます。

IMPORTANT

ChatGPTのような言語モデルの正体は、巨大な関数です。

「これまでの文章」を入力すると、「次に来る単語の予測」が出力される、とても大きな関数がTransformerです。入力と出力の間には膨大な計算が詰まっていますが、「入れると出てくる機械」という構図自体は f(x)=2x+1 と何も変わりません。

だからこそ、まず関数に慣れることが、本書のすべての出発点になります。

graph LR
    A["入力: これまでの文章<br>(例: 猫は魚が)"] --> B["巨大な関数<br>(Transformer)"]
    B --> C["出力: 次の単語の予測<br>(例: 好き の確率が高い)"]

(図: 言語モデルは「文章を入れると次の単語の予測が出てくる」関数。この見方は第3章と第7章であらためて詳しく説明します)


1.3 グラフで関数を「見る」 ​

1.3.1 一次関数の復習 ​

関数は式だけでなくグラフでも表せます。グラフとは「入力 x を横軸に、出力 f(x) を縦軸にとって、入出力の対応を絵にしたもの」です。

さきほどの f(x)=2x+1 をグラフにしてみましょう。まず、いくつかの入力と出力を表にします。

入力 x−2−1012
出力 f(x)−3−1135

これを点として打ち、つなぐと直線になります。

xychart-beta
    title "一次関数 y = 2x + 1"
    x-axis "x" [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2]
    y-axis "y" -3 --> 5
    line [-3, -2, -1, 0, 1, 2, 3, 4, 5]

(図: 一次関数 f(x)=2x+1 のグラフ。まっすぐな直線で、 x が 1 増えるごとに f(x) が 2 ずつ増える。 x=0 のとき f(x)=1 、これが切片)

このように、出力が一直線に増えたり減ったりする関数を 一次関数(linear function) と呼びます。一般形は次のとおりです。

f(x)=ax+b

読み下し: 出力は、入力 x を a 倍して b を足したもの

  • a は 傾き(slope): x が 1 増えたとき f(x) がいくつ増えるか
  • b は 切片(intercept): x=0 のときの出力

具体例: a=2,b=1 なら f(x)=2x+1 。 x が 1 増えるたびに出力は 2 増え、 x=0 では出力 1 です。上の表とグラフで確かめられます。

この「傾き」は、第3章で学ぶ微分の中心になる考え方です。頭の片隅に置いておいてください。

1.3.2 二次関数の復習 — 「谷」の形 ​

次は 二次関数(quadratic function) です。いちばん簡単な例で見ます。

f(x)=x2

読み下し: 出力は、入力 x を2乗したもの。 x2 は「エックスの2乗」= x×x

表を作ります。

入力 x−3−2−10123
出力 f(x)9410149
xychart-beta
    title "二次関数 y = x^2"
    x-axis "x" [-3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3]
    y-axis "y" 0 --> 9
    line [9, 6.25, 4, 2.25, 1, 0.25, 0, 0.25, 1, 2.25, 4, 6.25, 9]

(図: 二次関数 f(x)=x2 のグラフ。左右対称の「谷」の形。 x=0 が谷底で、最小値 0 をとる)

注目してほしいのは、このグラフが「谷」の形をしていて、谷底(いちばん低い点)があることです。

なぜこれが大事なのか。実は機械学習の「学習」とは、「モデルの間違い度合い」を表す関数(損失関数と呼びます)の谷底を探すことだからです。谷の形をした関数の底を、坂を転がり降りるようにして探す方法が、第4章で学ぶ勾配降下法です。二次関数の「谷」の絵には本書で何度も戻ってくるので、ここでしっかり覚えておいてください。


1.4 累乗と指数関数 — 爆発的な増加 ​

1.4.1 累乗の復習 ​

累乗(power) は「同じ数を繰り返し掛ける」ことです。

23=2×2×2=8

読み下し: 「2の3乗」は、2を3回掛け合わせたもので、8

  • 21=2
  • 22=4
  • 23=8
  • 24=16
  • 210=1024(約1000)

右肩の小さい数(3 など)を 指数(exponent)、掛けられる数(2)を 底(てい、base) と呼びます。

ついでに、後で使う約束事を2つ紹介します。

  • 20=1(0以外のどんな数でも、0乗は1と定義されています。なぜそう定義するのかは、すぐ下の表で説明します)
  • 2−1=12 、 2−2=14(マイナス乗は「1をその数の累乗で割る」という意味です。 2−2 なら、1を 22=4 で割って 14 )

「0乗が1?」と不思議に感じるかもしれませんが、なぜそう定義されているのかは、表を見ると分かります。

x3210−1−2
2x84211/21/4

右に1つ進むごとに「÷2」されています。 21=2 の右隣は 2÷2=1 。だから 20=1 。その右隣は 1÷2=1/2 。だから 2−1=1/2 。ルールが一直線につながっているのです。

1.4.2 指数関数 — 増え方が「加速」する ​

指数の部分を変数 x にした関数

f(x)=2x

読み下し: 出力は、2の x 乗

を 指数関数(exponential function) と呼びます。グラフを見てみましょう。

xychart-beta
    title "指数関数 y = 2^x"
    x-axis "x" [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4]
    y-axis "y" 0 --> 16
    line [0.25, 0.354, 0.5, 0.707, 1, 1.414, 2, 2.828, 4, 5.657, 8, 11.314, 16]

(図: 指数関数 f(x)=2x のグラフ。右に行くほど急激に立ち上がる。左側は 0 に近づくが決して 0 にはならない)

一次関数 f(x)=2x と比べてみると、違いは歴然です。

x12351020
2x(一次関数)246102040
2x(指数関数)2483210241,048,576

x=20 の時点で、一次関数は 40 なのに、指数関数は 100万超え。これが「指数的な増加」「爆発的な増加」と呼ばれるものです。紙を42回折ると月に届く(厚さが 242 倍になるから)、という有名な話もこの性質によるものです。

1.4.3 なぜ指数関数が本書に必要なのか ​

指数関数は本書で2回、重要な場面に登場します。

  1. softmax関数(第5章): Transformerが「次の単語の確率」を計算するとき、 ex という指数関数を使います。指数関数の「大きい値をさらに大きく引き伸ばす」性質が、「有力候補を際立たせる」働きをします。
  2. 組み合わせ爆発(第7章): 「単語の並びのパターン数」は文が長くなると指数的に爆発します。これが昔の言語モデル(n-gram)の限界の原因でした。

「指数 = とんでもない勢いで増える」という体感を持っておいてください。


1.5 対数 — 指数の「逆」 ​

1.5.1 対数とは「何乗?」に答える数 ​

対数(logarithm、ログ) は、指数の逆の質問に答えるものです。

  • 指数の質問: 「2 を 3 乗したらいくつ?」 → 答え 8(23=8)
  • 対数の質問: 「2 を 何乗 したら 8 になる?」 → 答え 3

この「何乗?」の答えを、次のように書きます。

log2⁡8=3

読み下し: 「ログ、底2の8」は3。意味は「2を何乗したら8になるか? その答えは3」

具体例をいくつか並べます。声に出して「2を何乗したら○○?」と読んでみてください。

  • log2⁡2=1(2を1乗したら2)
  • log2⁡4=2(2を2乗したら4)
  • log2⁡1024=10(2を10乗したら1024)
  • log2⁡1=0(2を0乗したら1。さっきの「0乗は1」がここで効きます)
  • log2⁡12=−1(2をマイナス1乗したら1/2)

グラフにすると、指数関数を横倒しにしたような、ゆるやかに増える曲線になります。

xychart-beta
    title "対数関数 y = log2(x)"
    x-axis "x" [0.5, 1, 2, 3, 4, 5, 6, 7, 8]
    y-axis "y" -1 --> 3
    line [-1, 0, 1, 1.585, 2, 2.322, 2.585, 2.807, 3]

(図: 対数関数 log2⁡x のグラフ。増えるには増えるが、どんどん増え方がゆるやかになる。 x=1 でちょうど 0 を通る)

指数関数が「爆発」なら、対数はその爆発を扱いやすい大きさに戻すものです。1024 という大きな数も、対数を通すと 10 というおとなしい数になります。100万を超える 220 も、対数を通せばただの 20 です。

1.5.2 なぜ機械学習は対数だらけなのか ​

機械学習の教科書や論文を開くと、 log が至るところに出てきます。理由は大きく2つあります。

理由1: 掛け算を足し算に変えられる

対数には次の重要な性質があります。

log⁡(a×b)=log⁡a+log⁡b

読み下し: 「掛け算の対数」は「それぞれの対数の足し算」に分解できる

なぜこれが成り立つのか、具体例で確認してみましょう。

text
元の数(掛け算の世界):      4     ×     8     =    32
                           ↑           ↑          ↑
指数の形(累乗の世界):   (2の2乗)  ×  (2の3乗)  = (2の5乗)  ※ 2+3=5
                           ↓           ↓          ↓
対数の値(何乗かの世界):  log2(4)=2  +  log2(8)=3  = log2(32)=5

元の数で「 4×8=32 」と掛け算をしている操作は、指数の世界では「 2+3=5 」という足し算に対応しています。対数 log2 は「指数の肩に乗っている数字(何乗か)」を取り出す道具なので、掛け算をきれいさっぱり足し算に変換できるのです。

機械学習では、「確率を何十回も掛け合わせる」計算が頻出します(例:「文全体の確率 = 各単語の確率の掛け算」— 第7章で登場します)。掛け算が何個も連なると手計算もコンピュータの計算も扱いづらくなりますが、対数を取ればすべて足し算(Σ)に置き換わり、計算も理論的な分析も格段に扱いやすくなります。

理由2: 極端に小さい数・大きい数を安全に扱える

確率は 0 から 1 の間の数です。たとえば 0.1 を100回掛け合わせると、 0.1100=10−100 となり、小数点以下に0が99個も並ぶ極めて微小な数値になります。コンピュータでこのような小さすぎる小数を掛け続けると、表現できる桁数の限界を下回って値がゼロとみなされてしまい(アンダーフロー)、計算が破綻してしまいます。

そこで対数を取ると、 10−100 は log10⁡(10−100)=−100 という、扱いやすい整数(負の数)に変換されます。

元の数対数(log10)をとった値特徴
1,000,0006桁数がそのまま数値になる
1,0003
101の対数は常に0
0.001−3小数点以下のゼロの個数が負の数で並ぶ
0.000001−6

(表: 桁違いに離れた数値が、対数を取ると「6, 3, 0, −3, −6」と等間隔に並ぶ。対数は「桁数を測るものさし」として機能する)

この性質は、第5章の交差エントロピー(モデルの採点法)や、第13章のスケーリング則(両対数グラフ)で直接活用されます。

1.5.3 自然対数 e と ln ​

対数の底には 2 や 10 のほか、数学や機械学習で標準的に使われる特別な数 e(ネイピア数、約 2.718)があります。底を e とする対数を 自然対数(natural logarithm) と呼び、 ln⁡x または底を省略して単に log⁡x と表記します(機械学習の論文や教科書で底が書かれていない log は、原則として自然対数です)。

なぜ 2 や 10 のようなキリの良い数字ではなく、約 2.718 という半端な数をわざわざ使うのでしょうか。

NOTE

なぜ底に e を選ぶのか: 最も大きな理由は、微積分の計算が圧倒的にきれいになるからです。第3章で学ぶ「微分(傾きの計算)」において、関数 f(x)=ex は「微分してもまったく形が変わらず ex のまま」という唯一無二の性質を持ちます。底が 2 や 10 だと微分するたびに余計な係数が掛かって式が複雑になりますが、底が e であれば余分な係数が一切出ず、ニューラルネットワークの学習計算が最もシンプルになります。

本書においては、「 e≈2.718 という定数であり、 ex は 2x と同様に右肩上がりに急増する指数関数、 ln はその逆の対数」と押さえておけば十分です。第5章の softmax では ex が、交差エントロピー では ln が計算の中心になります。

具体例: e0=1 、 e1≈2.718 、 e2≈7.389 、 ln⁡1=0 、 ln⁡e=1 、 ln⁡7.389≈2 。


1.6 Σ(シグマ)記法 — 「たくさん足す」を短く書く ​

1.6.1 読み方 ​

機械学習の数式でおそらく最頻出の記号が、ギリシャ文字の Σ(シグマ) です。意味はただひとつ、「足し算の繰り返し」です。

∑i=15i=1+2+3+4+5=15

読み下し: 「 i を 1 から 5 まで動かしながら、 i を全部足す」。つまり 1+2+3+4+5 で 15

記号の各部分はこう読みます。

text
         5        <- 上端: i をどこまで動かすか(5 まで)
        Σ   i     <- Σ の右にあるのが「足すもの」(この式を i を変えながら足す)
       i=1        <- 下端: カウンタの名前は i、1 からスタート

プログラミングを知っている方なら「forループで合計を計算する」ことと完全に同じです。知らない方は「 i に 1, 2, 3, … と順に数を入れて、出てきた値を全部足す作業の指示書」と思ってください。

1.6.2 具体例を3つ ​

例1: 2乗の和

∑i=14i2=12+22+32+42=1+4+9+16=30

読み下し: i を 1 から 4 まで動かし、それぞれの2乗を足す。答えは30

例2: データの平均

x1=2,x2=5,x3=8 という3つのデータの平均は、

13∑i=13xi=13(x1+x2+x3)=2+5+83=5

読み下し: 3つのデータを全部足して、データの個数3で割る。つまり平均。答えは5

見慣れた「平均」も、シグマで書くとこうなります。 n 個に一般化すれば 1n∑i=1nxi です。

例3: 「確率の合計は1」

サイコロの各目が出る確率を p1,p2,…,p6(それぞれ 16)とすると、

∑i=16pi=16+16+16+16+16+16=1

読み下し: 全部の目の確率を足すと1になる

この「確率を全部足すと1」は第3章で確率を学ぶときの大原則で、シグマを使うとこのように1行で書けます。Transformerが出力する「次の単語の確率分布」も、語彙5万語分の確率をシグマで全部足すと1になります。

1.6.3 シグマを恐れないコツ ​

シグマの式に出会ったら、必ず小さい具体例で展開してみること。 ∑i=1n と書いてあったら、頭の中で n=3 にして「1番目 + 2番目 + 3番目」と書き下す。それだけで、たいていの式は正体を現します。本書でもシグマが出てくるたびに、必ず展開した形を添えます。


1.7 max と arg⁡max — 「最大値」と「最大にする場所」 ​

1.7.1 max: いちばん大きい値そのもの ​

max(マックス) は「並んでいるものの中でいちばん大きい値」を返します。

max(3,8,5)=8

読み下し: 3, 8, 5 のうち最大の値は 8

1.7.2 arg⁡max: 最大値が「どこで」出たか ​

一方、arg⁡max(アーグマックス) は「いちばん大きい値が出た場所(番号・引数)」を返します。arg は argument(引数)の略です。

x1=3,x2=8,x3=5 とすると、

arg⁡maxixi=2

読み下し: xi を最大にする番号 i は 2。つまり「2番目が優勝」

max は「優勝スコア(8点)」、 arg⁡max は「優勝者(2番の選手)」。この違いをはっきりさせておきましょう。

記号質問上の例での答え
max最大の値はいくつ?8
arg⁡max最大値を出したのはどれ?2番目

1.7.3 本書での使いどころ ​

言語モデルは「次の単語」として語彙中の全単語に確率を割り当てます。たとえば「猫は魚が」の続きとして、

候補の単語好き嫌い食べ走る
確率0.60.10.250.05

このとき、

  • max=0.6(最有力候補の確率の値)
  • arg⁡max= 「好き」(最有力候補の単語そのもの)

「いちばん確率の高い単語を選んで出力する」という操作は「確率の arg⁡max をとる」と表現されます(第14章の文章生成で正式に登場します)。


1.8 添字と「 n 個のデータ」という考え方 ​

1.8.1 添字は「背番号」 ​

データが3個くらいなら a,b,c と別々の文字で呼べますが、機械学習ではデータが数百万・数十億個あります。そこで、添字(そえじ、index / subscript) を使います。

x1,x2,x3,…,xn

読み下し: エックス・イチ、エックス・ニ、…、エックス・エヌ。「 x という名前のデータが n 個あって、それぞれに背番号が付いている」

  • x1 は「1番のデータ」、 xi は「 i 番のデータ」(番号をまだ決めていない代表選手)
  • n は「データの総数」。 n=5 なら5個、 n=1,000,000 なら100万個

具体例: 文「猫は魚が好き」を単語に区切ると [猫, は, 魚, が, 好き] の5個。これを

w1=猫,w2=は,w3=魚,w4=が,w5=好き(n=5)

読み下し: 1番目の単語は「猫」、2番目は「は」、…、5番目は「好き」。単語の総数は n=5

と書けます(w は word の頭文字)。「文とは単語の列 w1,w2,…,wn である」という表記は、本書全体で使い続けます。

1.8.2 添字が2つ付くこともある ​

第2章で学ぶ行列では、 xij のように添字が2つ付きます。「 i 行目・ j 列目の値」という意味で、座席表で「前から i 番目・左から j 番目」と席を指すようなものです。今は「添字は背番号。2つ付いたら縦横の座席番号」とだけ覚えておいてください。

1.8.3 シグマとの合わせ技 ​

添字とシグマを組み合わせると、「 n 個のデータ全部について何かをして足す」が書けます。

1n∑i=1nxi

読み下し: n 個のデータを全部足して n で割る。つまり「データの平均」

機械学習で頻出する「全データについての損失の平均」(第4章)、「全単語についての重み付き平均」(第8章のattention)は、すべてこの形の式です。この形に見慣れておくと、後の章がぐっと楽になります。


1.9 関数の合成 — 機械を直列につなぐ ​

1.9.1 合成とは「出力を次の入力にする」こと ​

この章の締めくくりは、本書の設計思想に直結する 関数の合成(function composition) です。

2つの関数(機械)を用意します。

  • g(x)=x+3(3を足す機械)
  • f(x)=2x(2倍する機械)

この2つを直列につなぐとどうなるでしょうか。まず g に入れて、その出力をそのまま f に入れるのです。図にするとこうなります(この「機械の直列つなぎ」はこの章の最重要図です)。

graph LR
    X["入力 x<br>(例: 5)"] --> G["機械 g<br>3を足す"]
    G --> GX["中間結果 g(x)<br>(例: 8)"]
    GX --> F["機械 f<br>2倍する"]
    F --> FGX["最終出力 f(g(x))<br>(例: 16)"]

(図: 合成 f(g(x)) とは、機械 g と機械 f をベルトコンベアでつないだ1つの大きな機械のこと。例: 5 → (5+3)=8 → (8×2)=16)

これを数式では

f(g(x))=2(x+3)=2x+6

読み下し: 「エフ・オブ・ジー・オブ・エックス」。まず g に x を入れ、その結果を f に入れる。中身を計算すると 2x+6 という1つの新しい関数になる

と書きます。内側の g が先、外側の f が後。カッコの内側から順に処理する、と覚えてください。

具体例: x=5 のとき。

  1. まず内側: g(5)=5+3=8
  2. 次に外側: f(8)=2×8=16
  3. 検算: 合成した式 2x+6 に x=5 を入れると 2×5+6=16 。一致しました。

1.9.2 順番を変えると結果が変わる ​

つなぐ順番を逆にしてみます。先に2倍、後で3を足す:

g(f(x))=(2x)+3=2x+3

読み下し: まず f で2倍し、その結果に g で3を足す

x=5 なら g(f(5))=10+3=13 。さきほどの 16 と違います。合成は順番が大事です。料理で「切ってから焼く」と「焼いてから切る」が別物なのと同じです。この事実は、第2章の行列の掛け算(こちらも順番で結果が変わります)への伏線になっています。

1.9.3 なぜ合成が本書の鍵なのか ​

理由を2つ、はっきり予告しておきます。

その1: ニューラルネットワークは「関数の合成」そのもの(第5章)

ニューラルネットワークの「層を重ねる」という操作は、関数を合成することに他なりません。

出力=f3(f2(f1(入力)))

読み下し: 入力を関数 f1 に通し、その結果を f2 に通し、さらに f3 に通す。「3層のネットワーク」とはこういう意味

Transformerが「96層」などと言われるのは、96台の機械が直列につながっているということです。1台1台は単純でも、直列につなぐと非常に複雑な変換ができる。これが深層学習の核心にあるアイデアです。

その2: 合成された関数の微分には「連鎖律」が使える(第3章)

96台も直列につないだ機械を「学習」させるには、「最後の出力の誤差に対して、各機械がどれだけ責任を負っているか」を計算する必要があります。それを可能にするのが、合成関数の微分ルール=連鎖律(chain rule) です。第3章で登場し、第5章の逆伝播で本領を発揮します。

graph TD
    A["第1章<br>関数の合成"] --> B["第3章<br>連鎖律<br>(合成関数の微分)"]
    A --> C["第5章<br>ニューラルネットワーク<br>= 層の積み重ね"]
    B --> D["第5章<br>逆伝播<br>(学習の中核)"]
    C --> D

(図: この節で学んだ「関数の合成」が、後の章でどうつながっていくかの地図)


1.10 この章の記号一覧(チートシート) ​

この章で登場した記号を一覧にまとめます。以降の章で迷子になったら、ここに戻ってきてください。

記号読み方意味例
f(x)エフ・エックス関数 f に x を入れた出力f(x)=2x+1 なら f(3)=7
anエーの n 乗a を n 回掛ける23=8
a0エーの0乗1( a≠0 のとき)20=1
a−nエーのマイナス n 乗1an2−1=12
loga⁡xログ、底 a の x「 a を何乗したら x?」の答えlog2⁡8=3
eイー(ネイピア数)約2.718。自然な成長の底e1≈2.718
ln⁡xナチュラルログ底が e の対数ln⁡e=1
∑i=1nシグマi を1から n まで動かして全部足す∑i=13i=6
maxマックス最大の値max(3,8,5)=8
arg⁡maxアーグマックス最大値を出した場所・番号arg⁡max(3,8,5)=2 番目
xiエックス・アイi 番目のデータ(添字=背番号)w1= 猫, w2= は, …
f(g(x))エフ・オブ・ジー・オブ・エックス合成: g が先、 f が後g(x)=x+3,f(x)=2x なら f(g(5))=16

この章のまとめ ​

  • 関数は「入れると決まったルールで出てくる機械」。 f(x) のカッコは掛け算ではなく投入口。言語モデルの正体も巨大な関数である
  • 一次関数 f(x)=ax+b の a は「傾き」。二次関数 x2 のグラフは「谷」の形で、「谷底を探す」発想が機械学習の学習の原型になる
  • 指数関数 2x は爆発的に増える。対数 log はその逆で、「何乗?」に答え、掛け算を足し算に変え、桁違いの数を扱いやすくする。だから機械学習は対数だらけ
  • e≈2.718 は自然な成長の底。 ln は底 e の対数
  • Σ は「足し算の繰り返し」。迷ったら小さい n で展開して読む
  • max は最大の値、arg⁡max は最大値が出た場所(番号)
  • 添字 x1,…,xn は「 n 個のデータの背番号」。文は単語の列 w1,…,wn と書ける
  • 関数の合成 f(g(x)) は機械の直列つなぎ。順番が大事。ニューラルネットワークの「層」と微分の「連鎖律」への布石

次の章へ ​

次の章では、ベクトルと行列を学びます。Transformerの中では、単語も文も「数の並び(ベクトル)」として扱われます。そして本書全体で一番大事な考え方である「内積は類似度である」が、いよいよ登場します。この考え方が、第8章のattentionを理解する鍵になります。

→ 第2章 数学の準備(2)— ベクトルと行列