NMT मॉडल का प्रशिक्षण

Keras के साथ Machine Translation

Thushan Ganegedara

Data Scientist and Author

मॉडल पर दोबारा नज़र

  • Encoder GRU
    • अंग्रेजी शब्दों को consume करता है
    • एक context vector आउटपुट करता है
  • Decoder GRU
    • context vector को consume करता है
    • GRU outputs का sequence आउटपुट करता है
  • Decoder Prediction layer
    • GRU outputs के sequence को consume करता है
    • फ्रेंच शब्दों के लिए prediction probabilities आउटपुट करता है

Keras के साथ Machine Translation

Parameters को optimize करना

  • GRU layer और Dense layer में parameters होते हैं
  • अक्सर W (weights) और b (bias) से दर्शाए जाते हैं (random मानों से initialize)
  • दिए गए input को उपयोगी output में बदलने के लिए ज़िम्मेदार
  • समय के साथ optimizer से loss घटाने हेतु बदले जाते हैं
    • Loss: अंतर के रूप में compute होता है:
      • predictions (जैसे, मॉडल से जनरेट हुए फ्रेंच शब्द)
      • actual outputs (जैसे, असली फ्रेंच शब्द).
  • मॉडल compile करते समय बताया जाता है
nmt.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
Keras के साथ Machine Translation

मॉडल का प्रशिक्षण

  • Training iterations
    for ei in range(n_epochs): # Single traverse through the dataset
      for i in range(0,data_size,bsize): # Processing a single batch
    
  • training data का एक batch लेना
      en_x = sents2seqs('source', en_text[i:i+bsize], onehot=True, reverse=True)
      de_y = sents2seqs('target', en_text[i:i+bsize], onehot=True)
    
  • एक single batch पर training करना
      nmt.train_on_batch(en_x, de_y)
    
  • मॉडल का मूल्यांकन करना
      res = nmt.evaluate(en_x, de_y, batch_size=bsize, verbose=0)
    
Keras के साथ Machine Translation

मॉडल का प्रशिक्षण

  • training loss और accuracy प्राप्त करना
      res = nmt.evaluate(en_x, de_y, batch_size=bsize, verbose=0)
      print("Epoch {} => Train Loss:{}, Train Acc: {}".format(
        ei+1,res[0], res[1]*100.0))
    
Epoch 1 => Train Loss:4.8036723136901855, Train Acc: 5.215999856591225
...
Epoch 1 => Train Loss:4.718592643737793, Train Acc: 47.0880001783371
...
Epoch 5 => Train Loss:2.8161656856536865, Train Acc: 56.40000104904175
Epoch 5 => Train Loss:2.527724266052246, Train Acc: 54.368001222610474
Epoch 5 => Train Loss:2.2689621448516846, Train Acc: 54.57599759101868
Epoch 5 => Train Loss:1.9934935569763184, Train Acc: 56.51199817657471
Epoch 5 => Train Loss:1.7581449747085571, Train Acc: 55.184000730514526
Epoch 5 => Train Loss:1.5613118410110474, Train Acc: 55.11999726295471
Keras के साथ Machine Translation

Overfitting से बचना

  • डेटासेट को दो भागों में बाँटें
    • Training set - जिस पर मॉडल train होगा
    • Validation set - जिस पर मॉडल की accuracy मॉनिटर होगी
  • जब validation accuracy बढ़ना बंद हो, training रोक दें।

Overfitting point

Keras के साथ Machine Translation

डेटासेट विभाजन

  • train dataset size और validation dataset size तय करें

    train_size, valid_size = 800, 200
    
  • data indices को random रूप से shuffle करें

    inds = np.arange(len(en_text))
    np.random.shuffle(inds)
    
  • train और valid indices प्राप्त करें

    train_inds = inds[:train_size]
    valid_inds = inds[train_size:train_size+valid_size]
    
Keras के साथ Machine Translation

डेटासेट विभाजन

  • डेटासेट को इस तरह बाँटें:
    • train indices वाला data → train set
    • valid indices वाला data → valid set
tr_en = [en_text[ti] for ti in train_inds]
tr_fr = [fr_text[ti] for ti in train_inds]

v_en = [en_text[ti] for ti in valid_inds]
v_fr = [fr_text[ti] for ti in valid_inds]
Keras के साथ Machine Translation

Validation के साथ मॉडल प्रशिक्षण

n_epochs, bsize = 5, 250
for ei in range(n_epochs):

for i in range(0,train_size,bsize): en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, pad_type='pre') de_y = sents2seqs('target', tr_fr[i:i+bsize], onehot=True) nmt.train_on_batch(en_x, de_y)
v_en_x = sents2seqs('source', v_en, onehot=True, pad_type='pre') v_de_y = sents2seqs('target', v_fr, onehot=True)
res = nmt.evaluate(v_en_x, v_de_y, batch_size=valid_size, verbose=0) print("Epoch: {} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
Epoch 1 => Train Loss:4.8036723136901855, Train Acc: 5.215999856591225
Keras के साथ Machine Translation

अभ्यास करते हैं!

Keras के साथ Machine Translation

Preparing Video For Download...