AIcode مرجع تخصصی هوش مصنوعی

<aicode>

 

 

 

 

 

این مطلب برگرفته از پایان‌نامه کارشناسی ارشد مهندس محمد اسراردل با عنوان "پیش‌بینی دینامیک احتراق در یک محفظه احتراق آزمایشگاهی با شعله پایدار شده چرخشی مغشوش در شرایط پاشش سوخت ثانویه" می‌باشد [1].

یادگیری ماشین شاخه‌ای از علوم رایانه‌ای می‌باشد که در رابطه با هوش مصنوعی بحث می‌کند. هوش مصنوعی نیز به نوبه خود زمینه‌ای است که در رابطه با طراحی ساختار سیستم‌های هوشمند برای نظارت و مدل‌سازی، بحث می‌نماید و هدف نهایی آن طراحی و پیاده‌سازی ماشین هوشمند می‌باشد. اساس هوش مصنوعی و نوع نگرش آن برای حل و مدل‌سازی پدیده‌ها بر مبنای ساختار مغز انسان طراحی شده‌است. امروزه هوش مصنوعی بخش جدایی‌ناپذیر از صنعت، ارتباطات، حول و نقل و ... می‌باشد.

یادگیری تحت نظارت، یکی از زیرشاخه‌های علم یادگیری ماشینی است.این روش، یک نگرش عمومی در یادگیری ماشین است که در آن به یک سیستم، مجموعه‌ای از جفت‌های ورودی – خروجی ارائه‌شده و سیستم تلاش می‌کند تا تابعی از ورودی به خروجی را فراگیرد. یادگیری تحت نظارت نیازمند تعدادی داده ورودی به‌منظور آموزش سیستم است. بااین‌حال رده‌ای از مسائل وجود دارند که خروجی مناسب که یک سیستم یادگیری تحت نظارت نیازمند آن است، برای آن‌ها موجود نیست. این نوع از مسائل چندان قابل جوابگویی با استفاده از یادگیری تحت نظارت نیستند.

یادگیری تقویتی مدلی برای مسائلی از این قبیل فراهم می‌آورد. در یادگیری تقویتی، سیستم تلاش می‌کند تا تقابلات خود با یک محیط پویا را از طریق آزمون و خطا بهینه نماید. یادگیری تقویتی مسئله‌ای است که یک عامل که می‌بایست رفتار خود را از طریق تعاملات آزمون و خطا با یک محیط پویا فراگیرد، با آن مواجه است. در یادگیری تقویتی هیچ نوع زوج ورودی- خروجی ارائه نمی‌شود. به‌جای آن، پس از اتخاذ یک عمل، حالت بعدی و پاداش بلافصل به عامل ارائه می‌شود. هدف اولیه برنامه‌ریزی عامل‌ها با استفاده از تنبیه و تشویق است، بدون آنکه ذکری از چگونگی انجام وظیفه آن‌ها شود. یک مجموعه از مثالهای یادگیری وجود دارد به ازای هر ورودی، مقدار خروجی و یا تابع مربوطه نیز مشخص است. هدف سیستم یاد گیر به دست آوردن فرضیه‌ای است که تابع و یا رابطه بین ورودی و یا خروجی را حدس بزند به این روش یادگیری با نظارت گفته می‌شود.

شبکه عصبی مصنوعی

شبکه‌های عصبی از عناصر عملیاتی ساده‌ای ساخته می‌شوند که به صورت موازی در کنار هم عمل می‌کنند. این عناصر از سیستم‌های عصبی زیستی الهام گرفته‌شده‌اند. در طبیعت، عملکرد شبکه‌های عصبی از طریق نحوه اتصال بین اجزای تعیین می‌شود. بنابراین می‌توان یک ساختار مصنوعی به تبعیت از شبکه‌های طبیعی ساخت و با تنظیم مقادیر هر اتصال، تحت عنوان وزن اتصال، نحوه ارتباط بین اجزای آن را تعیین شود[2].

پس از تنظیم یا همان آموزش شبکه عصبی، اعمال یک ورودی خاص به آن منجر به دریافت پاسخ خاصی میشود. همان‌طور که در شکل زیر دیده میشود شبکه بر مبنای تطابق و همسنجی بین ورودی و هدف سازگار میشود تا اینکه خروجی شبکه و خروجی موردنظر (مقادیر هدف) بر هم منطبق گردند.
1
 شمای ساختاری شبکه‌ عصبی

