ที่ผ่านมาอัตราการเรียนรู้ของสิงคโปร์ลดลงเป็นอย่างไร


23

หากคุณดูเอกสารประกอบhttp://keras.io/optimizers/จะมีพารามิเตอร์ในค่า SGD สำหรับการสลายตัว ฉันรู้ว่าสิ่งนี้ช่วยลดอัตราการเรียนรู้เมื่อเวลาผ่านไป อย่างไรก็ตามฉันไม่สามารถคิดออกว่ามันทำงานอย่างไร มันเป็นค่าที่คูณด้วยอัตราการเรียนรู้เช่นlr = lr * (1 - decay) มันเป็นเลขชี้กำลังหรือไม่? ฉันจะดูได้อย่างไรว่าคะแนนการเรียนรู้ของฉันที่ใช้อยู่ เมื่อฉันพิมพ์model.optimizer.lr.get_value()หลังจากทำงานพอดีกับช่วงเวลาสองสามครั้งมันจะให้อัตราการเรียนรู้ดั้งเดิมแม้ว่าฉันจะตั้งค่าการสลายตัว

ฉันต้องตั้งค่า nesterov = True เพื่อใช้โมเมนตัมหรือมีโมเมนตัมสองประเภทที่ฉันสามารถใช้ได้ ตัวอย่างเช่นมีประเด็นในการทำเช่นนี้sgd = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = False)

คำตอบ:


24

เอกสารที่คุณอ้างถึงรวมถึงการอ้างอิงไปยังแหล่ง Python (เพียงคลิกที่[Source]ลิงค์ในสถานที่ที่เหมาะสม) ที่สามารถใช้เพื่อตอบคำถามของคุณ นี่คือบรรทัดที่เกี่ยวข้องมากที่สุดซึ่งแสดงวิธีการdecayปรับเปลี่ยนอัตราการเรียนรู้:

lr = self.lr * (1. / (1. + self.decay * self.iterations))

nesterovตัวเลือกไม่ได้จะต้องมีการตั้งค่าเป็น True โมเมนตัมที่จะใช้; มันส่งผลให้มีการใช้โมเมนตัมในรูปแบบที่แตกต่างจากที่เห็นได้จากแหล่งอื่น:

v = self.momentum * m - lr * g  # velocity

if self.nesterov:
    new_p = p + self.momentum * v - lr * g
else:
    new_p = p + v

1
และself.iterationsอ้างถึงจำนวนก้าวของแต่ละดอลล่าร์สิงคโปร์ไม่ใช่จำนวนยุค
guillefix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.