Machine Learning Loss Function এবং Optimizer সেটআপ গাইড ও নোট

280

Loss Function এবং Optimizer হল মেশিন লার্নিং এবং ডিপ লার্নিং মডেলের ট্রেনিং প্রক্রিয়ায় অত্যন্ত গুরুত্বপূর্ণ উপাদান। এগুলি মডেলের শেখার প্রক্রিয়া নিয়ন্ত্রণ করে এবং মডেলকে আরও ভালোভাবে ট্রেন করার জন্য সহায়ক হয়।


১. Loss Function (লস ফাংশন)

Loss Function বা Cost Function হল একটি গাণিতিক ফাংশন যা মডেলের পূর্বাভাস এবং আসল আউটপুটের মধ্যে পার্থক্য পরিমাপ করে। এটি মডেলের গুণগত মান নির্ধারণে সাহায্য করে। ছোট loss মানে মডেলটি ভালো কাজ করছে এবং বড় loss মানে মডেলটির পূর্বাভাস সঠিক নয়।

Loss Function এর বিভিন্ন ধরন:

  1. Mean Squared Error (MSE): এটি রিগ্রেশন প্রোগ্রামের জন্য ব্যবহৃত হয়, যেখানে আউটপুট একটি চলমান মান (continuous value)।

    MSE=1ni=1n(ytrueypred)2\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_{\text{true}} - y_{\text{pred}})^2

    এখানে y_true হল আসল মান এবং y_pred হল পূর্বাভাস।

  2. Cross-Entropy Loss: এটি ক্লাসিফিকেশন প্রোগ্রামের জন্য ব্যবহৃত হয়, যেখানে আউটপুট হল একটি ডিসক্রিট ক্লাস। এটি সাধারণত log loss হিসেবেও পরিচিত।

    Cross-Entropy=i=1nytruelog(ypred)\text{Cross-Entropy} = - \sum_{i=1}^{n} y_{\text{true}} \log(y_{\text{pred}})

    এখানে y_true হল আসল লেবেল এবং y_pred হল পূর্বাভাস (যেমন softmax আউটপুট)।

  3. Huber Loss: এটি MSE এর সাথে সমন্বিত একটি ফাংশন, যা আউটলায়ারগুলো থেকে প্রভাব কমিয়ে দেয়। এটি রিগ্রেশন টাস্কের জন্য ভালো।

    Huber Loss={12(ypredytrue)2if ypredytrueδδ(ypredytrue12δ)otherwise\text{Huber Loss} = \sum \begin{cases} \frac{1}{2} (y_{\text{pred}} - y_{\text{true}})^2 & \text{if } |y_{\text{pred}} - y_{\text{true}}| \leq \delta \\ \delta (|y_{\text{pred}} - y_{\text{true}}| - \frac{1}{2} \delta) & \text{otherwise} \end{cases}


২. Optimizer (অপটিমাইজার)

Optimizer হল একটি অ্যালগরিদম যা মডেলের ওজন আপডেট করার জন্য ব্যবহৃত হয়, যাতে loss ফাংশন মিনিমাইজ করা যায়। এটি gradient descent বা এর বিভিন্ন ভেরিয়েন্ট ব্যবহার করে, যাতে মডেল সময়ের সাথে সাথে উন্নতি করে।

Optimizer এর বিভিন্ন ধরন:

  1. Stochastic Gradient Descent (SGD): এটি সবচেয়ে মৌলিক এবং জনপ্রিয় অপটিমাইজার। এটি প্রতিটি বাচে (batch) একটি গ্র্যাডিয়েন্ট ক্যালকুলেট করে এবং ওজন আপডেট করে। তবে, এটি ধীরে ধীরে কনভার্জ করতে পারে এবং স্থানীয় মিনিমা এ আটকে থাকতে পারে।

    wnew=woldηwL(w)w_{\text{new}} = w_{\text{old}} - \eta \cdot \nabla_w L(w)

    এখানে w হল ওজন, η হল শিখন হার, এবং L(w) হল লস ফাংশন।

  2. Momentum-based SGD: এটি SGD এর একটি উন্নত সংস্করণ যা গতকালকের আপডেটগুলির গতি (momentum) ব্যবহার করে আপডেটকে আরও দ্রুত করে।

    vnew=βvold+(1β)wL(w)v_{\text{new}} = \beta \cdot v_{\text{old}} + (1 - \beta) \cdot \nabla_w L(w) wnew=woldηvneww_{\text{new}} = w_{\text{old}} - \eta \cdot v_{\text{new}}

    এখানে β হল momentum এর হার, v হল গতকালের গ্র্যাডিয়েন্ট আপডেট।

  3. Adam (Adaptive Moment Estimation): Adam অপটিমাইজার হল SGD এর উন্নত সংস্করণ যা গ্র্যাডিয়েন্ট এবং তার গতিশক্তির (momentum) মোটা এবং মিহি আপডেট তৈরি করে। এটি অত্যন্ত জনপ্রিয় কারণ এটি দ্রুত কনভার্জ করতে সাহায্য করে এবং বিভিন্ন ধরনের প্রোজেক্টে ভাল পারফরম্যান্স দেয়।

    mt=β1mt1+(1β1)wL(w)m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla_w L(w) vt=β2vt1+(1β2)(wL(w))2v_t = \beta_2 v_{t-1} + (1 - \beta_2) (\nabla_w L(w))^2 mt^=mt1β1t,vt^=vt1β2t\hat{m_t} = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v_t} = \frac{v_t}{1 - \beta_2^t} wnew=woldηmt^vt^+ϵw_{\text{new}} = w_{\text{old}} - \eta \cdot \frac{\hat{m_t}}{\sqrt{\hat{v_t}} + \epsilon}

    এখানে m_t এবং v_t হল প্রথম এবং দ্বিতীয় মুহূর্তের অগ্রগতি, β_1 এবং β_2 হল প্রতি মুহূর্তের অগ্রগতির হালকা এবং ভারী গতি এবং ε হল একটি ছোট সংখ্যার যাতে বিভাজন শূন্য না হয়।

  4. Adagrad: এটি একটি ডাইনামিক শিখন হার অপটিমাইজার যা পারামিটারগুলির জন্য আলাদা শিখন হার ব্যবহার করে এবং গুণফল অনুযায়ী আপডেট হয়। এটি স্ক্যালিং সমস্যাগুলি কমিয়ে দেয়।

