পাঠ ৪৪ · ৫৭-এর মধ্যে · মডিউল ১০
Home / Courses / Engineering Economics / লার্নিং কার্ভ

লার্নিং কার্ভ

Learning curves
৯ মিনিট পড়া মধ্যবর্তী · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • লার্নিং কার্ভ কী, এবং "৮৫% লার্নিং কার্ভ" এই ধরনের বর্ণনা আসলে কী বোঝায়
  • লার্নিং কার্ভ সূত্র $T_n = T_1 \cdot n^b$ ও এক্সপোনেন্ট $b$ কীভাবে বের হয়
  • Python-এ learning_curve_time() ফাংশন লিখে একটি উৎপাদন উদাহরণে ইউনিট ২, ৪, ৮, ১৬, ৩২-এর সময় বের করা
  • ইউনিট ১ থেকে ২০ পর্যন্ত ক্রমযোজিত মোট লেবার-আওয়ার হিসাব করে দেখা গড় সময়/ইউনিট কীভাবে কমতে থাকে

১ · লার্নিং কার্ভ কী

লার্নিং কার্ভLearning Curveএকটি অভিজ্ঞতাভিত্তিক সম্পর্ক, যেখানে উৎপাদনের সংখ্যা দ্বিগুণ হলে প্রতি-ইউনিট সময়/কস্ট একটি নির্দিষ্ট শতকরা হারে কমে যায়। একটি পর্যবেক্ষণভিত্তিক সত্য বর্ণনা করে — একই কাজ যত বেশিবার করা হয়, শ্রমিক বা টিম তত দক্ষ হয়ে ওঠে, ফলে প্রতিটি পরবর্তী ইউনিট তৈরিতে আগের চেয়ে কম সময় লাগে। এই প্রভাবের মাত্রা প্রকাশ করা হয় একটি লার্নিং রেট দিয়ে — যেমন "৮৫% লার্নিং কার্ভ" মানে উৎপাদনের সংখ্যা প্রতিবার দ্বিগুণ হলে (১→২, ২→৪, ৪→৮...) প্রতি-ইউনিট সময় আগের সময়ের ৮৫%-এ নেমে আসে।

লার্নিং কার্ভ সূত্র
$$T_n = T_1 \cdot n^b$$ $T_1$ = প্রথম ইউনিটের সময়/কস্ট, $T_n$ = $n$-তম ইউনিটের সময়/কস্ট।
এক্সপোনেন্ট $b$
$$b = \frac{\ln(\text{learning rate})}{\ln 2}$$ লার্নিং রেট ০.৮৫ (৮৫%) হলে $b \approx -0.2345$ — নেগেটিভ, কারণ সময় কমতে থাকে।
লার্নিং রেট যত কম (যেমন ৭০%), শেখার গতি তত বেশি (প্রতি দ্বিগুণে সময় দ্রুত কমে)। লার্নিং রেট ১০০% হলে $b = 0$, অর্থাৎ $T_n = T_1$ সবসময় — কোনো শেখার প্রভাবই নেই।

২ · Python-এ লার্নিং কার্ভ ও সেলফ-চেক

ধরা যাক একটি নতুন প্রোডাক্টের প্রথম ইউনিট তৈরিতে ১০০ লেবার-আওয়ার লাগে, আর কোম্পানির উৎপাদন লাইনে ৮৫% লার্নিং কার্ভ প্রযোজ্য। নিচের কোডে learning_curve_time() ফাংশন দিয়ে বিভিন্ন ইউনিট সংখ্যায় সময় বের করা হয়েছে, এবং একটি সেলফ-চেক দিয়ে যাচাই করা হয়েছে যে সংজ্ঞা অনুযায়ী ইউনিট ২-এর সময় সত্যিই ঠিক $0.85 \times T_1$-এর সমান আসে কি না।

Python
import math

# লার্নিং কার্ভ -- T_n = T_1 * n^b, b = ln(learning_rate) / ln(2)

def learning_curve_time(t1, learning_rate, n):
    b = math.log(learning_rate) / math.log(2)
    return t1 * n ** b

t1 = 100              # প্রথম ইউনিটে লাগা লেবার-আওয়ার
learning_rate = 0.85   # ৮৫% লার্নিং কার্ভ

b = math.log(learning_rate) / math.log(2)
print(f"T1 = {t1} ঘন্টা, লার্নিং রেট = {learning_rate*100:.0f}%, b = {b:.4f}")

