بخشی از مقاله

*** این فایل شامل تعدادی فرمول می باشد و در سایت قابل نمایش نیست ***

طراحي سيستم خبره تشخيش اختلالات کبدي با استفاده از شبکه هاي عصبي
- در اين مقاله هدف طراحي يک سيستم خبره با استفاده از شبکه هاي عصبي است تا بتوانيم عمل تشخيص بيماري کبد را انجام دهيم . عمل تشخيص را با استفاده از دو نوع شبکه متداول انجام شده است شبکه هاي مورد نظر پرسپترون چند لايه ( Multilayer Perceptron)و شبکه تابع پايه شعاعي (RBF) است . ابتدا به آناليز داده هاي بانک پرداخته وپس از تجزيه و تحليل داده ها دسته بندي هاي گوناگون عمليات آموزش و تست شبکه را انجام همچنين با افزايش و کاهش تعداد نودهاي مياني در شبکه عصبي پرسپترون به نتايج جالب توجهي رسيديم اين مقدار ٨٦,٢% صحت درستي تشخيص بود سپس با استفاده از شبکه RBF عمل تشخيص با دقت ٦٤,٣% انجام شد که نسبت به کارهاي گذشته بهبود چشمگيري داشت .
کليد واژه - سيستم خبره , اختلالات کبد, شبکه هاي عصبي


١- مقدمه
طراحي سيستم خبره پزشکي با استفاده از روشهاي گوناگوني توسط اشخاص زيادي انجام شده است . يک سيستم خبره به عنوان کمکي براي فرد خبره در تشخيص و تعيين نيازمنديها و برطرف نمودن مشکلات با حداقل ميزان خطا, هدف اصلي طراحان سيستمهاي خبره است در سالهاي اخيره توجه فراواني به اين امر شده و شاهد بهبود تصميم گيري افراد متخصص در زمينه هاي گوناگون بوده ايم که در اين بين پزشکي و تشخيص بيماري بسيار حساستر از ديگر سيستمهاي خبره مي باشد و پزشک با يک تشخيص اشتباه مي تواند زندگي يک انسان را به خطر اندازد [١]. از اولين سيستم خبره پزشکي که در سال ١٩٧٣ به نام MYCIN توسط دکتر Shortliffe طراحي و مورد استفاده قرار گرفت سالها مي گذرد[٢]کاربرد سيستم هاي دسته بندي در تشخيص پزشکي به تدريج در حال افزايش است . هيچ شکي نيست که داده هاي بدست آمده از بيماران و تصميمات متخصصان مهم ترين عوامل شناسايي هستند.
ولي سيستم هاي خبره و تکنيک هاي هوشمند گوناگوني نيز براي طبقه بندي به متخصصان کمک مي کنند. سيستم هاي دسته بندي ، جلوي خطاهاي محتملي که مي توانند به خاطر خستگي و يا بي تجربگي متخصص اتفاق بيفتند گرفته و داده هاي پزشکي را براي آزمايش در زمان کمتر و جزئيات بيشتر، فراهم مي کنند. جناب آقاي دکتر .Peter L Hammera و Bonates در يک کار تحقيقاتي بر روي همين بانک ا اطلاعاتي وچند بانک ديگر دست به پياده سازي روشهاي جداسازي مختلفي زده اند ايشان با استفاده از يک پرسپترون چند لايه به ٦٢,٢ % صحت درستي تشخيص رسيدند[٣] و همچنين آقايان دکتر .S. J Perantonisو V. Virvilis با استفاده ازيک ايده جديد جهت کاهش ابعاد يک شبکه عصبي براي استخراج ويژگيها است .اين متد موفق به کاهش ابعاد در بردار ورودي استفاده شده براي مسئله يادگيري با ناظر شده ترکيبي از ويژگيهاي اصلي متشکل از به حداکثر رساندن حساسيت خروجي هاي شبکه که در ارتباط با متغيرهاي ورودي مي باشند. اما اين روش توانسته است محاسبات سنگين روش يادگيري با ناظر را از ميان بردارد . کاربرد اين روش مخصوصا در مسائل کلاس بندي جهت کاهش ابعاد و افزايش تعميم توانايي موثر است .ايشان به ٧٢,٤% صحت درستي در تشخيص بيماري کبدرسيده اند. [٤]
٢- داده ها
مجموعه دادههاي مورد استفاده در اين پروژه با هدف ايجاد توانائي در تفکيک انواع بيماريهاي کبدي با توجه به خصوصيات آنها توسط Richard S. Forsyth جمع آوري و در سال ١٩٩٥ به سايت UCI اهدا گرديده است .تعداد نمونه هاي اين مجموعه ٣٤٥ عدد و هر نمونه تشکيل شده از ٧ خصوصيت که در ذيل مشاهده ميکنيد:[٥]
در اين بانک ٥ فيلد اول مربوط به متغيرهاي تست خون يک فرد مذکر مي باشد فيلد ٦ ام ميزان نوشيدن الکل فرد در يک روز و فيلد ٧ ام براي دسته بندي به دو کلاس مختلف است .

