মেশিন লার্নিং অ্যালগরিদম: গ্রেডিয়েন্ট ডিসেন্ট (Gradient Descent)
মেশিন লার্নিং অ্যালগরিদম এর সবচেয়ে গুরুত্ব পূর্ণ অংশ অপ্টিমাইজেশন । গ্রেডিয়েন্ট ডিসেন্ট হচ্ছে মেশিন লার্নিং এ বহুল ব্যবহৃত একটি অপটিমাইজেশন অ্যালগরিদম। লিনিয়ার রিগ্রেশন,লজিস্টিক রিগ্রেশন, সাপোর্ট ভেক্টর মেশিন, নিউরাল নেটওয়ার্ক সহ আরো অনেক জনপ্রিয় মেশিং লার্নিং অ্যালগোরিদমে অপটিমাইজেশনের জন্য গ্রেডিয়েন্ট ডিসেন্ট ব্যবহার করা হয়।
বাস্তব ধারণাঃ আপনি একজন ভ্রমণ পিপাসু মানুষ। অবসর পেলেই ছুুুটে যান বিভিন্ন স্থানে। গ্রীস্মের ছুটিতে একবার ঘুড়তে গেলেন পাহাড়ে। পাহাড়ের বিভিন্ন চূড়ায় উঠে নয়নাভিরাম দৃশ্য দেখতে দেখতে আপনি হারিয়ে গেলেন অজানায়। ইতিমধ্যে সন্ধ্যা ঘনিয়ে আসছে। আপনাকে বাসায় ফিরতে হবে, কিন্তু আপনি আপনার পথ খুঁজে পাচ্ছেন না। মনে করুন, নিচের ছবির মত আপনার অবস্থান।
পাহাড়ের সবচেয়ে ঢালু জায়গা C তে রয়েছে আপানার পথ। আপনি যদি Position 1 কিংবা Position 2 এ অবস্থান থেকে পাহাড়ের ঢালু বেয়ে নিচে নামতে থাকেন তাহলে কিন্তু আপনার পথ খুঁজে পাবেন না। কিন্তু আপনি যদি Position 3 থেকে পাহাড়ের ঢালু বেয়ে নিচে নামতে থাকেন তাহলে কিন্তু আপনার পথ খুঁজে পাবেন।
মেশিন লার্নিংয়ের ভাষায় পাহাড়ের ঢালু জায়গা A, B ও C হচ্ছে লোকাল মিনিমা (Local Minima)। আর লোকাল মিনিমার মধ্যে সবচেয়ে ঢালু জায়গা C (অর্থাৎ যে লোকাল মিনিমাম বিন্দু সর্বনিম্ন) কে বলে গ্লোবাল মিনিমাম (Global Minimum)। আপনার গন্তব্য হচ্ছে গ্লোবাল মিনিমাম পয়েন্টে যাওয়া।
গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম এভাবে গ্লোবাল মিনিমাম খুঁজে বের করে।
গ্রেডিয়েন্ট ডিসেন্টঃ গ্রেডিয়েন্ট মানে হচ্ছে ঢাল, আর ডিসেন্টের মানে কমানো। সুতরাং গ্রেডিয়েন্ট ডিসেন্টের অর্থ অনেকটা এই রকম দাড়ায়, ঢালের মান কমানো। গ্রেডিয়েন্ট ডিসেন্টে আমাদের লক্ষ্য থাকবে ঢালের মান কমাতে কমাতে সর্বনিম্ন অবস্থায় নিয়ে আসা অর্থাৎ একেবারে শূন্যের কাছাকাছি নিয়ে আসা। নিচের ছবিটি দেখুন-
ছবিটির B স্থানে ঢালের মান সর্বনিম্ন। আমরা বলতে পারি B হল গ্লোবাল মিনিমাম পয়েন্ট।সুতরাং লক্ষ্য হবে A অবস্থান থেকে স্লাইড বেয়ে B তে আসা। কিন্তু কিভাবে আসবো? নিচে হাতে কলমে গ্রেডিয়েন্ট ডিসেন্ট কিভাবে কাজ করে তা লিনিয়ার রিগ্রেশনের সাহায্যে বোঝার চেষ্টা করব।
গ্রেডিয়েন্ট ডিসেন্টের সাহায্যে লিনিয়ার রিগ্রেশনঃ
মেশিন লার্নিংয়ের গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম কিভাবে গ্লোবাল মিনিমাম পয়েন্ট খুঁজে বের করে তা বিস্তারিত বোঝার জন্য আমরা একটা ডেটাসেট নিব।
এই ডেটাসেটে x এবং y এর মধ্যে সহজ সরল সম্পর্ক কি হতে পারে? উত্তর হল সরল রেখা। অর্থাৎ আমাদের এমন একটি সরলরেখা দরকার যা দিয়ে ডেটা গুলো ফিট করা যায়।
আমরা জানি সরলরেখার সমীকরণ y = mx + b। এটাকে y কে y_predicted = f(x) = mx + b ফাংশন হিসাবে চিন্তা করি। এখন যদি m এবং b এর মান কোনভাবে বের করতে পারি তাহলে কিন্তু x এর বিভিন্ন মানের জন্য y এর মান কত হবে তা সরাসরি বের করা যাবে। এই y_predicted হল হাইপোথিসিস।
m ও b এর জন্য একটা মান ধরে নিব। ধরে নিলাম m = 3 এবং b = 2। এখন x = 3 যদি y_predicted = mx + b এই সমীকরণে বসাই তাহলে হাইপোথিসিস y_predicted এর মান পাই, 3 * 3 + 2 = 11। কিন্তু প্রকৃত পক্ষে আমাদের ডেটাসেট অনুযায়ী x এর মান 3 এর জন্য y_predicted এর মান 9 হওয়ার কথা। সুতরাং আমরা বলতে পারি এখানে এরর আছে। এররের পরিমাণ হল 11 - 9 = 2 । এখন m ও b এর মান আপডেট করে এররের পরিমাণ শূন্যের কাছাকাছি নিয়ে আসলে বলতে পারি আমাদের হিসাব সঠিক। গ্রেডিয়েন্ট ডিসেন্ট পদ্ধতির সাহায্যে সেই কাজটিই করব।
কস্ট ফাংশন (Cost Function) :
কস্ট ফাংশন হচ্ছে এররের পরিমাণ। উপরে x = 3 এর জন্য আমাদের y এর প্রেডিক্টেড মান এসেছে 11, কিন্তু y এর আসল মান 9। এখন আসল মানকে যদি A দিয়ে এবং প্রেডিক্টেড মানকে X দিয়ে লেখা যায় তাহলে কস্ট ফাংশন এরকম হতে পারে, F(X) = A - X। এটি সরাসরি আমাদের আসল মান এবং আন্দাজ করা মানের পার্থক্য রিটার্ন করবে।
কস্ট ফাংশন অনেক ধরনের হতে পারে। তবে আমরা লিনিয়ার রিগ্রেশনের জন্য যে কস্ট ফাংশন ব্যবহার করব তার নাম Squared Error Function। এটি খুবই জনপ্রিয় এবং সবচেয়ে বহুল ব্যবহৃত কস্ট ফাংশন। এটি নিম্নরূপ-
এখানে Error(m,b) হল কস্ট ফাংশন। এর প্যারামিটার m, b। একেক বারে একেক ধরণের মান m ও b তে বসিয়ে কস্ট ফাংশনের মান হিসেব করতে হবে। N হল ডেটাসেটে যতগুলো ডেটা পয়েন্ট আছে তার পরিমাণ। এখানে N = 5 হবে, কেননা আমাদের উপরের ডেটাসেটে 5 টি ডেটা পয়েন্ট আছে। তাই i এর মান 1 থেকে শুরু হয়ে 5 পর্যন্ত চলবে। yi হল আসল আউটপুট ভ্যালু। mxi+b কে আমরা সংক্ষেপে yprediction ও বলতে পারি, এটি আসল আউটপুট ভ্যালুর প্রেডিকশন ভ্যালু। xi হল ডেটা সেটটির প্রথম কলাম।
এখানে আসল আউটপুট এবং প্রেডিকশন আউটপুট যখন সমান হবে তখন কস্ট ফাংশন শূন্য হবে।
পার্শিয়াল ডেরিভেটিভঃ
আমাদের লক্ষ্য হচ্ছে m ও b এর এমন মান পাওয়া যার ফলে এরর শূন্য হবে। এজন্য আমরা m ও b এর ফার্স্ট অর্ডার ডেরিভেটিভ বের করে নিব। এর কারণ হল ফার্স্ট অর্ডার ডেরিভেটিভ দিয়ে-
উপরের কস্ট ফাংশন থেকে m ও b ফার্স্ট অর্ডার ডেরিভেটিভ করলে নিচের মত আসবে।

