ความแตกต่างระหว่างน้ำหนักสุทธิของระบบประสาทและอัตราการเรียนรู้


94

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

คำตอบ:


161

อัตราการเรียนรู้เป็นพารามิเตอร์ที่กำหนดว่าขั้นตอนการอัปเดตมีผลต่อค่าปัจจุบันของตุ้มน้ำหนักเท่าใด ในขณะที่การลดน้ำหนักเป็นคำเพิ่มเติมในกฎการอัปเดตน้ำหนักที่ทำให้น้ำหนักลดลงเป็นศูนย์ชี้แจงหากไม่มีการกำหนดเวลาการปรับปรุงอื่น ๆ

สมมุติว่าเรามีฟังก์ชั่นค่าใช้จ่ายหรือข้อผิดพลาดที่เราต้องการลดให้น้อยที่สุด โคตรลาดชันบอกให้เราแก้ไขน้ำหนักในทิศทางของโคตรลาดชันใน : ที่เป็นอัตราการเรียนรู้และถ้ามันมีขนาดใหญ่คุณจะมีการปรับเปลี่ยนขนาดใหญ่ตามลําดับของน้ำหนัก (โดยทั่วไปก็ไม่ควรจะมีขนาดใหญ่เกินไปมิฉะนั้นคุณจะแหกขั้นต่ำในท้องถิ่นในการทำงานของค่าใช้จ่ายของคุณ)E(w)wE

wiwiηEwi,
ηwi

เพื่อ จำกัด จำนวนพารามิเตอร์ฟรีในโมเดลของคุณอย่างมีประสิทธิภาพเพื่อหลีกเลี่ยงการปรับตัวมากเกินไปคุณสามารถกำหนดฟังก์ชั่นค่าใช้จ่ายเป็นประจำได้ วิธีง่ายๆในการทำเช่นนั้นคือการแนะนำค่าเฉลี่ยแบบเกาส์เป็นศูนย์ก่อนน้ำหนักซึ่งเทียบเท่ากับการเปลี่ยนฟังก์ชันต้นทุนเป็น2} ในทางปฏิบัติสิ่งนี้จะลงโทษน้ำหนักที่มากและ จำกัด เสรีภาพในโมเดลของคุณได้อย่างมีประสิทธิภาพ พารามิเตอร์การทำให้เป็นมาตรฐานตัวกำหนดวิธีที่คุณแลกเปลี่ยนราคาเดิมกับการลงโทษน้ำหนักจำนวนมากE~(w)=E(w)+λ2w2λE

ใช้การไล่ระดับสีแบบลาดชันกับฟังก์ชันต้นทุนใหม่นี้ที่เราได้รับ: คำใหม่มาจากการทำให้เป็นปกติจะทำให้น้ำหนักสลายตามสัดส่วนกับขนาดของมัน

wiwiηEwiηλwi.
ηλwi

2
ขอบคุณสำหรับคำอธิบายที่เป็นประโยชน์ คำถาม: ในแพ็คเกจ "nnet" R มีพารามิเตอร์ที่ใช้ในการฝึกอบรมของโครงข่ายประสาทเทียมที่เรียกว่า "ผุ" คุณรู้หรือไม่ว่าการสลายตัวสอดคล้องกับแลมบ์ดาของคุณหรือไปยังเอ * ของคุณแลมบ์ดา?
Andrea Ianni ௫

3
ฉันจะเพิ่มการลดน้ำหนักนั้นเป็นสิ่งเดียวกันกับการทำให้เป็นปกติของ L2 สำหรับผู้ที่คุ้นเคยในภายหลัง
Sergei

2
@ Sergei ไม่โปรดหยุดการเผยแพร่ข้อมูลที่ผิดนี้! นี่เป็นจริงในกรณีพิเศษของวานิลลา SGD เท่านั้น ดูการแก้ไขการลดน้ำหนักของกระดาษอดัม
LucasB

เพื่อชี้แจง: ในเวลาที่เขียนเอกสาร PyTorch สำหรับอดัมใช้คำว่า "การสลายตัวของน้ำหนัก" (เรียกว่า "L2 โทษ") โดยอ้างอิงจากสิ่งที่ฉันคิดว่าผู้เขียนเหล่านั้นเรียกระเบียบ L2 ถ้าฉันเข้าใจถูกต้องคำตอบนี้อ้างถึง SGD โดยไม่มีโมเมนตัมซึ่งทั้งสองนั้นเทียบเท่ากัน
Dylan F

14

นอกจากคำตอบของ @ mrig (+1) สำหรับแอปพลิเคชันเครือข่ายประสาทจำนวนมากการใช้อัลกอริธึมการเพิ่มประสิทธิภาพขั้นสูงนั้นดีกว่าเช่น Levenberg-Marquardt (เครือข่ายขนาดกลางขนาดเล็ก) หรือสัดส่วนการไล่ระดับคอนจูเกตคอนจูเกต เครือข่าย) เนื่องจากสิ่งเหล่านี้จะเร็วกว่ามากและไม่จำเป็นต้องตั้งค่าอัตราการเรียนรู้ (อัลกอริทึมทั้งสองปรับอัตราการเรียนรู้โดยใช้ความโค้งเช่นเดียวกับการไล่ระดับสี) แพคเกจเครือข่ายหรือไลบรารีโครงข่ายประสาทที่เหมาะสมใด ๆ จะมีการใช้งานหนึ่งในวิธีการเหล่านี้แพ็คเกจใด ๆ ที่ไม่น่าจะล้าสมัย ฉันใช้ NETLAB libary สำหรับ MATLAB ซึ่งเป็นชุดที่ยอดเยี่ยม


สิ่งที่เกี่ยวกับการเพิ่มประสิทธิภาพตาม Rprop algos? พวกเขาจะกองขึ้นได้อย่างไร
พลังงาน

4
ฉันคิดว่าคนส่วนใหญ่ใช้ตัวแปร rprop + momentum เช่น RMSProp, adagrad, SGD + nesterov ดูระดับ cs231
facuq

1
แน่นอนมันขึ้นอยู่กับใบสมัครของคุณ แต่สำหรับชุดข้อมูล / เครือข่ายขนาดใหญ่ที่ทันสมัยตอนนี้ฉันคิดว่าผู้คนกำลังค้นหาอัลกอริทึมเหล่านั้นที่ฉันกล่าวถึงเหมาะสมกว่า
facuq

6
@DikranMarsupial อาจเป็นเพราะทุกวันนี้ (เกือบห้าปีหลังจากคำตอบของคุณ) คนมักจะใช้อดัมแทน?
วิทยาศาสตร์คอมพิวเตอร์

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

0

ฉันพูดง่ายๆ:

learning_rate:มันควบคุมความเร็วของแบบจำลองโครงข่ายประสาทเทียมที่เรียนรู้ปัญหาอย่างรวดเร็วหรือช้า

อ้างอิง: https://machinelearningmastery.com/learning-rate-for-deep-learning-neural-networks/

wight_decay:มันเป็นเทคนิคการทำให้เป็นมาตรฐานที่ใช้เพื่อหลีกเลี่ยงการปรับตัวมากเกินไป

อ้างอิง: https://metacademy.org/graphs/concepts/weight_decay_neural_networks

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