0Pricing
Learn AI with Python · บทเรียน

แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน

การสกัดคุณลักษณะเทียบกับการปรับจูนแบบละเอียด เลเยอร์ที่ตรึงไว้ และกรณีที่การเรียนรู้แบบถ่ายโอนมีประโยชน์

แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

การเรียนรู้แบบถ่ายโอนคืออะไร

การเรียนรู้แบบถ่ายโอนนำโมเดลที่ฝึกด้วยชุดข้อมูลขนาดใหญ่กลับมาใช้เป็นจุดเริ่มต้นสำหรับงานใหม่ที่เกี่ยวข้อง แทนที่จะเรียนรู้คุณลักษณะด้านภาพตั้งแต่ต้น คุณสามารถนำคุณลักษณะที่โครงข่ายเรียนรู้ไว้แล้วมาใช้ได้

วิธีนี้ลดปริมาณข้อมูลและทรัพยากรการคำนวณที่ต้องใช้เพื่อให้ได้ความแม่นยำสูงลงอย่างมาก

พื้นฐานของ ImageNet

โมเดลด้านภาพส่วนใหญ่ที่ฝึกไว้ล่วงหน้าถูกฝึกด้วย ImageNet ซึ่งมีภาพประมาณ 1.4 ล้านภาพ ครอบคลุม 1000 คลาส

ระหว่างการฝึกนี้ โครงข่ายจะเรียนรู้ลำดับชั้นของคุณลักษณะ ได้แก่ ขอบและสีในชั้นต้น พื้นผิวในชั้นกลาง และส่วนต่าง ๆ ของวัตถุใกล้ชั้นบน คุณลักษณะระดับต่ำเหล่านี้ถ่ายโอนไปใช้กับงานด้านภาพเกือบทุกประเภทได้ดี

เหตุใดคุณลักษณะระยะแรกจึงถ่ายโอนได้

ชั้นคอนโวลูชันแรก ๆ ตรวจจับรูปแบบทั่วไป เช่น ขอบ ก้อนรูปร่าง และการไล่ระดับสี ซึ่งปรากฏในภาพธรรมชาติทุกภาพ ไม่ว่าจะเป็นภาพแมว ภาพเอกซเรย์ หรือภาพถ่ายดาวเทียม

ชั้นที่ลึกกว่าจะมีความเฉพาะเจาะจงกับงานมากขึ้น เพราะนำขอบเหล่านั้นมาประกอบเป็นส่วนต่าง ๆ ของวัตถุใน ImageNet นี่จึงเป็นเหตุผลที่เรามักเก็บชั้นต้นไว้ แล้วเปลี่ยนหรือฝึกชั้นหลังใหม่

กลยุทธ์ที่ 1: การสกัดคุณลักษณะ

การสกัดคุณลักษณะจะตรึงทุกชั้นของฐานที่ฝึกไว้ล่วงหน้า ทำให้น้ำหนักของฐานไม่เปลี่ยนแปลง ฐานจะทำหน้าที่เป็นตัวสกัดคุณลักษณะแบบคงที่ และคุณจะฝึกเฉพาะส่วนหัวการจำแนกใหม่ขนาดเล็กที่อยู่ด้านบนเท่านั้น

ใช้วิธีนี้เมื่อชุดข้อมูลของคุณมีขนาดเล็กและคล้ายกับ ImageNet วิธีนี้ทำงานรวดเร็วและต้านทานการเรียนรู้เกินพอดี เนื่องจากมีพารามิเตอร์ที่สามารถฝึกได้จำนวนน้อย

base.trainable = False

model = Sequential([
    base,                      # frozen ImageNet features
    GlobalAveragePooling2D(),
    Dense(num_classes, activation="softmax")  # only this trains
])

กลยุทธ์ที่ 2: การปรับจูนละเอียด

การปรับจูนละเอียดจะปลดการตรึงชั้นบนของฐาน แล้วฝึกชั้นเหล่านั้นร่วมกับส่วนหัว ทำให้โครงข่ายปรับคุณลักษณะระดับสูงให้เข้ากับข้อมูลเฉพาะของคุณได้

ใช้วิธีนี้เมื่อคุณมีข้อมูลมากขึ้นหรือโดเมนของคุณแตกต่างจาก ImageNet เช่น ภาพสแกนทางการแพทย์ ควรปรับจูนละเอียดด้วยอัตราการเรียนรู้ที่ต่ำมากเสมอ เพื่อหลีกเลี่ยงการทำลายน้ำหนักที่ฝึกไว้ล่วงหน้า

การสกัดคุณลักษณะเทียบกับการปรับจูนละเอียด

  • การสกัดคุณลักษณะ: ตรึงฐาน ฝึกเฉพาะส่วนหัว ทำงานรวดเร็วมาก เหมาะที่สุดสำหรับข้อมูลขนาดเล็กและคล้ายกัน
  • การปรับจูนละเอียด: ปลดการตรึงชั้นบนของฐานและฝึกส่วนหัวร่วมกัน ทำงานช้ากว่า เหมาะที่สุดสำหรับข้อมูลขนาดใหญ่หรือแตกต่างกัน

แนวทางที่ใช้กันทั่วไปคือทำการสกัดคุณลักษณะก่อน จากนั้นจึงปรับจูนละเอียดในระยะที่สองเมื่อส่วนหัวเริ่มคงที่