داده ها به صورت پيوسته بوده داده معيوب يا ناقص وجود ندارد.پس از آناليز داده هاي بانک با استفاده از تابع ()COV در نرم افزار MATLAB به اين نکته پي برديم که ميزان همبستگي فيلد Gammgt به فيلدهاي ديگر زياد است و با حذف اين فيلد ناخوشايند از بانک به نتايج بهتري دست يافتيم که در ادامه در هر دو شبکه مورد نظراين امر مشاهده مي شود.

٣- پرسپترون چند لايه
تمام شايد بتوان گفت ساده ترين ساختار و الگوريتم موبوط به شبکهاي عصبي مصنوعي پرسپترون است . اين شبکه عصبي ساده در دومدل کلي تک لايه و چند لايه موجودمي باشد .با استفاده از اين شبکه عمل جداسازي کلاسها انجام ميشود .اگر ورودي يک پرسپترون تک لايه را به صورت بردار باشد n بعدي شناخته مي شود ما حداکثر قادر به تصور سه بعد هستيم اما ميشود ابعاد بالاتر را تا حدي درک کرد اگر ضرايب وزني را به صورت بردار ديگري بنويسيم آن گاه مي توانيم به جاي جمع وزني حاصل ضرب داخلي دوبردار را محاسبه کنيم :

الگوريتم فراگيري پرسپترون تضمين مي کند که ضرايب وزني هر بار در جهت تقليل خطا تعديل يابند .يافتن خطي براي جداسازي دوگروه داده از هم توسط پرسپترون انجام مي شود.پرسپترون اين خط را با تصحيح مقادير ضرايب وزني بدست مي آورد.پرسپترون ابتدا با مقادير تصادفي بردار وزن ها شروع مي کند که جهت نامعيني در فضاي الگودارد .الگوها به پرسپترون داده مي شود روش فراگيري تضمين مي کند که اگرخروجي نادرست باشد بردار وزنها در جهت کاهش خطا تغيير يابد اين هدف با تغيير مکان بردار وزن ها به اندازه اي محدود در جهت بردار وزني ايده آل حاصل ميگردد در نهايت بردار وزن ها تبديل به بردار ايده آل مي شود و فضا را با موفقيت تفکيک مي کند در آن هنگام پرسپرتون آموخته است که چگونه بين کلاسها تمايز قائل شود.
اما پرسپترون تک لايه مشکل بزرگي دارد و آن اين است که تنها توانايي جداسازي خطي کلاسها را دارد ومسائلي چون XOR که اولين بار توسط مينسکي و پاپرت در کتاب پرسپترونها بر ملا شد سبب گرديد تا خيلي از دانشمندان از اين ساختار مايوس شوند تا سال ١٩٨٦ که مدل جديد پرسپترون توسط آقايان رومل هارت و مک کللند ارائه گرديد نام اين مدل جديد پرسپترون چند لايه بود که مانيز در تحقيقمان ار اين مدل استفاده کرده ايم .
پرسپترون چند لايه از سه لايه کلي تشکيل شده است يک لايه ورودي , يک لايه خروجي و يک لايه مياني يا لايه پنهان است . هر واحد در لايه پنهان و لايه خروجي مانند يک پرسپترون عمل مي کند با اين تفاوت که تابع استفاده شده به صورتي که در شکل زير مشاده مي کنيد بجاي تابع پلکاني تابع سيگمويد است . نودهاي ورودي صرفا وظيفه توزيع مقادير ورودي را به لايه بعدي بر عهده دارند و هيچ محاسبه اي را انجام نمي دهند.
در ساختار اين شبکه تعداد نرونهاي لايه ورودي ( برابر با تعداد خصوصيات موجود براي تصميم گيري درمورد هر يک از نمونه هاي داده ها مي باشد. به عبارت ديگر ورودي شبکه خصوصيات نمونه ها مي باشد. همچنين تعداد نرونهاي لايه خروجي شبکه (tc,...,t2,t1 ) برابر است با تعداد کلاسهاي داده ها وهر نود در لايه خروجي متناظر است با يک کلاس خاص در مجموعه داده ها. بخش ديگر ساختار اين شبکه لايه پنهان يا لايه مياني آن (yc,...,y2,y1 ) مي باشد. تعداد لايه هاي پنهان معمولا يک لايه در نظرگرفته مي شود ، زيرا در اکثر موارد يک لايه جوابگوي حل مساله مي باشد.
الگوريتم پرسپترون چند لايه از قاعده آموزش پس انتشار استفاده مي کند اين الگوريتم به توابع غيره خطي نياز دارد که به طور پيوسته قابل مشتق گيري باشند به عبارت ديگر توابع بايد هموار باشند .ما استفاده از تابع سيگمويد را به علت سادگي مشتق آن انتخاب کرده ايم :

مراحل الگوريتم پرسپرتون چند لايه به شرح زير است :
١)مقادير اوليه ضرايب وزني و آستانه ها را انتخاب کنيد.(تمام وزنها و آستانه ها را برابر با اعداد کوچک تصادفي قرار دهيد.
٢)تعداد ورودي و خروجي هاي مطلوب را به شبکه عرضه کنيد( n تعداد عناصر ورودي و m تعداد عناصر بردارهاي خروجي است .ضريب وزني را برابر با منفي مقدار آستانه w0و مقدار را برابر با ١ قرار دهيد.اگر مسئله ما تداعي باشد x0بردار ورودي وبردار خروجي نمايانگر دوبردار تداعي شونده هستند.در مسئله طبقه بندي تمام عناصر خروجي برابر با صفر قرارداده مي شود
٣)خروجي ها را محاسبه کنيد. هر لايه مقادير زير را محاسبه کرده و به لايه بعدي انتقال مي دهد.

