مقدمه:
دانستن این که هوش مصنوعی چیست و یادگیری این که Machine Learning و Deep Learning چگونه آن را تقویت میکنند، تجربیات بسیار خوبی هستند. ما گروهی از مهندسان خودآموخته هستیم که این تجربیات را پشت سر گذاشتهایم و از طریق مطالبی که مینویسیم، دانستههای خود از این دانش و آنچه که در این مسیر به ما کمک کرده است را با زبانی ساده به اشتراک میگذاریم. تا هر کسی که در این زمینه تازهکار است، بتواند به راحتی نکات فنی این فناوری را بیاموزد. در این مطلب از این سلسله مطالب، شما با شبکه های Neural آشنا خواهید شد.
علاوه بر این، در طول این فرآیند، ما پلتفرمی ایجاد کردهایم که در آن هرکسی بدون نوشتن حتی یک خط کد، بتواند مدلهای Machine Learning و Deep Learning بسازد.

Neuron (Node)
نورون واحد اولیه یک شبکه Neural است که تعداد معینی ورودی و یک value bias دریافت میکند. هنگامی که یک سیگنال (value) میرسد،در یک weight value ضرب میشود. اگر یک neuron دارای 4 ورودی باشد، دارای 4 weight value است که در طول زمان تمرین قابل تنظیم است.


Connections
کانکشن یک neuron را در یک لایه به neuron دیگری در لایه دیگر یا همان لایه متصل میکند. یک connection همیشه دارای یک weight value مرتبط با آن است. هدف از تمرین، به روز رسانی این weight value برای کاهش loss یا error است.

Bias (Offset)
Bias یک ورودی اضافی به neuron ها است و مقدار آن همیشه برابر 1 است و connection weight خود را دارد. این ورودی اطمینان حاصل میکند که حتی در هنگامی که همه ورودیها none هستند، (همگی 0 اند) یک فعالسازی در neuron اتفاق بیفتد.
تابع فعالسازی (تابع انتقال)
توابع فعالسازی برای معرفی غیرخطی بودن شبکههای neural استفاده میشوند. این توابع value ها را در رینج کوچکتری خرد میکنند. یک تابع فعالسازی Sigmoid مقادیر بین 0 و 1 را خرد میکند. بسیاری از توابع فعالسازی در صنعت Deep Learning استفاده میشوند و ReLU ، SeLU و TanH بر تابع فعالسازی Sigmoid ترجیح داده میشوند. در این مقاله، من توابع فعالسازی مختلف موجود را توضیح دادهام.


لایه ورودی (Input Layer)
این اولین لایه در شبکه neural است. سیگنالهای ورودی (values) را میگیرد و آنها را به لایه بعدی منتقل میکند. هیچ عملیاتی را روی سیگنالهای ورودی (values) اعمال نمیکند و هیچ weight و bias value مرتبطی ندارد. ما در شبکه خود 4 سیگنال ورودی x1، x2، x3 و x4 داریم.
لایههای پنهان (Hidden Layers)
لایههای پنهان دارای neuron(node) هستند که تبدیلهای مختلفی را به دادههای ورودی اعمال میکنند. یک Hidden Layer مجموعهای از neuron ها است که به صورت عمودی روی هم چیده شده اند (Representation). در تصویر زیر، ما 5 لایه پنهان داریم. در شبکه ما، لایه پنهان اول دارای 4 neuron(node) ، دومی دارای 5 neuron ، سومی دارای 6 neuron ، چهارمی دارای 4 neuron و پنجمی دارای 3 neuron است. آخرین لایه پنهان، مقادیر را به لایه خروجی (output layer) منتقل میکند. تمام neuron های یک لایه پنهان به هر یک از neuron های لایه بعدی متصل هستند. از این رو، ما یک لایه پنهان کاملاً connected داریم.
لایه خروجی (Output Layer)
این لایه، آخرین لایه در شبکه است و ورودی آخرین لایه پنهان را دریافت میکند. با استفاده از این لایه میتوانیم تعداد value های دلخواه و در محدوده دلخواه را به دست بیاوریم. در این شبکه، 3 neuron در لایه خروجی داریم که y1 ، y2 و y3 را خروجی میدهند.
Input Shape
Input Shape شکل matrix ورودی است که به لایه ورودی منتقل میکنیم. لایه ورودی شبکه ما دارای 4 neuron است و از 1 نمونه انتظار 4 value دارد. اگر هر بار نمونه آن را تغذیه کنیم، Input Shape مورد نظر برای شبکه ما (1, 4, 1) است. اگر 100 نمونه را تغذیه کنیم، Input Shape برابر (100, 4, 1) خواهد بود. کتابخانههای مختلف انتظار shape هایی در فرمتهای مختلف را دارند.
Weights (Parameters)
یک weight نشاندهنده قدرت connection بین واحدها است. اگر weight از node 1 تا node 2 ، اندازه بزرگتری داشته باشد، به این معنی است که neuron 1 تأثیر بیشتری بر neuron 2 دارد. weight اهمیت مقدار ورودی را کاهش میدهد. weight های نزدیک به صفر به این معنی هستند که تغییر این ورودی باعث تغییر در خروجی نمیشود. weight های منفی یعنی افزایش این ورودی باعث کاهش خروجی میشود. به طور کلی weight تعیین میکند که ورودی چقدر بر خروجی تأثیر بگذارد.