লার্নিং রেটঃ
লার্নিং রেট বোঝার জন্য আমরা আবার বাস্তব ধারণায় ফিরে যায়। মনে করুন, পাহাড়ের সবচেয়ে ঢালু জায়গা C এর বিস্তার 20 মিটার। আপনি প্রতিবার একবারে 50 মিটার পথ অতিক্রম করার পর সবচেয়ে ঢালু জায়গা খুঁজে দেখছেন। এভাবে আপনি আপনার গন্তব্যস্থল খুঁজে চলছেন।
এভাবে চললে আপনার গন্তব্যস্থল অতিক্রম করে চলে যাওয়ার সম্ভাবনা খুব বেশী। কিন্তু আপনি যদি প্রতিবার 15 মিটার করে পথ চলেন তবে নিশ্চিতভাবে বলা যায় আপনার গন্তব্যস্থল অতিক্রম করে চলে যাওয়ার সম্ভাবনা একেবারে শূন্য।
আবার যদি আপনি প্রতিবার 3 মিটার পথ অতিক্রম করার পরে খুঁজে দেখেন গন্তব্যস্থল পেয়েছেন কিনা। এক্ষেত্রে আপনি গন্তব্যস্থল খুঁজে পাবেন ঠিকই কিন্তু আপনার পরিশ্রম হবে অনেক বেশি।
কাজেই লার্নিং রেটের মান এমন হওয়া দরকার খুব বেশি না, আবার খুব কমও না। আমরা কোডিং করার সময় লার্নিং রেটের মান 0.01 ধরে নিব।
স্টেপ বাই স্টেপঃ
বোঝার সুবিধার জন্য কোডিং করার আগে স্টেপ বাই স্টেপ গ্রেডিয়েন্ট ডিসেন্ট কিভাবে কাজ করে তা দেখা যাক। আমাদের ডেটাসেটটি হল-
First iterations:
শুরুতে m ও b এর র্যান্ডম মান ধরে নিতে হবে। শুরুতেই ধরে নিই,
m = 0
b = 0
সুতরাং আমাদের হাইপোথিসিস দাঁড়ায়,
y_predicted = 0*x + 0
এখন তাহলে এই হাইপোথিসিসে আমাদের প্রথম ডেটাপয়েন্ট (1,5) থেকে x = 1 দিই, তাহলে মডেলের প্রেডিকশন হবে,
y_predicted = f(x) = mx + b
বা, y_predicted = f(1) = 0*1 + 0 = 0
একইভাবে বাকি ডেটাপয়েন্টের জন্য আমরা হিসাব করব। হিসেবের সুবিধার জন্য চার্ট আকারে লিখি :
সুতরাং m = 0 ও b = 0 এই প্যারামিটারের জন্য আমাদের ডেটাসেটের Cost হবে,
Cost = (1/n) * sum(Y-y_predicted)²
= (1/5) * (25 + 49 + 81 + 121 + 169)
= 445 / 5 = 89.0
Cost হিসেবে 89.0 কিন্তু অনেক বড় একটি মান। আমাদের লক্ষ্য হচ্ছে Cost-এর মানকে শূন্যতে নামিয়ে নিয়ে আসা। এখন, আমরা যেহুতু প্রথম ডেটাপয়েন্ট দেখিছি এতক্ষণে, সুতরাং প্রথম ডেটা পয়েন্ট দেখার পরে আমাদের একবার Weight বা প্যরামিটারের (parameter) মান আপডেট করতে হবে। প্যরামিটারের মান আপডেট করার সূত্র হচ্ছে,
W(m,b) = W(m,b) - learning_rate * δ/δW(m,b)
সুতরাং, m = m - learning_rate * δ/δm
এবং, b = b - learning_rate * δ/δb
Cost ফাংশন থেকে m ও b ফার্স্ট অর্ডার ডেরিভেটিভ করলে আসবে,

