R Academy · पाठ

प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम

val_loss पर नज़र रखें, Dropout लागू करें और जल्दी रोकने के लिए कॉलबैक का उपयोग करें।

पाठ 4, कुल 4 में से13 चरण

प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

प्रशिक्षण, सत्यापन, परीक्षण विभाजन

डीप लर्निंग के लिए डेटा के तीन भाग आवश्यक होते हैं: प्रशिक्षण (मॉडल पैरामीटर सीखता है), सत्यापन (प्रशिक्षण के दौरान सामान्यीकरण की निगरानी और हाइपरपैरामीटरों का समायोजन), और परीक्षण (अंतिम निष्पक्ष मूल्यांकन)। fit() में validation_split तर्क सत्यापन सेट अपने-आप बनाता है।

# validation_split = 0.2 reserves last 20% as validation
history <- model |> fit(
  x_train, y_train,
  epochs           = 50,
  batch_size       = 32,
  validation_split = 0.2,
  verbose          = 0
)

# history contains train and val metrics per epoch
names(history$metrics)

प्रशिक्षण इतिहास ऑब्जेक्ट

fit() द्वारा लौटाया गया ऑब्जेक्ट $metrics सूची में प्रत्येक युग के प्रत्येक लॉग किए गए मेट्रिक के लिए एक प्रविष्टि रखता है। प्रशिक्षण और सत्यापन वक्रों को साथ-साथ देखने के लिए plot(history) कॉल कीजिए। अलग-अलग दिशाओं में जाती वक्रें (प्रशिक्षण सुधरता है, सत्यापन स्थिर हो जाता है) अति-अनुकूलन का संकेत देती हैं।

# Training loss and accuracy over epochs
head(history$metrics$loss)
head(history$metrics$val_loss)

# Plot training curves
plot(history)

# Or create a custom ggplot
library(ggplot2)
df <- data.frame(
  epoch    = seq_along(history$metrics$loss),
  train    = history$metrics$loss,
  val      = history$metrics$val_loss
)
ggplot(df, aes(epoch)) +
  geom_line(aes(y = train, colour = 'Train')) +
  geom_line(aes(y = val,   colour = 'Validation')) +
  labs(y = 'Loss', title = 'Training Curves')

अति-अनुकूलन का पता लगाना

अति-अनुकूलन तब होता है जब प्रशिक्षण हानि घटती रहती है, लेकिन सत्यापन हानि बढ़ने लगती है। मॉडल सामान्यीकृत पैटर्न सीखने के बजाय प्रशिक्षण डेटा को याद कर लेता है। संकेत: प्रशिक्षण और सत्यापन सटीकता के बीच बड़ा अंतर, तथा सत्यापन हानि का स्पष्ट न्यूनतम बिंदु के बाद बढ़ना।

# Overfitting is visible in the history
# Example of overfitting signatures:
cat('Epoch 5  — Train loss: 0.12, Val loss: 0.18\n')
cat('Epoch 10 — Train loss: 0.06, Val loss: 0.21\n')
cat('Epoch 20 — Train loss: 0.02, Val loss: 0.31\n')

# The model should have stopped at epoch 5!
# Strategies: early stopping, dropout, regularisation, more data

callback_early_stopping()

callback_early_stopping(monitor, patience, restore_best_weights) निगरानी किए जा रहे मेट्रिक में सुधार रुकने पर प्रशिक्षण रोक देता है। patience अंतिम सुधार के बाद प्रतीक्षा किए जाने वाले युगों की संख्या है। सर्वोत्तम युग के वेट को अपने-आप वापस लाने के लिए restore_best_weights = TRUE सेट कीजिए।

early_stop <- callback_early_stopping(
  monitor              = 'val_loss',
  patience             = 10,        # wait 10 epochs
  restore_best_weights = TRUE       # rollback to best
)

history <- model |> fit(
  x_train, y_train,
  epochs           = 200,
  batch_size       = 32,
  validation_split = 0.2,
  callbacks        = list(early_stop),
  verbose          = 0
)

cat('Stopped at epoch:', length(history$metrics$loss))

callback_reduce_lr_on_plateau()

जब प्रशिक्षण रुक जाता है, तब सीखने की दर घटाने से प्रगति अक्सर फिर शुरू हो जाती है। callback_reduce_lr_on_plateau(monitor, factor, patience) तब वर्तमान सीखने की दर को factor से गुणा करता है, जब निगरानी किए जा रहे मेट्रिक में patience युगों तक सुधार नहीं हुआ हो।

reduce_lr <- callback_reduce_lr_on_plateau(
  monitor  = 'val_loss',
  factor   = 0.5,    # halve the learning rate
  patience = 5,      # after 5 stagnant epochs
  min_lr   = 1e-6    # floor for learning rate
)