print("\nইউনিট | সময় (ঘন্টা)")
for n in [1, 2, 4, 8, 16, 32]:
    t = learning_curve_time(t1, learning_rate, n)
    print(f"{n:5d} | {t:.4f}")

# সেলফ-চেক -- সংজ্ঞা অনুযায়ী ইউনিট ২-এর সময় ঠিক learning_rate * T1 হওয়া বাধ্যতামূলক
t2 = learning_curve_time(t1, learning_rate, 2)
assert abs(t2 - learning_rate * t1) < 1e-9
print(f"\nসেলফ-চেক: T_2 = {t2:.4f}  ==  learning_rate * T1 = {learning_rate * t1:.4f}  (পাস)")

# ক্রমযোজিত (cumulative) মোট লেবার-আওয়ার -- ইউনিট ১ থেকে ২০ পর্যন্ত
print("\nইউনিট | এই ইউনিটের সময় | ক্রমযোজিত মোট | গড় সময়/ইউনিট")
cumulative = 0.0
for n in range(1, 21):
    t = learning_curve_time(t1, learning_rate, n)
    cumulative += t
    avg = cumulative / n
    print(f"{n:5d} | {t:8.2f} ঘন্টা | {cumulative:10.2f} ঘন্টা | {avg:8.2f} ঘন্টা")

    
লক্ষ্য করুন T_2 = 85.00 ঠিক learning_rate * T1 = 0.85 * 100 = 85.00-এর সমান — এটি কাকতালীয় নয়, বরং $b$-এর সংজ্ঞা থেকেই গাণিতিকভাবে নিশ্চিত: $2^b = 2^{\ln(0.85)/\ln 2} = 0.85$, তাই $T_2 = T_1 \cdot 2^b = T_1 \cdot 0.85$ সবসময় সত্য থাকবে। এই ধরনের সেলফ-চেক লেখা একটি ভালো অভ্যাস — সূত্রে ভুল থাকলে assert সাথে সাথেই ধরা পড়ত।
মূল কথা · Key takeaway

লার্নিং কার্ভ দেখায় প্রতি-ইউনিট সময়/কস্ট কেন উৎপাদনের শুরুতে দ্রুত কমে, তারপর ধীরে ধীরে সমতল হয়ে আসে — এবং ক্রমযোজিত মোট সময় বের করতে প্রতিটি ইউনিটের সময় আলাদাভাবে যোগ করতে হয়, কোনো সরলীকৃত শর্টকাট (যেমন গড় × সংখ্যা) সঠিক ফল দেয় না। পরের পাঠে দেখা যাবে একটি অ্যাসেটের সম্পূর্ণ জীবনকালের সব খরচ (ক্রয় থেকে ডিসপোজাল পর্যন্ত) কীভাবে একটি লাইফ-সাইকেল কস্ট (LCC)-এ একত্র করে বিভিন্ন বিকল্প তুলনা করা হয়।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ ইউনিট ৪-এর সময় কেন ঠিক $0.85^2 \times T_1$-এর সমান, $0.85 \times T_2$-এর মতো সরল কোনো হিসাব নয় (যদিও দুটোই একই ফল দেয়)?

কারণ ইউনিট ১ থেকে ইউনিট ২-এ যাওয়া একটি দ্বিগুণ ধাপ, আর ইউনিট ২ থেকে ইউনিট ৪-এ যাওয়াও আরেকটি দ্বিগুণ ধাপ — প্রতিটি দ্বিগুণ ধাপে সময় ০.৮৫ গুণ হয়। তাই ইউনিট ১ থেকে ইউনিট ৪ পর্যন্ত মোট দুটো দ্বিগুণ ধাপ ঘটেছে, ফলে মোট গুণক হলো $0.85 \times 0.85 = 0.85^2$। এটি দেখায় কেন সূত্রে $n^b$ ব্যবহার করা হয়, শুধু $n$-এর সরল গুণিতক নয়।

প্র ০২ ক্রমযোজিত গড় সময়/ইউনিট সবসময় ইউনিট-১-এর সময়ের চেয়ে কম কেন, এমনকি ইউনিট সংখ্যা যতই বাড়ুক?

