อะไรคือ / เป็นตัวกรองเริ่มต้นที่ใช้โดย Keras Convolution2d ()


18

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

ฉันพยายามที่จะเข้าใจโค้ดตัวอย่างที่ฉันพบในที่ต่างๆบนอินเทอร์เน็ตเพื่อฝึกอบรม NN ของ Keras convolutional พร้อมข้อมูล MNIST เพื่อจดจำตัวเลข ความคาดหวังของฉันคือเมื่อฉันสร้างเลเยอร์ convolutional ฉันจะต้องระบุตัวกรองหรือชุดตัวกรองเพื่อใช้กับอินพุต แต่ตัวอย่างทั้งสามที่ฉันพบพบทั้งหมดสร้างเลเยอร์ convolutional เช่นนี้

model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
                        border_mode='valid',
                        input_shape=input_shape))

ดูเหมือนว่าจะมีการใช้ตัวกรองรวม 32 3x3 กับภาพที่ประมวลผลโดย CNN แต่ตัวกรองเหล่านั้นคืออะไร? ฉันจะอธิบายพวกเขาทางคณิตศาสตร์ได้อย่างไร เอกสาร keras ไม่ได้ช่วยอะไร

ขอบคุณล่วงหน้า,


2
สิ่งนี้มาจากการทำความเข้าใจในส่วนของการสนทนาของซีเอ็นเอ็น คุณสามารถอ่านได้ที่นี่: cs231n.github.io/convolutional-networks
Christian Safka

คำตอบ:


15

ตามค่าเริ่มต้นตัวกรองจะถูกกำหนดค่าเริ่มต้นแบบสุ่มโดยใช้วิธีการซึ่งดึงค่าจากการแจกแจงแบบสม่ำเสมอที่มีขอบเขตบวกและลบที่อธิบายดังนี้: Wglorot_uniform

WU(6nin+nout,6nin+nout),

โดยที่คือจำนวนหน่วยที่ป้อนเข้าสู่หน่วยนี้และคือจำนวนหน่วยที่ผลลัพธ์นี้ถูกป้อนเข้าninnout

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

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

การสร้างภาพตัวกรองสุทธิ

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


5
glorot_uniformไม่ใช้การแจกแจงแบบปกติ glorot_normalฉันคิดว่าคุณจะอธิบาย ฉันไม่คิดว่าสำคัญอย่างยิ่งต่อคำตอบ - ประเด็นสำคัญคือการเริ่มต้นสุ่มตามด้วยผลของการฝึกอบรม อาจอธิบายได้ว่าฟิลเตอร์ที่ผ่านการฝึกอบรมนั้นมีลักษณะอย่างไรเช่นฟิลเตอร์ขอบ / มุมเป็นต้น
Neil Slater

ทิมขอบคุณที่ให้คณิตศาสตร์ @Neil Slater - ข้อมูลเชิงลึกของคุณที่ฟิลเตอร์, หลังจากการฝึกอบรมด้วย backpropagation อาจท้ายดูเหมือนการตรวจจับขอบ ฯลฯ มีประโยชน์มาก หากฉันมีชื่อเสียงมากขึ้นฉันจะ +1 ทั้งสองอย่างของคุณ
ChrisFal

@NeilSlater ขอบคุณสำหรับความคิดเห็นของคุณ - คุณพูดถูกฉันสับสนglorot_normalและglorot_uniformได้อัปเดตคำตอบเพื่อสะท้อนสิ่งนี้แล้ว ฉันยังได้เพิ่มข้อมูลเพิ่มเติมเล็กน้อยเกี่ยวกับวิธีการกรองสิ้นสุดตามที่คุณแนะนำ
timleathart

6

พวกมันคือเมล็ดที่โน้มน้าว ยกตัวอย่างเช่นภาพของคุณเป็น 5x5, คุณมี 32 3x3 บิดเมล็ดF_kborder_mode นั้น 'ถูกต้อง' ซึ่งหมายความว่าไม่มีช่องว่างภายในรอบอินพุตดังนั้นพิกเซล (i, 0), (0, j), (i, 4), (4, j) จะหายไป ดังนั้นผลลัพธ์ของคุณคือ 32 3x3 ภาพ , (i = 1,2,3, j = 1,2,3) ภาพผลลัพธ์แต่ละภาพจะถูกกำหนดโดยการบิด: AFkBk(i,j)

Bk(i,j)=(FkA)(i,j)=l=0,1,2m=0,1,2Fk(l,m)A(il,jm)

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

แบบจำลอง traned จะฝึกเมล็ดตามฟังก์ชันต้นทุนของคุณและท้ายที่สุดเมล็ดเหล่านี้คือตัวกรองของแบบจำลองของคุณ


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

imghost.in/images/2018/03/06/XvatD.jpgภาพอาจจะต้องมี coords (0,0) ใน B?
vinnitu

@ vinnitu ใช่แน่นอน ที่จริงฉันต้องแก้ไข B เป็น Bk (i, j), (i = 0,1,2, j = 0,1,2)
lucky6qi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.