۲۰ اصطلاح فنی یادگیری عمیق که باید بدانید

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

پس بیایید اصطلاحات یادگیری عمیق را شروع کنیم.

آشنایی با اصطلاحات یادگیری عمیق

مقدمه ای بر اصطلاحات یادگیری عمیق

۱- شبکه عصبی

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

۲- لایه ورودی / لایه خروجی / لایه پنهان

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

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

۳- نورون

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

نورون های شبکه عصبی

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

۴- وزن ها

به محض ورود ورودی به نورون ، باید آن را در یک وزن ضرب کنیم.

برای مثال:

اگر در صورتی که یک نورون دو ورودی داشته باشد ، باید به هر ورودی یک وزن مرتبط اختصاص دهیم. علاوه بر این ، ما باید وزن ها را به طور تصادفی مقداردهی اولیه کنیم تا این وزن ها در طی مراحل آموزش مدل، بروزرسانی شوند. پس از شروع فرایند یادگیری، شبکه‌ی عصبی به ورودی هایی که از نظرش مهمتر هستند، وزن بیشتری را اختصاص می دهد. بیایید فرض کنیم که a ورودی و وزن اختصاص داده شده به آن W1 است. در این صورت ورودی پس از عبور از گره به a*W1 تبدیل می شود.

ورن نورون های شبکه عصبی

۵- بایاس

ما باید علاوه بر وزن ، یک مولفه خطی دیگر بنام بایاس به ورودی اضافه کنیم. بایاس به حاصل ضرب وزن در ورودی اضافه می شود. درواقع به مقدار اضافه می شود تا محدوده ی مقدار حاصل شده از ضرب وزن در ورودی را تغییر دهد. به محض اضافه شدن بایاس ، مقدار ما به a * W1+ bias تغییر پیدا می کند. لذا این یک جز خطی از تبدیل ورودی است.

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

تابع فعال سازی شبکه عصبی

به محض این که مولفه خطی را به ورودی اعمال کردیم، یک تابع غیرخطی روی آن اعمال می شود. این کار با استفاده از تابع فعالسازی روی ترکیب خطی انجام می شود. از این رو ، این سیگنال های ورودی را به سیگنال های خروجی تبدیل می کند.

خروجی پس از اعمال تابع فعالسازی چیزی شبیه f (a * W1 + b) است که () f تابع فعالسازی است.

در نمودار زیر n ورودی داریم که به صورت X1 تا Xn هستند و وزن متناظر Wk1 تا Wkn داده شده است. ما بایاسی به نام bk داریم. ابتدا باید وزن ها را با ورودی های مربوطه ضرب کنیم، سپس بایاس را به حاصل اضافه کنیم تا به u برسیم.

u = w * x + b

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

۷- گرادیان نزولی

ما از گرادیان نزولی ( Gradient Descent ) به عنوان الگوریتم بهینه سازی برای به حداقل رساندن هزینه استفاده می کنیم.

از نظر ریاضی ، برای پیدا کردن حداقل محلی یک تابع ، باید گام هایی متناسب با منفی گرادیان تابع طی شود.

گرادیان نزولی

۸- نرخ یادگیری

نرخ یادگیری شبکه عصبی

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

۹- پس انتشار ( Backpropagation )

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

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

۱۰- دسته ها ( Batch )

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

۱۱- دوره ها ( epoch )

می توانیم آن را به عنوان یک تکرار آموزشی واحد تعریف کنیم. یک دوره ، به یک تکثیر رفت و برگشت در شبکه اشاره دارد. این به این معنی است که یک دوره ، یک نشر رو به جلو و پس انتشار کل داده های ورودی است.

۱۲- پرسپترون چند لایه ( MLP )

ما نمی توانیم مسائل بسیار پیچیده را با یک نورون انجام دهیم. بنابراین، برای ایجاد خروجی های مورد نظر از پشته های نورون استفاده می کنیم. در یک شبکه ساده، یک لایه ورودی ، یک لایه پنهان ، و یک لایه خروجی خواهیم داشت که هر لایه دارای چندین نورون است. همچنین در هر لایه، تمام نورون ها به همه نورون های لایه بعدی متصل هستند. به این شبکه ها شبکه های کاملاً متصل ( fully connected networks ) می گویند.

پرسپترون چند لایه

۱۳- نورون بازگشتی

نورون بازگشتی

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

