อันตรายของการตั้งค่าน้ำหนักเริ่มต้นทั้งหมดให้เป็นศูนย์ใน Backpropagation


30

ทำไมการเริ่มต้นให้น้ำหนักด้วยเลขศูนย์จึงเป็นอันตราย มีตัวอย่างง่ายๆที่แสดงให้เห็นหรือไม่?


ดูเหมือนว่าตาข่ายคลาสสิก XOR 2-1 เป็นตัวอย่างที่ดี แต่ฉันขอขอบคุณการใช้เหตุผลเชิงทฤษฎี
user8078

1
คำตอบทั่วไปอย่างสูงซึ่งอาจหรืออาจไม่สามารถใช้ได้ที่นี่คือเมื่อใดก็ตามที่น้ำหนักใหม่เป็นทวีคูณของน้ำหนักเก่าแล้วน้ำหนักศูนย์ไม่สามารถเปลี่ยนแปลงได้ นั่นเป็นอันตรายต่อการเรียนรู้
Nick Cox

มีคำตอบที่ดีอยู่แล้วว่าทำไมไม่เริ่มต้นน้ำหนักให้เป็นศูนย์ ลิงค์ต่อไปนี้จะเพิ่มแสงสว่างใน 'วิธีการเลือกน้ำหนักเริ่มต้น?' staff.itee.uq.edu.au/janetw/cmc/chapters/BackProp/index2.htmlหวังว่ามันจะช่วยผู้อ่านคนอื่น ๆ
doer_uvc

@NickCox ตุ้มน้ำหนักที่นี่คือทวีคูณของเลเยอร์น้ำหนักถัดไปและเลเยอร์สุดท้ายไม่ได้เป็นตุ้มน้ำหนักอื่น ๆ อีกหลายชั้น - ดังนั้นจึงไม่สามารถใช้ได้ที่นี่
David Refaeli

คำตอบ:


21

แก้ไขดูความคิดเห็นของอัลฟ่าด้านล่าง ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับอวนประสาทดังนั้นฉันจะเลื่อนเขาไป

ความเข้าใจของฉันแตกต่างจากคำตอบอื่น ๆ ที่โพสต์ไว้ที่นี่

ฉันค่อนข้างมั่นใจว่าการตีกลับเป็นเรื่องที่เกี่ยวข้องกับการเพิ่มน้ำหนักที่มีอยู่ไม่ใช่การคูณ จำนวนเงินที่คุณเพิ่มจะถูกกำหนดโดยกฎเดลต้า โปรดทราบว่า wij ไม่ปรากฏทางด้านขวามือของสมการ

ความเข้าใจของฉันคือมีเหตุผลที่ดีอย่างน้อยสองประการที่จะไม่กำหนดน้ำหนักเริ่มต้นเป็นศูนย์:

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

  • ประการที่สองถ้าเซลล์ประสาทเริ่มต้นด้วยน้ำหนักเท่ากันเซลล์ประสาททั้งหมดจะทำตามการไล่ระดับสีเดียวกันและจะจบลงด้วยการทำสิ่งเดียวกันกับอีกคนหนึ่งเสมอ


6
"จำนวนที่คุณเพิ่มถูกระบุโดยกฎเดลต้าโปรดทราบว่า wij ไม่ปรากฏที่ด้านขวาของสมการ" - สิ่งนี้เป็นจริงสำหรับเครือข่ายประสาทที่ไม่มีเลเยอร์ที่ซ่อนอยู่! แต่คุณพูดถึงอีกสองประเด็นนั่นคือข้อโต้แย้งที่ดีในการเริ่มต้น ANN ด้วยน้ำหนักที่เท่ากัน
alfa

1
ฉันคิดว่ามันเป็นเหตุผลหลักที่สอง - เช่นในเครือข่ายการเชื่อมต่อไปข้างหน้าอย่างสมบูรณ์แบบพื้นฐานหากแต่ละเลเยอร์เริ่มต้นด้วยน้ำหนักเดียวกันแล้วตามที่คุณแนะนำโหนดทั้งหมดตามเส้นทางเดียวกันและซ้ำซ้อน ความประทับใจของฉันคือเครือข่ายส่วนใหญ่ที่มีคุณสมบัติมากกว่าหนึ่งอย่างจะไม่ต่อสู้กับ minima ท้องถิ่น การเริ่มต้นแบบสุ่มเพียงอย่างเดียวไม่ได้ป้องกันเครือข่ายไม่ให้ติดขัด แต่การใช้การกำหนดค่าเริ่มต้นแบบสุ่มที่แตกต่างกันหลายครั้งจะบอกคุณว่าการวนซ้ำที่เฉพาะเจาะจงมีปัญหาขั้นต่ำในท้องถิ่นหรือไม่
Tahlor

เหตุผลที่สองเป็นเท็จ? open.wolframcloud.com/env/…
3180

อินพุตแตกต่างกันทำให้สมมาตรของน้ำหนักแตกต่างกัน
user3180

คุณเพิ่มอนุพันธ์และอนุพันธ์นั้นเป็นการคูณด้วยกฎลูกโซ่
David Refaeli

7

หากคุณคิดถึงน้ำหนักในฐานะนักบวชเช่นเดียวกับในเครือข่าย Bayesian คุณได้ตัดความเป็นไปได้ใด ๆ ที่อินพุตเหล่านั้นอาจส่งผลกระทบต่อระบบ อีกคำอธิบายก็คือ backpropagation ระบุชุดของน้ำหนักที่ช่วยลดความแตกต่างยกกำลังสองถ่วงน้ำหนักระหว่างเป้าหมายและค่าที่สังเกตได้ (E) แล้วอัลกอริธึมการไล่ระดับสีใดที่จะวางแนวในแง่ของการกำหนดทิศทางของระบบ? คุณกำลังวางตัวเองบนจุดอานของพื้นที่พารามิเตอร์


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

ฉันคิดว่านี่เป็นคำตอบที่ดีว่าทำไมน้ำหนักไม่ควรเริ่มต้นที่ 0 แต่เดลต้าอาจยังคงแพร่กระจายกลับ - น้ำหนักในเลเยอร์ผลลัพธ์ไม่ขึ้นอยู่กับน้ำหนักดังนั้นเราจะมีน้ำหนักไม่เป็นศูนย์ที่นี่ หลังจากการอัพเดตครั้งแรก หลังจากการอัปเดตครั้งต่อไปน้ำหนักที่ไม่เป็นศูนย์เหล่านี้จะใช้กับเดลต้าเพื่อปรับน้ำหนักของเลเยอร์ก่อนหน้าและอื่น ๆ ฉันคิดว่าปัญหาที่ใหญ่กว่าในการเริ่มต้นเครือข่ายที่มี 0 ทั้งหมดคือน้ำหนักเท่ากันทั้งหมดซึ่งในเครือข่ายพื้นฐานที่เชื่อมต่ออย่างเต็มที่ของคุณไปข้างหน้าฟีดไปข้างหน้าเทียบเท่ากับการมี 1 โหนดต่อชั้น
Tahlor

6

ในการวนซ้ำของอัลกอริทึมการ backpropagation ของคุณคุณจะอัปเดตน้ำหนักโดยการคูณน้ำหนักที่มีอยู่ด้วยเดลต้าที่กำหนดโดยการกระจายกลับ หากค่าน้ำหนักเริ่มต้นเป็น 0 การคูณด้วยค่าใด ๆ สำหรับเดลต้าจะไม่เปลี่ยนน้ำหนักซึ่งหมายความว่าการวนซ้ำแต่ละครั้งจะไม่มีผลกับน้ำหนักที่คุณกำลังพยายามปรับให้เหมาะสม


2
> คุณจะอัปเดตน้ำหนักโดยการคูณน้ำหนักที่มีอยู่ด้วยค่าที่กำหนดโดยการกระจายกลับ - ฉันไม่คิดอย่างนั้นมันไม่ใช่แค่การคูณ
user8078

1
จุดทั่วไปของฉันคือถ้าน้ำหนักเริ่มต้นเป็นศูนย์พวกเขาจะอยู่ที่ศูนย์หลังจากการทำซ้ำการแพร่กระจายกลับแต่ละครั้ง
Idr

