ปรึกษา ANN
Data Mining • Chapter 9

บทที่ 9 โครงข่ายประสาทเทียมสำหรับการจำแนกข้อมูล

เรียนรู้ Artificial Neural Network (ANN) ตั้งแต่แนวคิดพื้นฐาน โครงสร้าง Input-Hidden-Output Layer การทำงานแบบ Forward Propagation, Activation Function, Loss Function, Backpropagation ไปจนถึงการสร้างโมเดลด้วย TensorFlow และ Keras สำหรับงาน Image Classification

หัวใจของบทนี้

  • ANN เรียนรู้รูปแบบซับซ้อนและไม่เป็นเชิงเส้นได้ดี
  • เข้าใจ Neuron, Weight, Bias และ Activation Function
  • ฝึกโมเดลด้วย Backpropagation และ Gradient Descent
  • ทดลองจำแนกภาพ CIFAR-10 ด้วย Keras

ภาพรวมบทเรียน

โครงข่ายประสาทเทียม (Artificial Neural Network: ANN) เป็นเทคนิคการเรียนรู้ของเครื่องที่ได้รับแรงบันดาลใจจากโครงสร้างและการทำงานของสมองมนุษย์ ใช้หน่วยประมวลผลเล็ก ๆ ที่เรียกว่า Neuron เชื่อมต่อกันเป็นชั้น ๆ เพื่อเรียนรู้รูปแบบจากข้อมูลและนำไปใช้จำแนกข้อมูลใหม่

ในงานเหมืองข้อมูล ANN ถูกใช้กับงานจำแนกข้อมูลที่มีรูปแบบซับซ้อน เช่น การจำแนกภาพ การรู้จำเสียง การวิเคราะห์ข้อมูลทางชีวภาพ การจำแนกข้อมูลจากเซนเซอร์ IoT และข้อมูลที่มี Feature จำนวนมาก

แนวคิดสำคัญ

ANN เหมาะกับข้อมูลที่มีความสัมพันธ์ซับซ้อนหรือไม่เป็นเชิงเส้น เพราะ Hidden Layer และ Activation Function ช่วยให้โมเดลเรียนรู้รูปแบบที่ยากกว่าเส้นตรงหรือกฎง่าย ๆ ได้

ภาพรวมการทำงานของ ANN

Artificial Neural Network: Input → Hidden → Output Input Layer Hidden Layer Output Layer x₁ x₂ x₃ เรียนรู้ Pattern ด้วย Weight + Bias + Activation Class / Probability

ภาพที่ 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

พารามิเตอร์ที่โมเดลปรับระหว่างฝึก เพื่อให้ผลทำนายสอดคล้องกับค่าจริง

หนึ่ง Neuron คำนวณอย่างไร? x₁ x₂ x₃ w₁w₂w₃ Σ w·x + b Activation a = f(z) Output z = w·x + b

ภาพที่ 2 การคำนวณภายใน Neuron: รวม Feature ด้วย Weight และ Bias แล้วส่งผ่าน Activation Function

9.4 หลักการทำงานของ Artificial Neural Network

การทำงานของ ANN สำหรับการจำแนกข้อมูลแบ่งได้เป็น 3 ส่วนหลัก คือ Forward Propagation, Loss Function และ Backpropagation

Training Loop ของ ANN 1. ForwardPropagation 2. ComputeLoss 3. BackPropagation 4. UpdateWeights ทำซ้ำหลาย Epoch จน Loss ลดลงและโมเดลทำนายได้ดีขึ้น

ภาพที่ 3 วงจรการฝึกโมเดล ANN: ทำนาย → วัดความผิดพลาด → ย้อนกลับเพื่อปรับ Weight

9.4.1 Forward Propagation

ข้อมูลไหลจาก Input Layer ผ่าน Hidden Layer ไปยัง Output Layer แต่ละ Neuron จะคำนวณผลรวมถ่วงน้ำหนักแล้วส่งผ่าน Activation Function

z = w·x + b a = f(z)

โดยที่ w คือค่าน้ำหนัก, x คือข้อมูลนำเข้า, b คือไบแอส, f คือฟังก์ชันกระตุ้น และ a คือผลลัพธ์หลังผ่านฟังก์ชันกระตุ้น

9.4.2 Activation Function

Activation Function ช่วยเพิ่มความไม่เป็นเชิงเส้นให้โมเดล ทำให้ ANN เรียนรู้รูปแบบที่ซับซ้อนได้ ตัวอย่างที่ใช้บ่อย ได้แก่

