ความแตกต่างระหว่างการเข้ารหัสแบบเบาบางและตัวเข้ารหัสอัตโนมัติคืออะไร


35

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


1
เบาบางเข้ารหัสจริงถือว่าประเภทเฉพาะของ autoencoder ที่รู้จักในฐานะautoencoder เบาบาง ดังนั้นคุณสามารถพิจารณาการเขียนรหัสกระจัดกระจายเป็นชุดย่อยของ autoencoders ถ้าคุณจะ
HelloGoodbye

คำตอบ:


34

การค้นหาความแตกต่างสามารถทำได้โดยดูที่แบบจำลอง ลองดูการเข้ารหัสแบบเบาบางก่อน

การเข้ารหัสแบบเบาบาง

การเข้ารหัสแบบเบาบางช่วยลดวัตถุประสงค์ โดยที่Wคือเมทริกซ์ของเบส, H คือเมทริกซ์ของรหัสและXคือเมทริกซ์ของข้อมูลที่เราต้องการแสดง pleดำเนินการค้าขายระหว่าง sparsity และ reconstruction โปรดทราบว่าถ้าเราได้รับHการประมาณค่าWจะง่ายผ่านกำลังสองน้อยที่สุด

Lsc=||WHX||22reconstruction term+λ||H||1sparsity term
WXλHW

HHhx

เข้ารหัสอัตโนมัติ

D(d(e(x;θr);θd),x)
Lae=||Wσ(WTX)X||2
σσ(x)=11+exp(x)

ความคล้ายคลึงกัน

LscLaeH=σ(WTX)

WWLsc

นอกจากนี้วิธีการที่แตกต่างกันของการเป็นตัวแทนผลผลิตผลผลิตปกติกับ characteristica ที่แตกต่างกัน เครื่องเข้ารหัสอัตโนมัติแบบ Denoising ก็แสดงให้เห็นว่าเทียบเท่ากับ RBM บางรูปแบบ ฯลฯ

แต่ทำไม

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

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


ขอบคุณสำหรับคำตอบ! ดังนั้นนั่นหมายความว่าการเข้ารหัสแบบเบาบางไม่ควรใช้ในทุกกรณี แต่เป็นตัวเข้ารหัสอัตโนมัติ? นอกจากนี้ควรมีคำพิเศษในการเขียนรหัสแบบเบาบาง
RockTheStar

ไม่มีกฎทั่วไปเช่นนั้น SC มีข้อดีอย่างหนึ่งต่อ AEs: การเข้ารหัสผ่านการปรับให้เหมาะสมอาจมีประสิทธิภาพมาก
bayerj

ขออภัยคุณสามารถอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ได้ไหม
RockTheStar

การมีแผนที่แบบตายตัวซึ่งได้รับการประเมินเพื่อทำตามข้อ จำกัด บางอย่าง (ที่นี่: ผลลัพธ์แบบเบาบาง) มีประสิทธิภาพน้อยกว่าการใช้เครื่องมือเพิ่มประสิทธิภาพที่พยายามค้นหาวิธีแก้ปัญหาเช่นนั้นซ้ำหลาย ๆ ครั้ง
bayerj

1
ขออภัยที่จะนำคำถามนี้ขึ้นอีกครั้ง ฉันคิดว่า Autoencoder สามารถส่งเสริม sparsity เช่น spenc autoencoder
RockTheStar

11

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

การกระจัดกระจายการเข้ารหัสถูกกำหนดให้เป็นการเรียนรู้ชุดเวกเตอร์พื้นฐานที่ครบวงจรเพื่อเป็นตัวแทนเวกเตอร์อินพุต (<- ทำไมเราต้องการสิ่งนี้)

อย่างแรกอย่างน้อยก็ตั้งแต่(Hubel & Wiesel, 1968)เป็นที่รู้กันว่าในภูมิภาค V1 มีเซลล์เฉพาะที่ตอบสนองต่อสิ่งกระตุ้นคล้ายกับขอบมากที่สุด (นอกเหนือจากการมีคุณสมบัติ "ประโยชน์" อื่น ๆ ) Sparse Coding เป็นรูปแบบที่อธิบายลักษณะที่สังเกตได้หลายอย่างของระบบนี้ ดู(Olshausen & Field, 1996)สำหรับรายละเอียดเพิ่มเติม

ประการที่สองมันแสดงให้เห็นว่ารูปแบบที่อธิบายการเข้ารหัสแบบเบาบางเป็นเทคนิคที่มีประโยชน์สำหรับการดึงคุณสมบัติในการเรียนรู้ของเครื่องและให้ผลลัพธ์ที่ดีในการถ่ายโอนงานการเรียนรู้ Raina และคณะ (2007)แสดงให้เห็นว่าชุดของ "พื้นฐานเวกเตอร์" (คุณสมบัติเหมือนปากกาจังหวะและขอบ) เรียนรู้ด้วยชุดฝึกอบรมที่ประกอบด้วยตัวอักษรเขียนด้วยมือช่วยเพิ่มการจำแนกในงานรับรู้ตัวเลขที่เขียนด้วยมือ รุ่นที่ตามมา Sparse Coding ถูกนำมาใช้ในการฝึกอบรมเครือข่าย "ลึก", ชั้นซ้อนของเครื่องตรวจจับคุณลักษณะ sparse เพื่อสร้าง "ตาข่ายความเชื่อลึก sparse" (Lee et al., 2007). เมื่อไม่นานมานี้ผลลัพธ์ที่น่าประหลาดใจในการจดจำภาพก็ทำได้โดยใช้แบบจำลองการเข้ารหัสแบบเบาบางเพื่อสร้างเครือข่ายที่มีหลายเลเยอร์ ("Google Brain" ที่มีชื่อเสียง) ซึ่งสามารถแยกแยะภาพของแมวในลักษณะที่ไม่มีการดูแลอย่างแท้จริง , 2013)

ประการที่สามอาจเป็นไปได้ที่จะใช้พื้นฐานการเรียนรู้เพื่อทำการบีบอัด A ยังไม่เคยเห็นใครทำแบบนั้นมาก่อน

ความแตกต่างระหว่างการเข้ารหัสแบบเบาบางและตัวเข้ารหัสอัตโนมัติคืออะไร

autoencoder เป็นรุ่นที่พยายามสร้างอินพุตขึ้นมาใหม่โดยปกติจะใช้ข้อ จำกัด บางอย่าง ตามวิกิพีเดียมัน "เป็นเครือข่ายประสาทเทียมที่ใช้สำหรับการเรียนรู้การเข้ารหัสที่มีประสิทธิภาพ" ไม่มีสิ่งใดในคำจำกัดความของผู้สร้างภาพอัตโนมัติที่ต้องมีการกระจาย ข้อ จำกัด การเข้ารหัสแบบเบาบางเป็นหนึ่งในเทคนิคที่มีอยู่ แต่มีวิธีอื่นเช่น Denoising Autoencoders, Contractive Autoencoders และ RBMs ทั้งหมดทำให้เครือข่ายเรียนรู้การนำเสนอที่ดีของอินพุต (ซึ่งก็คือ "กระจัดกระจาย")

เมื่อใดที่เราจะใช้การเข้ารหัสแบบเบาบางและตัวเข้ารหัสอัตโนมัติ

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


คำตอบนี้มีจุดที่น่าสนใจและการอ้างอิงที่สำคัญมากมาย อย่างไรก็ตามวรรคแรกคือผิด การเข้ารหัสแบบเบาบางและตัวเข้ารหัสอัตโนมัติแบบเบาบางเป็นสัตว์ที่แตกต่างกัน
bayerj

มันอยู่ที่ไหนว่าพวกเขาเป็นสิ่งเดียวกัน กรุณาบอกฉันและฉันจะแก้ไขคำตอบ
Saul Berardo

ในประโยคแรก
bayerj

"Sparse Coding เป็นเพียงหนึ่งในเทคนิคที่มีอยู่สำหรับฝึกอบรม autoencoders" ประโยคนี้ไม่ได้กำหนด "Sparse Coding" เหมือนกับ "beast" เหมือนกับ autoencoder มันบอกว่าระหว่างเทคนิคที่มีทั้งหมดสำหรับการฝึกอบรม autoencoders หนึ่งในนั้นคือ "Sparse Coding" ฉันเห็นด้วยว่าประโยคนั้นมีความคลุมเครือจริง ๆ ซึ่งฉันเชื่อว่าจะได้รับการชี้แจงจากคำตอบที่เหลือ
Saul Berardo

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

1

coder แบบเบาบางนั้นเปรียบเสมือนเป็นตัวเข้ารหัสอัตโนมัติครึ่งหนึ่ง ตัวเข้ารหัสอัตโนมัติทำงานเหมือน:

input  =>  neural net layer  =>  hidden outputs => neural net layer => output

สำหรับการแพร่กระจายย้อนกลับสัญญาณผิดพลาดคือการสูญเสียคือ: อินพุต - เอาต์พุต

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

ในการเขียนกระจัดกระจายเรามีเพียงครึ่งหลังของสิ่งนี้:

                                codes => neural net layer => output

'รหัส' เป็นจำนวนจริงจำนวนมากเลือกสำหรับฟังก์ชั่นพื้นฐานที่แสดงโดยน้ำหนักในชั้นตาข่ายประสาท เนื่องจากในกระดาษของ Olshausen พวกเขากำลังใช้ข้อ จำกัด sparsity กับรหัส, รหัสนั้น, เช่นเดียวกับใน sparse auto-encoder, sparse: ศูนย์ส่วนใหญ่มีเพียงไม่กี่ตัว

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

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


0

คุณอาจต้องการอ่านรายงานฉบับนี้https://arxiv.org/abs/1708.03735v2ในหัวข้อเดียวกันนี้อย่างแม่นยำ ในบทความนี้ผู้เขียนแสดงให้เห็นว่าจริง ๆ แล้วสามารถตั้งค่าเครื่องสร้างรหัสอัตโนมัติเพื่อให้พจนานุกรมความจริงพื้นฐานเป็นจุดสำคัญของฟังก์ชั่นการสูญเสียกำลังสองของผู้สร้างภาพอัตโนมัติ

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