แนวคิดที่อยู่เบื้องหลัง Recurrent Neural Network (RNN) ชัดเจนสำหรับฉัน ฉันเข้าใจในวิธีต่อไปนี้:
เรามีลำดับของการสังเกต ( ) (หรือกล่าวอีกนัยหนึ่งคืออนุกรมเวลาหลายตัวแปร) การสังเกตแต่ละครั้งเป็นเวกเตอร์ตัวเลข -dimensional ภายในโมเดล RNN เราถือว่าการสังเกตต่อไปเป็นหน้าที่ของการสังเกตการณ์ก่อนหน้านี้เช่นเดียวกับ "สถานะที่ซ่อน" ก่อนหน้านี้ซึ่งสถานะที่ซ่อนอยู่จะถูกแสดงด้วยตัวเลข เวกเตอร์ (ขนาดของสถานะที่ถูกตรวจสอบและสถานะที่ซ่อนอยู่อาจแตกต่างกัน) รัฐที่ซ่อนตัวเองก็สันนิษฐานว่าขึ้นอยู่กับการสังเกตก่อนหน้านี้และสถานะที่ซ่อนอยู่:
ในที่สุดในโมเดล RNN ฟังก์ชันจะถือว่าเป็นเครือข่ายประสาท เราทำการฝึกอบรม (โครงข่ายประสาทเทียม) โดยใช้ข้อมูลที่มีอยู่ (ลำดับของการสังเกต) เป้าหมายของเราในการฝึกอบรมคือสามารถทำนายการสังเกตการณ์ต่อไปได้อย่างแม่นยำที่สุดโดยใช้การสังเกตก่อนหน้านี้
ตอนนี้เครือข่าย LSTM เป็นการแก้ไขเครือข่าย RNN เท่าที่ฉันเข้าใจแรงจูงใจที่อยู่เบื้องหลัง LSTM คือการแก้ไขปัญหาของหน่วยความจำระยะสั้นที่เป็นลักษณะเฉพาะของ RNN (RNN ทั่วไปมีปัญหาเกี่ยวกับเหตุการณ์ที่เกี่ยวข้องซึ่งแยกกันมากเกินไปในเวลา)
ฉันเข้าใจว่าเครือข่าย LSTM ทำงานอย่างไร นี่คือคำอธิบายที่ดีที่สุดของ LSTMที่ฉันได้พบ แนวคิดพื้นฐานมีดังนี้:
นอกจากเวกเตอร์สถานะที่ซ่อนอยู่เราแนะนำเวกเตอร์ "สถานะเซลล์" ที่มีขนาดเท่ากัน (ไดนามิค) เป็นเวกเตอร์สถานะที่ซ่อนอยู่ ( ) ฉันคิดว่าเวกเตอร์ "สถานะเซลล์" ได้รับการแนะนำให้รู้จักกับหน่วยความจำระยะยาว เช่นเดียวกับในกรณีของ RNN แบบดั้งเดิมเครือข่าย LSTM จะได้รับสถานะการสังเกตและการซ่อนเป็นอินพุต การใช้อินพุตนี้เราคำนวณ "สถานะเซลล์" ใหม่ด้วยวิธีต่อไปนี้:
โดยที่ฟังก์ชั่นของ ,และรับการจำลองโดยเครือข่ายประสาท เพื่อให้การแสดงออกง่ายขึ้นฉันเพิ่งลบอาร์กิวเมนต์:
ดังนั้นเราจะเห็นได้ว่า "เซลล์สถานะเวกเตอร์" ใหม่ ( ) คือผลรวมถ่วงน้ำหนักของเวกเตอร์สถานะเก่า ( ) และเวกเตอร์สถานะเซลล์ "กลาง" ( ) การคูณระหว่างเวกเตอร์เป็นองค์ประกอบที่ชาญฉลาด (เราคูณเวกเตอร์มิติ N สองอันและได้รับเป็นผลให้เวกเตอร์มิติ N อีกอัน) กล่าวอีกนัยหนึ่งเราผสมเวกเตอร์ของเซลล์สองเซลล์ (อันเก่าและอันที่ 1) โดยใช้น้ำหนักเฉพาะของส่วนประกอบ
นี่คือสัญชาตญาณระหว่างการดำเนินการที่อธิบายไว้ เวกเตอร์สถานะของเซลล์สามารถตีความได้ว่าเป็นเวกเตอร์หน่วยความจำ น้ำหนักที่สองเวกเตอร์ (คำนวณโดยเครือข่ายประสาทเทียม) คือประตู "Keep" (หรือลืม) ค่าของมันตัดสินใจว่าเราจะเก็บหรือลืม (ลบ) ค่าที่สอดคล้องกันจากเวกเตอร์สถานะของเซลล์ (หรือเวกเตอร์หน่วยความจำระยะยาว) เวกเตอร์ตุ้มน้ำหนักแรก ( ) ซึ่งคำนวณโดยเครือข่ายประสาทอื่นเรียกว่าประตู "เขียน" หรือ "จดจำ" มันตัดสินใจว่าหน่วยความจำใหม่ (เวกเตอร์สถานะเซลล์ "ระดับกลาง") จะต้องได้รับการบันทึกไว้ (หรือแม่นยำยิ่งขึ้นถ้าองค์ประกอบเฉพาะของหน่วยนั้นจะต้องได้รับการบันทึก / เขียน) "กลาง"เวกเตอร์) ที่จริงแล้วมันจะแม่นยำกว่าที่จะบอกว่าด้วยเวกเตอร์น้ำหนักสองอัน ( และ ) เรา "ผสม" หน่วยความจำเก่าและใหม่
ดังนั้นหลังจากที่อธิบายไว้ข้างต้นการผสม (หรือลืมและท่องจำ) เรามีเวกเตอร์สถานะเซลล์ใหม่ จากนั้นเราคำนวณสถานะ "กลาง" ที่ซ่อนอยู่โดยใช้เครือข่ายประสาทอื่น (เหมือนก่อนหน้านี้เราใช้สถานะที่สังเกตและสถานะที่ซ่อนเป็นอินพุต) ในที่สุดเรารวมสถานะเซลล์ใหม่ (หน่วยความจำ) เข้ากับสถานะ "ตัวกลาง" ที่ซ่อนอยู่ ( ) เพื่อรับสถานะที่ซ่อนใหม่ (หรือ "ขั้นสุดท้าย") ที่เราส่งออกจริง:
ดังนั้นคำถามของฉันคือ: ทำไม (หรือว่าถูกต้อง) สถาปัตยกรรมนี้แก้ปัญหาได้อย่างไร
โดยเฉพาะฉันไม่เข้าใจสิ่งต่อไปนี้:
- เราใช้เครือข่ายนิวรัลเพื่อสร้างหน่วยความจำ "ขั้นกลาง" (เวกเตอร์สถานะเซลล์) ที่ผสมกับหน่วยความจำ "เก่า" (หรือสถานะเซลล์) เพื่อรับหน่วยความจำ "ใหม่" (สถานะเซลล์) ปัจจัยน้ำหนักสำหรับการผสมจะถูกคำนวณโดยเครือข่ายประสาท แต่ทำไมเราไม่สามารถใช้เพียงหนึ่งเครือข่ายประสาทเทียมในการคำนวณสถานะของเซลล์ "ใหม่" (หรือหน่วยความจำ) หรืออีกนัยหนึ่งเหตุใดเราไม่สามารถใช้สถานะที่สังเกตสถานะที่ซ่อนอยู่และหน่วยความจำเก่าเป็นอินพุตในเครือข่ายประสาทที่คำนวณหน่วยความจำ "ใหม่" ได้
- ในท้ายที่สุดเราใช้สถานะที่ถูกสังเกตุและซ่อนเพื่อคำนวณสถานะที่ซ่อนใหม่จากนั้นเราใช้หน่วยความจำเซลล์ "ใหม่" (หรือ (ระยะยาว) หน่วยความจำ) เพื่อแก้ไขส่วนประกอบของสถานะที่ถูกซ่อนใหม่ กล่าวอีกนัยหนึ่งส่วนประกอบของสถานะเซลล์จะใช้เป็นน้ำหนักที่ลดองค์ประกอบที่สอดคล้องกันของสถานะซ่อนเร้นที่คำนวณได้ แต่ทำไมเวกเตอร์สถานะเซลล์จึงถูกใช้ในวิธีนี้โดยเฉพาะ? ทำไมเราไม่สามารถคำนวณสถานะที่ซ่อนอยู่ใหม่ได้โดยใส่เวกเตอร์สถานะเซลล์ (หน่วยความจำระยะยาว) ไปยังอินพุตของเครือข่ายประสาท (ซึ่งจะนำสถานะที่สังเกตและซ่อนไว้เป็นอินพุต) ด้วย
ที่เพิ่ม:
นี่คือวิดีโอที่อาจช่วยให้ชัดเจนว่าประตูต่าง ๆ ("Keep", "write" และ "read") จัดระเบียบอย่างไร