เลเยอร์ Convolution ที่ตามมาทำงานอย่างไร?


29

คำถามนี้เดือดลงไป "วิธีการทำชั้นบิดว่าการทำงาน

สมมติว่าฉันมีภาพเฉดสีเทาขนาดดังนั้นภาพจึงมีหนึ่งช่อง ในชั้นแรกฉันใช้การแปลง3 × 3กับตัวกรองk 1และช่องว่างภายใน จากนั้นฉันก็มีชั้นสังวัตนาอีกชั้นหนึ่งที่มีตัวกรอง5 × 5และตัวกรองk 2 ฉันมีแผนที่คุณลักษณะกี่อันn×m3×3k15×5k2

Convolution แบบที่ 1

เลเยอร์แรกจะถูกดำเนินการ หลังจากนั้นฉันมีแผนที่คุณลักษณะ (อันสำหรับตัวกรองแต่ละตัว) แต่ละคนมีขนาดn ×เมตร ทุกพิกเซลถูกสร้างขึ้นโดยการใช้3 3 = 9พิกเซลจากภาพอินพุตเสริมk1n×m33=9

จากนั้นเลเยอร์ที่สองจะถูกนำไปใช้ ทุกคนได้รับการกรองมาใช้แยกแต่ละแผนที่คุณลักษณะ ผลลัพธ์นี้มีการแม็พฟีเจอร์สำหรับแมปฟีเจอร์k 1ทุกรายการ ดังนั้นจึงมีแผนที่คุณลักษณะk 1 × k 2หลังจากเลเยอร์ที่สอง ทุกพิกเซลเดียวของแผนที่คุณลักษณะใหม่แต่ละรายการได้สร้างขึ้นโดยใช้ขนาด5 5 = 25 "พิกเซล" ของแผนที่คุณลักษณะที่มีเบาะจากก่อนหน้านี้k2k1k1×k255=25

ระบบต้องเรียนรู้พารามิเตอร์k133+k255

Type 2.1 convolution

เหมือนเมื่อก่อน: เลเยอร์แรกจะถูกดำเนินการ หลังจากนั้นฉันมีแผนที่คุณลักษณะ (อันสำหรับตัวกรองแต่ละตัว) แต่ละคนมีขนาดn ×เมตร ทุกพิกเซลถูกสร้างขึ้นโดยการใช้3 3 = 9พิกเซลจากภาพอินพุตเสริมk1n×m33=9

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

ระบบต้องเรียนรู้พารามิเตอร์k133+k255

Type 2.2 convolution

เหมือนด้านบน แต่แทนที่จะมีพารามิเตอร์ต่อตัวกรองซึ่งจะต้องเรียนรู้และได้รับการคัดลอกสำหรับแผนที่คุณลักษณะป้อนข้อมูลอื่น ๆ คุณมีk 13 3 + k 2k 15 5พารามิเตอร์ ซึ่งต้องเรียนรู้55=25k133+k2k155

คำถาม

  1. โดยทั่วไปแล้วจะใช้ Type 1 หรือ Type 2 หรือไม่
  2. Alexnetใช้ประเภทใด
  3. GoogLeNetใช้งานประเภทใด
    • ถ้าคุณพูดแบบที่ 1: ทำไมการสนทนามีเหตุผลล่ะ? พวกเขาไม่เพียงคูณข้อมูลด้วยค่าคงที่หรือไม่1×1
    • ถ้าคุณพูดว่าแบบที่ 2: โปรดอธิบายค่าใช้จ่ายกำลังสอง ("ตัวอย่างเช่นในเครือข่ายการมองเห็นที่ลึกหากสองชั้นของการสนทนาถูกผูกมัดการเพิ่มจำนวนของตัวกรองของพวกเขาอย่างสม่ำเสมอจะทำให้การคำนวณเพิ่มขึ้นเป็นสองเท่า")

สำหรับคำตอบทั้งหมดโปรดให้หลักฐานบางอย่าง (เอกสารตำราเรียนเอกสารประกอบกรอบงาน) ที่คำตอบของคุณถูกต้อง

คำถามโบนัส 1

การรวมกำไรนั้นจะใช้กับแผนที่คุณลักษณะทุกครั้งหรือทำผ่านแผนที่คุณลักษณะหลายแห่งหรือไม่

คำถามโบนัส 2

ฉันค่อนข้างแน่ใจว่าประเภท 1 ถูกต้องและฉันเข้าใจผิดกับกระดาษ GoogLe แต่มีการโน้มน้าวใจ 3 มิติด้วย สมมติว่าคุณมีแผนที่คุณลักษณะ 1337 ขนาดและคุณใช้ตัวกรอง3 × 4 × 5 คุณเลื่อนตัวกรองไปบนแผนที่คุณลักษณะได้อย่างไร (จากซ้ายไปขวา, แผนที่คุณลักษณะแรกจากบนลงล่างไปยังแผนที่คุณลักษณะล่าสุด) มันมีความสำคัญตราบใดที่คุณยังคงสอดคล้องกัน?42×3143×4×5

งานวิจัยของฉัน


A ครู่ต่อมา: การวิเคราะห์และการเพิ่มประสิทธิภาพของสถาปัตยกรรมเครือข่ายประสาทเทียมโดยเฉพาะบทที่ 2 และรูปที่ 2.2 และรูปที่ 2.3
Martin Thoma

คำตอบ:


5

ฉันไม่แน่ใจเกี่ยวกับทางเลือกที่อธิบายข้างต้น แต่วิธีการที่ใช้กันทั่วไปคือ:

ก่อนที่แอปพลิเคชั่นจะไม่เป็นแบบเชิงเส้นเอาต์พุตตัวกรองแต่ละตัวจะขึ้นอยู่กับแผนที่คุณลักษณะทั้งหมดก่อนเป็นแนวตรงภายในแพทช์ดังนั้นคุณจะได้ตัวกรองหลังจากเลเยอร์ที่สอง จำนวนพารามิเตอร์โดยรวมคือ3 ˙k23˙3˙k1+k1˙5˙5˙k2

โบนัส 1: การรวมกำไรนั้นทำตามแผนที่คุณลักษณะแยกต่างหาก

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


1
ฉันลืมคำถามนี้โดยสิ้นเชิง ในขณะเดียวกันฉันก็เขียนวิทยานิพนธ์เกี่ยวกับซีเอ็นเอ็น บทที่ 3อธิบายถึงวิธีการทำงาน
Martin Thoma

1
ชี้แจง: ประเภท 2.2 ที่ถูกต้อง (ที่อธิบายไว้ในคำตอบนี้)
มาร์ติน Thoma

1
ในกรณีที่ทุกคนต้องการเห็นสิ่งนี้ในเชิงปฏิบัติฉันได้ติดตั้งโครงข่ายประสาทเทียมแบบลึกลงไปในแผ่นงาน google คุณสามารถดูตัวกรองและรูปภาพอินพุตพิกเซลสำหรับพิกเซลขณะที่ทำงานผ่าน CNN จนกระทั่ง CNN ทำนายคำตอบ: docs.google.com/spreadsheets/d/…
bwest87

5

ฉันเพิ่งต่อสู้กับคำถามเดียวกันนี้มาสองสามชั่วโมง คิดว่าฉันจะแบ่งปัน insite ที่ช่วยให้ฉันเข้าใจ

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

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

ตอนนี้คุณแค่โน้มน้าวใจใน 2 มิติแรก; แถวและคอลัมน์ ดังนั้นการสังวัตนาของตัวกรองเลเยอร์ที่สองแต่ละตัวพร้อมกับสแต็คของฟีเจอร์แมป

ขนาดของมิติที่สามของเอาต์พุตของเลเยอร์ที่สองจึงเท่ากับจำนวนฟิลเตอร์ในเลเยอร์ที่สอง


2

ตรวจสอบการบรรยายนี้และการสร้างภาพข้อมูลนี้

โดยปกติจะใช้ชนิด 2.1 convolution ในอินพุตที่คุณมีภาพ NxMx1 จากนั้นหลังจากการแปลงครั้งแรกคุณจะได้รับ N_1xM_1xk_1 ดังนั้นภาพของคุณหลังจากการแปลงครั้งแรกจะมีช่องทาง k_1 มิติใหม่ N_1 และ M_1 จะขึ้นอยู่กับก้าวย่างของคุณ S และการขยาย P: N_1 = (N - 3 + 2P) / S + 1 คุณคำนวณ M_1 ในการเปรียบเทียบ สำหรับเลเยอร์ Conv แรกคุณจะมีน้ำหนัก 3x3xk_1 + k_1 มีการเพิ่ม k_1 สำหรับอคติในฟังก์ชันที่ไม่ใช่เชิงเส้น

ในเลเยอร์ที่สองคุณมีเป็นภาพอินพุตที่มีขนาด N_1xM_1xk_1 โดยที่ k_1 คือจำนวนช่องใหม่ และหลังจากการโน้มน้าวใจครั้งที่สองคุณจะได้รับภาพ N_2xM_2xk_2 (อาร์เรย์) คุณมีพารามิเตอร์ 5x5xk_2xk_1 + k_2 ในเลเยอร์ที่สอง

สำหรับ 1x1 convolution พร้อมด้วยฟิลเตอร์ k_3 และอินพุต NxMxC (C คือจำนวนช่องสัญญาณอินพุต) คุณจะได้รับภาพใหม่ (อาร์เรย์) NxMxk_3 ดังนั้น 1x1 จึงสมเหตุสมผล พวกเขาได้รับการแนะนำในบทความนี้

โบนัส 1: ใช้การรวมกำไรต่อแผนที่คุณลักษณะ

สำหรับรายละเอียดโปรดดูสไลด์สำหรับหลักสูตรของ CNN ใน Stanford - คุณมีการสร้างภาพข้อมูลที่ดีว่าการรวม Convcon นั้นมาจากหลายช่องทางเข้าอย่างไร


2
คำตอบเฉพาะลิงก์ไม่ได้รับการสนับสนุน - ลิงก์สามารถหยุดทำงานได้ คุณสามารถแทรกข้อมูลที่เกี่ยวข้องได้หรือไม่?
Sean Owen

1
การสร้างภาพเป็นประโยชน์จริงๆ ช่วงเวลาแห่งความศักดิ์สิทธิ์ของฉันคือเมื่อฉันรู้ว่าตัวกรองเป็นแบบ 3 มิติไม่ใช่แบบ 2D
kmace

1
ลิงค์ที่ดีเรียงลำดับสิ่งที่ออกมาสำหรับฉัน แต่คำตอบของคุณดูเหมือนไม่สอดคล้องกับสิ่งที่กล่าวไว้ในลิงก์โดยเฉพาะใน Conv เลเยอร์ 2 แต่ละฟิลด์ที่เปิดกว้างคือ 3D ที่มีขนาด 5x5xk_1 ดังนั้นจำนวนพารามิเตอร์ควรเป็น 5 * 5 * k_1 * k_2 (บวกอคติ)
Daniel Schlaug

@DanielSchlaug คุณถูกต้องฉันแก้ไขคำตอบแล้ว
pplonski

1

k1331k1

k255k1k2

นั่นคือเมล็ดในชั้น convolutional ขยายความลึกของผลลัพธ์ของเลเยอร์ก่อนหน้า

1×1kn11kn-1

เก็งกำไร:

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

ม.nknม.nkn+1kn

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