PROJECT OMOIKANE の教科書
中学数学からの
ディープラーニング
紙と鉛筆と Python で、自分の AI をつくる。
分数と割合のおさらいから始めて、自分で書いたニューラルネットワークに数字を見分けさせ、迷路をぬける AI、そして最後は、物語を書く小さな LLM(大規模言語モデル)と、逆伝播を自動で作る道具(自動微分)まで作ります。
ゴール1 自分の手で AI を書く
Python + NumPy + Matplotlib だけ
PyTorch のような便利な道具は使いません。予測・損失・微分・更新の一行一行を、自分で書いて動かします。
ゴール2 紙と鉛筆で説明できる
\(w \leftarrow w - \eta\,\dfrac{\partial L}{\partial w}\)
なぜその式になるのかを、小さな数で実際に計算して説明できるようにします。コードはその確かめに使います。
この本の読み方
この本は、数学が苦手な中学生が一人で読めるように書いています。先生役のロボット「カネ」(オモイカネ)と、中学2年生の「ソラ」、ソラのクラスメイトの「ミオ」が、ところどころで話しながら進みます。
数学、正直ニガテです……。AI なんて作れるのかな。
わたしは計算はわりと得意。でも「なんでそうなるの?」って聞かれると、説明できないことが多いかも。
だいじょうぶ。AI の中身は「かけ算と足し算」と「坂道を下りる」の組み合わせなんだ。必要な数学だけを、小学校の筆算や分数から順番に積み上げていこう。計算の手順と、その理由の両方をね。
ページの中には、次のような囲みが出てきます。
ここだけは覚えておきたい、という内容です。
多くの人がつまずく場所と、その直し方です。
紙と鉛筆で計算してみる場所です。電卓を使ってもかまいません。
同じことを Python で確かめます。第4章で使い方を説明します。
やり方を説明するための問題です。「つまずき度」は、多くの人がまちがえやすいところほど「!」が多くなります。まず自分で解いてから、説明を読みましょう。
例題の答えは、次のような「解答」の行にまとめてあります。大事なルールは、赤い帯で示します。
\(46 \times 27 =\) 1242
かけ算・わり算は、足し算・引き算より先に計算する。
グラフの多くは、つまみ(スライダー)を動かすと形が変わります。読むだけでなく、動かして確かめてください。各ページの最後には確認問題があり、「答えと解説を見る」を押すと解説が開きます。読み終えたら「このページを読んだ」を押しておくと、目次に ✓ がつきます(この印はこのブラウザの中だけに残ります)。
学ぶ順番
下の段から上の段へ、左から右へ進みます。矢印は「この章の知識が、あの章で使われる」という意味です。第14章までで自作のディープラーニングが完成し、そのあとの応用編(第15〜17章)では、ほかの機械学習の方法を同じ数学で組み立てます。さらに、第18〜25章(応用編:自作 LLM)では、Hello, World! から始めて、トークナイザ・Transformer・事前学習・SFT・強化学習まで、文章を書く AI を自分で作り、分類のファインチューニングや LoRA、逆伝播を自動で作る道具(自動微分)の自作にも進みます。第26〜33章(深層学習編)では、第14章で駆け足で見た学習の工夫・正則化・CNN・RNN を、1943 年の人工ニューロンから順に、紙と鉛筆とコードでくわしく確かめ、自己符号化器・ボルツマンマシン・深層強化学習(DQN とアルファ碁のしくみ)まで進みます。深層学習編は、第14章を読み終えたら、自作 LLM の章より先に読んでもかまいません。第18章は Python の Hello, World! から始めるので、LLM に興味がある人は、第18章から読み始めて、わからない数学が出てきたら前の章にもどる読み方もできます。計算に自信がない人は、第0章(小学校の算数のおさらい)から始めましょう。数学が得意な人は、第0章の「腕だめし」と第2・3章の確認問題だけ解いて、先に進んでもかまいません。
- 本線(第0〜14章):小さなニューラルネットワークの順伝播・逆伝播・更新を、紙と NumPy で一巡できたら、まず一区切りです。
- 深層学習編(第26〜33章):第14章の直後に進んでもかまいません。初期化・正則化・CNN・RNN を、概観の章の式から自分で導けるようになります。
- 自作 LLM(第18〜25章):Hello, World! から始められます。第21章の前に第27〜28章を挟むと、Adam と初期化の式が紙で追いやすくなります。
用意するもの
- 紙と鉛筆:方眼ノートがあると、グラフが描きやすくて便利です。
- ブラウザ:このページを見ている道具です。数式の表示にインターネット接続を使います。
- Python を動かす場所:Google Colaboratory(無料、Google アカウントが必要)か、自分のパソコンの Python。くわしくは 4-1 で説明します。