تقسیم‌بندی تصویر Segmentation در تصاویر | مارک پلاس
💡 مشاوره

مارک پلاس

تکنولوژی نوین اینترنتی

Segmentation در تصاویر

Segmentation در تصاویر

Overfitting در شبکه‌های عمیق (Deep Neural Networks)

مقدمه

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

Overfitting (بیش‌برازش) زمانی رخ می‌دهد که مدل به جای یادگیری الگوهای واقعی و عمومی، بیش از حد به داده‌های آموزشی وابسته شود و حتی نویزها و جزئیات غیرضروری داده را یاد بگیرد.

به زبان ساده:

مدل به جای «یاد گرفتن»، داده‌های آموزش را «حفظ می‌کند».


مثال ساده

فرض کنید یک شبکه عصبی برای تشخیص گربه و سگ آموزش می‌دهیم.

مدل پس از آموزش:

  • دقت روی داده‌های آموزش: 99٪

  • دقت روی داده‌های تست: 70٪

این یعنی مدل روی تصاویری که قبلاً دیده عالی است، اما روی تصاویر جدید عملکرد ضعیفی دارد.

احتمالاً مدل به جای یادگیری ویژگی‌هایی مانند:

  • شکل گوش

  • فرم بدن

  • ویژگی‌های چهره

مواردی مانند:

  • رنگ پس‌زمینه

  • نور تصویر

  • زاویه دوربین

را یاد گرفته است.


چرا Overfitting در شبکه‌های عمیق بیشتر دیده می‌شود؟

شبکه‌های عمیق قدرت یادگیری بسیار بالایی دارند. آن‌ها معمولاً دارای:

  • تعداد زیادی لایه (Layers)

  • میلیون‌ها پارامتر (Parameters)

  • قابلیت یادگیری الگوهای بسیار پیچیده

هستند.

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


نشانه‌های Overfitting

مهم‌ترین علامت:

اختلاف زیاد بین Training و Validation

مثال:

دادهدقت
Training98٪
Validation72٪
Test70٪

مدل روی داده آموزش عالی است، اما روی داده جدید ضعیف عمل می‌کند.


نمودار Loss در Overfitting

در آموزش معمول:

Training Loss       ↓
Validation Loss     ↓

هر دو کاهش پیدا می‌کنند.

اما در Overfitting:

Training Loss       ↓↓↓↓↓

Validation Loss     ↓ سپس ↑

یعنی مدل پس از مدتی شروع به یادگیری نویز داده آموزش می‌کند.


دلایل اصلی Overfitting

۱. کمبود داده (Insufficient Data)

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

مثال:

ساخت مدل تشخیص چهره با فقط ۵۰۰ تصویر.

راه‌حل:

  • جمع‌آوری داده بیشتر

  • استفاده از داده مصنوعی

  • Data Augmentation


۲. پیچیدگی بیش از حد مدل

اگر مدل خیلی بزرگ‌تر از نیاز مسئله باشد، احتمال Overfitting افزایش می‌یابد.

مثال:

مدلی با:

100 میلیون پارامتر

برای دیتاستی با:

1000 نمونه

احتمالاً بیش‌برازش خواهد داشت.


۳. آموزش بیش از حد (Too Many Epochs)

در مراحل اولیه آموزش:

  • مدل الگوهای مهم را یاد می‌گیرد.

اما پس از مدت طولانی:

  • نویزها را نیز حفظ می‌کند.

مثال:

Epoch 10:
Training Accuracy = 90%

Epoch 200:
Training Accuracy = 99%
Validation Accuracy = 65%

۴. داده‌های نویزی

وجود مواردی مانند:

  • برچسب اشتباه

  • داده ناقص

  • اطلاعات غیرمرتبط

می‌تواند باعث شود مدل الگوهای اشتباه یاد بگیرد.


روش‌های جلوگیری از Overfitting

۱. افزایش داده (Data Augmentation)

یکی از روش‌های مهم در شبکه‌های عمیق است.

در تصاویر می‌توان:

  • چرخش تصویر

  • تغییر اندازه

  • تغییر روشنایی

  • Flip کردن

  • Crop کردن

را انجام داد.

مثلاً:

یک تصویر:

cat.jpg

تبدیل می‌شود به:

cat_rotate.jpg
cat_flip.jpg
cat_crop.jpg

۲. Dropout

Dropout یکی از محبوب‌ترین روش‌ها برای کاهش Overfitting است.

در زمان آموزش، تعدادی از نورون‌ها به صورت تصادفی خاموش می‌شوند.

مثال:

قبل:

● ● ● ● ● ●

بعد:

● ✕ ● ✕ ● ●

نتیجه:

شبکه مجبور می‌شود ویژگی‌ها را به شکل عمومی‌تر یاد بگیرد.

نمونه در Keras:

from tensorflow.keras.layers import Dropout

model.add(Dropout(0.5))

۳. Regularization

Regularization باعث می‌شود مدل وزن‌های بیش از حد بزرگ ایجاد نکند.

L2 Regularization

رایج‌ترین نوع در شبکه‌های عمیق است.

ایده:

به تابع خطا یک جریمه اضافه می‌کنیم:

[
Loss = Error + \lambda \sum w^2
]

نمونه:

from tensorflow.keras.regularizers import l2

Dense(
    64,
    kernel_regularizer=l2(0.01)
)

۴. Early Stopping

در این روش زمانی که عملکرد مدل روی Validation دیگر بهتر نمی‌شود، آموزش متوقف می‌شود.

مثال:

Epoch 1  → بهتر
Epoch 20 → بهتر
Epoch 40 → ثابت
Epoch 50 → بدتر

آموزش در Epoch 40 متوقف می‌شود.


۵. کاهش پیچیدگی مدل

راهکارها:

  • کاهش تعداد لایه‌ها

  • کاهش تعداد نورون‌ها

  • حذف ویژگی‌های غیرضروری

مثلاً:

مدل بزرگ:

Input
 ↓
Dense(1024)
 ↓
Dense(512)
 ↓
Dense(256)

مدل ساده‌تر:

Input
 ↓
Dense(128)
 ↓
Dense(64)

۶. Batch Normalization

Batch Normalization باعث پایدارتر شدن فرآیند آموزش می‌شود و در بسیاری از معماری‌ها به بهبود تعمیم کمک می‌کند.


۷. Transfer Learning

به جای آموزش مدل از ابتدا، از مدل‌هایی استفاده می‌کنیم که قبلاً روی داده‌های بزرگ آموزش دیده‌اند.

مثال:

  • مدل‌های تشخیص تصویر

  • مدل‌های زبانی

مزایا:

  • نیاز کمتر به داده

  • کاهش احتمال Overfitting

  • آموزش سریع‌تر


تفاوت Overfitting و Underfitting

ویژگیOverfittingUnderfitting
مدلبیش از حد پیچیدهبیش از حد ساده
Training Accuracyبالاپایین
Test Accuracyپایینپایین
مشکل اصلیحفظ کردن دادهیادگیری ناکافی

رابطه Bias و Variance

در یادگیری ماشین:

Bias بالا

مدل بیش از حد ساده است:

Underfitting

Variance بالا

مدل بیش از حد به داده آموزش وابسته است:

Overfitting

هدف، ایجاد تعادل بین این دو است.


مثال در شبکه CNN

فرض کنید یک CNN برای تشخیص بیماری از تصاویر پزشکی ساخته‌ایم:

نتیجه:

Training Accuracy = 99%

Validation Accuracy = 68%

تحلیل:

مدل احتمالاً تصاویر آموزشی را حفظ کرده است.

راه‌حل:

  • افزایش داده پزشکی

  • Dropout

  • Regularization

  • Early Stopping

  • استفاده از Transfer Learning


جمع‌بندی

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

دلایل اصلی:

  • داده کم

  • مدل بسیار پیچیده

  • آموزش طولانی

  • نویز در داده

راه‌های مقابله:

✅ Data Augmentation
✅ Dropout
✅ L1/L2 Regularization
✅ Early Stopping
✅ کاهش پیچیدگی مدل
✅ Transfer Learning

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