วิธีการรวมฟีเจอร์อินพุตและหมวดหมู่อย่างต่อเนื่องสำหรับการฝึกอบรมโครงข่ายประสาทเทียม


16

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

อันที่จริงฉันเสนอโครงสร้างไร้เดียงสาตามที่แสดงในภาพ

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

ดังที่คุณเห็นเลเยอร์แรก ๆ จะใช้ในการเปลี่ยนข้อมูล (หรือแผนที่) A เป็นเอาท์พุทกลางในพื้นที่ต่อเนื่องและจากนั้นจะถูกเชื่อมโยงกับ data B ซึ่งเป็นคุณลักษณะอินพุตใหม่ในพื้นที่ต่อเนื่องสำหรับเลเยอร์ในภายหลัง ฉันสงสัยว่ามันสมเหตุสมผลหรือเป็นแค่เกม "ลองผิดลองถูก" ขอบคุณ.

คำตอบ:


5

มีสามวิธีหลักในการแก้ปัญหานี้:

  1. การสร้างแบบจำลองสองแบบแยกกันจากนั้นทำการฝึกอบรมอัลกอริธึมชุดที่ได้รับผลลัพธ์ของทั้งสองแบบเป็นอินพุต
  2. การรวมข้อมูลทั้งหมดไว้ในเวกเตอร์ / เทนเซอร์เดียวเป็นขั้นตอนก่อนการประมวลผลจากนั้นทำการฝึกอบรมการป้อนข้อมูล NN แบบเดี่ยวอย่างง่าย
  3. สถาปัตยกรรมป้อนข้อมูล NN หลายรายการที่คุณเสนอ

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

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

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



0

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

  1. อัลกอริธึมแบบ Tree (RF, XGB) นั้นทำงานได้ดีกับคลาสที่ผสมกันยกเว้นว่าคุณมีความต้องการเอาต์พุตเฉพาะหรือฟังก์ชันการสูญเสียซึ่งง่ายต่อการใช้งานผ่านเครือข่ายประสาท
  2. หากตัดสินใจใช้เครือข่ายนิวรัลแล้วสถาปัตยกรรมนี้จะทำงานได้ดีกว่าเมื่อเทียบกับวิธีการเข้ารหัสสตริงชนิดอื่น
  3. วิธีนี้ยังทำงานร่วมกับข้อมูลอนุกรมเวลาแบบผสมซึ่งดีกว่าวิธีอนุกรมเวลาแบบเก่า

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

สถาปัตยกรรมประเภทนี้ถูกนำมาใช้ในการแข่งขัน Kaggle [1] และยังสอนในหลักสูตร Fast.ai โดยศาสตราจารย์ Jeremy Howard [2]

  1. https://yashuseth.blog/2018/07/22/pytorch-neural-network-for-tabular-data-with-categorical-embeddings/
  2. https://www.fast.ai/2019/01/24/course-v3/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.