Dropout এবং Batch Normalization ব্যবহার

Caffe2 তে মডেল তৈরি করা - ক্যাফে২ (Caffe2) - Machine Learning

321

Dropout এবং Batch Normalization হল ডিপ লার্নিং মডেলগুলিতে ব্যবহৃত দুটি জনপ্রিয় টেকনিক, যা মডেল ট্রেনিংয়ের সময় সাধারণত ওভারফিটিং কমাতে এবং পারফরম্যান্স উন্নত করতে সাহায্য করে।

1. Dropout

Dropout একটি রেগুলারাইজেশন টেকনিক যা মডেল ট্রেনিংয়ের সময় নেটওয়ার্কের নিউরাল লেয়ার থেকে কিছু নিউরন এলোমেলোভাবে বাদ দিয়ে দেয়। এর ফলে, ট্রেনিংয়ের সময় বিভিন্ন নিউরনের উপর নির্ভরশীলতা কমে যায় এবং মডেলটি আরো সাধারণীকৃত হতে পারে, যা ওভারফিটিং রোধ করতে সাহায্য করে।

Dropout কিভাবে কাজ করে:

  • Dropout প্রতিটি ট্রেনিং ব্যাচের জন্য এলোমেলোভাবে একটি নির্দিষ্ট শতাংশ (যেমন ৫০%) নিউরন "ড্রপ" (অর্থাৎ বাদ) করে, যা নেটওয়ার্কের ক্ষমতা সীমিত করে দেয়।
  • এতে মডেলটি একটি শক্তিশালী, সাধারণীকৃত প্রতিনিধিত্ব তৈরি করে এবং কোনো নির্দিষ্ট প্যাটার্নের প্রতি অতিরিক্ত সংবেদনশীল হয়ে ওঠে না।
  • ট্রেনিং শেষে, ট্রেনড মডেলটির সব নিউরন ব্যবহার করা হয় (মানে কোনো dropout হয় না) এবং স্কেলিং করা হয় যাতে নিউরনের আউটপুট ঠিক থাকে।

Dropout ব্যবহার:

  • TensorFlow/Keras এ Dropout ব্যবহার করা:

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense, Dropout
    
    model = Sequential()
    model.add(Dense(64, input_dim=64, activation='relu'))
    model.add(Dropout(0.5))  # 50% নিউরন বাদ দেওয়া হবে
    model.add(Dense(1, activation='sigmoid'))
    
  • PyTorch এ Dropout ব্যবহার করা:

    import torch
    import torch.nn as nn
    
    class SimpleModel(nn.Module):
        def __init__(self):
            super(SimpleModel, self).__init__()
            self.fc1 = nn.Linear(64, 128)
            self.dropout = nn.Dropout(0.5)  # 50% dropout
            self.fc2 = nn.Linear(128, 1)
    
        def forward(self, x):
            x = torch.relu(self.fc1(x))
            x = self.dropout(x)  # Dropout অ্যাপ্লাই করা হচ্ছে
            x = self.fc2(x)
            return x
    

2. Batch Normalization

Batch Normalization (BN) একটি টেকনিক যা ডিপ লার্নিং মডেল ট্রেনিংয়ের সময় ইনপুট ডেটার স্কেল এবং শিফট সমস্যা সমাধান করতে সাহায্য করে। এটি লেয়ারের ইনপুটের গড় এবং ভ্যারিয়েন্সকে "নরমালাইজ" করে, যাতে ট্রেনিং আরও দ্রুত এবং স্থিতিশীল হয়।

Batch Normalization কিভাবে কাজ করে:

  • প্রতিটি ব্যাচের ইনপুটের গড় এবং ভ্যারিয়েন্স হিসাব করে তা নরমালাইজ করা হয় (যেমন গড় শূন্য এবং ভ্যারিয়েন্স ১ করার চেষ্টা করা হয়)।
  • এতে মডেলটি একধরনের "ডিস্ট্রিবিউশন শিফট" থেকে বাঁচে, যা মডেল ট্রেনিংকে আরও স্থিতিশীল এবং দ্রুত করে তোলে।
  • ট্রেনিংয়ের সময়, একটি স্কেলিং ফ্যাক্টর (গামা) এবং একটি শিফট ফ্যাক্টর (বিটা) প্রয়োগ করা হয়, যা মডেলকে ফ্রি থাকে ইনপুটের স্কেল এবং শিফট পরিবর্তন করতে।

Batch Normalization ব্যবহার:

  • TensorFlow/Keras এ Batch Normalization ব্যবহার করা:

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense, BatchNormalization
    
    model = Sequential()
    model.add(Dense(64, input_dim=64, activation='relu'))
    model.add(BatchNormalization())  # Batch Normalization অ্যাপ্লাই করা হচ্ছে
    model.add(Dense(1, activation='sigmoid'))
    
  • PyTorch এ Batch Normalization ব্যবহার করা:

    import torch
    import torch.nn as nn
    
    class SimpleModel(nn.Module):
        def __init__(self):
            super(SimpleModel, self).__init__()
            self.fc1 = nn.Linear(64, 128)
            self.bn1 = nn.BatchNorm1d(128)  # Batch Normalization অ্যাপ্লাই করা হচ্ছে
            self.fc2 = nn.Linear(128, 1)
    
        def forward(self, x):
            x = torch.relu(self.fc1(x))
            x = self.bn1(x)  # Batch Normalization অ্যাপ্লাই করা হচ্ছে
            x = self.fc2(x)
            return x
    

Dropout vs Batch Normalization

বৈশিষ্ট্যDropoutBatch Normalization
মুল উদ্দেশ্যওভারফিটিং কমানো।ইনপুট ডেটার স্কেল এবং শিফট সমস্যা সমাধান।
কিভাবে কাজ করেনিউরন এলোমেলোভাবে বাদ দেওয়া হয়।ইনপুটের গড় এবং ভ্যারিয়েন্সকে নরমালাইজ করে।
পারফরম্যান্সমডেলকে সাধারণীকৃত এবং আরও শক্তিশালী করে।মডেল ট্রেনিংকে দ্রুত এবং স্থিতিশীল করে।
ব্যবহারসাধারণত গভীর নেটওয়ার্কে যেখানে ওভারফিটিং একটি সমস্যা।সাধারণত দ্রুত ট্রেনিং এবং স্থিতিশীলতা উন্নত করার জন্য।
তিনটি অবস্থাট্রেনিং-এর সময় বাদ দেয়া নিউরনগুলির পরিমাণ নির্ধারণ করা হয়।নেটওয়ার্কের মধ্যে মানের স্কেল এবং শিফট নিয়ন্ত্রণ করা হয়।

সারাংশ:

  • Dropout হল একটি রেগুলারাইজেশন টেকনিক যা মডেলের নিউরন এলোমেলোভাবে বাদ দেয়, এবং এটি মডেলকে সাধারণীকৃত করতে সাহায্য করে, যার ফলে ওভারফিটিং কমে।
  • Batch Normalization ইনপুট ডেটার গড় এবং ভ্যারিয়েন্স নরমালাইজ করে, যার ফলে মডেলের ট্রেনিং দ্রুত এবং স্থিতিশীল হয়।

এই দুটি টেকনিককে একসাথে ব্যবহার করলে ডিপ লার্নিং মডেলের পারফরম্যান্স এবং স্ট্যাবিলিটি উল্লেখযোগ্যভাবে বৃদ্ধি পায়।

Content added By
Promotion

Are you sure to start over?

Loading...