Data Augmentation สามารถใช้ลด overfitting ได้โดยการเพิ่มข้อมูลฝึกอบรมเพิ่มเติม ซึ่งทำได้โดยการสร้างโมเดล sequential ที่ใช้เลเยอร์ 'RandomFlip'
อ่านเพิ่มเติม: TensorFlow คืออะไร และ Keras ทำงานกับ TensorFlow เพื่อสร้าง Neural Networks อย่างไร?
เราจะใช้ Keras Sequential API ซึ่งช่วยในการสร้างโมเดล sequential ที่ใช้ทำงานกับชั้นเลเยอร์แบบเรียงลำดับ โดยแต่ละเลเยอร์มี input tensor และ output tensor เพียงหนึ่งเดียว
Neural network ที่มีอย่างน้อยหนึ่งเลเยอร์แบบ Convolutional เรียกว่า Convolutional Neural Network เราสามารถใช้ CNN เพื่อสร้างโมเดลการเรียนรู้
Image classifier ถูกสร้างโดยใช้ keras.Sequential model และโหลดข้อมูลด้วย preprocessing.image_dataset_from_directory ข้อมูลถูกโหลดจากดิสก์อย่างมีประสิทธิภาพ Overfitting ถูกตรวจจับและมีการใช้เทคนิคเพื่อลดทอน ได้แก่ data augmentation และ dropout มีรูปภาพดอกไม้ 3700 รูป ชุดข้อมูลนี้มี 5 โฟลเดอร์ย่อย โดยมีหนึ่งโฟลเดอร์ต่อคลาส ได้แก่:
daisy, dandelion, roses, sunflowers, และ tulips
เราใช้ Google Colaboratory เพื่อรันโค้ดด้านล่าง Google Colab ช่วยให้รันโค้ด Python ผ่านเบราว์เซอร์ ไม่ต้องตั้งค่า และเข้าถึง GPU ฟรี Colaboratory สร้างขึ้นบน Jupyter Notebook
เมื่อจำนวนตัวอย่างฝึกอบรมน้อย โมเดลจะเรียนรู้จาก noise หรือรายละเอียดที่ไม่ต้องการจากตัวอย่างฝึกอบรม ส่งผลให้ประสิทธิภาพของโมเดลกับตัวอย่างใหม่ลดลง
เนื่องจาก overfitting โมเดลจะไม่สามารถ generalize ได้ดีกับชุดข้อมูลใหม่ มีหลายวิธีป้องกัน overfitting เราจะใช้ data augmentation เพื่อแก้ปัญหา Data augmentation สร้างข้อมูลฝึกอบรมเพิ่มเติมจากตัวอย่างที่มีอยู่โดยเพิ่มการแปลงแบบสุ่มที่ให้ภาพดูน่าเชื่อถือ
สิ่งนี้ช่วยให้โมเดลได้สัมผัสกับมุมมองมากขึ้นของข้อมูล ช่วยให้โมเดล generalize ได้ดียิ่งขึ้น ตัวอย่างดังนี้:
ตัวอย่าง
print("Using data augmentation to eliminate overfitting")
data_augmentation = keras.Sequential(
[
layers.experimental.preprocessing.RandomFlip("horizontal", input_shape=(img_height, img_width, 3)),
layers.experimental.preprocessing.RandomRotation(0.1),
layers.experimental.preprocessing.RandomZoom(0.1),
]
)
Code credit - https://www.tensorflow.org/tutorials/images/classification
ผลลัพธ์
Using data augmentation to eliminate overfitting
คำอธิบาย
Data augmentation สามารถนำไปใช้ได้โดยใช้เลเยอร์จาก tf.keras.layers.experimental.preprocessing
เลเยอร์เหล่านี้ถูกรวมอยู่ในโมเดลเหมือนเลเยอร์อื่นๆ และรันบน GPU
ทำเพื่อกำจัดหรือลด overfitting