เรียนรู้อย่างลึกซึ้งสำหรับภารกิจที่ไม่ใช่ภาพ non-NLP ใช่ไหม


12

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

มันเป็นอย่างไรในสาขาแบบดั้งเดิมอื่น ๆ อีกมากมาย? ตัวอย่างเช่นฉันมีตัวแปรทางสังคมและประชากรดั้งเดิมบวกกับการวัดในห้องปฏิบัติการจำนวนมากและต้องการทำนายโรคบางชนิด นี่จะเป็นแอปพลิเคชั่นการเรียนรู้ที่ลึกหรือไม่ถ้าฉันมีข้อสังเกตมากมาย ฉันจะสร้างเครือข่ายที่นี่ได้อย่างไรฉันคิดว่าเลเยอร์แฟนซีทั้งหมด (convolutional ฯลฯ ) ไม่จำเป็นจริงๆ! ทำให้ลึกลงไปไหม

ในชุดข้อมูลเฉพาะของฉันฉันลองใช้กลไกการเรียนรู้ของเครื่องทั่วไปเช่นฟอเรสต์แบบสุ่ม gbm และอื่น ๆ พร้อมกับผลลัพธ์ที่หลากหลายเกี่ยวกับความแม่นยำ ฉันมีประสบการณ์การเรียนรู้อย่าง จำกัด ด้วยการจดจำภาพ


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

@ NeilSlater เป้าหมายของฉันคือการบรรลุความแม่นยำสูงกว่าวิธีการที่กำหนดเช่น xgboost หากเป็นไปได้ในกรณีเช่นนี้
spore234

1
เป็นไปได้ แต่ในประสบการณ์ของฉันไม่น่าเป็นไปได้เว้นแต่คุณจะมีข้อมูลจำนวนมากจริงๆ
Neil Slater

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

คำตอบ:


10

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

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

จากประสบการณ์ของฉันที่พยายามใช้โครงข่ายประสาทที่มีความลึก (- ปกติโดยทั่วไป ~ 5 ชั้น) ในการแข่งขัน Kaggle:

  • การออกกลางคันยังคงมีประสิทธิภาพสูงสำหรับการทำให้เป็นปกติและการปรับปรุงความแม่นยำ

  • การทำให้เป็นมาตรฐานการป้อนข้อมูล - โดยปกติหมายถึง 0, มาตรฐาน deviaton 1 เป็นสิ่งสำคัญ

  • ฟังก์ชันการเปิดใช้งานเลเยอร์ที่ซ่อนอยู่สามารถสร้างความแตกต่างได้ แม้ว่า ReLU จะลดปัญหาบางอย่างเกี่ยวกับการไล่ระดับสีที่หายไป แต่จากประสบการณ์ของฉันมันมีความทนทานน้อยกว่าด้วยข้อมูลที่ไม่ใช่สัญญาณและคุณจะต้องการรูปแบบอื่น หากคุณมีเพียงไม่กี่ชั้น sigmoid หรือ tanh ก็ยังใช้ได้ มิฉะนั้นดูเป็น ReLU, PReLU, ELU และตัวแปรอื่น ๆ ของ ReLU ที่พยายามแก้ไขปัญหากับเซลล์ประสาท "ตาย"

  • ใช้ประโยชน์จากเครื่องมือเพิ่มประสิทธิภาพที่ออกแบบมาเพื่อการเรียนรู้อย่างลึกซึ้งเช่น Adam, Adagrad หรือ RMSProp

  • ใช้วิธีการกำหนดน้ำหนักเริ่มต้นที่ทำงานกับการเรียนรู้อย่างลึกซึ้งเช่น Glorot

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

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


1

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

ฉันคิดว่าคำว่า "การเรียนรู้ลึก" เป็นการหลอกลวง: เครือข่ายไม่ได้เรียนรู้คุณสามารถฝึกได้เท่านั้น

สมมติว่าคุณสามารถสร้างชุดฝึกอบรมและทดสอบในระดับสูงคุณสามารถใช้

  • หลายชั้น: หากข้อมูลของคุณไม่มีคำสั่งซื้อและโครงสร้างมีตำแหน่งคงที่

  • เครือข่ายแบบเรียกซ้ำ: หากลำดับของข้อมูลมีความสำคัญสำหรับการจำแนกประเภท

  • Convolution: หากข้อมูลของคุณมีโครงสร้างเหมือนในภาพ แต่ไม่มีตำแหน่งที่แน่นอน

การติดตั้งที่ดีเช่นจำนวนเลเยอร์ต้องใช้การทดลองและข้อผิดพลาด มันเป็นเวทย์มนตร์ดำ

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