شبکه‌های عصبی خطی

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

شبکه‌های عصبی خطی
شبکه‌های عصبی خطی

 

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

۱. شبکه‌های عصبی خطی برای رگرسیون

(Linear Neural Networks for Regression)

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

 شبکه‌های عصبی خطی برای رگرسیون
شبکه‌های عصبی خطی برای رگرسیون

نحوه کار:

  • لایه ورودی: ورودی‌ها شامل ویژگی‌های داده (مانند اندازه خانه، تعداد اتاق‌ها) هستند.
  • وزن‌ها: هر ویژگی ورودی در یک وزن ضرب می‌شود. این وزن‌ها مشخص می‌کنند که هر ویژگی چقدر در پیش‌بینی نهایی تأثیر دارد.
  • بایاس: یک مقدار ثابت که به مجموع خطی ورودی‌ها و وزن‌ها اضافه می‌شود.
  • خروجی: مجموع وزنی ورودی‌ها به علاوه‌ی بایاس پیش‌بینی را تولید می‌کند. چون مسئله رگرسیون است، خروجی یک مقدار پیوسته خواهد بود.

از دید ریاضی:

از دید ریاضی
از دید ریاضی

تابع زیان:

میانگین مربع خطا (MSE): رایج‌ترین تابع زیان برای رگرسیون است که میانگین مربع اختلاف بین مقادیر پیش‌بینی‌شده و واقعی را اندازه‌گیری می‌کند.

تابع زیان:

مثال:

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

۲. شبکه‌های عصبی خطی برای طبقه‌بندی

(Linear Neural Networks for Classification)

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

 شبکه‌های عصبی خطی برای طبقه‌بندی
شبکه‌های عصبی خطی برای طبقه‌بندی

نحوه کار:

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

تفاوت‌های کلیدی

  1. نوع خروجی:
    • رگرسیون: یک مقدار پیوسته را خروجی می‌دهد (مثلاً پیش‌بینی یک عدد).
    • طبقه‌بندی: یک مقدار دسته‌ای را خروجی می‌دهد (مثلاً پیش‌بینی یک برچسب مانند "گربه" یا "سگ").
  2. تابع زیان (Loss Function):
    • رگرسیون: از توابع زیان مانند میانگین مربعات خطا (MSE) استفاده می‌کند که میزان فاصله مقادیر پیش‌بینی شده از مقادیر واقعی را اندازه‌گیری می‌کند.
    • طبقه‌بندی: از توابع زیان مانند Cross-Entropy Loss استفاده می‌کند که میزان تطابق احتمالات پیش‌بینی شده با برچسب‌های دسته واقعی را اندازه‌گیری می‌کند.
تابع زیان (Loss Function)
تابع زیان (Loss Function)
  1. تابع فعال‌سازی (Activation Function):
    • رگرسیون: اغلب از تابع فعال‌سازی خطی یا ReLU برای لایه خروجی استفاده می‌کند.
    • طبقه‌بندی: اغلب از توابع فعال‌سازی softmax یا sigmoid برای لایه خروجی استفاده می‌کند تا امتیازهای خام را به احتمالات تبدیل کند.

در مورد توابع فعال سازی جلوتر با جزییات بیشتر توضیح دادم.

توضیحات تکمیلی

این ویدئو بهترین مقدمه برای رگرسیون خطی است

رگرسیون خطی

حالا بیایید جدی‌تر شویم: با دنبال کردن دستورالعمل‌های ChatGPT درباره اینکه کدام ویدئوها را به چه ترتیبی ببینیم تا به درک خوبی از موضوع برسیم، ابتدا این سوال را مطرح می‌کنیم که "شبکه‌های عصبی چیست؟" از سازنده‌ی محتوای علمی مورد علاقه‌ام

شبکه‌های عصبی چیست

 

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

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

sigmoid
sigmoid
 کل شبکه به عنوان یک تابع
کل شبکه به عنوان یک تابع

مقدمه ای بر توابع فعالسازی

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

اینجاست که وزن‌ها و متغیرهای دیگر وارد بازی می‌شوند. فرمولی که ایجاد شد به این صورت بود که یک خط افقی رسم کردند و شروع به اندازه‌گیری فاصله بین داده‌ها و خط کردند. سپس این فاصله‌ها را جمع می‌کنید و به توان ۲ می‌رسانید تا از اعداد منفی جلوگیری کنید. در نهایت یک عدد به دست می‌آید که مجموع فاصله‌های هر داده از خط شماست. حالا اگر این خط را حرکت دهید، مجموع این فاصله‌ها کمتر می‌شود. هر چه این عدد کوچکتر باشد، بهتر است. بنابراین از فرمول ساده خط استفاده می‌کنیم y=ax+b    

و در ادامه ویدئو می‌بینید که چرا مشتقات برای پیدا کردن شیب‌ها و در نهایت خط مناسب مفید هستند.

چرا مشتقات برای پیدا کردن شیب‌ها و در نهایت خط مناسب مفید هستند.
چرا مشتقات برای پیدا کردن شیب‌ها و در نهایت خط مناسب مفید هستند.
چرا مشتقات برای پیدا کردن شیب‌ها و در نهایت خط مناسب مفید هستند. 2
چرا مشتقات برای پیدا کردن شیب‌ها و در نهایت خط مناسب مفید هستند. 2

تمرین نحوه نمایش کدها در PyCharm

تمرین نحوه نمایش کدها در PyCharm
تمرین نحوه نمایش کدها در PyCharm

برای تمرین نحوه نمایش کدها در PyCharm و آشنایی با این محیط، می‌توانید به لینک زیر مراجعه کنید: Encyclopedia of Neural Networks

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

