33 / 90

第 33 日:勾配欠陥の診断分析と AI 不使用独立習得基準評価

実世界の自動微分実装の欠陥を診断し、反復後退計算やベクトル出力などのエッジケースを評価し、エンジンの拡張限界を理解して、AI 不使用の独立習得基準評価を完了します。

数学とアルゴリズム基礎 480 分(8 時間の集中学習)
01 120 分

欠陥ケース演習:勾配上書きバグの特定と診断

Agent支援エンジニアリング確認

前提条件

第32日の勾配累積加算の仕組みと数値勾配検査。

学習目標

極小再現例(MRE)を構築し、代入による上書きが引き起こす潜在的な勾配誤りを数値差分比較によって正確に特定する。

手順

CLI を使用して勾配欠陥の診断コマンドを実行します:

python3 projects/autograd/cli.py diagnose --bug-type overwrite-accumulation

診断プログラムが $f = (a + b) \cdot a$ においてノード a を特定し、解析勾配 $7.0$ に対する数値差分勾配 $10.0$(相対誤差 $30\%$)を検出する様子を確認してください。

演習と予測記録

1. 勾配上書きバグを確実に再現する極小再現例(MRE)のコードを記述してください。
2. $z = x \cdot y$ のような単一分岐のテストケースでは、このバグが存在していてもなぜ gradcheck に合格してしまうのかを説明してください。
3. _backward() において、このバグを修正するための具体的な修正内容を示してください。

独立習得基準

累積実装と上書き実装を判別する極小テストケースを自力で構築し、その数学的原理を説明できること。

公式ソースリソースと権利証跡

linking MIT

micrograd: A tiny scalar-valued autograd engine

著者・提供機関: Andrej Karpathy | オリジナル出所URL ↗

該当セクション・タイムスタンプ: micrograd/engine.py: class Value (_backward closures and backward() topological sort); README 'Example usage'

検証バージョンと日付: commit a9a9f94 (Verified: 2026-10-30)

選定理由:

Direct demonstration of how simple variable reuse creates branching DAGs requiring accumulation.

ソース前提知識:

Autograd backward pass and multivariable calculus

安全フォールバック(オフライン回復性):

Local diagnostic harness in projects/autograd/diagnostics.py.

比較対象候補リソースと選定評価 (2)
PyTorch autograd C++ engine ↗ compared_alternative [Modified BSD]

Production scale, but too large and complex for tracing by hand in introductory lessons.

Autograd (HIPS) ↗ compared_alternative [MIT]

Vectorized autograd; micrograd's pure scalar model is pedagogical for hand backprop.

02 120 分

自動微分のエッジケース:反復後退計算とベクトル出力

独立習得確認

前提条件

アクティビティ 33-01 および逆順トポロジカル実行の仕組み。

学習目標

`backward()` を連続呼び出しした際の勾配累積の挙動を理解し、最適化ループで各ステップ前に勾配初期化 (`zero_grad()`) が必須である理由とベクトルヤコビ積 (VJP) を習得する。

手順

複数出力プリセットのコマンドを実行します:

python3 projects/autograd/cli.py forward-backward --preset multi-output

backward_multiple([y1, y2], grad_outputs=[1.0, 1.0]) が複数の末端ノードにシード勾配を与えて同時に逆伝播を実行する様子を確認してください。

演習と予測記録

1. 勾配をリセット(grad = 0.0)せずに同じ計算グラフに対して out.backward() を 2 回連続で呼び出した場合、葉ノードの勾配はどうなりますか?
2. PyTorch などの主要フレームワークが、後退計算時に勾配を自動初期化せずデフォルトで累積加算する理由は何ですか?
3. ベクトル出力に対するベクトル・ヤコビ積 (VJP) の数式を記述してください。

独立習得基準

訓練ループで勾配初期化が必要な理由と、分散深層学習における勾配累積の工学的価値を論理的に説明できること。

公式ソースリソースと権利証跡

linking Modified BSD

PyTorch Documentation: Autograd Mechanics

著者・提供機関: PyTorch Contributors | オリジナル出所URL ↗

該当セクション・タイムスタンプ: How autograd encodes the history

検証バージョンと日付: PyTorch 2.5 (Verified: 2026-10-30)

選定理由:

Clarifies semantics of gradient zeroing before repeated backward passes and vector-Jacobian products.

ソース前提知識:

Computational graph basics

安全フォールバック(オフライン回復性):

Stand-alone CLI support in projects/autograd/cli.py.

比較対象候補リソースと選定評価 (2)
TensorFlow tf.GradientTape Documentation ↗ compared_alternative [Apache 2.0]

Alternative tape-based execution; PyTorch dynamic graph semantics are standard in modern LLM research.

JAX autodiff cookbook ↗ compared_alternative [Apache 2.0]

Functional transformations (grad, vjp); PyTorch object-based graph is closer to the beginner micrograd model.

03 120 分

帰属表示・オープンソースコンプライアンスとエンジン拡張性の境界

Agent支援エンジニアリング確認

前提条件

アクティビティ 33-01 および 33-02。

学習目標

オープンソースライセンスを遵守し、教育用スカラー自動微分エンジンと工業用テンソル計算システム(PyTorch, JAX)の境界を明確に区別する。

手順

projects/autograd/docs/guide.ja.md および Stanford CS336 の課題規約を確認してください。micrograd が MIT ライセンスで著作権表示を求めていることや、講義資料の教育的利用規約を確認します。

演習と予測記録

