ทำไมเครือข่ายประสาทเทียมแบบ Convolutional จึงทำงานได้?


22

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


คำอธิบายที่ยอดเยี่ยมจาก Jeremy Howard ในช่วงครึ่งหลังของวิดีโอนี้: youtube.com/watch?v=ACU-T9L4_lI
Dan

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

คำตอบ:


19

จริง ๆ แล้วฉันเดาว่าคำถามมันค่อนข้างกว้าง! อย่างไรก็ตาม.

ทำความเข้าใจกับ Convolution Nets

สิ่งที่เรียนรู้ในการConvNetsพยายามลดฟังก์ชั่นลดค่าใช้จ่ายเพื่อจัดหมวดหมู่อินพุตให้ถูกต้องในงานการจัดหมวดหมู่ การเปลี่ยนแปลงพารามิเตอร์และตัวกรองที่เรียนรู้ทั้งหมดเพื่อให้บรรลุเป้าหมายดังกล่าว

คุณลักษณะที่เรียนรู้ในเลเยอร์ต่างๆ

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

** รูปที่ 1. ** * การเปิดใช้งานระดับต่ำ *

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

** รูปที่ 2. ** * การเปิดใช้งานระดับสูง *

CNNsไม่ควรถือเป็นกล่องดำเลย Zeiler และในบทความที่น่าทึ่งนี้ได้กล่าวถึงการพัฒนาแบบจำลองที่ดีขึ้นจะถูกลดลงไปสู่การลองผิดลองถูกถ้าคุณไม่เข้าใจในสิ่งที่ทำในอวนเหล่านี้ ConvNetsกระดาษนี้พยายามที่จะเห็นภาพคุณลักษณะในแผนที่

ความสามารถในการจัดการการเปลี่ยนแปลงที่แตกต่างเพื่อสรุป

ConvNetsใช้poolingเลเยอร์ไม่เพียง แต่เพื่อลดจำนวนพารามิเตอร์ แต่ยังมีความสามารถที่จะไม่รู้สึกถึงตำแหน่งที่แน่นอนของแต่ละคุณสมบัติ นอกจากนี้การใช้มันยังช่วยให้เลเยอร์สามารถเรียนรู้คุณสมบัติที่แตกต่างกันซึ่งหมายความว่าเลเยอร์แรกเรียนรู้คุณสมบัติระดับต่ำอย่างง่ายเช่นขอบหรือส่วนโค้งและเลเยอร์ที่ลึกกว่าจะเรียนรู้คุณสมบัติที่ซับซ้อนมากขึ้นเช่นตาหรือคิ้ว Max Poolingเช่นพยายามตรวจสอบว่ามีคุณสมบัติพิเศษอยู่ในภูมิภาคพิเศษหรือไม่ ความคิดของpoolingเลเยอร์นั้นมีประโยชน์มาก แต่ก็สามารถจัดการกับการเปลี่ยนผ่านของการเปลี่ยนแปลงอื่น ๆ ได้ แม้ว่าตัวกรองในเลเยอร์ต่าง ๆ พยายามค้นหารูปแบบที่แตกต่างกันเช่นใบหน้าที่หมุนได้เรียนรู้การใช้เลเยอร์ที่แตกต่างจากใบหน้าปกติCNNsโดยมีของตัวเองไม่มีเลเยอร์ใด ๆ เพื่อจัดการการแปลงอื่น ๆ เพื่อแสดงให้เห็นว่าสิ่งนี้สมมติว่าคุณต้องการเรียนรู้ใบหน้าที่เรียบง่ายโดยไม่ต้องหมุนด้วยตาข่ายเพียงเล็กน้อย ในกรณีนี้แบบจำลองของคุณอาจสมบูรณ์ สมมติว่าคุณถูกขอให้เรียนรู้ใบหน้าทุกประเภทด้วยการหมุนหน้าโดยอำเภอใจ ในกรณีนี้แบบจำลองของคุณจะต้องใหญ่กว่าเครือข่ายที่เรียนมาก่อน เหตุผลคือต้องมีตัวกรองเพื่อเรียนรู้การหมุนเหล่านี้ในอินพุต โชคไม่ดีที่สิ่งเหล่านี้ไม่ใช่การเปลี่ยนแปลงทั้งหมด ข้อมูลของคุณอาจถูกบิดเบือนเช่นกัน กรณีเหล่านี้ทำให้Max Jaderberg และทั้งหมดโกรธ พวกเขาเขียนบทความนี้เพื่อจัดการกับปัญหาเหล่านี้เพื่อจัดการกับความโกรธของเราในฐานะของพวกเขา

Convolutional Neural Networks ทำงานได้ดี

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

ฉันเพิ่มลิงก์ที่มีประโยชน์:


12

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

ฉันรู้ว่าไม่มีสถาปัตยกรรมระบบประสาทอื่นใดที่ได้ผลกำไรจากสถานที่ในลักษณะเดียวกับ ConvNets


1
ฉันจะบอกว่า RNNs ได้ประโยชน์ในทำนองเดียวกันกับ CNNs โดยใช้น้ำหนักในซีรีส์เวลา CNNs ยังสามารถจะคิดว่าเป็นค่าคงที่ไม่จำเป็นต้องแปล แต่ "มิติคงที่" (แม้ว่าฉันไม่แน่ใจว่าเป็นคำที่ถูกต้องหรือได้รับการยอมรับ)
นีลตำหนิ

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

ข้อความ 1 และ 2 ของคุณดูเหมือนถูกต้องสำหรับฉัน
ncasas

1
ฉันคิดว่าเครือข่ายแคปซูลควรใช้ประโยชน์จากสถานที่ในลักษณะเดียวกัน
David Marx

3

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


3

เครือข่ายประสาทเทียม Convolutional ทำงานได้เพราะมันเป็นส่วนขยายที่ดีจากอัลกอริทึมการเรียนรู้ลึกมาตรฐาน

ด้วยทรัพยากรและเงินที่ไม่ จำกัด ไม่จำเป็นต้องมี convolutional เพราะอัลกอริทึมมาตรฐานจะใช้งานได้เช่นกัน อย่างไรก็ตามความสับสนมีประสิทธิภาพมากขึ้นเพราะมันจะช่วยลดจำนวนของพารามิเตอร์ การลดเป็นไปได้เพราะใช้ประโยชน์จากสถานที่คุณลักษณะตรงกับสิ่งที่ @ncasas เขียน


นี่ควรเป็นคำตอบที่ดีที่สุด
Jie.Zhou

1

เป็นที่ทราบหรือไม่ว่าทำไมเครือข่ายประสาทเทียมมักจะจบลงด้วยการเรียนรู้คุณสมบัติที่ซับซ้อนยิ่งขึ้นเมื่อเราไปถึงเลเยอร์?

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

สิ่งที่ทำให้พวกเขาสร้างคุณสมบัติเช่นกองซ้อน

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


0

อาคารncasasและhoraceTคำตอบ ConvNets มีประสิทธิภาพมากเนื่องจาก:

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

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


3
โปรดทราบว่าคุณต้องการประชาสัมพันธ์ผลิตภัณฑ์ / บล็อกของคุณเองคุณต้องเปิดเผยความร่วมมือในคำตอบมิฉะนั้นคำตอบของคุณอาจถูกตั้งค่าสถานะว่าเป็นสแปม หากคุณไม่ได้มีส่วนเกี่ยวข้องกับเว็บไซต์ฉันขอแนะนำให้คุณพูดเพื่อป้องกันสิ่งนี้ โปรดอ่านวิธีที่จะไม่เป็นผู้ส่งสแปม
AJ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.