ทำไม TensorFlow ไม่พอดีกับโมเดลเชิงเส้นอย่างง่ายถ้าฉันลดข้อผิดพลาดค่าเฉลี่ยสัมบูรณ์แทนข้อผิดพลาดกำลังสองเฉลี่ย?


10

ในบทนำฉันเพิ่งจะเปลี่ยน

loss = tf.reduce_mean(tf.square(y - y_data))

ถึง

loss = tf.reduce_mean(tf.abs(y - y_data)) 

และโมเดลไม่สามารถเรียนรู้การสูญเสียที่ยิ่งใหญ่ขึ้นตามกาลเวลา ทำไม?

คำตอบ:


17

ฉันลองและได้ผลลัพธ์เดียวกัน

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

การแก้ไขที่ง่ายที่สุดคือการลดอัตราการเรียนรู้เช่นสายการเปลี่ยนแปลง

optimizer = tf.train.GradientDescentOptimizer(0.5)

ถึง

optimizer = tf.train.GradientDescentOptimizer(0.05)

นอกจากนี้ยังมีการเล่นกับเครื่องมือเพิ่มประสิทธิภาพที่แตกต่างกัน บางคนจะสามารถรับมือกับ.absการสูญเสียฐานที่ดีขึ้น

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