1. 純粋な Python スカラー自動微分エンジンが 70 億パラメータ (7B) の言語モデルの事前学習に使用できない根本的な理由を説明してください。
2. Python ヒープオブジェクトのオーバーヘッドと、コンパイルされた C++/CUDA 連続テンソルメモリバッファの違いを比較してください。
3. Andrej Karpathy の micrograd コードを派生・再利用する際のオープンソース遵守要件を記述してください。

独立習得基準

教育用スカラーエンジンと本格的テンソルコンパイラのデータ構造、メモリ配置、計算効率における本質的差異を明確に説明できること。

公式ソースリソースと権利証跡

linking MIT

CS336 Assignment 1: Basics (Spring 2025 tagged release)

著者・提供機関: Stanford University CS336 Staff | オリジナル出所URL ↗

該当セクション・タイムスタンプ: README setup; tests/adapters.py; tests/test_optimizer.py; tests/test_nn_utils.py; tests/test_serialization.py

検証バージョンと日付: spring2025 tag; README, tests and MIT LICENSE checked 2026-11-01

選定理由:

Lead assignment-driven source for pretraining component practice and tests. nanoGPT remains a compact historical code-reading companion, not the current recommended training curriculum.

ソース前提知識:

Software licensing awareness

安全フォールバック(オフライン回復性):

Local documentation in projects/autograd/docs/.

比較対象候補リソースと選定評価 (2)
Karpathy nanoGPT ↗ compared_alternative [MIT]

Simpler code layout, useful complementary reference for minimal PyTorch Transformer.

Hugging Face Transformers Course ↗ compared_alternative [Apache-2.0]

High-level API focus rather than building from raw tensor fundamentals.

04 120 分

独立習得プロジェクト基準評価と AI 不使用検証

独立習得確認

前提条件

アクティビティ 33-01 から 33-03。

学習目標

3 つの中核的な独立習得基準に基づき、自動微分学習プロジェクトの総合的な自己評価と AI 不使用の客観的検証を完了する。

手順

LLMやコード自動補全を使わずに以下のクイズに解答し、3 つの習得基準に照らして自身のプロジェクト実装を評価してください。

演習と予測記録

独立習得の 3 つの評価次元を確認します:
1. ホワイトボード導出: 多変数連鎖律を手計算で導出し、DAG ノードでなぜ += が必須かを証明する。
2. スクラッチ実装: 空白のテキストファイルから Value、演算子オーバーロード、トポロジカルソート、backward() を実装する。
3. 数値差分診断: 有限差分 gradcheck 関数を作成し、意図的に埋め込まれた勾配上書きバグを特定・修正する。
演習エリアで自力での達成状況を記録してください。

客観的理解度チェック:欠陥診断、反復後退計算と習得基準

以下の設問に解答して理解度を確認してください。提出前に利用した補助条件を誠実に申告してください。

申告補助条件

注記: AI不使用は誠実な申告条件であり、監視や強制検知ではありません。

1.

反復的なニューラルネットワークの学習ループにおいて、loss.backward() を呼び出す前に optimizer.zero_grad() で勾配を初期化しないとどのような問題が生じますか?

2.

micrograd のような純粋な Python スカラー自動微分エンジンが、大規模言語モデルの事前学習に根本的に適合しない理由は何ですか?

3.

本プロジェクトの AI 不使用独立習得基準(Independent Mastery Check)において、真の独立した習得の証拠となるものはどれですか?

解答根拠と履歴

    独立習得基準

    外部 AI の支援なしで客観テストにおいて 100% を獲得し、3 つの独立習得基準すべてを満たしていること。

    公式ソースリソースと権利証跡

    linking MIT

    micrograd: A tiny scalar-valued autograd engine

    著者・提供機関: Andrej Karpathy | オリジナル出所URL ↗

    該当セクション・タイムスタンプ: micrograd/engine.py: class Value (_backward closures and backward() topological sort); README 'Example usage'

    検証バージョンと日付: Git commit master (Verified: 2026-10-30)

    選定理由:

    Minimal, readable implementation of scalar autograd and MLP layers directly matched to our project.

    ソース前提知識:

    Python object-oriented programming and operator overloading from Day 31.

    安全フォールバック(オフライン回復性):

    The local projects/autograd engine is runnable offline and matches micrograd semantics.

    比較対象候補リソースと選定評価 (2)
    PyTorch autograd C++ engine ↗ compared_alternative [Modified BSD]

    Production scale, but too large and complex for tracing by hand in introductory lessons.

    Autograd (HIPS) ↗ compared_alternative [MIT]

    Vectorized autograd; micrograd's pure scalar model is pedagogical for hand backprop.

    linking 3Blue1Brown copyright (all rights reserved); site FAQ permits only short clips under stated conditions No video, audio, transcript or frame redistribution permitted

    What is backpropagation really doing? (Chapter 3, Deep Learning)

    著者・提供機関: Grant Sanderson (3Blue1Brown) | オリジナル出所URL ↗

    該当セクション・タイムスタンプ: The Intuition for Backpropagation

    検証バージョンと日付: Online video and article (Verified: 2026-10-30)

    選定理由:

    Visual and geometric intuition for how nudging weights impacts the final cost function.

    ソース前提知識:

    Basic derivative intuition from Days 16-18.

    安全フォールバック(オフライン回復性):

    The lesson derives the network gradient equations step by step without requiring video playback.

    比較対象候補リソースと選定評価 (2)
    StatQuest Neural Networks Part 3 ↗ compared_alternative [Proprietary]

    Step-by-step arithmetic without calculus notation; 3Blue1Brown provides the calculus-visual link needed.

    Khan Academy Multivariable Chain Rule ↗ compared_alternative [CC BY-NC-SA 3.0]

    Pure math focus; 3Blue1Brown contextualizes the chain rule specifically for neural network graphs.