CNN-LSTM for Sleep Stages Classification

Chindanai
3 min readNov 10, 2023

--

Photo by Krista Mangulsone on Unsplash

ร่างกายของเราทุกคนต้องนอนหลับพักผ่อนตามตารางของนาฬิกาชีวิต และการจำแนก Stages ของการนอนหลับได้จากโดยการตรวจจับคลื่นสัญญาณไฟฟ้าจากสมอง EEG (Electroencephalogram) เพื่อระบุระยะในการนอนหลับ ซึ่งมีส่วนช่วยในการศึกษาโรคที่เกี่ยวข้องกับการนอนหลับ หรือ ผลกระทบของยาจากการรักษาในการนอนหลับ โดยมีระยะการนอนหลับ หรือ sleep stages ดังนี้

  • Wakefulness (W): สภาะเริ่มต้นครอบครุมถึงช่วงเวลาที่จื่นตัวและจื่นตัวเต็มที่ การทำงานของสมองในระหว่างการตื่นตัวจะแสดงคลื่นเบต้าความถี่สูง ซึ่งมักเกี่ยวข้องกับการรับรู้อย่างมีสติและการมีส่วนร่วมทางปัญญา

Non-Rapid Eye Movement (NREM) Sleep:

  • Stage N1 (Light Sleep): เป็นช่วงเริ่มต้นของการนอนหลับ มักเกิดขึ้นเป็นระยะเวลาสั้น ๆ ประมาณ 5–10 นาที โดยยังคงมีการเคลื่อนไหวของดวงตาที่สังเกตได้จากลูกตากลิ้งไปมา มีการทำงานของคลื่นสมองระดับสูง ที่สามารถตื่นจากการนอนหลับได้ง่ายเมื่อโดนปลุก
  • Stage N2 (True Sleep): เป็นช่วงก่อนเข้าสู่ระยะหลับลึก ระยะนี้จะไม่มีการเคลื่อนไหวของดวงตา ส่วนการหายใจ และอัตราการเต้นของหัวใจจะทำงานช้าลง อุณหภูมิร่างกายลดลง และรับรู้สิ่งรอบตัวน้อยลง
  • Stage N3 (Deep Sleep): ระยะนี้เป็นช่วงที่ร่างกายได้พักผ่อนอย่างเต็มที่ มีการหลั่ง Growth hormone หรือฮอร์โมนแห่งการเจริญเติบโต โดยเฉพาะในเด็ก นอกจากนี้ยังมีการซ่อมแซมเซลล์เนื้อเยื่อต่าง ๆ ที่เสียหาย อีกทั้งยังเพิ่มประสิทธิภาพการทำงานของระบบภูมิคุ้มกันอีกด้วย

Rapid Eye Movement (REM) Sleep:

  • REM Sleep: เป็นช่วงแห่งการสร้างจินตนาการ เปลี่ยนความจำระยะสั้นเป็นความจำระยะยาว และสมองเกิดการประมวลผลสิ่งใหม่ ๆ เก็บไว้ในสมอง โดยระยะนี้จะเกิดขึ้นหลังจากนอนหลับไปประมาณ 90 นาที และอาจฝันนานถึง 1 ชั่วโมง

Dataset

Source :

ฐานข้อมูลจาก Sleep edf-20 เป็นข้อมูลที่ศึกษาผลกระทบของอายุในการนอนหลับ โดยมีผู้เข้าร่วมอายุตั้งแต่ 25–101 ปี และทำการวัดคลื่นสัญญาณไฟฟ้าสมองออกมาเป็น PSG file ประกอบด้วย 2 EEG channels คือ Fpz-Cz และ Pz-Oz ซึ่งมี sampling rate ที่ 100 Hz

จากตัวอย่าง SC4001E0 จะแสดงกราฟได้ โดยใช้ libray MNE

กราฟแสดง EEG file ซึ่งประกอบด้วย 7 channels ของ SC4001E0

ต่อมานำตัวอย่างข้อมูลตัดช่วงเวลาก่อนและหลังบันทึกข้อมูล 30 นาที แล้วนำมาแบ่งเป็น ช่วง (epoch) ละ 30 วินาที เพื่อแบ่ง stages ของการหลับเป็น 5 stages ได้แก่ stage W ,stage 1 ,stage 2 ,stage 3/4 และ stage R (REM) จะได้ข้อมูลดังนี้

กราฟแสดงจำนวนของช่วง (epoch) ของแต่ละ stage ในการนอนหลับจากตัวอย่าง SC4001E0

Data prepossing

ใช้ source code จาก [DeepSleepNet] เพื่อแปลงไฟล์​ .edf และ .hyp เป็น raw EEG ที่สามารถแสดงข้อมูลสัญญาณใน Fpz-Coz Channel และบอกข้อมูล stages การนอนหลับผ่านช่วงเวลา จากตัวอย่าง SC4001E0 จะได้ข้อมูลดังนี้

raw EEG data จาก SC4001E0 เทียบเวลา
ข้อมูล stages ของการนอนหลับ จาก SC4001E0 เทียบเวลา

จากการสังเคราห์ข้อมูลจาก Dataset ที่ต้องการใช้งานจะได้จำนวนข้อมูลดังนี้

ตารางแสดงจำนวน sample ของแต่ละ stages การนอนหลับ

Model Architecture

ในงานนี้เราจะใช้ one-dimentional-CNN model ทำการ encoding ข้อมูล raw EEG เป็นข้อมูล vetor และนำข้อมูล vectors มาจำแนกเป็น class โดยใช้ Bidirectional LSTM model ออกมาเป็น 5 class

Model architecture โดยรวม
1D-Model architecture
Bidirectional LSTM architecture

โดยในการฝึก model จะมี setthing ดังนี้

  1. Optimizer : Adam optimizer ตั้ง learning rate = 0.001
  2. โมเดลจะหยุดเรียนรู้เมื่อ loss ไม่ดีขึ้นใน 15 epochs ต่อเนื่องกัน
  3. Loss : Sparse categorical-entropy loss

Performance

ผลจากการฝึกโมเดลจะได้

  • Accuracy = 0.70
  • Macro-Precision = 0.71
  • Macro-F1-score = 0.70

ผลการฝึกโมเดลแยกในแต่ละ class ได้ดังนี้

ตารางผลการฝึกโมเดลแยกในแต่ละ class
Confusion matrix

Acknowledgments

สุดท้ายนี้ขอขอบคุณโครงการ Braincode camp ที่ให้มีโอกาสได้ศึกษาการสร้างโมเดล และ Neroscience โดยเฉพาะเพื่อนๆ และ TAs-group B

--

--