یکشنبه 28 مهر 1398 | Sunday 20 th of October 2019 صفحه اصلی گروه الکترونیکی کامپیوتر
3-5-1 یادگیری تحت نظارت

 به منظور تشریح بیشتر یادگیری تحت نظارت، شبکه عصبی  شکل 3-3 را تغییر می دهیم و در ان یک الگوی خروجی مطلوب، یک واحد سنجش[1] و یک الگوریتم تعدیل بگنجانیم. این قسمت ها در شکل3-5 نشان داده شده است. در این شکل خروجی مطلوب با بردار Zنشان داده شده و اجزای ان z8و z9هستند. ورودی های واحد سنجش، خروجی مطلوبZ و خروجی واقعی Yاست. خطایی که واحد سنجش تولید می کند تفاوت بین Zو Yاست که از ان در الگوریتم تعدیل اوزان استفاده می شود تا میزان تعدیل در اوزان هر دولایه مشخص شود.

برای شروع فرایند، اجازه دهید همه وزن های موجود در شبکه عصبی شکل 3-5 را به صورت مقادیر کوچک تصادفی تعدیل نماییم و سپس جفت های اموزش Xو Zرا به ترتیب با اجزای x1،x2،x3و z8،z9در نظر بگیریم. وقتی بردارXروی شبکه عصبی اعمال می شود بردار خروجی Yرا تولید می کند که با بردار Zمقایسه می شود تا خطای بین ان ها به وجود اید. سپس الگوریتم تعدیل اوزان، وزن های ارتباطی را به گونه ای تغییر می دهد که این خطا کاهش یابد. وقتی بردار ورودیXمجدداً بر روی شبکه اعمال می شود یک Yجدید تولید می کند که با Zمقایسه می شود و الگوریتم تعدیل اوزان دوباره از خطای بین ان ها برای تعدیل وزن ها استفاده می کند. این فرایند بارها و بارها تکرار می شود تا خطا به مشخصی تنزل یابد و یا مقداری کوچک و غیر قابل تقلیل پیدا کند. در این نقطه، بردار خروجی Yو بردار مطلوب Z، ذاتاً با هم معادلند و شبکه عصبی، اموزش یافته تا بردار ورودی Xرا بر بردار خروجی Zمنطبق کند. این فرایند، پایه و اساس روش یادگیری تحت نظارت است. البته ما باید برای درک کامل این فرایند، مکانیزم تعدیل اوزان را مشخص کرده و تشریح نماییم

شکل 3-5 یک شبکه عصبی با یادگیری تحت نظارت

 مثال - انطباق الفبا بر یک کد پنج بیتی

 برای اینکه ببینیم فرایند اموزش یک شبکه عصبی چگونه عمل می کند اجازه دهید تا ترتیب موجود در شکل 3-6 را در نظر بگیریم. در سمت چپ شکل، یک ماتریس 5×7 از ورودی ها داریم که مقادیر موجود در این ماتریس محدود به صفر و یک هستند. در وسط شکل یک شبکه عصبی داریم که لایه ورودی ان درای 35 عصب مصنوعی است. هر یک از این 35 عصب به یکی از ورودی های موجود در ماتریس 5×7 متصل شده است. در سمت راست شکل نیز یک ماتریس 1×5 از خروجی ها داریم که هر یک از ان ها به یکی از اعصاب لایه خروجی شبکه عصبی متصل است. در این حالت لایه پنهان شبکه عصبی به طور دلخواه دارای 20 عصب مصنوعی است. بردار ورودی Xدر سمت چپ دارای 35 جزء (X35،...،X2،X1)  و بردار خروجی Yدر سمت راست دارای پنج جزء (y5،y4،y3،y2،y1) است. در واقع ما می خواهیم الگوی یک ماتریس 5×7 را بر الگوی یک ماتریس 1×5 منطبق کنیم. بعبارتی این کار، نوعی فشرده سازی داده هاست زیرا داده های موجود در یک ماتریس 35 بیتی، بر ماتریس 5 بیتی سمت راست منطبق می شود. در این حالت نرخ فشرده سازی 7 به 1 است

