วิธีการใช้ RBM สำหรับการจำแนกประเภท?


12

ในขณะที่ฉันกำลังเล่นกับ Restricted Boltzmann Machines และเมื่อฉันอยู่ที่จุดนั้นฉันต้องการที่จะจำแนกตัวเลขที่เขียนด้วยลายมือด้วย

ตอนนี้โมเดลที่ฉันสร้างเป็นแบบจำลองกำเนิดที่ค่อนข้างแฟนซี แต่ฉันไม่รู้จะทำอย่างไรต่อไป

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

นั่นหมายความว่าทั้งหมดที่ฉันต้องทำคือแพร่กระจายข้อมูลไปยังหน่วยที่ซ่อนอยู่และฉันมีคุณสมบัติ RBM ของฉันสำหรับการจัดหมวดหมู่

ใครสามารถอธิบายขั้นตอนนี้ให้ฉันได้บ้าง


เครื่อง Boltzmann ที่ จำกัด เป็นหนึ่งในองค์ประกอบแรกสุดที่ใช้สำหรับการเรียนรู้อย่างลึกซึ้ง อันที่จริงงานแรกที่สำคัญใน DNN นั้นทำโดย Hinton คือเครือข่ายความเชื่อที่ลึกซึ้งนั้นมีพื้นฐานมาจาก RBM โปรดค้นหาเอกสารนี้ (เครือข่ายความเชื่อลึก, 2007, สำหรับ Hinton) สำหรับข้อมูลเพิ่มเติม ที่เว็บไซต์ของเขาคุณสามารถค้นหาแหล่งข้อมูลที่สำคัญมากเช่นเดียวกับการทดลองสาธิตcs.toronto.edu/~hinton/digits.html
Bashar Haddad

@hbaderts ฉันเริ่มเล่นกับ RBM คำตอบที่ยอมรับนั้นง่ายต่อการอ่าน ฉันต้องการขอคำอธิบายชั้นที่ซ่อนอยู่ของ RBM เป็นแบบสุ่มหลังจากสุ่มตัวอย่างจากการแจกแจงแบบไบนารี สำหรับการจำแนกประเภทความน่าจะเป็นของหน่วยที่ซ่อนอยู่ถูกใช้หรือตัวอย่างที่ซ่อนอยู่จากการแจกแจงแบบไบนารี (1 และ 0) ถูกส่งผ่านไปยังตัวจําแนก?
M3tho5

คำตอบ:


15

ตรวจสอบเครื่องจักร Boltzmann ที่ จำกัด

เครื่อง Boltzmann ที่ถูก จำกัด (RBM) เป็นรูปแบบกำเนิดซึ่งเรียนรู้การแจกแจงความน่าจะเป็นเหนืออินพุต นั่นหมายความว่าหลังจากได้รับการฝึกฝน RBM สามารถสร้างตัวอย่างใหม่จากการแจกแจงความน่าจะเป็นที่เรียนรู้ได้ การแจกแจงความน่าจะเป็นในหน่วยที่มองเห็นได้มอบให้โดย ที่ และเป็นฟังก์ชัน ,คือ อคติสำหรับโหนดที่มองเห็นได้และคือน้ำหนักตั้งแต่ถึง p ( vh ) = V i = 0 p ( v ih ) , p ( v ih ) = σ ( a i + H j = 0 w j i h j ) σ a i i w j i h j v ฉัน p ( vhv

p(vh)=i=0Vp(vih),
p(vih)=σ(ai+j=0Hwjihj)
σaiiwjihjvi. จากสองสมการเหล่านี้มันตามที่เพียงขึ้นอยู่กับรัฐที่ซ่อนอยู่{H} นั่นหมายความว่าข้อมูลเกี่ยวกับวิธีสร้างตัวอย่างมองเห็นได้จะต้องเก็บไว้ในหน่วยที่ซ่อนน้ำหนักและอคติเอชวีp(vh)hv

การใช้ RBM สำหรับการจำแนกประเภท

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

เวกเตอร์ที่ซ่อนอยู่นี้เป็นเพียงข้อมูลแปลงรูปแบบซึ่งไม่สามารถแยกประเภทได้ด้วยตัวเอง ในการจำแนกประเภทคุณจะต้องฝึกอบรมตัวจําแนกใด ๆ (ตัวจําแนกเชิงเส้น SVM เครือข่ายประสาท feedforward หรือสิ่งอื่น ๆ ) ด้วยเวกเตอร์ที่ซ่อนอยู่แทนข้อมูลการฝึกอบรม "ดิบ" เป็นอินพุต

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


ขอบคุณสำหรับการแก้ไข @ Seanny123 สิ่งนี้ทำให้การอ่านง่ายขึ้นมาก
hbaderts

5

@hbaderts อธิบายขั้นตอนการทำงานทั้งหมดอย่างสมบูรณ์ อย่างไรก็ตามอาจไม่มีเหตุผลใด ๆ ในกรณีที่คุณยังไม่คุ้นเคยกับแนวคิดนี้ ดังนั้นฉันจะอธิบายในลักษณะของคนธรรมดา (ดังนั้นฉันจะละเว้นรายละเอียด):

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

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

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

ตอนนี้คุณต้องการฝึกรูปแบบลักษณนาม / การถดถอยและนี่คือปัญหาการเรียนรู้แบบมีผู้สอน วิธีที่คุณบรรลุเป้าหมายนั้นคือการใช้ "การแปลงเวอร์ชั่นสุดท้าย" ของอินพุตดั้งเดิมของคุณจากเลเยอร์สุดท้ายในเครือข่ายลึกของคุณและใช้เป็นอินพุตไปยังตัวแยกประเภทใด ๆ (เช่น knn classifier / softmax classifier / logistic regression เป็นต้น) สิ่งนี้เรียกว่าการซ้อน

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

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


0

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

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