6 คะแนน โดย GN⁺ 2023-11-20 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น สื่อการสอน Deep Learning แบบเปิด ที่จัดทำไว้สำหรับวิชา 14x050 ของมหาวิทยาลัยเจนีวา โดยสามารถดูสไลด์ แฮนด์เอาต์ และวิดีโอบันทึกของ François Fleuret ได้ในที่เดียว
  • อ้างอิงตัวอย่าง PyTorch ครอบคลุมตั้งแต่การคำนวณเทนเซอร์, automatic differentiation, gradient descent ไปจนถึงโมเดลเชิงกำเนิด โมเดลแบบวนซ้ำ และโมเดล attention ในขอบเขตที่กว้างพอสำหรับผู้เริ่มต้นติดตามได้
  • ไฟล์ PDF archive ทั้งหมดมีขนาด 1,107 สไลด์ และคำบรรยาย screencast มีให้เป็นไฟล์ ZIP ที่สร้างอัตโนมัติด้วย OpenAI Whisper
  • มี Practical 1~6, โค้ดเฉลย และ Python prologue กลาง ให้ใช้งานตัวเลือกการโหลดและ preprocessing ของ MNIST/CIFAR10 ในการฝึกปฏิบัติได้ทันที
  • ต้องมีพื้นฐาน linear algebra, differential calculus, Python, probability/statistics, optimization, algorithms และ signal processing โดยสื่อเผยแพร่ภายใต้เงื่อนไข CC BY-NC-SA 4.0

ภาพรวมคอร์ส

  • Deep Learning Course เป็นหน้าที่รวบรวมสไลด์และสื่อบันทึกของ คอร์ส Deep Learning 14x050 ของมหาวิทยาลัยเจนีวา โดย François Fleuret
  • จัดเป็นคอร์ส แนะนำ Deep Learning ที่มีตัวอย่างโดยใช้เฟรมเวิร์ก PyTorch
  • ขอบเขตของคอร์สเรียงต่อกันตามแกนต่อไปนี้
    • เป้าหมายและโจทย์สำคัญของ machine learning
    • การคำนวณเทนเซอร์
    • automatic differentiation และ gradient descent
    • เทคนิคเฉพาะสำหรับ deep learning
    • โมเดลเชิงกำเนิด, โมเดลแบบวนซ้ำ, โมเดล attention
  • ยังมีสื่อแยกคือ "The Little Book of Deep Learning"
    • เป็นหนังสือแนะนำ Deep Learning ฉบับสั้นในรูปแบบสำหรับอ่านบนมือถือ สำหรับผู้อ่านที่มีพื้นฐาน STEM
  • คอร์สนี้พัฒนาขึ้นครั้งแรกที่ Idiap Research Institute ในปี 2018 และสอนที่ École Polytechnique Fédérale de Lausanne ในชื่อ EE-559 จนถึงปี 2022

รูปแบบสื่อและการดาวน์โหลด

  • สไลด์ PDF สำหรับบรรยายใช้แนวนอนและ overlay ให้เหมาะกับการนำเสนอ
  • แฮนด์เอาต์ PDF คอมไพล์เป็นแนวตั้ง และมีโน้ตเพิ่มเติมโดยไม่มีเอฟเฟกต์ overlay
  • Screencast สามารถรับชมได้ผ่านการสตรีมในเบราว์เซอร์และไฟล์ mp4 ที่ดาวน์โหลดได้
  • PDF archive ทั้งหมดดาวน์โหลดได้จากไฟล์ต่อไปนี้
  • คำบรรยาย screencast สร้างอัตโนมัติด้วย Whisper ของ OpenAI และไฟล์ dlc-video-subtitles.zip มีขนาด 502.1Kb