حال اجازه دهید الگوی حروف بزرگ Aرا در ماتریس 5×7 سمت چپ معرفی کنیم که در ان نواحی هاشورخورده نشان دهندۀ 1 و نواحی بدون هاشور نشان دهندۀ صفر هستند. فرض کنید ما می خواهیم این الگو را بر الگوی 5 بیتی ماتریس سمت راست منطبق کنیم که ان را با (1،0،1،0،1) نشان می دهیم. شبکه عصبی مصنوعی دارای یک الگوی ورودی است که حرف Aرا نشان می دهد و یک الگوی خروجی دارد که در ماتریس 5 بیتی سمت راست نشان داده شده است. برای انجام این انطباق ما باید هم اوزان بین لایه ورودی و لایه پنهان و هم اوزان بین لایه پنهان و لایه خروجی را تعدیل نماییم.

اگر شبکه عصبی از نوع کاملا مرتبط باشد ما 700 (20×35) ارتباط و 700 وزن بین لایه پنهان و لایه ورودی خواهیم داشت. همچنین بین لایه پنهان و لایه خروجی نی 100 ( 5×20) ارتباط و 100 وزن وجود دارد، پس در مجموع 800 وزن باید تعدیل شود. در واقع ما می توانیم 800 درجه ازادی در نظر بگیریم زیرا 800 وزن قابل تعدیل وجود دارد. کاملا واضح است که از میان ترکیبات مختلف این 800 وزن، حداقل چند صد ترکیب ان (حداکثر تعداد این ترکیبات می تواند به چند هزار برسد) به این شبکه عصبی اجازه چنین انطباقی را خواهد داد. برای شروع اموزش جهت این انطباق، برای همه اوزان شبکه عصبی، مقادیر کوچک و تصادفی در نظر می گیریم که معمولا بین 3/0 - 0/3 استو سپس فرایند اموزش شروع می شود. این کار به صورت زیر است:

1) اعمال الگوی ماتریس 35 بیتی از سمت چپ بر روی لایه ورودی

2) ضرب مقادیر ورودی در 700 وزن ارتباطی بین لایه ورودی و لایه پنهان

3)جمع مقادیر 35 ورودی وزن دار برای هر یک از 20 عصب لایه پنهان.

سپس این 20 مجموع، از تابع فعال سازی غیر خطی عبور می کند تا 20 خروجی تولید کند که هر یک از ان ها به سوی 5 عصب لایه خروجی می رود. هر یک از این 20 خروجی در اوزان مربوطه ضرب می شود و برای هر یک از اعصاب خروجی با هم جمع می شود، سپس از تابع فعال سازی غیر خطی عبور می کند تا 5 خروجی شبکه تولید شود ( توجه کنید که این خروجی ها صفرو یک نیستند، بلکه مقادیری بین صفر و یک هستند. بنابراین لازم است روی خروجی ها تفسیری صورت گیرد. به عنوان مثال یک خروجی بزرگتر از 0/9 را می توان 1 در نظر گرفت؛ یک خروجی کمتر از 0/1 را می توان صفر در نظر گرفت؛ و هر مقداری بین 0/1 و 0/9 را می توان نامعین فرض کرد). این خروجی ها با خروجی های مطلوب موجود در ماتریس 1×5 سمت راست مقایسه می شوند. تفاوت بین خروجی واقعی شبکه عصبی و خروجی مطلوب، بردار خطا را تشکیل می دهد که از ان برای تعدیل اوزان هر دو لایه استفاده می شود به گونه ای که خطای کل کاهش یابد. سپس این فرایند بارها و بارها تکرار می شود تا وقتی که با ارائه حرف Aبه عنوان ورودی به شبکه، خروجی مطلوب در محدوده تعریف شده تولید شود. در این نقطه می گوییم که شبکه عصبی اموزش دیده است و قادر است نمایش 35 بیتی حرفA  را بر نمایش 5 بیتی حرف Aمنطبق کند.

