ระบบเข้ารหัสอัตโนมัติไม่สามารถเรียนรู้คุณสมบัติที่มีความหมายได้


24

ฉันมี 50,000 ภาพเช่นสองภาพนี้:

ตัวอย่างข้อมูล data2 ตัวอย่าง

พวกเขาแสดงกราฟของข้อมูล ฉันต้องการแยกฟีเจอร์จากภาพเหล่านี้ดังนั้นฉันจึงใช้รหัส autoencoder ที่จัดทำโดย Theano (deeplearning.net)

ปัญหาคือตัวเข้ารหัสอัตโนมัติเหล่านี้ดูเหมือนจะไม่ได้เรียนรู้คุณสมบัติใด ๆ ฉันลอง RBM แล้วมันก็เหมือนกัน

ชุดข้อมูล MNIST ให้คุณสมบัติที่ดี แต่ดูเหมือนว่าข้อมูลของฉันจะไม่ให้ผลลัพธ์ ฉันแนบตัวอย่างด้านล่าง:

ตัวกรองที่สร้างบน MNIST:

ตัวกรอง mnist

ตัวกรองที่สร้างขึ้นโดยการฝึกอบรมกับข้อมูลของฉัน:

ตัวกรองจากข้อมูลของฉัน

ฉันใช้พีชคณิตขนาดต่าง ๆ ที่ซ่อนอยู่และการฝึกอบรมต่าง ๆ มากมาย แต่ผลลัพธ์ก็เหมือนกันเสมอ

ทำไมมันไม่ทำงาน ทำไมระบบเข้ารหัสอัตโนมัติไม่สามารถดึงคุณสมบัติต่าง ๆ จากภาพเหล่านี้ได้?

แก้ไข:

สำหรับใครก็ตามที่มีปัญหาคล้ายกัน วิธีการแก้ปัญหานั้นง่ายมากและเป็นสาเหตุที่โง่ ฉันลืมที่จะ rescale ค่าพิกเซลจากการเข้ารหัส RGB เพื่อลอยในช่วง 0 - 1

การลดขนาดค่าแก้ปัญหา

คำตอบ:


15

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

  • ขนาดชุดของคุณคืออะไร
  • อัตราการเรียนรู้ของคุณคืออะไร
  • คุณกำลังใช้ autoencoder ประเภทใดอยู่
  • คุณเคยลองใช้ Denoising Autoencoder แล้วหรือยัง? (คุณลองใช้ค่าความเสียหายอะไร)
  • มีเลเยอร์ที่ซ่อนอยู่กี่แห่งและมีขนาดเท่าใด
  • ขนาดข้อมูลภาพของคุณมีขนาดเท่าใด

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

นี่คือตัวอย่างของ autoencoder สำหรับการจำแนกเพศของมนุษย์ที่ถูกเบี่ยงเบนหยุดหลังจาก 1500 epochs มีการปรับค่าพารามิเตอร์ไฮเปอร์ (ในกรณีนี้การลดลงของอัตราการเรียนรู้) และเริ่มต้นใหม่ด้วยน้ำหนักเดียวกันกับการเบี่ยงเบนและแปรสภาพในที่สุด

นี่คือสิ่งที่มาบรรจบกัน: (เราต้องการสิ่งนี้)

วานิลลา "ไม่มีข้อ จำกัด " สามารถพบปัญหาที่พวกเขาเพียงแค่เรียนรู้การทำแผนที่ตัวตน นั่นเป็นหนึ่งในสาเหตุที่ชุมชนสร้างรสชาติ Denoising, Sparse และ Contractive

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

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

[0, 13, 15, 11, 2, 9, 6, 5]

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

ติดตามคำตอบ (ให้ข้อมูล)

นี่คือตัวกรองจากหน่วยที่ซ่อนอยู่ 1,000 หน่วยเป็นเลเยอร์เดี่ยว Denoising Autoencoder โปรดทราบว่าตัวกรองบางตัวดูสุ่ม นั่นเป็นเพราะฉันหยุดการฝึกอบรม แต่เนิ่นๆและเครือข่ายไม่มีเวลาเรียนรู้ตัวกรองเหล่านั้น

นี่คือพารามิเตอร์หลายมิติที่ฉันได้ฝึกกับ:

batch_size = 4
epochs = 100
pretrain_learning_rate = 0.01
finetune_learning_rate = 0.01
corruption_level = 0.2

ฉันหยุดการฝึกซ้อมล่วงหน้าหลังยุคที่ 58 เพราะตัวกรองดีพอที่จะโพสต์ที่นี่ ถ้าฉันเป็นคุณฉันจะฝึกอบรม AutoCoder Denoising 3 ชั้นเต็มรูปแบบด้วยสถาปัตยกรรม 1000x1000x1000 เพื่อเริ่มต้น

นี่คือผลลัพธ์จากขั้นตอนการปรับจูน:

validation error 24.15 percent
test error 24.15 percent

ดังนั้นในการดูครั้งแรกดูเหมือนว่าจะดีกว่าโอกาสอย่างไรก็ตามเมื่อเราดูการแบ่งข้อมูลระหว่างสองป้ายผนึกเราเห็นว่ามันมีเปอร์เซ็นต์ที่แน่นอนเหมือนกัน (75.85% มีกำไรและ 24.15% ไม่ทำกำไร) นั่นหมายความว่าเครือข่ายได้เรียนรู้ที่จะตอบสนอง "ผลกำไร" โดยไม่คำนึงถึงสัญญาณ ฉันอาจจะฝึกฝนสิ่งนี้เป็นเวลานานโดยมีตาข่ายขนาดใหญ่กว่าเพื่อดูว่าเกิดอะไรขึ้น นอกจากนี้ดูเหมือนว่าข้อมูลนี้สร้างจากชุดข้อมูลทางการเงินบางประเภท ฉันอยากจะแนะนำให้คุณตรวจสอบ Recurrent Neural Networks หลังจากปฏิรูปปัญหาของคุณเป็นพาหะตามที่อธิบายไว้ข้างต้น RNNs สามารถช่วยจับภาพการพึ่งพาชั่วคราวบางอย่างที่พบในข้อมูลชุดเวลาเช่นนี้ หวังว่านี่จะช่วยได้


ขนาดแบตช์ของฉันคือ 20 อัตราการเรียนรู้ตั้งไว้ที่ 0.1 ฉันได้ลองใช้ตัวย่อและ denoising autoencoders ไม่เป็นประโยชน์ ฉันใช้เลเยอร์ที่ซ่อนอยู่หนึ่งชั้น ฉันลองทุกอย่างจาก 50 เป็น 1,000 เซลล์ประสาท ฉัน rescale ภาพให้ 25x25 - ดังนั้นพวกเขาจึงมีขนาดเล็กกว่าคนจำเจ ฉันควรใส่ข้อมูลทั้งหมดของฉันในที่เก็บถาวรนี้: คุณช่วยแสดงผลลัพธ์ของตัวเข้ารหัสอัตโนมัติและข้อมูลนี้ให้ฉันได้หรือไม่
b93dh44

ไฟล์เก็บถาวร: mega.co.nz/…
b93dh44

ตกลงฉันได้ฝึกอบรมเครือข่ายด้วยข้อมูลนั้น ดูการแก้ไขในคำตอบ
sabalaba

นั่นดูน่าสนใจจริงๆ คุณช่วยโพสต์โค้ดของคุณได้ไหม ฉันซาบซึ้งจริงๆ ฉันคิดว่าฉันอาจมีข้อผิดพลาดบางอย่างในรหัสของฉันที่ป้องกันไม่ให้เครือข่ายจากการฝึกอบรม ฉันสังเกตเห็นว่าคุณมีการปรับจูนหรือไม่ ฉันคิดว่า autoencoder ของฉัน pretrains เท่านั้นโดยไม่มีการปรับใด ๆ คุณช่วยแก้ปัญหาให้คุณได้ไหมถ้าคุณไม่รังเกียจ
b93dh44

ไม่สามารถโพสต์รหัสของฉันเพราะมันเป็นเรื่องของ บริษัท ของฉัน แต่ฉันสามารถชี้ให้คุณกวดวิชานี้ซึ่งมีโค้ดตัวอย่างที่จะทำให้ denoising Autoencoder: deeplearning.net/tutorial/dA.html คำแนะนำพารามิเตอร์ไฮเปอร์พารามิเตอร์ทั้งหมดจะเก็บไว้สำหรับรหัสนั้น
sabalaba

3

ฉันไม่มีตัวแทนมากพอที่จะแสดงความคิดเห็นดังนั้นฉันจะตอบคำถามนี้ อย่างไรก็ตามฉันไม่ทราบเหตุผลที่แน่ชัด:

  1. รูปแบบในพื้นที่ด้านล่างซ้ายดูเหมือนกับตัวอย่างที่สองของคุณและรูปแบบที่มุมล่างขวาดูเหมือนกับตัวอย่างแรกของคุณมากเมื่อตรวจสอบอย่างใกล้ชิด คำถามคือความหลากหลายในแหล่งข้อมูลของคุณมากแค่ไหน? หากรูปภาพทั้งหมด 50,000 รูปเป็นรูปแบบเดียวกันรูปแบบแผนที่ที่มีความหมายทั้งสามนี้ที่เราเห็นนั้นเพียงพอสำหรับเครื่องสร้างรหัสอัตโนมัติเพื่ออธิบายและสร้างข้อมูลทั้งหมดของคุณใหม่

  2. ประการที่สองคุณอาจต้องการดูข้อผิดพลาดในการสร้างใหม่และรูปภาพที่สร้างใหม่จริง ผลลัพธ์ที่ดีแค่ไหน? หากเกิดข้อผิดพลาดในการสร้างใหม่ต่ำคุณอาจมี overfit อาจเป็นเพราะ resons อธิบายไว้ด้านล่าง (หรืออาจรวมกันของรูปแบบทั้ง 3 นี้ก็เพียงพอที่จะอธิบายข้อมูลทั้งหมดที่สนใจ) ไม่เช่นนั้น autoencoder จะไม่สามารถเรียนรู้วิธีสร้างข้อมูลของคุณใหม่และคุณต้องการ autoencoder ขนาดใหญ่ขึ้นหรืออัลกอริทึมการฝึกอบรมที่ดีขึ้น


1. ฉันคิดว่าข้อมูลนี้มีความหลากหลายมากมาย หนึ่งใน 50,000 กราฟเหล่านี้แตกต่างกันเล็กน้อย ฉันคิดว่ามันเป็นไปไม่ได้เลยที่ autoencoder สามารถสร้างมันใหม่ทั้งหมดโดยใช้ตัวกรองเพียง 3 ตัว 2. เคล็ดลับสำหรับการประเมินข้อผิดพลาดในการสร้างใหม่? รหัสที่ฉันใช้มีข้อผิดพลาด แต่เป็นตัวเลขที่ใหญ่มากซึ่งไม่ได้บอกอะไรมาก ฉันควรเปรียบเทียบข้อผิดพลาดในการสร้างใหม่กับขนาดของอินพุตหรือจำนวนเลเยอร์ที่ซ่อนอยู่หรือไม่
b93dh44
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.