عموماً تعداد زیادی از این زوج‌های ورودی و خروجی به کار گرفته می‌شوند تا در این روند که از آن تحت عنوان یادگیری نظارت‌شده یاد می‌شود شبکه آموزش داده شود. از شبکه عصبی برای پیاده‌سازی توابع پیچیده در زمینه‌های مختلف ازجمله تشخیص الگو، تشخیص هویت، طبقه‌بندی، پردازش صحبت و تصویر و سیستم‌های کنترلی استفاده می‌شود. امروزه از شبکه‌های عصبی برای حل مسائل دشواری که حل آن‌ها با روش‌های معمول، دشوار می‌باشد، استفاده می‌شود. عموماً برای آموزش شبکه عصبی از روش‌های نظارت‌شده استفاده می‌شود. اما می‌توان شبکه‌ها را با روش‌های آموزش غیرنظارتی آموزش داد که کاربرد آن‌ها عموماً در تشخیص خوشه‌های داده‌ای می‌باشد. گونه‌های خاصی از شبکه‌های عصبی مثل هاپفیلد و شبکه‌های خطی به‌صورت مستقیم توسط کاربر، طراحی می‌شوند. به‌طور خلاصه می‌توان گفت روش‌های مختلفی برای طراحی تکنیک‌های یادگیری موجود می‌باشد و کاربرد در انتخاب روش دارای انتخاب‌های زیادی می‌باشد.

شبکه‌های عصبی مصنوعی دارای تاریخ 50 ساله می‌باشند. اما کاربرد آن‌ها در مسائل علمی به 15 سال گذشته برمی‌گردد و این زمینه هم‌اکنون به‌سرعت در حال پیشرفت می‌باشد. بنابراین تفاوت زیادی بین این علم با علومی مثل بهینه‌سازی، ریاضیات پایه که مشترکا سال‌های زیادی است که به‌صورت عملی دارای کاربرد می‌باشند، وجود دارد.

مدل نورون و معماری شبکه عصبی

در شکل سمت چپ مدل یک نورون با یک ورودی نمایش داده شدهاست. این نورون ساده از دو عنصر کلیدی تشکیل‌شده است : وزن،w ، و تابع انتقال،f.

2

شمای ساختار شبکه عصبی واجد المان بایاس (راست) و شبکه عصبی فاقد بایاس (چپ)

ورودی p، به نورون اعمال‌شده و با ضرب در وزن w، وزن‌دار می‌شود و حاصل‌ضرب به‌عنوان ورودی به تابع انتقال f اعمال‌شده و خروجی نهایی حاصل می‌گردد. با اضافه کردن بایاس، b، به ساختار نورون منفرد، نورونی واجد بایاس به‌مانند شکل سمت راست ایجاد می‌شود. ورودی بایاس یک مقدار ثابت 1 است. بایاس با حاصل w.p جمع می‌شود، درواقع تابع را به سمت چپ شیفت می‌دهد.

منظور از f، تابع انتقال می‌باشد. این تابع معمولاً یک تابه پلکانی و یا یک تابع سیگموید می‌باشد که آرگومان n را دریافت‌کرده و خروجی a را تولید می‌کند. با توجه به آنچه ذکر شد، می‌توان گفت نورون به‌صورت زیر محاسبه می‌شود:

3

به‌عنوان مثال در مورد p=2 ،w=3 و b=-1.5 داریم:

4

b و w دو پارمتر تنظیم شونده در نورون‌ها می‌باشند.

با مقایسه مدل ارائه‌شده با مدل نورون‌های زنده می‌توان اندازه وزنwرا متناظر باقدرت هر اتصال سیناپسی دانست. همچنین سیگما با بدنه سلول متناظر است و در نهایت تابع انتقال و خروجی a، متناظر با سیگنال خروجی نورون در آکسون می‌باشند.

  • ایده اصلی شبکه عصبی این است که با تغییر مقادیر b و w، شبکه یک رفتار یا تصمیم را اتخاذ کند.
  • بایاس یک پارامتر قابل تنظیم در نورن‌ها طی روال آموزش می‌باشد و نه یک ورودی.

 توابع انتقال

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

