Update (2026-07-15): this lecture was split into two decks — Lecture 9, Over-Optimization and RLHF’s Bad Reputation (ch. 14 + Appendix B,
lec9-chap14-appb-overoptimization.md) and Lecture 10, Regularization and KL Control (ch. 15,lec10-chap15-regularization.md) — to align each video with one type of content (narrative/empirical vs. math/technical), matching the Lecture 3/4 precedent. The outline below predates the split but remains the content source for both decks.
Design outline for the Lecture 9 course deck (teach/course/lec9-chap14-15-overoptimization-regularization.md),
covering book Chapters 14 (Over-Optimization), 15 (Regularization), and Appendix B (“Beyond ‘Just Style’”),
in the polished Lecture 8 style: talked-over slides, sentence-case titles, framing-question openers,
<!-- step --> math unrolls that never skip a line, verbatim-artifact conversation cards, full-bleed figures,
and a closing course roadmap.
Note: a Codex draft of this lecture exists as PR #478 (59 slides). This is an independent take in Nathan’s voice on the same target file; it can supersede or be diffed against that draft.
Narrative arc: the problem (over-optimization / Goodhart) → the control (KL regularization, explicit + implicit) → why it matters even for “style.” The spine of Part 2: reverse KL is everywhere — the standard KL penalty is a reverse KL estimated on the policy’s own samples (ch 15), the RL objective itself is equivalent to reverse KL to the reward-tilted optimal policy (ch 15), and Lecture 7’s on-policy distillation was reverse KL to the teacher (ch 12, which explicitly forward-referenced “why reverse KL is better” to Chapter 15 — this lecture pays that off).
π★ = (1/Z)π_ref·exp(r/β)), spending the step budget on the new KL(π_θ‖π★) ∝ −J_RL/β expansion..poem-ab CSS) + a plug for rlhfbook.com/library.schulman2020klapprox refs.bib key, not the book’s duplicate schulman2016klapprox).title-sidebar) — “Lecture 9: Over-Optimization and Regularization” / “Course on RLHF and
post-training. Chapters 14, 15 & Appendix B.”columns + accent box): 1) Over-optimization — Goodhart in RLHF (ch 14) 2) Regularization —
explicit and implicit KL (ch 15) 3) Beyond “just style” (App B). Recall from Lecture 8: RM accuracy is
a proxy for a proxy — today: what optimizing the proxy hard does.overoptimization.png: proxy reward climbs, true objective peaks then falls;
x-axis is steps or KL distance (foreshadows Part 2’s knob) [@gao2023scaling].anthropic_overoptimization.png: split the preference data into train/test RMs;
train-RM gains stop transferring ~150K samples [@bai2022training] cite-right.r = r_θ − λ_KL·D_KL(π_RL‖π_ref) [@jaques2017sequence; @jaques2020human]. Lecture 3 gave
the per-token mechanics (r̃_t = −β·KL_t); today: why it’s there, and the direction — this penalty is a
reverse KL, estimated on the policy’s own samples. “KL distance” = optimization distance (not a true
metric). The x-axis of slide 9 is this quantity.D_KL(P‖Q) = E_{x~P}[log P − log Q]; condensed 5-step snippet (generate →
forward both models → log-softmax → gather sampled tokens → sum & subtract); watch the KL curve — a huge KL
usually means a bug; k1/k2/k3 estimators → Q&A 2 [@schulman2020klapprox].step, 2 frames): SFT ≡ forward KL — split the expectation; the first term is −H(π★),
constant; boxed: KL(π★‖π_θ) ∝ L_SFT.step, 3 frames): RL ≡ reverse KL — objective → min form → recall Lecture 6 (partition
function; π★ = (1/Z)π_ref·exp(r/β), the DPO starting point, stated not re-derived) → expand KL(π_θ‖π★)
line-by-line (the chapter’s 4-line aligned block) → boxed: KL(π_θ‖π★) ∝ −J_RL/β.step): naive expectation — mode-covering should preserve modes, so SFT should forget less →
the opposite holds; the unimodal intuition breaks on multimodal LLMs. Reveal
retaining_by_doing_mode_intuition.png: forward KL stretches across modes and drags mass off the old one;
reverse KL shifts the new mode and leaves the old alone [@chen2025retainingdoingroleonpolicy] cite-right.rl_razor_motivation.png: among high-reward solutions, on-policy RL lands on the KL-closest
one; forgetting ≈ f(KL) with R² = 0.96, measured on the new task’s data (a cheap forgetting predictor);
ablation: on-policy data fully accounts for it — negative gradients don’t matter [@shenfeld2026rls]
cite-right.+γ·E_pretrain[log π]) [@ouyang2022training];
DPO+NLL [@pang2024iterative]; margin loss −m(y_c,y_r) from annotator rating deltas — the Likert scales
from Lecture 8 [@touvron2023llama]. (Notes: RPO [@adler2024nemotron], REBEL [@gao2024rebel]; most such
tricks are scaffolding that disappears in the next model generation.).poem-ab): Tülu 3 70B SFT vs. DPO, same prompt (“What is RLHF?”), truncated cards
— prose wall vs. structured/bold/listed [@lambert2024t]. “Same base model. What did preference tuning change
— and is it just style?” Plug rlhfbook.com/library.dno-figure.png: DNO’s 7B “beats GPT-4” on AlpacaEval (Apr 2024) [@rosset2024direct];
Self-Rewarding LMs’ unrealistic scores [@yuan2025selfrewardinglanguagemodels]; it got so bad AlpacaEval
and WildBench added linear length corrections. Done right: Starling Beta, +10 Arena places with
length that actually helps [@zhu2024starling; @wang2023openchat].Optional stretch: paper-title-page callouts for Gao et al. 2023 and RL’s Razor (400 dpi → JPEG ≤ ~1600px); a slide with Gao’s scaling-law functional forms (not in the book chapter — only if going beyond the book).
Frontmatter cloned from lec8 (Rubik/Poppins, bibliography: refs.bib, figure_captions: true, footer
“Lecture 9”, #F28482 section-break + progress CSS, left-aligned lists, the .full-bleed block, and lec8’s
.poem-ab CSS for the two A/B slides). Sentence-case titles; talked-over (no cute asides); <!-- step -->
unrolls that never skip a line; D_{\mathrm{KL}}, \begin{aligned} with right-aligned && \text{reason},
\boxed{} results; inline [@key] for claims, <!-- cite-right --> for whole-slide sources.
Copy from book/images/ → teach/course/assets/: overoptimization.png, anthropic_overoptimization.png,
retaining_by_doing_mode_intuition.png, rl_razor_motivation.png, dno-figure.png (same figures PR #478
added — reuse, don’t regenerate). No other figures needed — the three new artifacts (GPT-4o exchange,
kill-a-Linux-process refusal, Tülu SFT-vs-DPO pair) are verbatim chapter text rendered as ```conversation cards.
Keep any downloaded paper screenshots ≤ ~1600 px / JPEG for photographic scans (lesson from Lecture 8).
Copy from book/chapters/bib.bib into teach/course/refs.bib (verify each; reuse existing keys where
present): gao2023scaling, goodhart1984problems, hoskin1996awful, schulman2023proxy, zhang2018study,
coste2023reward, moskovitz2023confronting, rafailov2024scaling, rottger2023xstest,
zhuang2020consequences, chu2025sft, chen2025retainingdoingroleonpolicy, shenfeld2026rls,
jaques2017sequence, jaques2020human, pang2024iterative, qwen, rosset2024direct,
yuan2025selfrewardinglanguagemodels, zhu2024starling, wang2023openchat, ivison2024unpacking,
teamolmo2025olmo3, dubey2024llama, adler2024nemotron, gao2024rebel. Already in refs.bib:
sharma2023towards, bai2022training, touvron2023llama, ouyang2022training, lambert2024t, and
schulman2020klapprox (use for KL-approx; skip the book’s duplicate schulman2016klapprox).
book/templates/course.html — add the Lecture 9 course-page card.output_dir='teach/course'); image 200 check.MISSING: [] (ignoring the natolambert builtwith false-positive).colloquium export → eyeball every slide (montage the figure/derivation runs): full-bleed hump, the two
A/B card slides, each step frame adds exactly one aligned line, no overflow.