٤)ضرايب وزني را تنظيم کنيد ابتدا از لايه خارجي شروع ميکنيم وبه عقب برمي گرديم .

نشان دهنده ضريب وزني از گره i به گره j در مدت زمات t و ضريب بهره و نمايانگر خطاي مربوط به الگوي P در گره j است . در مورد لايه خروجي

در مورد لايه هاي پنهان

در حالي که عمل جمع در مورد k واحد واقع در لايه بعد از واحد j صورت ميگيرد.
واحد پنهان مانند يک مشخصه ياب عمل مي کند . واحد پنهان بردارهاي ورودي را کدگذاري مجددي مي کند به طريقي که شبکه بتواند ارتباط ورودي ها را با خروجي ها به

درستي فراگيرد.اين کدگذاري يا بازنمايي داخلي در نحوه عمل شبکه بسيار مهم است . با تعدادکافي واحدهاي پنهان مي توان بازنمايي داخلي هر الگوي ورودي را به طريقي در شبکه شکل داد که واحدهاي خروجي بتوانند در مقابل هر ورودي مورد نظر خروجي مطلوب آن را توليد کنند.
٣-١- پروتکل آموزش :
گام بعدي براي آموزش شبکه تعيين پروتکل دريافت داده ها مي باشد. سه پروتکل وجود دارد :
: stochastic learning (a
داده ها بصورت اتفاقي انتخاب و به ازاي هر داده وزنهاي شبکه ارتقا مي يابند.
: Batch learning (b
کليه داده هاي آموزش به شبکه داده شده و خطاي هر يک محاسبه مي شود، سپس مجموع خطاها محاسبه شده و بر اساس آن وزنهاي شبکه ارتقا مي يابند. به هر مرتبه آموزش در اين حالت يک epoch گفته مي شود.
: Online learning (c
داده ها يک به يک وارد شبکه شده و وزنهاي شبکه به ازاي هر داده ورودي ارتقا مي يابد.
در اين تحقيق از پروتکل دوم يعني Batch learning
استفاده شده است .
٣-٢- تابع فعالسازي ( Activation function ) :
گام آخردر پياده سازي شبکه تعيين توابع فعالسازي براي نودهاي لايه پنهان و لايه خروجي است . پس از تعيين ساختار شبکه ، مشخص شدن نحوه تعيين وزنها و ورود داده ها ، لازم است وزنهاي ورودي به نودهاي لايه مياني و لايه خروجي توسط يک تابع مورد محاسبه واستنتاج قرار گيرند.
براي اين منظور دو نوع تابع وجود دارد:
سيگموئيد تانژانتي

سيگمويئد لگاريتمي

در اين تحقيق از تابع Logarithmic Sigmoid استفاده خواهيم کرد.
٣-٣- شرح پياده سازي :
در قسمت اول اين برنامه فايل مجمومه آموزش از ورودي دريافت و در يک آرايه ذخيره مي گردد. با توجه به ساختار شبکه در نرم افزار matlab که در آرايه ورودي سطرها بايد بيانگر خصوصيات و هر ستون بايد حاوي اطلاعات يک نمونه داده ورودي باشد بنابراين آرايه داده هاي آموزش را از حالت عمودي به حالت افقي منتقل مي کنيم . همچنين بر اساس ساختار شبکه در نرم افزار matlab آرايه اي جداگانه براي تعيين کلاس داده ها نياز است به اين صورت که تعداد سطرهاي آرايه برابر با تعداد کلاسها و تعداد ستونها برابر با تعداد داده هاي مجموعه آموزش . در هر ستون انديس متناظر با کلاس آن داده خاص مقدار غير صفر و بقيه انديسها مقدار صفر مي گيرند. توليد اين آرايه توسط يک حلقه for در اين برنامه صورت گرفته است .
4 در قسمت دوم اين برنامه براي بهبود وضعيت شروع آموزش شبکه از يک تابع Random استفاده مي شود. سپس مقادير مينيمم و ماکزيمم خصوصيات داده ها براي تعيين بازه مقادير شبکه دريک آرايه ثبت مي گردد.
در قسمت سوم برنامه يک شبکه (MLP.BP)feed forward تعريف شده است . در تعريف اين شبکه همانطور که قبلا گفته شد براي هر دو لايه خروجي و پنهان از تابع logarithmic Sigmoid به عنوان تابع فعالسازي استفاده شده است ، همچنين روش Back propagation براي آموزش شبکه تعيين گرديده .
پس از تعريف شبکه فاکتورهاي آن شامل تعداد تکرار آموزش و ميزان تابع هدف و تعداد مرتبه نمايش گرافيکي مراحل آموزش تعيين شده است .برنامه فايل مربوط به داده هاي آزمايش از ورودي دريافت و در يک آرايه ذخيره مي گردد. سپس بر اساس ساختار مورد نياز شبکه در matlab ( آرايه افقي ) منتقل شده و آماده استفاده مي شود. در اين مرحله تعريف شبکه کامل شده است و توسط دستور Train ، متغير شبکه توسط مجموعه داده هاي آموزش و مجموعه کلاسهاي آنها آموزش مي بيند.
در نهايت آرايه داده هاي آزمايش به شبکه داده شده و نتيجه تفکيک آنها توسط شبکه توليد مي شود.در قسمت آخر برنامه جوابهاي توليد شده توسط شبکه ، از آرايه استخراج و توسط تابع find با کلاس واقعي داده هاي آزمايش مقايسه مي گردد.
٣-٤- مشکلات آموزش
براي از مشکلات اصلي شبکه پرسپترون چند لايه يکي اين است که آموزش نياز به تکرار زياد الگوهاي ورودي و تکرار محاسبات پس انتشار خطاي هر الگو دارد تا اين که در پايان شبکه به تعادل و پايداري برسد. همگرايي در بسترهاي پيچيده در روش نزول در شيب به علت پيچيدگي سطح انرژي ذاتا کند است يک راه خوب افزودن گشتاور اغلب باعث همگرايي سريعتر مي شود. و يا روش ديگر ضريب بهره است .راه کار ديگر که مانع از ايجاد مينيمم هاي محلي مجازي کمک مي کند استفاده از مشتق دوم در الگوريتم نزول در شيب است .ليکن افزايش ميزان دقت در تعيين مسير نزول انرژي که با اين راه حل به دست مي آيد با افزايش پيچيدگي محاسباتي آن جبران ميشود.
٣-٥- بررسي تعداد نودهاي لايه مياني :
مساله مهم در مورد لايه پنهان انتخاب تعداد نرونهاي اين لايه مي باشد. هرچه اين تعداد افزايش يابد قابليت يادگيري شبکه افزايش مي يابد ولي در مقابل پيچيدگي زماني و محاسباتي فرآيند آموزش نيز افزايش مي يابد . در نهايت اين تعداد وابسته به تعداد داده هاي آموزش خواهد بود و بايد به صورت تجربي محاسبه گردد.در نمودار زير براي هر دو حالت شبکه با فيلد ناخوشايند و بدون آن تا ٢٠ نود بررسي و محاسبه شده است .نتايج در نمودارهاي ١و ٢ مشاهده مي شود:

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید