Model: "sequential" คืออะไร ทำงานอย่างไร

image

ใน Keras, Model: “sequential” หมายถึง Sequential Model ซึ่งเป็นรูปแบบของโมเดลที่ง่ายและเหมาะสมสำหรับกรณีที่โมเดลมีการเชื่อมโยงเลเยอร์ต่างๆ ตามลำดับ (sequential layers). โมเดลประเภทนี้จะถูกสร้างขึ้นโดยการต่อ layers เข้าด้วยกันแบบ linearly (ตามลำดับหนึ่ง).

การใช้งาน Sequential Model:

  1. ลำดับของเลเยอร์ (Layer Order):
  • ในโมเดลประเภท Sequential การเชื่อมต่อของเลเยอร์จะเป็นแบบ linear ซึ่งหมายความว่า output ของเลเยอร์หนึ่งจะเป็น input ของเลเยอร์ถัดไป.
  • เลเยอร์ต่างๆ จะถูกเพิ่มเข้ามาใน model ทีละเลเยอร์ โดยการใช้คำสั่ง add() หรือการระบุเลเยอร์ในลิสต์ของโมเดล.
  1. โครงสร้าง:
  • Sequential ใช้เมื่อต้องการโมเดลที่เชื่อมต่อเลเยอร์เป็นลำดับหนึ่ง เช่น การทำงานกับปัญหาการจำแนกประเภทภาพ (Image Classification) หรือปัญหาที่ข้อมูลมีลำดับชัดเจน.
  • โมเดลนี้จะไม่รองรับกรณีที่ต้องการการเชื่อมต่อข้ามเลเยอร์ (เช่น Skip Connections) หรือกรณีที่โมเดลมีหลาย input/output.

ตัวอย่างของ Sequential Model:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# สร้างโมเดล Sequential
model = Sequential([
    Dense(64, activation='relu', input_shape=(784,)),  # Layer แรก
    Dense(10, activation='softmax')  # Layer ที่สอง (output)
])

ในตัวอย่างนี้:

  • Layer 1: เป็น Dense layer ที่มี 64 units และใช้ ReLU เป็น activation function.
  • Layer 2: เป็น Dense layer ที่ใช้ softmax activation function สำหรับการจำแนกประเภท (classification) ที่มี 10 classes.

ข้อดีของ Sequential Model:

  • เรียบง่าย: เหมาะกับกรณีที่โมเดลมีการเชื่อมโยงเลเยอร์ตามลำดับอย่างชัดเจน.
  • สะดวกในการใช้งาน: คุณสามารถสร้างโมเดลได้โดยไม่ต้องกังวลเกี่ยวกับการจัดการกับหลาย input/output หรือการเชื่อมต่อข้ามเลเยอร์.

ข้อจำกัดของ Sequential Model:

  • ไม่รองรับการเชื่อมต่อหลาย input/output: หากคุณต้องการสร้างโมเดลที่มีหลาย input หรือหลาย output หรือมีการเชื่อมต่อข้ามเลเยอร์ (เช่น residual connections), คุณจะต้องใช้ Functional API ของ Keras.

ตัวอย่างการใช้ Sequential Model ในการสร้างโมเดล:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

# สร้างโมเดล Sequential
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(64, activation='relu'),
    Dense(1, activation='sigmoid')
])

# สรุปโครงสร้างโมเดล
model.summary()

ในตัวอย่างนี้:

  • Conv2D layer: ใช้สำหรับการแปลงภาพ (convolutional operation).
  • MaxPooling2D layer: ใช้สำหรับการลดขนาด (downsampling).
  • Flatten layer: ใช้เพื่อแปลงข้อมูลที่เป็น 2D จาก Conv2D และ MaxPooling2D ให้เป็น 1D.
  • Dense layer: เป็นเลเยอร์ fully connected ที่ใช้ในการทำนาย (prediction).

สรุป:

Sequential Model คือโมเดลที่เชื่อมโยงเลเยอร์ต่างๆ ในลำดับโดยตรงและเหมาะสำหรับปัญหาที่มีลำดับข้อมูลที่ชัดเจน เช่น การจำแนกประเภท, การทำนายข้อมูลต่อเนื่อง, หรือปัญหาที่ไม่ต้องการการเชื่อมต่อหลาย input/output. Keras ใช้ Sequential Model ในกรณีนี้เพราะมันง่ายและสะดวกในการใช้งานเมื่อไม่ต้องการโครงสร้างที่ซับซ้อน.