مُدِرک یا پرسپترون یا perceptron چیست

مُدِرک به انگلیسی perceptron, یک واحد سازنده شبکه عصبی به انگلیسی neural network است که با تشکیل یک شبکه, و اشتراک نتایج معادلات خطی خود, بخشی از محاسبه مسئله را انجام می‌دهد؛ مُدرِک ها مُدِلی از neuron های مغز انسان هستند.

Perceptron vs neuron

هر perceptron مانند یک دروازه منطقی به انگلیسی logic gate عمل می‌کند, و با گرفتن چند ورودی ۱ یا چند خروجی تولید می‌کند.

اصلاح ورودی ها

اطلاعات ورودی به perceptron ها حتما باید مقادیری اسکالر باشند؛ به این منظور, پیش از اینکه اطلاعات به صورت خام وارد perceptron شوند, توسط توابع normalization و scaling اصلاح می‌شوند.

نرمال سازی

اطلاعاتی که ساختار غیر استانداردِ متنی یا برداری دارند, توسط تابع normalization, طبیعی سازی می‌شوند.

بازه سازی

داده های ورودیِ perceptron را اصولا سعی می‌کنند در یک بازه معین مثل بین [0, 1] یا [-1, 1] نگه دارند؛ به این عمل, scaling گفته می‌شود.

مرحله جمع

تابع جمع, به انگلیسی summation, پروسه اصلی عملکرد perceptron است؛ این تابع, درست به مانند یک معادله خط عمل می‌کند که ورودی ها در آن, متغیر های این تابع هستند, و برای هر ورودی, یک وزن یا ضریب در مدرک از پیش تعین شده.

تابع جمع, هر ورودی را در وزن آن ضرب می‌کند, و با یک متغیر گذر از مبدا به نام b جمع می‌کند.

$$ ({\Sigma_{i=1}^n} W_i.X_i) + b $$

نکته: n در معادله جمع perceptron تعداد ورودی ها می‌باشد.

توابع خطا

توابع خطا, به انگلیسی «loss function» یا «error function», میزان خطای رخ داده در پیش بینی را حساب می‌کنند.

Linear

خطای خطی, به صورت زیر است.

$$ loss = answer - prediction $$

Absolute Error

$$ loss = |answer - prediction| $$

Square Error

وقتی از درستی یک پاسخ با قطعیت مطمئن هستید, استفاده از SE موجب یادگیری سریعتر perceptron خواهد شد زیرا بزرگی خطاء به صورت exponential افزایش میابد.

$$ loss = (answer - prediction)^2 $$

Huber loss

if (AE <= δ) $(answer - prediction)^2$
else if (AE > δ) $|answer - prediction| - {1\over{2}}\delta$

هوبر لاس به انگلیسی «huber loss», یک تابع خطای مرکب است.

یادگیری مدرک

هدف از یادگیری, به ۰ رساندن خروجی تابع loss است.

Backpropagation

در یادگیری به شکل backpropagation, ما سعی می‌کنیم خطای پیش بینی مدرک را حساب کنیم, و وزن تک تک ورودی ها را, طی «gradient descent», به مقدار کم خطا تر نزدیک کنیم تا پیش بینی های بعدی, بدون خطا یا کم خطا شوند.

شیب یا gradient descent به صورت زیر حساب می‌شود

$$ weight = weight + (error\times input) $$

تابع یادگیری ابتدا سعی میکند label یا پاسخ feature ها یا ورودی های آموزشی خود را حدس بزند؛ اگر حدس مدرک غلط بود، تابع یادگیری باید وزن ورودی های خود را, به صورت زیر, به مقدار درست مایل و نزدیک کند, تا در مرحله جمع و حدس, یک label درست به داده ورودی نسبت داده شود.

$$ for(i = 0; i < weights.length; i++) weights[i] = weight[i] + (error\times input\times rate) $$

هر ورودی perceptron باید دارای یک وزن یا weight باشد؛ وزن ابتدایی یا به صورت تصادفی انتخاب می‌شود, و یا برابر با ورودی در نظر گرفته می‌شود.

نرخ یادگیری, به انگلیسی «learning rate», میزان تغیر وزن در هر پیش‌بینی یا انتخاب اشتباه را تعین می‌کند.

هرچه نرخ یادگیری بیشتر باشد, رسیدن به پاسخ تقریبی سریعتر است, ولی دقت کمتر؛ یکی از مقادیر رایج شتاب یادگیری ۱۰٪ می‌باشد؛ یعنی به اندازه ۱۰٪ خطا, مدرک باید به پاسخ صحیح مایل شود.

تشبیه: فرض کنید ماشینی رو به شمال درحال حرکت است, ولی مقصد در سمت شرق قرار دارد. خطای حرکت در این مثال ۹۰ درجه خواهد بود. اگر این بردار را ضرب در خطای آن و شتاب یادگیری کنیم, حرکت از شمال به سمت شرق مایل خواهد شد. بنابر این, هدف از ضرب ورودی در شیب یا خطا و شتاب یادگیری مایل کردن مقدار به مقدار درست است.

تابع فعال سازی

Activation Functions

هنگامی که مرحله جمع در مُدرِک به پایان رسید, داده ها به یک «تابع فعال سازی», به انگلیسی «activation function», داده می‌شوند تا خروجی perceptron را تعین کند یا تشکیل دهد.

تابع فعال ممکن است هر یک از توابع sign و step و sigmoid functions باشد.

Leaky ReLU

∑ wx >= 0 ? 1 : -1
∑ wx < 0 ? -1 : 1

Binary Step

تابع binary step, از نورون ها الهام گرفته شده, و سعی می‌کند یک خروجی binary از مرحله جمع مدرک تولید کند؛ این تابع به این صورت کار می‌کند که برسی می‌کند اگر نتایج بیش از 0 بود, جواب 1 یا on است, و در غیر این صورت 0 یا off.

این تابع, معمولاً, در مُدرک های شبکه های یک لایه‌ای, در مسائلی که با یک خط جدا می‌شوند برای classification کاربرد دارد.

∑ wx < 0 ? 0 : 1
∑ wx >= 0 ? 1 : 0

Linear

∑ wx

حل مسئله

هر perceptron یک معادله خطّ است, و تنها در دسته بندی داده هایی کاربرد دارد که با ۱ خط قابل جدا سازی هستند.

مثل دسته بندی نقاط بالای ۱ خط و نقاط پایین آن, یا دروازه های منطقی‌ای همچون AND و OR که با یک خط خروجی ها قابل جدا شدن هستند.

. T F
T 1 1
F 1 0

مثال فوق, truth table دروازه منطقی OR است؛ همانطور که مشاهده می‌شود, اگر نوعی بردار مختصات یا معادله خط برای دروازه منطقی OR رسم کنیم, جدا کردن ۰ ها از ۱ ها ممکن است. بنا بر این با ۱ مدرک قابل یادگیری است.

      T  F
T  | 1  1/
F  | 1 /0

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

پیوند ها

comments