পাঠ ২৭ · ৫৭-এর মধ্যে · মডিউল ৬
Home / AI Courses / Human-Centered AI / মডিউল ৬

ফিডব্যাক লুপ — ব্যবহারকারীকে সংশোধন ও শেখানোর সুযোগ দেওয়া

Feedback loops — letting users correct & teach the system
৯ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

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

  • ফিডব্যাক লুপ কী এবং এক্সপ্লিসিট বনাম ইমপ্লিসিট ফিডব্যাকের পার্থক্য
  • একটি সত্যিকারের EMA-ভিত্তিক সিমুলেশন যা দেখায় সংশোধন কীভাবে অনুমানকে সত্যের কাছাকাছি নিয়ে আসে
  • ফিডব্যাক-ক্যাপচার UX ডিজাইনের ব্যবহারিক নীতিমালা
  • কেন ব্যবহারকারীকে সংশোধনের জন্য "শাস্তি" দেওয়া (ঘর্ষণ তৈরি করা) ক্ষতিকর

১ · ফিডব্যাক লুপ কী এবং কেন গুরুত্বপূর্ণ

ফিডব্যাক লুপFeedback Loopএকটি ডিজাইন প্যাটার্ন যেখানে ব্যবহারকারীর সংশোধন বা প্রতিক্রিয়া সিস্টেমে ফিরে যায় এবং ভবিষ্যতের আচরণ প্রভাবিত করে। ছাড়া একটি AI সিস্টেম স্থবির থাকে — এটি একই ভুল বারবার করতে থাকে, কারণ কোনো সংকেত নেই যা বলে দেয় কোন আউটপুটগুলো আসলে কাজে লাগছে না। ফিডব্যাক লুপ দুই ধরনের হতে পারে:

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

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

২ · একটি সত্যিকারের সিমুলেশন — সংশোধন থেকে শেখা

নিচের সিমুলেশনে ধরা যাক একটি AI ইমেইল-অ্যাসিস্ট্যান্ট প্রতিটি নতুন ব্যবহারকারীর জন্য একটি জেনেরিক ডিফল্ট অনুমান দিয়ে শুরু করে: রিপ্লাই প্রায় ৪০ শব্দ লম্বা হওয়া উচিত। কিন্তু এই নির্দিষ্ট ব্যবহারকারী আসলে অনেক সংক্ষিপ্ত রিপ্লাই পছন্দ করেন (প্রকৃত পছন্দ ১৫ শব্দ — সিস্টেম এটা আগে থেকে জানে না)। প্রতিবার ব্যবহারকারী AI-এর সাজেশন সংক্ষিপ্ত করে পাঠালে, সেটি একটি ইমপ্লিসিট সংশোধন-সংকেত হিসেবে কাজ করে, এবং একটি এক্সপোনেনশিয়াল মুভিং এভারেজ (EMA) দিয়ে সিস্টেমের অনুমান আপডেট হয়।

Python
true_preference = 15  # ব্যবহারকারীর প্রকৃত পছন্দের রিপ্লাই-দৈর্ঘ্য (শব্দে) -- সিস্টেম এটা জানে না, শুধু সিমুলেশনের জন্য রাখা হলো

initial_estimate = 40  # সিস্টেমের ডিফল্ট (জেনেরিক গড় ব্যবহারকারীর উপর ভিত্তি করে) অনুমান

# ব্যবহারকারী যতবার AI-এর সাজেস্ট করা রিপ্লাই সংক্ষিপ্ত করে পাঠায়, ততবার একটি "সংশোধন সংকেত" আসে
observed_corrections = [18, 12, 20, 14, 16, 11, 15, 13]

def update_estimate(estimate, observed, alpha=0.3):
    # এক্সপোনেনশিয়াল মুভিং এভারেজ (EMA): প্রতিটি নতুন সংকেত পুরনো অনুমানকে সামান্য দিকে ঠেলে দেয়
    return alpha * observed + (1 - alpha) * estimate

estimate = initial_estimate
error_before = abs(estimate - true_preference)
print(f"শুরুতে সিস্টেমের অনুমান: {estimate} শব্দ (প্রকৃত পছন্দ {true_preference} শব্দ থেকে {error_before} শব্দ দূরে)")

for i, observed in enumerate(observed_corrections, start=1):
    estimate = update_estimate(estimate, observed)
    error = abs(estimate - true_preference)
    print(f"সংশোধন {i} (ব্যবহারকারী {observed} শব্দে সংক্ষিপ্ত করলো) -> নতুন অনুমান: {estimate:.1f} শব্দ, ত্রুটি: {error:.1f} শব্দ")

error_after = abs(estimate - true_preference)
improvement = (1 - error_after / error_before) * 100
print(f"\nমোট {len(observed_corrections)}টি সংশোধনের পর ত্রুটি {error_before} শব্দ থেকে কমে {error_after:.1f} শব্দে নেমেছে "
      f"({improvement:.1f}% উন্নতি)")

    
শুরুতে অনুমান (৪০ শব্দ) প্রকৃত পছন্দ (১৫ শব্দ) থেকে ২৫ শব্দ দূরে ছিল। মাত্র ৮টি সংশোধনের পর অনুমান ১৫.৫ শব্দে পৌঁছায় — ত্রুটি নেমে আসে মাত্র ০.৫ শব্দে, অর্থাৎ প্রায় ৯৮% উন্নতি। লক্ষ্য করুন এটি ধাপে ধাপে ঘটেছে — প্রতিটি একক সংশোধন সামান্য প্রভাব ফেলে, কিন্তু কয়েকটি সংশোধন মিলে বড় পার্থক্য তৈরি করে। এটাই একটি ভালো ফিডব্যাক লুপের বৈশিষ্ট্য — কোনো একটি সংশোধনের উপর অতিরিক্ত নির্ভর না করে (যা নয়েজের কারণে বিভ্রান্তিকর হতে পারে) ধীরে ধীরে সামঞ্জস্য করা।

৩ · ফিডব্যাক-ক্যাপচার UX ডিজাইনের নীতিমালা

সংশোধন সহজ ও দ্রুত রাখুন
যদি একটি সাজেশন সংশোধন করতে অনেক ধাপ লাগে, ব্যবহারকারী বরং প্রশ্নহীনভাবে মেনে নেবে বা এড়িয়ে যাবে — কোনোটাই কার্যকর ফিডব্যাক তৈরি করে না।
সংশোধনকে "শাস্তি" বানাবেন না
যদি প্রতিটি সংশোধনের জন্য অতিরিক্ত নিশ্চিতকরণ, ব্যাখ্যা-দেওয়া, বা ধীরগতির প্রক্রিয়া লাগে, ব্যবহারকারী ফিডব্যাক দেওয়াই বন্ধ করে দেবে।
একক আউটলায়ারের উপর অতিরিক্ত নির্ভর করবেন না
উপরের সিমুলেশনের EMA-এর মতো, একটি একক অস্বাভাবিক সংশোধনে সম্পূর্ণ বদলে যাওয়ার বদলে ধীরে ধীরে সামঞ্জস্য করা বেশি স্থিতিশীল।
M3 ট্রাস্ট ক্যালিব্রেশনের সাথে সম্পর্ক

ফিডব্যাক লুপ শুধু সিস্টেমকে উন্নত করে না — এটি ব্যবহারকারীর ট্রাস্টও ক্যালিব্রেট করে। যখন একজন ব্যবহারকারী দেখে তার সংশোধন সত্যিই ভবিষ্যৎ আচরণ বদলে দিচ্ছে, তার মধ্যে একটি সঠিক ধারণা তৈরি হয় যে সিস্টেমটি স্ট্যাটিক নয়, বরং তার সাথে খাপ খাচ্ছে — এটি M3-এর ট্রাস্ট-ক্যালিব্রেশন নীতির সাথে সরাসরি যুক্ত।

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

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

প্র ০১ উপরের কোড সেলে alpha মান ছিল ০.৩। এই মান বাড়ালে (যেমন ০.৫) সিস্টেম প্রতিটি সংশোধনে বেশি "নমনীয়" হয়ে উঠবে। এর কোনো ঝুঁকি আছে কি?

হ্যাঁ — alpha মান বেশি হলে সিস্টেম প্রতিটি নতুন সংকেতে খুব বেশি প্রতিক্রিয়া দেখায়, যার মানে একটি নয়েজি বা অস্বাভাবিক একক সংশোধন (হয়তো ব্যবহারকারী ভুলবশত একটি অস্বাভাবিক ছোট রিপ্লাই পাঠিয়েছে) সিস্টেমের সামগ্রিক অনুমান অনেকটাই বদলে দিতে পারে। বাস্তবে alpha = 0.5 দিয়ে চালালে অনুমান শেষে প্রায় ১৩.৭ শব্দে (ত্রুটি ~১.৩) পৌঁছায় — alpha = 0.3-এর ত্রুটি ০.৫-এর চেয়ে বেশি অস্থির, কারণ এটি সাম্প্রতিক নয়েজের উপর বেশি নির্ভর করে। কম alpha ধীর কিন্তু স্থিতিশীল; বেশি alpha দ্রুত কিন্তু নয়েজ-সংবেদনশীল — এটি একটি ক্লাসিক ট্রেড-অফ।

