โมเดลแบบถดถอยอัตโนมัติ: การทำนายโทเค็นถัดไป
โทเค็น — หน่วยข้อความขั้นต่ำที่ LLM ประมวลผล โทเค็นไม่ใช่ตัวอักษรและไม่ใช่คำ แต่เป็นบางสิ่งที่อยู่ระหว่างนั้น คำว่า ไม่น่าเชื่อ ถูกแบ่งโดยอัลกอริทึม BPE ออกเป็นสามโทเค็น: `un` + `believ` + `able` LLM สมัยใหม่มีคำศัพท์ 32,000–128,000 โทเค็น กฎทั่วไป: 1 โทเค็น มีความยาว 4 ตัวอักษร, โทเค็น 100 อัน กลับไปยังคำภาษาอังกฤษ 75 คำ
กฎลูกโซ่: ทีละเงื่อนไข

โมเดลภาษาเรียนรู้ที่จะคำนวณ P(โทเค็นถัดไป | โทเค็นก่อนหน้าทั้งหมด) สิ่งนี้เป็นไปตามกฎการคูณของความน่าจะเป็นโดยตรง ความน่าจะเป็นของลำดับจะเท่ากับผลคูณของความน่าจะเป็นแบบมีเงื่อนไขของแต่ละโทเค็นที่ได้รับทุกอย่างก่อนหน้านั้น โมเดลที่สร้างขึ้นบนหลักการนี้เรียกว่า การถดถอยอัตโนมัติ เนื่องจากแต่ละเอาต์พุตจะฟีดกลับเป็นอินพุตสำหรับขั้นตอนถัดไป

อย่างเป็นทางการ:

P(t1,t2,,tn)=i=1nP(tit1,,ti1)P(t_1, t_2, \ldots, t_n) = \prod_{i=1}^{n} P(t_i \mid t_1, \ldots, t_{i-1})
แต่ละขั้นตอนของการสร้างคือการอนุมานความน่าจะเป็นแบบมีเงื่อนไขหนึ่งรายการ หากต้องการสร้างการตอบสนอง 200 โทเค็น โมเดลจะรันการส่งต่อนี้ 200 ครั้ง

ขั้นตอนการสร้างหนึ่ง: ไปป์ไลน์แบบเต็ม

กดแต่ละขั้นตอนเพื่อติดตามสิ่งที่เกิดขึ้นภายในโมเดลเมื่อเลือกโทเค็นถัดไป:

คลิกแต่ละขั้นตอน — หนึ่งขั้นตอน = หนึ่งโทเค็นที่สร้าง ▶
บริบท
โทเค็นทั้งหมดจนถึงตอนนี้
การฝัง
โทเค็น → เวกเตอร์หนาแน่น
หม้อแปลงไฟฟ้า
การเอาใจใส่ตนเอง + FFN
บันทึก
หนึ่งหมายเลขต่อโทเค็นคำศัพท์
ซอฟท์แม็กซ์
บันทึก → ความน่าจะเป็น
การสุ่มตัวอย่าง
เลือกโทเค็นถัดไป
บันทึก — ตัวเลขดิบที่ส่งออกตามเลเยอร์สุดท้ายของโมเดล หนึ่งรายการต่อโทเค็นคำศัพท์ การบันทึก ไม่ใช่ความน่าจะเป็น: อาจเป็นจำนวนจริงใดๆ ไม่ได้รวมเป็น 1 แต่เป็นลบได้ ยิ่ง logit มีขนาดใหญ่ โมเดลก็ยิ่ง "ชอบ" โทเค็นนั้นมากขึ้นเท่านั้น ฟังก์ชัน softmax แปลงบันทึกเป็นการแจกแจงความน่าจะเป็นที่เหมาะสม
จากบันทึกสู่ความน่าจะเป็น: softmax

ซอฟท์แม็กซ์: σ(xi)=exijexj\sigma(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} ทุกเอาต์พุตเป็นค่าบวก ผลลัพธ์ทั้งหมดจะรวมกันเป็น 1 ลากบันทึกด้านล่าง — สังเกตว่าการเปลี่ยนแปลงเล็กน้อยในบันทึกหนึ่งจะเปลี่ยนความน่าจะเป็นไปจากบันทึกอื่นๆ ทั้งหมดได้อย่างไร พารามิเตอร์ อุณหภูมิ T แบ่งบันทึกทั้งหมดก่อน softmax: T ต่ำทำให้การกระจายคมชัดขึ้น T สูงจะทำให้การกระจายแบนลง