Forward Propagation
Forward Propagation فرآیندی است که برای تغذیه مقادیر (values) ورودی به شبکه neural و دریافت خروجی که آن را predicted value مینامیم. گاهی اوقات Forward Propagation را اینگونه استنباط میکنیم: وقتی مقادیر ورودی را به لایه اول شبکه neural وارد میکنیم، این بدون هیچ عملیاتی انجام میشود. لایه دوم مقادیر را از لایه اول میگیرد و عملیات ضرب، جمع و فعالسازی را اعمال و مقدار (value) حاصل را به لایه بعدی منتقل میکند. همین روند برای لایههای بعدی تکرار میشود و در نهایت از لایه آخر، یک مقدار خروجی (output value) میگیریم.

Backward Propagation
پس از Forward Propagation ، یک مقدار خروجی (output value) دریافت میکنیم که همان predicted value است. برای محاسبه خطا، predicted value را با output value واقعی مقایسه میکنیم. برای محاسبه مقدار خطا (error value) ، از یک loss function (که در ادامه ذکر شده است) استفاده میکنیم. سپس مشتق error value را با توجه به هر weight در شبکه neural محاسبه میکنیم. Back-Propagation از قاعده مشتق زنجیرهای حساب دیفرانسیل استفاده میکند. در این فاعده، ابتدا مشتقات error value را با توجه weight value های آخرین لایه محاسبه میکنیم. ما این مشتقات را گرادیان مینامیم و از این مقادیر گرادیان برای محاسبه گرادیان لایه دوم استفاده میکنیم. ما این فرآیند را تکرار میکنیم تا زمانی که برای هر weight در شبکه neural خود گرادیان دریافت کنیم. سپس این مقدار گرادیان (gradient value) را از weight value کم میکنیم تا error value کاهش یابد. به این ترتیب ما به Local Minima (به معنی حداقل ضرر) نزدیکتر (descent) میشویم.

Learning rate
وقتی شبکههای neural را آموزش میدهیم، معمولاً برای optimize کردن weight ها از Gradient Descent (کاهش گرادیان) استفاده میکنیم. در هر تکرار (iteration) برای محاسبه مشتق loss function با توجه به هر weight و کم کردن از آن weight از Back-Propagation استفاده میکنیم. Learning rate تعیین میکند که چقدر سریع یا چقدر آهسته میخواهید weight(parameter) value های خود را آپدیت کنید. Learning rate بایدبه اندازهای بالا باشد که برای همگرایی (converge) نیاز به سالها زمان نداشته باشد و باید به اندازهای پایین باشد که Local Minima را پیدا کند.

دقت (Accuracy)
به نزدیک بودن یک value اندازه گیری شده به یک value استاندارد یا شناختهشده اشاره دارد.
معیار صحت (Precision)
Precision به نزدیکی دو یا چند معیار سنجش به یکدیگر اشاره دارد. به عبارتی دیگر تکرارپذیری یا بازتولیدپذیری معیار سنجش یا اندازهگیری است.
بازیابی (Recall(Sensitivity))
Recall به کسری از نمونههای مربوطه اشاره دارد که در مجموع تعداد نمونههای مربوطه بازیابی شدهاند.

