نورون در شبکه عصبی یک واحد محاسباتی است که بهطور مشابه با نورونهای بیولوژیکی در مغز انسان عمل میکند.
هر نورون در شبکه عصبی وظیفه دریافت اطلاعات از نورونهای قبلی، پردازش این اطلاعات و ارسال نتیجه به نورونهای بعدی را بر عهده دارد.
در این فرایند، اطلاعات بهصورت عددی و از طریق وزنهای مختلف به نورون وارد میشود.
این وزنها میزان اهمیت هر ورودی را تعیین میکنند.
هر نورون شامل ورودی ها, وزن ها, توابع جمع, توابع فعالسازی و خروجی هستند.
نورون در شبکه عصبی چیست؟
نورونها در شبکه عصبی بهطور تجمعی اطلاعات را پردازش کرده و مدل یادگیری را قادر میسازند تا به تدریج ویژگیهای پیچیدهتری را شناسایی کرده و پیشبینیهای دقیقی انجام دهد.
ورودیها (Inputs)
ورودیها اطلاعاتی هستند که نورون از منابع مختلف دریافت میکند.
این ورودیها ممکن است شامل دادههایی مانند ویژگیهای تصویر (برای مثال پیکسلها)، ویژگیهای متنی (مثل کلمات) یا دادههای عددی باشند.
در شبکههای عصبی، این ورودیها معمولاً از نورونهای قبلی در لایههای مختلف شبکه یا دادههای ورودی اولیه به شبکه میآیند.
وزنها (Weights)
در یک نورون، هر ورودی با یک عدد به نام وزن ضرب میشود.
وزنها اهمیت یا تأثیر هر ورودی را تعیین میکنند.
به عبارت سادهتر، وزنها نشان میدهند که یک ورودی چقدر برای نورون مهم است.
به عنوان مثال، اگر وزن یک ورودی خیلی بزرگ باشد، این ورودی تأثیر زیادی در تصمیمگیری نورون خواهد داشت و بالعکس اگر وزن آن کم باشد، ورودی تأثیر کمتری خواهد داشت.
وزنها معمولاً در طول فرآیند آموزش شبکه عصبی تغییر میکنند تا شبکه بهترین نتیجه را بدست آورد.
اهمیت وزنها در شبکه عصبی بهطور خودکار و از طریق فرآیند آموزش تعیین میشود.
در واقع، شبکه عصبی بهطور خودکار یاد میگیرد که کدام ویژگیها یا ورودیها برای پیشبینی نهایی مهمتر هستند و این را با تنظیم وزنها در طول زمان انجام میدهد.
این فرآیند از طریق روشهایی مانند پیشخور (Forward Propagation) و پسخور (Backpropagation) انجام میشود.
در اینجا توضیح میدهیم که این فرآیند چگونه کار میکند:
پیشخور (Forward Propagation)
در مرحله پیشخور، ورودیها از لایههای مختلف عبور کرده و از طریق نورونها پردازش میشوند تا به خروجی نهایی برسند.
در این مرحله، وزنها بهطور تصادفی یا اولیه تنظیم میشوند.
خروجی پیشبینیشده (در صورت وجود خطا) با خروجی واقعی مقایسه میشود.
محاسبه خطا (Loss Calculation)
پس از پیشبینی خروجی، یک تابع خطا (Loss Function) محاسبه میشود که نشاندهنده تفاوت میان پیشبینی مدل و نتیجه واقعی است.
این تابع معمولاً اختلاف بین پیشبینی مدل و پاسخ صحیح را اندازهگیری میکند.
بهعنوان مثال، در مسائل رگرسیونی معمولاً از خطای مربعات متوسط (Mean Squared Error) استفاده میشود.
پسخور (Backpropagation)
در این مرحله، فرآیند پسخور شروع میشود.
در این فرآیند، شبکه عصبی بهطور معکوس خطا را از لایه خروجی به لایههای قبلی منتقل میکند تا مشخص کند که چگونه وزنها باید تغییر کنند.
محاسبه گرادیان: برای هر وزن، گرادیان آن محاسبه میشود.
گرادیان نشاندهنده میزان تغییر در تابع خطا به ازای تغییر وزن است.
اگر گرادیان یک وزن بزرگ باشد، به این معنی است که این وزن تأثیر زیادی بر روی خطا دارد و بنابراین باید بیشتر تغییر کند.
تنظیم وزنها: وزنها بهطور خودکار بر اساس گرادیان محاسبهشده تنظیم میشوند تا خطا کاهش یابد.
این تنظیم معمولاً با استفاده از یک روش به نام گرادیان کاهشی (Gradient Descent) انجام میشود.
در این روش، وزنها بهاندازهای تغییر میکنند که خطا کاهش یابد.
آموزش مکرر
این فرآیند (پیشخور، محاسبه خطا، پسخور و تنظیم وزنها) بهطور مکرر تکرار میشود، بهطوریکه شبکه عصبی به تدریج وزنها را بهینه میکند.
پس از تکرار زیاد، وزنها به مقادیری میرسند که بهترین پیشبینیها را با کمترین خطا فراهم کنند.
مفهوم “اهمیت وزنها”
در واقع، اهمیت هر وزن از طریق مقدار گرادیان آن محاسبه میشود.
اگر یک وزن گرادیان بزرگی داشته باشد، به این معنی است که این ورودی خاص نقش مهمی در کاهش یا افزایش خطا ایفا میکند و باید تغییرات زیادی در آن وزن اعمال شود.
در نتیجه، اهمیت بیشتری برای آن وزن قائل میشویم.
بهطور خلاصه:
وزنها در ابتدا بهطور تصادفی تنظیم میشوند.
در طول آموزش، شبکه عصبی بهطور خودکار یاد میگیرد که کدام ورودیها (و وزنهای مربوط به آنها) برای کاهش خطا و بهبود پیشبینی مهمتر هستند.
گرادیان هر وزن نشاندهنده اهمیت آن است.
اگر گرادیان بزرگ باشد، وزن اهمیت بیشتری دارد و باید بهطور قابلتوجهی تغییر کند.
این فرآیند از طریق پسخور و الگوریتمهایی مثل گرادیان کاهشی انجام میشود.
در نهایت، این فرآیند به شبکه کمک میکند تا یاد بگیرد کدام ویژگیها (ورودیها) بیشتر تأثیرگذار هستند و بهاینترتیب، وزنها بهطور بهینه تنظیم میشوند.
تابع جمع (Summation)
پس از آن که هر ورودی به وزن مربوطه ضرب شد، این مقادیر حاصل جمع میشوند.
به عبارت دیگر، هر ورودی که وارد نورون میشود، پس از ضرب در وزن خود، با سایر ورودیها جمع میشود تا مقدار نهایی بهدست آید که نمایانگر تمام ورودیهای آن نورون است.
تابع فعالسازی (Activation Function)
مقدار جمعشده در مرحله قبل به تابعی به نام تابع فعالسازی وارد میشود.
هدف این تابع این است که تصمیم بگیرد نورون فعال شود یا نه، یعنی خروجی نورون چه مقداری باشد.
تابع فعالسازی معمولاً یک عدد را به یک مقدار دیگر تبدیل میکند.
در حالت ساده، تابع فعالسازی مانند یک سوئیچ عمل میکند که اگر مجموع ورودیها از یک حد معین بیشتر شود، نورون فعال میشود و یک خروجی مثبت میدهد، و اگر کمتر شود، خروجی منفی یا صفر میدهد.
مثالهایی از توابع فعالسازی:
سیگموئید (Sigmoid): مقداری بین 0 و 1 تولید میکند.
ReLU (Rectified Linear Unit): اگر مقدار ورودی مثبت باشد، همان مقدار را برمیگرداند و اگر منفی باشد، صفر برمیگرداند.
Tanh (Hyperbolic Tangent): مقداری بین -1 و 1 تولید میکند.
تابع فعالسازی به نورون کمک میکند تا پیچیدگیهای بیشتری را یاد بگیرد و بهطور غیرخطی به دادهها واکنش نشان دهد.
خروجی (Output)
در نهایت، پس از اعمال تابع فعالسازی، نورون یک خروجی به سایر نورونها ارسال میکند یا در صورتی که این نورون در لایه خروجی شبکه باشد، نتیجه نهایی یا پیشبینی مدل را بهعنوان خروجی تولید میکند.
در یک شبکه عصبی پیچیدهتر، نورونها در لایههای مختلف قرار دارند.
نورونهای لایه اول ورودیها را دریافت میکنند، نورونهای لایههای بعدی از خروجیهای لایههای قبلی استفاده کرده و اطلاعات پیچیدهتری را استخراج میکنند تا در نهایت شبکه بتواند پیشبینی دقیقی داشته باشد.