ข้อกำหนดด้านปริมาณข้อมูล

ปริมาณข้อมูลที่คุณมีจะเป็นตัวกำหนดกลยุทธ์:

  • ภาพไม่กี่ร้อยภาพ: ใช้การสกัดคุณลักษณะเท่านั้น (ตรึงทุกอย่าง)
  • ไม่กี่พันภาพ: สกัดคุณลักษณะก่อน จากนั้นปรับจูนละเอียดเฉพาะไม่กี่ชั้นบน
  • หลายหมื่นภาพขึ้นไป: ปรับจูนละเอียดส่วนที่ใหญ่ขึ้นของฐาน หรืออาจปรับจูนทั้งโครงข่าย

ข้อมูลยิ่งน้อยยิ่งควรตรึงชั้นไว้มากขึ้น เพราะพารามิเตอร์ที่สามารถฝึกได้น้อยลงจะลดความเสี่ยงของการเรียนรู้เกินพอดี

การเปลี่ยนส่วนหัวการจำแนก

โมเดล ImageNet ให้ผลลัพธ์เป็น 1000 คลาส งานของคุณอาจมีจำนวนคลาสแตกต่างกัน ดังนั้นให้ลบส่วนบนเดิมออก (include_top=False) แล้วติดตั้งส่วนหัวของคุณเองที่มีขนาดตรงกับจำนวนคลาสของคุณ

from tensorflow.keras import layers, Model

x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.2)(x)
outputs = layers.Dense(5, activation="softmax")(x)  # 5 custom classes
model = Model(base.input, outputs)

การประมวลผลล่วงหน้าต้องตรงกัน

ตระกูลโมเดลที่ฝึกไว้ล่วงหน้าแต่ละตระกูลคาดหวังอินพุตที่ปรับขนาดด้วยวิธีเดียวกับตอนฝึกด้วย ImageNet การใช้ preprocess_input ที่ตรงกันเป็นสิ่งจำเป็น มิฉะนั้นความแม่นยำจะลดลงอย่างมาก

from tensorflow.keras.applications.resnet50 import preprocess_input

# Scale pixels exactly as ResNet50 expects
x = preprocess_input(raw_image_batch)

การควบคุมอัตราการเรียนรู้

ระหว่างการสกัดคุณลักษณะ อัตราการเรียนรู้ปกติ เช่น 1e-3 ก็เพียงพอ เพราะมีเพียงส่วนหัวใหม่ที่ฝึกเท่านั้น

ระหว่างการปรับจูนละเอียด คุณต้องลดอัตราการเรียนรู้ลงให้เล็กมาก เช่น 1e-5 การปรับครั้งใหญ่จะลบล้างน้ำหนัก ImageNet ที่เรียนรู้มาอย่างพิถีพิถัน ซึ่งเรียกปรากฏการณ์นี้ว่าการลืมอย่างรุนแรง

ขั้นตอนการทำงานทั่วไป

  1. โหลดฐานที่ฝึกไว้ล่วงหน้าด้วย include_top=False
  2. ตรึงฐานและฝึกส่วนหัวใหม่ (การสกัดคุณลักษณะ)
  3. ปลดการตรึงชั้นบนและฝึกใหม่ด้วยอัตราการเรียนรู้ที่เล็กมาก (การปรับจูนละเอียด)
  4. ประเมินผลและแปลงโมเดลเพื่อการนำไปใช้งาน

แนวทางแบบแบ่งระยะนี้ให้ความแม่นยำสูงได้แม้ใช้ชุดข้อมูลขนาดไม่ใหญ่มาก

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับกลยุทธ์การเรียนรู้แบบถ่ายโอนของคุณ

สรุป

คุณได้เรียนรู้ว่าการเรียนรู้แบบถ่ายโอนนำคุณลักษณะที่ฝึกไว้ล่วงหน้าด้วย ImageNet กลับมาใช้ (ภาพ 1.4 ล้านภาพ, 1000 คลาส) การสกัดคุณลักษณะจะตรึงฐานไว้สำหรับชุดข้อมูลขนาดเล็กและคล้ายกัน ส่วนการปรับจูนละเอียดจะปลดการตรึงชั้นบนด้วยอัตราการเรียนรู้ที่เล็กมากสำหรับข้อมูลขนาดใหญ่หรือแตกต่างกัน

ใช้การประมวลผลล่วงหน้าให้ตรงกับฐาน เปลี่ยนส่วนหัวให้เหมาะกับคลาสของคุณ และใช้ขั้นตอนการทำงานแบบแบ่งระยะ ต่อไปเราจะนำแนวคิดนี้ไปเขียนโค้ดด้วย VGG16 และ ResNet50

คำถามที่พบบ่อย

บทเรียน “แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน”

การสกัดคุณลักษณะเทียบกับการปรับจูนแบบละเอียด เลเยอร์ที่ตรึงไว้ และกรณีที่การเรียนรู้แบบถ่ายโอนมีประโยชน์ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน
  2. การใช้ VGG16 และ ResNet50 เป็นแบบจำลองพื้นฐาน
  3. การปรับจูนแบบละเอียด: การยกเลิกการตรึงและการฝึกใหม่
  4. MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย
← กลับไปที่ Learn AI with Python