Activation Function ที่ใช้บ่อย Sigmoid Binary Classification ReLU Hidden Layers Softmax Multi-class Output

ภาพที่ 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

w_new = w_old - η(∂Loss / ∂w)

โดยที่ η คือ Learning Rate หรืออัตราการเรียนรู้ ถ้าค่าสูงเกินไปอาจทำให้โมเดลแกว่งและไม่ลู่เข้า ถ้าต่ำเกินไปอาจเรียนรู้ช้า

9.5 ประเภทของการจำแนกข้อมูลด้วย ANN

ประเภทของการจำแนกข้อมูลด้วย ANN Binary2 คลาส เช่น ผ่าน/ไม่ผ่าน Multi-classหลายคลาส แต่เลือก 1 คลาส Multi-labelหนึ่งข้อมูลมีหลายป้ายกำกับ

ภาพที่ 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 ที่ช่วยให้เขียนโมเดลง่าย อ่านโค้ดง่าย และเหมาะกับการเรียนการสอน

TensorFlow + Keras TensorFlow Engine สำหรับ AI / Deep Learning GPU/TPU • Deployment • Edge AI Keras High-level API ใช้ง่าย เขียนโค้ดสั้น • Prototype เร็ว Keras อยู่บน TensorFlow ช่วยให้สร้าง ANN ได้ง่ายขึ้น

ภาพที่ 6 TensorFlow เป็น Engine ส่วน Keras เป็น API ที่ช่วยให้สร้างโมเดลง่ายขึ้น

TensorFlow

ไลบรารีโอเพนซอร์สจาก Google สำหรับสร้างและฝึกโมเดล AI รองรับ GPU/TPU, Production Deployment และ Edge AI

Keras

High-level API ของ Deep Learning ปัจจุบันรวมอยู่ใน TensorFlow ในชื่อ tf.keras เหมาะสำหรับสอนและทำ Prototype

หัวข้อTensorFlowKeras
ระดับLow-level / EngineHigh-level API
ความยากยากกว่าง่ายกว่า
ความยืดหยุ่นสูงปานกลางถึงสูง
เหมาะกับนักวิจัยและงาน Productionนักเรียน ผู้สอน และ Developer
ตัวอย่างโครงสร้าง ANN ด้วย Keras
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

Workflow: ANN Image Classification ด้วย CIFAR-10 LoadCIFAR-10 Normalize0–1 Flatten32×32×3 DenseLayers Softmax10 Classes ภาพ 32×32 RGB Output: airplane, cat, dog, ship... เลือกคลาสที่มี probability สูงสุด

ภาพที่ 7 Workflow ของโปรแกรม ANN สำหรับจำแนกภาพ CIFAR-10

Lec09 ANN CIFAR-10 Classification
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

แบบฝึกหัดท้ายบท

  1. อธิบายความหมายของ Artificial Neural Network และเหตุผลที่ ANN เหมาะกับข้อมูลที่มีรูปแบบซับซ้อน
  2. เปรียบเทียบหน้าที่ของ Input Layer, Hidden Layer และ Output Layer
  3. อธิบายความแตกต่างระหว่าง Sigmoid, ReLU และ Softmax
  4. อธิบายกระบวนการ Forward Propagation และ Backpropagation ด้วยภาษาของตนเอง
  5. ทดลองรันโค้ด CIFAR-10 แล้วบันทึกค่า Accuracy ที่ได้ พร้อมอธิบายว่าทำไม ANN แบบ MLP จึงอาจแม่นยำน้อยกว่า CNN
  6. เสนอแนวทางปรับปรุงโมเดล ANN ให้มีประสิทธิภาพสูงขึ้นอย่างน้อย 3 วิธี

สรุปบทเรียน

ANN เป็นเทคนิคสำคัญในงาน Data Classification ที่สามารถเรียนรู้รูปแบบซับซ้อนและไม่เป็นเชิงเส้นได้ดี ผู้เรียนควรเข้าใจโครงสร้างของโครงข่าย การไหลของข้อมูลผ่าน Forward Propagation การปรับ Weight ด้วย Backpropagation และการเลือกเครื่องมืออย่าง TensorFlow + Keras เพื่อสร้างโมเดลใช้งานจริง

อ่านต่อ

ต่อยอดบทเรียนเหมืองข้อมูล

เรียนต่อจาก Decision Tree, Random Forest และ SVM มาสู่ ANN เพื่อเข้าใจภาพรวมของเทคนิค Classification ในงาน Data Mining