history <- model |> fit(
  x_train, y_train,
  epochs           = 100,
  batch_size       = 64,
  validation_split = 0.2,
  callbacks        = list(early_stop, reduce_lr),
  verbose          = 1
)

callback_model_checkpoint()

callback_model_checkpoint(filepath, save_best_only) प्रत्येक युग के अंत में मॉडल के वेट डिस्क पर सहेजता है (या save_best_only = TRUE के साथ केवल प्रदर्शन सुधरने पर)। यह प्रशिक्षण रुक जाने से सुरक्षा देता है और प्रशिक्षण सर्वोत्तम बिंदु के बाद भी जारी रहने पर आपको सर्वोत्तम मॉडल लोड करने देता है।

checkpoint <- callback_model_checkpoint(
  filepath       = '/tmp/best_model.h5',
  monitor        = 'val_accuracy',
  save_best_only = TRUE,
  mode           = 'max',      # higher accuracy = better
  verbose        = 1
)

history <- model |> fit(
  x_train, y_train,
  epochs           = 100,
  batch_size       = 32,
  validation_split = 0.2,
  callbacks        = list(early_stop, reduce_lr, checkpoint)
)

# Reload best model
best_model <- load_model_hdf5('/tmp/best_model.h5')

validation_data बनाम validation_split

validation_split आपके प्रशिक्षण डेटा के अंतिम N% को लेता है। यदि आपका डेटा क्रमबद्ध है (जैसे समय-श्रृंखला), तो यह पक्षपाती होगा। इसके बजाय यादृच्छिक स्तरीकृत विभाजन से पहले से बनाए गए सत्यापन सेट को देने के लिए validation_data = list(x_val, y_val) का उपयोग कीजिए।

# Manually create a random validation split
set.seed(42)
val_idx  <- sample(nrow(x_train), size = 0.2 * nrow(x_train))
x_val    <- x_train[val_idx, ]
y_val    <- y_train[val_idx, ]
x_tr     <- x_train[-val_idx, ]
y_tr     <- y_train[-val_idx, ]

history <- model |> fit(
  x_tr, y_tr,
  epochs         = 50,
  batch_size     = 32,
  validation_data = list(x_val, y_val),  # explicit val set
  callbacks      = list(early_stop)
)

बैच आकार का प्रभाव

बैच आकार प्रशिक्षण का एक महत्वपूर्ण हाइपरपैरामीटर है। छोटे बैच ग्रेडिएंट के अनुमानों में अधिक शोर लाते हैं (जो नियमितीकरण की तरह काम करता है) और सामान्यीकरण में सहायता करते हैं। बड़े बैच तेज़ होते हैं, लेकिन अधिक तीखे और कम सामान्यीकृत न्यूनतम बिंदुओं पर अभिसरित हो सकते हैं। सामान्य मान: 32, 64, 128। पहले 32 आज़माइए।

# Compare training with different batch sizes
for (bs in c(32, 128, 512)) {
  set_weights(model, init_weights)  # reset
  h <- model |> fit(
    x_train, y_train,
    epochs           = 20,
    batch_size       = bs,
    validation_split = 0.2,
    verbose          = 0
  )
  cat('Batch:', bs, '| Val Acc:',
      tail(h$metrics$val_accuracy, 1), '\n')
}

सीखने की दर का वार्मअप

बहुत छोटी सीखने की दर से शुरुआत करके पहले कुछ युगों में उसे धीरे-धीरे बढ़ाने से (वार्मअप) प्रशिक्षण स्थिर हो सकता है, विशेषकर बड़े मॉडलों या छोटे डेटासेट के लिए। एक कस्टम LearningRateScheduler कॉलबैक इस पद्धति को सक्षम करता है।

# Custom learning rate schedule with warmup
lr_schedule <- function(epoch, lr) {
  if (epoch < 5) {
    return(lr * (epoch + 1) / 5)  # warmup
  } else if (epoch < 30) {
    return(lr)                     # constant
  } else {
    return(lr * 0.95)              # decay
  }
}

lr_callback <- callback_learning_rate_scheduler(lr_schedule)

history <- model |> fit(
  x_train, y_train,
  epochs     = 50,
  callbacks  = list(lr_callback, early_stop),
  validation_split = 0.2
)

नियमितीकरण का सारांश

मज़बूत डीप लर्निंग के लिए कई नियमितीकरण तकनीकों को मिलाकर उपयोग करना चाहिए:

  • ड्रॉपआउट: प्रशिक्षण के दौरान न्यूरॉनों को यादृच्छिक रूप से शून्य करता है।
  • वेट क्षय (L2): हानि में बड़े वेट के लिए दंड लगाता है।
  • प्रारंभिक रुकावट: मॉडल के अति-अनुकूलित होने से पहले प्रशिक्षण रोकती है।
  • डेटा संवर्धन: प्रशिक्षण सेट का आकार कृत्रिम रूप से बढ़ाता है।
  • बैच सामान्यीकरण: सक्रियणों को स्थिर करता है और सहपरिवर्ती बदलाव घटाता है।
