แก้ไขแล้ว: อัตราการเรียนรู้ keras ของ adam Optimizer ลดลง

การปรับปรุงครั้งล่าสุด: 09/25/2023
ผู้แต่ง: หลาม SourceTrail

แน่นอนเรามาเริ่มกันที่บทความกันดีกว่า

โมเดลการเรียนรู้เชิงลึกได้กลายเป็นส่วนสำคัญของเทคโนโลยีในยุคปัจจุบัน และอัลกอริธึมการปรับแต่งต่างๆ เช่น Adam Optimizer มีบทบาทสำคัญในการทำงานของโมเดลเหล่านี้ Keras เป็นไลบรารี Python โอเพนซอร์สฟรีที่มีประสิทธิภาพและใช้งานง่ายสำหรับการพัฒนาและประเมินโมเดลการเรียนรู้เชิงลึก โดยได้รวมเอาไลบรารีการคำนวณเชิงตัวเลขที่มีประสิทธิภาพอย่าง Theano และ TensorFlow ไว้ด้วยความสำคัญของการปรับอัตราการเรียนรู้ในอัลกอริธึมการปรับแต่งเหล่านี้มีความสำคัญอย่างยิ่ง เนื่องจากสามารถส่งผลโดยตรงต่อกระบวนการเรียนรู้ของโมเดล ในบทความนี้ เราจะกล่าวถึงวิธีการลดอัตราการเรียนรู้ใน Adam Optimizer ใน Keras ทีละขั้นตอน นอกจากนี้เราจะกล่าวถึงไลบรารีและฟังก์ชันที่เกี่ยวข้องในกระบวนการนี้ด้วย

ความจำเป็นในการปรับอัตราการเรียนรู้

อัตราการเรียนรู้ (Learning rate)เป็นพารามิเตอร์สำคัญในอัลกอริธึมการหาค่าเหมาะสมที่สุด รวมถึงAdam optimizerด้วย มันกำหนดขนาดของขั้นตอนในแต่ละรอบการฝึกฝนขณะที่เคลื่อนเข้าหาค่าต่ำสุดของฟังก์ชันความสูญเสีย โดยเฉพาะอย่างยิ่ง อัตราการเรียนรู้ที่ต่ำกว่าจะต้องการจำนวนรอบการฝึกฝนที่มากขึ้นเนื่องจากขั้นตอนการอัปเดตน้ำหนักที่เล็กกว่า ในขณะที่อัตราการเรียนรู้ที่สูงกว่าอาจถึงจุดบรรจบได้เร็วขึ้น แต่มีความเสี่ยงที่จะเลยจุดต่ำสุดของฟังก์ชันความสูญเสียไป

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

การดำเนินการลดอัตราการเรียนรู้ใน Keras

ใน Keras การปรับเปลี่ยนนี้สามารถทำได้ด้วยความช่วยเหลือของฟังก์ชันการโทรกลับ LearningRateScheduler และ ลดLROnPlateau

from keras.callbacks import LearningRateScheduler
import numpy as np

# Learning rate schedule
initial_learning_rate = 0.1
decay = initial_learning_rate / epochs

def lr_time_based_decay(epoch, lr):
    return lr * 1 / (1 + decay * epoch)

# Fit the model on the batches generated
model.fit(X_train, Y_train, epochs=epochs,callbacks=[LearningRateScheduler(lr_time_based_decay, verbose=1)])

LearningRateScheduler ตามยุคสมัย สามารถเปลี่ยนอัตราการเรียนรู้ได้ ในขณะที่ RemoveLROnPlateau จะตรวจสอบปริมาณ และหากไม่พบการปรับปรุงสำหรับจำนวนยุค 'ความอดทน' อัตราการเรียนรู้ก็จะลดลง

การทำงานร่วมกับอดัม ออพติไมเซอร์

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

from keras.optimizers import Adam

# Applying learning rate decay 
adam_opt = Adam(lr=0.001, decay=1e-6)
model.compile(loss='binary_crossentropy', optimizer=adam_opt)

ในโค้ดด้านบน เรากำลังกำหนด adam_opt ตัวเพิ่มประสิทธิภาพ Adam ด้วยอัตราการเรียนรู้ 0.001 และอัตราการสลายตัวที่ 1e-6

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

กระทู้ที่เกี่ยวข้อง: