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

สมการเชิงอนุพันธ์: ตั้งแต่พื้นฐานถึงการประยุกต์ใช้กับ ML

บทนำเชิงปฏิบัติสู่สมการเชิงอนุพันธ์ ครอบคลุมชนิดหลัก การจัดประเภท วิธีแก้เชิงวิเคราะห์และเชิงตัวเลข และบทบาทจริงในเกรเดียนต์ดีเซนต์ รีเกรสชัน และการสร้างแบบจำลองอนุกรมเวลา
อัปเดตแล้ว 4 พ.ค. 2569  · 14 นาที อ่าน

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

สมการเชิงอนุพันธ์ช่วยให้จำลองว่าอะไรบางอย่าง เปลี่ยนไปตามเวลา อย่างไร — ซึ่งตรงกับสิ่งที่ดาต้าไซเอนซ์ทำ เมื่อเข้าใจแนวคิดแกนกลางแล้ว จะเริ่มเห็นมันทุกที่: ในฟังก์ชันสูญเสียที่ทำให้ต่ำสุด ซีรีส์เวลา (time series) ที่พยากรณ์ และการจำลองที่รัน

บทความนี้จะพาไปรู้จักว่าสมการเชิงอนุพันธ์คืออะไร ชนิดหลักๆ ที่พบบ่อย วิธีการแก้ และที่สำคัญที่สุด — มันปรากฏในงานดาต้าไซเอนซ์และแมชชีนเลิร์นนิงจริงในแต่ละวันอย่างไร

สมการเชิงอนุพันธ์คืออะไร?

สมการเชิงอนุพันธ์คือสมการที่สัมพันธ์ฟังก์ชันหนึ่งเข้ากับอนุพันธ์ของตัวมันเอง

พูดง่ายๆ อนุพันธ์บอกว่าอะไรบางอย่างกำลังเปลี่ยนเร็วแค่ไหน ณ ชั่วขณะหนึ่ง สมการเชิงอนุพันธ์บอกว่าอัตราการเปลี่ยนแปลงของปริมาณหนึ่งขึ้นอยู่กับตัวปริมาณนั้นเอง หรือขึ้นอยู่กับเวลา หรือทั้งสองอย่าง

สมมติจะจำลองจำนวนประชากรแบคทีเรีย ยิ่งมีแบคทีเรียมาก ก็ยิ่งขยายพันธุ์เร็ว อัตราการเติบโตจึงขึ้นอยู่กับขนาดประชากรปัจจุบัน เขียนเป็นสมการก็จะได้สมการเชิงอนุพันธ์

ในรูปแบบทางการ จะมีหน้าตาแบบนี้:

Differential equation representation

ตัวอย่างการเขียนสมการเชิงอนุพันธ์

โดยที่ P คือประชากร t คือเวลา และ r คืออัตราการเติบโต ด้านซ้ายคืออนุพันธ์ — ความเร็วที่ P เปลี่ยนไปตามเวลา ด้านขวาบอกว่าการเปลี่ยนแปลงแปรผันตาม P เอง

นี่คือแนวคิดแกนกลางของสมการเชิงอนุพันธ์ทั้งหมดที่พบเห็น

สมการเชิงอนุพันธ์พบได้ในฟิสิกส์ ชีววิทยา และวิศวกรรม — ทุกที่ที่ระบบเปลี่ยนแปลงตามเวลา การแพร่กระจายของความร้อนในแท่งโลหะ ลูกตุ้มที่แกว่ง การแพร่ระบาดของไวรัสในประชากร ทั้งหมดนี้จำลองด้วยสมการเชิงอนุพันธ์

สำหรับดาต้าไซเอนติสต์ จะพบสมการเชิงอนุพันธ์ในฟังก์ชันสูญเสีย เกรเดียนต์ดีเซนต์ แบบจำลองซีรีส์เวลา neural ODE — ทั้งหมดนี้มีสมการเชิงอนุพันธ์อยู่เบื้องหลัง อาจไม่ปรากฏให้เห็นชัด แต่มีอยู่แน่นอน

เมื่อเข้าใจแล้ว แบบจำลองทางความคิดเกี่ยวกับเหตุและผลของเครื่องมือที่ใช้ทุกวันจะชัดเจนยิ่งขึ้น

ประวัติของสมการเชิงอนุพันธ์

ปลายศตวรรษที่ 17 ไอแซก นิวตัน และกอทท์ฟรีด วิลเฮล์ม ไลบ์นิซ พัฒนาแคลคูลัสอย่างอิสระต่อกัน ทั้งสองต้องการวิธีอธิบายว่า ปริมาณทางกายภาพเปลี่ยนไปตามเวลาอย่างไร และได้สมการเชิงอนุพันธ์เป็นผลลัพธ์ นิวตันใช้จำลองการเคลื่อนที่และแรงโน้มถ่วง ไลบ์นิซให้สัญลักษณ์ที่ยังใช้กันจนวันนี้ รวมถึง d/dt ที่เห็นในตำราแคลคูลัสทุกเล่ม

differential equations what are they

ศตวรรษที่ 18 และ 19 นำมาซึ่งเทคนิคใหม่ๆ จำนวนมาก

เลออนฮาร์ด ออยเลอร์ พัฒนาวิธีแก้ ODE แบบเชิงตัวเลข — คือออยเลอร์คนเดียวกับ “วิธีของออยเลอร์” ที่จะเห็นต่อไป โจแซฟ-หลุยส์ ลากร็องจ์ และปิแยร์-ซีมง ลาปลาซ ขยายทฤษฎีไปสู่ระบบที่ซับซ้อนยิ่งขึ้น ฌ็อง-บาติสต์ โจแซฟ ฟูริเยร์ แนะนำการแยกฟังก์ชันเป็นองค์ประกอบไซน์และโคไซน์ ซึ่งกลายเป็นรากฐานของการแก้สมการเชิงอนุพันธ์ย่อย (PDE)

เข้าสู่ศตวรรษที่ 20 สมการเชิงอนุพันธ์พบได้ทั่วไปตั้งแต่พลศาสตร์ของไหล กลศาสตร์ควอนตัม ไปจนถึงวิศวกรรมไฟฟ้า สมการโลกจริงจำนวนมากไม่มีวิธีแก้เชิงวิเคราะห์ที่สะอาดชัดเจน วิธีเชิงตัวเลขจึงเข้ามามีบทบาท และคอมพิวเตอร์ทำให้ใช้งานได้ในสเกลใหญ่

ปัจจุบันสาขานี้ยังพัฒนาอย่างต่อเนื่อง Neural ordinary differential equations (Neural ODEs) มองเลเยอร์ของโครงข่ายประสาทเป็นกระบวนการต่อเนื่องที่อธิบายด้วยสมการเชิงอนุพันธ์ เป็นความก้าวหน้าล่าสุดที่เบลอเส้นแบ่งระหว่างดีปเลิร์นนิงกับคณิตศาสตร์คลาสสิก และเป็นหนึ่งในหัวข้อที่น่าตื่นเต้นในงานวิจัย ML สมัยใหม่

กระนั้น แนวคิดแกนกลางยังเหมือนเดิม: จำลองว่าของเปลี่ยนอย่างไร แล้วจะทำนายได้ว่ามันกำลังไปทางไหน

ชนิดของสมการเชิงอนุพันธ์

สมการเชิงอนุพันธ์ไม่ได้เหมือนกันทั้งหมด สิ่งแรกที่ต้องรู้คือจะแยกแยะอย่างไร

การแบ่งหลักคือระหว่างสมการเชิงอนุพันธ์สามัญ (ODE) และสมการเชิงอนุพันธ์ย่อย (PDE) ความแตกต่างอยู่ที่จำนวนตัวแปรอิสระที่ฟังก์ชันขึ้นอยู่ด้วย

สมการเชิงอนุพันธ์สามัญ (ODE)

สมการเชิงอนุพันธ์สามัญเกี่ยวข้องกับฟังก์ชันของตัวแปรอิสระเพียงตัวเดียวและอนุพันธ์ของมัน

ตัวอย่างประชากรแบคทีเรียก่อนหน้าคือ ODE ประชากร P ขึ้นอยู่กับเวลา t เพียงตัวแปรเดียว ดังนั้นสมการจึงมีอนุพันธ์สามัญ เขียนเป็น dP/dt

ODE เหมาะเมื่อระบบของเปลี่ยนไปตามมิติเดียว โดยมากคือเวลา ตัวอย่างคลาสสิก:

  • การเติบโตของประชากร — อัตราการเปลี่ยนแปลงของประชากรขึ้นอยู่กับขนาดประชากรปัจจุบัน
  • การสลายกัมมันตรังสี — อัตราการสลายของสารขึ้นอยู่กับปริมาณที่เหลืออยู่
  • กฎข้อที่สองของนิวตัน — ความเร่งของวัตถุขึ้นอยู่กับแรงที่กระทำต่อมัน

ในแต่ละกรณี มีตัวแปรตัวเดียวที่ขับเคลื่อนการเปลี่ยนแปลง นั่นคือเหตุผลที่เรียกว่า “สามัญ”

สมการเชิงอนุพันธ์ย่อย (PDE)

สมการเชิงอนุพันธ์ย่อยเกี่ยวข้องกับฟังก์ชันของตัวแปรอิสระหลายตัวและอนุพันธ์ย่อยของมัน

สมมติอยากจำลองการแพร่กระจายของความร้อนในแท่งโลหะ อุณหภูมิ ณ จุดใดขึ้นอยู่ทั้งกับตำแหน่งตามความยาวแท่งและเวลา นั่นคือตัวแปรอิสระสองตัว: ตำแหน่ง x และเวลา t เมื่อเขียนสมการ จะได้อนุพันธ์ย่อย — ตัวหนึ่งตาม x และอีกตัวตาม t

นั่นคือ PDE สมการความร้อนเป็นตัวอย่างที่รู้จักกันดี:

Partial differential equation example

ตัวอย่างสมการเชิงอนุพันธ์ย่อย

โดยที่ u(x, t) คืออุณหภูมิที่ตำแหน่ง x และเวลา t, α คือสัมประสิทธิ์การแพร่ความร้อนของวัสดุ, ∂u/∂t คืออัตราการเปลี่ยนของอุณหภูมิตามเวลา และ ∂²u/∂x² คือความโค้งของโปรไฟล์อุณหภูมิในเชิงพื้นที่ สมการบอกว่าจุดที่เส้นโค้งอุณหภูมิโค้งมาก ความร้อนจะกระจายตัวเร็ว จุดที่ราบเรียบ การเปลี่ยนแปลงจะน้อย

PDE ปรากฏในทุกที่ที่ระบบแปรผันทั้งตามพื้นที่และเวลา:

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

PDE แก้ยากกว่า ODE วิธีเชิงวิเคราะห์มีเฉพาะบางรูปแบบ และวิธีเชิงตัวเลขมักเป็นหนทางปฏิบัติที่ใช้ได้จริง

ในงานดาต้าไซเอนซ์ส่วนใหญ่ จะเจอ ODE บ่อยกว่า แต่ PDE ก็พบในงานประมวลผลภาพ การจำลองทางฟิสิกส์ และสถาปัตยกรรมดีปเลิร์นนิงบางประเภท จึงควรรู้ความแตกต่างไว้

อันดับ (Order) และดีกรี (Degree) ของสมการเชิงอนุพันธ์

สมการเชิงอนุพันธ์แต่ละสมการมีสองคุณสมบัติที่บอกระดับความซับซ้อน: อันดับและดีกรี

สองอย่างนี้กำหนดว่าวิธีแก้ใดใช้ได้ จึงควรระบุก่อนลงมือแก้

ทำความเข้าใจ “อันดับ”

อันดับของสมการเชิงอนุพันธ์คืออันดับของอนุพันธ์ที่มีลำดับสูงสุดในสมการนั้น

ถ้าอนุพันธ์สูงสุดเป็นอนุพันธ์อันดับหนึ่ง (dy/dx) ก็เป็นสมการอันดับหนึ่ง ถ้าอนุพันธ์สูงสุดเป็นอนุพันธ์อันดับสอง (d²y/dx²) ก็เป็นสมการอันดับสอง และต่อไปเรื่อยๆ

นี่คือสมการการเติบโตของแบคทีเรียจากก่อนหน้า:

Bacteria growth equation

สมการการเติบโตของแบคทีเรีย

อนุพันธ์สูงสุดคือ dP/dt — อนุพันธ์อันดับหนึ่ง จึงเป็น ODE อันดับหนึ่ง

เปรียบเทียบกับสมการที่อธิบายลูกตุ้มที่แกว่ง:

Swinging pendulum equation

สมการลูกตุ้มที่แกว่ง

อนุพันธ์สูงสุดคือ d²θ/dt² — อนุพันธ์อันดับสอง จึงเป็น ODE อันดับสอง

อันดับที่สูงขึ้นหมายถึงความซับซ้อนมากขึ้น สมการอันดับสองต้องมีเงื่อนไขเริ่มต้นสองค่าแทนที่จะเป็นหนึ่ง ค่า ในทางปฏิบัติ ระบบทางกายภาพส่วนใหญ่ — การเคลื่อนที่เชิงกล วงจรไฟฟ้า กลศาสตร์วงโคจร — มักจำลองด้วยสมการอันดับสอง

ทำความเข้าใจ “ดีกรี”

ดีกรีของสมการเชิงอนุพันธ์คือกำลังของอนุพันธ์ที่มีอันดับสูงสุด เมื่อเขียนสมการอยู่ในรูปพหุนาม (ไม่มีรากที่สองหรือเศษส่วนที่เกี่ยวกับอนุพันธ์)

พิจารณาสมการนี้:

Sample differential equation

ตัวอย่างสมการเชิงอนุพันธ์

อนุพันธ์สูงสุดคือ dy/dx และถูกยกกำลัง 3 ดังนั้นอันดับคือ 1 และดีกรีคือ 3

ต่อไปดูสมการนี้:

Sample differential equation (2)

ตัวอย่างสมการเชิงอนุพันธ์ (2)

อนุพันธ์อันดับสูงสุดคือ d²y/dx² ที่มีกำลัง 1 ดีกรีจึงเป็น 1 แม้ว่าอนุพันธ์อันดับต่ำกว่าจะปรากฏด้วยกำลังที่สูงกว่า

ดีกรีจะอิงกับอนุพันธ์อันดับสูงสุดเสมอ ไม่ใช่กำลังสูงสุดในสมการ

กรณีขอบคือเมื่อสมการมีพจน์อย่าง sin(dy/dx) หรือ e^(d²y/dx²) ดีกรีจะไม่ถูกกำหนด — รูปเหล่านี้ไม่สามารถเขียนเป็นพหุนามของอนุพันธ์ได้

วิธีการแก้สมการเชิงอนุพันธ์

ไม่มีวิธีเดียวที่ใช้ได้กับสมการเชิงอนุพันธ์ทุกสมการ วิธีที่เหมาะขึ้นอยู่กับชนิด อันดับ และว่าสามารถหาวิธีแก้เชิงวิเคราะห์ได้หรือไม่

โดยกว้างๆ แบ่งเป็นสองกลุ่ม:วิธีเชิงวิเคราะห์ และวิธีเชิงตัวเลข

วิธีเชิงวิเคราะห์

วิธีเชิงวิเคราะห์ให้วิธีแก้แบบปิดรูปที่แน่นอน — สูตรที่คำนวณค่าได้ทุกจุด มักเลือกใช้เมื่อทำได้ เพราะผลลัพธ์แม่นยำและบอกโครงสร้างของวิธีแก้ได้

แต่ใช้ได้เฉพาะสมการบางรูปแบบ เมื่อสมการซับซ้อนเกินไป วิธีเชิงวิเคราะห์จะไปต่อไม่ได้

การแยกตัวแปร (Separation of variables)

ใช้ได้กับสมการที่สามารถแยกพจน์ทั้งหมดที่เกี่ยวกับy ไว้ด้านหนึ่ง และพจน์ที่เกี่ยวกับ x (หรือ t) ไว้อีกด้านหนึ่ง

พิจารณา ODE อันดับหนึ่งนี้:

Simple differential equation

สมการเชิงอนุพันธ์อย่างง่าย

ขั้นที่ 1 — แยกตัวแปร:

Analytical solution (step 1)

วิธีเชิงวิเคราะห์ (ขั้นที่ 1)

ขั้นที่ 2 — อินทิเกรตทั้งสองข้าง:

Analytical solution (step 2)

วิธีเชิงวิเคราะห์ (ขั้นที่ 2)

ขั้นที่ 3 — จัดรูปหาy:

Analytical solution (step 3)

วิธีเชิงวิเคราะห์ (ขั้นที่ 3)

โดยที่ A เป็นค่าคงที่กำหนดโดยเงื่อนไขตั้งต้น นี่คือวิธีแก้ทั่วไป

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

ตัวประกอบอินทิเกรต (Integrating factors)

ใช้กับ ODE อันดับหนึ่งเชิงเส้นในรูปแบบนี้:

Integrating factors example (1)

ตัวอย่างตัวประกอบอินทิเกรต (1)

แนวคิดคือคูณทั้งสองข้างด้วยฟังก์ชันที่เลือกอย่างเหมาะสม — ตัวประกอบอินทิเกรต μ(x) — เพื่อทำให้ฝั่งซ้ายกลายเป็นอนุพันธ์สมบูรณ์ที่อินทิเกรตได้โดยตรง

ตัวประกอบอินทิเกรตคือ:

Integrating factors example (2)

ตัวอย่างตัวประกอบอินทิเกรต (2)

หลังจากคูณ จะได้สมการ:

Integrating factors example (3)

ตัวอย่างตัวประกอบอินทิเกรต (3)

จากนั้นอินทิเกรตทั้งสองข้างและจัดรูปหา y ฝั่งซ้ายจะยุบตัวอย่างเป็นระเบียบเพราะเราเลือก μ(x) มาให้เป็นเช่นนั้น — นี่คือแก่นของวิธีนี้

วิธีเชิงตัวเลข

สมการเชิงอนุพันธ์โลกจริงส่วนใหญ่ไม่มีวิธีแก้เชิงวิเคราะห์ที่สวยงาม วิธีเชิงตัวเลขจะประมาณวิธีแก้ทีละขั้น โดยคำนวณค่าที่จุดไม่ต่อเนื่อง

เป็นการแลกความแม่นเป๊ะกับความทั่วไป ซึ่งในทางปฏิบัติมักเป็นสิ่งที่ต้องการ

วิธีของออยเลอร์ (Euler's method)

วิธีของออยเลอร์เป็นแนวทางเชิงตัวเลขที่ง่ายที่สุด เริ่มจากจุดที่ทราบ ใช้อนุพันธ์ประมาณความชัน ก้าวเล็กๆ ไปในทิศนั้น แล้วทำซ้ำ

ให้ ODE อันดับหนึ่ง dy/dx = f(x, y) พร้อมเงื่อนไขตั้งต้น y(x₀) = y₀ แต่ละก้าวคำนวณดังนี้:

Euler’s method example (1)

ตัวอย่างวิธีของออยเลอร์ (1)

โดยที่ h คือขนาดก้าว ก้าวเล็กลงแม่นยำขึ้น — แต่ต้องคำนวณมากขึ้น

นี่คือตัวอย่าง Python แก้ dy/dx = y ที่ y(0) = 1 (วิธีแก้จริงคือ y = eˣ):

import numpy as np
import matplotlib.pyplot as plt

def euler_method(f, x0, y0, h, n_steps):
    x = np.zeros(n_steps + 1)
    y = np.zeros(n_steps + 1)
    x[0], y[0] = x0, y0

    for i in range(n_steps):
        y[i+1] = y[i] + h * f(x[i], y[i])
        x[i+1] = x[i] + h

    return x, y

f = lambda x, y: y  # dy/dx = y

x_euler, y_euler = euler_method(f, x0=0, y0=1, h=0.2, n_steps=20)
x_exact = np.linspace(0, 4, 200)
y_exact = np.exp(x_exact)

Euler's method versus the exact solution

วิธีของออยเลอร์เทียบกับวิธีแก้จริง

ช่องว่างระหว่างสองเส้นคือความคลาดเคลื่อนจากการประมาณ ด้วย h=0.2 ความผิดพลาดจะน้อยในตอนแรกแต่สะสมต่อเนื่องในแต่ละก้าว — นี่คือจุดอ่อนหลักของวิธีออยเลอร์

วิธีรุนเก–คุตตา (Runge-Kutta)

วิธีรุนเก–คุตตาช่วยลดปัญหาความผิดพลาดที่สะสม โดยสุ่มตัวอย่างความชันหลายจุดในแต่ละก้าวแล้วถัวเฉลี่ยถ่วงน้ำหนัก รุ่นที่พบบ่อยที่สุดคือRK4 — Runge-Kutta อันดับสี่

แทนที่จะใช้ค่าประมาณความชันเพียงจุดเดียวแบบออยเลอร์ RK4 คำนวณสี่ค่า:

Runge-Kutta method example (1)

ตัวอย่างวิธีรุนเก–คุตตา (1)

จากนั้นรวมกันเป็นหนึ่งค่า:

Runge-Kutta method example (2)

ตัวอย่างวิธีรุนเก–คุตตา (2)

ในทางปฏิบัติ ไม่ต้องลงมือเขียน RK4 เอง SciPy solve_ivp จัดการให้:

from scipy.integrate import solve_ivp
import numpy as np
import matplotlib.pyplot as plt

f = lambda x, y: y  # dy/dx = y

sol = solve_ivp(f, t_span=[0, 4], y0=[1], max_step=0.2)

RK45 versus the exact solution

RK45 เทียบกับวิธีแก้จริง

เส้น RK45 ซ้อนทับวิธีแก้จริงแทบสนิท ใช้ขนาดก้าวเท่ากับตัวอย่างออยเลอร์ แต่ได้ความแม่นยำดีกว่ามาก — นั่นคือผลของการเฉลี่ยความชันแบบถ่วงน้ำหนัก

สำหรับงาน Python ส่วนใหญ่ solve_ivp พร้อมตัวแก้ RK45 ดีฟอลต์คือเครื่องมือหลัก วิธีของออยเลอร์มีประโยชน์เพื่อทำความเข้าใจหลักการของตัวแก้เชิงตัวเลข แต่ไม่ควรใช้ในงานโปรดักชัน

การประยุกต์ใช้สมการเชิงอนุพันธ์ในดาต้าไซเอนซ์และแมชชีนเลิร์นนิง

วิศวกรใช้สมการเชิงอนุพันธ์จำลองวงจรไฟฟ้าและระบบเชิงกล นักชีววิทยาใช้ติดตามไดนามิกส์ของประชากรและการแพร่โรค นักฟิสิกส์ใช้บรรยายทุกอย่างตั้งแต่การถ่ายเทความร้อนไปจนถึงกลศาสตร์ควอนตัม

แต่นี่เรามาในมุมดาต้าไซเอนซ์ มาดูกันตรงๆ

แมชชีนเลิร์นนิงและการทำให้เหมาะที่สุด

ความเชื่อมโยงที่ชัดที่สุดระหว่างสมการเชิงอนุพันธ์และ ML คือเกรเดียนต์ดีเซนต์ — อัลกอริทึมเบื้องหลังการฝึกแทบทุกโมเดล

เมื่อฝึกโมเดล กำลังทำให้ฟังก์ชันสูญเสีย L ต่ำสุด เพื่อทำเช่นนั้น ต้องรู้ว่า L เปลี่ยนอย่างไรเมื่อปรับแต่ละพารามิเตอร์ อัตราการเปลี่ยนนี้คืออนุพันธ์ เมื่อโมเดลมีหลายพารามิเตอร์ จะคำนวณอนุพันธ์ย่อยสำหรับแต่ละตัว และรวมกันเป็นเกรเดียนต์

เกรเดียนต์ดีเซนต์ใช้อนุพันธ์เหล่านั้นอัปเดตพารามิเตอร์ทีละก้าว:

Gradient descent

เกรเดียนต์ดีเซนต์

โดยที่ θ คือพารามิเตอร์ η คือค่าเรียนรู้ และ ∂L/∂θ คืออนุพันธ์ย่อยของฟังก์ชันสูญเสียต่อพารามิเตอร์นั้น

ตัวอย่าง Python ง่ายๆ ฟิตเส้นตรงกับข้อมูลโดยใช้เกรเดียนต์ดีเซนต์:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)
X = np.linspace(0, 10, 100)
y = 2.5 * X + np.random.randn(100) * 2

# Initialize parameters
theta = 0.0
bias = 0.0
eta = 0.001
n = len(X)
losses = []

for _ in range(500):
    y_pred = theta * X + bias
    loss = np.mean((y_pred - y) ** 2)
    losses.append(loss)

    # Partial derivatives
    d_theta = (2/n) * np.sum((y_pred - y) * X)
    d_bias  = (2/n) * np.sum(y_pred - y)

    theta -= eta * d_theta
    bias  -= eta * d_bias

Gradient descent fitting a line to data, and the loss curve over iterations

การฟิตเส้นด้วยเกรเดียนต์ดีเซนต์และกราฟการลดลงของค่า loss ตามรอบ

แต่ละรอบจะขยับพารามิเตอร์ไปในทิศที่ลดค่า loss อนุพันธ์ย่อยจะบอกทิศทางนั้น ถ้าไม่มีมัน เกรเดียนต์ดีเซนต์จะทำงานไม่ได้ — และการถ่ายทอดย้อนกลับ (backpropagation) ในโครงข่ายประสาทก็เช่นกัน ซึ่งแท้จริงคือการใช้กฎลูกโซ่ซ้ำๆ ผ่านเลเยอร์

การวิเคราะห์อนุกรมเวลา

หลายระบบของซีรีส์เวลาเป็นไดนามิก — ค่าปัจจุบันขึ้นอยู่กับค่าที่ผ่านมาและอัตราการเปลี่ยน สมการเชิงอนุพันธ์ช่วยอธิบายสิ่งนี้ได้

คาลมานฟิลเตอร์ ซึ่งใช้กันกว้างขวางในการติดตามและพยากรณ์ สร้างบนระบบสมการเชิงอนุพันธ์ที่จำลองสถานะแฝงซึ่งเปลี่ยนไปตามเวลา และความสัมพันธ์ของการสังเกตที่มีสัญญาณรบกวนกับสถานะนั้น ใช้ในระบบ GPS การเงิน และพยากรณ์อากาศ

แบบจำลอง ARIMA ใช้สำหรับการพยากรณ์ซีรีส์เวลา และเชื่อมกับสมการเชิงอนุพันธ์ผ่านแนวคิดของการหาความต่าง (differencing) การหาความต่างอันดับหนึ่งหรือสองคือการประมาณเชิงไม่ต่อเนื่องของอนุพันธ์อันดับหนึ่งและสอง เมื่อทำ differencing เพื่อทำให้ซีรีส์นิ่ง กำลังถามว่า: ซีรีส์นี้กำลังเปลี่ยนไปตามเวลาอย่างไร?

แบบจำลองเชิงสถิติและรีเกรสชัน

มีเรื่องหนึ่งที่หลายคนแปลกใจ: การแก้ระบบสมการเชิงอนุพันธ์เป็นหนึ่งในวิธีอนุมานค่าสัมประสิทธิ์ของ รีเกรสชันเชิงเส้น

เมื่อฟิตโมเดลรีเกรสชันเชิงเส้น กำลังทำให้ผลรวมกำลังสองของเศษเหลือน้อยที่สุด หาอนุพันธ์ย่อยของฟังก์ชันสูญเสียต่อแต่ละสัมประสิทธิ์ ตั้งให้เป็นศูนย์ แล้วแก้ จะได้ สมการปกติ (Normal Equation):

Normal equation

สมการปกติ

ค่าสัมประสิทธิ์รีเกรสชันทุกค่าที่เคยคำนวณมาจากการตั้งอนุพันธ์ให้เป็นศูนย์แล้วแก้ นั่นคือแคลคูลัส — และเป็นหลักเดียวกับโมเดลเชิงพารามิเตอร์ทุกแบบที่ฟิต

สำหรับ โลจิสติกรีเกรสชัน ฟังก์ชันสูญเสียไม่เป็นกำลังสอง จึงไม่มีวิธีแก้แบบปิดรูป ต้องใช้วิธีวนซ้ำอย่างเกรเดียนต์ดีเซนต์ ซึ่งอีกครั้ง อาศัยอนุพันธ์ย่อยในทุกก้าว

ความเชื่อมโยงไปได้ไกลกว่านั้น การแยกตัวประกอบ QR ซึ่งเป็นวิธีเชิงตัวเลขมาตรฐานในการแก้สมการปกติ ตั้งอยู่บนพีชคณิตเชิงเส้นที่ตัดกับวิธีการแก้ระบบสมการ — รวมถึงสมการเชิงอนุพันธ์ — ในทางปฏิบัติโดยตรง

การจำลองระบบไดนามิก

เมื่อจำเป็นต้องจำลองว่าระบบเปลี่ยนไปตามเวลาอย่างไร — และไม่มีวิธีแก้เชิงวิเคราะห์ — ให้จำลองด้วยวิธีเชิงตัวเลข

พบบ่อยในบริบทธุรกิจและปฏิบัติการ การสูญเสียลูกค้า ระดับสินค้าคงคลัง และไดนามิกของซัพพลายเชน ต่างเกี่ยวข้องกับปริมาณที่เปลี่ยนตามสถานะปัจจุบัน สามารถเขียนความสัมพันธ์เหล่านี้เป็นสมการเชิงอนุพันธ์และจำลองด้วย solve_ivp ได้

ตัวอย่างนี้จำลองระบบอุปสงค์–อุปทานอย่างง่ายที่สินค้าคงคลัง I ลดลงตามอัตราอุปสงค์ D และอุปสงค์เปลี่ยนไปตามเวลา:

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

def supply_chain(t, y):
    I, D = y
    dD_dt = 0.1 * np.sin(0.5 * t)   # demand fluctuates over time
    dI_dt = -D                      # inventory depletes at the demand rate
    return [dI_dt, dD_dt]

sol = solve_ivp(
    supply_chain,
    t_span=[0, 20],
    y0=[100, 5],  # initial inventory=100, demand=5
    max_step=0.1
)

Simulated inventory depletion alongside fluctuating demand over time

การจำลองการลดลงของสินค้าคงคลังควบคู่กับอุปสงค์ที่ผันผวนตามเวลา

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

และนี่คือพลังเชิงปฏิบัติของสมการเชิงอนุพันธ์ในดาต้าไซเอนซ์ เป็นเครื่องมือโดยตรงในการจำลองระบบที่เปลี่ยนแปลง

สรุป

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

บทความนี้อธิบายว่าสมการเชิงอนุพันธ์คืออะไร ความต่างระหว่าง ODE และ PDE การจัดประเภทด้วยอันดับและดีกรี และวิธีแก้หลักทั้งเชิงวิเคราะห์และเชิงตัวเลข จากนั้นดูว่ามันปรากฏในงานดาต้าไซเอนซ์และแมชชีนเลิร์นนิงทุกวันอย่างไร

