الگوریتم mlp

شبکه‌های عصبی پرسپترون چند لایه

شبکه عصبی پرسپترون چند لایه، دسته‌ای از شبکه‌های عصبی مصنوعی پیشخور محسوب می‌شوند.

در این نوشته به بررسی “الگوریتم mlp” می پردازیم.

 

الگوریتم mlp
الگوریتم mlp

الگوریتم mlp

در یک شبکه عصبی پرسپترون چند لایه، حداقل سه لایه  از نودها وجود خواهند داشت:
  • یک لایه ورودی (Input Layer)
  • یک لایه نهان (Hidden Layer)
  • یک لایه خروجی (Output layer)

نودهای شبکه عصبی که به آن‌ها (Neuron) گفته می‌شود، واحدهای محاسباتی در یک شبکه عصبی محسوب می‌شوند.

در این شبکه عصبی، از خروجی‌های لایه اول (ورودی)، به عنوان ورودی‌های لایه بعدی (نهان) استفاده می‌شود.

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

به لایه‌هایی که بین لایه ورودی و لایه خروجی قرار می‌گیرند، لایه‌های نهان (Hidden Layers) گفته می‌شود.

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

الگوریتم mlp

الگوریتم پیشخور چیست؟

نخستین بخش در پیاده‌سازی یک شبکه عصبی پرسپترون چند لایه، توسعه الگوریتم پیشخور است.

الگوریتم پیشخور، فرآیندی را کنترل می‌کند که در نتیجه آ ورودی‌های مسأله به یک خروجی تبدیل می‌شوند.

با این حال، فرآیند پیشخور در شبکه پرسپترون چند لایه، به سادگی شبکه‌های پرسپترون تک لایه نیست.

در فرآیند پیشخور در شبکه پرسپترون چند لایه، عملیات تعریف شده در الگوریتم، در تمامی لایه‌های تعریف شده در شبکه انجام می‌شود.

در این فرایند، خروجی هر لایه به عنوان ورودی لایه بعدی تعریف می‌شود.

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

این فرایند، تا زمانی ادامه پیدا می‌کند که خروجی لایه آخر شبکه (لایه خروجی) تولید شود.

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

forallfeaturesofInput:(I1,I2,….,In)

yi=function(∑i=1nwijIi+Biasi)=function(WTI+Biasi)

function(WTI+Bias)=tanh⁡(WTI+Bias)or

 

با استفاده از عملیات ماتریسی بسته نرم‌افزاری numpy در پایتون، می‌توان مرحله پیشخور در یک شبکه عصبی پرسپترون چند لایه را به صورت زیر پیاده‌سازی کرد.

الگوریتم mlp پس انتشار خطا

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

این بخش، مهم‌ترین بخش الگوریتم پس انتشار در آموزش شبکه عصبی پرسپترون چند لایه محسوب می‌شود.

مراحل یادگیری با استفاده از الگوریتم پس انتشار خطا در شبکه عصبی پرسپترون چند لایه به شرح زیر است:
  • با فرض داشتن تعداد J نود لایه نهان و یک نمونه ورودی با تعداد n ویژگی در یک شبکه عصبی پرسپترون چند لایه، خروجی نودهای لایه آخر (لایه خروجی)، از طریق رابطه زیر مشخص می‌شوند.در این رابطه، yi، خروجی نود iاُم هر کدام از لایه‌های نهان را نشان می‌دهد.

yi=f(∑j=1Jwjiyj)

  • در مرحله بعد، با توجه به مقادیر خروجی مورد انتظار و خروجی پیش‌بینی شده برای هر کدام از نودهای لایه خروجی (i)، مقدار «دلتا» (Delta) برای هر کدام از نودها، توسط رابطه زیر محاسبه می‌شود.
    در این رابطه، yexpectedi خروجی مورد انتظار نود i در لایه خروجی و ypredictedi، خروجی پیش‌بینی شده توسط نود i در لایه خروجی است.

δi=(ypredictedi–yexpectedi)⋅(yexpectedi)⋅(1–yexpectedi)

  • برای هر کدام از نودهای لایه نهان (j)، مقدار دلتا از طریق رابطه زیر محاسبه می‌شود.

δj=(Oj)(1–Oj)∑iwjiδi

  • برای تنظیم کردن وزن‌های تمامی نودها در شبکه عصبی پرسپترون چند لایه، از روش «گرادیان کاهشی» (Gradient Descent) استفاده می‌شود.
    در این روش، وزن‌های تمامی نودها از طریق رابطه عمومی زیر تنظیم می‌شوند.

Δwij=ηδjyn

  • به طور خاص، برای تنظیم وزن نود j از لایه نهان (از نود n لایه ورودی به سمت نود j لایه نهان)، از رابطه زیر استفاده می‌شود.
    در این رابطه، xn مقدار نود n لایه ورودی را نشان می‌دهد.

Δwnj=ηδjxn

  • همچنین، برای تنظیم وزن نود i از لایه خروجی (از نود j لایه نهان به سمت نود i لایه خروجی)، از رابطه زیر استفاده می‌شود.
    در این رابطه، Oj مقدار خروجی نود j لایه نهان را نشان می‌دهد.

Δwji=ηδiOj

در روابط نمایش داده شده، η نرخ یادگیری شبکه عصبی پرسپترون چند لایه است؛

اَبَرپارامتری که برای تنظیم نرخ تغییرات وزن‌های شبکه عصبی مورد استفاده قرار می‌گیرد، معمولا در ابتدای کار شبکه عصبی پرسپترون چند لایه، مقدار کوچکی برای این اَبَرپارامتر در نظر گرفته می‌شود.

با این حال، توصیه می‌شود که در طی فرایند یادگیری و با افزایش تعداد تکرارهای این شبکه، به تدریج مقدار این اَبَرپارامتر افزایش پیدا کند.

از کدهای زیر، برای پیاده‌سازی الگوریتم پس انتشار خطا در شبکه عصبی پرسپترون چند لایه استفاده می‌شود.

 

نظرات خود را در ارتباط با مقاله ی آموزشی “الگوریتم mlp” بنویسید.

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

موفق باشید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]
با دوستانتان به اشتراک بگذارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code