حال اجازه دهید شکل 3-7 را در نظر بگیریم. در این شکل یک نمایش 35 بیتی از حرف Bبه عنوان ورودی شبکه عصبی و یک نمایش 5 بیتی از حرف Bبه عنوان خروجی مطلوب داریم که در این جا به صورت (0، 1، 0، 1، 0) است. اگر بخواهیم از شبکه عصبی استفاده کنیم باید ابتدا شبکه را برای حرف Aاموزش دهیم و سپس حرف Bرا به عنوان ماتریس ورودی به کار ببریم، سپس می توانیم همان روش قبل را برای محاسبه خروجی شبکه عصبی به کار ببریم و خروجی ان را با خروجی مطلوب مقایسه کنیم. اگر چه احتمال کمی وجود دارد که در همان ابتدای کار به خروجی مطلوب برسیم، ولی به احتمال زیاد در ابتدا خروجی مطلوب و خروجی واقعی کاملاً با هم متفاوتند (مثلاً بعضی از خروجی ها اشتباه بوده و بعضی دیگر مقداری بین 0/1 و 0/9 دارند و بنابراین نامعین هستند). این امر خطای دیگری ایجاد می کند و به همین دلیل برای تعدیلی بیش از تعدیل مورد نیاز برای ورودی Aروی وزن ها صورت گیرد. ما فرایند اموزش را انقدر ادامه می دهیم تا وقتی که با ارائه Bبه عنوان ماتریس ورودی از سمت چپ، خروجی دلخواه خود را به صورت ماتریس 5 بیتی (0، 1، 0، 1، 0) از سمت راست دریافت نماییم. در این موقع ما شبکه عصبی را به گونه ای اموزش داده ایم که بتواند نمایش 35 بیتی حرف Bرا بر یک نمایش 5 بیتی منطبق کند. با این حال فرض کنید ما بر روی یک شبکه عصبی که یکبار برای Aو یکبار برایB اموزش دیده است حرف Aرا دوباره به عنوان ورودی وارد نماییم. ایا احتمال می دهید که به خروجی مطلوب دست یابید؟ ممکن است بله و ممکن است خیر. اگر جواب منفی باشد ما می توانیم با انجام اموزش های بیشتر به پاسخ مطلوب دست یابیم. سپس می توانیم حرف Bرا به عنوان ورودی به کار ببریم. ایا ما به پاسخ مطلوب خواهیم رسید؟ شای بله و شاید خیر. اگر جواب منفی باشد ما می توانیم اموزش بیشتری انجام دهیم. این فرایند رفت و برگشت بین AوBمی تواند انقدر ادامه یابد که ما هرگاه Aرا به عنوان ماتریس ورودی به کار بردیم، خروجی مطلوب (1، 0، 1، 0، 1)را دریافت کنیم و هر گاه Bرا به عنوان ماتریس ورودی به کار بردیم خروجی مطلوب (0، 1، 0، 1، 0) را داشته باشیم. حال ما شبکه ای داریم که قادر است هم حرف Aو هم حرف Bرا بر نمایش 5 بیتی ان ها منطبق کند. در این جا ما می توانیم این فرایند را با حروف C، D،Eو همه الفبا ادامه دهیم. چون ما یک خروجی 5 بیتی داریم که تعداد کل انطباق های ممکن 25 یا 32 است. بنابراین ما می توانیم کل حروف انگلیسی و 6 علامت نشانه گذاری را به این صورت نمایش دهیم. ولی این کار یعنی انجام یک فرایند کامل اموزش برای یک علامت، قبل از شروع فرایند اموزش برای دیگر علائم، روش مؤثر و کارایی نیست. کار عملی تر و مؤثرتر این است که 32 مجموعه اموزشی انتخاب کنیم (مثلاً، یک Aو نمایش 5 بیتی ان، یک Bو نمایش 5 بیتی ان و الی اخر) و پس از انتخاب وزن ها به طور تصادفی، همه 32 مجموعه اموزشی را یکی پس از دیگری به شبکه عصبی وارد کنیم تا می شود بارها و بارها به شبکه ارائه می شود تا در نهایت 32 حرف و علامت بر کدهای 5 بیتی مورد نظر ما منطبق شوند. برای تعیین یا بررسی وضعیت اموزش بهتر است خطای کلی را مدنظر قرار دهیم، نه اینکه ببینیم تک تک خروجی ها درست هستند یا نه. خطای کلی عبارتست از مجموع همه خطاهای بین خروجی واقعی شبکه و خروجی های مطلوب ( که به صورت صفر و یک هستند)، برای  همه جفت های موجود در مبدأ. در حالت ایده ال این خطای کلی باید نزدیک به صفر باشد. در غیر این صورت اموزش های بیشتری باید انجام شود ولی در صورت وجود هر گونه اغتشاش در ورودی ها یا خروجی ها، خطای کلی هرگز نمی تواند صفر باشد. به علاوه یک شبکه عصبی را می توان ان قدر اموزش داد که به جای انطباق بر روابط اساسی، بر الگوی معیوب منطبق شود.