'ค่าที่พิจารณาจาก backpropagation' เป็นเดลต้า (ดูเช่นเอกสารต้นฉบับ "การรับรองการเรียนรู้โดยข้อผิดพลาดการเผยแพร่กลับ", สมการ 7) คำตอบนั้นเป็นประโยคที่ไม่ดี แต่ก็ไม่ผิดอย่างสมบูรณ์
alfa

1
นี่เป็นเพียงคำตอบที่ผิด น้ำหนักจะเปลี่ยน แต่จะเปลี่ยนไปพร้อมกัน สิ่งนี้ไม่ดีเพราะหน่วยที่ซ่อนอยู่ทั้งหมดจะเหมือนกันตลอดการฝึกอบรมและไม่สามารถเรียนรู้ได้
Amin Sammara

θ(0)=0.5

2

ฉันคิดว่าเหตุผลหนึ่งที่ทำไมการเริ่มต้นน้ำหนักให้เป็นค่าเดียวกัน (ไม่ใช่แค่ศูนย์) นั้นเป็นเพราะเหตุผลนั้นสำหรับเลเยอร์ที่ซ่อนอยู่โดยเฉพาะโหนดทั้งหมดในเลเยอร์นี้จะมีอินพุตเหมือนกันทุกประการดังนั้นจึงคงเหมือนเดิม อื่น ๆ


1

คำตอบสำหรับสิ่งนี้ไม่ใช่ "Local Minima / Maxima" ทั้งหมด

เมื่อคุณมีเลเยอร์ที่ซ่อนอยู่มากกว่า 1 และทุกน้ำหนักเป็น 0 ไม่ว่าการเปลี่ยนแปลงใน Weight_i จะเล็กหรือใหญ่เพียงใดจะไม่ทำให้เกิดการเปลี่ยนแปลงในเอาต์พุต

นี่เป็นเพราะเดลตา Weight_i จะถูกดูดซับโดย Hidden Layer ถัดไป

เมื่อไม่มีการเปลี่ยนแปลงในเอาต์พุตจะไม่มีการไล่ระดับสีและไม่มีทิศทาง

สิ่งนี้มีลักษณะเหมือนกันกับ Local Minima / Maxima แต่จริง ๆ แล้วเป็นเพราะของ 0 ซึ่งมีความแตกต่างทางเทคนิค


0

ปัญหาหลักที่มีการเริ่มต้นของน้ำหนักทั้งหมดเป็นศูนย์ทางคณิตศาสตร์ทำให้ค่าเซลล์ประสาทเป็นศูนย์ (สำหรับหลายเลเยอร์) หรือเดลต้าจะเป็นศูนย์ ในหนึ่งในความคิดเห็นโดย @alfa ในคำตอบข้างต้นแล้วมีคำใบ้ให้ไว้มันก็บอกว่าผลิตภัณฑ์ของน้ำหนักและเดลต้าจะต้องเป็นศูนย์ นี่หมายถึงว่าสำหรับการไล่ระดับสีลงบนยอดเขาที่จุดสูงสุดของมันและมันไม่สามารถทำลายความสมมาตรได้ การสุ่มจะทำให้เกิดความสมมาตรและใครจะไปถึงจุดต่ำสุดในท้องถิ่น แม้ว่าเราจะทำให้น้ำหนักลดน้อยลงเราก็ยังอยู่ในเส้นทาง การอ้างอิง: การเรียนรู้จากข้อมูลการบรรยาย 10


0

เป็นความคิดที่ไม่ดีเพราะด้วยเหตุผล 2 ประการ:

  1. g(0)0

  2. tanhg(0)=0

เรามาสาธิตเรื่องนี้ (สำหรับความเรียบง่ายฉันสมมติว่าเลเยอร์เอาต์พุตสุดท้ายของ 1 เซลล์ประสาท):

tanh

LaLzL=WLaL1WL

dWL:=LWL=LaLaLzLzLWL
LaazLaazzWaL1dWLWL=WLαdWL

aL1dWL

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