Learning Rate Scheduler এবং ReduceLROnPlateau

Keras তে Callbacks এবং Early Stopping - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

347

ডীপ লার্নিং মডেল ট্রেনিংয়ের সময় learning rate (LR) একটি গুরুত্বপূর্ণ হাইপারপারামিটার। এই প্যারামিটারটি মডেল কত দ্রুত বা ধীরে শিখবে তা নির্ধারণ করে। সঠিক learning rate নির্বাচন করা মডেলের কর্মক্ষমতা এবং ট্রেনিং সময়ের ওপর গুরুত্বপূর্ণ প্রভাব ফেলে। একে সঠিকভাবে পরিচালনা করতে, Learning Rate Scheduler এবং ReduceLROnPlateau কৌশলগুলি ব্যবহৃত হয়।


১. Learning Rate Scheduler

Learning Rate Scheduler একটি কৌশল যা ট্রেনিং চলাকালীন learning rate এর মান পরিবর্তন করে। সাধারণত, এটি learning rate-কে একটি নির্দিষ্ট নিয়মে বা এক্সপোনেনশিয়ালি কমিয়ে দেয়, যাতে মডেল ধীরে ধীরে প্রশিক্ষিত হয় এবং সবচেয়ে ভাল পারফরম্যান্সে পৌঁছায়।

Learning Rate Scheduler এর প্রকারসমূহ:

  1. Step Decay:

    • এতে নির্দিষ্ট ইপোক পর learning rate একটি স্থির পরিমাণ কমে যায়। উদাহরণস্বরূপ, প্রতি ১০০ ইপোক পর LR 0.1 গুণ কমে যাবে।
    • এটি সাধারণত কিছু সময় পর মডেলকে আরো নির্ভুলভাবে শিখতে সাহায্য করে।
    def step_decay(epoch):
        initial_lr = 0.1
        drop = 0.5
        epoch_drop = 10.0
        lr = initial_lr * math.pow(drop, math.floor((1+epoch)/epoch_drop))
        return lr
    
  2. Exponential Decay:

    • Exponential decay learning rate কে একটি নির্দিষ্ট এক্সপোনেনশিয়াল ফ্যাক্টর দ্বারা কমিয়ে দেয়।
    • এটি অনেক দ্রুত পরিবর্তন এবং মডেলকে ধীরে ধীরে নির্ভুল করতে সহায়ক।
    def exponential_decay(epoch):
        initial_lr = 0.1
        lr = initial_lr * math.exp(-0.1 * epoch)
        return lr
    
  3. Cosine Annealing:

    • এটি learning rate কে একটি কসমাইন ফাংশনের মতো পরিবর্তন করে, প্রথমে এটি কমে তারপর আবার বাড়তে থাকে, যা মডেলের ট্রেনিং প্রক্রিয়াকে আরও সূক্ষ্ম করে তোলে।
    def cosine_annealing(epoch, lr_max, lr_min, T_max):
        return lr_min + 0.5 * (lr_max - lr_min) * (1 + math.cos(math.pi * epoch / T_max))
    
  4. Cyclical Learning Rate:

    • এতে learning rate একটি নির্দিষ্ট সীমার মধ্যে ওঠানামা করে। এটি দ্রুত মডেলের প্রশিক্ষণ করতে সাহায্য করে এবং স্থিতিশীলতা অর্জনে সহায়তা করে।
    from tensorflow.keras.callbacks import Callback
    
    class CyclicLR(Callback):
        def __init__(self, base_lr, max_lr, step_size, mode='triangular'):
            self.base_lr = base_lr
            self.max_lr = max_lr
            self.step_size = step_size
            self.mode = mode
    
        def on_epoch_end(self, epoch, logs=None):
            cycle = math.floor(1 + epoch / (2 * self.step_size))
            x = abs(epoch / self.step_size - 2 * cycle + 1)
            if self.mode == 'triangular':
                lr = self.base_lr + (self.max_lr - self.base_lr) * max(0, (1 - x))
            self.model.optimizer.lr.assign(lr)
    

২. ReduceLROnPlateau

