ฉันต้องการเน้นการใช้วิธีไฮบริดสแต็ก (CNN + RNN) สำหรับการประมวลผลลำดับยาว :
ดังที่คุณอาจทราบว่า 1D CNN นั้นไม่ไวต่อคำสั่งการจับเวลา (ไม่เกินระดับท้องถิ่น) แน่นอนว่าด้วยการซ้อน convolutions และ pooling layer ซ้อนกันจำนวนมากชั้นสุดท้ายจะสามารถสังเกตลำดับย่อยที่ยาวขึ้นของอินพุตต้นฉบับได้ อย่างไรก็ตามนั่นอาจไม่ใช่วิธีที่มีประสิทธิภาพในการสร้างแบบจำลองการพึ่งพาระยะยาว แม้ว่า CNN นั้นรวดเร็วมากเมื่อเทียบกับ RNNs
ในทางกลับกัน RNNs มีความอ่อนไหวต่อลำดับเวลาและดังนั้นจึงสามารถสร้างแบบจำลองการพึ่งพาชั่วคราวได้เป็นอย่างดี อย่างไรก็ตามพวกเขาเป็นที่รู้กันว่าอ่อนแอในการสร้างแบบจำลองการพึ่งพาระยะยาวมากซึ่งการประทับเวลาอาจมีการพึ่งพาชั่วคราวกับการประทับเวลาที่ไกลมากในอินพุต เพิ่มเติมพวกเขาช้ามากเมื่อจำนวนเวลาประทับสูง
ดังนั้นวิธีการที่มีประสิทธิภาพอาจรวม CNNs และ RNN เข้าด้วยกันด้วยวิธีนี้: อันดับแรกเราใช้ convolution และ pooling layer เพื่อลดขนาดของอินพุต สิ่งนี้จะทำให้เราเป็นตัวแทนของอินพุตต้นฉบับที่ถูกบีบอัดมากกว่าด้วยฟีเจอร์ระดับสูงกว่า จากนั้นเราสามารถป้อนลำดับ 1D ที่สั้นกว่านี้ให้กับ RNN เพื่อการประมวลผลเพิ่มเติม ดังนั้นเราจึงใช้ประโยชน์จากความเร็วของ CNNs รวมถึงความสามารถในการเป็นตัวแทนของ RNNs ในเวลาเดียวกัน แม้ว่าเช่นเดียวกับวิธีอื่น ๆ คุณควรทดลองใช้ในกรณีการใช้งานและชุดข้อมูลเฉพาะของคุณเพื่อดูว่ามีประสิทธิภาพหรือไม่
นี่เป็นตัวอย่างคร่าวๆของวิธีนี้:
--------------------------
- -
- long 1D sequence -
- -
--------------------------
|
|
v
==========================
= =
= Conv + Pooling layers =
= =
==========================
|
|
v
---------------------------
- -
- Shorter representations -
- (higher-level -
- CNN features) -
- -
---------------------------
|
|
v
===========================
= =
= (stack of) RNN layers =
= =
===========================
|
|
v
===============================
= =
= classifier, regressor, etc. =
= =
===============================