Andrej KarpathyのNeural Networks: Zero to Hero動画シリーズがとても良かったので紹介します。
はじめに
これまでGPT/LLMには利用者目線で接してきましたが、最近いよいよ中身の仕組みが知りたくなってきました。
Andrej KarpathyのNeural Networks: Zero to Hero動画シリーズが良かったので、オススメまでに内容をさらっと整理します。
これまで生成AIは専ら利用する目線で接してきたが、いよいよ中身の仕組みが知りたくなってきた
— BioErrorLog (@bioerrorlog) February 19, 2024
Andrej Karpathy先生に教わろう
Neural Networks: Zero to Herohttps://t.co/f3DCUtlC6b
前提
Andrej KarpathyはOpenAIの共同創業者で、のちTeslaのオートパイロットの開発も率いた有名な方です (その後またOpenAIに戻り、最近退職した)。 このようなAI界のヒーローが自らコードを書いて教えてくれる、というだけでもワクワクしますね。
なおこの動画シリーズは英語ですが、とても聞き取りやすい英語です。 英語への強い苦手意識がなければ、リスニングの良い練習になるでしょう。
Neural Networks: Zero to Hero
1. ニューラルネットワークと誤差逆伝播法への入門: microgradの構築
原題: The spelled-out intro to neural networks and backpropagation: building micrograd
高校で習う微分程度の知識から、ステップバイステップでbackpropagation/誤差逆伝播法を説明してくれます。 AIに関する背景知識は一切不要です。
どのようにしてニューラルネットワークが作られているのか、どのようにして学習が行われるのか、ゼロから最小限の実装を一歩ずつ進めることで理解していきます。
参考資料
- GitHub - karpathy/micrograd: A tiny scalar-valued autograd engine and a neural net library on top of it with PyTorch-like API
- nn-zero-to-hero/lectures/micrograd at master · karpathy/nn-zero-to-hero · GitHub
2. 言語モデリングへの入門: makemoreの構築
原題: The spelled-out intro to language modeling: building makemore
人物の名前データセットをもとに、人物の名前を生成するモデルを作ります。
Bigramの紹介、単純な確率に基づく言語モデルを構築したのち、そのモデルをNeural Networkで再構築。
第一回で学んだニューラルネットワークと誤差逆伝播法のミニマムな実践編です。
参考資料
- nn-zero-to-hero/lectures/makemore/makemore_part1_bigrams.ipynb at master · karpathy/nn-zero-to-hero · GitHub
- GitHub - karpathy/makemore: An autoregressive character-level language model for making more things
3. makemoreの構築その2: MLP
原題: Building makemore Part 2: MLP
前回作ったNeural Networkを、multilayer perceptron (MLP)に基づいて発展させます。
Embeddingの導入や隠れ層の導入、ミニバッチ学習やデータセットの分割、隠れ層の拡大、Embeddingの拡大によって、より良いモデルになっていく様子を見ていきます。
参考資料
4. makemoreの構築その3: 活性化と勾配、バッチ正規化
原題: Building makemore Part 3: Activations & Gradients, BatchNorm
tanhのsaturationの解消、Kaiming初期化、バッチ正規化など、ニューラルネットワークの学習で有効な要素を適用します。
また可視化によってニューラルネットワークの健全性を診断するテクニックも紹介。
ニューラルネットワークの学習がいかに不安定で、それを克服するテクニックがどう発明されてきたのかを学びます。
参考資料
- [1502.01852] Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification
- [1502.03167] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- https://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
- [2105.07576] Rethinking "Batch" in BatchNorm
5. makemoreの構築その4: 誤差逆伝播の達人へ
原題: Building makemore Part 4: Becoming a Backprop Ninja
この回はエクササイズの回です。
PyTorchなどのフレームワークを使った場合はautogradによって自動で誤差逆伝播が計算されますが、この回では前回作ったモデルの誤差逆伝播を自前で一つ一つ計算して確認することで、確かな理解を得ていきます。
参考資料
6. makemoreの構築その5: WaveNetの構築
原題: Building makemore Part 5: Building a WaveNet
前回のモデルに、WaveNetのようなCNN/畳み込みニューラルネットワークのアーキテクチャを適用します。
同時に、実際のモデル構築がどのように進むのか、その流れを紹介します。
参考資料
7. ゼロからGPTを構築しよう
原題: Let's build GPT: from scratch, in code, spelled out.
最後はいよいよ、"Attention is All You Need"の論文に従って、GPTを構築していきます。
GPTの仕組みが知りたい!というモチベーションで視聴している場合はやはり一番気になる回になると思いますが、背景知識なしでいきなりこの回だけ見てもなかなか理解は難しいです (私は難しかった)。
ここまでの回を見た上での視聴をお勧めします。
参考資料
- GitHub - karpathy/ng-video-lecture
- GitHub - karpathy/nanoGPT: The simplest, fastest repository for training/finetuning medium-sized GPTs.
- [1706.03762] Attention Is All You Need
- [2005.14165] Language Models are Few-Shot Learners
- Introducing ChatGPT
追記: 8. GPT Tokenizerを構築しよう
原題: Let's build the GPT Tokenizer
いつの間にか最新の動画が追加されていました (私は未視聴)。
BPE/Byte Pair Encodingに基づいた最小限のTokenizer、minbpeを構築するようです。
参考資料
- GitHub - karpathy/minbpe: Minimal, clean code for the Byte Pair Encoding (BPE) algorithm commonly used in LLM tokenization.
- GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAI's models.
- GitHub - google/sentencepiece: Unsupervised text tokenizer for Neural Network-based text generation.
- Tiktokenizer
おわりに
以上、Andrej KarpathyのGPT講義動画シリーズの紹介でした。
私はこの動画シリーズを視聴しながらいくつかディープラーニングの本を読むことで、少しずつ仕組みを把握できてきたように思います。
自分の知らない領域を新たに知るのは面白いですね。 どなたかの参考になれば幸いです。
[関連記事]
参考
nn-zero-to-hero/lectures/micrograd at master · karpathy/nn-zero-to-hero · GitHub
GitHub - karpathy/nn-zero-to-hero: Neural Networks: Zero to Hero