প্র ০২ ইমপ্লিসিট ফিডব্যাক (যেমন সম্পাদনা করে পাঠানো) সবসময় নির্ভরযোগ্য সংকেত নাও হতে পারে কেন?

একজন ব্যবহারকারী একটি সাজেশন সম্পাদনা করতে পারে কারণ এটি ভুল ছিল, অথবা শুধু ব্যক্তিগত স্টাইলের পছন্দে (দুটোই একই সংকেত তৈরি করে)। এই দুই কারণ আলাদা করা কঠিন — যদি সিস্টেম ভুলভাবে "ব্যক্তিগত স্টাইল"-কে "সিস্টেমের ভুল" হিসেবে ধরে নিয়ে অতিরিক্ত সংশোধন করে, ফলাফল হতে পারে উল্টো দিকে ওভার-কারেক্ট করা। এই কারণেই এক্সপ্লিসিট ফিডব্যাক (সরাসরি "এটা ভুল" বলা) প্রায়ই বেশি নির্ভরযোগ্য।

প্র ০৩ এমন একটি অ্যাপের কথা চিন্তা করুন যেখানে আপনি বারবার একই ধরনের সংশোধন করেছেন, অথচ AI কখনো তা থেকে শেখেনি। এটি আপনার আচরণে কী প্রভাব ফেলেছিল?

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

অনুশীলন

  1. চিন্তা করুন: উপরের কোড সেলে যদি শুধু প্রথম ৩টি সংশোধন ([18, 12, 20]) ব্যবহার করা হতো, চূড়ান্ত ত্রুটি কি ৮টি সংশোধন ব্যবহার করার (০.৫ শব্দ) চেয়ে বেশি হবে বলে আপনার ধারণা?

    হ্যাঁ, বেশি হওয়া উচিত — কারণ কম সংশোধন মানে EMA-এর কম সুযোগ পুরনো (৪০-এর কাছাকাছি) অনুমান থেকে সরে আসার। কোড সেলের প্রিন্ট আউটে দেখা যায়, ৩টি সংশোধনের পরই ত্রুটি ৯.৯ শব্দে ছিল — যা ৮টি সংশোধনের পরের ০.৫ শব্দের চেয়ে অনেক বেশি।

  2. পরীক্ষা করুন: উপরের কোড সেলে observed_corrections তালিকাটিকে শুধু [18, 12, 20]-এ ছোট করে Run চেপে আপনার অনুমান যাচাই করুন।

    তালিকাটি ছোট করলে আউটপুট দেখাবে ৩টি সংশোধনের পর অনুমান ২৪.৯ শব্দ, ত্রুটি ৯.৯ শব্দ (উন্নতি মাত্র ~৬০.৪%) — সম্পূর্ণ ৮টি সংশোধনের ৯৮% উন্নতির তুলনায় অনেক কম। এটি নিশ্চিত করে যে ফিডব্যাক লুপের কার্যকারিতা একবার-সংশোধনের উপর নির্ভর করে না, বরং সময়ের সাথে ধারাবাহিক সংশোধনের সঞ্চিত প্রভাবের উপর নির্ভর করে।

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

  • পরবর্তী পাঠ L28 সাধারণ AI UX প্যাটার্ন — সাজেশন, অটোকমপ্লিট, জেনারেটিভ প্রিভিউ — যেখানে ফিডব্যাক-ক্যাপচার প্রায়ই ইন্টারফেসের মধ্যেই বোনা থাকে।
  • L10 · ট্রাস্ট ক্যালিব্রেশন M3 ওভার-ট্রাস্ট ও আন্ডার-ট্রাস্ট এড়ানোর মূল কৌশল — ফিডব্যাক লুপ যে ট্রাস্ট গড়ে তোলে তার গভীর ভিত্তি।
  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ ট্রাস্ট ক্যালিব্রেশন থেকে এক্সপ্লেইনেবিলিটি, হিউম্যান-ইন-দ্য-লুপ ডিজাইন, কগনিটিভ লোড, অ্যাক্সেসিবিলিটি, হিউম্যান-AI টিমিং, ইউজেবিলিটি ইভালুয়েশন ও ইন্ডাস্ট্রি ফ্রেমওয়ার্ক।
আগের পাঠ
ব্যবহারকারীদের AI-এর সক্ষমতা ও সীমাবদ্ধতায় অনবোর্ড করা