model <- keras_model_sequential(input_shape = c(784)) |>
  layer_dense(512, use_bias = FALSE,
              kernel_regularizer = regularizer_l2(1e-4)) |>
  layer_batch_normalization() |>
  layer_activation('relu') |>
  layer_dropout(0.4) |>
  layer_dense(256, kernel_regularizer = regularizer_l2(1e-4)) |>
  layer_batch_normalization() |>
  layer_activation('relu') |>
  layer_dropout(0.3) |>
  layer_dense(10, activation = 'softmax')

model |> compile('adam', 'categorical_crossentropy', 'accuracy')

प्रशिक्षण वक्रों का आलेखन

प्रशिक्षण और सत्यापन मेट्रिक्स को हमेशा साथ-साथ देखें। अच्छी तरह प्रशिक्षित मॉडल में दोनों वक्रों को एक-दूसरे के पास रहते हुए अभिसरित होना चाहिए। यदि वे अलग-अलग दिशाओं में जाएँ, तो नियमितीकरण जोड़ें या मॉडल की क्षमता घटाएँ। यदि दोनों वक्र अधिक हानि पर स्थिर हो जाएँ, तो मॉडल अपर्याप्त रूप से अनुकूलित है।

# Detailed training curve plot
df <- data.frame(
  epoch = seq_along(history$metrics$loss),
  train_loss = history$metrics$loss,
  val_loss   = history$metrics$val_loss,
  train_acc  = history$metrics$accuracy,
  val_acc    = history$metrics$val_accuracy
)

par(mfrow = c(1, 2))
plot(df$epoch, df$train_loss, type = 'l', col = 'blue',
     xlab = 'Epoch', ylab = 'Loss', main = 'Loss')
lines(df$epoch, df$val_loss, col = 'red')
legend('topright', c('Train', 'Val'), col = c('blue','red'), lty=1)

plot(df$epoch, df$train_acc, type = 'l', col = 'blue',
     xlab = 'Epoch', ylab = 'Accuracy', main = 'Accuracy')
lines(df$epoch, df$val_acc, col = 'red')

त्वरित जाँच

callback_early_stopping() में restore_best_weights = TRUE सेट करने से क्या होता है?

प्रशिक्षण और अति-अनुकूलन का पुनरावलोकन

प्रशिक्षण, सत्यापन और अति-अनुकूलन रोकने से मुख्य बातें:

  • प्रशिक्षण के दौरान सामान्यीकरण की निगरानी के लिए validation_split या validation_data का उपयोग करें।
  • plot(history) प्रशिक्षण वक्रों को दिखाता है—अलग-अलग दिशाओं में जाती वक्रें अति-अनुकूलन का संकेत देती हैं।
  • callback_early_stopping(patience, restore_best_weights=TRUE) सर्वोत्तम युग पर प्रशिक्षण रोकता है।
  • callback_reduce_lr_on_plateau() प्रगति रुकने पर सीखने की दर घटाता है।
  • callback_model_checkpoint(save_best_only=TRUE) सर्वोत्तम मॉडल को डिस्क पर सहेजता है।
  • मज़बूत प्रशिक्षण के लिए ड्रॉपआउट, L2 नियमितीकरण, बैच सामान्यीकरण और डेटा संवर्धन को मिलाकर उपयोग करें।
# Best practice training setup
callbacks <- list(
  callback_early_stopping(
    monitor = 'val_loss', patience = 15,
    restore_best_weights = TRUE
  ),
  callback_reduce_lr_on_plateau(
    monitor = 'val_loss', factor = 0.5, patience = 5
  ),
  callback_model_checkpoint(
    '/tmp/best.h5', monitor = 'val_accuracy',
    save_best_only = TRUE
  )
)

model |> fit(
  x_train, y_train,
  epochs = 200, batch_size = 64,
  validation_split = 0.2,
  callbacks = callbacks, verbose = 0
)
शुरुआत निःशुल्क

एआई शिक्षक के साथ R सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
43
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम” पाठ निःशुल्क है?

हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम” में मैं क्या सीखूँगा?

val_loss पर नज़र रखें, Dropout लागू करें और जल्दी रोकने के लिए कॉलबैक का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. R में Keras और TensorFlow की स्थापना
  2. अनुक्रमिक मॉडल बनाना
  3. कन्वोल्यूशनल न्यूरल नेटवर्क की मूल बातें
  4. प्रशिक्षण, सत्यापन और ओवरफिटिंग की रोकथाम
← R Academy पर वापस जाएँ