৩. Loss Function এবং Optimizer সেটআপ (PyTorch এ)

Loss Function সেটআপ (PyTorch):

PyTorch তে loss function সেটআপ খুবই সহজ। নিচে CrossEntropyLoss এবং MSELoss এর উদাহরণ দেওয়া হলো:

import torch
import torch.nn as nn

# ক্লাসিফিকেশনের জন্য CrossEntropyLoss
criterion_classification = nn.CrossEntropyLoss()

# রিগ্রেশন সমস্যার জন্য MSELoss
criterion_regression = nn.MSELoss()

Optimizer সেটআপ (PyTorch):

PyTorch তে অপটিমাইজার সেটআপ করার জন্য torch.optim মডিউল ব্যবহার করা হয়। নিচে SGD, Adam, এবং Momentum এর উদাহরণ দেওয়া হলো:

import torch.optim as optim

# Stochastic Gradient Descent (SGD)
optimizer_sgd = optim.SGD(model.parameters(), lr=0.01)

# Adam Optimizer
optimizer_adam = optim.Adam(model.parameters(), lr=0.001)

# SGD with Momentum
optimizer_momentum = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

এখানে, model.parameters() হল আপনার মডেলের প্যারামিটারগুলো, এবং lr হল শিখন হার (learning rate)।


সারাংশ

  • Loss Function হল মডেলের ভুল বা ত্রুটি পরিমাপের পদ্ধতি। এটি মডেলকে শেখায় কিভাবে ইনপুট এবং টার্গেট আউটপুটের মধ্যে পার্থক্য কমানো যায়।
  • Optimizer হল একটি অ্যালগরিদম যা মডেলের ওজন আপডেট করে, যাতে loss ফাংশন কমানো যায় এবং মডেলটি সঠিক আউটপুটের দিকে কনভার্জ করে।
  • PyTorch এ, loss function এবং optimizer খুব সহজে সেটআপ করা যায় এবং এগুলো মডেল ট্রেনিং প্রক্রিয়ায় ব্যবহার করা হয়।
Content added By
Promotion

Are you sure to start over?

Loading...