สร้างตัวเข้ารหัสอัตโนมัติความเชื่อลึกสำหรับการลดมิติข้อมูล
ฉันกำลังทำงานกับชุดข้อมูลขนาดใหญ่ (การสังเกตประมาณ 50K x คุณสมบัติ 11K) และฉันต้องการลดขนาด ในที่สุดสิ่งนี้จะถูกใช้สำหรับการจำแนกหลายชั้นดังนั้นฉันต้องการแยกคุณสมบัติที่เป็นประโยชน์สำหรับการแยกข้อมูล จนถึงตอนนี้ฉันได้ลอง PCA แล้ว (ทำงานได้ดีโดยมีความแม่นยำโดยรวมใน Linear SVM ประมาณ 70%), LDA (ดำเนินการด้วยความแม่นยำในการฝึกสูงมากประมาณ 96% แต่ความแม่นยำในการทดสอบอยู่ที่ประมาณ 61%) และตัวเข้ารหัสอัตโนมัติ (3 ตัวเข้ารหัสที่มีความหนาแน่นของเลเยอร์ 13000 - 1,000 - 136 หน่วยตามลำดับซึ่งทำงานได้เหมือนกับ PCA) ฉันถูกขอให้ลองใช้ Deep Belief Network (สแต็กของเครื่อง Boltzmann ที่ จำกัด ) ในปัญหานี้
จนถึงตอนนี้ฉันมองเห็นความท้าทายสองประการ ขั้นแรกฉันสามารถเข้าถึง GPU ที่สามารถใช้งานได้ แต่ฉันไม่เห็นการใช้งาน DBN จำนวนมากจากผู้เล่นหลักในชุมชน neural net (เช่น TensorFlow / Keras, PyTorch) ซึ่งหมายความว่าจะต้องเป็น นำไปใช้กับ CPU ทำให้เกิดความท้าทายหมายเลขสอง ประการที่สองการดำเนินการนี้จะต้องใช้หน่วยความจำที่สำคัญและค่อนข้างช้า สิ่งนี้ทำให้เกิดคำถามของฉัน: มีการใช้งาน DBN autoencoder ใน Python (หรือ R) ที่เชื่อถือได้และใช้ GPU อย่างเหมาะสมที่สุดหรือไม่? ถ้าไม่วิธีการที่ต้องการในการสร้าง DBN ใน Python คืออะไร? ฉันควรใช้ sklearn หรือไม่?
คำตอบ
Botzmann Machines (ถูก จำกัด หรือไม่) แตกต่างจาก Autoencoders (จำกัด หรือไม่) ไม่มีชั้นเอาต์พุตดังนั้นจึงจัดเป็นแบบจำลองการกำเนิดที่ลึก
มีการใช้งานที่หลากหลายใน Pytorch อันนี้เข้ากันได้กับ GPU (https://github.com/GabrielBianconi/pytorch-rbm) และฉันพบว่ามันมีประโยชน์มากในอดีต
RBM สามารถมีประโยชน์ในงานต่างๆเช่น
- การลดขนาด
- การกรองร่วมกันสำหรับระบบผู้แนะนำ
- คุณลักษณะการเรียนรู้และอื่น ๆ
นี่เป็นการอ่านที่น่าสนใจในกรณีที่คุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ RBM https://heartbeat.fritz.ai/guide-to-restricted-boltzmann-machines-using-pytorch-ee50d1ed21a8