توابع فعال‌سازی چیستند؟

برای آشنایی بیشتر با توابع فعال‌سازی، می‌توانید مقاله ساده‌شده در DataCamp را مشاهده کنید: مقاله DataCamp درباره توابع فعال‌سازی

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

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

Sigmoid

ورودی را به یک مقدار بین 0 و 1 تبدیل می‌کند. معمولاً برای خروجی‌های احتمالی در طبقه‌بندی باینری استفاده می‌شود.

ReLU (Rectified Linear Unit)

هر ورودی منفی را به صفر و مقادیر مثبت را به همان صورت باقی می‌گذارد. بسیار پرکاربرد است زیرا به سرعت شبکه‌ها کمک می‌کند.

Tanh

 ورودی را به یک مقدار بین -1 و 1 تبدیل می‌کند. شبیه به Sigmoid است، اما خروجی‌ها می‌توانند منفی هم باشند، که یادگیری بهتر را ممکن می‌سازد.

Softmax

 برای طبقه‌بندی چندکلاسه استفاده می‌شود. خروجی‌ها را به احتمال‌هایی بین 0 و 1 تبدیل می‌کند که مجموع آن‌ها برابر 1 است.

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

 

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

چرا توابع فعال‌سازی مهم هستند؟

  1. معرفی غیرخطی بودن: بدون توابع فعال‌سازی، شبکه‌های عصبی تنها قادر به یادگیری و نمایش روابط خطی خواهند بود. داده‌های واقعی معمولاً غیرخطی هستند، به این معنی که روابط پیچیده‌تری وجود دارد که باید یاد گرفته شوند. توابع فعال‌سازی به شبکه اجازه می‌دهند تا این الگوهای غیرخطی را شناسایی کند.
  2. امکان یادگیری الگوهای پیچیده: با معرفی غیرخطی‌ها، توابع فعال‌سازی به شبکه‌های عصبی اجازه می‌دهند تا داده‌های پیچیده را یاد بگیرند و مدل‌سازی کنند، که برای کارهایی مانند شناسایی تصویر و گفتار ضروری است.
تابع فعال‌سازی1
تابع فعال‌سازی1
تابع فعال‌سازی2
تابع فعال‌سازی2

انتخاب تابع فعال‌سازی مناسب

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

  • برای لایه‌های پنهان: ReLU و انواع آن (مانند Leaky ReLU) معمولاً انتخاب‌های خوبی هستند زیرا به شبکه‌ها کمک می‌کنند سریع‌تر آموزش ببینند و عملکرد بهتری داشته باشند.
ReLU
ReLU

برای لایه‌های خروجی: از Sigmoid برای طبقه‌بندی باینری، از Softmax برای طبقه‌بندی چندکلاسه و از Tanh برای خروجی‌هایی که می‌توانند در بازه -1 تا 1 باشند، استفاده کنید.

softmax
softmax

پس‌انتشار    (Backpropagation)

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

پس‌انتشار    (Backpropagation)
پس‌انتشار (Backpropagation)

نحوه کار:

  1. پاس جلو: داده‌های ورودی از طریق شبکه عبور می‌کند و پیش‌بینی‌ها انجام می‌شود.
  2. محاسبه خطا: تابع زیان تفاوت بین پیش‌بینی‌ها و نتایج واقعی را اندازه‌گیری می‌کند.
  3. پاس برگشت:
    • مرحله ۱: خطا به عقب در شبکه انتشار داده می‌شود.
    • مرحله ۲: شبکه وزن‌های خود را به‌روزرسانی می‌کند تا خطا کاهش یابد. این به‌روزرسانی با استفاده از روش گرادیان کاهشی انجام می‌شود.

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

مراحل Backpropagation:

  1. شروع: با وزن‌های تصادفی شروع کنید.
  2. پاس جلو: پیش‌بینی‌ها را با استفاده از وزن‌های فعلی محاسبه کنید.
  3. محاسبه زیان: از تابع زیان برای محاسبه خطا استفاده کنید.
  4. پاس برگشت:
    • محاسبه گرادیان‌ها: (مشتقات جزئی زیان نسبت به هر وزن).
    • تنظیم وزن‌ها: برای کاهش زیان.
  5. تکرار: تعداد زیادی پاس جلو و عقب انجام دهید تا شبکه یاد بگیرد پیش‌بینی‌های دقیق‌تری انجام دهد.

پس به بیانی ساده تر:

۱. پاس جلو (Forward Pass):

  • با وارد کردن داده‌های ورودی به شبکه عصبی شروع می‌کنید.
  • شبکه پیش‌بینی‌هایی بر اساس این داده‌ها انجام می‌دهد.

۲. محاسبه خطا (Calculate Error):

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

۳. پاس برگشتی (Backward Pass):

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

۴. به‌روزرسانی وزن‌ها (Update Weights):

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

۵. تکرار (Repeat):

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

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

مراحل Backpropagation
مراحل Backpropagation

خلاصه:

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

پی‌نوشت:

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

 

راه‌های ارتباط:

ایمیل:     bita.nf@gmail.com

لینکدین : www.linkedin.com/in/bita-farahmand-58363a232

توییتر:      BitaBloom@

مرکز داده‌ها (ویترین)

مرکز داده‌ها

با کاوش در مجموعه‌ای گسترده از داده‌ها، پروژه‌ها و تحقیقات خود را ارتقاء دهید.

پلتفرم بینایی ماشین بینااکسپرتز

ورود به برنامه ثبت نام در برنامه