5

 توابع انتقال مورد استفاده در ساختار شبکه عصبی

نورون با یک بردار به عنوان ورودی

بردار ورودی p، با عناصر p_1,p_2,...,p_R و بردار وزنهای w_1,1 , w_1,2 , ... , w_1,R را با عناصر  در نظر گرفته میشود. به شکل زیر توجه شود:

6

نورون با یک بردار به‌عنوان ورودی

برای اعمال مقادیر وزن بر مقادیر ورودی، دو بردار p  وwرا در هم ضرب ماتریسی می‌کنیم. بنابراین ورودی تابع انتقالf  یعنی n به‌صورت زیر خواهد بود.

65

در نهایت مقدار بایاس به حاصل‌ضرب w و p اضافه شده‌است. نماد به کار گرفته شده برای نورون در شکل بالا بسیار پیچیده می‌باشد. تصور کنید قصد داشته باشیم یک شبکه با چندلایه و تعداد زیادی نورون را به این روش نمایش دهیم. در این صورت حاصل کار بسیار شلوغ و ناخوانا خواهد بود. برای رفع این مشکل و در جهت سهولت در نمایش نورون‌ها، یک‌لایه از نورون‌ها را به‌صورت زیر نمایش می‌دهیم:

7

شمای نمایش فشرده یک نورون

 معماری شبکه‌های عصبی

یک یا چند نورون در کنار هم یک‌لایه از شبکه را تشکیل میدهند. یک شبکه میتواند از یک یا چندلایه این چنینی تشکیل شود. در شکل زیر یک شبکه تک لایه با R ورودی و S نورون نشان دادهشده است :

8

شبکه عصبی تک لایه

در این شبکه، اعضای بردار ورودی p به همه نورونها اعمال میشوند و پس از ضرب در بردار وزنها و جمع با بایاس به تابع انتقال اعمال شده و خروجی حاصل میگردد. خروجی شبکه بالا یک بردار خواهد بود. توجه شود که هیچ لزومی ندارد تعداد ورودیها (R S) با تعداد نورونها برابر باشد. میتوان با استفاده از توابع انتقال متفاوت در یک شبکه تک لایه، یک شبکه تک لایه مرکب ساخت. در شبکه تک لایه بالا ماتریس وزنها (w) یک ماتریس با اندازه S*R خواهد بود. در این ماتریس W_n*m نماینده وزن مربوط به ورودی m روی نورون n میباشد.

9

ورودیها و لایهها

از آنجا که در ادامه درباره شبکه‌های چندلایه بحث خواهیم کرد، باید بتوانیم بین ماتریس‌های وزن مربوط به ورودی‌های نورون‌ها و ماتریس‌های وزن بین لایه‌ها تمایز قائل شویم. بنابراین باید مبدأ و مقصد ماتریس‌های وزن را تشخیص دهیم. به این دو نوع ماتریس Input weights و Layer weights (وزن‌های ورودی و وزن‌های لایه‌ای) می‌گوییم. ضمناً برای تشخیص مبدأ و مقصد وزن‌ها از بالانویس استفاده می‌کنیم. بنابراین تصویر یک شبکه یک‌لایه با S نورون و R ورودی به شکل زیر نمایش داده می‌شود:

10

شبکه عصبی یک‌لایه با  نورون و  ورودی

در این شکل IW_1*1، به معنی ماتریس وزنهای ورودی از مبدأ لایه 1 (عدد دوم) به مقصد لایه 1 (عدد اول) میباشد، علاوه بر آن S_1، نماینده تعداد نورونهای لایه اول و n_1، نماینده تعداد خروجیهای لایه اول میباشد. بنابراین در matlab  برای تولید n_1 (ورودی تابع انتقال لایه 1) میتوان از عبارت زیر استفاده کرد:

11

 

شبکه‌های عصبی چند لایه

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

12

شبکه عصبی سه لایه را همراه با اطلاعات تفکیک

شبکه نشان دادهشده در شکل بالا دارای تعداد R_1 ورودی و S_1 نورون در لایه اول و  نورون در لایه دوم و در نهایت  نورون در لایه سوم میباشد. همانطور که مشخص است یک شبکه میتواند دارای تعداد متفاوت نورون در لایههای مختلف خود باشد.

