Deep Learning = Machine Learning + Neural Network หลายชั้น ("deep")
อินเทอร์เน็ต, social media, IoT -- มีข้อมูลให้ฝึกมากกว่าเดิม หลายร้อยเท่า
Backpropagation, ReLU, Dropout, BatchNorm -- แก้ปัญหา vanishing gradient ได้
3 ปัจจัยนี้มารวมกัน = Deep Learning ยุคใหม่ เริ่มประมาณ 2012
y = f(w * x + b)
นิวรอนหนึ่งตัว = คำนวณ weighted sum แล้วผ่าน activation function
ข้อมูลที่ป้อนเข้าไป เช่น รูปภาพ 3x3 = 9 pixels = vector ขนาด 9
ตัวเลขที่โมเดลจะเรียนรู้-- ยิ่ง w มาก feature นั้นยิ่งสำคัญ
แปลงผลลัพธ์ให้อยู่ในช่วงที่ต้องการ เช่น sigmoid = ช่วง (0,1)
شبี้เดียว = "perceptron" / หลายตัวต่อกัน = "neural network"
neurone หลายตัว = ชั้นเดียว (shallow) / neurone หลายชั้น = deep
Input Hidden 1 Hidden 2 Output Layer Layer Layer Layer [x1] --> [h1] -----> [h3] ----> [y] [x2] --> [h2] -----> [h4] [x3] -->
- แก้ปัญหาที่ linearly separable ได้เท่านั้น
- ปัญหา XOR, รูปซับซ้อน = ทำไม่ได้
- ชั้นลึก = learns feature ระดับสูงขึ้น
- รูป: edge -> texture -> part -> object
- ข้อความ: word -> phrase -> sentence -> meaning
ยิ่งลึก ยิ่ง learn ได้ซับซ้อน -- แต่ก็ยิ่งต้องการ ข้อมูล + compute มากขึ้น
ใส่ข้อมูล -> โมเดลคำนวณ -> ได้คำตอบ (y^)
ตอนแรก w สุ่ม = คำตอบผิดหมด
Repeat: Forward -> Loss -> Backward -> Update
\(L = \frac{1}{N} \sum (\hat{y}_i - y_i)^2\)
MSE = ระยะห่างกำลังสองระหว่างทำนาย vs จริง
\(L = -[y \log \hat{y} + (1-y) \log(1-\hat{y})]\)
BCE = ทำนายผิดฝั่ง = ลงโทษหนักมาก
Goal: ปรับ w, b ให้ L ต่ำที่สุด
\(w \leftarrow w - \eta \cdot \frac{\partial L}{\partial w}\)
ขยับ weight ทีละน้อย ตามทิศทางที่ loss ลดลง
Partial derivative = ทิศทาง + ความชัน ที่บอกว่า loss จะแยก/ดีขึ้นถ้าขยับ w
ก้าวใหญ่ไป = กระโดดข้ามหลุม / ก้าวเล็กไป = ช้ามาก
ใช้ chain rule คำนวณ \(\frac{\partial L}{\partial w}\) ทุกตัวอัตโนมัติ
คอร์สนี้เน้น Supervised Learning เป็นหลัก
model.fit() = เทรนด้วย 1 บรรทัดเริ่มจาก Keras (ง่าย) -> ต่อยอด PyTorch (ยืดหยุ่น)
import keras
from keras import layers
# 1. สร้างโมเดล
model = keras.Sequential([
layers.Dense(64, activation='relu',
input_shape=(10,)),
layers.Dense(32, activation='relu'),
layers.Dense(1, activation='sigmoid')
])
# 2. คอมไพล์
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
# 3. เทรน
model.fit(X_train, y_train,
epochs=10,
batch_size=32,
validation_split=0.2)
- Sequential = stacking ชั้นๆ ต่อกัน
- Dense = ชั้น fully connected (neuron ทุกตัวเชื่อมกับทุกตัว)
- activation='relu' = ฟังก์ชันที่จะเรียนรู้ในสัปดาห์หน้า
- model.fit() = ทุกอย่างจัดการให้ (forward, loss, backward, update)
[Tip] แค่ 3 ขั้นตอน = สร้าง -> คอมไพล์ -> เทรน -- Keras ทำให้ ML เป็นเรื่องง่าย
uv init --no-package wk01 tensorflow cd wk01/ uv add tensorflow + ทดสอบ importสัปดาห์หน้า: Mathematical building blocks of neural networks