สัญชาตญาณที่อยู่เบื้องหลังเครือข่ายประสาทแบบ Long Long Term Memory (LSTM) กำเริบคืออะไร?


11

แนวคิดที่อยู่เบื้องหลัง Recurrent Neural Network (RNN) ชัดเจนสำหรับฉัน ฉันเข้าใจในวิธีต่อไปนี้:
เรามีลำดับของการสังเกต ( ) (หรือกล่าวอีกนัยหนึ่งคืออนุกรมเวลาหลายตัวแปร) การสังเกตแต่ละครั้งเป็นเวกเตอร์ตัวเลข -dimensional ภายในโมเดล RNN เราถือว่าการสังเกตต่อไปเป็นหน้าที่ของการสังเกตการณ์ก่อนหน้านี้เช่นเดียวกับ "สถานะที่ซ่อน" ก่อนหน้านี้ซึ่งสถานะที่ซ่อนอยู่จะถูกแสดงด้วยตัวเลข เวกเตอร์ (ขนาดของสถานะที่ถูกตรวจสอบและสถานะที่ซ่อนอยู่อาจแตกต่างกัน) รัฐที่ซ่อนตัวเองก็สันนิษฐานว่าขึ้นอยู่กับการสังเกตก่อนหน้านี้และสถานะที่ซ่อนอยู่:o1,o2,,onoiNoi+1oihi

oi,hi=F(oi1,hi1)

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

ตอนนี้เครือข่าย LSTM เป็นการแก้ไขเครือข่าย RNN เท่าที่ฉันเข้าใจแรงจูงใจที่อยู่เบื้องหลัง LSTM คือการแก้ไขปัญหาของหน่วยความจำระยะสั้นที่เป็นลักษณะเฉพาะของ RNN (RNN ทั่วไปมีปัญหาเกี่ยวกับเหตุการณ์ที่เกี่ยวข้องซึ่งแยกกันมากเกินไปในเวลา)

ฉันเข้าใจว่าเครือข่าย LSTM ทำงานอย่างไร นี่คือคำอธิบายที่ดีที่สุดของ LSTMที่ฉันได้พบ แนวคิดพื้นฐานมีดังนี้:

นอกจากเวกเตอร์สถานะที่ซ่อนอยู่เราแนะนำเวกเตอร์ "สถานะเซลล์" ที่มีขนาดเท่ากัน (ไดนามิค) เป็นเวกเตอร์สถานะที่ซ่อนอยู่ ( ) ฉันคิดว่าเวกเตอร์ "สถานะเซลล์" ได้รับการแนะนำให้รู้จักกับหน่วยความจำระยะยาว เช่นเดียวกับในกรณีของ RNN แบบดั้งเดิมเครือข่าย LSTM จะได้รับสถานะการสังเกตและการซ่อนเป็นอินพุต การใช้อินพุตนี้เราคำนวณ "สถานะเซลล์" ใหม่ด้วยวิธีต่อไปนี้:ci

ci+1=ω1(oi,hi)ci+ω2(oi,hi)cint(oi,hi),

โดยที่ฟังก์ชั่นของ ,และรับการจำลองโดยเครือข่ายประสาท เพื่อให้การแสดงออกง่ายขึ้นฉันเพิ่งลบอาร์กิวเมนต์:ω1ω2cint

ci+1=ω1ci+ω2cint

ดังนั้นเราจะเห็นได้ว่า "เซลล์สถานะเวกเตอร์" ใหม่ ( ) คือผลรวมถ่วงน้ำหนักของเวกเตอร์สถานะเก่า ( ) และเวกเตอร์สถานะเซลล์ "กลาง" (ผมผม-1ผมnเสื้อ ) การคูณระหว่างเวกเตอร์เป็นองค์ประกอบที่ชาญฉลาด (เราคูณเวกเตอร์มิติ N สองอันและได้รับเป็นผลให้เวกเตอร์มิติ N อีกอัน) กล่าวอีกนัยหนึ่งเราผสมเวกเตอร์ของเซลล์สองเซลล์ (อันเก่าและอันที่ 1) โดยใช้น้ำหนักเฉพาะของส่วนประกอบ

นี่คือสัญชาตญาณระหว่างการดำเนินการที่อธิบายไว้ เวกเตอร์สถานะของเซลล์สามารถตีความได้ว่าเป็นเวกเตอร์หน่วยความจำ น้ำหนักที่สองเวกเตอร์ (คำนวณโดยเครือข่ายประสาทเทียม) คือประตู "Keep" (หรือลืม) ค่าของมันตัดสินใจว่าเราจะเก็บหรือลืม (ลบ) ค่าที่สอดคล้องกันจากเวกเตอร์สถานะของเซลล์ (หรือเวกเตอร์หน่วยความจำระยะยาว) เวกเตอร์ตุ้มน้ำหนักแรก ( ) ซึ่งคำนวณโดยเครือข่ายประสาทอื่นเรียกว่าประตู "เขียน" หรือ "จดจำ" มันตัดสินใจว่าหน่วยความจำใหม่ (เวกเตอร์สถานะเซลล์ "ระดับกลาง") จะต้องได้รับการบันทึกไว้ (หรือแม่นยำยิ่งขึ้นถ้าองค์ประกอบเฉพาะของหน่วยนั้นจะต้องได้รับการบันทึก / เขียน) "กลาง"ω2ω1ω1เวกเตอร์) ที่จริงแล้วมันจะแม่นยำกว่าที่จะบอกว่าด้วยเวกเตอร์น้ำหนักสองอัน ( ω1และω2 ) เรา "ผสม" หน่วยความจำเก่าและใหม่

ดังนั้นหลังจากที่อธิบายไว้ข้างต้นการผสม (หรือลืมและท่องจำ) เรามีเวกเตอร์สถานะเซลล์ใหม่ จากนั้นเราคำนวณสถานะ "กลาง" ที่ซ่อนอยู่โดยใช้เครือข่ายประสาทอื่น (เหมือนก่อนหน้านี้เราใช้สถานะที่สังเกตโอผมและสถานะที่ซ่อนชั่วโมงผมเป็นอินพุต) ในที่สุดเรารวมสถานะเซลล์ใหม่ (หน่วยความจำ) เข้ากับสถานะ "ตัวกลาง" ที่ซ่อนอยู่ ( ชั่วโมงผมnเสื้อ ) เพื่อรับสถานะที่ซ่อนใหม่ (หรือ "ขั้นสุดท้าย") ที่เราส่งออกจริง:

ชั่วโมงผม+1=ชั่วโมงผมnเสื้อS(ผม+1),

S

ดังนั้นคำถามของฉันคือ: ทำไม (หรือว่าถูกต้อง) สถาปัตยกรรมนี้แก้ปัญหาได้อย่างไร

โดยเฉพาะฉันไม่เข้าใจสิ่งต่อไปนี้:

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

ที่เพิ่ม:

นี่คือวิดีโอที่อาจช่วยให้ชัดเจนว่าประตูต่าง ๆ ("Keep", "write" และ "read") จัดระเบียบอย่างไร


1
ดูเหมือนว่าคุณจะเข้าใจ LSTM ได้ดีกว่าฉันดังนั้นฉันจะไม่โพสต์คำตอบจริง ๆ เพราะมันอาจไม่ใช่สิ่งที่คุณกำลังมองหา: ประตู LSTM (ส่วนใหญ่เป็นประตูลืม) อนุญาตให้เปิดใช้งานและไล่ระดับสีได้นาน เท่าที่จำเป็น ดังนั้นข้อมูล ณ เวลา t อาจถูกเก็บไว้จนกว่าจะถึงเวลา t + n สำหรับขนาดใหญ่โดยพลการ n
rcpinto

@rcpinto ฉันคิดว่าแนวคิดหลักที่อยู่เบื้องหลัง "สถาปัตยกรรม" ที่เสนอคือการเปิดใช้งานการเก็บข้อมูลเป็นเวลานาน (หลายขั้นตอน) แต่ฉันไม่เข้าใจว่าอะไรทำให้มันเป็นไปได้ เครือข่ายประตูทั้งสอง ("Keep" และ "write") อาจเรียนรู้ว่า Keep-weights ควรมีขนาดใหญ่และน้ำหนักการเขียนควรมีขนาดเล็ก (จากนั้นเราจะเก็บความทรงจำเป็นเวลานาน) แต่นั่นไม่สามารถทำได้โดยเครือข่ายเดียว? เครือข่ายประสาท (ที่ใช้สถานะที่ซ่อนอยู่ (หน่วยความจำ) และสถานะที่สังเกตได้เป็นอินพุต) ไม่สามารถเรียนรู้ว่ารัฐที่ซ่อนอยู่ควรถูกเก็บไว้โดยไม่มีการเปลี่ยนแปลงหรือไม่?
โรมัน

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

@rcpinto แต่ไม่สามารถ "ความสามารถในการลบหน่วยความจำก่อนหน้าหรือบล็อกการก่อตัวของใหม่" ไม่สามารถทำได้ภายในเครือข่ายประสาทเดียว? เครือข่ายประสาทรับเวกเตอร์หน่วยความจำ (หรือเวกเตอร์สถานะที่ซ่อนอยู่) และเวกเตอร์สถานะที่สังเกตได้เป็นอินพุต เครือข่ายดังกล่าวไม่สามารถ "ตัดสินใจ" เพื่อเก็บหรือเปลี่ยนส่วนประกอบบางส่วนของสถานะที่ซ่อนอยู่ (หน่วยความจำ) ตามค่าของส่วนประกอบในเวกเตอร์สถานะที่สังเกตได้หรือไม่
โรมัน

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

คำตอบ:


1

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

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

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

เป็นที่น่าสังเกตว่าทางเลือกที่ใช้กันทั่วไปมากที่สุดสำหรับ LSTM คือGRUคำนวณการอัพเดทสถานะที่คล้ายกันโดยไม่ต้องเรียนรู้น้ำหนักที่ทำงานโดยตรงกับสถานะที่ซ่อนอยู่


0

หากฉันเข้าใจคำถามของคุณทั้งสองอย่างถูกต้อง สองแห่งที่เราใช้ทั้ง tanh และ sigmoid เพื่อประมวลผลข้อมูล แทนที่จะเป็นเช่นนั้นเราควรใช้เครือข่ายประสาทเดียวซึ่งใช้ในข้อมูลทั้งหมด

ฉันไม่ทราบข้อเสียของการใช้เครือข่ายประสาทเดียว ในความคิดของฉันเราสามารถใช้โครงข่ายประสาทเดี่ยวที่มี sigmoid non-linearity ซึ่งเรียนรู้เวกเตอร์ที่จะใช้อย่างถูกต้อง (เพิ่มในสถานะเซลล์ในกรณีแรกหรือส่งผ่านเป็นสถานะที่ซ่อนอยู่ในกรณีที่สอง)

อย่างไรก็ตามวิธีที่เรากำลังทำอยู่ตอนนี้เราแบ่งงานเป็นสองส่วนส่วนหนึ่งซึ่งใช้ sigmoid non-linearity เพื่อเรียนรู้จำนวนข้อมูลที่จะเก็บไว้ ส่วนอื่น ๆ ที่ใช้ Tanh เป็นแบบไม่เป็นเชิงเส้นเป็นเพียงการทำงานของการเรียนรู้ข้อมูลที่มีความสำคัญ

ในแง่ง่าย sigmoid เรียนรู้วิธีการประหยัดและ tanh เรียนรู้สิ่งที่จะบันทึกและทำลายมันในสองส่วนจะทำให้การฝึกอบรมง่ายขึ้น

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