โครงสร้างของโครงข่ายประสาทเทียม (LSTM, GRU)


10

ฉันพยายามที่จะเข้าใจสถาปัตยกรรมของ RNNs ฉันพบบทช่วยสอนนี้ซึ่งมีประโยชน์มาก: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

โดยเฉพาะภาพนี้: ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้เหมาะสมกับเครือข่าย feed-forward หรือไม่? ภาพนี้เป็นเพียงโหนดอื่นในแต่ละเลเยอร์หรือไม่


หรือนี่คือสิ่งที่เซลล์ประสาททุกคนมีลักษณะอย่างไร
Adam12344

คำตอบ:


8

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

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


ทำ ชั่วโมงเสื้อ, เสื้อ และ xเสื้อมีความยาวเท่ากันทั้งหมดหรือไม่
user_1177868

6

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

หากคุณจะแฉเครือข่ายนี้ในเวลาตามที่ปรากฏในภาพของคุณ (จากซ้ายไปขวาแกนเวลาถูกแฉออก) จากนั้นคุณจะได้รับเครือข่าย feedforward กับ T (จำนวนขั้นตอนทั้งหมด) แต่ละชั้นที่มี โหนดเดียว (เซลล์ประสาท) ตามที่วาดในบล็อกกลาง A

หวังว่านี่จะตอบคำถามของคุณ


3

ฉันต้องการอธิบายไดอะแกรมอย่างง่าย ๆ ในบริบทที่ค่อนข้างซับซ้อน: กลไกความสนใจในตัวถอดรหัสของโมเดล seq2seq

ในการไหลแผนภาพร้อง ชั่วโมง0 ถึง ชั่วโมงk-1คือขั้นตอนเวลา (ของความยาวเดียวกันกับหมายเลขอินพุตที่มี PAD สำหรับช่องว่าง) ทุกครั้งที่คำถูกใส่ลงใน ith (ขั้นตอนเวลา) LSTM Neural (หรือเซลล์ kernal เหมือนกับใคร ๆ ในสามภาพของคุณ) มันคำนวณเอาท์พุท ith ตามสถานะก่อนหน้า (i-1) th output และ อินพุต ithxผม. ฉันแสดงให้เห็นถึงปัญหาของคุณโดยใช้สิ่งนี้เป็นเพราะทุกสถานะของการบันทึกเวลาถูกบันทึกไว้สำหรับกลไกความสนใจแทนที่จะละทิ้งเพียงเพื่อให้ได้ครั้งสุดท้ายเท่านั้น มันเป็นเพียงระบบประสาทเดียวและถูกมองว่าเป็นเลเยอร์ (สามารถซ้อนกันหลายชั้นเพื่อสร้างตัวอย่างเช่นตัวเข้ารหัสแบบสองทิศทางในโมเดล seq2seq บางรุ่นเพื่อดึงข้อมูลนามธรรมในเลเยอร์ที่สูงขึ้น)

จากนั้นจะเข้ารหัสประโยค (ด้วยคำ L และแต่ละอันแทนด้วยเวกเตอร์ของรูปร่าง: embedding_dimention * 1) ลงในรายการ L tensors (แต่ละรูปร่าง: num_hidden / num_units * 1) และสถานะที่ผ่านมาไปยังตัวถอดรหัสเป็นเพียงเวกเตอร์ตัวสุดท้ายเนื่องจากประโยคนั้นมีรูปร่างเหมือนกันของแต่ละรายการในรายการ

ป้อนคำอธิบายรูปภาพที่นี่
แหล่งรูปภาพ: กลไกการใส่ใจ

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