การขยายพันธุ์กลับทำงานในโครงข่ายประสาทเทียมสยามได้อย่างไร


13

ฉันได้ศึกษาสถาปัตยกรรมของเครือข่ายประสาทเทียมที่แนะนำโดย Yann LeCun และเพื่อนร่วมงานของเขาในปี 1994 เพื่อรับรู้ลายเซ็น ( “ การตรวจสอบลายเซ็นโดยใช้เครือข่ายประสาทเทียมหน่วงเวลาสยาม” .pdf , NIPS 1994)

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

ภาพจาก“ เครือข่ายสยามน่าจะเป็นตัวแทนการเรียนรู้” โดย Chen Liu (University of Toronto 2013)

ในสถาปัตยกรรมนี้อัลกอริธึมคำนวณความคล้ายคลึงโคไซน์ระหว่างการแสดงขั้นสุดท้ายของเครือข่ายนิวรัลสองแห่งกระดาษระบุ: "ผลลัพธ์ที่ต้องการสำหรับมุมเล็ก ๆ ระหว่างเอาท์พุทของเครือข่ายย่อยทั้งสอง (f1 และ f2) และมุมกว้างถ้าหนึ่งในลายเซ็นนั้นเป็นของปลอม "

ฉันไม่เข้าใจจริง ๆ ว่าพวกเขาสามารถใช้ฟังก์ชันเลขฐานสองได้อย่างไร (ความคล้ายคลึงโคไซน์ระหว่างเวกเตอร์สองตัว) เป็นเป้าหมายในการเรียกใช้การขยายภาพย้อนหลัง

การคำนวณ backpropagation ในเครือข่ายประสาทเทียมของสยามเป็นอย่างไร?


ฉันไม่สามารถดาวน์โหลดกระดาษ .... คุณมีแหล่งอื่นหรือดรอปบ็อกซ์หรือไม่
Brethlosze

1

คำตอบ:


11

เครือข่ายทั้งสองใช้สถาปัตยกรรมที่คล้ายกันร่วมกัน แต่ถูก จำกัด ให้มีน้ำหนักเท่ากันกับที่อธิบายไว้ในส่วนที่ 4 [1]

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

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

คุณไม่ควรเปลี่ยนเลเยอร์เอาท์พุทมันประกอบด้วยเซลล์ประสาทที่ผ่านการฝึกอบรมที่มีค่าเป็นเส้นตรงและเป็นนามธรรมที่สูงกว่าของอินพุตของคุณ เครือข่ายทั้งหมดควรได้รับการฝึกฝนร่วมกัน ทั้งเอาต์พุตและถูกส่งผ่านฟังก์ชั่นที่ส่งออกความเหมือนโคไซน์ของพวกเขา (ถ้าพวกเขาเหมือนกันและถ้าพวกเขาไม่ได้) เมื่อพิจารณาแล้วและเรามีชุดข้อมูลอินพุตสองชุดตัวอย่างของฟังก์ชันการสูญเสียที่ง่ายที่สุดที่คุณสามารถทำได้คือ:O1O2cos(O1,O2)10XForged,XGenuine

L=(xA,xB)XForgedcos(xA,xB)(xC,xD)XGenuinecos(xC,xD)

หลังจากที่คุณฝึกเครือข่ายของคุณคุณเพียงแค่ป้อนลายเซ็นสองลายที่คุณได้รับเอาท์พุทสองตัวส่งผ่านไปยังฟังก์ชันและตรวจสอบความคล้ายคลึงกันcos(O1,O2)

ในที่สุดเพื่อให้น้ำหนักของเครือข่ายเหมือนกันมีหลายวิธีในการทำเช่นนั้น (และใช้ในเครือข่ายประสาทกำเริบด้วย); วิธีการทั่วไปคือการเฉลี่ยการไล่ระดับสีของเครือข่ายทั้งสองก่อนที่จะดำเนินการตามขั้นตอนการอัพเดท Gradient Descent

[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf


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

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

1
ขอบคุณ ฉันคิดว่าฉันตระหนักถึงปัญหาของฉัน: เป็นการใช้งานสถาปัตยกรรมเครือข่ายประสาทใน Torch7 ที่นี่ก่อนที่จะมีการฝึกอบรมและการทดสอบในระหว่างการก่อสร้างโครงข่ายประสาทฉันต้องระบุสิ่งต่างๆมากมายรวมทั้งค่าชุดข้อมูลที่ป้อนข้อมูลและค่าการส่งออกชั้นเป้าหมาย ในอดีตฉันจัดการกับปัญหาที่อยู่ภายใต้การดูแลซึ่งมักจะมีค่าเลเยอร์เป้าหมายเป้าหมายเอาท์พุท (เช่นป้ายกำกับที่แท้จริง / เท็จหรือค่าในช่วง [0, 1]) แต่ในเวลานี้มันแตกต่าง: เลเยอร์เอาต์พุตเป็นฟังก์ชันขึ้นอยู่กับค่าสองค่าที่จะถูกคำนวณระหว่างการฝึกอบรม ถูกต้องหรือไม่
DavideChicco.it

เวลานี้คุณมีค่าเชิงเส้นในเลเยอร์เอาท์พุทไม่ใช่ไบนารี่ (ดังนั้นมันก็แค่เอาท์พุทของเซลล์ประสาท) นอกจากนี้คุณไม่มีค่าเป้าหมายเอาต์พุตโดยตรงในกรณีนี้ แต่คุณมีฟังก์ชันการสูญเสียเพื่อปรับให้เหมาะสม ในที่สุดเลเยอร์เอาต์พุตคือเอาต์พุตของ เซลล์ประสาท (จำนวนหน่วย ถูกกำหนดโดยสถาปัตยกรรมโมเดลและอ้างอิงในกระดาษ) เซลล์ประสาทขึ้นอยู่กับฟังก์ชั่นการเปิดใช้งานที่เลือก (tanh, sigmoid และอื่น ๆ ) มีการเปิดใช้งานแบบไม่เชิงเส้น [-1,1] หรือ [0,1] ตามลำดับ noutputnoutput
Yannis Assael

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