เท่าที่ฉันรู้ทั้งตัวเข้ารหัสอัตโนมัติและ t-SNE นั้นใช้สำหรับการลดขนาดแบบไม่เชิงเส้น อะไรคือความแตกต่างระหว่างพวกเขาและทำไมฉันถึงควรใช้อันหนึ่งกับอีกอัน?
เท่าที่ฉันรู้ทั้งตัวเข้ารหัสอัตโนมัติและ t-SNE นั้นใช้สำหรับการลดขนาดแบบไม่เชิงเส้น อะไรคือความแตกต่างระหว่างพวกเขาและทำไมฉันถึงควรใช้อันหนึ่งกับอีกอัน?
คำตอบ:
ทั้งคู่พยายามหามิติข้อมูลที่ฝังอยู่ใต้ข้อมูลของคุณ อย่างไรก็ตามมีปัญหาการย่อเล็กสุดแตกต่างกัน โดยเฉพาะอย่างยิ่ง autoencoder พยายามที่จะลดข้อผิดพลาดในการสร้างใหม่ในขณะที่ t-SNE พยายามที่จะหาพื้นที่มิติที่ต่ำกว่าและในเวลาเดียวกันก็พยายามที่จะรักษาระยะทางที่ใกล้เคียง เป็นผลมาจากคุณลักษณะนี้มักจะต้องการ t-SNE สำหรับแปลงและการสร้างภาพ
[Autoencoders] มุ่งเน้นไปที่การเพิ่มความแปรปรวนของข้อมูลในพื้นที่ที่ซ่อนเร้นซึ่งเป็นผลมาจากการที่ autoencoders ประสบความสำเร็จน้อยกว่าในการรักษาโครงสร้างของข้อมูลในพื้นที่แฝงมากกว่าผู้เรียนที่หลากหลาย ...
จาก "การเรียนรู้การฝังพารามิเตอร์โดยการรักษาโครงสร้างของท้องถิ่น", Laurens van der Maaten ( https://lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf )
Autoencoder และ t-SNE สามารถใช้ร่วมกันเพื่อการสร้างภาพที่ดีขึ้นในข้อมูลมิติสูงดังที่อธิบายไว้ใน [1]:
สำหรับการสร้างภาพ 2D โดยเฉพาะ t-SNE น่าจะเป็นอัลกอริธึมที่ดีที่สุด แต่โดยทั่วไปแล้วมันต้องการข้อมูลที่มีขนาดค่อนข้างต่ำ ดังนั้นกลยุทธ์ที่ดีสำหรับการแสดงภาพความสัมพันธ์ที่คล้ายคลึงกันในข้อมูลมิติสูงคือการเริ่มต้นโดยใช้ autoencoder เพื่อบีบอัดข้อมูลของคุณลงในพื้นที่มิติต่ำ (เช่น 32 มิติ) จากนั้นใช้ t-SNE สำหรับทำแผนที่ข้อมูลบีบอัดไปยังระนาบ 2D .
[1] https://blog.keras.io/building-autoencoders-in-keras.html
Autoencoder ถูกออกแบบมาเพื่อรักษาข้อมูลก่อนหน้านี้ในความหมาย 2 บรรทัดซึ่งสามารถคิดได้ว่าเป็นการรักษาพลังงานจลน์ของข้อมูลหากข้อมูลเป็นความเร็ว
ในขณะที่ t-SNE ใช้ KL divergence ซึ่งไม่สมมาตร แต่จะนำไปสู่การโฟกัส t-SNE มากขึ้นกับโครงสร้างท้องถิ่นในขณะที่ autoencoder มีแนวโน้มที่จะทำให้เกิดข้อผิดพลาด L2 โดยรวมซึ่งอยู่ในระดับโลก