তাহলে,
δ/δm = -(2/n) * sum(x*(y-y_predicted))
= -(2/5) * (5 + 14 + 27 + 44 + 65) [ চার্ট থেকে]
= -310/5 = -62.0
আবার,
δ/δb = -(2/n) * sum(y-y_predicted)
= -(2/5) * (5 + 7 + 9 + 11 + 13) [ চার্ট থেকে]
= -90/5 = -18.0
আমরা learning_rate = 0.01 ধরে নিই।
তাহলে এখন m ও b-এর আপডেট মান দাঁড়াচ্ছে,
m = m - learning_rate * δ/δm
= 0 - 0.01 * (-62.0)
= 0.62
b = b - learning_rate * δ/δb
= 0 - 0.01 * (-18.0)
= 0.18
বাস্তব ধারণাঃ আপনি একজন ভ্রমণ পিপাসু মানুষ। অবসর পেলেই ছুুুটে যান বিভিন্ন স্থানে। গ্রীস্মের ছুটিতে একবার ঘুড়তে গেলেন পাহাড়ে। পাহাড়ের বিভিন্ন চূড়ায় উঠে নয়নাভিরাম দৃশ্য দেখতে দেখতে আপনি হারিয়ে গেলেন অজানায়। ইতিমধ্যে সন্ধ্যা ঘনিয়ে আসছে। আপনাকে বাসায় ফিরতে হবে, কিন্তু আপনি আপনার পথ খুঁজে পাচ্ছেন না। মনে করুন, নিচের ছবির মত আপনার অবস্থান।
পাহাড়ের সবচেয়ে ঢালু জায়গা C তে রয়েছে আপানার পথ। আপনি যদি Position 1 কিংবা Position 2 এ অবস্থান থেকে পাহাড়ের ঢালু বেয়ে নিচে নামতে থাকেন তাহলে কিন্তু আপনার পথ খুঁজে পাবেন না। কিন্তু আপনি যদি Position 3 থেকে পাহাড়ের ঢালু বেয়ে নিচে নামতে থাকেন তাহলে কিন্তু আপনার পথ খুঁজে পাবেন।
মেশিন লার্নিংয়ের ভাষায় পাহাড়ের ঢালু জায়গা A, B ও C হচ্ছে লোকাল মিনিমা (Local Minima)। আর লোকাল মিনিমার মধ্যে সবচেয়ে ঢালু জায়গা C (অর্থাৎ যে লোকাল মিনিমাম বিন্দু সর্বনিম্ন) কে বলে গ্লোবাল মিনিমাম (Global Minimum)। আপনার গন্তব্য হচ্ছে গ্লোবাল মিনিমাম পয়েন্টে যাওয়া।
গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম এভাবে গ্লোবাল মিনিমাম খুঁজে বের করে।
গ্রেডিয়েন্ট ডিসেন্টঃ গ্রেডিয়েন্ট মানে হচ্ছে ঢাল, আর ডিসেন্টের মানে কমানো। সুতরাং গ্রেডিয়েন্ট ডিসেন্টের অর্থ অনেকটা এই রকম দাড়ায়, ঢালের মান কমানো। গ্রেডিয়েন্ট ডিসেন্টে আমাদের লক্ষ্য থাকবে ঢালের মান কমাতে কমাতে সর্বনিম্ন অবস্থায় নিয়ে আসা অর্থাৎ একেবারে শূন্যের কাছাকাছি নিয়ে আসা। নিচের ছবিটি দেখুন-
ছবিটির B স্থানে ঢালের মান সর্বনিম্ন। আমরা বলতে পারি B হল গ্লোবাল মিনিমাম পয়েন্ট।সুতরাং লক্ষ্য হবে A অবস্থান থেকে স্লাইড বেয়ে B তে আসা। কিন্তু কিভাবে আসবো? নিচে হাতে কলমে গ্রেডিয়েন্ট ডিসেন্ট কিভাবে কাজ করে তা লিনিয়ার রিগ্রেশনের সাহায্যে বোঝার চেষ্টা করব।
গ্রেডিয়েন্ট ডিসেন্টের সাহায্যে লিনিয়ার রিগ্রেশনঃ
মেশিন লার্নিংয়ের গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম কিভাবে গ্লোবাল মিনিমাম পয়েন্ট খুঁজে বের করে তা বিস্তারিত বোঝার জন্য আমরা একটা ডেটাসেট নিব।
এই ডেটাসেটে x এবং y এর মধ্যে সহজ সরল সম্পর্ক কি হতে পারে? উত্তর হল সরল রেখা। অর্থাৎ আমাদের এমন একটি সরলরেখা দরকার যা দিয়ে ডেটা গুলো ফিট করা যায়।
আমরা জানি সরলরেখার সমীকরণ y = mx + b। এটাকে y কে y_predicted = f(x) = mx + b ফাংশন হিসাবে চিন্তা করি। এখন যদি m এবং b এর মান কোনভাবে বের করতে পারি তাহলে কিন্তু x এর বিভিন্ন মানের জন্য y এর মান কত হবে তা সরাসরি বের করা যাবে। এই y_predicted হল হাইপোথিসিস।
m ও b এর জন্য একটা মান ধরে নিব। ধরে নিলাম m = 3 এবং b = 2। এখন x = 3 যদি y_predicted = mx + b এই সমীকরণে বসাই তাহলে হাইপোথিসিস y_predicted এর মান পাই, 3 * 3 + 2 = 11। কিন্তু প্রকৃত পক্ষে আমাদের ডেটাসেট অনুযায়ী x এর মান 3 এর জন্য y_predicted এর মান 9 হওয়ার কথা। সুতরাং আমরা বলতে পারি এখানে এরর আছে। এররের পরিমাণ হল 11 - 9 = 2 । এখন m ও b এর মান আপডেট করে এররের পরিমাণ শূন্যের কাছাকাছি নিয়ে আসলে বলতে পারি আমাদের হিসাব সঠিক। গ্রেডিয়েন্ট ডিসেন্ট পদ্ধতির সাহায্যে সেই কাজটিই করব।
কস্ট ফাংশন (Cost Function) :
কস্ট ফাংশন হচ্ছে এররের পরিমাণ। উপরে x = 3 এর জন্য আমাদের y এর প্রেডিক্টেড মান এসেছে 11, কিন্তু y এর আসল মান 9। এখন আসল মানকে যদি A দিয়ে এবং প্রেডিক্টেড মানকে X দিয়ে লেখা যায় তাহলে কস্ট ফাংশন এরকম হতে পারে, F(X) = A - X। এটি সরাসরি আমাদের আসল মান এবং আন্দাজ করা মানের পার্থক্য রিটার্ন করবে।
কস্ট ফাংশন অনেক ধরনের হতে পারে। তবে আমরা লিনিয়ার রিগ্রেশনের জন্য যে কস্ট ফাংশন ব্যবহার করব তার নাম Squared Error Function। এটি খুবই জনপ্রিয় এবং সবচেয়ে বহুল ব্যবহৃত কস্ট ফাংশন। এটি নিম্নরূপ-
এখানে Error(m,b) হল কস্ট ফাংশন। এর প্যারামিটার m, b। একেক বারে একেক ধরণের মান m ও b তে বসিয়ে কস্ট ফাংশনের মান হিসেব করতে হবে। N হল ডেটাসেটে যতগুলো ডেটা পয়েন্ট আছে তার পরিমাণ। এখানে N = 5 হবে, কেননা আমাদের উপরের ডেটাসেটে 5 টি ডেটা পয়েন্ট আছে। তাই i এর মান 1 থেকে শুরু হয়ে 5 পর্যন্ত চলবে। yi হল আসল আউটপুট ভ্যালু। mxi+b কে আমরা সংক্ষেপে yprediction ও বলতে পারি, এটি আসল আউটপুট ভ্যালুর প্রেডিকশন ভ্যালু। xi হল ডেটা সেটটির প্রথম কলাম।
এখানে আসল আউটপুট এবং প্রেডিকশন আউটপুট যখন সমান হবে তখন কস্ট ফাংশন শূন্য হবে।
পার্শিয়াল ডেরিভেটিভঃ
আমাদের লক্ষ্য হচ্ছে m ও b এর এমন মান পাওয়া যার ফলে এরর শূন্য হবে। এজন্য আমরা m ও b এর ফার্স্ট অর্ডার ডেরিভেটিভ বের করে নিব। এর কারণ হল ফার্স্ট অর্ডার ডেরিভেটিভ দিয়ে-
- একটা ফাংশনের ডিরেকশন কোন দিকে, ফাংশনটি ইনক্রিজিং না ডিক্রিজিং সেটা ওই ফাংশনের ফার্স্ট অর্ডার ডেরিভেটিভ থেকে জানা যায়।
- ফার্স্ট অর্ডার ডেরিভেটিভ দিয়ে ফাংশনের ঢালও প্রকাশ পায়।
উপরের কস্ট ফাংশন থেকে m ও b ফার্স্ট অর্ডার ডেরিভেটিভ করলে নিচের মত আসবে।