ReduceLROnPlateau হলো একটি জনপ্রিয় কৌশল যা learning rate-কে প্রশিক্ষণের সময় loss (অথবা মেট্রিক) সঠিকভাবে উন্নতি না করলে কমিয়ে দেয়। এটি মূলত early stopping এর মত কাজ করে, তবে এটি learning rate কমিয়ে মডেলকে আরও ভাল করতে সাহায্য করতে পারে।

ReduceLROnPlateau এর মূল ধারণা:

  • Plateau এর মানে হল যে, যদি মডেলের পারফরম্যান্স (যেমন, validation loss বা accuracy) কোনো নির্দিষ্ট সংখ্যক ইপোকের জন্য উন্নতি না করে, তাহলে learning rate স্বয়ংক্রিয়ভাবে কমিয়ে দেওয়া হয়।
  • এটি ট্রেনিংয়ের শেষের দিকে, যেখানে মডেল এক পর্যায়ে পৌঁছেছে এবং উন্নতি বন্ধ হয়ে গেছে, সেখানে বেশি learning rate ব্যবহার করার পরিবর্তে একটি ছোট learning rate ব্যবহার করে মডেলটিকে আরও ভালোভাবে অপটিমাইজ করতে সহায়তা করে।

ReduceLROnPlateau এর কনফিগারেশন:

  • monitor: যে মেট্রিকটিতে মনিটর করা হবে (যেমন, 'val_loss', 'accuracy')।
  • factor: Learning rate কতটা কমানো হবে (যেমন, 0.1 মানে লার্নিং রেট ১০ গুণ কমানো হবে)।
  • patience: কত ইপোক পর মডেল যদি উন্নতি না করে, তাহলে learning rate কমানো হবে।
  • min_lr: কমপক্ষে যে learning rate হতে পারে, এর নিচে কমানো যাবে না।

কোড উদাহরণ:

from tensorflow.keras.callbacks import ReduceLROnPlateau

# ReduceLROnPlateau কনফিগারেশন
reduce_lr = ReduceLROnPlateau(monitor='val_loss',  # মনিটর করা মেট্রিক
                              factor=0.1,  # learning rate কমানোর হার
                              patience=5,  # ৫ ইপোক পর যদি উন্নতি না হয়
                              verbose=1,    # লার্নিং রেট কমানোর সময় আউটপুট দেখানো হবে
                              min_lr=0.0001)  # মেট্রিকের উন্নতি না হলে learning rate কমবে

# মডেল প্রশিক্ষণের সময় ReduceLROnPlateau ব্যবহার করা
model.fit(x_train, y_train, epochs=100, batch_size=32, 
          validation_data=(x_val, y_val),
          callbacks=[reduce_lr])

Advantages of ReduceLROnPlateau:

  • এটি automatic learning rate adjustment দিয়ে মডেল প্রশিক্ষণ করে এবং শেখার প্রক্রিয়াকে আরও কার্যকরী করে তোলে।
  • মডেল যদি কোনো নির্দিষ্ট ইপোক পর শিখতে না পারে তবে লার্নিং রেট কমিয়ে দিয়ে আবার নতুনভাবে শিখানোর সুযোগ দেয়।
  • এটি মডেলকে overfitting এড়াতে সহায়ক হতে পারে।

সারাংশ

  • Learning Rate Scheduler: এটি প্রশিক্ষণের সময় learning rate কমানোর জন্য বিভিন্ন কৌশল ব্যবহার করে, যেমন Step Decay, Exponential Decay, এবং Cosine Annealing। এই কৌশলগুলি মডেলকে ধীরে ধীরে ট্রেনিং করতে সহায়তা করে এবং প্রশিক্ষণ শেষে খুব বেশি পরিবর্তন থেকে বিরত থাকে।
  • ReduceLROnPlateau: এটি learning rate কমানোর জন্য loss বা অন্যান্য মেট্রিকের পর্যালোচনা করে, এবং যখন মডেল আর উন্নতি করতে পারে না তখন লার্নিং রেট কমিয়ে দেয়। এটি training process এর মধ্যে গতি আনতে এবং মডেলটিকে আরও ভাল করতে সহায়তা করে।

এই দুইটি কৌশলই মডেলের ট্রেনিংয়ের সময় learning rate নিয়ন্ত্রণে রাখতে সহায়ক এবং মডেল প্রশিক্ষণের গতি ও কার্যকারিতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion

Are you sure to start over?

Loading...