ข้าม​ไป​ยัง​เนื้อหา

ทำไม​ต้อง​สร้าง​จาก​ศูนย์ — เปิด​ฝากระโปรง model ที่ agent เรียก​ใช้

เจ็ด​คอร์ส​ที่​ผ่าน​มา​ของ​สาย AI-engineering (#15 first-ai-agent → #16 context-engineering → #17 agent-harness-loop → #12 agent-as-context → #13 evals → #14 mcp → #18 guardrails) คุณ​สร้าง​ของ​จริง​ขึ้น​มา​เยอะ​มาก — agent ที่​เรียก tool, context layer ที่ retrieve เอกสาร, loop ที่ orchestrate หลาย​ขั้น, eval harness, MCP server, ชั้น guardrail กัน​การ​โจมตี แต่​มี​สิ่ง​หนึ่ง​ที่​ทุก​คอร์ส​เหล่า​นั้น ไม่​เคย​แตะ: ตัว model เอง ทุก​ครั้ง​ที่​คุณ​เรียก client.messages.create(...) มี​เครื่องจักร​ก้อน​หนึ่ง​หมุน​อยู่​หลัง API — คุณ​ป้อน token เข้าไป มัน​คาย token ถัด​ไป​กลับ​มา คุณ ใช้ มัน​มา​ตลอด แต่​ไม่​เคย​เห็น​ข้าง​ใน​ว่า​มัน​ทำงาน​ยังไง

คอร์ส​นี้​เปิด​ฝากระโปรง​ก้อน​นั้น เรา​จะ สร้าง model ขึ้น​มา​เอง​ด้วย​มือ ตั้งแต่ neuron ตัว​เดียว​จน — 8 บท​ต่อ​มา — ประกอบ​เป็น TransformerTransformerสถาปัตยกรรม​ที่​ซ้อน self-attention เป็น​ชั้น ๆ — โครง​ที่ LLM จริง​ใช้Architecture ตัว​จิ๋ว​ที่​รัน​บน CPU เครื่อง​เดียว​ได้ ไม่ใช่​เพื่อ​ให้​ได้ LLM ไป​แข่ง​กับ​ใคร แต่​เพื่อ​ให้​คุณ เห็น​ทั้ง​กอง ว่า​อะไร​หมุน​อยู่​ข้าง​ใน​ตอน forward กับ backward

📦 kaen-nn-from-scratch

code ลงมือ​ของ​คอร์ส​นี้​อยู่​ใน repo kaen-nn-from-scratch (code ตัวอย่าง​กำลัง​จัด​ทำ) — pure Python (ไม่มี framework) ตลอด​บท2–5 แล้ว graduate ไป PyTorch (pin version + วัน​ที่​ดึง) ในบท6–8 บท​นี้​เป็น​บท​วาง​กรอบ​ความคิด — ยัง ไม่มี code รัน​ได้ code จริง​เริ่ม​ที่​บท2 (สร้าง autograd engine ตัว​แรก​ด้วย​มือ) บท​นี้​ตั้ง precedent ของ honesty spine กับ 🔗 callout อ้างอิง​ต้นทาง​ไว้​ให้​ทุก​บท​หลัง​จาก​นี้​เดิน​ตาม

ถ้า​จะ​จำ​คอร์ส​นี้​ด้วย​ประโยค​เดียว ให้​จำ​เส้น​แบ่ง​นี้ — และ​มัน​คือ​เส้น​ที่​กัน​ไม่​ให้​คอร์ส​นี้​ไป​ทับ​กับ 7 คอร์ส​ก่อนหน้า:

“คอร์ส #15-#18 ทั้ง​กอง ‘ใช้’ model ผ่าน API/SDK — คอร์ส​นี้ ‘สร้าง’ model ตัว​นั้น​ขึ้น​มา​เอง​ตั้งแต่ neuron; และ​ใน​ขณะ​ที่ #16 context-engineering สร้าง embedding ใน​ฐานะ retrieval tool (พร้อม​หมายเหตุ​ว่า Claude ไม่มี embeddings endpoint), ที่​นี่​เรา​สร้าง embedding ‘ด้วย​มือ’ ใน บท4 เพื่อ​เห็น​ว่า​มัน​เป็น​แค่​ตาราง weight ที่ gradient descent ขยับ — ไม่ใช่​เพื่อ​เอา​ไป​ค้น​เอกสาร”

นี่​คือ​ความ​ต่าง​ที่​คม​ที่สุด: #16 มอง embedding เป็น เครื่องมือ (tool) — เวกเตอร์​ที่​เอา​ไป​วัด​ความ​ใกล้​เพื่อ retrieve เอกสาร​เข้า context ส่วน​ที่​นี่​เรา​มอง embedding เป็น วัตถุ (object) — ตาราง weight ที่​เริ่ม​จาก​ตัวเลข​สุ่ม แล้ว gradient descent ค่อยๆ ขยับ​มัน​ระหว่าง​เทรน เป้าหมาย​คนละ​เรื่อง​กัน​โดย​สิ้นเชิง คอร์ส​นี้​จะ ไม่ สอน RAG/retrieval ซ้ำ (นั่น​ของ #16), ไม่​สอน eval harness ซ้ำ (#13), ไม่​สอน prompt-guardrail ซ้ำ (#18) — เรา​โฟกัส​ที่​เรื่อง​เดียว: อะไร​หมุน​อยู่​ข้าง​ใน​ตอน forward + backward

ทั้ง​คอร์ส​คือ​การ​ไต่​บันได​สี่​ขั้น​เป็น​เส้น​เดียว​ต่อ​เนื่อง แต่ละ​ขั้น​เป็น​วัตถุดิบ​ของ​ขั้น​ถัด​ไป:

  1. NeuronNeuronหน่วย​คำนวณ​ตัว​จิ๋ว: input × weight + bias แล้ว​บีบ​ผ่าน activation — อะตอม​ของ​ทั้ง​กองArchitecture — หน่วย​คำนวณ​ตัว​จิ๋ว​ที่สุด: เอา input มา​คูณ weight บวก bias แล้ว​บีบ​ผ่าน activation function หนึ่ง​ครั้ง นี่​คือ​อะตอม​ของ​ทั้ง​กอง
  2. Neural NetworkNeural Networkเอา neuron หลาย​ตัว​มา​ต่อ​กัน​เป็น​ชั้น ๆ ให้​ข้อมูล​ไหล​ผ่านArchitecture — เอา neuron หลาย​ตัว​มา​ต่อ​กัน​เป็นชั้นๆ ให้​ข้อมูล​ไหล​ผ่าน​จาก input ไป output
  3. network ที่ “ลึก” (Deep LearningDeep Learningเรียนรู้​จาก​ข้อมูล​ด้วย neural network ที่ "ลึก" (หลาย​ชั้น) โดย​ไม่​ต้อง​เขียน​กฎ​เองArchitecture) — ซ้อน​ชั้น​เหล่า​นั้น​หลาย​ชั้น​จน​มัน​เรียน​ของ​ซับซ้อน​ได้​เอง​จาก​ข้อมูล โดย​ไม่​ต้อง​เขียน​กฎ​เอง คำ​ว่า “deep” ก็​คือ “หลาย​ชั้น” นี่แหละ
  4. model ที่ agent ของ​คุณ​เรียก​ใช้ — transformer ที่​ซ้อน self-attention เป็นชั้นๆ คือ​โครง​ที่ LLM จริง​หลัง API ใช้ ขั้น​สุดท้าย​ของ​บันได​คือ​จุด​ที่​วน​กลับ​มา​บรรจบ​กับ​สิ่ง​ที่ #15-#18 เรียก​ใช้​ทุก​วัน
flowchart TB
  N["neuron<br/>input × weight + bias → activation<br/>(อะตอมตัวจิ๋ว)"]
  NN["neural network<br/>เอา neuron มาต่อเป็นชั้น ๆ"]
  DN["deep network<br/>ซ้อนหลายชั้นให้ 'ลึก'<br/>เรียนของซับซ้อนเองจากข้อมูล"]
  M["model ที่ agent ของคุณเรียกใช้<br/>transformer / LLM หลัง API"]
  N -->|"บท2–3"| NN
  NN -->|"บท4–5"| DN
  DN -->|"บท6–8"| M

  classDef base fill:#fde68a,stroke:#92400e,color:#451a03;
  classDef top fill:#7c2d12,stroke:#431407,color:#fed7aa;
  class N,NN,DN base;
  class M top;

คำ​บรรยาย​ภาพ: บันได​สี่​ขั้น​ที่​คอร์ส​นี้​ไต่​ขึ้น​ที​ละ​ขั้น — เริ่ม​จาก neuron ตัว​เดียว (input คูณ weight บวก bias แล้ว​ผ่าน activation) เอา​มา​ต่อ​กัน​เป็น neural network ซ้อน​ให้​ลึก​จน​กลาย​เป็น deep network แล้ว​จบ​ที่ transformer ซึ่ง​เป็น​โครง​เดียว​กับ model ที่ agent ของ​คุณ​ใน #15-#18 เรียก​ผ่าน API ป้าย​บน​เส้น​บอก​ช่วง​บท​ที่​พา​ไต่​แต่ละ​ขั้น ทุก​ขั้น​เป็น​วัตถุดิบ​ของ​ขั้น​ถัด​ไป ไม่มี​ขั้น​ไหน​กระโดด​ข้าม

ก่อน​ลง​บท​แรก​ที่​มี code ปัก​ความ​จริง​สี่​ข้อ​นี้​ไว้ — ทุก​บท​ลงมือ​จะ​ย้ำ​ข้อ​ที่​เกี่ยวข้อง​ซ้ำ บท​นี้​กับ​บท8 (บท​ปิด) แบก​ครบ​ทั้ง​สี่​เส้น สอง​เส้น​ที่​ต้อง​เน้น​ก่อน​คือ B กับ C

เส้น B — สร้าง​เพื่อ​เข้าใจ ไม่ใช่​เพื่อ deploy

“เรา​สร้าง​เพื่อ​เข้าใจ ไม่ใช่​เพื่อ deploy — micrograd กับ nano-GPT ตัว​จิ๋ว​ใน​คอร์ส​นี้​รัน​บน CPU เครื่อง​เดียว​ได้; แต่ LLM จริง​กิน​ทั้ง GPU cluster, ข้อมูล​ระดับ​เท​ระ, เวลา​เป็น​เดือน — สเกล​ที่​คอร์ส​นี้ ‘ไม่’ จำลอง”

แปล​ว่า: คุณ​จะ​ได้ mental model ที่​ถูกต้อง​ของ forward → backward → update; คุณ​จะ ไม่ ได้ training stack ที่​ใช้งาน​จริง (data pipeline, distributed, mixed-precision, checkpointing) — และ​นั่น​คือ design ไม่ใช่ ช่อง​โหว่

เส้น C — นี่​คือ​เครื่อง​ที่ agent ของ​คุณ​เรียก​ใช้ (สะพาน ไม่ใช่ prerequisite)

“backprop ตัว​เดียวกัน​นี้​แหละ​ที่​หมุน​อยู่​ข้าง​ใน model ที่ agent ของ​คุณ​ใน #15-#18 เรียก​ผ่าน API — เข้าใจ​มัน​แล้ว​จะ​เห็น​ทั้ง​กอง​ตั้งแต่ neuron ยัน tool-call; แต่​พูดตรงๆ: ไม่รู้ backprop ก็​สร้าง agent ได้”

แปล​ว่า: คอร์ส​นี้​เป็น สะพาน​ความ​เข้าใจ ไม่ใช่ prerequisite ของ #15-#18 คุณ​สร้าง agent ตัว​แรก​ได้​โดย​ไม่รู้ BackpropagationBackpropagationเดิน​ย้อน​จาก loss หา​ว่า weight แต่ละ​ตัว​มี​ส่วน​ผิด​แค่​ไหน (คือ gradient)Process เลย — มา​คอร์ส​นี้​เพื่อ เห็น​ทั้ง​กอง ไม่ใช่​เพราะ​จำเป็น​ต้อง​รู้​ก่อน

เส้น A — ของสด​ใช้ repo, ของ​นิ่ง​ใช้​ตำรา

“ของสด​ใช้ repo, ของ​นิ่ง​ใช้​ตำรา — code ของ Karpathy คือ repo ที่​ยัง​มี​ชีวิต เรา​จึง​อ้าง​ด้วย commit SHA + วัน​ที่​ดึง ไม่ใช่​เลข​รุ่น; ส่วน​คณิต​ที่​ไม่​เน่า​เรา​อ้าง Goodfellow-Bengio-Courville (MIT Press, 2016)”

แปล​ว่า: code สด (Karpathy) รัน​ได้​วัน​นี้​แต่ upstream อาจ​ขยับ​ใต้เท้า​คุณ​พรุ่งนี้ — จึง pin ด้วย SHA; ส่วน​คณิต​ใน​ตำรา​ปี 2016 นิ่ง​และ​ตรวจ​ได้ แต่ “เก่า” ใน​เรื่อง practice สมัย​ใหม่ — เรา​จึง​อ้าง​มัน​เฉพาะ​คณิต​ที่​ไม่​เน่า และ​ติด​ป้าย “stale-on-modern-practice” ทุก​จุด​ที่​มัน​แตะ​ของ​หลัง​ปี 2016

เส้น D — คณิต​เป็น​พื้น​ให้​ยืน ไม่ใช่​กำแพง​กั้น​ทาง

“เรา​สอน ‘สัญชาตญาณ’ ของ gradient กับ chain rule พอ​ให้ code มี​ความหมาย ไม่ใช่​พิสูจน์​ทฤษฎีบท — อยาก​ลึก​เชิง​พิสูจน์ เปิด Goodfellow บท​ที่​อ้าง​ไว้; คณิต​ตรง​นี้​เป็น​พื้น​ให้​ยืน ไม่ใช่​กำแพง​กั้น​ทาง”

แปล​ว่า: เรา​เลือก “เข้าใจ​เร็ว” แทน “พิสูจน์​ครบ”; ความ​เข้มงวด​เชิง​พิสูจน์​ถูก out-source ไป​ที่ Goodfellow-Bengio-Courville (Deep Learning, MIT Press, 2016) พร้อม pointer บท/หัวข้อ​ทุก​ครั้ง — ตำรา​คณิต​ที่ “นิ่ง” ที่​เรา​อ้าง​เฉพาะ​คณิต​ไม่​เน่า และ​ติด​ป้าย stale ทุก​ที่​ที่​มัน​แตะ practice หลัง​ปี 2016

อยู่​ใน (IN): เส้น​เดียว​ต่อ​เนื่อง — neuron → autograd/backprop (micrograd) → bigram language model → MLP + embedding → training internals (init/BatchNorm) → PyTorch → self-attention/transformer → nano-GPT capstone รวม 8 บท ทุก​บท​เป็น​วัตถุดิบ​ของ​บท​ถัด​ไป ไม่มี​บท​ไหน​ลอย​เดี่ยว

อยู่​นอก (OUT): ห้า​เรื่อง​นี้​เรา​ตัด​ออก​อย่าง​จงใจ — และ​บอก​เหตุผลตรงๆ เพื่อ​ไม่​ให้​ใคร​อนุมาน​ว่า​คอร์ส​ครอบคลุม​มัน:

นอก​ขอบเขตทำไม​ถึง​ตัด​ออก
CNN / งาน computer visioninductive bias คนละ​แบบ — convolution ออกแบบ​มา​สำหรับ​โครงสร้าง​เชิง​พื้นที่​ของ​ภาพ ไม่ใช่​การ​ทาย token ถัด​ไป​ของ​ภาษา คอร์ส​นี้​เดินสาย language model เส้น​เดียว
RL / RLHFreward signal ≠ next-token NLL; มัน​เป็น​ชั้น​ที่มา หลัง pretraining (จูนพฤติกรรม​ด้วย​รางวัล) คนละ​กลไก​กับ​ที่​คอร์ส​นี้​สอน
การ​เทรน​สเกล GPU / distributed trainingขัด​กับ เส้น B ตรงๆ — เรา​สร้าง​เพื่อ​เข้าใจ​บน CPU เครื่อง​เดียว ไม่ใช่​จำลอง​สเกล​จริง (GPU cluster / ข้อมูล​ระดับ​เท​ระ / เวลา​เป็น​เดือน)
MLOps / serving / deploymentทับ​กับ​คอร์ส #19 production-observability (ชั้น OPERATE) — เรื่อง deploy/สังเกตการณ์​เป็น​ของ​คอร์ส​นั้น ไม่ derive ซ้ำ​ที่​นี่
fine-tune LLM จริง / LoRAต้อง​มี pretrained weights + สเกล​ที่​คอร์ส​นี้​ไม่​แตะ (ดู เส้น B) — เรา​สร้าง model จิ๋ว​จาก​ศูนย์ ไม่​ได้​จูน model ใหญ่​ที่​มี​คน​เทรน​มา​แล้ว

เปเปอร์ Rumelhart–Hinton–Williams ปี 1986 (S10) ทำให้ backprop เป็น​ที่​นิยม ใน​วงการ neural network — แต่ ไม่​ได้ เป็น​คน​คิด reverse-mode automatic differentiation ขึ้น​มา​เอง (Linnainmaa 1970 และ Werbos 1974 มา​ก่อน) เรื่อง​นี้​เป็น​แค่​เกร็ด ไม่ใช่​สาระ​ที่​ต้อง​ท่อง แต่​มัน​เตือน​ว่า​ไอเดีย​หลัก​ของ​ทั้ง​คอร์ส — การ​ไล่ chain rule ย้อน​กลับ — เก่า​กว่า​ที่​คน​ส่วน​ใหญ่​คิด

7 คอร์ส​ก่อนหน้า​ให้​คุณ ใช้ model ผ่าน API/SDK จน​คล่อง — บท​นี้​วาง​กรอบ​ว่า​ทำไม​เรา​จะ สร้าง มัน​เอง​ตั้งแต่ neuron: USE vs BUILD คือ​เส้น​แบ่ง​หลัก (และ embedding-เป็น-วัตถุ ที่​นี่ ต่าง​จาก embedding-เป็น-เครื่องมือ ที่ #16); เส้น​ความ​ซื่อสัตย์​สี่​เส้น — โดย​เฉพาะ B (สร้าง​เพื่อ​เข้าใจ ไม่ใช่ deploy) และ C (เป็น​สะพาน ไม่ใช่ prerequisite — ไม่รู้ backprop ก็​สร้าง agent ได้) — จะ​กำกับ​ทุก​บท​ที่​เหลือ; ขอบเขต​ชัด​ว่า CNN/RL/GPU-scale/MLOps/fine-tuning อยู่​นอก และ​เรา​บอก​เหตุผล​ทุก​ข้อ บท​นี้​ยัง​ไม่มี code รัน​ได้ — เป็น​แผนที่​ก่อน​ออก​เดินทาง

บท​หน้า​เลิก​พูด​กรอบ — เรา​จะ​สร้าง autograd engine ตัว​แรก​ด้วย​มือ (micrograd) class Value ตัว​จิ๋ว​ที่​จำ​ได้​ว่า​ค่า​ไหน​มา​จาก​ค่า​ไหน แล้ว​ไล่ backprop ย้อน​กลับ​เอง​ทั้งหมด นี่​คือ​ขั้น​แรก​ของ​บันได​ที่​จะ​พา​ไป​ถึง transformer


🔗 อ้างอิง​ต้นทาง​ของ​บท​นี้

บท​นี้​อิง​ต้นทาง​ที่​ลง​วัน​ที่​กำกับ อ่าน​ต่อ​ได้​โดยตรง:

  • Karpathy — Neural Networks: Zero to Hero (course home + prereqs) (S17, เข้าถึง 2026-07-23) — spine ของ​ทั้ง​คอร์ส; prereq bar (“solid programming (Python), intro-level math”) และ​เหตุผล​ว่า​ทำไม language model เป็น​ที่​เรียน deep learning ที่​ดี: “most of what you learn will be immediately transferable”
  • Karpathy — nn-zero-to-hero (repo + lecture notebooks) (S1, commit 73c3fcc741f0ec104ca850b1fb0df90e7e8d4cde, 2024-02-20; เข้าถึง 2026-07-23) — repo ที่​ยัง​มี​ชีวิต จึง​อ้าง​ด้วย commit SHA + วัน​ที่​ดึง ไม่ใช่​เลข​รุ่น (เส้น A)
  • Goodfellow, Bengio, Courville — Deep Learning (MIT Press, 2016) (S8) — ตำรา​คณิต​ที่ “นิ่ง” ใช้​เป็น anchor เฉพาะ​คณิต​ที่​ไม่​เน่า และ​ติด​ป้าย “stale-on-modern-practice” ทุก​จุด​ที่​มัน​แตะ​ของ​หลัง​ปี 2016 (เส้น A/D)
  • Rumelhart, Hinton, Williams — Learning representations by back-propagating errors, Nature 323, 533–536 (1986) (S10) — เปเปอร์​ที่​ทำให้ backprop เป็น​ที่​นิยม (ไม่ใช่​คน​คิด reverse-mode autodiff คน​แรก)

เช็กความเข้าใจ — บทที่ 1

ข้อ 1 / 3

อะไรคือเส้นแบ่งหลัก (spine) ที่ทำให้คอร์ส #20 นี้ต่างจากคอร์ส #15–#18?