شبکه های پیشخور[۸۷] شبکه هایی هستند که ارتباط تنها یک طرفه میباشد و از هر سلول عصبی داده ها تنها به سلول عصبی بعدی منتقل می شود اما در شبکه های پسخور[۸۸] ارتباط دوطرفه میباشد.
۳-۱-۲) شبکه عصبی پرسپترون چند لایه
یکی از ساده ترین و در عین حال کارآمدترین چیدمان[۸۹]های پیشنهادی برای استفاده در مدل سازی عصبهای واقعی، مدل پرسپترون چندلایه میباشد که از یک لایهی ورودی، چند لایهی پنهان و یک لایهی خروجی تشکیل یافته است. در این ساختار، تمام گرههای یک لایه به تمام گرههای لایهی بعد متصلند. این چیدمان اصطلاحاً یک شبکه با اتصالات کامل را تشکیل میدهد. تعداد نرونهای هر لایه، مستقل از تعداد نرونهای دیگر لایه ها میباشد[۲۸].
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
شکل۳-۲ ) ساختار کلی شبکه پرسپترون چند لایه[۳۰]
شبکه پرسپترون چندلایه یک شبکه عصبی مصنوعی پیشخور بوده و پردازندههای شبکه به چند لایهی مختلف تقسیم میشوند. این معماری را پرکاربردترین معماری شبکه های عصبی میتوان نامید. شکل ۳-۲ نمای عمومی پرسپترون چندلایه را نشان میدهد[۳۰].
در بسیاری از مسائل پیچیده ریاضی که به حل معادلات بغرنج غیر خطی منجر میشود ، یک شبکه پرسپترون چند لایه میتواند به سادگی با تعریف اوزان و توابع مناسب مورد استفاده قرارگیرد . توابع فعالیت مختلفی به فراخور اسلوب مسئله در سلولهای عصبی مورد استفاده قرار میگیرد .
گرههایی که در لایهی ورودی هستند ، سلولهای عصبی حسی[۹۰] و گرههای لایهی خروجی، سلولهای عصبی پاسخ دهنده[۹۱] هستند. در لایهی پنهان نیز، سلولهای عصبی پنهان[۹۲] وجود دارند.
شبکههای پرسپترون چند لایه میتوانند با هر تعداد لایه ساخته و به کار گرفته شوند ، ولی قضیهای که بدون اثبات میپذیریم، بیان میکند که یک شبکه پرسپترون سه لایه قادر است هر نوع فضایی را تفکیک کند. این قضیه که قضیهی کولموگوروف[۹۳] نامیده میشود، بیانگر مفهوم بسیار مهمی است که میتوان در ساخت شبکههای عصبی از آن استفاده کرد[۳۱].
شبکه های چند لایه میتوانند برای یادگیری مسائل غیرخطی و همچنین مسائلی با تصمیم گیریهای متعدد بهکار روند. برای اینکه بتوانیم فضای تصمیم گیری را به صورت غیرخطی از هم جدا کنیم، لازم است تا هر سلول واحد را به صورت یک تابع غیرخطی تعریف نماییم. مثالی از چنین سلولی می تواند یک واحد سیگموئید باشد[۳۰].
تابع سیگموئید: خروجی این سلول واحد را به صورت زیر میتوان بیان نمود:
O(x1,x2,…,xn) =σ ( WX )
where: σ ( WX ) = 1 / 1 + e -WX
تابع σ تابع سیگموئید نامیده می شود. این تابع دارای خاصیت زیر است:
d σ(y)/ dy = σ(y) (1 – σ(y))
از یک شبکه پرسپترون چند لایه میتوان جهت پیش بینی سری زمانی استفاده کرد. یک سری زمانی مجموعه مشاهداتی ست که بر اساس زمان مرتب شده باشند.در این روش هدف پیشبیینی رویداد یا درخواست بعدی بر اساس چند رویداد یا درخواست قبلی است. معماری شبکه در شکل ۳-۳ نشات داده شده است[۳۲].
شکل۳-۳ ) ساختار شبکه پرسپترون چند لایه در پیش بینی سری زمانی[۳۳]
۳-۱-۳) الگوریتم یادگیری پس انتشار خطا
به منظور آموزش شبکه و اصلاح وزنها تا رسیدن به یک خطای معنادار، روشهای بسیار زیادی وجود دارد. یکی از مشهورترین این روشها، الگوریتم پس انتشار خطا است که در ادامه توضیح داده می شود.
این الگوریتم که در سال ۱۹۸۶ پیشنهاد گردید، در شبکه های عصبی پیشخور مورد استفاده قرار میگیرد. پیشخور بودن به این معناست که سلولهای عصبی مصنوعی در لایه های متوالی قرار گرفتهاند و خروجی خود را رو به جلو میفرستند. واژهی پسانتشار نیز به معنای این است که خطاها به سمت عقب در شبکه تغذیه میشوند تا وز نها را اصلاح کنند و پس از آن، مجدداً ورودی مسیر پیشخور خود تا خروجی را تکرار کند. روش پسانتشار خطا از روشهای باسرپرست است به این مفهوم که نمونههای ورودی برچسب خوردهاند و خروجی مورد انتظار هر یک از آ نها از پیش مشخص است. لذا خروجی شبکه با این خروجیهای اید هآل مقایسه شده و خطای شبکه محاسبه میگردد. در این الگوریتم ابتدا فرض بر این است که وزنهای شبکه به طور تصادفی انتخاب شده اند. در هر گام خروجی شبکه محاسبه شده و بر حسب میزان اختلاف آن با خروجی مطلوب، وز نها تصحیح میگردند تا در نهایت این خطا، حداقل شود. در الگوریتم پس انتشار خطا، تابع تحریک هر عصب به صورت جمع وز ندار ورودیهای مربوط به آن عصب درنظر گرفته می شود[۲۶]. به این ترتیب با فرض این که وزنهای متناظربین لایهی ورودی و لایهی بعد w باشد میتوان نوشت:
به وضوح میتوان دیدکه خروجی تابع تحریک عصب فقط به ورودی و وز نهای متناظر بستگی دارد. با فرض اینکه تابع خروجی، سیگموئید باشد، میتوان خروجی عصب jام را به صورت زیر نوشت:
همانگونه که در رابطه بالا ملاحظه میگردد، تابع سیگموئید به ازای اعداد منفی بزرگ، بسیار نزدیک به صفر است و برای اعداد مثبت بزرگ، مقداری بسیار نزدیک به ۱ دارد و در این بین به طور هموار تغییر می کند خروجی فقط به مقدار تابع تحریک بستگی دارد که به نوبهی خود به ورودی و وزنها مرتبط می شود. لذا برای تغییر خروجی باید وزنها تغییر کنند. آنچنان که پیش از این نیز بیان شد، هدف فرایند آموزش، رسیدن به خروجی مطلوب یا نزدیک به مطلوب است. بدین ترتیب ابتدا باید تابع خطای هر سلول عصبی را تعریف کنیم[۲۶]. این خطا از اختلاف خروجی واقعی شبکه و خروجی مورد انتظار به صورت زیر بدست می آید:
برای بررسی ارتباط خطا با ورودی ها، وزنها و خروجیها روشهای متفاوتی وجود دارد که برخی از مهمترین آنها عبارتند از[۲۸]:
-
- روش گرادیان کاهشی[۹۴]
-
- روش نیوتن
-
- روش اندازه حرکت(گشتاور)[۹۵]
-
- روش آنتروپی متقابل[۹۶]
-
- روش Marquarlt-Levenberg
در ادامه روابط روش گرادیان کاهشی به دلیل این که سادهترین و درعین حال پرکاربردترین روش است، بیان خواهد شد[۲۹]. در این روش ، ابتدا یک تابع هزینه درجه دوم تعریف میگردد که عبارت است از:
که در آن Lo ، بعد خروجی (تعداد گرههای لایهی خروجی) است. هدف نهایی الگوریتم پسانتشار خطا، حداقل کردن این تابع هزینه است. بر اساس روش گرادیان کاهشی ، با توجه به درجه ۲ و مثبت بودن تابع هزینه، فرض می شود این تابع رفتاری سهموی دارد. لذا برای رسیدن به حداقل کلی آن بایستی در خلاف جهت شیب تابع حرکت کنیم. بنابراین با فرض این که وزنها در ابتدای کار به صورت تصادفی انتخاب شده باشند، باید شیب تابع خطا را نسبت به وزنها محاسبه نموده و در جهت خلاف آن، وزنها را تغییر دهیم و این روند را تا آن جا ادامه دهیم که به حداقل کلی یا یک خطای قابل قبول برسیم. بنابراین میزان تغییر وزنها در هرگام عبارت است از:
که در آن η ثابت اصلاح وزنها یا همان نرخ یادگیری است و توسط کاربر انتخاب می شود. این ثابت نرخ همگرایی الگوریتم را تعیین می کند. لذا به وضوح هر چه مقدار این ثابت بیشتر باشد، میزان تغییرات در هر گام بیشتر خواهد بود و بالعکس. البته معمولا این نرخ یادگیری در ابتدا با یک عدد ثابت شروع شده و سپس به صورت وفقی تغییر می کند. به این صورت که در صورت کاهش خطا نرخ یادگیری افزایش و در صورت افزایش خطا نرخ یادگیری کاهش مییابد. پس به منظور یافتن میزان اصلاح وزنها در هر گام، باید مشتق خطا را برحسب وزنها بدست آوریم. بدین منظور با بهره گرفتن از قاعده زنجیره ای و با فرض تابع فعالیت سیگموئید میتوان نوشت:
و نهایتاً رابطه نهایی میزان اصلاح وزنها در هر گام از الگوریتم پسانتشار خطا به صورت زیر بدست می آید:
از رابطه قبل در اصلاح وزنهای یک شبکه عصبی دو لایه (ورودی-خروجی)که فقط یک دسته وزن دارند می توان استفاده نمود. با فرض وجود لایهی پنهان باید دو دسته وزن در هر گام از اجرای الگوریتم پسانتشار خطا، اصلاح شوند. و وزن های اتصالات لایه پنهان به لایه خروجی ( v ) وزن های اتصالات لایه ورودی به لایه پنهان( w ). مجدداً با بهره گرفتن از ایده گرادیان شیب میتوان نوشت:
همچنین با توجه به اینکه در حالتی که شبکه عصبی دارای ۳ لایه است، ورودی لایهی خروجی در حقیقت خروجی لایهی پنهان است، داریم: