ฉันสามารถใช้ ReLU ใน autoencoder เป็นฟังก์ชั่นการเปิดใช้งานได้หรือไม่?


11

เมื่อติดตั้ง autoencoder กับโครงข่ายประสาทเทียมคนส่วนใหญ่จะใช้ sigmoid เป็นฟังก์ชั่นการเปิดใช้งาน

เราสามารถใช้ ReLU แทนได้หรือไม่? (เนื่องจาก ReLU ไม่มีขีด จำกัด บนขอบเขตโดยทั่วไปหมายถึงภาพอินพุตสามารถมีพิกเซลใหญ่กว่า 1 ซึ่งแตกต่างจากเกณฑ์ที่ จำกัด สำหรับ autoencoder เมื่อใช้ sigmoid)

คำตอบ:


5

นี่คือหัวข้อการสนทนา (ตั้งแต่เดือนกรกฎาคม 2013) ที่ระบุว่าอาจมีปัญหาบางอย่างเกี่ยวกับเรื่องนี้ แต่สามารถทำได้

ÇağlarGülçehre (จากห้องทดลองของ Yoshua Bengio) กล่าวว่าเขาประสบความสำเร็จในการใช้เทคนิคต่อไปนี้ในเรื่องความรู้: ความสำคัญของข้อมูลก่อนเพื่อเพิ่มประสิทธิภาพ :

ฝึก DAE แรกตามปกติ แต่ใช้วงจรเรียงกระแสในเลเยอร์ที่ซ่อนอยู่: a1(x) = W1 x + b1 h1 = f1(x) = rectifier(a1(x)) g1(h1) = {sigmoid}(V1 h1 + c1) ลด cross-entropy หรือการสูญเสีย MSE เปรียบเทียบ g1 (f1 (เสียหาย (x))) และ x sigmoid เป็นทางเลือกขึ้นอยู่กับข้อมูล

h2 = f2(h1) = rectifier(W2 h1 + b2) g2(h2) = softplus(V2 h2 + c2) f1(x)g2(f2(rectifier(corrupt(a1(x)))))2+λ1W1+λ2W2

Xavier Glorot จากห้องปฏิบัติการ Bengio กล่าวว่าเขาทำเช่นเดียวกันยกเว้นการแทนที่ด้วยการลงโทษ "ในค่าการเปิดใช้งาน" (สมมุติ ?) ทั้งในAdaptation สำหรับ การจำแนกประเภทความเชื่อมั่นขนาดใหญ่: แนวทางการเรียนรู้ลึก (ICML 2011) และในเครือข่ายนิวรัลเรกติไฟเซอร์เบาบาง (AISTATS 2011)L 1g 2 ( ) 1W1L1g2()1


ขอบคุณสำหรับการตอบสนองที่รวดเร็ว! ดังนั้นคุณกำลังบอกว่ามีปัญหาบางอย่างในการปรับออโต้ auteencoder เมื่อใช้ ReLU แทน Sigmoid?
RockTheStar

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

ฉันกำลังทดลองกับ autoencoder ง่าย ๆ บนชุดข้อมูล MNIST ฉันใช้เครือข่ายที่เชื่อมต่ออย่างเต็มที่กับสถาปัตยกรรม 784-128-64-2-64-128-784 ฉันใช้ relus ทุกที่ แต่กำลังทดลองกับคอขวดเลเยอร์ (relu หรือเชิงเส้น) และเลเยอร์เอาท์พุท (relu หรือ sigmoid) การใช้วงจรเรียงกระแสในเอาต์พุตจะทำให้ประสิทธิภาพแย่ลง sigmoid ทำได้ดีกว่า สำหรับเอาต์พุต sigmoid ดูเหมือนว่าจะทำงานได้ดีกว่าเล็กน้อย ดังนั้นชุดค่าผสมที่ฉันโปรดปรานสำหรับสองชั้นนี้เป็นแบบเชิงเส้น / sigmoid (โดยวิธีการใช้ sigmoids ในทุกชั้นทำให้แย่ลงอย่างเห็นได้ชัด)
อะมีบา

@ameoba มันไม่น่าแปลกใจสำหรับฉันที่ relu output นั้นไม่ดี: ถ้าคุณรู้ว่า output นั้นมีขอบเขตที่แน่นอนมันก็สมเหตุสมผลที่จะใช้ฟังก์ชั่นการเปิดใช้งาน ฉันไม่เคยมีประสบการณ์สุดยอดในพื้นที่นี้ แต่ฉันอาจลองใช้ELUหรือ ReLU ที่รั่วไหลสำหรับเลเยอร์ที่ซ่อนอยู่
Dougal

2
โอ้ว้าวฉันไม่รู้จัก ELU! ขอบคุณมากสำหรับคำแนะนำ Dougal ฉันลองพวกเขาและพวกเขาทำงานได้ดีขึ้น การเรียนรู้อย่างลึกซึ้งเป็นสิ่งที่น่าอัศจรรย์: เทคนิคใหม่ ๆ ปรากฏขึ้นทุกปีและไม่มีใครมีความคิดใด ๆ ว่าทำไมบางคนถึงทำงานได้ดีกว่าคนอื่น (CC ถึง @RockTheStar) อย่างไรก็ตามฉันพบว่าเครื่องมือเพิ่มประสิทธิภาพของอดัมมีประสิทธิภาพที่ยอดเยี่ยม
อะมีบา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.