RNNs: เมื่อใดที่จะใช้ BPTT และ / หรืออัปเดตน้ำหนัก


15

ฉันพยายามที่จะเข้าใจการใช้ RNN ระดับสูงในการติดฉลากตามลำดับผ่านทางกระดาษ (ในหมู่อื่น ๆ ) บทความ 2005 ของ Graves ในการจำแนกฟอนิม

ในการสรุปปัญหา: เรามีชุดฝึกอบรมขนาดใหญ่ซึ่งประกอบด้วยไฟล์เสียง (อินพุต) ของประโยคเดียวและ (เอาต์พุต) เวลาเริ่มต้นที่มีป้ายกำกับจากผู้เชี่ยวชาญเวลาหยุดและป้ายกำกับสำหรับหน่วยเสียงส่วนบุคคล (รวมถึงหน่วยเสียงพิเศษบางอย่างเช่นเงียบ เช่นว่าแต่ละตัวอย่างในไฟล์เสียงแต่ละไฟล์มีป้ายกำกับด้วยสัญรูปฟอนิม)

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

ฉันเชื่อว่าฉันเข้าใจสถาปัตยกรรมของเครือข่าย: เลเยอร์อินพุตที่สอดคล้องกับ windows 10 ms ของไฟล์เสียงได้รับการประมวลผลล่วงหน้าในรูปแบบมาตรฐานสำหรับการทำงานของเสียง เลเยอร์ที่ซ่อนอยู่ของเซลล์ LSTM และเลเยอร์เอาท์พุทที่มีการเข้ารหัสสัญลักษณ์ 61 หมายเลขโทรศัพท์ที่เป็นไปได้ทั้งหมด

ฉันเชื่อว่าฉันเข้าใจสมการ (ที่ซับซ้อน แต่ตรงไปตรงมา) ของ pass pass และ backward pass ผ่านหน่วย LSTM พวกเขาเป็นเพียงแคลคูลัสและกฎลูกโซ่

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

มีสองวิธีที่เชื่อถือได้:

1) backprop เฟรมที่ชาญฉลาดและการปรับปรุง

Load a sentence.  
Divide into frames/timesteps.  
For each frame:
- Apply forward step
- Determine error function
- Apply backpropagation to this frame's error
- Update weights accordingly
At end of sentence, reset memory
load another sentence and continue.

หรือ,

2) backprop ที่เป็นประโยคและชาญฉลาด:

Load a sentence.  
Divide into frames/timesteps.  
For each frame:
- Apply forward step
- Determine error function
At end of sentence:
- Apply backprop to average of sentence error function
- Update weights accordingly
- Reset memory
Load another sentence and continue.

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

หรือฉันสับสนมากกว่าที่คิด

คำตอบ:


25

ฉันจะสมมติว่าเรากำลังพูดถึง nets neural nets (RNNs) ที่สร้างเอาท์พุทในทุกขั้นตอน (ถ้า output มีเฉพาะที่ส่วนท้ายของซีเควนซ์เท่านั้น RNNs ในการตั้งค่านี้มักได้รับการฝึกอบรมโดยใช้การ backpropagation ที่ถูกตัดทอนตลอดเวลา (BPTT) ซึ่งทำงานตามลำดับที่ 'chunks' ของลำดับ ขั้นตอนมีลักษณะดังนี้:

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

k1k2k1=k2k1=k2k2>k1

k1k1

k2k2k2ขั้นตอนเวลาเนื่องจากหน่วยที่ซ่อนอยู่สามารถจัดเก็บข้อมูลเกินระยะเวลานี้ (เช่นดู Mikolov 2012 และโพสต์นี้ )

k1k2

k11k2k1k2k1k2เป็นไปได้; ฉันจะแสดงรายการตัวอย่างด้านล่าง

การอ้างอิงที่อธิบายถึง BPTT ที่ถูกตัดทอน (ขั้นตอนแรงจูงใจประเด็นเชิงปฏิบัติ):

  • Sutskever (2013) การฝึกอบรมเครือข่ายประสาทกำเริบ
  • Mikolov (2012) แบบจำลองภาษาทางสถิติขึ้นอยู่กับเครือข่ายประสาท
    • k1k2
    • k1
    • ทำการอัปเดตหนึ่งครั้งต่อชิ้นดีกว่าการเพิ่มทีละส่วน (ซึ่งอาจไม่เสถียร)
  • วิลเลียมส์และเป็ง (1990) อัลกอริธึมที่ใช้การไล่ระดับสีที่มีประสิทธิภาพสำหรับการฝึกอบรมออนไลน์ของวิถีเครือข่ายที่เกิดซ้ำ
    • ข้อเสนอดั้งเดิม (?) ของอัลกอริทึม
    • k1k2hhk2k1
    • k1=1

ตัวอย่างอื่น ๆ ที่ใช้ BPTT ที่ถูกตัดทอน:

  • (Karpathy 2015) ถ่าน RNN
  • เกรฟส์ (2014) การสร้างลำดับด้วยเครือข่ายประสาทที่เกิดขึ้นอีก
    • k1=k2=10010,000
  • ศักดิ์และคณะ (2014) หน่วยความจำระยะสั้นตามสถาปัตยกรรมเครือข่ายประสาทกำเริบสำหรับการรู้จำคำพูดขนาดใหญ่
    • k1=k2=20
  • Ollivier และคณะ (2015) ฝึกอบรมเครือข่ายซ้ำโดยไม่ย้อนรอย
    • k1=k2=15
  • Hochreiter และ Schmidhuber (1997) หน่วยความจำระยะสั้นระยะยาว
    • พวกเขาอธิบายขั้นตอนการแก้ไขสำหรับ LSTM

นี่คือคำตอบที่โดดเด่นและฉันหวังว่าฉันจะได้รับสถานะในฟอรัมนี้เพื่อรับรางวัลมากมาย มีประโยชน์อย่างยิ่งคือการอภิปรายที่เป็นรูปธรรมของ k1 vs k2 เพื่อทำให้บริบทของทั้งสองกรณีกับการใช้งานทั่วไปมากขึ้นและตัวอย่างตัวเลขที่เหมือนกัน
Novak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.