مشکل یادگیری بیش از حد Overfitting در شبکه‌های عمیق | مارک پلاس
💡 مشاوره

مارک پلاس

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

Overfitting در شبکه‌های عمیق

Overfitting در شبکه‌های عمیق

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


مقدمه

یکی از مهم‌ترین چالش‌ها در یادگیری ماشین و به‌خصوص شبکه‌های عصبی عمیق (Deep Neural Networks)، پدیده‌ای به نام Overfitting (بیش‌برازش) است.

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

به زبان ساده:

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


مثال ساده از Overfitting

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

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

  • روی تصاویر آموزشی دقت 99٪ دارد.

  • اما روی تصاویر جدید فقط 70٪ دقت دارد.

یعنی مدل به جای یادگیری ویژگی‌های واقعی گربه و سگ، ممکن است مواردی مانند:

  • پس‌زمینه تصویر

  • نور خاص

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

  • نویز تصویر

را یاد گرفته باشد.


تفاوت یادگیری واقعی و Overfitting

یادگیری مناسب (Generalization)

مدل:

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

  • روی داده‌های جدید خوب عمل می‌کند.

مثال:

تشخیص گربه بر اساس:

  • گوش‌ها

  • چشم‌ها

  • شکل بدن


Overfitting

مدل:

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

  • روی داده جدید شکست می‌خورد.

مثال:

تشخیص گربه فقط چون:

  • پس‌زمینه آبی است.

  • عکس از زاویه خاص گرفته شده است.


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

شبکه‌های عمیق معمولاً دارای:

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

  • لایه‌های متعدد

  • قدرت یادگیری بسیار بالا

هستند.

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

مثال:

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

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

برای داده‌ای با:

1000 نمونه آموزشی

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


علائم Overfitting در شبکه عصبی

یکی از رایج‌ترین نشانه‌ها:

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

مثال:

مرحلهدقت
آموزش (Training Accuracy)99٪
اعتبارسنجی (Validation Accuracy)75٪

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


نمودار Loss در Overfitting

در حالت معمول:

Training Loss ↓
Validation Loss ↓

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

اما در Overfitting:

Training Loss ↓↓↓

Validation Loss ↓ سپس ↑

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


دلایل اصلی Overfitting

۱. داده آموزشی کم

یکی از مهم‌ترین دلایل.

مثال:

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

راه‌حل:

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

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


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

مثلاً:

مدل:

  • لایه‌های زیاد

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

  • پارامترهای بسیار زیاد

دارد.

قدرت مدل از مقدار اطلاعات داده بیشتر می‌شود.


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

اگر شبکه را بیش از حد آموزش دهیم:

ابتدا:

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

بعد:

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

مثال:

Epoch 10:
Training Accuracy = 90%

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


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

Image

اگر داده‌ها شامل:

  • خطا

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

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

باشند، مدل ممکن است آن‌ها را یاد بگیرد.


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

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

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

ایجاد نمونه‌های جدید با تغییرات کوچک:

برای تصاویر:

  • چرخش

  • تغییر نور

  • برش تصویر

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

مثال:

یک تصویر:

cat.jpg

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

cat_rotate.jpg
cat_crop.jpg
cat_flip.jpg

۲. Dropout

یکی از معروف‌ترین روش‌های مقابله با Overfitting است.

ایده:

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

مثلاً:

Layer:
● ● ● ● ● ●

بعد از Dropout:

● ✕ ● ✕ ● ●

نتیجه:

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

مثال در Keras:

from tensorflow.keras.layers import Dropout

model.add(Dropout(0.5))

یعنی 50٪ نورون‌ها به صورت تصادفی حذف می‌شوند.


۳. Regularization


Image

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

دو روش معروف:

L1 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 10 → بهتر
Epoch 20 → بهتر
Epoch 30 → بدتر

در Epoch 20 متوقف می‌شویم.

کد:

from tensorflow.keras.callbacks import EarlyStopping

callback = EarlyStopping(
    patience=5
)

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

راه‌های ساده:

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

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

  • کاهش تعداد پارامترها

مثلاً:

قبل:

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

بعد:

Input
 ↓
Dense(128)
 ↓
Dense(64)


۶. استفاده از Batch Normalization


Image

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


۷. استفاده از Transfer Learning

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

مثال:

استفاده از مدل‌های آماده:

  • ResNet

  • EfficientNet

  • BERT

مزیت:

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

  • تعمیم بهتر


تفاوت Overfitting و Underfitting

ویژگیOverfittingUnderfitting
عملکرد آموزشعالیضعیف
عملکرد تستضعیفضعیف
پیچیدگی مدلزیادکم
علتیادگیری بیش از حدیادگیری ناکافی
راه‌حلکاهش پیچیدگیافزایش پیچیدگی

رابطه Bias و Variance با Overfitting

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

Bias زیاد

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

نتیجه:

Underfitting

Variance زیاد

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

نتیجه:

Overfitting

هدف:

ایجاد تعادل بین Bias و Variance.


مثال واقعی در شبکه CNN

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

نتیجه:

Training:

Accuracy = 98%

Validation:

Accuracy = 65%

تحلیل:

مدل احتمالاً:

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

  • ویژگی‌های عمومی بیماری را یاد نگرفته.

راه‌حل:

  • Data Augmentation

  • Dropout

  • L2 Regularization

  • Early Stopping

  • داده بیشتر


خلاصه نهایی

Overfitting یعنی مدل یادگیری عمیق به جای یادگیری الگوهای عمومی، داده‌های آموزشی را بیش از حد حفظ کند.

نشانه اصلی:

عملکرد عالی روی Training و عملکرد ضعیف روی Validation/Test

مهم‌ترین روش‌های جلوگیری:

✅ افزایش داده (Data Augmentation)
✅ Dropout
✅ Regularization (L1/L2)
✅ Early Stopping
✅ کاهش پیچیدگی مدل
✅ استفاده از Transfer Learning

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