۱۴- شبکه عصبی بازگشتی ( RNN )

شبکه‌های عصبی بازگشتی ( Recurrent Neural Network ) برای داده های ترتیبی استفاده می شوند که در آن ها از خروجی قبلی، برای پیش‌بینی خروجی بعدی استفاده می شود. همچنین، در این حالت، حلقه ها دارای یک شبکه در درون خود هستند. در یک نورون پنهان ، حلقه ها قابلیت ذخیره اطلاعات را دارند. زیرا عبارات قبلی را ذخیره می کنند تا خروجی را پیش بینی کنند. خروجی لایه‌ی پنهان مجدداً t بار به لایه ی پنهان ارسال می شود. این حالت تصویری شبیه به تصویر بالا است. خروجی یک نورون بازگشتی تنها زمانی به لایه ی بعدی ارسال می شود که تعداد تکرار آن تمام شده باشد. در این حالت، خروجی تعمیم بیشتری دارد و اطلاعات قبلی برای مدت بیشتری نگهداری می شوند.

در نهایت، خطاها براساس این بازگشت ها پس انتشار می یابند تا وزن ها را بروزرسانی کنند. از این رو، به این روش پس انتشار در طول زمان ( BPTT ) می گویند.

۱۵- مسئله محو شدگی گرادیان ( Vanishing Gradient )

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

ما از تابع فعالسازی مانند ReLu که گرادیان کمی ندارد برای حل مسائل استفاده می کنیم.

۱۶- مسئله انفجار گرادیان ( Exploding Gradient )

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

۱۷- Pooling

این یکی از اصطلاحات مهم یادگیری عمیق است. می توانیم لایه های Pooling  ( جمع آوری ) را در بین لایه های کانولوشن قرار دهیم. اصولاً از این مورد برای کاهش تعداد پارامترها و جلوگیری از بیش برازش ( Overfitting ) استفاده می شود. بیشترین نوع استفاده شده از Pooling، استفاده از لایه‌ی pooling با فیلتر ۲ در ۲ و عملگر MAX است. علاوه بر این، نحوه ی کار آن به این صورت است که بیشترین عدد هر ماتریس ۴ * ۴ از تصویر اصلی را می گیرد و در خروجی قرار می دهد.

لایه پولینگ

۱۸- لایه گذاری (Padding)

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

پدینگ شبکه عصبی

۱۹- داده افزایی ( Data Augmentation )

داده افزایی ، به اضافه کردن داده های جدید که از داده های دریافتی حاصل شده است، اشاره دارد و ممکن است برای پیش بینی ها مفید باشد.

برای مثال:

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

داده افزایی عدد 9

۲۰- Softmax

ما برای حل مسائل کلاسه بندی از تابع فعالساز softmax که شبیه به تابع سیگموئید است در لایه خروجی استفاده می کنیم. با این تفاوت که خروجی ها طوری نرمال می شوند که مجموع آن ها  برابر عدد یک باشد.

تابع سیگموئید در صورت داشتن یک خروجی دودویی ( Binary ) کار می کند. اما در مواقعی که یک مسئله کلاسه بندی چند کلاسه داشته باشیم، softmax اختصاص مقادیر به هر کلاس را بسیار آسان می کند. همچنین، می توان نتایج را به صورت احتمالاتی تعبیر کرد.

این روش بسیار ساده است – فرض کنید شما سعی دارید یک عدد ۶ انگلیسی را که ممکن است کمی شبیه به عدد ۸ باشد، شناسایی کنید. این تابع مقادیر مربوط به هر عدد را همانند تصویر زیر تعیین می کند. در نهایت، به سادگی می توانیم ببینیم که بالاترین احتمال به عدد ۶ اختصاص داده می شود و بالاترین احتمال بعدی عدد ۸  است و الی آخر.

احتمال شبکه عصبی بر اساس Softmax

بدین ترتیب ، همه این اصطلاحات از مهم ترین اصطلاحات یادگیری عمیق بود. امیدوارم توضیحات ما را بپسندید.

نتیجه گیری

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

بیشتر بخوانید :

منبع Data Flair

درباره‌ی امیر اقتدائی

همچنین ببینید

شبکه های بازگشتی

آشنایی با شبکه های عصبی بازگشتی (RNNs)

این مقاله به طور کامل شبکه های بازگشتی ، نحوه عملکرد حافظه آن ها و …

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

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