Machine Learning-Based Prediction of Left and Right Visual Orientation from Brain Signal Data

Kanokkrit Kangwankiat
4 min readNov 5, 2023

--

สวัสดีครับ บทความนี้จะเป็นการเล่าเกี่ยวกับ project ที่ได้ทำตอนเข้าร่วมโครงการ BrainCodeCamp 2023 ซึ่งเป็น workshop computational neuroscience จัดขึ้นช่วงเดือนสิงหาคมถึงตุลาคม 2566

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

หัวข้อ Machine Learning-Based Prediction of Left and Right Visual Orientation from Brain Signal Data เกิดขึ้นมาจากการที่ผมอยากจะแปลงสิ่งที่คนมองเห็นให้ออกมาเป็นภาพ ซึ่งการจะไปถึงเป้าหมายนั้นได้ผมคิดว่าผมควรจะเริ่มจากพื้นฐานก่อนคือเริ่มจากการทำนายตำแหน่งที่คนกำลังสนใจอยู่ใน ณ ขณะหนึ่ง โดยหากอ้างอิงจากการทำงานของสมองสำหรับการประมวลผลภาพที่มองเห็น สมองจะประมวลผลข้อมูลภาพที่ได้รับมาจากฝั่งตรงข้ามกับสมองซีกนั้นๆมากกว่าฝั่งเดียวกันเสมอ จะเห็นได้จากรูปข้างล่างนี้ว่าภาพจากฝั่งซ้ายจะมีเส้นประสาทเชื่อมไปยังสมองฝั่งขวาและภาพจากฝั่งขวาจะมีเส้นประสาทที่เชื่อมไปยังสมองฝั่งซ้าย โดยการที่สมองประมวลผลภาพที่ได้รับมาจากฝั่งตรงกันข้ามกับสมองจะเรียกว่า “Contralateral” และการที่สมองประมวลผลภาพที่ได้รับมาจากฝั่งเดียวกันกับสมองจะเรียกว่า “Ipsilateral”

Image from https://www.perkins.org/the-visual-pathway-from-the-eye-to-the-brain/

จากความรู้นี้ผมจึงได้ตั้งเป้าหมายแรกของการทำแบบจำลองคือการทำนายว่าคนกำลังมีความสนใจอยู่ที่ฝั่งซ้ายหรือขวา เพราะการที่สมองทั้ง 2 ฝั่งมีหน้าที่ในการประมวลผลภาพที่แตกต่างกัน หากเราสามารถทำให้แบบจำลองเรียนรู้คลื่นสมองที่มาจากสมองในแต่ละฝั่งที่แตกต่างกันแล้วโมเดลสามารถแบ่งแยกความแตกต่างระหว่างคลื่นสมองแต่ละแบบได้ ก็น่าจะใช้ในการทำนายฝั่งที่คนกำลังสนใจอยู่ได้เช่นกัน

หลังจากที่ผมได้เป้าหมายแล้ว ขั้นตอนถัดมาคือการหาข้อมูลที่สอดคล้องกับเป้าหมาย ซึ่งผมใช้ข้อมูลจากงานวิจัย Alpha-Band Oscillations Enable Spatially and Temporally Resolved Tracking of Covert Spatial Attention ของคุณ Joshua J. Foster ทั้ง spatial-cueing และ visual search task โดยใน spatial-cueing task ผมสุ่มเลือกข้อมูลออกมาใช้ 16 subjects เนื่องจากข้อจำกัดของ resource ซึ่งแต่ละ subject จะมีการเก็บข้อมูลประมาณ 1,440 trial จาก 22 channel และใน visual search task ก็สุ่มข้อมูลออกมาใช้เพียงแค่ 16 subjects เช่นกัน ในแต่ละ subject จะมีการเก็บข้อมูลประมาณ 1,920 trial จาก 22 channel

Image from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5675530/

