ЁЯПл The SchoolтА║ЁЯза AIтА║ЁЯО▓ рдзрдбрд╛ 05 тАФ Next-token prediction: рд╡рд╛рдХреНрдп рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЦреЗрд│
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯО▓ рдзрдбрд╛ 05 тАФ Next-token prediction: рд╡рд╛рдХреНрдп рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЦреЗрд│

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 05 ┬╖ рдорд╛рдЧреЗ: lesson-04-embeddings ┬╖ рдкреБрдвреЗ: lesson-06-attention


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рдзрдбреЗ 01тАУ04, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ LLM рдЪреНрдпрд╛ рдХреЗрдВрджреНрд░рд╛рддреАрд▓ рдзрдХреНрдХрд╛рджрд╛рдпрдХ рд╕рддреНрдп: рд╕рдВрдкреВрд░реНрдг рдХрд╛рдо рдореНрд╣рдгрдЬреЗ рдкреБрдврдЪрд╛ puzzle рддреБрдХрдбрд╛ рдУрд│рдЦрдгреЗ тАФ рдкреБрдиреНрд╣рд╛ рдкреБрдиреНрд╣рд╛. рдЦрд░реА file: demo/bigram_model.py тАФ рдЖрдЬ temperature dial рд╣рд╛ рдореБрдЦреНрдп рдирд╛рдпрдХ рдЖрд╣реЗ.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рдПрдХ рдЦреЗрд│ рдЦреЗрд│рддреЗ: "The dog chased the ___". рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓ рдУрд░рдбреВрди рдЕрдВрджрд╛рдЬ рд╕рд╛рдВрдЧрддреЗ тАФ cat! ball! mailman! LLM рдиреЗрдордХрд╛ рд╣рд╛рдЪ рдЦреЗрд│ рдЦреЗрд│рддреЛ, рдЖрдгрд┐ рджреБрд╕рд░реЗ рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА. рдПрдХ рдлреЗрд░реА рдЕрд╢реА рдЪрд╛рд▓рддреЗ:

  1. рдЖрддрд╛рдкрд░реНрдпрдВрддрдЪреЗ рд╕рдЧрд│реЗ рддреБрдХрдбреЗ рд╡рд╛рдЪрд╛ (prompt + рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рд╕рдЧрд│реЗ).
  2. vocabulary рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рддреБрдХрдбреНрдпрд╛рд╕рд╛рдареА рдЧреБрдг рдХрд╛рдврд╛ тАФ рд╕рдЧрд│реЗ ~100,000 тАФ "рдкреНрд░рддреНрдпреЗрдХ рдкреБрдвреЗ рдпреЗрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрд┐рддреА?": cat 24%, ball 17%, car 9%, тАж stapler 0.0001%.
  3. рдПрдХ рдирд┐рд╡рдбрд╛ тАФ рдЖрдгрд┐ рд╣рд╛ рдЖрд╣реЗ рд╕реНрд╡рднрд╛рд╡рд╛рдЪрд╛ dial ЁЯОЫя╕П:
    • Temperature тЙИ 0: рдиреЗрд╣рдореА рд╕рд░реНрд╡рд╛рдд рд╡рд░рдЪрд╛ рдЕрдВрджрд╛рдЬ рдШреНрдпрд╛. рд╕реБрд░рдХреНрд╖рд┐рдд, рд╕рд╛рддрддреНрдпрдкреВрд░реНрдг, рдереЛрдбрд╛ рдХрдВрдЯрд╛рд│рд╡рд╛рдгрд╛. (code рдЖрдгрд┐ facts рд╕рд╛рдареА рд╣реЗрдЪ рд╣рд╡реЗ.)
    • Temperature тЙИ 1: рд╢рдХреНрдпрддрд╛рдВрдиреБрд╕рд╛рд░ sample рдХрд░рд╛ тАФ рдмрд╣реБрддреЗрдХ рд╡реЗрд│рд╛ рд╢рдХреНрдп рддреЗ, рдордзреВрдирдЪ рдЖрд╢реНрдЪрд░реНрдп. (рдиреИрд╕рд░реНрдЧрд┐рдХ рдЧрджреНрдп.)
    • Temperature тЖС 2: рдХрдореА рд╢рдХреНрдпрддреЗрдЪреЗ рддреБрдХрдбреЗ рд╡рд╛рд░рдВрд╡рд╛рд░ рдЬрд┐рдВрдХрддрд╛рдд. рд╕рд░реНрдЬрдирд╢реАрд▓ тЖТ рдмреЗрддрд╛рд▓.
  4. рдирд┐рд╡рдбрд▓реЗрд▓рд╛ рддреБрдХрдбрд╛ рдЬреЛрдбрд╛, step 1 рд╡рд░ рдЬрд╛. рдкреНрд░рддреНрдпреЗрдХ рдлреЗрд░реАрдд рдПрдХ рддреБрдХрдбрд╛ тАФ рдореНрд╣рдгреВрдирдЪ рдЙрддреНрддрд░реЗ рд╢рдмреНрджрд╛рдорд╛рдЧреВрди рд╢рдмреНрдж stream рд╣реЛрддрд╛рдд; рддреБрдореНрд╣реА рдЕрдХреНрд╖рд░рд╢рдГ loop рдлрд┐рд░рддрд╛рдирд╛ рдкрд╛рд╣рдд рдЕрд╕рддрд╛.

"рдкрдг рддреЗ рдлрдХреНрдд text рдЪрд╛ рдЕрдВрджрд╛рдЬ рдХрд░рддреЗ!" тАФ рд╣реЛ, AND: physics рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдирдВрддрд░ "...therefore the answer is" рдЪрд╛ рдкреБрдврдЪрд╛ рддреБрдХрдбрд╛ рдУрд│рдЦрдгреНрдпрд╛рд╕рд╛рдареА, рдпрдВрддреНрд░рдгреЗрдд рднрд░рдкреВрд░ physics рд╕рд╛рдард╡рд╛рд╡реА рд▓рд╛рдЧрддреЗ. рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рд╡рд░рдЪреНрдпрд╛ рдЕрдВрджрд╛рдЬрд╛рдиреЗ рд╢рд╛рдВрддрдкрдгреЗ рд╕рдордЬреБрддреАрд╕рд╛рд░рдЦреНрдпрд╛ рдХреНрд╖рдорддрд╛ рд╡рд┐рдХрдд рдШреЗрддрд▓реНрдпрд╛. рд╣реЗрдЪ рдЖрдзреБрдирд┐рдХ AI рдЪреЗ рдореЛрдареЗ рдЖрд╢реНрдЪрд░реНрдп. ЁЯдп

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    ctx["ЁЯУЭ pieces so far<br/>'The dog chased the'"]
    m["ЁЯза model"]
    probs["ЁЯУК scores for ALL pieces<br/>cat 24% ┬╖ ball 17% ┬╖<br/>car 9% ┬╖ тАж stapler ~0%"]
    dial["ЁЯОЫя╕П temperature<br/>0: top pick, more deterministic<br/>1: sample the odds, balanced<br/>2: more random"]
    pick["ЁЯзй picked: 'cat'"]
    ctx --> m -->|"1 one full scoreboard"| probs -->|"2 sample"| dial --> pick
    pick -->|"3 glue on, repeat -<br/>this is why answers STREAM"| ctx

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рд╣рд╛рдЪ рд╕рд░реНрд╡рд╛рдд рдореЛрдард╛ рдЧреВрдв-рдЙрдХрд▓рдгрд╛рд░рд╛ рдзрдбрд╛ рдЖрд╣реЗ. "рддреЗ рдХрдзреАрдХрдзреА рд╡реЗрдЧрд╡реЗрдЧрд│реА рдЙрддреНрддрд░реЗ рдХрд╛ рджреЗрддреЗ?" (sampling). "рддреЗ рдЬреЛрд░рд╛рдд рд╕реБрд░реВ рд╣реЛрдКрди рдордЧ рднрд░рдХрдЯрддреЗ рдХрд╛?" (рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╡рдб рдкреБрдврдЪреНрдпрд╛ рдирд┐рд╡рдбреАрд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рддреЗ). "рдЪреБрдХреАрдЪреЗ facts рдЗрддрдХреЗ рд╕рдлрд╛рдИрджрд╛рд░ рдХрд╛ рд╡рд╛рдЯрддрд╛рдд?" (рд╕рдлрд╛рдИ рд╣реАрдЪ likelihood рдЖрд╣реЗ тАФ рд╕рддреНрдп loss рдордзреНрдпреЗ рдирд╕рддреЗ; рдзрдбрд╛ 09 рддреЛ рдзрд╛рдЧрд╛ рдУрдврддреЛ). рдкреНрд░рддреНрдпреЗрдХ AI playground рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ knob рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреВрд░реНрдг рд╕рдордЬрд▓реЗрд▓реНрдпрд╛ рдЦреЗрд│рд╛рд╡рд░рдЪрд╛ knob рдЖрд╣реЗ.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 demo/bigram_model.py

рд╣реЗ рддреАрди рд╡реЗрд│рд╛ рдЪрд╛рд▓рд╡рд╛. Temperature 0.01 рд╕реНрд╡рддрдГрд▓рд╛ рд╢рдмреНрджрд╢рдГ рдкреБрдиреНрд╣рд╛ рд╕рд╛рдВрдЧрддреЗ; 1.0 рд╕рдордЬреВрддрджрд╛рд░рдкрдгреЗ рдмрджрд▓рддреЗ; 2.0 рд╡рд┐рдЪрд┐рддреНрд░ рд╣реЛрддреЗ. рддреЛрдЪ "рдореЗрдВрджреВ", рд╡реЗрдЧрд│рд╛ dial тАФ рдЖрддрд╛ рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ chatbot рдордзреНрдпреЗ temperature setting рдХрд╛ рдЕрд╕рддреЗ рдЖрдгрд┐ рддреА рдЖрддреВрди рдХрд╛рдп рдХрд░рддреЗ, рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣реАрдд рдЖрд╣реЗ.

тПня╕П рдкреБрдвреЗ

рдПрдХ рдкреЛрдХрд│реА: "the dog that chased the cat which climbed theтАж" рдпрд╛рд▓рд╛ model рд╡рдЬрди рдХрд╕реЗ рджреЗрддреЛ? рдпрд╛ рдЕрдВрджрд╛рдЬрд╛рд╕рд╛рдареА рдЖрдзреАрдЪреЗ рдХреЛрдгрддреЗ рддреБрдХрдбреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ? Attention тАФ рдЗрдХрдбреЗ-рддрд┐рдХрдбреЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рддреА рдпреБрдХреНрддреА рдЬрд┐рдиреЗ рд╕рдЧрд│реЗ рдмрджрд▓рд▓реЗ.

git checkout lesson-06-attention

ЁЯО▓ Lesson 05 тАФ Next-token prediction: the sentence-completion game

ЁЯУН You are here: Lesson 05 of 12 ┬╖ Previous: lesson-04-embeddings ┬╖ Next: lesson-06-attention


ЁЯУж What's in this branch

Lessons 01тАУ04, plus the shocking truth at the center of every LLM: the entire job is guess the next puzzle piece тАФ repeated. Real file: demo/bigram_model.py тАФ the temperature dial is the star today.

ЁЯзТ Explain like I'm 5

The teacher plays a game: "The dog chased the ___". Every kid shouts a guess тАФ cat! ball! mailman! An LLM plays exactly this game, and nothing else. One round works like this:

  1. Read all the pieces so far (the prompt + everything written).
  2. Produce a score for EVERY piece in the vocabulary тАФ all ~100,000 тАФ "how likely is each to come next?": cat 24%, ball 17%, car 9%, тАж stapler 0.0001%.
  3. Pick one тАФ and here's the personality dial ЁЯОЫя╕П:
    • Temperature тЙИ 0: always take the top guess. Safe, consistent, a bit boring. (What you want for code and facts.)
    • Temperature тЙИ 1: sample by the odds тАФ mostly-likely with surprises. (Natural prose.)
    • Temperature тЖС 2: underdog pieces win often. Creative тЖТ unhinged.
  4. Glue the picked piece on, go to step 1. One piece per round тАФ that's why answers stream word by word; you're literally watching the loop spin.

"But it just predicts text!" тАФ yes, AND: to predict the next piece of "...therefore the answer is" after a physics problem, the machinery must encode a lot of physics. Prediction at scale quietly bought understanding-shaped abilities. That's THE surprise of modern AI. ЁЯдп

ЁЯЧ║я╕П Diagram

flowchart LR
    ctx["ЁЯУЭ pieces so far<br/>'The dog chased the'"]
    m["ЁЯза model"]
    probs["ЁЯУК scores for ALL pieces<br/>cat 24% ┬╖ ball 17% ┬╖<br/>car 9% ┬╖ тАж stapler ~0%"]
    dial["ЁЯОЫя╕П temperature<br/>0: top pick, more deterministic<br/>1: sample the odds, balanced<br/>2: more random"]
    pick["ЁЯзй picked: 'cat'"]
    ctx --> m -->|"1 one full scoreboard"| probs -->|"2 sample"| dial --> pick
    pick -->|"3 glue on, repeat -<br/>this is why answers STREAM"| ctx

тЭУ What

ЁЯдФ Why

This is THE demystifier. "Why does it sometimes give different answers?" (sampling). "Why does it start strong then ramble?" (each pick conditions the next). "Why do wrong facts sound so fluent?" (fluency IS likelihood тАФ truth isn't in the loss; lesson 09 pulls that thread). Every knob in every AI playground is now a knob on a game you fully understand.

ЁЯзк Try it

python3 demo/bigram_model.py

Run it three times. Temperature 0.01 repeats itself verbatim; 1.0 varies sensibly; 2.0 gets weird. Same "brain", different dial тАФ now you know why your favorite chatbot has a temperature setting, and what it does, from the inside.

тПня╕П Next

One gap: HOW does the model weigh "the dog that chased the cat which climbed theтАж"? Which earlier pieces matter for THIS guess? Attention тАФ the glancing-around trick that changed everything.

git checkout lesson-06-attention
тЖР PreviousembeddingsNext тЖТattention

This page is the lesson's README from the lesson-05-next-token branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.