در دنیای امروز، کاربرد «هوش مصنوعی» (Artificial Intelligence | AI) را میتوان در تمامی جنبههای زندگی انسان ملاحظه کرد. روشهای «یادگیری عمیق» (Deep Learning) و «ماشین لرنینگ» (Machine Learning) تاثیرات مهمی را در حوزه پزشکی و به خصوص در پژوهشهای مربوط به شناخت اختلالات مغز داشتهاند. در مطلب حاضر، به توضیح EEG در حوزه پزشکی خواهیم پرداخت و نحوه پردازش سیگنال مغزی EEG در متلب را شرح میدهیم.
پردازش سیگنال چیست ؟
پردازش سیگنال یکی از حوزههای وسیع مطالعاتی است که موضوعاتی نظیر تحلیل، ترکیب و اصلاح سیگنالها را شامل میشود. سیگنالها میتوانند شامل اطلاعات خاصی نظیر صوت، تصویر و اندازهگیریهای بیولوژیکی باشند. به عنوان مثال، از روشهای پردازش سیگنال میتوان به منظور بهبود انتقال سیگنال و افزایش سطح کیفیت سیگنال استفاده کرد.
کاربرد پردازش سیگنال را میتوان در قالب فهرست زیر برشمرد:
- پردازش سیگنال صدا نظیر موسیقی و گفتار
- پردازش سیگنال دیجیتالی نظیر سیگنالهای کامپیوتری
- پردازش سیگنال صوتی نظیر تفسیر کلمات و جملات گوینده
- پردازش تصویر
- پردازش ویدئو
- ارتباطات بیسیم
- پردازش سیگنالهای مالی
- استخراج ویژگی
- پردازش سیگنال «ژنومیک» (Genomics)
- پردازش سیگنالهای مغزی EEG
در ادامه مطلب، قصد داریم به کاربرد پردازش سیگنال در بررسی سیگنال مغزی EEG بپردازیم و کاربرد آن را توضیح دهیم.
پردازش سیگنال مغزی EEG چیست ؟
«الکتروانسفالوگرافی» (Electroencephalogram) یا همان EEG آزمایشی برای ارزیابی فعالیتهای الکتریکی مغز است که از آن به منظور تشخیص مشکلات احتمالی در ارتباط بین سلولهای مغز استفاده میشود.
به عبارتی، با کمک این روش میتوان الگوهای امواج مغزی را ردیابی و ثبت کرد و با تجزیه و تحلیل آنها به مشکلات عملکردی مغز پی برد. بدین منظور، الکترودهایی را به سر بیمار متصل میکنند تا از طریق آنها تکانههای الکتریکی مغز انسان تجزیه و تحلیل شوند. این الکترودها برای ثبت سیگنالهای مغزی دریافتی، آنها را به کامپیوتر منتقل میکنند.
پس از معرفی کاربرد الکتروانسفالوگرافی به نحوه پیادهسازی پردازش سیگنال مغزی EEG در متلب با یکی از روشهای هوش مصنوعی خواهیم پرداخت.
کاربرد پردازش سیگنال مغزی EEG چیست ؟
از سال ۱۹۲۹ از پردازش سیگنال مغزی EEG به منظور تشخیص اختلالات موجود در فعالیتهای الکتریکی مغز استفاده شده است. کاربرد EEG را میتوان برای تشخیص مواردی همچون اختلالات تشنجی (مانند صرع)، صدمات وارد شده به جمجمه، التهابات مغزی، تومور مغزی، اختلالات عملکرد مغزی، اختلالات خواب، آلزایمر، سکته مغزی و زوال عقل برشمرد.
بهعلاوه، امروزه از پردازش سیگنال مغزی EEG به منظور تعیین میزان سطح فعالیت مغزی افرادی استفاده میشود که در کما هستند. همچنین، از EEG در بررسی و کنترل فعالیت مغزی انسان در حین عمل جراحی مغز استفاده میشود.
از آنجا که زبان متلب همانند زبان برنامه نویسی پایتون به عنوان یکی از رایجترین زبانها در حوزه هوش مصنوعی به شمار میرود و از آن میتوان برای پردازش انواع داده نظیر تصویر، متن، صوت و سیگنال استفاده کرد، این زبان را انتخاب کردیم تا در بخش بعدی این مطلب، به توضیح مراحل پردازش سیگنال مغزی EEG در متلب بپردازیم.
مراحل پردازش سیگنال مغزی EEG
در پردازش سیگنال مغزی EEG با استفاده از روشهای یادگیری ماشین هدف این است که سیگنالهای مغزی را با رویکرد «شناسایی الگو» (Pattern Recognition) دستهبندی کنیم. در راستای تحقق این هدف، دو مرحله اصلی را باید انجام دهیم:
- استخراج ویژگی: اولین گام در پردازش سیگنال، مرحله استخراج ویژگی است که هدف آن، توصیف سیگنالهای مغزی EEG با مقادیر کمتر است. با استفاده از روشهای استخراج ویژگی میتوان اطلاعات اصلی سیگنالهای EEG را استخراج و مقادیر نویزی و اطلاعات غیر مرتبط را از سیگنالها حذف کرد. اطلاعات استخراج شده (ویژگی) در قالب بردار عددی در مرحله آموزش، به مدل داده میشوند.
- مدل دستهبند: گام دوم پردازش سیگنال، دستهبندی بردارهای ویژگی هستند که از گام قبل به دست آمدهاند.
در ادامه، به ارائه مثالی از پردازش سیگنال مغزی EEG در متلب خواهیم پرداخت.
پردازش سیگنال مغزی EEG در متلب
در بخش فعلی، به آموزش پردازش سیگنال مغزی EEG در متلب و نحوه تهیه و آمادهسازی دادهها و پیادهسازی دستهبند برای پردازش دادههای سیگنال مغزی میپردازیم.
در مرحله نخست، باید از طریق الکترود، سیگنالهای مغزی فردی را ثبت کنیم. بدین منظور ۲۷ الکترود را بر روی سر فرد مورد نظر نصب میکنیم به نحوی که فاصله بین این الکترودها از یکدیگر حدود ۲۰ میلیمتر باشند. این الکترودها سیگنالهایی را از گوش سمت راست، پیشانی و حرکات افقی و عمودی چشم فرد را ثبت میکنند.
در این آزمایش، فرد در مقابل یک مانیتور قرار میگیرد. در طول آزمایش، فلشهایی به سمت راست و چپ در مانیتور به ترتیب ظاهر میشوند و فرد با مشاهده هر فلش، باید جهت فلش را در ذهن خود تصور کند. بدین ترتیب، با دیدن هر فلش، سیگنالهای مغزی متفاوتی ایجاد میشوند که الکترودهای متصل به سر فرد، آنها را ثبت میکنند. هدف نهایی این آزمایش این است که مدلی برای پردازش سیگنال مغزی EEG در مطلب طراحی شود که بتواند سیگنالهای مغزی را در دو کلاس ۰ و ۱ دستهبندی کند.
برای تحلیل دادهها، قسمتی از سیگنالهای ضبط شده توسط کانالهایی مشخص میشوند که در این مثال ۲۸ کانال برای هر سیگنال تعریف شده است. به منظور بارگذاری دادهها درون متلب و تعریف کانالها از قطعه کد زیر استفاده میشود:
File = 'C:run1234_nottriggered.mat'; % file with data of run 1 to run 4
P_C = load(File); % load data into structure P_C
new_tmw{1} = {28, 1, 'v', 0.78, 0, 'TRIGGERED', 'red'}; % use these parameters
samples_before = 256; % trigger 2 seconds before
samples_after = 768; % and 6 seconds after trigger signal
uncomplete = 0;
channels = [1:28, 25:28]; % trigger all channels
P_C = trigger(P_C, new_tmw, samples_before, samples_after, uncomplete, channels);
برای هر سیگنال نیز برچسب کلاس را نیز مشخص میکنیم. برای سیگنالهای مغزی فرد که نشاندهنده تجسم فلش سمت راست است، عدد ۰ را در نظر میگیریم و سیگنالهایی را که نشاندهنده تجسم فلش سمت چپ است، با کلاس ۱ مشخص میکنیم.
AttributeName = {'RIGHT', 'LEFT'}; %define name for the trial attribute
P_C.AttributeName = AttributeName;
AttributeColor = {'green', 'blue'}; %define color for the trial attribute
P_C.AttributeColor = AttributeColor;
%define the attribute for the 160 trials; for each class a vector with 160 entries is created
%LEFT class
Attribute = [
001001110111010001001010001101101100
100110010010100001101101110010011000
111011110010010100000100111011010110
111000110111100100101000001001110110
110111001001101001010001001001110111
001011011100100110101000100100111010
101110111100111010001100101000011110
010100111110100011001101001001011011
111001011011100110110111110111001101
001101001010001001001110111001011011
001000111101000110011010100010010111
011011100101110001100010100000001101
011110011101000011011111001000110111
101011010011001111011001101001011101
101010101010100100111100101101110011
001111000010111010111101101000101010
]
%RIGHT class
[
110110001000110110101110010010001101
101101011100100100011011001110110111
000100011010111101101011100100010010
001101101001111001001000110110011011
001110001000110111111011000100101000
011000011110111011010001100100101111
001111101000011010101111001010010111
111001000001001011011001001010001101
100110111000111011001101010001001011
111010110101001110000101111000011110
000010101000110100111001010001001011
101111110100100011010001111011111111
100000011011101111110100010010000001
111011100001110000001001110011110100
010111101101010100111001001010001101
001101001010001001001110111001011011
]
P_C.Attribute = Attribute;
سیگنالها را میتوان در تصویر زیر ملاحظه کرد. سیگنالهایی که با رنگ آبی نشان داده شدهاند، کلاس ۱ هستند و رنگ سبز، سیگنالهایی را نشان میدهد که جزو کلاس ۰ محسوب میشوند:
از آنجا که در مسئله حاضر قصد داریم از روشهای یادگیری ماشین برای طراحی یک دستهبند برای پردازش سیگنال مغزی EEG در متلب استفاده کنیم، باید مرحله «استخراج ویژگی» (Feature Extraction) را نیز برای تهیه دادههای نهایی مدل به کار ببریم.
بدین منظور، از تنظیمات پنجره زیر برای کاهش ابعاد دادهها استفاده میکنیم.
پس از استخراج ویژگی، از ویژگیهای استخراج شده برای آموزش مدل پردازش سیگنال مغزی EEG در متلب استفاده میکنیم. بدین منظور، از قطعه کد زیر در متلب استفاده میشود.
DPF = 38SpI;
% Load spatial filter
Filter = load(SPF, 'C:g.tecghsanalyzetestdatal CSPYt5CSPcspl234filter.mat');
FilterNwader = [1 2 26 27]; % Select 4 filters
Replace = 'all';
Transformation = 'Create temporal pattern';
% Perform transformation resulting in 4 time courses
PC = perform_spatial_filter(PC, Filter, FilterNumber, Replace, Transformation);
به منظور دستهبندی پردازش سیگنال مغزی EEG در متلب از یک دستهبندی خطی آماده استفاده میکنیم. دادهها را بدین منظور به دادههای آموزشی و دادههای تست تقسیم میکنیم. برای ارزیابی مدل نیز از روش «اعتبارسنجی متقابل» (Cross Validation) استفاده میکنیم.
در مثال حاضر از یکی از الگوریتم های یادگیری ماشین با نام «آنالیز تشخیص خطی» (Linear Discriminant Analysis | LDA) برای دستهبندی پردازش سیگنال مغزی EEG در متلب استفاده کردیم که نتایج آن در تصویر زیر ملاحظه میشوند:
جمعبندی
یکی از مهمترین دستاوردهای شاخه هوش مصنوعی را میتوان در حوزه پزشکی ملاحظه کرد. در حال حاضر، از ابزارها و سیستمهای هوشمندی در پژوهشهای پزشکی و تشخیص بیماریهای مختلف انسان استفاده میشوند که باعث شدهاند تشخیص بیماریها و علاج آنها نسبت به سالهای پیش و قبل از ظهور هوش مصنوعی راحتتر و دقیقتر انجام شوند. مغز انسان به عنوان مهمترین و پیچیدهترین عضو بدن محسوب میشود که هنوز منشاء بسیاری از اختلالات موجود در عملکرد آن برای انسان ناشناخته است. با این حساب، هوش مصنوعی در تشخیص بسیاری از بیماریهای مغزی نقش بهسزایی داشته است.
در مطلب حاضر سعی کردیم به مفهوم یکی از روشهای ارزیابی عملکرد مغز انسان یعنی EEG بپردازیم که در تشخیص بسیاری از بیماریهای مهم نظیر صرع و سکته مغزی کاربرد دارد. سپس، به نحوه پیادهسازی یکی از الگوریتم های یادگیری ماشین برای پردازش سیگنال مغزی EGG در متلب اشاره کردیم و نحوه آمادهسازی دادههای سیگنالی را برای آموزش مدل در قالب مثال شرح دادیم.