ภาพรวมบทเรียน
โครงข่ายประสาทเทียม (Artificial Neural Network: ANN) เป็นเทคนิคการเรียนรู้ของเครื่องที่ได้รับแรงบันดาลใจจากโครงสร้างและการทำงานของสมองมนุษย์ ใช้หน่วยประมวลผลเล็ก ๆ ที่เรียกว่า Neuron เชื่อมต่อกันเป็นชั้น ๆ เพื่อเรียนรู้รูปแบบจากข้อมูลและนำไปใช้จำแนกข้อมูลใหม่
ในงานเหมืองข้อมูล ANN ถูกใช้กับงานจำแนกข้อมูลที่มีรูปแบบซับซ้อน เช่น การจำแนกภาพ การรู้จำเสียง การวิเคราะห์ข้อมูลทางชีวภาพ การจำแนกข้อมูลจากเซนเซอร์ IoT และข้อมูลที่มี Feature จำนวนมาก
แนวคิดสำคัญ
ANN เหมาะกับข้อมูลที่มีความสัมพันธ์ซับซ้อนหรือไม่เป็นเชิงเส้น เพราะ Hidden Layer และ Activation Function ช่วยให้โมเดลเรียนรู้รูปแบบที่ยากกว่าเส้นตรงหรือกฎง่าย ๆ ได้
ภาพรวมการทำงานของ ANN
ภาพที่ 1 โครงสร้างพื้นฐานของ ANN ประกอบด้วย Input Layer, Hidden Layer และ Output Layer
0. ทบทวนก่อนเรียน ANN
ก่อนเข้าสู่ ANN ควรทบทวนแนวคิด Machine Learning และการแบ่งข้อมูล เนื่องจาก ANN เป็นโมเดลแบบ Supervised Learning ที่ต้องใช้ข้อมูลฝึกสอนและข้อมูลทดสอบเพื่อประเมินความสามารถในการทำนายข้อมูลใหม่
Supervised Learning
เรียนรู้จากข้อมูลที่มีป้ายกำกับ เช่น ภาพพร้อมชื่อคลาส หรือข้อมูลผู้ป่วยพร้อมผลวินิจฉัย
Unsupervised Learning
เรียนรู้จากข้อมูลที่ไม่มีป้ายกำกับ เช่น การจัดกลุ่มลูกค้าหรือรูปแบบพฤติกรรม
Train/Test Split
แบ่งข้อมูลเป็นชุดฝึกและชุดทดสอบ เช่น 70/30, 80/20 หรือ 90/10 เพื่อป้องกันการประเมินลำเอียง
K-Fold Cross-Validation
แบ่งข้อมูลเป็น K ส่วนเพื่อวนฝึกและทดสอบหลายรอบ ช่วยลด Bias และ Variance ของการประเมินโมเดล
9.1 บทนำและความหมายของ ANN
การจำแนกข้อมูล (Data Classification) เป็นงานสำคัญของเหมืองข้อมูลและ Machine Learning มีเป้าหมายเพื่อจัดกลุ่มข้อมูลออกเป็นประเภทต่าง ๆ ตามรูปแบบที่เรียนรู้จากข้อมูลตัวอย่าง ANN เป็นหนึ่งในเทคนิคที่ได้รับความนิยม เพราะสามารถเรียนรู้รูปแบบซับซ้อนและไม่เป็นเชิงเส้นได้ดี
Artificial Neural Network (ANN) หรือ โครงข่ายประสาทเทียม คือแบบจำลองที่ประกอบด้วย Neuron จำนวนมากเชื่อมต่อกันเป็นเครือข่าย แต่ละการเชื่อมต่อมีค่าน้ำหนัก (Weight) และแต่ละ Neuron อาจมีค่า Bias เพื่อปรับผลรวมก่อนส่งผ่านฟังก์ชันกระตุ้น
ตัวอย่างงานที่เหมาะกับ ANN
- การจำแนกภาพ เช่น จำแนกสัตว์ ยานพาหนะ หรือโรคจากภาพถ่าย
- การรู้จำเสียงและภาษามือ
- การวิเคราะห์ข้อมูลทางการแพทย์และชีวภาพ
- การจำแนกข้อมูลจากเซนเซอร์ IoT
- การจำแนกพืชสมุนไพรและข้อมูลเกษตรอัจฉริยะ
9.2-9.3 โครงสร้างและแนวคิดพื้นฐานของ ANN
ANN ประกอบด้วยชั้นข้อมูลหลายชั้น โดยข้อมูลจะไหลจากชั้นอินพุตไปยังชั้นเอาต์พุตผ่านชั้นซ่อน ระบบจะเรียนรู้โดยการปรับค่าน้ำหนักของการเชื่อมต่อให้ทำนายผลได้ใกล้เคียงค่าจริงมากขึ้น
Input Layer
รับข้อมูลเข้า เช่น Feature ต่าง ๆ ของตัวอย่างข้อมูล หรือค่าพิกเซลของภาพ
Hidden Layer
ประมวลผลข้อมูลด้วย Weight, Bias และ Activation Function เพื่อเรียนรู้รูปแบบที่ซับซ้อน
Output Layer
แสดงผลลัพธ์ เช่น Class A/B/C หรือความน่าจะเป็นของแต่ละคลาส
Weights & Bias
พารามิเตอร์ที่โมเดลปรับระหว่างฝึก เพื่อให้ผลทำนายสอดคล้องกับค่าจริง
ภาพที่ 2 การคำนวณภายใน Neuron: รวม Feature ด้วย Weight และ Bias แล้วส่งผ่าน Activation Function
9.4 หลักการทำงานของ Artificial Neural Network
การทำงานของ ANN สำหรับการจำแนกข้อมูลแบ่งได้เป็น 3 ส่วนหลัก คือ Forward Propagation, Loss Function และ Backpropagation
ภาพที่ 3 วงจรการฝึกโมเดล ANN: ทำนาย → วัดความผิดพลาด → ย้อนกลับเพื่อปรับ Weight
9.4.1 Forward Propagation
ข้อมูลไหลจาก Input Layer ผ่าน Hidden Layer ไปยัง Output Layer แต่ละ Neuron จะคำนวณผลรวมถ่วงน้ำหนักแล้วส่งผ่าน Activation Function
โดยที่ w คือค่าน้ำหนัก, x คือข้อมูลนำเข้า, b คือไบแอส, f คือฟังก์ชันกระตุ้น และ a คือผลลัพธ์หลังผ่านฟังก์ชันกระตุ้น
9.4.2 Activation Function
Activation Function ช่วยเพิ่มความไม่เป็นเชิงเส้นให้โมเดล ทำให้ ANN เรียนรู้รูปแบบที่ซับซ้อนได้ ตัวอย่างที่ใช้บ่อย ได้แก่
ภาพที่ 4 ตัวอย่าง Activation Function: Sigmoid, ReLU และ Softmax
| ฟังก์ชัน | การใช้งานที่เหมาะสม |
|---|---|
| Sigmoid | เหมาะกับ Binary Classification หรือการทำนายความน่าจะเป็น 0–1 |
| ReLU | นิยมใช้ใน Hidden Layer เพราะคำนวณเร็วและช่วยลดปัญหา Gradient บางส่วน |
| Softmax | ใช้ใน Output Layer สำหรับ Multi-class Classification เพื่อแปลงผลลัพธ์เป็นความน่าจะเป็นของแต่ละคลาส |
9.4.3 Loss Function
Loss Function ใช้วัดความแตกต่างระหว่างค่าที่โมเดลทำนายกับค่าจริง ยิ่ง Loss ต่ำ แสดงว่าโมเดลทำนายได้ใกล้เคียงค่าจริงมากขึ้น
- Binary Cross-Entropy: ใช้กับการจำแนกสองคลาส เช่น ป่วย/ไม่ป่วย
- Categorical Cross-Entropy: ใช้กับการจำแนกหลายคลาส เช่น จำแนกภาพออกเป็น 10 ประเภท
- Sparse Categorical Cross-Entropy: ใช้กับหลายคลาสเมื่อ Label เป็นตัวเลขลำดับ เช่น 0–9
9.4.4 Backpropagation
Backpropagation คือกระบวนการปรับ Weight ของเครือข่ายโดยอาศัย Gradient Descent เพื่อลดค่า Loss
โดยที่ η คือ Learning Rate หรืออัตราการเรียนรู้ ถ้าค่าสูงเกินไปอาจทำให้โมเดลแกว่งและไม่ลู่เข้า ถ้าต่ำเกินไปอาจเรียนรู้ช้า
9.5 ประเภทของการจำแนกข้อมูลด้วย ANN
ภาพที่ 5 Binary, Multi-class และ Multi-label Classification
Binary Classification
จำแนกออกเป็น 2 กลุ่ม เช่น โรค/ไม่เป็นโรค ผ่าน/ไม่ผ่าน สแปม/ไม่สแปม
Multi-class Classification
จำแนกมากกว่า 2 กลุ่ม เช่น ชนิดพืช ประเภทภาพ หรือท่าทางมือ
Multi-label Classification
ข้อมูลหนึ่งตัวอย่างอยู่ได้หลายคลาส เช่น ข้อความหนึ่งอาจมีหลายอารมณ์หรือหลายหัวข้อ
Regression ด้วย Neural Network
แม้บทนี้เน้น Classification แต่ Neural Network ยังใช้ทำนายค่าต่อเนื่อง เช่น ราคา คะแนน หรือผลผลิตได้
9.6 กระบวนการพัฒนาโมเดล ANN
การพัฒนาโมเดล ANN ควรทำอย่างเป็นขั้นตอน เพื่อให้ได้โมเดลที่มีประสิทธิภาพและนำไปใช้จริงได้
รวบรวมข้อมูล
เก็บข้อมูลให้ตรงกับโจทย์ เช่น ภาพ ข้อความ ข้อมูลเซนเซอร์ หรือข้อมูลตาราง
เตรียมข้อมูล
จัดการ Missing Values ทำ Normalization/Standardization และแปลงข้อมูลให้อยู่ในรูปแบบที่โมเดลรับได้
แบ่งข้อมูล
แบ่ง Train/Test หรือ Train/Validation/Test เพื่อฝึกและประเมินโมเดลอย่างเหมาะสม
ออกแบบสถาปัตยกรรม
กำหนดจำนวน Layer, จำนวน Neuron, Activation, Dropout และ Output Layer
ฝึกโมเดล
กำหนด Optimizer, Loss Function, Epochs และ Batch Size แล้วฝึกโมเดลด้วยชุดข้อมูลฝึก
ประเมินผลและปรับปรุง
วิเคราะห์ Accuracy, Precision, Recall, F1-score, Confusion Matrix และปรับ Hyperparameters
9.7 ตัวชี้วัดประสิทธิภาพของโมเดล
การประเมินผล ANN ควรเลือกตัวชี้วัดให้เหมาะกับประเภทของปัญหา โดยเฉพาะงานที่ข้อมูลไม่สมดุล ไม่ควรดู Accuracy เพียงอย่างเดียว
| ตัวชี้วัด | ความหมาย | เหมาะกับกรณี |
|---|---|---|
| Accuracy | สัดส่วนการทำนายถูกทั้งหมด | ข้อมูลแต่ละคลาสค่อนข้างสมดุล |
| Precision | จากที่ทำนายว่าเป็นคลาสนั้น ทายถูกกี่เปอร์เซ็นต์ | กรณีต้องลด False Positive |
| Recall | จากข้อมูลจริงของคลาสนั้น โมเดลจับได้กี่เปอร์เซ็นต์ | กรณีต้องลด False Negative เช่น งานแพทย์ |
| F1-score | ค่าเฉลี่ยเชิงสมดุลของ Precision และ Recall | ข้อมูลไม่สมดุลหรืออยากดูภาพรวมรายคลาส |
| Confusion Matrix | ตารางเปรียบเทียบค่าจริงกับค่าทำนาย | ใช้วิเคราะห์ว่าคลาสใดโมเดลสับสนบ่อย |
9.8 TensorFlow + Keras คืออะไร?
TensorFlow และ Keras เป็นเครื่องมือสำคัญสำหรับสร้างโมเดล Machine Learning และ Deep Learning โดย TensorFlow ทำหน้าที่เหมือน Engine สำหรับการคำนวณ ส่วน Keras เป็น High-level API ที่ช่วยให้เขียนโมเดลง่าย อ่านโค้ดง่าย และเหมาะกับการเรียนการสอน
ภาพที่ 6 TensorFlow เป็น Engine ส่วน Keras เป็น API ที่ช่วยให้สร้างโมเดลง่ายขึ้น
TensorFlow
ไลบรารีโอเพนซอร์สจาก Google สำหรับสร้างและฝึกโมเดล AI รองรับ GPU/TPU, Production Deployment และ Edge AI
Keras
High-level API ของ Deep Learning ปัจจุบันรวมอยู่ใน TensorFlow ในชื่อ tf.keras เหมาะสำหรับสอนและทำ Prototype
| หัวข้อ | TensorFlow | Keras |
|---|---|---|
| ระดับ | Low-level / Engine | High-level API |
| ความยาก | ยากกว่า | ง่ายกว่า |
| ความยืดหยุ่น | สูง | ปานกลางถึงสูง |
| เหมาะกับ | นักวิจัยและงาน Production | นักเรียน ผู้สอน และ Developer |
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential([
layers.Dense(128, activation="relu"),
layers.Dense(10, activation="softmax")
])
การติดตั้ง TensorFlow และ Keras
เมื่อติดตั้ง TensorFlow จะได้ Keras มาด้วย จึงไม่จำเป็นต้องติดตั้ง Keras แยกต่างหาก สำหรับการเรียนใน Windows และ VS Code แนะนำให้ใช้ Virtual Environment
คำสั่งติดตั้งpython --version
python -m venv venv
# Windows PowerShell
.\venv\Scripts\activate
python -m pip install --upgrade pip
pip install tensorflow
# ทดสอบ TensorFlow
python -c "import tensorflow as tf; print(tf.__version__)"
# ทดสอบ Keras
python -c "from tensorflow import keras; print('Keras OK')"
ข้อควรระวังในการติดตั้ง
ควรใช้ Python เวอร์ชันที่ TensorFlow รองรับ และแยกสภาพแวดล้อมด้วย venv เพื่อลดปัญหา dependency conflict ในโปรเจกต์ Data Mining
ตัวอย่างการจำแนกภาพด้วย ANN: CIFAR-10
CIFAR-10 เป็นชุดข้อมูลมาตรฐานสำหรับ Image Classification มีภาพทั้งหมด 60,000 ภาพ แบ่งเป็น Train 50,000 ภาพ และ Test 10,000 ภาพ ขนาดภาพ 32×32 pixels แบบ RGB จำนวน 10 คลาส เช่น airplane, automobile, bird, cat, deer, dog, frog, horse, ship และ truck
ภาพที่ 7 Workflow ของโปรแกรม ANN สำหรับจำแนกภาพ CIFAR-10
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# 1) โหลด dataset
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
y_train = y_train.flatten()
y_test = y_test.flatten()
# 2) เตรียมข้อมูล: normalize 0..1
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0
num_classes = 10
# 3) สร้างโมเดล ANN (MLP)
model = keras.Sequential([
layers.Input(shape=(32, 32, 3)),
layers.Flatten(),
layers.Dense(512, activation="relu"),
layers.Dropout(0.3),
layers.Dense(256, activation="relu"),
layers.Dropout(0.3),
layers.Dense(num_classes, activation="softmax"),
])
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=1e-3),
loss="sparse_categorical_crossentropy",
metrics=["accuracy"]
)
history = model.fit(
x_train, y_train,
validation_split=0.1,
epochs=15,
batch_size=128,
verbose=1
)
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {test_acc:.4f}")
pred = model.predict(x_test[:10])
pred_labels = np.argmax(pred, axis=1)
print("Pred:", pred_labels)
print("True:", y_test[:10])
หลักการทำงานของโปรแกรมตัวอย่าง
โหลดข้อมูล CIFAR-10
ดึงภาพและ Label จาก keras.datasets.cifar10
เตรียมข้อมูล
ปรับค่าพิกเซลจาก 0–255 ให้อยู่ในช่วง 0–1 เพื่อให้โมเดลเรียนรู้ได้เสถียรขึ้น
สร้าง ANN แบบ MLP
ใช้ Flatten แปลงภาพเป็นเวกเตอร์ แล้วผ่าน Dense Layer พร้อม Dropout เพื่อลด Overfitting
ฝึกและประเมินผล
ฝึกด้วย Adam Optimizer และประเมินด้วย Accuracy บนชุดทดสอบ
ทำนายภาพใหม่
ใช้ model.predict() แล้วเลือกคลาสที่มีความน่าจะเป็นสูงสุดด้วย np.argmax()
การแปลผลลัพธ์ตัวอย่าง
จากสไลด์ตัวอย่าง โมเดล ANN แบบ MLP บน CIFAR-10 ได้ค่า Test Accuracy ประมาณ 0.4386 หรือประมาณ 43.86% ซึ่งถือว่าเป็นผลลัพธ์ระดับเริ่มต้นสำหรับ ANN แบบพื้นฐาน เพราะข้อมูลภาพ CIFAR-10 มีความซับซ้อนสูง
หากต้องการความแม่นยำสูงขึ้น ควรใช้ CNN (Convolutional Neural Network), Data Augmentation, Batch Normalization หรือปรับสถาปัตยกรรมของโมเดลให้เหมาะกับภาพมากขึ้น
9.9 ข้อดี ข้อจำกัด และแนวโน้มในอนาคต
ข้อดีของ ANN
- เรียนรู้รูปแบบซับซ้อนได้ดี
- รองรับข้อมูลมิติสูง
- ยืดหยุ่นต่อการออกแบบสถาปัตยกรรม
- ประยุกต์ใช้ได้หลายสาขา
ข้อจำกัดของ ANN
- ต้องใช้ข้อมูลจำนวนมาก
- ใช้เวลาฝึกสูง
- ตีความผลลัพธ์ยาก หรือเป็น Black Box
- ต้องปรับ Hyperparameters อย่างเหมาะสม
แนวโน้มการพัฒนาในอนาคต
- Deep Learning: โครงข่ายเชิงลึกที่มีหลายชั้นเพื่อเพิ่มความสามารถในการเรียนรู้
- Explainable AI (XAI): ทำให้โมเดลอธิบายเหตุผลของการทำนายได้มากขึ้น
- Hybrid Models: ผสม ANN กับ CNN, SVM หรือโมเดลอื่นเพื่อเพิ่มประสิทธิภาพ
- ANN + IoT: ใช้ ANN กับข้อมูลเซนเซอร์จำนวนมากสำหรับ Smart Farm, Smart Health และ Smart System
แบบฝึกหัดท้ายบท
- อธิบายความหมายของ Artificial Neural Network และเหตุผลที่ ANN เหมาะกับข้อมูลที่มีรูปแบบซับซ้อน
- เปรียบเทียบหน้าที่ของ Input Layer, Hidden Layer และ Output Layer
- อธิบายความแตกต่างระหว่าง Sigmoid, ReLU และ Softmax
- อธิบายกระบวนการ Forward Propagation และ Backpropagation ด้วยภาษาของตนเอง
- ทดลองรันโค้ด CIFAR-10 แล้วบันทึกค่า Accuracy ที่ได้ พร้อมอธิบายว่าทำไม ANN แบบ MLP จึงอาจแม่นยำน้อยกว่า CNN
- เสนอแนวทางปรับปรุงโมเดล ANN ให้มีประสิทธิภาพสูงขึ้นอย่างน้อย 3 วิธี
สรุปบทเรียน
ANN เป็นเทคนิคสำคัญในงาน Data Classification ที่สามารถเรียนรู้รูปแบบซับซ้อนและไม่เป็นเชิงเส้นได้ดี ผู้เรียนควรเข้าใจโครงสร้างของโครงข่าย การไหลของข้อมูลผ่าน Forward Propagation การปรับ Weight ด้วย Backpropagation และการเลือกเครื่องมืออย่าง TensorFlow + Keras เพื่อสร้างโมเดลใช้งานจริง