AI

เข้าใจ Neural Network ให้ลึกจริง — ทำไมต้อง Convolution, ทำไม ReLU ต้องตามหลัง Conv2d และทำไมเลเยอร์ลึกขึ้นถึงเรียนรู้ฟีเจอร์ซับซ้อนขึ้น

November 14, 2025

หลายคนที่เริ่มศึกษา Deep Learning มักสงสัยว่า

  • ทำไมเลเยอร์แรกถึงเรียนรู้ “ขอบภาพ (edges)” ก่อน “รูปร่าง (shapes)”?
  • ทำไมงานด้านภาพต้องใช้ Conv2d แทบทุกครั้ง?
  • Convolution คืออะไรแน่?
  • ทำไมต้องใส่ ReLU หลัง Conv2d ทุกครั้ง?
  • แล้วทำไมยิ่งเพิ่มเลเยอร์ ความสามารถในการทำนายถึงดีขึ้น?

บทความนี้จะอธิบายแบบลึก แต่เข้าใจง่าย เหมาะสำหรับทั้งผู้เริ่มต้นและผู้ที่อยากเข้าใจแก่นการทำงานของ Neural Network จริง ๆ


🔥 ส่วนที่ 1 — ทำไมเลเยอร์ลึกขึ้นถึงเรียนรู้อะไรที่ซับซ้อนขึ้น?

Neural Network เรียนรู้แบบ "ลำดับชั้น" (Hierarchy) โดยธรรมชาติ:

เลเยอร์ สิ่งที่เรียนรู้ เหตุผล
1 ขอบภาพ (Edges) ง่ายที่สุดและข้อมูลเด่นที่สุด
2 รูปร่างพื้นฐาน (Shapes) รวมขอบหลาย ๆ แบบเข้าด้วยกัน
3 ลายพื้นผิว (Textures) รวมรูปร่างกลายเป็น pattern
4+ ส่วนประกอบของวัตถุ เช่น ตา ล้อ ใบไม้ ฯลฯ
สุดท้าย วัตถุ เช่น แมว รถ คน ฯลฯ

❗ สำคัญ:

เรา ไม่ได้เขียนโค้ด บังคับให้เลเยอร์เรียนสิ่งเหล่านี้

ไม่มีคำสั่งเช่น:

layer1.learn_edges()
layer2.learn_shapes()

Neural Network มีเป้าหมายเพียงอย่างเดียว:

\text{ลดค่า Loss ให้ต่ำที่สุด}

เมื่อ Backpropagation ปรับน้ำหนักของเลเยอร์ต่าง ๆ
มันจะเรียนรู้สิ่งที่ดีที่สุดสำหรับการลด Loss

ขอบภาพจึงเกิดขึ้นก่อน เพราะเป็นฟีเจอร์ง่ายและสำคัญที่สุด
รูปร่างเกิดตามมาเพราะต้องรวมขอบหลาย ๆ จุดเข้าด้วยกัน

นี่เรียกว่า Hierarchical Feature Learning (ฟีเจอร์แบบลำดับชั้น)


🔍 ส่วนที่ 2 — Convolution คืออะไร?

Convolution คือการใช้ “ฟิลเตอร์เล็ก ๆ” เช่นขนาด 3×3
ไปไล่สแกนรูปภาพเพื่อ ตรวจจับแพทเทิร์น

ตัวอย่างฟิลเตอร์ตรวจจับขอบแนวตั้ง:

[ 1  0 -1 ]
[ 1  0 -1 ]
[ 1  0 -1 ]

มันทำงานแบบ:

  1. ครอบฟิลเตอร์ลงภาพ
  2. คูณค่าพิกเซลกับค่าฟิลเตอร์
  3. รวมผล
  4. เลื่อนตำแหน่งหนึ่งช่อง
  5. ทำซ้ำทั่วภาพ

สิ่งที่ Convolution ตรวจจับได้:

  • ขอบภาพ
  • มุม
  • เส้นโค้ง
  • ลายพื้นผิว
  • รูปร่าง
  • ส่วนประกอบของวัตถุ

ทั้งหมดเกิดจากฟิลเตอร์ที่เรียนรู้จากข้อมูลผ่าน backprop


🟦 ส่วนที่ 3 — ทำไมงานด้านภาพต้องใช้ Conv2d?

Conv2d เป็นเลเยอร์ที่เหมาะกับงานภาพที่สุด เพราะ:

✔ 1. ภาพมีโครงสร้างเชิงพื้นที่ (Spatial Structure)

พิกเซลข้าง ๆ กันมีความเกี่ยวข้องกัน → Conv2d ใช้พื้นที่แบบ local ได้ดี

✔ 2. ใช้น้ำหนักซ้ำทั่วภาพ (Weight Sharing)

ฟิลเตอร์ 3×3 หนึ่งตัวถูกใช้ทั่วทั้งภาพ
→ จำนวนพารามิเตอร์น้อยกว่า Linear หลายร้อยเท่า

✔ 3. มีคุณสมบัติ Translation Invariance

วัตถุอยู่ตำแหน่งไหน ฟิลเตอร์จะตรวจจับได้เหมือนเดิม

✔ 4. ประสิทธิภาพสูง

Linear ต้องใช้พารามิเตอร์ 150,000+ สำหรับภาพหนึ่งภาพ
Conv2d ใช้แค่ 9 ค่าในฟิลเตอร์ 3×3

✔ 5. เรียนรู้แบบลำดับชั้นได้ดี

Conv2d + ReLU ซ้อนกันหลายครั้ง
ทำให้เกิด Hierarchy ของฟีเจอร์อัตโนมัติ

จึงไม่น่าแปลกใจที่ CNN ทุกรุ่นใช้ Conv2d เช่น:

  • LeNet
  • AlexNet
  • VGG
  • ResNet
  • MobileNet

แม้แต่ Vision Transformer (ViT) ก็ยังใช้ Conv-like embedding ตอนต้น


⚙️ ส่วนที่ 4 — เข้าใจพารามิเตอร์ของ nn.Conv2d

รูปแบบคำสั่ง:

nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
พารามิเตอร์ หมายถึง
in_channels จำนวนช่องของอินพุต (เช่น RGB=3)
out_channels จำนวนฟิลเตอร์ที่ต้องการเรียนรู้
kernel_size ขนาดฟิลเตอร์ เช่น 3×3
stride ระยะเลื่อนของฟิลเตอร์
padding เติมขอบภาพเพื่อไม่ให้ขนาดลดลง

ตัวอย่าง:

nn.Conv2d(3, 64, 3, stride=1, padding=1)

หมายถึง:

  • อินพุต 3 ช่อง (RGB)
  • เรียนรู้ฟิลเตอร์ 64 ตัว ขนาด 3×3

🔥 ส่วนที่ 5 — ทำไมต้อง ReLU หลัง Conv2d?

ReLU ถูกวางหลัง Conv2d เพราะ:

✔ 1. Conv2d เป็นฟังก์ชันเชิงเส้น

ซ้อน Conv หลายเลเยอร์ = ยังเป็นฟังก์ชันเชิงเส้นเดียว
→ เรียนรู้ฟีเจอร์ซับซ้อนไม่ได้

✔ 2. ReLU เพิ่มความไม่เป็นเชิงเส้น (Nonlinearity)

ReLU(x) = \max(0, x)

นี่ทำให้โมเดลเรียนรู้:

  • ขอบที่ซับซ้อน
  • ลายพื้นผิว
  • รูปร่าง
  • วัตถุ

✔ 3. แก้ปัญหา vanishing gradient

ReLU ให้ gradient = 1 สำหรับค่าบวก
→ training เร็วมาก

✔ 4. ทำให้ฟีเจอร์ชัดเจนขึ้น

ค่าที่ไม่สำคัญถูกตัดเป็น 0
เหลือเฉพาะ activation สำคัญ

โครงสร้างพื้นฐานของ CNN จึงเป็น:

Conv → ReLU → Conv → ReLU → Conv → ReLU → …

🧠 สรุปภาพรวม

Neural Network ดูลึกลับ แต่ทำงานตามหลักการง่าย ๆ:

  • Convolution → ตรวจจับ pattern
  • ReLU → เพิ่มความไม่เชิงเส้นให้เรียนรู้เรื่องยาก
  • Backpropagation → ปรับฟิลเตอร์อัตโนมัติ
  • เลเยอร์ลึก → รวมฟีเจอร์จากง่าย → ซับซ้อน

ความจริงคือ เราไม่ต้องบังคับให้เลเยอร์เรียน edge หรือ shape
มันเกิดขึ้นเอง เพราะมันคือวิธีที่ดีที่สุดในการลด loss

ถ้าเข้าใจฐานรากเหล่านี้ คุณจะเข้าใจ Deep Learning เกือบทั้งหมดแล้ว

บทความล่าสุด

Ready to talk about your project?

Share goals and constraints. We'll assemble architects and engineers to move fast with you.

Get in touch