কারণ প্রথম ইউনিটের পর থেকে প্রতিটি নতুন ইউনিটের সময় আগেরটির চেয়ে কম (যতক্ষণ লার্নিং রেট < ১০০%) — তাই গড় বের করার সময় বেশি সংখ্যক "কম সময়ের" ইউনিট মিশে গিয়ে সামগ্রিক গড়কে নিচে টেনে নামায়। তবে গড় কখনো একদম শূন্যে যায় না — লার্নিং কার্ভ ধীরে ধীরে সমতল হয়ে আসে, কারণ প্রতিটি নতুন দ্বিগুণ ধাপে উন্নতির পরিমাণ কমতে থাকে।

প্র ০৩ লার্নিং কার্ভ কি অসীমকাল ধরে চলতেই থাকে, নাকি বাস্তবে এর কোনো সীমা আছে?

গাণিতিকভাবে $T_n = T_1 \cdot n^b$ কখনো ঠিক শূন্যে পৌঁছায় না, কিন্তু বাস্তবে লার্নিং কার্ভের একটি ব্যবহারিক সীমা থাকে — একটা পর্যায়ে শ্রমিকের দক্ষতা, মেশিনের গতি বা প্রসেসের ফিজিক্যাল সীমার কারণে প্রতি-ইউনিট সময় আর কমতে পারে না এবং একটি স্থির ন্যূনতম মানে গিয়ে থিতু হয়। বাস্তব প্রয়োগে তাই লার্নিং কার্ভ মডেলটি শুধু একটি নির্দিষ্ট রেঞ্জের ইউনিট সংখ্যার জন্যই নির্ভরযোগ্য।

অনুশীলন

  1. চিন্তা করুন: দুটো কারখানা একই প্রোডাক্ট বানায় — একটির লার্নিং রেট ৭০%, আরেকটির ৯৫%। কোন কারখানা ১০০তম ইউনিট তৈরিতে তুলনামূলক কম সময় নেবে, এবং কেন?

    ৭০% লার্নিং রেটের কারখানা অনেক কম সময় নেবে, কারণ কম লার্নিং রেট মানে প্রতিবার উৎপাদন দ্বিগুণ হলে সময় আরও বেশি কমে যায় (দ্রুত শেখা)। ৯৫% লার্নিং রেট প্রায় কোনো উন্নতি না হওয়ার কাছাকাছি (১০০%-এর কাছাকাছি মানে $b$ শূন্যের কাছাকাছি, প্রায় কোনো শেখার প্রভাব নেই)।

  2. পরীক্ষা করুন: উপরের কোড সেলে learning_rate = 0.85-কে learning_rate = 0.90-এ বদলে Run চেপে দেখুন b-এর মান ও ২০ ইউনিটের ক্রমযোজিত মোট সময় কীভাবে বদলায়।

    learning_rate=0.90 হলে b = ln(0.90)/ln(2) ≈ -0.1520 — আগের -0.2345-এর চেয়ে শূন্যের কাছাকাছি, অর্থাৎ কম শেখার প্রভাব। ফলে প্রতিটি ইউনিটের সময় আগের চেয়ে বেশি থাকবে, এবং ২০ ইউনিটের ক্রমযোজিত মোট সময়ও বেড়ে যাবে (কারণ প্রতিটি ইউনিট তুলনামূলক ধীরে তৈরি হচ্ছে)। সেলফ-চেক তখনও পাস করবে, কারণ T_2 = 0.90 * T1 সংজ্ঞা অনুযায়ী সবসময় সত্য।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ টাইম ভ্যালু অফ মানি, ক্যাশ ফ্লো সিরিজ, ওয়ার্থ-ভিত্তিক তুলনা, রেট অফ রিটার্ন, ডেপ্রিসিয়েশন, ট্যাক্স, ইনফ্লেশন, রিস্ক অ্যানালাইসিস ও ক্যাপিটাল বাজেটিং — সম্পূর্ণ কোর্স এক জায়গায়।
  • Discrete Mathematics কোর্স সহোদর কোর্স সিকোয়েন্স ও সিরিজের সমষ্টির ধারণা — এই পাঠের ক্রমযোজিত লেবার-আওয়ার হিসাবের সরাসরি ভিত্তি সেখানেই তৈরি হয়েছে।
  • সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design, Software Engineering & Git, Theory of Computation ও Engineering Economics — সব এক জায়গায়।
আগের পাঠ
কস্ট ইনডেক্স ও কস্ট-ক্যাপাসিটি ফ্যাক্টর