ทำไมน้ำหนักของเครือข่าย RNN / LSTM จึงถูกแชร์ข้ามเวลา


20

เมื่อไม่นานมานี้ฉันสนใจ LSTM และฉันรู้สึกประหลาดใจเมื่อรู้ว่าน้ำหนักจะถูกแบ่งปันข้ามเวลา

  • ฉันรู้ว่าถ้าคุณแบ่งปันน้ำหนักข้ามช่วงเวลาลำดับการป้อนข้อมูลของคุณอาจเป็นความยาวผันแปรได้

  • ด้วยน้ำหนักที่ใช้ร่วมกันคุณจะมีพารามิเตอร์น้อยลงในการฝึกอบรม

จากความเข้าใจของฉันเหตุผลที่จะกลายเป็น LSTM กับวิธีการเรียนรู้อื่น ๆ ก็เพราะคุณเชื่อว่ามีโครงสร้าง / ลำดับ / การพึ่งพาชั่วคราวในข้อมูลของคุณที่คุณต้องการเรียนรู้ หากคุณเสียสละความยาว 'หรูหรา' และยอมรับเวลาคำนวณนาน RNN / LSTM จะไม่มีน้ำหนักที่ใช้ร่วมกัน (เช่นสำหรับทุกขั้นตอนที่คุณมีน้ำหนักแตกต่างกัน) ทำงานได้ดีขึ้นหรือมีบางสิ่งที่ขาดหายไป?

คำตอบ:


17

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

มีเหตุผลทางทฤษฎีล้วนๆสำหรับการแบ่งปันพารามิเตอร์:

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

  • บ่อยครั้งที่ลำดับจะทำงานตามกฎเดียวกันในลำดับ ตัวอย่างเช่นใน NLP:

                                                     "ในวันจันทร์หิมะตก"

                                                     "หิมะตกในวันจันทร์"

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

LSTM ไม่แตกต่างกันในแง่นี้ดังนั้นจึงใช้พารามิเตอร์ที่ใช้ร่วมกันเช่นกัน


4
นี่คือเหตุผลสำคัญมากกว่าคำตอบที่ยอมรับ!
jlh

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

12

มุมมอง 'น้ำหนักที่ใช้ร่วมกัน' มาจากการคิดถึง RNN เนื่องจากเครือข่าย feedforward ไม่ได้ควบคุมข้ามเวลา หากน้ำหนักแตกต่างกันในแต่ละช่วงเวลานี่เป็นเพียงเครือข่ายอาหารสัตว์ แต่ฉันคิดว่าวิธีอื่นที่จะคิดว่ามันจะเป็น RNN ที่มีน้ำหนักเป็นฟังก์ชั่นการเปลี่ยนแปลงเวลา

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


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

0

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


คุณช่วยอธิบายสิ่งที่คุณหมายถึง "มีประสิทธิภาพ" ได้ไหม? การอ้างอิงถึงเครื่องจักรทัวริงแสดงให้เห็นว่าสิ่งที่คุณมีอยู่ในใจอาจแตกต่างไปจากที่เป็นจริงในสถิติ
whuber

RNN ใช้เพื่อประมวลผลลำดับของข้อมูล ชนิดที่พบบ่อยที่สุดประเภทหนึ่งได้รับลำดับเป็นอินพุตและสร้างลำดับอื่นเป็นเอาต์พุต (เช่นระบบแปลภาษา) ฉันบอกว่ารุ่นตระกูล RNN M1 มีประสิทธิภาพมากกว่าตระกูล RNN รุ่น M2 อีกรุ่นหนึ่งหากเกิดปัญหา (เช่นการจับคู่ชุดของลำดับการป้อนข้อมูลเข้ากับชุดลำดับเอาต์พุต) มีรุ่น m1 ใน M1 ที่สามารถแก้ปัญหานี้ได้ แต่ไม่มีรุ่นใน M2 ที่สามารถแก้ปัญหานี้ได้
Hossein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.