- คอร์สที่สอนโดย Andrej Karpathy โดยตรง เป็นกระบวนการเรียนรู้ผ่านการ ลงมือสร้างโครงข่ายประสาทตั้งแต่ต้นด้วยโค้ด
- เริ่มจากพื้นฐานของ backpropagation แล้วค่อย ๆ สร้างต่อยอดไปจนถึง โมเดลดีพเลิร์นนิงสมัยใหม่ระดับ GPT
- เรียนโดยมี language model เป็นแกนหลัก พร้อมฝึกใช้เทคโนโลยีสำคัญอย่าง PyTorch, torch.Tensor, BatchNorm, WaveNet, GPT tokenizer
- แต่ละบทเรียนออกแบบโดยเน้นกระบวนการพัฒนาจริง เช่น การฝึกโมเดล การคำนวณ loss การปรับ hyperparameter และการวินิจฉัย overfitting
- เป็นหลักสูตรเชิงปฏิบัติที่ช่วยให้เข้าใจ กลไกการทำงานภายในของดีพเลิร์นนิงและสัญชาตญาณด้าน optimization อย่างเป็นระบบ
ภาพรวมคอร์ส
- คอร์สนี้ประกอบด้วยการเรียนรู้ผ่าน การสร้างโครงข่ายประสาทด้วยโค้ดด้วยตนเอง
- ต้องมีพื้นฐาน คณิตศาสตร์เบื้องต้น (อนุพันธ์, Gaussian) และ ทักษะการเขียนโปรแกรม Python
- มี ช่อง Discord สำหรับการแลกเปลี่ยนระหว่างผู้เรียน
- การเรียนจะดำเนินไปโดยมี language model เป็นศูนย์กลาง ซึ่งยังเป็นประโยชน์ต่อการถ่ายทอดความรู้ไปยังสาขาอื่นด้วย (เช่น computer vision)
โครงสร้างบทเรียน (Syllabus)
1. Intro to Neural Networks and Backpropagation (2h25m)
- สร้าง micrograd ด้วยตนเอง พร้อมอธิบาย กระบวนการ backpropagation และการฝึกโครงข่ายประสาท แบบเป็นขั้นตอน
- เข้าใจได้ด้วยเพียง ความรู้พื้นฐาน Python และ แคลคูลัสระดับมัธยมปลาย
2. Intro to Language Modeling: Building makemore (1h57m)
- สร้าง โมเดลภาษาแบบ bigram ระดับตัวอักษร
- ครอบคลุมวิธีใช้ torch.Tensor และแนวทางการคำนวณโครงข่ายประสาทอย่างมีประสิทธิภาพ
- รวมถึงกระบวนการ ฝึกโมเดล การสุ่มตัวอย่าง และการประเมิน loss (negative log likelihood)
3. Building makemore Part 2: MLP (1h15m)
- สร้างโมเดลภาษาระดับตัวอักษรบนพื้นฐาน multilayer perceptron (MLP)
- ครอบคลุมแนวคิดพื้นฐานของแมชชีนเลิร์นนิง เช่น การปรับ learning rate, hyperparameter, การแบ่งข้อมูล (train/dev/test), overfitting/underfitting
4. Building makemore Part 3: Activations & Gradients, BatchNorm (1h55m)
- วิเคราะห์ การทำงานภายในของ MLP หลายชั้น พร้อมตรวจสอบ คุณสมบัติทางสถิติของ activation และ gradient
- นำ Batch Normalization มาใช้เพื่อเพิ่มเสถียรภาพในการฝึก
- Residual connection และ Adam optimizer จะกล่าวถึงในวิดีโอถัดไป
5. Building makemore Part 4: Becoming a Backprop Ninja (1h55m)
- ทำ backpropagation แบบแมนนวลโดยไม่ใช้ PyTorch autograd
- ทำ backpropagation ด้วยตนเองสำหรับ cross-entropy loss, tanh, BatchNorm, embedding table เป็นต้น
- เสริมความเข้าใจเรื่อง การไหลของ gradient และสัญชาตญาณด้าน optimization ในระดับ tensor
6. Building makemore Part 5: Building a WaveNet (56m)
- ขยาย MLP สองชั้น จากก่อนหน้าเพื่อสร้าง สถาปัตยกรรม CNN แบบลำดับชั้น ที่คล้าย WaveNet(2016)
- ฝึกปฏิบัติ หลักการทำงานภายในของ torch.nn และ เวิร์กโฟลว์การพัฒนาดีพเลิร์นนิง (การค้นเอกสาร การจัดการมิติของ tensor การรวมโค้ด ฯลฯ)
7. Let's Build GPT: From Scratch, in Code (1h56m)
- สร้าง โมเดล GPT ด้วยตนเอง โดยอิงตามงานวิจัย “Attention is All You Need” และสถาปัตยกรรม OpenAI GPT-2/3
- กล่าวถึงความเชื่อมโยงกับ ChatGPT และ GitHub Copilot
- ดำเนินต่อบนพื้นฐานของ autoregressive language modeling และ พื้นฐาน PyTorch nn ที่กล่าวถึงในบทเรียน makemore ก่อนหน้า
8. Let's Build the GPT Tokenizer (2h13m)
- สร้าง tokenizer ที่ใช้ในซีรีส์ GPT ตั้งแต่ต้น
- รวมถึงกระบวนการเรียนรู้บนพื้นฐาน Byte Pair Encoding(BPE)
- ลงมือสร้างฟังก์ชัน การแปลงสตริง↔โทเค็น (encode/decode) ด้วยตนเอง
- วิเคราะห์ผ่านตัวอย่างว่า สาเหตุส่วนหนึ่งของพฤติกรรมผิดปกติของ LLM อยู่ที่ขั้นตอน tokenization
- รวมถึงการอภิปรายเกี่ยวกับ ความเป็นไปได้ในการเลิกใช้ tokenizer
สถานะการดำเนินคอร์ส
- คอร์สยังอยู่ในสถานะ กำลังดำเนินอยู่ (ongoing) และจะมีการอัปโหลดวิดีโอเพิ่มเติมอย่างต่อเนื่อง
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ก่อนหน้านี้ก็เคยผ่านทั้งหนังสือเกี่ยวกับ deep learning, คอร์ส Coursera, วิชาในมหาวิทยาลัย, คอร์ส fast.ai และสื่ออื่น ๆ มาแล้ว แต่แทบไม่ได้นำไปใช้ในงานจริง
แต่ซีรีส์นี้เป็นคอนเทนต์ที่ช่วยสร้างความเข้าใจเชิงสัญชาตญาณได้ดีที่สุดเท่าที่เคยดูมา แทบไม่มีเนื้อหาส่วนเกินและไม่ชวนเบื่อ
ตอนนี้ถ้ามีใครอยากเรียนรู้หลักการระดับล่างของ DNN ฉันจะแนะนำสิ่งนี้เป็นอย่างแรก
ถ้าเป็นคนที่มาจากสายใกล้เคียงกันอาจรู้สึกว่าช้าไปนิด แต่ก็ยังน่าสนใจเสมอ
ฉันกำลังวิจัยการทำโมเดลข้อมูลเชิงเวลาและพื้นที่เพื่อสร้างโมเดลพยากรณ์ระบบคมนาคมในเมือง และกำลังสร้าง ML infrastructure เอง รวมถึงเตรียมแอปที่จะ deploy สิ่งนี้กับสตรีมเหตุการณ์การจราจรจริง
ฉันเรียนออนไลน์จาก Deeplearning.ai และ skills.google โดยอันแรกให้ความรู้สึกค่อนข้างเก่าไปหน่อย ส่วนอันหลังครอบคลุมความรู้เชิงปฏิบัติอย่างการปรับแต่ง GPU·TPU ได้ดี
แต่สิ่งที่ทำให้ฉันกลายเป็นคนทำงานจริงได้คือหนังสือ 『Deep Learning with Python』 ของผู้สร้าง Keras อย่าง Francois Chollet หนังสือเล่มนี้อธิบายแนวคิดได้ชัดเจนโดยมีประวัติศาสตร์ 70 ปีของ deep learning เป็นฉากหลัง และยังมีสูตรสำหรับลงมือสร้างทั้ง GPT และ diffusion model ด้วยตัวเอง
บทเรียนสำคัญคือ “deep learning เป็นศิลปะมากกว่าวิทยาศาสตร์” ต้องฝึกเยอะ และไม่อาจอธิบายผลลัพธ์ได้อย่างสมบูรณ์
ในหนังสือยังมี notebook ตัวอย่างของ TensorFlow, PyTorch, Jax ด้วย ทุกวันนี้ฉันเลยมั่นใจพอที่จะทำซ้ำจากบทคัดย่อของงานวิจัยและ deploy โมเดลขึ้น production ได้
ถ้าดูเนื้อหานี้ทั้งหมด จะไปถึงระดับไหนได้บ้าง?
จะถึงขั้นสร้างอะไรเองหรือร่วมวงสนทนาได้ไหม? หรือแค่เข้าใจแนวคิดอย่างเดียว?
ฉันสงสัยว่ามีข้อจำกัดและความแตกต่างอะไรจากนักวิจัยบ้าง
ฉันกำลังเรียน Deep RL Course อยู่ และจนถึงตอนนี้ก็ถือว่าค่อนข้างเข้าใจง่าย แต่อาจจะลำบากหน่อยตอนเจอส่วนที่เป็นคณิตศาสตร์
ถึงอย่างนั้นก็ยังพอเข้าใจกระบวนการทำ backprop และการ implement tiny GPT ได้ คอร์สของ Karpathy โดดเด่นมากในแง่การทำให้เข้าใจหลักการพื้นฐาน
แต่แทบไม่มีการฝึกใช้ไลบรารีเลย ดังนั้นคอร์สที่คุณพูดถึงอาจเหมาะกับงานจริงมากกว่า
ระบบตรวจคำตอบอัตโนมัติแข็งทื่อเกินไป จนต้องเขียนประโยคฝืน ๆ เพื่อให้คำตอบผ่าน ทำให้ประสิทธิภาพการเรียนลดลงและเสียเวลา
ในทางกลับกัน วิดีโอของ Karpathy เป็นของดีระดับอัญมณีจริง ๆ
ดังนั้นการเรียนนี้อาจไม่ได้แปลว่าจะต่อยอดเป็นทักษะเชิงปฏิบัติได้โดยตรง
แต่ฉันขอแนะนำวิดีโออีกตัวของ Karpathy คือ Deep Dive into LLMs like ChatGPT
Neural Network from Scratch in Python (NumPy)
No local GPU? No problem – running Karpathy’s NanoGPT on Modal.com
Modal.com and NanoGPT continued – producing output using Tiktoken for bigger tokens
ถ้ากลไกพื้นฐานของ neural network ยังยากอยู่ แนะนำให้ดูกว้าง ๆ ไปก่อนแล้วค่อยกลับมาดูใหม่ทีหลัง รอบที่สองจะเข้าใจดีขึ้นมาก
วิดีโอนี้อธิบายหลักการของ autograd ซึ่งก็คือวิธีที่ PyTorch คำนวณอนุพันธ์อัตโนมัติภายใน
ในอดีต TensorFlow หรือ Torch ต้องนิยามฟังก์ชันอนุพันธ์ของแต่ละเลเยอร์เอง แต่ PyTorch จะบันทึกโค้ด Python ระหว่างรันแล้วสร้างกราฟและคำนวณอนุพันธ์ให้อัตโนมัติ
ถ้าเข้าใจสิ่งนี้ก็จะรู้ว่า PyTorch ทำงานภายในอย่างไร
แต่ผู้ใช้ส่วนใหญ่ก็สามารถใช้โมเดลได้ดีโดยไม่จำเป็นต้องรู้รายละเอียดภายในเหล่านั้น
ถ้าเป็นมือใหม่จริง ๆ ฉันแนะนำคอร์ส Coursera ของ Andrew Ng ชื่อ Introduction to ML ไม่แน่ใจว่าเวอร์ชันล่าสุดเป็นอย่างไร แต่เขาเป็นผู้สอนที่ยอดเยี่ยม
cs231n เป็นหนึ่งในคลาสที่ดีที่สุดเท่าที่เคยเรียนมา แต่คอร์สนี้ดูเหมือนจะมีส่วนที่ซ้ำกันเยอะ เลยยังผัดไว้ก่อน น่าจะเพิ่มส่วนของ transformer เข้ามา
มันช่วยให้เข้าใจแบบเป็นธรรมชาติว่าทำไม gradient descent และ normalization ถึงได้ผล และลงลึกไปถึงพลวัตของการฝึก
ทำให้พัฒนาสัญชาตญาณในการ判断ว่าโมเดลกำลังเรียนรู้ได้ดีหรือไม่