เครือข่ายประสาทเทียม Convolutional: เซลล์ประสาทส่วนกลางไม่ได้แสดงออกมามากเกินไปในผลลัพธ์หรือไม่


30

[คำถามนี้ถูกวางที่กองล้นเช่นกัน]

คำถามในระยะสั้น

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

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

  • ฉันถูกต้องไหมว่าเอฟเฟกต์นี้เกิดขึ้นในเครือข่ายการสนทนาเชิงลึก?
  • มีทฤษฎีใดบ้างเกี่ยวกับเรื่องนี้เคยถูกกล่าวถึงในวรรณคดีหรือไม่?
  • มีวิธีที่จะเอาชนะผลกระทบนี้หรือไม่?

เพราะฉันไม่แน่ใจว่านี่จะให้ข้อมูลที่เพียงพอหรือไม่ฉันจะอธิบายเพิ่มเติมเกี่ยวกับคำแถลงปัญหาอีกเล็กน้อยและทำไมฉันจึงเชื่อว่านี่เป็นข้อกังวล

คำอธิบายโดยละเอียดเพิ่มเติม

ลองนึกภาพเรามีเครือข่ายประสาทลึกที่ใช้ภาพเป็นอินพุท สมมติว่าเราใช้ฟิลเตอร์แบบ Convolutional เป็นตัวกรองขนาดพิกเซลเหนือภาพซึ่งเราจะทำการเปลี่ยนวินโดว์คอนวิชัน4พิกเซลในแต่ละครั้ง ซึ่งหมายความว่าเซลล์ประสาทในการป้อนข้อมูลทุกส่งยืนยันการใช้งานของมันไป16 × 16 = 265เซลล์ประสาทในชั้น2 แต่ละเซลล์เหล่านี้อาจส่งการเปิดใช้งานของพวกเขาไปยังอีก265เช่นเซลล์ประสาทสูงสุดของเราจะถูกแสดงใน265 264×64416×16=26522652652เซลล์ประสาทการส่งออกและอื่น ๆ

อย่างไรก็ตามนี่ไม่เป็นความจริงสำหรับเซลล์ประสาทที่อยู่บนขอบ: สิ่งเหล่านี้อาจถูกแสดงในหน้าต่างสังวัตนจำนวนเล็กน้อยเท่านั้นจึงทำให้พวกมันเปิดใช้งาน (จากคำสั่งของ) เพียงเซลล์ประสาทในชั้นถัดไป การใช้ลูกเล่นเช่นการทำมิเรอร์ตามขอบจะไม่ช่วยสิ่งนี้: เซลล์ประสาทชั้นที่สองที่คาดว่าจะยังคงอยู่ที่ขอบซึ่งหมายความว่าเซลล์ประสาทชั้นที่สองจะมีบทบาทต่ำกว่า (ดังนั้นการ จำกัด ความสำคัญของ เซลล์ประสาทของเราก็เช่นกัน) ดังที่เห็นได้ว่าความคลาดเคลื่อนนี้มีขนาดใหญ่ขึ้นเป็นทวีคูณตามจำนวนชั้น1

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

https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0

เหตุใดจึงเป็นปัญหา

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

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

1026510

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


8
ฉันไม่สามารถตอบคำถามของคุณได้อย่างเต็มที่ แต่ฉันพบบทความนี้: cs.utoronto.ca/~kriz/conv-cifar10-aug2010.pdf ซึ่งจัดการปัญหาของคุณ พวกเขาพูดคุยเกี่ยวกับการแก้ปัญหาที่แตกต่างกัน 1) การเติมขอบของอินพุตด้วยค่าศูนย์ 2) การเพิ่มส่วนประกอบที่เชื่อมต่อแบบสุ่มทั่วโลกหรือ 3) การแก้ไขและส่งต่อขอบเพื่อไม่ให้ข้อมูลขอบหายไป ฉันเพิ่งอยากรู้เกี่ยวกับปัญหาเดียวกันและพบคำถามของคุณ ฉันยังคงเดินดูรายละเอียดของกระดาษนั้น หวังว่ามันจะช่วย
nfmcclure

ขอบคุณนี่คือสิ่งที่ฉันกำลังมองหา! น่าประทับใจว่านี่เป็นสิ่งที่เห็นได้ชัดเจนโดยมีเพียง 2 เลเยอร์ สำหรับ TL นั้นการค้นหาเอกสารทั้งหมด: การใช้การรวมกันของ 1) (การเติมเต็มศูนย์) และ 2) (การเชื่อมต่อทั่วโลกแบบสุ่ม) พบว่าเป็นวิธีการรักษาที่ดีที่สุด
Koen

