เป็นความคิดที่ดีหรือไม่ที่จะใช้ CNN เพื่อจำแนกสัญญาณ 1D?


20

ฉันกำลังทำงานเกี่ยวกับการจำแนกการนอนหลับ ฉันอ่านบทความวิจัยเกี่ยวกับหัวข้อนี้หลายคนใช้วิธี SVM หรือ ensemble เป็นความคิดที่ดีหรือไม่ที่จะใช้โครงข่ายประสาทเทียมในการจำแนกสัญญาณ EEG ในมิติเดียว?
ฉันใหม่สำหรับงานประเภทนี้ ให้อภัยฉันถ้าฉันถามอะไรผิดหรือเปล่า?


สัญญาณ 1D สามารถแปลงเป็นสัญญาณ 2D โดยการแบ่งสัญญาณออกเป็นเฟรมและรับ FFT ของแต่ละเฟรม สำหรับเสียงนี่ค่อนข้างแปลก
MSalters

คำตอบ:


23

ฉันเดาว่าด้วยสัญญาณ 1D คุณหมายถึงข้อมูลอนุกรมเวลาซึ่งคุณคิดว่าเป็นการพึ่งพาชั่วคราวระหว่างค่าต่างๆ ในกรณีเช่นนี้โครงข่ายประสาทเทียม (CNN) เป็นหนึ่งในแนวทางที่เป็นไปได้ วิธีที่นิยมใช้มากที่สุดคือการใช้โครงข่ายประสาทเทียม (RNN) แต่คุณสามารถใช้ CNN หรือวิธีไฮบริด (เครือข่ายนิวรัลเสมือน - กำเริบ QRNN) ตามที่Bradbury et al (2016)กล่าวไว้และยัง แสดงในรูปด้านล่าง นอกจากนี้ยังมีวิธีการอื่น ๆ เช่นการใช้ความสนใจเพียงอย่างเดียวในขณะที่เครือข่ายหม้อแปลงอธิบายโดยVaswani, et al (2017)ซึ่งข้อมูลเกี่ยวกับเวลาที่จะถูกส่งผ่านทางคุณลักษณะชุดฟูริเยร์

ป้อนคำอธิบายรูปภาพที่นี่

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


12

แน่นอนคุณสามารถใช้ CNN เพื่อจัดประเภทสัญญาณ 1D เนื่องจากคุณมีความสนใจในการจำแนกขั้นตอนสลีปดูบทความนี้ มันเป็นเครือข่ายประสาทลึกที่เรียกว่า DeepSleepNet และใช้การรวมกันของ 1D convolutional และเลเยอร์ LSTM เพื่อจำแนกสัญญาณ EEG ในขั้นตอนการนอนหลับ

นี่คือสถาปัตยกรรม:

DeepSleepNet

เครือข่ายมีสองส่วนดังนี้

  • Fs/2FsFs×4. สัญชาตญาณเบื้องหลังสิ่งนี้คือเครือข่ายหนึ่งพยายามเรียนรู้คุณสมบัติ "ดี" (หรือความถี่สูง) และอีกอันพยายามเรียนรู้คุณสมบัติ "หยาบ" (หรือความถี่ต่ำ)
  • เลเยอร์การเรียนรู้ตามลำดับ: embeddings (หรือคุณลักษณะที่เรียนรู้) จากเลเยอร์ convolutional จะถูกตัดแบ่งและป้อนเข้าสู่เลเยอร์ LSTM เพื่อเรียนรู้การพึ่งพาชั่วคราวระหว่าง embeddings

ในตอนท้ายจะมีเลเยอร์ softmax แบบ 5 ทางเพื่อจัดประเภทอนุกรมเวลาเป็นหนึ่งในห้าของชั้นเรียนที่ตรงกับช่วงสลีป


4

ฉันต้องการเน้นการใช้วิธีไฮบริดสแต็ก (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. =
=                             =
===============================

4

FWIW ฉันจะแนะนำให้ตรวจสอบเครือข่ายชั่วคราวจาก บทความนี้ (ฉันไม่ใช่ผู้เขียน) พวกเขามีความคิดที่เรียบร้อยในการใช้ CNN สำหรับข้อมูลอนุกรมเวลามีความอ่อนไหวต่อลำดับเวลาและสามารถจำลองลำดับยาว ๆ โดยพลการ (แต่ไม่มีหน่วยความจำ)

ป้อนคำอธิบายรูปภาพที่นี่

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