شکل 3-7 نگاشت ورودی خروجی حرف B

 مثال - فشرده سازی و بسط داده ها

 در این مرحله شکل 3-8 را در نظر بگیرید. در این جا ماتریس ورودی، یک نمایش 5 بیتی از حرف Aو ماتریس خروجی، یک نمایش 35 بیتی از حرف Aاست. ایا این امکان وجود دارد که شبکه عصبی را به گونه ای اموزش دهیم که یک نمایش 5 بیتی را بر یک نمایش 35 بیتی منطبق کند؟ بله این امکان وجود دارد و فرایند کار دقیقاً به همان روشی است که ما عکس ان را طی کردیم. در این صورت به جای فشرده سازی داده ها، بسط داده ها را خواهیم داشت. ما حتی می توانیم ترکیبی از شبکه های عصبی شکل های 3-6 و 3-8 را داشته باشیم که در این صورت یک نمایش 35 بیتی ابتدا به صورت یک نمایش 5 بیت یحرف Aفشرده می شود و سپس همان طور که در شکل 3-9 نشان داده شده به صورت نمایش 35 بیتی حرف Aبسط داده خواهد شد. چرا ما چنین کاری انجام می دهیم؟ فرض کنید ما می خواهیم اطلاعات را از طریق یک کانال باریک عبور دهیم. ما می توانیم این داده ها را فشرده کنیم (که در این جا نرخ فشرده سازی 7 است)، ان را از کانال عبور دهیم و سپس ان را به صورت اولیه بسط دهیم. این فرایند، کاربردهای عملی زیادی دارد.

شکل 3-8 نگاشت معکوس حرف A

مثال - اصلاح معایب

در شکل 3-9 نوعی فشرده سازی و بسط داده ها نشان داده شده که در ان ورودی شبکه عصبی دقیقاً مشابه خروجی ان است. این ترکیب، شبکه عصبی خود شرکت پذیر[1] نام دارد و به این معناست که در این شبکه، ورودی ها و خروجی ها دقیقاً معادل اند. در این حالت ما اوزان را به طور تصادفی انتخاب می کنیم، نمایش 35 بیتی حرف Aرا به عنوان ورودی به شبکه ارائه می کنیم و همان نمایش 35 بیتی حرف Aرا به عنوان خروجی مطلوب به کار می بریم. حال فرایند اموزشی که در مثال قبل مطرح شد را شروع می کنیم و ان قدر ادامه می دهیم تا خروجی شبکه با خروجی مطلوب معادل شود. چرا ما می خواهیم چنین کاری انجام دهیم؟ فرض کنید پس از اموزش شبکه عصبی، به جای اینکه از نمایش 35 بیتی حرف

 

Aبه عنوان ورودی شبکه عصبی اموزش دیده استفاده کنیم یک نمایش کج و معوج از حرف Aارائه نماییم. در این صورت خروجی شبکه عصبی، یک حرف A

غیر معوج خواهد بود، زیرا شبکه عصبی اموزش دیده است که فقط این خروجی را تولید نماید.

شکل 3-9 فشرده سازی و بسط داده ها با استفاده از شبکه عصبی

فرض کنید که ما از این هم فراتر رفته و این شبکه عصبی را به گونه ای اموزش دهیم که همه 26 حرف الفبا و 6 علامت نشانه گذاری را نمایش دهد. بنابراین معقول به نظر می رسد که انتظار داشته باشیم با ورود یک علامت کج و معوج، علامت سالم را به عنوان خروجی دریافت کنیم. در حالت کلی، این موضوع صحیح است ولی برای ان استثنائی وجود دارد. فرض کنید یک حرف Bکه در قسمت پایین و راست ان اعوجاج وجود دارد به شبکه داده شده است. حال ممکن است شبکه حرف Bیا Rرا به ما بدهد. انتخاب شبکه بین حرف Bو حرف Rبستگی به این دارد که حرف Bورودی از نظر حداقل مربعات خطاها به حرف Bنزدیک تر است یا حرف R. این مطلب در مورد سایر حروف مشابه نیز صدق می کند. به عنوان مثال حروف Qو O، حروف Rو P، حروف Cو Gو غیره

[1] -Autoassociative Neural Network


[1] -Comparator

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26