ลำดับเนื้อหา 13 หน่วย

  • สื่อการสอนทั้งหมดประกอบด้วย 13 หน่วยใหญ่ โดยแต่ละหน่วยมีจำนวนสไลด์และเวลาในวิดีโอประกอบ
  • ช่วงต้นเน้นการปูแนวคิดพื้นฐานของ deep learning และ machine learning
    • Introduction: จาก neural network สู่ deep learning, แอปพลิเคชันปัจจุบันและกรณีความสำเร็จ, พื้นฐานเทนเซอร์และ linear regression, เทนเซอร์มิติสูง, โครงสร้างภายในของเทนเซอร์
    • Machine learning fundamentals: loss และ risk, overfitting และ underfitting, ปัญหา bias-variance, evaluation protocol, clustering และ embedding
    • Multi-layer perceptron and back-propagation: perceptron, มุมมองเชิงความน่าจะเป็นของ linear classifier, linear separability, MLP, gradient descent, backpropagation
  • ช่วงกลางขยับไปสู่การใช้งาน PyTorch รวมถึง layer และเทคนิคการเรียนรู้ของ deep learning
    • Graphs of operators, autograd, and convolutional layers: เครือข่าย DAG, Autograd, โมดูล PyTorch และ batch processing, convolution, pooling, การเขียนโมดูล PyTorch
    • Initialization and optimization: cross-entropy loss, stochastic gradient descent, PyTorch optimizer, penalty แบบ L2/L1, parameter initialization, การเลือกสถาปัตยกรรมและ training protocol, การเขียนฟังก์ชัน Autograd
    • Going deeper: ข้อดีของความลึก, Rectifier, Dropout, Batch Normalization, Residual Network, การใช้ GPU
  • ช่วงท้ายขยายไปสู่โมเดลเชิงกำเนิด, computer vision, การวิเคราะห์ภายในโมเดล และ sequence model
    • Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
      • screencast ของ VAE ไม่ใช่เวอร์ชันล่าสุด จึงควรตรวจสอบสไลด์
    • Computer vision: งานด้าน computer vision, เครือข่ายจำแนกรูปภาพ, เครือข่ายตรวจจับวัตถุ, เครือข่าย semantic segmentation, DataLoader และ neuro-surgery
    • Under the hood: การดูพารามิเตอร์, การดู activation, การแสดงภาพการประมวลผลจากอินพุต, input optimization
    • Autoregression and Normalizing Flows: autoregression, Causal convolution, Non-volume preserving network
    • Generative Adversarial Networks: GAN, Wasserstein GAN, Conditional GAN และการแปลงภาพ, model persistence และ checkpoint
    • Recurrent models and NLP: RNN, LSTM และ GRU, word embedding และการแปลภาษา
    • Attention models: attention สำหรับหน่วยความจำและการแปล sequence, กลไก attention, Transformer Network
      • screencast ของหน่วย attention ไม่ใช่เวอร์ชันล่าสุด จึงควรตรวจสอบสไลด์

สื่อฝึกปฏิบัติและ Python prologue

  • แบบฝึกปฏิบัติมีให้เป็น Practical 1~6 โดยแต่ละชุดลิงก์ไปยัง PDF และโค้ดเฉลย
  • Python prologue สำหรับฝึกปฏิบัติมีให้ที่ dlc_practical_prologue.py
  • prologue จัดการอาร์กิวเมนต์ command line
    • --full: ใช้ dataset ทั้งหมด
    • --tiny: ใช้ dataset ขนาดเล็กมากเพื่อการตรวจสอบอย่างรวดเร็ว
    • --seed SEED: กำหนด random seed หากต่ำกว่า 0 จะไม่ทำ seeding
    • --cifar: ใช้ dataset CIFAR แทน MNIST
    • --data_dir DATA_DIR: กำหนดตำแหน่งข้อมูล PyTorch ค่าเริ่มต้นคือ $PYTORCH_DATA_DIR หรือ ./data
  • ฟังก์ชัน load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True) จะดาวน์โหลดข้อมูลเมื่อจำเป็น และหาก flatten เป็นจริง จะแปลงภาพเป็นเวกเตอร์ 1 มิติ
  • ค่าที่คืนกลับคือเทนเซอร์สี่ตัว ได้แก่ train_data, train_target, test_data, test_target
  • หาก cifar=True จะใช้ CIFAR10, หากเป็น False จะใช้ MNIST และหากเป็น None จะอิงตามอาร์กิวเมนต์ --cifar
  • หาก one_hot_labels=True จะเปลี่ยน target เป็น torch.Tensor แบบ 2D ที่มีจำนวนคอลัมน์เท่ากับจำนวนคลาส โดยตั้งเฉพาะตำแหน่งคำตอบเป็น 1 และตำแหน่งอื่นเป็น -1
  • หาก normalize=True จะ normalize เทนเซอร์ข้อมูลโดยอิงค่าเฉลี่ยและความแปรปรวนของ training data
  • หาก flatten=True ข้อมูลจะเป็นเทนเซอร์ 2D รูปแบบ N × D และหากเป็นเท็จจะเป็นเทนเซอร์ 4D รูปแบบ N × C × H × W
  • ตัวอย่างพื้นฐานใช้ MNIST และหากไม่มี --full จะลดขนาดเหลือ training 1,000 ตัวอย่างและ test 1,000 ตัวอย่าง โดย input size คือ torch.Size([1000, 784])

ความรู้พื้นฐานที่ต้องมีและเอกสารอ้างอิง

  • ความรู้พื้นฐานที่ต้องมีครอบคลุมหัวข้อต่อไปนี้
    • linear algebra: vector, matrix, Euclidean space
    • differential calculus: Jacobian, Hessian, Chain rule
    • การเขียนโปรแกรม Python
    • พื้นฐาน probability และ statistics: การแจกแจงแบบไม่ต่อเนื่องและต่อเนื่อง, law of large numbers, conditional probability, Bayes, PCA
    • พื้นฐาน optimization: แนวคิดเรื่อง minimum, gradient descent
    • พื้นฐาน algorithms: computational cost
    • พื้นฐาน signal processing: Fourier transform, wavelet
  • สามารถดูเอกสาร Python, Jupyter notebook และ PyTorch เป็นเอกสารอ้างอิงได้

ไลเซนส์การใช้งาน

  • สื่อของหน้าเว็บนี้เผยแพร่ภายใต้ Creative Commons BY-NC-SA 4.0 International License
  • ระบุเงื่อนไขว่าอนุญาตให้ใช้เพื่อวัตถุประสงค์ทางการศึกษาทางวิชาการตามปกติ แต่จะไม่ใช้กับหนังสือ, YouTube ที่มีโฆษณาจำนวนมาก หรือโมเดลหารายได้อื่น ๆ

2 ความคิดเห็น

 
bigtallee 2023-11-20

น่าเสียดายที่ไม่มีซับไตเติลในบทเรียน..

 
GN⁺ 2023-11-20
ความคิดเห็นจาก Hacker News
  • ช่อง YouTube ของ Stanford ก็น่าดูเช่นกัน มีอัปโหลดซีรีส์บรรยายแมชชีนเลิร์นนิงทั้งชุดไว้ 19 วิดีโอ
    https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
    ถ้าเข้าไปดูในช่องจะพบว่ามีวิชาวิทยาการคอมพิวเตอร์อัปโหลดไว้อีกค่อนข้างมาก และคุณภาพก็ดีด้วย

    • คอร์ส Stanford นี้ดูเป็นหลักสูตรระดับสูงและเข้มข้นพอสมควร
  • มีแหล่งข้อมูลดี ๆ ถูกแชร์ไว้เยอะ แต่เหมือนรายการนี้จะขาด Understanding Deep Learning ไป
    ผมคิดว่า Simon J.D. Prince ทำงานได้ยอดเยี่ยมมากกับหนังสือเล่มนี้ ไม่ใช่แค่เนื้อหาหลักเท่านั้น แต่โน้ตท้ายแต่ละบทยังพาไปสู่เอกสารอ้างอิงขั้นสูงได้ทันที อีกทั้งยังมีแบบฝึกหัดที่ทดสอบความเข้าใจได้จริง และโน้ตบุ๊กชั้นเยี่ยมที่นำแนวคิดไปลงมือเขียนโค้ดจริงให้ดู
    ถ้าจะสอนวิชาดีปเลิร์นนิง นี่ก็เหมาะมากในฐานะแบบฝึกหัดฟรีสำหรับให้นักศึกษา แต่ชุมชนนี้อาจไม่ใช่กลุ่มเป้าหมายหลักของมัน
    [0] https://udlbook.github.io/udlbook/

  • ถ้าสนใจคอร์สนี้ ก็ควรลองดู Little Book of Deep Learning ของผู้เขียนคนเดียวกันด้วย
    https://fleuret.org/francois/lbdl.html

  • อีกแหล่งหนึ่งที่ดีคือ คอร์สดีปเลิร์นนิงของ NYU โดย Yann LeCun และ Alfredo Canziani และสามารถดูครบทั้งชุดได้บน YouTube
    https://atcold.github.io/NYU-DLSP20/
    https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq

  • Practical Deep Learning for Coders ก็น่าสนใจเช่นกัน
    https://course.fast.ai/

    • ตกใจมากที่ Jeremy Howard ไม่ได้อยู่ในรายชื่อ AI ระดับท็อป 100 คอร์สนี้ยอดเยี่ยมจริง ๆ
  • มีคอร์สเชิงลึกดี ๆ ที่ไม่จำเป็นต้องดูวิดีโอบ้างไหม?

    • https://www.deeplearningbook.org/ , เวอร์ชัน PDF: https://github.com/janishar/mit-deep-learning-book-pdf
    • https://d2l.ai/
    • มีเอกสารคอร์สและสไลด์ให้ ไม่ใช่แค่ bullet สรุปสั้น ๆ ที่ผู้สอนต้องมาอธิบายเติมด้วยปาก แต่ตัวเอกสารเองก็สมบูรณ์ในตัวอยู่แล้ว
    • https://arthurdouillard.com/deepcourse/
    • อย่างที่หลายคนบอก Deep Learning Book เป็นตัวเลือกที่ดี
      ผมกำลังทำคอร์สที่ลดทฤษฎีลงเล็กน้อยและเพิ่มภาคปฏิบัติมากขึ้น: https://github.com/VikParuchuri/zero_to_gpt
      วิดีโอทั้งหมดเป็นทางเลือก และครอบคลุมเนื้อหาเดียวกับข้อความ
  • ขอแนะนำชุดคอร์สนี้ของ Andrej Karpathy ด้วย คอร์สแรกค่อนข้างเข้าถึงง่ายแม้มองจากมุมของมือใหม่
    https://karpathy.ai/zero-to-hero.html

    • จะเหมาะกับคนที่พื้นฐานคณิตศาสตร์ขั้นสูงยังไม่แน่นด้วยไหม?
  • คอร์สนี้ของ Sebastian Raschka ก็เข้าถึงง่ายโดยรวม ถ้าพอรู้ Python หรือภาษาใกล้เคียงอยู่บ้างก็เรียนตามได้
    https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY

  • ในฐานะฟูลสแตกดีเวลอปเปอร์ที่ผ่านมาหลายปีแล้วและฝีมือเริ่มทื่อ ๆ ไปบ้าง ผมอยากลองเข้าสายนี้ดู แต่กะไม่ออกเลยว่าถ้าเรียน 6 เดือนจะพอให้เริ่มเข้าไปได้ในระดับหนึ่งไหม

    • ถ้ายังจำได้ว่าอนุพันธ์คืออะไร และพอมีพื้นฐานคณิตศาสตร์กับความน่าจะเป็นอยู่บ้าง ก็เป็นไปได้แน่นอน ผมว่าหลายอย่างเรียนง่ายกว่า React เสียอีก
      ความชันตอนเริ่มต้นอาจไม่สูงเท่า แต่เวลารวมอาจนานกว่า จึงใกล้เคียงกับมาราธอนมากกว่าวิ่งระยะสั้น