โครงข่ายประสาทเทียมแบบ Convolutional ใช้วิธีการแบบ Convolitis แทนการคูณเมทริกซ์อย่างไร?


13

ฉันกำลังอ่านหนังสือของ Yoshua Bengio เกี่ยวกับการเรียนรู้ที่ลึกซึ้งและมันบอกไว้ในหน้า 224:

เครือข่าย Convolutional เป็นเพียงเครือข่ายประสาทที่ใช้ convolution แทนการคูณเมทริกซ์ทั่วไปอย่างน้อยหนึ่งชั้น

อย่างไรก็ตามฉันไม่แน่ใจ 100% ของวิธีการ "แทนที่การคูณเมทริกซ์ด้วยการโน้มน้าว" ในแง่ที่แม่นยำทางคณิตศาสตร์

สิ่งที่ฉันสนใจจริงๆคือการกำหนดสิ่งนี้สำหรับเวกเตอร์อินพุตใน 1D (เช่นใน ) ดังนั้นฉันจะไม่ป้อนข้อมูลเป็นภาพและพยายามหลีกเลี่ยงการบิดในแบบ 2DxRd

ตัวอย่างเช่นในเครือข่ายประสาท "ปกติ" การดำเนินการและรูปแบบของผู้ให้บริการอาหารสามารถแสดงให้เห็นได้อย่างชัดเจนดังที่บันทึกไว้ในบันทึกของ Andrew Ng:

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

ที่z(l)เป็นเวกเตอร์คำนวณก่อนที่จะผ่านมันผ่านที่ไม่เป็นเชิงเส้นฉfไม่ใช่เส้นตรงทำหน้าที่ pero รายการในเวกเตอร์z(l)และ( L + 1 )เป็นผู้ส่งออก / เปิดใช้งานของหน่วยซ่อนชั้นในคำถามa(l+1)

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

f ( z ( l + 1 ) ) = a ( l + 1 )

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

ฉันต้องการให้แน่ใจว่าฉันเข้าใจสมการข้างต้นทางคณิตศาสตร์อย่างแม่นยำ

ปัญหาแรกที่ฉันมีเพียงแทนที่การคูณเมทริกซ์ด้วย convolution คือโดยปกติจะระบุหนึ่งแถวของด้วยผลิตภัณฑ์ dot ดังนั้นใครรู้อย่างชัดเจนว่าทั้ง( L )ที่เกี่ยวข้องกับน้ำหนักและแผนที่ที่จะเวกเตอร์Z ( L + 1 )มิติตามที่ระบุโดยW ( L ) แต่เมื่อหนึ่งแทนที่โดย convolutions มันไม่ชัดเจนกับผมซึ่งแถวหรือน้ำหนักที่สอดคล้องกับรายการใน( L )W(l)a(l)z(l+1)W(l)a(l). มันไม่ชัดเจนแม้แต่กับฉันว่ามันสมเหตุสมผลแล้วที่จะแสดงน้ำหนักเป็นเมทริกซ์อีกต่อไปในความเป็นจริงอีกต่อไป (ฉันจะให้ตัวอย่างเพื่ออธิบายจุดนั้นในภายหลัง)

ในกรณีที่อินพุทและเอาท์พุททั้งหมดใน 1D, ใครสักคนคำนวณความสอดคล้องตามคำจำกัดความของมันแล้วส่งมันผ่านภาวะเอกฐานหรือไม่?

ตัวอย่างเช่นถ้าเรามีเวกเตอร์ต่อไปนี้เป็นอินพุต:

x=[1,2,3,4]

และเรามีน้ำหนักต่อไปนี้ (บางทีเราอาจเรียนรู้ด้วย backprop):

W=[5,6,7]

ดังนั้นการโน้มน้าวคือ:

xW=[5,16,34,52,45,28]

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

f(xW)=f([5,16,34,52,45,28])=[f(5),f(16),f(34),f(52),f(45),f(28)])

( กวดวิชา UDLF สแตนฟอร์ดฉันคิดว่าการตัดขอบที่ convovles ที่มี 0 ของด้วยเหตุผลบางอย่างเราจำเป็นต้องตัดแต่งที่?)

นี่เป็นวิธีการทำงานหรือไม่? อย่างน้อยสำหรับเวกเตอร์อินพุตใน 1D? เป็นไม่ได้เป็นเวกเตอร์อีกต่อไป?W

ฉันยังวาดโครงข่ายประสาทเทียมว่ามันจะเป็นอย่างไรเมื่อฉันคิดว่า:

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


3

ฟังดูเหมือนว่าคุณกำลังเดินอยู่อย่างถูกต้อง แต่บางทีฉันสามารถช่วยชี้แจงได้

ออกเดียว

nwRn

xRnaRxwσ

a=σ(xw)

wxxw

xwxRmm>nwx

a1=σ(x1:nw)a2=σ(x2:n+1w)a3=σ(x3:n+2w)amn+1=σ(xmn+1:mw)

w

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

เอาต์พุตหลายตัว

nw1Rnw2Rn

W=[w1w2]

a1=σ(xw1)a2=σ(xw2)
a=[a1a2]=σ(xW)

w1w2a1=[a11a21amn+11]a2=[a12a22amn+12]A=[a1a2]

A=σ(XW)
XW

W

หวังว่าจะเป็นประโยชน์!


1

เลเยอร์ convolutional เป็นเซตย่อยที่เข้มงวดของเครือข่ายที่เชื่อมต่ออย่างสมบูรณ์เช่นการคูณเมทริกซ์ เลเยอร์ convolutional ใน pass pass นั้นในความเป็นจริงเทียบเท่ากับการคูณเมทริกซ์โดยที่:

  • น้ำหนักบางส่วนถูกผูก / แบ่งปัน
  • น้ำหนักบางส่วนเป็นศูนย์

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


0

ไม่นั่นไม่ใช่วิธีการทำงาน การดำเนินการ convolutions ทำให้อินพุตมีขนาดเล็กลง (สำหรับตัวกรองที่มีขนาด> 1) ไม่ใหญ่กว่าในตัวอย่างของคุณ

15+26+37=38


N+n1Nn+1

การใช้สังวัตนาใน webapge นั้นไม่ใช่คำจำกัดความของการสนทนาทางคณิตศาสตร์
Charlie Parker

2
nnn1

1
ฉันเข้าใจแล้วฉันคิดว่ามันสมเหตุสมผลแล้วที่ฉันมองมัน อย่างไรก็ตามมีข้อผิดพลาดเล็กน้อยหนึ่งข้อ อินพุตไม่ได้ทำให้เล็กลงเสมอไปฉันตระหนักถึงความแตกต่างของการโน้มน้าวใจตอนนี้และแม้แต่ใน CNN ตามหนังสือของ Yoshua Bengio มีการโน้มน้าวใจ 3 แบบ (เต็มถูกต้องเหมือนกัน) iro.umontreal.ca/ ~ ฉันไม่เข้าใจพวกเขาในรายละเอียด แต่อย่างน้อยฉันก็ตระหนักถึงพวกเขา! ขอบคุณ Felbo ชุมชนการมองเห็นไม่ควรใช้คำโน้มน้าวใจสับสนและระคายเคือง อย่างไรก็ตามขอบคุณ
Charlie Parker

2
@CharlieParker ฟังก์ชั่นแปลงใน Matlab มี 3 ประเภทเดียวกันของ "รูปร่าง" (เต็มรูปแบบที่ถูกต้องเหมือนกัน) Matlab เพียงแค่เริ่มต้นที่ "เต็ม" - ดูเอกสารที่mathworks.com/help/matlab/ref/conv.html xcorr(x, y) = conv(x, fliplr(y))บิดโดยไม่ต้องพลิกเคอร์เนลเป็นข้ามความสัมพันธ์ดังนั้น ชุมชน NN มีแนวโน้มที่จะพูดว่าการโน้มน้าวใจเมื่อพวกเขากำลังทำข้ามสัมพันธ์กัน แต่มันก็ค่อนข้างคล้ายกัน
lmjohns3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.