Confusion Matrix
به نقل از ویکیپدیا: در زمینه Machine Learning و به طور خاص مشکل طبقهبندی آماری (statistical classification) ، یک Confusion Matrix که به عنوان error matrix نیز شناخته میشود، یک layout جدول خاص است که امکان شبیهسازی عملکرد یک الگوریتم ، و معمولاً یک الگوریتم یادگیری نظارت شده را فراهم میکند. (در یادگیری بدون نظارت به آن matching matrix میگویند). هر ردیف از ماتریسهای نمونه یک کلاس predicted (پیشبینی شده) را نشان میدهد (یا برعکس). این نام از این واقعیت ناشی میشود که تشخیص اینکه آیا سیستم دو کلاس را اشتباه میگیرد یا نه، آسان میشود. (یعنی معمولاً یکی را به اشتباه برچسبگذاری میکند).

همگرایی (Convergence)
همگرایی زمانی اتفاق میافتد که با ادامه تکرارها، خروجی به یک value خاص نزدیک و نزدیکتر میشود.
منظمسازی (Regularization)
منظمسازی برای غلبه بر مشکل تناسب بیش از حد استفاده میشود. در منظمسازی، loss term خود را با افزودن یک نُرمِ L1 (LASSO) یا یک _L_2(Ridge) بر روی weight vector w جریمه میکنیم. (این vector پارامترهای آموختهشده در الگوریتم دادهشده است).
L(Loss function) + λN(w)
در اینجا λ همان regularization term (عبارت منظمسازی) شماست و N(w) نُرم L1 یا L2 است.
عادیسازی (Normalisation)
Normalisation دادهها فرآیند تغییر مقیاس یک یا چند ویژگی در محدوده 0 تا 1 است. این تکنیک، تکنیک خوبی برای استفاده در مواقعی است که distribution دادههایتان را نمیدانید یا میدانید که از نوع گاوسی نیست. (یک نشانه). پس بهتر است که پروسه یادگیری را سرعت ببخشید.
لایههای کاملاً متصل (Fully Connected Layers)
زمانیست که فعالسازی تمام node ها در یک لایه به هر node در لایه بعدی میرود. هنگای که تمام node های لایه L به تمام node های لایه (L+1) وصل میشوند، این لایهها را لایههای کاملاً متصل مینامیم.

Loss Function/Cost Function
Loss Function محاسبهکننده error برای یک مثال آموزشی است. Cost Function میانگین Loss Function های کل مجموعه آموزشی است.
‘mse’ : برای میانگین مربعات error
‘binary_crossentropy’ : برای multi-class logarithmic loss یا logloss
بهینهسازهای مدل (Model Optimizers)
Optimizer یک تکنیک جستجو است که برای بهروزرسانی weight ها در مدل استفاده میشود.
SGD : نزول Gradient Descent با پشتیبانی برای momentum
RMSprop : روش بهینهسازی نرخ یادگیری تطبیقی (Adaptive learning rate) که توسط جف هینتون پیشنهاد شده است.
Adam : برآورد لحظهای تطبیقی (Adam) که از نرخ یادگیری تطبیقی نیز استفاده میکند.
معیارهای عملکرد (Performance Metrics)
معیارهای عملکرد برای اندازهگیری میزان عملکرد شبکه neural استفاده میشود. Accuracy ، loss ، validation accuracy ، validation loss ، میانگین خطای مطلق (mean absolute error) ، precision ، recall و امتیاز f1 (f1 score) برخی از معیارهای عملکرد هستند.
Batch Size
به تعداد نمونههای تمرینی در یک forward/backward pass گفته میشود. هر چه Batch Size بیشتر باشد، به فضای حافظه بیشتری نیاز خواهید داشت.
Training Epochs
تعداد دفعاتی است که مدل در معرض مجموعه دادههای آموزشی قرار میگیرد.
Epoch
یک forward pass و یک backward pass از تمام نمونههای تمرینی.

سخن پایانی
در Mate Labs ما یک متاورس ساختهایم، یک پلتفرم Machine Learning که در آن میتوانید مدلهای یادگیری ماشین شخصیسازی شده خود را در عرض چند دقیقه و بدون نوشتن حتی یک خط کد بسازید. پلتفرم ما باعث میشود که همه بتوانند به راحتی مدلهای Machine Learning را بدون نوشتن هیچ کدی بسازند و آموزش دهند.
منبع: hackernoon نویسنده: Mate Labs
Leave feedback about this