ลากบันทึกหรือเปลี่ยนอุณหภูมิ — ดูการเปลี่ยนแปลงความน่าจะเป็น
SOFTMAX · 6 classes
z=3.8หลังคา
z=3.2โซฟา
z=2.4พื้น
z=1.8หน้าต่าง
z=0.9เตียง
z=0.3น้ำ
softmaxT=1.0
p=0.50หลังคา
p=0.27โซฟา
p=0.12พื้น
p=0.07หน้าต่าง
p=0.03เตียง
p=0.01น้ำ
T = 1.00
T→0
winner-
takes-all
T→∞
uniform
Entropy H = 1.878 / 2.585
softmax(z)ᵢ = exp(zᵢ/T) / Σⱼexp(zⱼ/T). Winner: หลังคา · p = 0.496
การสร้างลูปในโค้ด
คลิกที่บรรทัดเพื่อดูคำอธิบาย ▼
python
1
def generate(model, prompt_tokens, max_new=50):
2
    tokens = list(prompt_tokens)              # context
3
    for _ in range(max_new):
4
        logits = model(tokens)               # [vocab_size]
5
        probs  = softmax(logits)             # sum = 1.0
6
        next_token = sample(probs)           # pick one
7
        tokens.append(next_token)            # context grows
8
        if next_token == EOS_TOKEN: break    # stop signal
9
    return tokens
ดูบริบทที่เติบโต: โทเค็นต่อโทเค็น

แต่ละแถบแสดงความน่าจะเป็นของโมเดลที่กำหนดให้กับโทเค็นของผู้สมัครในตำแหน่งนั้น แถบสีเขียวคือแถบที่ถูกสุ่มตัวอย่างและต่อท้ายบริบท

กด "โทเค็นถัดไป" — ดูบริบทที่เพิ่มขึ้นและการเปลี่ยนแปลงการกระจาย ▶
ที่แมวนั่งบน|
หน้าต่างบริบท — จำนวนโทเค็นสูงสุดที่โมเดลสามารถ "เห็น" ได้ในการส่งต่อหนึ่งครั้ง GPT-2: 1,024 โทเค็น GPT-4 Turbo: 128,000 Claude 3: สูงถึง 200,000 โมเดลจะมองไม่เห็นทุกสิ่งที่อยู่นอกหน้าต่าง การขยายบริบทมีราคาแพง - ความซับซ้อนของความสนใจของหม้อแปลงคือ O(n²) ในความยาวลำดับ

ประเด็นสำคัญ

โมเดลภาษาแบบถอยหลังอัตโนมัติจะสร้างข้อความโดยการทำนายโทเค็นถัดไปที่น่าจะเป็นไปได้มากที่สุดซ้ำๆ โดยพิจารณาจากโทเค็นก่อนหน้าทั้งหมด แต่ละขั้นตอนการสร้างคือการส่งต่อโมเดลที่สมบูรณ์หนึ่งครั้ง — ไม่มีทางลัด
โทเค็น มีความยาว 4 ตัวอักษร อัลกอริทึม BPE สร้างคำศัพท์จำนวน 32,000–128,000 หน่วยคำย่อย
แบบจำลองทำนาย P(tᵢ | t₁…tᵢ₋₁) — กฎลูกโซ่เปลี่ยนสิ่งนี้ให้เป็นความน่าจะเป็นของลำดับใดๆ
ไปป์ไลน์: บริบท → หม้อแปลงไฟฟ้า → บันทึก → Softmax → ความน่าจะเป็น → ตัวอย่าง → โทเค็นใหม่
บันทึก เป็นคะแนนดิบ ไม่ใช่ความน่าจะเป็น Softmax แปลงค่าเหล่านี้: ทั้งหมด ≥ 0, ผลรวม = 1
การสร้างเป็นไปตามลำดับ — หนึ่งการส่งต่อต่อโทเค็น การตอบกลับ 200 โทเค็นมีค่าใช้จ่าย 200 ครั้ง