লার্নিং রেটঃ
লার্নিং রেট বোঝার জন্য আমরা আবার বাস্তব ধারণায় ফিরে যায়। মনে করুন, পাহাড়ের সবচেয়ে ঢালু জায়গা C এর বিস্তার 20 মিটার। আপনি প্রতিবার একবারে 50 মিটার পথ অতিক্রম করার পর সবচেয়ে ঢালু জায়গা খুঁজে দেখছেন। এভাবে আপনি আপনার গন্তব্যস্থল খুঁজে চলছেন।
এভাবে চললে আপনার গন্তব্যস্থল অতিক্রম করে চলে যাওয়ার সম্ভাবনা খুব বেশী। কিন্তু আপনি যদি প্রতিবার 15 মিটার করে পথ চলেন তবে নিশ্চিতভাবে বলা যায় আপনার গন্তব্যস্থল অতিক্রম করে চলে যাওয়ার সম্ভাবনা একেবারে শূন্য।
আবার যদি আপনি প্রতিবার 3 মিটার পথ অতিক্রম করার পরে খুঁজে দেখেন গন্তব্যস্থল পেয়েছেন কিনা। এক্ষেত্রে আপনি গন্তব্যস্থল খুঁজে পাবেন ঠিকই কিন্তু আপনার পরিশ্রম হবে অনেক বেশি।
কাজেই লার্নিং রেটের মান এমন হওয়া দরকার খুব বেশি না, আবার খুব কমও না। আমরা কোডিং করার সময় লার্নিং রেটের মান 0.01 ধরে নিব।
স্টেপ বাই স্টেপঃ
বোঝার সুবিধার জন্য কোডিং করার আগে স্টেপ বাই স্টেপ গ্রেডিয়েন্ট ডিসেন্ট কিভাবে কাজ করে তা দেখা যাক। আমাদের ডেটাসেটটি হল-
First iterations:
শুরুতে m ও b এর র্যান্ডম মান ধরে নিতে হবে। শুরুতেই ধরে নিই,
m = 0
b = 0
সুতরাং আমাদের হাইপোথিসিস দাঁড়ায়,
y_predicted = 0*x + 0
এখন তাহলে এই হাইপোথিসিসে আমাদের প্রথম ডেটাপয়েন্ট (1,5) থেকে x = 1 দিই, তাহলে মডেলের প্রেডিকশন হবে,
y_predicted = f(x) = mx + b
বা, y_predicted = f(1) = 0*1 + 0 = 0
একইভাবে বাকি ডেটাপয়েন্টের জন্য আমরা হিসাব করব। হিসেবের সুবিধার জন্য চার্ট আকারে লিখি :
সুতরাং m = 0 ও b = 0 এই প্যারামিটারের জন্য আমাদের ডেটাসেটের Cost হবে,
Cost = (1/n) * sum(Y-y_predicted)²
= (1/5) * (25 + 49 + 81 + 121 + 169)
= 445 / 5 = 89.0
Cost হিসেবে 89.0 কিন্তু অনেক বড় একটি মান। আমাদের লক্ষ্য হচ্ছে Cost-এর মানকে শূন্যতে নামিয়ে নিয়ে আসা। এখন, আমরা যেহুতু প্রথম ডেটাপয়েন্ট দেখিছি এতক্ষণে, সুতরাং প্রথম ডেটা পয়েন্ট দেখার পরে আমাদের একবার Weight বা প্যরামিটারের (parameter) মান আপডেট করতে হবে। প্যরামিটারের মান আপডেট করার সূত্র হচ্ছে,
সুতরাং, m = m - learning_rate * δ/δm
এবং, b = b - learning_rate * δ/δb
Cost ফাংশন থেকে m ও b ফার্স্ট অর্ডার ডেরিভেটিভ করলে আসবে,

তাহলে,
δ/δm = -(2/n) * sum(x*(y-y_predicted))
= -(2/5) * (5 + 14 + 27 + 44 + 65) [ চার্ট থেকে]
= -310/5 = -62.0
আবার,
δ/δb = -(2/n) * sum(y-y_predicted)
= -(2/5) * (5 + 7 + 9 + 11 + 13) [ চার্ট থেকে]
= -90/5 = -18.0
আমরা learning_rate = 0.01 ধরে নিই।
তাহলে এখন m ও b-এর আপডেট মান দাঁড়াচ্ছে,
m = m - learning_rate * δ/δm
= 0 - 0.01 * (-62.0)
= 0.62
b = b - learning_rate * δ/δb
= 0 - 0.01 * (-18.0)
= 0.18
No comments