کمی بعد معلوم شد که ورباس باز هم زودتر از پارکر این روش را بیان نموده است. پارکر و رامل هارت در صورت آگاه بودن از کارهای ورباس میتوانستند مقدار زیادی از توانایی و تلاششان را ذخیره و صرف کشف مسائل جدیدتری نمایند. اگر چه تکرار مشابهی از سعی و کوشش به طور مجازی در هر انضباط علمی یافت میشود، در شبکههای عصبی مصنوعی، مسئله به طور ویژه شدیداً به طبیعت رشتههای مختلف علمی موضوع بستگی دارد.
تحقیق درباره شبکههای عصبی به گونهای فزاینده ادامه دارد و نتایج به دست آمده، در کتاب ها و مجلات بسیاری از رشتههای مختلف منتشر میشود، محققان ذیربط با آگاهی از نتایج تحقیقات در مییابند که همچنان در تنگنای قرار دارند. روند تحقیق درباره شبکههای عصبی مصنوعی به گونهای فزاینده ادامه دارد و نتایج به دست آمده آن قدر در کتابها و مجلات گوناگون از رشتههای مختلف منتشر میشوند که حتی محققان ساعی هم از اینکه از همه کارهای مهم در این زمینه آگاه و مطلع بمانند، در تنگنا هستند.
۵-۱۲ ساختار شبکه در الگوریتم انتشار برگشتی
در سلول عصبی مورد استفاده از الگوریتم انتشار برگشتی یک دسته ورودی یا از یک لایه قبلی به کار برده میشود. هر یک از این ورودی ها در یک وزن ضرب میشود و حاصل ضرب ها با یکدیگر جمع میشوند. این جمع NET نامیده میشود و برای هر سلول عصبی در شبکه باید محاسبه گردد. بعد از اینکه NET محاسبه شد، تابع تحرک f برای تعدیل آن به کار برده میشود، در نتیجه سیگنال out تولید میگردد. اگر تابع تحریک برای انتشار برگشتی به صورت زیر باشد:
همان طور که قبلاً اشاره شده است، این تابع یک تابع سیگموید میباشد و مشتق سادهای دارد. به همین دلیل تابع مطلوبی است و ما به طور مسلم میتوانیم در اجرای الگوریتم انتشار برگشتی از آن استفاده کنیم.
این تابع گاهی اوقات یک تابع منطقی یا به طور ساده یک تابع فشرده کننده نیز نامیده میشود. تابع سیگموید حدود NET را فشرده میکند به گونهای که مقدار OUT بین صفر و یک قرار میگیرد. همان گونه که قبلاً توضیح داده شد، شبکههای چند لایهای تنها در صورتی قدرت ارائه کنندگی بیشتری نسبت به شبکه تک لایه دارند که یک مسئله غیرخطی در آنها مطرح شود. تابع فشرده کننده، غیرخطی بودن مورد نیاز را فراهم میکند.
توابع دیگری نیز وجود دارند که ممکن است به جای تابع سیگموید به کار برده شوند. تنها نیاز به الگوریتم انتشار برگشتی در این است که این توابع در همه جا مشتق پذیر باشند، زیرا مشتق تابع در این الگوریتم مورد استفاده قرار میگیرد. تابع سیگموید از جمله توابعی است که این نیاز را برآورده می کند. در این تابع برای علائم کوچک (NET تقریباً صفر) شیب منحنی ورودی ـ خروجی نزولی است و مقدار مشتق OUT به NET کاهش مییابد.
هر قدر که مقدار سیگنال بیشتر شود (از صفر دور میشود)، مقدار این مشتق کاهش مییابد. در این روش، در حالی که به سیگنالهای کوچک اجازه داده میشود که بدون کاهش زیاد عبور کنند، سیگنال بزرگ بدون اینکه باعث اشباع شدن شبکه شوند در شبکه جا داده میشوند.
۵-۱۳ نگرشی کلی بر آموزش شبکه
هدف از آموزش یک شبکه، تنظیم وزنهای آن به گونهای است که با به کار بردن یک دسته از ورودی ها دسته دلخواه خروجی ها تولید شود. برای اختصار و سادگی کار، این دستهه ای ورودی ـ خروجی میتوانند به عنوان یک بردار در نظر گرفته شوند. در تربیت، فرض بر این است که هربردار ورودی با یک بردار هدف که بیان کننده خروجی دلخواه است، یک زوج را تشکیل میدهند. این زوج یک زوج ترتیبی یا آموزشی نامیده میشود.
معمولاً یک شبکه به وسیله تعدادی از زوجهای آموزشی تربیت میگردد. قسمت ورودی یک زوج آموزشی، برای مثال ممکن است شامل الگوی صفر و یک باشد که نمادی از سیستم دودویی از یک حرف الفبا را بیان کند.
شکل زیر یک دسته ورودی ها را برای حرف A روی یک شبکه نشان میدهد. در صورتی که قسمتی از حرف A داخل یک مربع وجود داشته باشد، ورودی سلول عصبی متناظر با آن یک عدد است. در غیر این صورت، ورودی برابر صفر است. خروجی ممکن است عددی باشد که حرف A را بیان میکند و یا شاید دسته دیگری از صفر و یک باشد که میتواند برای تولید یک الگوی خروجی مورد استفاده قرار بگیرد. در صورتی که کس بخواهد شبکه را برای تشخیص همه حروف الفبای انگلیسی آموزش دهد، ۲۶ زوج آموزشی مورد نیاز خواهد بود این گروه از زوجهای آموزشی، یک دسته آموزشی نامیده میشوند.
۵-۱۴ تشخیص تصویر
قبل از شروع فرایند آموزش شبکه، همه وزن ها باید با مقادیر کوچک تصادفی شروع شوند. این عمل تضمین میکند که شبکه با مقادیر بزرگ وزن ها اشباع نخواهد شد و از بعضی آسیبهای تربیتی نیز جلوگیری به عمل خواهد آمد. برای مثال، در صورتی که به همه وزن ها مقادیر اولیه یکسان داده شود و عملکرد دلخواه نیاز به مقادیر نابرابر وزن ها داشته باشد، در این صورت شبکه آموزش نخواهد دید.
تربیت شبکه با الگوریتم انتشار برگشتی نیاز به گامهایی دارد که در زیر توضیح داده میشود:
۱ ـ یک زوج آموزشی را از دسته آموزشی انتخاب میکنیم و جزء مربوط به ورودی (بردار ورودی) از زوج آموزشی را به عنوان ورودی شبکه به کار میبریم.
۲ ـ خروجی شبکه را محاسبه میکنیم.
۳ ـ خطای بین خروجی شبکه و خروجی دلخواه (بردار هدف از زوج آموزشی) را محاسبه میکنیم.
۴ ـ وزنهای شبکه را به روشی تنظیم مینماییم که خطا به حداقل برسد.
۵ ـ گامهای یک تا چهار را برای هر بردار در دسته آموزشی تکرار میکنیم تا خطا برای کل دسته به گونهای قابل قبول کاهش یابد.
با ارائه هر مجموعه اطلاعات به شبکه، وزنها اصلاح میگردند. وقتی تمام مجموعه اطلاعات به شبکه داده شد، میگوییم که (اپوک)[۱۸]تکمیل شده است و مجدداً اطلاعات از اول به شبکه داده میشود. برای آموزش حتی یک شبکه ساده ممکن است تعداد اپوکهای زیادی لازم باشد.
عملکردهای مورد نیاز در گامهای اول و دوم مشابه روشی هستند که در طی آن، شبکه تربیت میشود و به گونهای پیوسته مورد استفاده قرار میگیرد. این روش به این صورت است که یک بردار ورودی به کار برده میشود، محاسبات لایه به لایه انجام شده و خروجی محاسبه میگردد. به این صورت که ابتدا خروجی سلولهای عصبی یک لایه که محاسبه میشود، این خروجی ها به عنوان ورودی برای لایه بعدی به کار برده میشود و سپس از روی این ورودی ها، خروجیهای لایه دوم محاسبه میگردد و در نتیجه، این خروجی ها بردار خروجی شبکه را تشکیل میدهند.
در گام سوم، هر کدام از خروجیهای شبکه که با out مشخص میشوند، برای محاسبه خطا از آرایه متناظر خود از بردار هدف کم میشوند.
شکل ۵-۳ : تشخیص تصویر
این خطا در گام چهارم برای تنظیم وزنهای شبکه به کار برده میشود و مقدار و جهت تغییر وزن ها به وسیله الگوریتم آموزشی تعیین میگردد.
بعد از تکرار این چهار گام به اندازه کافی خطای بین خروجی حقیقی و هدف میبایست به یک مقدار مجاز و قابل قبول کاهش داده شود و بدین ترتیب گفته میشود که شبکه تربیت شده، یا آموزش دیده است. از این لحظه به بعد، شبکه برای شناخت و تشخیص به کار برده میشود و وزن ها دیگر تغییر داده نمیشوند.
ممکن است ملاحظه شود که گامهای اول و دوم شامل یک حرکت به پیش هستند که در آن سیگنال از ورودی شبکه به سمت خروجی منتشر میشود. گامهای سوم و چهارم نیز شامل یک برگشت به عقب هستند که در آن، سیگنال خطای محاسبه شده از جایی که برای تنظیم وزن ها به کار برده میشود به سمت عقب منتشر میشود. حال این دو فرایند حرکت به پیش و برگشت به عقب، به تفضیل در ادامه شرح داده شده و به شکل ریاضی گونه تری بیان میشوند.
۵-۱۵ حرکت به پیش
گامهای اول و دوم به شکل برداری به صورت زیر بیان میشوند:
با به کاربردن یک بردار ورودی x ، بردار هدف آن یعنی t از دسته آموزشی انتخاب میگردد. بردار ورودی x به شبکه اعمال و محاسبه برای تولید بردار خروجی روی آن انجام میشود، تا بردار خروجی y تولید گردد.
همان طور که تاکنون ملاحظه کرده ایم، در شبکههای چند لایه، محاسبه لایه به لایه ابتدا نزدیکترین الیه به ورودی انجام میشود. مقدار NET هر سلول عصبی در اولین لایه با جرم وزنی ورودیهای سلول عصبی محاسبه میشود. سپس تابع تحریک f مقدار NET را برای تولید مقدار OUT برای هر سلول عصبی در آن لایه فشرده میکند. به محض اینکه دس خروجی ها برای یک لایه معلوم شد، آن لایه به عنوان لایه ورودی برای لایه بعدی به کار گرفته میشود. این فرایند لایه به لایه تکرار میشود تا اینکه دسته نهایی خروجیهای شبکه تولید گردد.
این فرایند را به صورت فشرده و خلاصه با نماد برداری نیز میتوان نوشت. وزنهای با سلولهای عصبی را به صورت یک ماتریسW میتوان در نظر گرفت. برای مثال، وزن از سلول عصبی ۸ در لایه ۲ به سلول عصبی ۵ در لایه ۳ به صورت w8,5 مشخص میشود. به جای استفاده از جمع حاصلضرب ورودی ها در وزنهای متناظر، بردار NET برای یک لایه N ممکن است به صورت حاصلضرب X,W بیان شود.
به شکل نماد برداری N= XW خواهد بود. با به کار بردن تابعF بر روی جزء آرایههای بردار N، یعنی NET ها، بردار خروجی محاسبه میشود. بدین ترتیب برای یک لایه معین، عبارت زیر فرایند محاسبه را توصیف می کند:
NET=F(X.W)
بردار خروجی یک لایه، بردار ورودی برای لایه بعدی است به گونهای که برای محاسبه خروجی های لایه آخر معادله بالا برای هر لایه، از ورودی شبکه به سمت خروجی آن به کار برده شود.
۵-۱۶ برگشت به عقب ـ تنظیم وزنهای لایه خروجی
از آنجایی که برای هر سلول عصبی در لایه خروجی یک مقدار هدف موجود است، تا وزنهای مربوط با بهره گرفتن از تعمیمی از قانون دلتا یا delta rule، به آسانی انجام میگردد. لایههای داخلی که به آنها به عنوان لایههای پنهان اشاره میشود، به دلیل اینکه خروجی هایشان فاقد مقادیر هدف به منظور مقایسه اند، تربیت شان پیچیده تر است.
چون هدف از نگارش این مطالب آن است که به هدف خود، یعنی معرفی نرم افزار matlab میباشد، بپردازیم، از بسط بیشتر این موضوعات و مواردی از قبیل فرایند تربیت برای یک وزن از سلول عصبی چشم میپوشیم..
فقط در این حد اشاره شود که در فرایند تربیت یک وزن سلول عصبی p در لایه پنهان j به سلول عصبی q در لایه خروجی k ، خروجی یک سلول عصبی در لایه k از مقدار هدفش تفریق میشود تا یک سیگنال خطا تولید گردد. مقدار این سیگنال در مشتق تابع فشرده کننده که برای آن سلول عصبی در لایه k محاسبه شده است ضرب میگردد. بدین ترتیب، مقدار پارامتر برای سلول عصبی مزبور که به صورت زیر تعریف میشود، به دست میآید.
اگر تابع تحریک را یک تابع سیگموید فرض کنیم، رابطه فوق به صورت زیر در میآید:
سپس در خروجی سلول عصبی از لایه j که سلول عصبی مبدأ برای وزن موردنظر است ضرب میشود، حاصل این ضرب در ضریبی به نام ضریب میزان آموزش که با نشان داده میشود ضرب شده و نتیجه به وزن اضافه میگردد. مقدار معمولاً بین یک صدم و یک درنظر گرفته میشود. فرایندی مشابه برای هر وزن بین یک سلول عصبی در لایه مخفی و سلول عصبی دیگر در لایه خروجی انجام میشود.
معادلات زیر این محاسبات را توصیف میکند:
مقدار وزن از سلول عصبی p در لایه پنهان به سلول عصبیq گام n ام (قبل از تنظیم وزن).