นี่เป็นเพียงรากฐาน หากต้องการสำรวจหัวข้อคณิตศาสตร์ต่อไป คอร์ส Linear Algebra for Data Science in R เป็นก้าวถัดไปที่ดี สำหรับการลงมือปฏิบัติใช้แนวคิดเหล่านี้แก้ปัญหาจริง ลองดูคอร์ส Quantitative Analyst in R

FAQs

สมการเชิงอนุพันธ์คืออะไร?

สมการเชิงอนุพันธ์คือสมการที่สัมพันธ์ฟังก์ชันเข้ากับอนุพันธ์ของตัวมันเอง ใช้อธิบายว่าปริมาณหนึ่งเปลี่ยนไปตามเวลา或พื้นที่อย่างไร ไม่ใช่แค่ค่าที่จุดเดียว ใช้จำลองทุกสิ่งที่วิวัฒน์ไปตามเวลา — การเติบโตของประชากร การกระจายความร้อน ราคาหุ้น และฟังก์ชันสูญเสียที่ทำให้ต่ำสุดระหว่างฝึกโมเดล ML

สมการเชิงอนุพันธ์จัดประเภทอย่างไร?

สมการเชิงอนุพันธ์จัดประเภทตามชนิด อันดับ และดีกรี ชนิดบอกว่าสมการเกี่ยวข้องกับตัวแปรอิสระตัวเดียว (สามัญ) หรือหลายตัว (ย่อย) อันดับกำหนดโดยอนุพันธ์ที่มีลำดับสูงสุด และดีกรีคือกำลังของอนุพันธ์อันดับสูงสุดนั้น

ความแตกต่างระหว่างวิธีเชิงวิเคราะห์กับเชิงตัวเลขในการแก้สมการเชิงอนุพันธ์คืออะไร?

วิธีเชิงวิเคราะห์ให้วิธีแก้แบบปิดรูปที่แน่นอน — สูตรที่คำนวณค่าได้ทุกจุด วิธีเชิงตัวเลขอย่างวิธีของออยเลอร์และรุนเก–คุตตาประมาณวิธีแก้ทีละก้าว เหมาะเมื่อไม่มีวิธีแก้ที่แน่นอน ในทางปฏิบัติ สมการโลกจริงส่วนใหญ่ซับซ้อนเกินกว่าจะใช้วิธีเชิงวิเคราะห์ จึงมักใช้วิธีเชิงตัวเลข — และเครื่องมืออย่าง solve_ivp ของ SciPy — เป็นหลัก

สมการเชิงอนุพันธ์เชื่อมโยงกับเกรเดียนต์ดีเซนต์และแบ็กโพรพาเกชันอย่างไร?

เกรเดียนต์ดีเซนต์อัปเดตพารามิเตอร์ของโมเดลโดยใช้อณุพันธ์ย่อยของฟังก์ชันสูญเสีย — หนึ่งตัวต่อหนึ่งพารามิเตอร์ การถ่ายทอดย้อนกลับคำนวณอนุพันธ์เหล่านั้นด้วยการใช้กฎลูกโซ่ซ้ำๆ ผ่านแต่ละเลเยอร์ของโครงข่ายประสาท ทุกครั้งที่ฝึกโมเดล PDE อยู่เบื้องหลัง ชี้ให้ตัวปรับเหมาะรู้ว่าควรขยับไปทิศไหน

สมการเชิงอนุพันธ์ถูกใช้ในงานพยากรณ์อนุกรมเวลาและรีเกรสชันอย่างไร?

ในงานซีรีส์เวลา แบบจำลองอย่างคาลมานฟิลเตอร์สร้างบนระบบสมการเชิงอนุพันธ์ที่อธิบายว่าสถานะแฝงเปลี่ยนไปตามเวลาอย่างไร แบบจำลอง ARIMA ใช้การหาความต่าง — การประมาณอนุพันธ์แบบไม่ต่อเนื่อง — เพื่อทำให้ซีรีส์นิ่งก่อนพยากรณ์ ในรีเกรสชัน ค่าสัมประสิทธิ์ได้มาจากการหาอนุพันธ์ย่อยของฟังก์ชันสูญเสีย ตั้งให้เป็นศูนย์ แล้วแก้ — ซึ่งก็คือสิ่งที่ สมการปกติ (Normal Equation) ทำ

หัวข้อ