DEV Community

Evan Shareef
Evan Shareef

Posted on

গ্রেডিয়েন্ট ডিসেন্ট কী এবং এটা কিভাবে কাজ করে? (understanding physical significance)

প্রথমত আমাদের জানতে হবে মেশিন লার্নিং মডেল বেইজ লেভেলে আসলে ট্রেনিং এর পর কী পায়? একটি মডেল আসলে ইকুয়েশন সল্ভ করা শিখে। বেসিক লেভেলে; ওকে কিছু ডেটা দেওয়া হয়। এই ডেটা গুলো থেকে ওর কাজ হয় একটা ইকুয়েশন বানানো। এমন একটা ইকুয়েশন বানানো যেখানে নতুন ডাটা দিলে ও সঠিক প্রেডিকশন দিতে পারে।

মডেল ট্রেনিং বলতে আসলে ওকে ইকুয়েশন, সেগুলোর weight বসাতে শেখানো হয়। ট্রেনিং ডাটা থেকে ও আসলে বোঝার চেষ্টা করে যে স্পেসিফিক প্রব্লেম ডোমেইনের ডেটাগুলোকে কোন ইকুয়েশনে বসানো যায়।

উদাহরনের খাতিরে ধরে নেই একটা মডেলকে এসির দাম প্রেডিক্ট করার জন্য ট্রেইন করা হচ্ছে। ওকে দেওয়া ডেটা দেখতে অনেকটা এরকমঃ

===================

মাস, গড় তাপমাত্রা, এসির দাম

এখন এই ডেটা দিয়ে ট্রেইন করানো হলে হয়তোবা মডেলটা এমন একটা ইকুয়েশন বানাবেঃ

=========================

এসির দাম = মাস * ০.৮ + তাপমাত্রা * ২০

এখন এই প্রশ্ন হতে পারে, ০.৮ , ২০ এই ভ্যালু গুলো কী র‍্যান্ডম হবে? না! মূলত একটা মডেল এসব ভ্যালুকেই শিখে ফেলে। প্রতিটা ফিচারের জন্য কোন সংখ্যা গুণ করা যায় এই জিনিসটাই হচ্ছে একটা মডেলের লার্নিং। এখন থেকে এই মডেলকে নতুন কোনো ভ্যালু দিলে ও শুধু মাস ও তাপমাত্রাকে ইনপুট হিসেবে নিয়ে একটা weighted sum বের করবে। এটাই হবে এসির দাম।

অর্থাৎ একটা মডেল তাহলে শুধু ওয়েট বের করা + ইকুয়েশন বের করা শেখে। এটাই ওর কাজ। এখন এই যে ও ওয়েট কত হবে এটা ক্যালকুলেট করা শেখে ; এই ভ্যালু ও কিভাবে বের করে? মূলত ট্রেনিং এর সময় ও এই ইকুয়েশনের ভ্যালু বের কর দেখে যে এরর রেট কত। ট্রেনিং এর সময় ওর কাছে তো একচুয়াল ভ্যালু আছেই। ও তখন ইকুয়েশনে বের করা ভ্যালুর সাথে একচুয়াল ভ্যালুর ডিফারেন্স বের করে দেখে। এখন আমরা চাই এই এরর ফাংশনের ভ্যালু কমাতে। যেই পয়েন্টে গিয়ে এই ভ্যালু সবচেয়ে মিনিমাম হবে ওইটাই আমাদের জন্য অপটিমাল পয়েন্ট।

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

তাহলে মডেল শেখে কী?

  • কোন ফিচারের জন্য কী ওয়েট দিতে হবে — সেটাই শেখে ।
  • শেখার সময় মডেল প্রতিবার একটা প্রেডিকশন করে, এবং দেখে সেটা আসল রেজাল্ট থেকে কতটা ভুল
  • এই ভুলের পরিমাণকে বলে error বা loss

লক্ষ্য থাকে: এই error কে ধাপে ধাপে কমানো

তখন আসে Gradient Descent ! প্রতিবার প্রেডিকশনের পর, মডেল error দেখে। এরপর derivative (gradient) ব্যবহার করে বুঝতে চায়: "আমি যে পথে weight বদলাচ্ছি, সেটা কি error কমাচ্ছে? নাকি বাড়াচ্ছে? কোন দিকে গেলে error কমবে?"

ডেরিভেটিভ কী দেয়?
Derivative বলে দেয়: বর্তমানে যে অবস্থানে আছি, ওখানে error কতটা পরিবর্তন হচ্ছে । এই পরিবর্তনের দিকটাই হচ্ছে gradient — যেটা মডেলকে বলে কোন দিকে গেলে error কমবে সেই দিকেই একটু একটু করে ওয়েট পরিবর্তন করা হয় — এই পুরো প্রক্রিয়াটার নামই Gradient Descent

Gradient descent হলো এমন একটা অ্যালগরিদম যা derivative দেখে weight কীভাবে পরিবর্তন করলে cost function কমবে — সেটা নির্ধারণ করে।

MachineLearning #ML

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.