- หน้าแรก
- คลังความรู้
- แคลคูลัสหลายตัวแปร
- เกรเดียนต์
// บทที่ 24.3 · แคลคูลัสหลายตัวแปร · Gradient & Directional Derivative
เกรเดียนต์ (Gradient) และอนุพันธ์ตามทิศ (Directional Derivative): ความหมาย สูตร และตัวอย่าง
ยืนบนเนินเขา อยากรู้ว่า “เดินไปทางไหนชันที่สุด” และ “ถ้าเดินไปทางตะวันออกเฉียงเหนือจะชันเท่าไร” คำตอบทั้งสองมาจากเวกเตอร์ตัวเดียวที่เรียกว่าเกรเดียนต์ (gradient) ∇f ซึ่งเป็นหัวใจของแคลคูลัสหลายตัวแปร และปรากฏทุกที่ในงานวิศวกรรม: สนามไฟฟ้า E=−∇V ฟลักซ์ความร้อน q=−k∇T การไหลของน้ำบนผิวดิน และอัลกอริทึม gradient descent ที่ปรับพารามิเตอร์ตัวควบคุมหรือโมเดล หน้านี้มีแล็บหมุนทิศ u แล้วดูค่า Duf บนกราฟขั้ว และปล่อยจุดลงเขาด้วย gradient descent
สรุปใน 30 วินาที
- ∇f=⟨fx,fy⟩ (หรือ ⟨fx,fy,fz⟩) · ชี้ทาง f เพิ่มเร็วสุด · ขนาด ∣∇f∣ = อัตราเพิ่มสูงสุด
- อนุพันธ์ตามทิศ Duf=∇f⋅u=∣∇f∣cosθ เมื่อ u เป็นเวกเตอร์หนึ่งหน่วย
- ∇f ตั้งฉากกับเส้นชั้น f=c · ใน 3 มิติ ∇F คือเวกเตอร์ปกติของผิวระดับ F=c
- gradient descent: x←x−α∇f ลงเขาทีละก้าว
ระดับพื้นฐาน ปี 1 · แคลคูลัส 1กลาง แคลคูลัส 3 · คณิตศาสตร์วิศวกรรมขั้นสูง พิสูจน์ · ทฤษฎี
เกรเดียนต์คืออะไร พื้นฐาน
อนุพันธ์ย่อยให้ความชันตามแกน x และแกน y แต่ผิวมีทิศให้เดินได้ไม่จำกัด ทำไมความรู้เรื่องสองแกนจึงพอทำนายทิศไหนก็ได้? เพราะผิวเรียบเมื่อซูมเข้าจะเป็นระนาบ (บทระนาบสัมผัส) และระนาบถูกกำหนดด้วยความชันสองค่า การรวมสองค่าเป็นเวกเตอร์เดียวคือเกรเดียนต์ ซึ่งเขียนด้วยสัญลักษณ์ ∇ (อ่านว่า “เดล” หรือ “นาบลา”)
G1 Gradient เกรเดียนต์
∇f=⟨∂x∂f, ∂y∂f⟩=fxi+fyj,∇f=⟨fx,fy,fz⟩ (3 ตัวแปร)
ฟังก์ชันสเกลาร์ → สนามเวกเตอร์ · ตัวดำเนินการ ∇=⟨∂x∂,∂y∂,∂z∂⟩ (grad) · บางตำราเขียน gradf
ตัวอย่าง G-1 · หา gradientหา ∇f ของ f(x,y)=x2y3−4y แล้วคำนวณที่ (2,−1)
fx=2xy3 · fy=3x2y2−4
แทน (2,−1): fx=2(2)(−1)3=−4 · fy=3(4)(1)−4=8
ดังนั้น ∇f(2,−1)=⟨−4,8⟩ · ขนาด ∣∇f∣=16+64=80=8.94
∇f=⟨2xy3, 3x2y2−4⟩ · ที่ (2,−1) คือ ⟨−4,8⟩
อนุพันธ์ตามทิศ (Directional Derivative) พื้นฐาน
อนุพันธ์ตามทิศคืออัตราเปลี่ยนของ f เมื่อเดินจากจุดหนึ่งตรงไปตามทิศที่กำหนด ด้วยความเร็วหนึ่งหน่วยต่อหน่วยระยะ ทิศถูกระบุด้วยเวกเตอร์หนึ่งหน่วย u=⟨cosθ,sinθ⟩ อนุพันธ์ย่อย fx และ fy คือกรณีพิเศษของ Duf ที่ทิศ u=i และ u=j
G2 Directional derivative (definition) อนุพันธ์ตามทิศ (นิยาม)
Duf(a,b)=h→0limhf(a+hu1, b+hu2)−f(a,b)=dhdf(x0+hu)h=0
เดินเป็นเส้นตรง x0+hu แล้วหาอนุพันธ์ของ f ตามระยะ h · u ต้องหนึ่งหน่วย (∣u∣=1) จึงให้หน่วยเป็น “ต่อหน่วยระยะ”
G3 Computing formula สูตรคำนวณ
Duf=∇f⋅u=fxu1+fyu2=∣∇f∣cosθ,u=∣v∣v
θ = มุมระหว่าง ∇f กับ u · ถ้าโจทย์ให้ทิศเป็นเวกเตอร์ v ใด ๆ ให้ทำเป็นหนึ่งหน่วยก่อนเสมอ (ข้อผิดพลาดอันดับหนึ่ง) · พิสูจน์ด้วยกฎลูกโซ่ dhdf(a+hu1,b+hu2)=fxu1+fyu2
ตัวอย่าง G-2 · อนุพันธ์ตามทิศที่กำหนดด้วยเวกเตอร์ต่อจาก G-1: หา Duf ที่ (2,−1) ในทิศ v=⟨2,5⟩
∣v∣=4+25=29 จึง u=29⟨2,5⟩ (ทำเป็นหนึ่งหน่วยก่อน!)
∇f(2,−1)=⟨−4,8⟩ จาก G-1
Duf=⟨−4,8⟩⋅29⟨2,5⟩=29−8+40=2932≈5.94
เทียบกับขนาดสูงสุด ∣∇f∣=8.94: ทิศนี้ทำมุม θ กับ ∇f โดย cosθ=5.94/8.94=0.665 → θ≈48.4∘
Duf=32/29≈5.94 (ถ้าลืมทำเป็นหนึ่งหน่วยจะได้ 32 ซึ่งผิด)
แล็บ: หมุนทิศ u ดู Duf และปล่อยจุดลงเขา พื้นฐาน
ลูกศรดำคือ ∇f (ชี้ขึ้นเขาชันสุด ตั้งฉากกับเส้นชั้นที่ผ่านจุด) ลูกศรฟ้าคือทิศ u ที่คุณเลือกด้วยแถบมุม θ กราฟขั้วด้านขวาแสดงค่า Duf ทุกทิศ เป็นวงกลมที่ผ่านจุดกำเนิด (เพราะ Duf=∣∇f∣cos(θ−θg)) ยอดวงกลมอยู่ในทิศ ∇f ส่วนจุดที่ผ่านจุดกำเนิดคือทิศตั้งฉาก ซึ่ง Duf=0 นั่นคือเดินไปตามเส้นชั้น
เกรเดียนต์ของ f=x2+3y2 ที่หลายจุด: ลูกศรชี้ทางขึ้นชันที่สุดและตั้งฉากกับเส้นชั้นเสมอ (เส้นชั้นเป็นวงรี)
ทิศที่ชันที่สุด และอัตราสูงสุด พื้นฐาน
จาก Duf=∣∇f∣cosθ ค่านี้ใหญ่สุดเมื่อ cosθ=1 (u ทิศเดียวกับ ∇f) เล็กสุดเมื่อ cosθ=−1 และเป็นศูนย์เมื่อ cosθ=0 (ตั้งฉาก)
G4 Direction of steepest ascent ทิศขึ้นชันที่สุด
∣u∣=1maxDuf=∣∇f∣ (u=∣∇f∣∇f),minDuf=−∣∇f∣ (u=−∣∇f∣∇f),Duf=0 (u⊥∇f)
ขึ้นชันสุด +∇f · ลงชันสุด −∇f · เดินตามเส้นชั้น ⊥∇f · ถ้า ∇f=0 (จุดวิกฤต) ทุกทิศได้ Duf=0
ตัวอย่าง G-3 · อุณหภูมิบนแผ่นโลหะ (เครื่องกล)อุณหภูมิบนแผ่นโลหะ T(x,y)=1+x2+2y280 °C (x, y เป็นเมตร) แมลงที่ (3,−1) ต้องการหนีร้อนให้เร็วที่สุด ควรเดินไปทิศใด และอุณหภูมิลดเร็วเพียงใด
ที่ (3,−1): ตัวส่วน 1+9+2=12 · T=80/12=6.67 °C
Tx=(1+x2+2y2)2−80(2x)=144−480=−310 · Ty=(1+x2+2y2)2−80(4y)=144320=920
∇T=⟨−310, 920⟩∝⟨−3,2⟩ ชี้ทางที่ร้อนขึ้นเร็วสุด (ไปทางจุดกำเนิดที่ร้อนสุด)
แมลงต้องการเย็นลงเร็วสุด จึงเดินสวนทาง −∇T คือทิศ ⟨3,−2⟩/13 (ห่างออกจากจุดกำเนิด)
อัตราลดสูงสุด =∣∇T∣=9100+81400=811300=91300≈4.006 °C/m
เดินทิศ −∇T∝⟨3,−2⟩ · อุณหภูมิลดเร็วสุด 4.006 °C ต่อเมตร
เกรเดียนต์ตั้งฉากกับเส้นชั้น และผิวระดับ กลาง
ตามเส้นชั้น f(x,y)=c ค่าของ f คงที่ ดังนั้นถ้าเดินเล็กน้อยตามทิศสัมผัสเส้นชั้น T จะได้ DTf=∇f⋅T=0 ผลดอตเป็นศูนย์แปลว่า ∇f⊥T ผลเดียวกันใช้กับผิวระดับ: เวกเตอร์ปกติของผิว F(x,y,z)=c คือ ∇F ซึ่งให้วิธีเขียนระนาบสัมผัสและเส้นปกติทันที
G5 Gradient ⟂ level curve gradient ตั้งฉากเส้นชั้น
r(t)∈{f=c} ⇒ dtdf(r(t))=∇f⋅r′(t)=0
เส้นสัมผัสของเส้นชั้นที่ (a,b) มีสมการ fx(x−a)+fy(y−b)=0
G6 Tangent plane and normal line of F = c ระนาบสัมผัสและเส้นปกติของผิวระดับ
Fx(P)(x−x0)+Fy(P)(y−y0)+Fz(P)(z−z0)=0,r(t)=r0+t∇F(P)
ถ้าผิวให้ในรูป z=f(x,y) ให้ตั้ง F=f(x,y)−z จะได้ ∇F=⟨fx,fy,−1⟩ ตรงกับระนาบสัมผัสในบทอนุพันธ์ย่อย
ตัวอย่าง G-4 · ระนาบสัมผัสของทรงรีหาระนาบสัมผัสและเส้นปกติของ 4x2+y2+4z2=3 ที่ (−2,1,2)
ตั้ง F=4x2+y2+4z2−3 ตรวจจุด: 1+1+1−3=0 ✓
∇F=⟨2x, 2y, 2z⟩ ที่ (−2,1,2): ⟨−1, 2, 1⟩
ระนาบสัมผัส: −1(x+2)+2(y−1)+1(z−2)=0 → −x+2y+z=6
เส้นปกติ: x=−2−t, y=1+2t, z=2+t
ตรวจ: แทนจุด (−2,1,2): 2+2+2=6 ✓
ระนาบสัมผัส −x+2y+z=6 · เส้นปกติ ⟨−2,1,2⟩+t⟨−1,2,1⟩
ในงานวิศวกรรม: ผิวตัวนำไฟฟ้าเป็นผิวศักย์เท่ากัน (V คงที่) สนาม E=−∇V จึงตั้งฉากกับผิวตัวนำเสมอ (เงื่อนไขขอบเขตที่ใช้ในการออกแบบอิเล็กโทรด) น้ำบนผิวดินไหลตามทิศ −∇h ซึ่งตั้งฉากกับเส้นชั้นความสูง จึงวางแนวร่องระบายน้ำตั้งฉากกับเส้นชั้น และความร้อนไหลตั้งฉากกับ isotherm
กฎของเกรเดียนต์และสูตรที่ใช้บ่อย กลาง
G7 Gradient rules กฎของเกรเดียนต์
∇(f±g)=∇f±∇g,∇(fg)=f∇g+g∇f,∇h(f)=h′(f)∇f
เป็นกฎของตัวแปรเดียวทุกข้อ ใส่ ∇ แทน d/dx
G8 Gradient of radial functions เกรเดียนต์ของฟังก์ชันรัศมี
r=x2+y2+z2:∇r=rr,∇(r1)=−r3r,∇rn=nrn−2r
สูตรสามข้อนี้ใช้บ่อยมากในไฟฟ้า (ศักย์จากประจุจุด) และแรงโน้มถ่วง · ทิศ r/r คือเวกเตอร์หนึ่งหน่วยตามรัศมี
ตัวอย่าง G-5 · ได้กฎของคูลอมบ์จากศักย์ (ไฟฟ้า)ศักย์ของประจุจุด q คือ V=rkq จงหา E=−∇V
V=kq⋅r−1 จากสูตร G8: ∇(r1)=−r3r
E=−∇V=−kq(−r3r)=r3kqr=r2kqr^
นี่คือกฎของคูลอมบ์ — ขนาด kq/r2 พุ่งออกตามรัศมี และเมื่อ q<0 พุ่งเข้า
สรุป: คำนวณศักย์ (สเกลาร์ ง่ายกว่า) แล้วหา gradient ได้สนามเวกเตอร์ทั้ง 3 องค์ประกอบในครั้งเดียว
E=r2kqr^ · ใช้ได้กับผลรวมของหลายประจุโดยรวม V ก่อนแล้วหา gradient (ดูแล็บประจุจุด)
Gradient Descent: ลงเขาทีละก้าว กลาง
ถ้าต้องการจุดต่ำสุดของ f แต่แก้ ∇f=0 ตรง ๆ ไม่ได้ (ฟังก์ชันซับซ้อน มีพารามิเตอร์นับพัน) ให้เริ่มจากจุดหนึ่งแล้วเดินสวนทางเกรเดียนต์ซ้ำ ๆ ทีละก้าวเล็ก ๆ นี่คือ gradient descent ซึ่งเป็นแกนของการฝึกโครงข่ายประสาทเทียม การจูนพารามิเตอร์ตัวควบคุม และการแก้ปัญหากำลังสองน้อยสุดขนาดใหญ่ ส่วนการไต่ขึ้น (gradient ascent) ใช้หาค่ามากสุด เช่น วิธี perturb & observe ที่ตามจุดกำลังสูงสุดของแผงโซลาร์เซลล์ก็คือการไต่เขา P(V) ในมิติเดียว
G9 Gradient descent วิธีลงเขาตามเกรเดียนต์
xk+1=xk−α∇f(xk),ฟังก์ชันกำลังสอง f=21x⊤Ax: ลู่เข้า⟺0<α<λmax(A)2
α = ขนาดก้าว (learning rate) · เล็กเกิน = ช้า ใหญ่เกิน = แกว่งแล้วแตกออก · เส้นชั้นเป็นวงรียาว (λmax/λmin มาก) = ลู่เข้าช้าเป็นรูปซิกแซก
ตัวอย่าง G-6 · ทำสองก้าวด้วยมือf(x,y)=x2+3y2 เริ่มที่ (2,1) ใช้ α=0.1 ทำ gradient descent สองก้าว
∇f=⟨2x,6y⟩ · เริ่ม f(2,1)=4+3=7
ก้าวที่ 1: ∇f(2,1)=⟨4,6⟩ · (x,y)=(2,1)−0.1⟨4,6⟩=(1.6, 0.4) · f=2.56+0.48=3.04
ก้าวที่ 2: ∇f(1.6,0.4)=⟨3.2,2.4⟩ · (x,y)=(1.28, 0.16) · f=1.638+0.077=1.715
ค่า f ลดลงทุกก้าว (7 → 3.04 → 1.715) และเข้าใกล้จุดต่ำสุด (0,0) ซึ่ง f=0
(2,1)→(1.6,0.4)→(1.28,0.16) · f:7→3.04→1.715
ตัวอย่าง G-7 · เลือกขนาดก้าวไม่ได้ถ้าไม่รู้ความโค้งf=x2+10y2 ต้องใช้ α น้อยกว่าเท่าไรจึงลู่เข้า
∇f=⟨2x,20y⟩ แต่ละก้าวคูณแต่ละพิกัดด้วย (1−2α) และ (1−20α)
ลู่เข้าเมื่อทั้งสองตัวคูณมีขนาดน้อยกว่า 1: ∣1−2α∣<1 ได้ α<1 และ ∣1−20α∣<1 ได้ α<0.1
ข้อจำกัดคือ α<0.1=2/λmax เมื่อ λmax=20 (ค่าเฉพาะที่ใหญ่สุดของ Hessian)
ทดสอบ 30 ก้าวจาก (2,1): α=0.09 → (0.005,0.001) ลู่เข้า · α=0.1 → y สลับ ±1 ตลอด (ขอบเขต) · α=0.11 → y≈237 แตกออก
ปัญหาของวงรียาว: x ต้องการก้าวใหญ่ (ความโค้งน้อย) แต่ y ต้องการก้าวเล็ก (ความโค้งมาก) ทำให้ช้า จึงมีวิธีขั้นสูง เช่น momentum, Newton, conjugate gradient
ลู่เข้าเมื่อ 0<α<0.1 · α=0.11 แตกออก
นำไปใช้ในงานวิศวกรรม พื้นฐาน
| สาขา | เกรเดียนต์ของ | ใช้ทำอะไร |
| ไฟฟ้า | ศักย์ไฟฟ้า V | E=−∇V · สนามตั้งฉากกับผิวตัวนำ (บทไฟฟ้า) |
| ไฟฟ้า | กำลัง P(Vpv) ของแผงโซลาร์ | MPPT แบบ perturb & observe คือการไต่เขา (MPPT) |
| เครื่องกล | อุณหภูมิ T | q=−k∇T ฟลักซ์ความร้อนตั้งฉาก isotherm (บทเครื่องกล) |
| เครื่องกล | ความดัน p | แรงสุทธิต่อหน่วยปริมาตรของของไหล −∇p |
| โยธา | ความสูงภูมิประเทศ h | ความชัน ∣∇h∣ และทิศน้ำไหล −∇h (บทโยธา) |
| โยธา / ธรณี | ระดับน้ำใต้ดิน h | กฎของดาร์ซี v=−K∇h ความเร็วซึมตั้งฉากเส้นระดับ |
| ทุกสาขา | ฟังก์ชันค่าความผิดพลาด J(θ) | gradient descent ปรับพารามิเตอร์ (บทค่าสุดขีด) |
ข้อผิดพลาดที่พบบ่อย พื้นฐาน
- ลืมทำเวกเตอร์ทิศให้เป็นหนึ่งหน่วย ก่อนดอต · Duf ต้องใช้ u ที่ ∣u∣=1 เสมอ
- คิดว่า gradient เป็นสเกลาร์ · ∇f เป็นเวกเตอร์ (ชี้ทิศ) ส่วน Duf เป็นสเกลาร์
- คิดว่า ∇f อยู่บนผิว 3 มิติ · ∇f ของ f(x,y) เป็นเวกเตอร์ 2 มิติในระนาบ xy (ทิศบนแผนที่) ไม่ใช่เวกเตอร์ชี้ขึ้นบนผิว
- ใช้ gradient descent โดยไม่ตรวจขนาดก้าว · ถ้า f ไม่ลดลงเลยหลังหลายก้าวให้ลด α ลงครึ่งหนึ่ง
- สับสนทิศลงเขา · ลงเขาชันสุดคือ −∇f (น้ำไหล) ไม่ใช่ +∇f
ไปต่อที่ค่าสูงสุด-ต่ำสุดและตัวคูณลากรองจ์ ที่ใช้เงื่อนไข ∇f=0 และ ∇f∥∇g หาจุดเหมาะสมที่สุด
คำถามที่พบบ่อย
เกรเดียนต์ (gradient) คืออะไร ชี้ไปทางไหน?
เกรเดียนต์ของ f(x,y) คือเวกเตอร์ ∇f=⟨fx,fy⟩ ที่รวมอนุพันธ์ย่อยทั้งหมดไว้ด้วยกัน มันชี้ไปทางที่ f เพิ่มขึ้นเร็วที่สุด และขนาด ∣∇f∣ คืออัตราเพิ่มสูงสุดนั้น ถ้า f คือความสูงภูเขา ∇f ชี้ขึ้นเขาทางชันที่สุด และ −∇f คือทางที่น้ำไหลลง ทิศของ ∇f ตั้งฉากกับเส้นชั้นความสูงเสมอ
อนุพันธ์ตามทิศ (directional derivative) หาอย่างไร?
ใช้ Duf=∇f⋅u เมื่อ u เป็นเวกเตอร์หนึ่งหน่วย ถ้าโจทย์ให้ทิศเป็นเวกเตอร์ v ใด ๆ ต้องทำเป็นหนึ่งหน่วยก่อน u=v/∣v∣ ตัวอย่าง f=x2y3−4y ที่ (2,−1) ทิศ ⟨2,5⟩: ∇f=⟨−4,8⟩ และ Duf=(−8+40)/29=5.94 ข้อผิดพลาดที่พบบ่อยที่สุดคือลืมทำเวกเตอร์ให้เป็นหนึ่งหน่วย
ทำไม gradient ตั้งฉากกับเส้นชั้นความสูง?
ตามเส้นชั้น f คงที่ จึงอัตราเปลี่ยนในทิศสัมผัสเส้นชั้นเป็นศูนย์ นั่นคือ Duf=∇f⋅u=0 เมื่อ u สัมผัสเส้นชั้น ดอตเป็นศูนย์แปลว่าตั้งฉากกัน เหตุผลเดียวกันใช้กับผิวระดับ F(x,y,z)=c: ∇F คือเวกเตอร์ปกติของผิว ซึ่งทำให้เขียนระนาบสัมผัสได้ทันที และในไฟฟ้าอธิบายว่าสนาม E=−∇V ตั้งฉากกับผิวตัวนำ
Gradient descent คืออะไร ใช้ทำอะไร?
คือวิธีหาจุดต่ำสุดของ f โดยเดินสวนทาง gradient ซ้ำ ๆ: xk+1=xk−α∇f(xk) เมื่อ α คืออัตราการเรียนรู้ (learning rate) ใช้ฝึกโครงข่ายประสาทเทียม ปรับพารามิเตอร์ตัวควบคุม และแก้ปัญหากำลังสองน้อยสุด ถ้า α ใหญ่เกินไปจะแกว่งแล้วแตกออก (เช่นสำหรับ x2+10y2 ต้อง α<0.1) ถ้าเล็กเกินไปจะช้ามาก
เกรเดียนต์กับอนุพันธ์ย่อยต่างกันอย่างไร?
อนุพันธ์ย่อยแต่ละตัวบอกอัตราเปลี่ยนตามแกนเดียว (fx ตามแกน x) ส่วนเกรเดียนต์รวมทุกอนุพันธ์ย่อยเป็นเวกเตอร์เดียว จึงบอกอัตราเปลี่ยนในทุกทิศผ่านการดอตกับเวกเตอร์ทิศ และบอกทิศที่ชันที่สุดได้ด้วย ถ้า f หาอนุพันธ์ได้ ความรู้ fx,fy สองตัวก็เพียงพอจะทำนายความชันในทุกทิศ
มด
อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์