ที่เกี่ยวข้อง: area51.stackexchange.com/proposals/93481/…
kenorb

ฉันอยากรู้อยากเห็นมันไม่พอใช้การชดเชยที่ไม่ทับซ้อนกันหรือไม่? ดังนั้นในตัวอย่างของคุณคุณมีแพทช์ 64x64 และคุณย้ายอินพุตของคุณเป็นพิกเซลที่ 64 ทุกครั้งในขณะที่ใช้การแปลง ('shift' ของคุณคือ 'offset' ของฉัน) ฉันเดาว่าอันไหนเหมือนกับการทำศูนย์แพ็ด
Renthal

1
ขออภัยที่ไม่ตอบสนองในขณะนี้ฉันไม่ได้ทำงานกับ NN อีกต่อไป อย่างไรก็ตามฉันคิดว่าฉันสามารถตอบคำถามได้แม้ว่าฉันจะตระหนักว่าเป้าหมายที่ยิ่งใหญ่กว่าของฉันคือการเข้าใจสิ่งที่เกิดขึ้น (ซึ่งฉันยังทำไม่ได้) 1) เอฟเฟกต์นี้ดูเหมือนจะเกิดขึ้นแน่นอน 2) กระดาษที่ลิงค์ด้านบนอธิบายและ 3) สำรวจวิธีที่จะเอาชนะมัน ถึง Renthal: แพตช์ที่ไม่มีการเหลื่อมซ้อน (การเลือกขนาดออฟเซ็ต = Conv.) ควรเอาชนะปัญหาของฉันอย่างแน่นอน แต่ผู้คนมักพบว่าแพตช์ที่ทับซ้อนกันทำงานได้ดีขึ้น หากต้องการ EngrStudent ขออภัยฉันไม่คุ้นเคยกับการเปลี่ยนตัวอย่าง Bootstrap
Koen

คำตอบ:


4

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

ฉันคิดว่าคุณจะได้รับประโยชน์จากการอ่านเกี่ยวกับ "เขตข้อมูลตัวรับ" ใน visual cortex ไม่เพียง แต่จะมีเซลล์เปิดและปิดในสมองสัตว์เลี้ยงลูกด้วยนมเท่านั้น แต่ยังมีเซลล์ RF ที่ยิงได้ทั้งในระหว่างเปิดและปิด บางทีปัญหาขอบ / sparsity สามารถหลีกเลี่ยงได้โดยการปรับปรุงแบบจำลองเพื่อสะท้อนประสาทในปัจจุบันเกี่ยวกับการมองเห็นโดยเฉพาะในแบบจำลองสัตว์


3

คุณพูดถูกว่าเป็นปัญหาถ้า Convolution ทำงานบนพิกเซลภาพเท่านั้น แต่ปัญหาจะหายไปหากคุณปรับภาพเป็นศูนย์ (ตามที่แนะนำโดยทั่วไป) วิธีนี้ช่วยให้มั่นใจได้ว่าการบิดจะใช้ตัวกรองจำนวนเท่ากันกับแต่ละพิกเซล


1
ฉันยังไม่มั่นใจ การ zero-padding จะสร้าง output-pixels เพิ่มเติมรอบ ๆ พิกเซล "กึ่งกลาง" ที่พบโดยไม่มีการเว้นระยะ ค่าของพิกเซล "ศูนย์" นั้นเหมือนกันทุกประการไม่ว่าจะใช้วิธีใดก็ตาม
Koen

1
หากหน้าต่าง convolutional มีขนาด n×nจากนั้นด้วยการเติมขอบทั้งหมดด้วย n-1ศูนย์จำนวนมากคุณจะรับประกันได้ว่าการบิดจะกระทำกับพิกเซลขอบเช่นเดียวกับพิกเซลด้านในหลาย ๆ ครั้ง (สมมติว่าคุณทำเช่นนี้ในทุกเลเยอร์ convolutional ในเครือข่าย) ในทางปฏิบัติแม้ว่าจะไม่มีการขยายที่ดุดันเช่นนั้นและลดความสำคัญของพิกเซลขอบลงเล็กน้อยเนื่องจากข้อมูลที่สำคัญมีแนวโน้มที่จะอยู่ใกล้กับศูนย์กลางของภาพมากขึ้น
jon_simon

การสร้างภาพข้อมูลแบบครึ่งทางในหน้านี้อาจช่วยในการถ่ายทอดสัญชาตญาณ: cs231n.github.io/convolutional-networks
jon_simon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.