توجه شود که خروجی که خروجی هریک از لایه‌های میانی به‌عنوان ورودی لایه بعدی مورد استفاده قرار می‌گیرد. بنابراین لایه دوم از این شبکه به تنهایی می‌تواند یک شبکه تک لایه با S_1 ورودی (تعداد نورون‌های لایه اول) و  S_2نورون در نظر گرفت که دارای ماتریس وزن‌های W_2 با اندازه  S_2*S_1می‌باشد. ورودی لایه دوم a_1 (خروجی لایه اول) و خروجی آن  a_2 است. همین پارامترها را می‌توان به شکل مشابه برای لایه سوم نیز تعریف نمود. لایه‌های یک شبکه چندلایه وظایف متفاوتی دارند. لایه‌ای که خروجی شبکه را ایجاد می‌کند (لایه آخر) تحت عنوان لایه خروجی شناخته می‌شود. بقیه لایه‌ها تحت عنوان لایه‌های مخفی نام‌گذاری شده‌اند. شبکه سه لایه‌ای که در شکل قبل آورده شده، دارای یک‌لایه خروجی (لایه سوم) و دولایه مخفی یعنی لایه 1 و 2 می‌باشد. برخی از صاحب‌نظران ورودی‌ها را نیز در یک‌لایه در نظر گرفته و از شبکه مذکور تحت عنوان یک شبکه 4 لایه یاد می‌کنند.

شبکه‌های چندلایه بسیار قدرتمند هستند. به‌عنوان مثال یک شبکه دولایه، با تابع لایه اول Sigmoid و لایه دوم خطی (Linear) می‌تواند هر تابع دلخواهی را با تعداد محدود نقاط ناپیوستگی تخمین بزند. این نوع شبکه دولایه به شکل وسیع در شبکه‌های پس‌انتشار کاربرد دارد.

در اینجا با زیاد شدن پارامترهای طراحی، شاید طراحی یک شبکه کار بسیار دشواری به نظر برسد. اما این مشکل چندان هم غیرقابل حل نیست. زیرا، اولاً باید به یاد داشته باشیم که تعداد ورودیها و خروجیهای مطلوب شبکه با توجه به خصوصیات مسئله تعیین میشود. بنابراین اگر یک مسئله به‌عنوان مثال دارای 4 ورودی باشد، به طبع تعداد ورودیهای شبکه 4 خواهد بود. به همین ترتیب اگر تعداد خروجیهای مطلوب مسئله 7 باشد، شبکه در لایه خروجی خود دارای 7 نورون میباشد. در نهایت میتوان گفت، خصوصیات مطلوب سیگنال خروجی تعیین‌کننده نوع تابع انتقال لایه خروجی میباشند. بنابراین طراحی یک شبکه تک لایه وابسته به پارامترهای مسئله میباشد. اما این مطلب در رابطه با شبکههای چندلایه صدق نمیکند. زیرا نمیتوان با توجه به پارامترهای مسئله ، تعداد لایههای مخفی و همچنین تعداد نورون حاضر در هریک از لایههای مخفی را تعیین نمود. این مسئله یک مشکل بزرگ و موضوع بسیاری از تحقیقات علمی میباشد. در مورد تعداد لایهها میتوان گفت، اکثر شبکههای مورد استفاده 2 و 3 لایه میباشند و به‌ندرت از شبکههایی با 4 و یا تعداد لایههای بیشتر، استفاده میشود. استفاده از بایاس در شبکه دلخواه میباشد. اما باید گفت استفاده از بایاس با فراهمآوردن یک پارامتر بیشتر منجر به قویتر شدن شبکه میشود.

[1] Mohammad Asrardel, "Prediction of Combustion Dynamics in An Experimental Turbulent Swirl Stabilized Combustor with Secondary Fuel Injection", University of Tehran, 2015.

[2] R. Kohavi and G. John, "Wrappers for Feature Subset Selection," Artificial Intelligence, vol. 97, pp. 273-324, 1997.

مطالب مرتبط: رگرسیون با استفاده از شبکه عصبی پرسپترون چندلایه (پیش‌بینی)

تبلیغات AIcodeMahak

AIcode مرجع تخصصی آموزش مهندسی کامپیوتر و هوش مصنوعی

تماس با ما

ايميل: info@aicode.ir

عضویت در خبرنامه AIcode