ข้อมูลที่ได้มามีการ reject atifact ต่างๆออกไปหมดแล้ว จึงทำให้สามารถข้ามขั้นตอนการ cleaning data ได้บางส่วน ในการนำ data เข้ามาประมวลผลโดยใช้ library mne โดยเริ่มจากใช้คำสั่ง mne.EpochsArray เพื่อดึงข้อมูลที่ผ่านการ clean และ epoch แล้วมาเก็บไว้ในตัวแปร หลังจากนั้นก็ set_channel_types ให้ OL, OR, VEOG และ HEOG เป็น eog channel ต่อด้วยการ set_montage เป็น “standard_1020” และ band-pass filter โดยใช้ low-pass filter เท่ากับ 50 และ High-pass filter เท่ากับ 1 จากรูปข้างล่างจะเห็นได้ว่าคลื่น EEG หลังทำ band-pass filter มีความ noisy น้อยลงมาก เพราะมีเฉพาะความถี่ในช่วงที่เราสนใจเท่านั้น

The figure shows the eeg waves in each channel before and after band-pass filter

ขั้นตอนต่อมาคือการทำ feature selection ซึ่งผมใช้เทคนิค ERP เพื่อดูคลื่นสมองในแต่ละ Event ซึ่งพบว่าช่วงเวลาที่เกิดกิจกรรมในสมองขึ้นคือช่วงประมาณ 0 ถึง 600 ms เพราะข้อมูลนี้จะมี cue ขึ้น ณ เวลา 0 ms ทำให้มีการตอบสมองหลังจาก 0 ms เป็นต้นไป ซึ่งผมก็ได้ทำการเลือกเฉพาะช่วงเวลาที่เกิดกิจกรรมโดยบวกลบเวลาเพื่อให้ครอบคลุมส่วนสำคัญมากที่สุด จึงเลือกช่วงเวลาตั้งแต่ -200 ถึง 700 ms จะเห็นได้จากรูปข้างล่างว่าช่วงเวลาตั้งแต่ -200 ถึง 700 ms ครอบคลุมช่วงกิจกรรมที่สำคัญในสมองทั้งหมดแล้ว

The figure shows the ERP from all data (left chart) and ERP from data range -200 to 700 (right chart)

ในส่วนของโมเดลที่ใช้ ผมเลือกหลายโมเดลมาเปรียบเทียบประสิทธิภาพกัน โดยเริ่มจากโมเดลพื้นฐานที่สุดสำหรับการจำแนกกลุ่มคือ logistic regression ที่จะแบ่งข้อมูลออกเป็น 2 ส่วนโดยใช้สมการเชิงเส้น ซึ่งอาจจะทำได้ดีหากข้อมูลไม่ได้มีการ mix กันมากและมีการแบ่งแยกกันอย่างชัดเจนทำให้มีข้อจำกัดคือหากข้อมูลมีความซับซ้อนหรือหลายมิติ อาจจะทำให้โมเดลทำงานได้ไม่ดีเท่าที่ควร ดังนั้นโมเดลต่อมาที่ผมเลือกคือ support vector machine ซึ่งเป็นโมเดลที่แบ่งข้อมูลด้วยเส้นเช่นเดียวกับ logistic regression แต่จะมีการเพิ่ม margin ทำให้ลดโอกาสเกิด overfit ได้มากขึ้นและยังมี kernel ที่จะช่วยเปลี่ยนมิติของข้อมูลทำให้โมเดลสามารถแบ่งข้อมูลได้ดีมากยิ่งขึ้น นอกจากนี้ผมยังเลือกโมเดลที่มีความซับซ้อนขึ้นมาอีกตัวหนึ่งคือ neural network ที่มีจุดเด่นคือการที่สามารถปรับแต่งโมเดลได้อย่าง flexible มากกว่า classical model และยังสามารถใส่ input data ได้มากกว่า 2 มิติทำให้ไม่จำเป็นต้องปรับเปลี่ยนมิติของข้อมูลก่อนนำข้อมูลไป train โมเดล (classical model จะต้อง input data ใน 2 มิติเท่านั้นทำให้จำเป็นต้อง reshape ข้อมูลให้มีมิติเท่ากับ 2 เท่านั้น)

LR image by Ashish Mehta, SVM image from javatpoint, NN image by Jaz Allibhai

ขั้นตอนต่อมาคือการ training model ซึ่งผมจะแบ่งข้อมูลเป็น train set และ test set เป็นสัดส่วน 80 ต่อ 20 โดยในการ training classical model ผมกำหนดเงื่อนไขของ train set ที่แตกต่างกัน 4 เงื่อนไขคือ

  1. ใช้เฉพาะ electrode channel ฝั่งขวาในการ training และ testing
  2. ใช้เฉพาะ electrode channel ฝั่งซ้ายในการ training และ testing
  3. ใช้ทุก electrode channel ในการ training และ testing
  4. นำ electrode channel มา flatten รวมกับมิติของเวลา

ข้อมูลที่ผ่านการเตรียมมาแล้วจะมี 3 มิติคือ trial x channel x times ซึ่งการเตรียมข้อมูลสำหรับการ training classical model จะต้องใช้ input data ที่มี 2 มิติ ทำให้เราต้องมีการแปลงมิติข้อมูลให้เหลือแค่ 2 มิติจาก 3 มิติ โดยจากเงื่อนไขที่ได้กล่าวไปข้างต้น ใน 3 เงื่อนไขแรกจะเป็นการนำ electrode channel มา mean กัน (ตำแหน่ง electrode channel จะขึ้นกับเงื่อนไข) เพื่อให้มิติของ channel หายไปทำให้ข้อมูลเหลือแค่มิติของ trial และ times ซึ่งผมมีสมมติฐานว่าหากสมองทำงานโดยการประมวลผลข้อมูลในฝั่งที่ต่างกัน การที่เราเลือกใช้ข้อมูลเฉพาะฝั่งใดฝั่งหนึ่งน่าจะทำให้ได้ผลลัพธ์ของการ train model ออกมาดีและในเงื่อนไขที่ 3 ที่เป็นการนำทุกๆ electrode channel มา mean รวมกันน่าจะได้ผลลัพธ์แย่ที่สุดในทุกๆ model เพราะการนำ electrode channel ทั้ง 2 ฝั่งที่ทำงานแตกต่างกันมารวมกัน น่าจะทำให้ข้อมูลสำคัญบางอย่างหายไปได้และในส่วนของเงื่อนไขที่ 4 จะเป็นการนำมิติของ electrode channel มารวมกันกับมิติของ times ทำให้ยังคงเก็บ features ไว้ได้ครบทั้งในมิติของ channel และ times ซึ่งผมคิดว่าในเงื่อนไขที่ 4 น่าจะให้ผลลัพธ์ที่ดีที่สุดจากทั้ง 4 เงื่อนไข สุดท้ายในส่วนของการ taining neural network model ผมใช้ข้อมูลทั้ง 3 มิติเข้าไป train โดยตรงเลย จึงคิดว่าน่าจะได้ผลลัพธ์ที่ดีกว่าหรือเทียบเท่ากับผลลัพธ์ที่ดีที่สุดของกลุ่ม classical model

การ tuning model ของกลุ่ม classical model ผมใช้ GridSearchCV และสำหรับ neural network model ผม tuning แบบ mannual โดยใช้ optimizer=’adam’ และวัดผลโดยใช้ค่า accuracy กับค่า precision เพราะผมสนใจในเรื่องของความแม่นยำในการทำนายมากที่สุด ซึ่งได้ผลลัพธ์ดังรูปข้างล่างนี้

The figure shows the model’s performance in the spatial-cueing task
The figure shows the model’s performance in the visual search task

จากผลลัพธ์พบว่าโมเดล neural network มีประสิทธิภาพสูงที่สุดทั้งในด้านของ accuracy และ precision ซึ่งผมคิดว่าน่าจะเกิดจากการที่โมเดล neural network เป็นโมเดลเดียวที่ได้รับ train set เป็นข้อมูลทั้ง 3 มิติ (trial x channel x time) โดยไม่มีการแปลงข้อมูลใดๆก่อนเลย ทำให้โมเดลมีโอกาสเรียนรู้ features ทั้งหมดของข้อมูล ซึ่งน่าจะส่งผลให้โมเดลสามารถหาความสัมพันธ์ในข้อมูลได้ดีกว่าโมเดลอื่นๆ ที่ถูก train โดยใช้ข้อมูลที่ผ่านการแปลงมิติก่อนจะนำเข้าไป train ในโมเดล นอกจากนี้หากเราสนใจแค่กลุ่มของ classical model จะพบว่าทุกโมเดลมีประสิทธิภาพที่ใกล้เคียงกันมาก ทำให้เราอาจจะสันนิฐานได้ว่าการที่โมเดลให้ผลลัพธ์ไม่แตกต่างกันน่าจะเกิดจากการที่ทุกโมเดลได้รับข้อมูลที่แบ่งได้ยากเหมือนกัน ทำให้ไม่ว่าจะแบ่งโดยใช้วิธีไหนก็ให้ผลลัพธ์ที่ดีกว่าการสุ่มเพียงนิดเดียวเท่านั้น เพราะหากดูจากรูปภาพเพิ่มเติมจะเห็นว่าข้อมูลที่ใช้มีการ mix กันมากทำให้ไม่ว่าจะแบ่งด้วยวิธีไหนก็ให้ผลที่ใกล้เคียงกัน

Next Step - ในส่วนของการศึกษาและพัฒนาต่อผมคิดว่าควรจะให้ความสำคัญกับขั้นตอนการเตรียมข้อมูลให้มากขึ้น ดึงเฉพาะส่วนที่สำคัญมา train หรืออาจจะปรับใช้เทคนิคต่างๆจากการศึกษางานวิจัยอื่นๆเพิ่มเติม เพื่อแปลงมิติข้อมูลให้โมเดลสามารถแบ่งได้ง่ายมากยิ่งขึ้น

Suggestion - จากการศึกษานี้พบว่าโมเดลที่อาจจะสามารถปรับเพิ่มเติมได้อีกมากคือ neural network เพราะในการศึกษานี้ผม tuning ด้วยตัวเองทำให้โมเดลที่ได้อาจจะไม่ใช่โมเดลที่ดีที่สุดสำหรับการจำแนกข้อมูลที่ใส่เข้าไป นอกจากนี้หากมีการศึกษาเพิ่มเติมมากกว่านี้ แล้วทำการปรับใช้โมเดลอื่นๆที่น่าจะเหมาะสมกว่าเช่น RNN ที่เหมาะสมกับการเรียนรู้ข้อมูล time series, การปรับใช้ pretrain model ที่ถูกคิดค้นเพื่อการทำนายคลื่นสมองโดยเฉพาะหรือใกล้เคียง ก็น่าจะทำให้สามารถทำนายได้แม่นยำมากยิ่งขึ้นไปอีก

รูปภาพเพิ่มเติม

The figure shows decision boundaries of logistic regression model
The figure shows decision boundaries of support vector machine model
The figure shows decision boundaries of KNN model (additional model that I tried casually)

Reference

computational neuroscience (no date) Nature news. https://www.nature.com/subjects/computational-neuroscience (Accessed: 05 November 2023).

Foster, J. J., Sutterer, D. W., Serences, J. T., Vogel, E. K., & Awh, E. (2017). Alpha-Band Oscillations Enable Spatially and Temporally Resolved Tracking of Covert Spatial Attention. Psychological science, 28(7), 929–941. https://doi.org/10.1177/0956797617699167

--

--