মিসইনফরমেশন ও অ্যালগরিদমিক অ্যামপ্লিফিকেশন
এই পাঠে যা শিখবেন
- কেন বেশিরভাগ ফিড/রিকমেন্ডেশন অ্যালগরিদম এনগেজমেন্ট-অপ্টিমাইজিং হিসেবে ডিজাইন করা হয়
- এনগেজমেন্ট ও সত্যতার মধ্যে সম্পর্ক কেন অসম্পূর্ণ — একটি প্রক্সি-মেট্রিক সমস্যা হিসেবে
- জেনারেশন-সাইড ঝুঁকি (L29) বনাম ডিস্ট্রিবিউশন-সাইড ঝুঁকি (এই পাঠ) — এই পার্থক্যটি স্পষ্টভাবে
- Python দিয়ে একটি প্রকৃত র্যাংকিং সিমুলেশন — এনগেজমেন্ট-র্যাংকিং বনাম র্যান্ডম বেসলাইন, বহু ট্রায়ালের গড়ে তুলনা করে
১ · এনগেজমেন্ট-অপ্টিমাইজেশন: একটি প্রক্সি-মেট্রিক সমস্যা
একটি নিউজফিড বা "আপনার জন্য প্রস্তাবিত" অ্যালগরিদমকে সরাসরি "কোনটা সত্য, কোনটা গুরুত্বপূর্ণ" শেখানো কঠিন — কিন্তু "ব্যবহারকারী কোনটায় ক্লিক করলো, কতক্ষণ দেখলো, কী শেয়ার করলো" পরিমাপ করা তুলনামূলক সহজ। তাই বাস্তবে অনেক রিকমেন্ডেশন সিস্টেম এনগেজমেন্টEngagementব্যবহারকারীর সাথে কনটেন্টের মিথস্ক্রিয়ার পরিমাপ — ক্লিক, লাইক, কমেন্ট, শেয়ার, দেখার সময় ইত্যাদি একত্রে।-কে একটি ব্যবহারযোগ্য প্রক্সি মেট্রিক হিসেবে ব্যবহার করে সেই কনটেন্টকে উপরে তোলে যা এনগেজমেন্ট বেশি তৈরি করবে বলে অনুমান করা হয়।
গবেষণা ও সাংবাদিকতায় বহুল-আলোচিত একটি পর্যবেক্ষণ হলো — চরম আবেগ (রাগ, ভয়, বিস্ময়) জাগানো ও সেনসেশনাল কনটেন্ট গড়ে বেশি ক্লিক ও শেয়ার পেতে থাকে, আর মিথ্যা/অতিরঞ্জিত দাবি প্রায়ই সতর্ক, nuanced প্রতিবেদনের চেয়ে বেশি "আকর্ষণীয়" হয়ে থাকে বলেই বেশি এনগেজমেন্ট পায়। এর মানে এই নয় যে সব ভাইরাল কনটেন্ট মিথ্যা — কিন্তু গড়ে একটি পক্ষপাত তৈরি হওয়ার সম্ভাবনা থেকে যায়, যা বিশুদ্ধভাবে এনগেজমেন্ট-চালিত র্যাংকিং সিস্টেমে জমা হতে পারে (M6-এর Goodhart's Law, L25-এর সাথে সরাসরি সম্পর্কিত — একটি প্রক্সিকে সরাসরি লক্ষ্যবস্তু বানালে সেটি প্রকৃত লক্ষ্যের ভালো পরিমাপক থাকা বন্ধ করে দিতে পারে)।
২ · জেনারেশন-সাইড বনাম ডিস্ট্রিবিউশন-সাইড ঝুঁকি
এই দুটি প্রশ্ন গুলিয়ে ফেলা সহজ, কিন্তু এরা সম্পূর্ণ ভিন্ন স্তরে কাজ করে। L29-এ আলোচিত হ্যালুসিনেশন ঝুঁকি জিজ্ঞেস করে — "একটি LLM কি এমন তথ্য তৈরি করছে যা উৎস/বাস্তবতায় সমর্থিত নয়?" এটি জেনারেশন মুহূর্তের প্রশ্ন। এই পাঠের অ্যামপ্লিফিকেশন ঝুঁকি সম্পূর্ণ ভিন্ন প্রশ্ন — "একটি কনটেন্ট (মানুষ লিখুক বা AI, সত্য হোক বা মিথ্যা) কতজন মানুষ পর্যন্ত পৌঁছায়, কত দ্রুত ছড়ায়?" এটি ডিস্ট্রিবিউশন মুহূর্তের প্রশ্ন — সম্পূর্ণ সত্য কনটেন্টও যদি এনগেজমেন্ট কম তৈরি করে তবে চাপা পড়ে যেতে পারে, আর একটি হাতে-লেখা মিথ্যা দাবিও যদি বেশি এনগেজমেন্ট তৈরি করে তবে র্যাংকিং অ্যালগরিদম সেটিকে এগিয়ে দিতে পারে — কনটেন্টের উৎস AI নাকি মানুষ, তা এই মেকানিজমের জন্য অপ্রাসঙ্গিক।
৩ · একটি প্রকৃত র্যাংকিং সিমুলেশন
নিচের কোড সেলে ২০টি সিন্থেটিক কনটেন্ট-আইটেমের একটি তালিকা আছে, প্রতিটির একটি এনগেজমেন্ট-স্কোর (কাল্পনিক
ইউনিটে) এবং সেটি মিথ্যা/সেনসেশনাল কিনা তার লেবেল সহ — মোট ২০টির মধ্যে ৬টি (৩০%) মিথ্যা, আর সেগুলোর গড়
এনগেজমেন্ট-স্কোর ইচ্ছাকৃতভাবে তুলনামূলক বেশি রাখা হয়েছে (বাস্তবে পর্যবেক্ষিত প্রবণতার একটি ইলাস্ট্রেটিভ
প্রতিফলন)। কোডটি দুটি র্যাংকিং তুলনা করে — এনগেজমেন্ট-র্যাংকিং (আসল অ্যালগরিদমের
অনুরূপ, শুধু স্কোর অনুযায়ী সাজানো) বনাম একটি র্যান্ডম-র্যাংকিং বেসলাইন (২,০০০টি
র্যান্ডম শাফল ট্রায়ালের গড়, random.seed(7) দিয়ে reproducible) — দুটি মেট্রিকে: মিথ্যা
কনটেন্টের গড় র্যাংক-পজিশন, ও টপ-৫-এ মিথ্যা কনটেন্টের সংখ্যা।
# একটি সিন্থেটিক, ইলাস্ট্রেটিভ উদাহরণ -- বাস্তব কোনো প্ল্যাটফর্মের ডেটা নয়
import random
random.seed(7) # reproducibility-এর জন্য নির্দিষ্ট সিড
content_items = [
{"id": 1, "engagement": 95, "is_false": True},
{"id": 2, "engagement": 90, "is_false": False},
{"id": 3, "engagement": 88, "is_false": True},
{"id": 4, "engagement": 82, "is_false": True},
{"id": 5, "engagement": 76, "is_false": True},
{"id": 6, "engagement": 70, "is_false": True},
{"id": 7, "engagement": 65, "is_false": True},
{"id": 8, "engagement": 60, "is_false": False},
{"id": 9, "engagement": 55, "is_false": False},
{"id": 10, "engagement": 50, "is_false": False},
{"id": 11, "engagement": 48, "is_false": False},
{"id": 12, "engagement": 45, "is_false": False},
{"id": 13, "engagement": 42, "is_false": False},
{"id": 14, "engagement": 38, "is_false": False},
{"id": 15, "engagement": 35, "is_false": False},
{"id": 16, "engagement": 30, "is_false": False},
{"id": 17, "engagement": 28, "is_false": False},
{"id": 18, "engagement": 25, "is_false": False},
{"id": 19, "engagement": 20, "is_false": False},
{"id": 20, "engagement": 15, "is_false": False},
]
TOP_N = 5
overall_false_ratio = sum(1 for c in content_items if c["is_false"]) / len(content_items)
# এনগেজমেন্ট-র্যাংকিং: শুধুমাত্র এনগেজমেন্ট স্কোর অনুযায়ী descending sort
engagement_ranked = sorted(content_items, key=lambda c: c["engagement"], reverse=True)
false_ranks_engagement = [i + 1 for i, c in enumerate(engagement_ranked) if c["is_false"]]
avg_rank_engagement = sum(false_ranks_engagement) / len(false_ranks_engagement)
top_n_false_engagement = sum(1 for c in engagement_ranked[:TOP_N] if c["is_false"])
# র্যান্ডম-র্যাংকিং বেসলাইন: বহু ট্রায়ালের গড় (fixed seed দিয়ে reproducible)
TRIALS = 2000
items_copy = list(content_items)
total_avg_rank = 0.0
total_top_n_count = 0
for _ in range(TRIALS):
random.shuffle(items_copy)
false_ranks_random = [i + 1 for i, c in enumerate(items_copy) if c["is_false"]]
total_avg_rank += sum(false_ranks_random) / len(false_ranks_random)
total_top_n_count += sum(1 for c in items_copy[:TOP_N] if c["is_false"])
avg_rank_random = total_avg_rank / TRIALS
avg_top_n_false_random = total_top_n_count / TRIALS
print(f"পুরো তালিকায় মিথ্যা/সেনসেশনাল কনটেন্টের অনুপাত: {overall_false_ratio*100:.0f}%\n")
print("এনগেজমেন্ট-র্যাংকিং (আসল অ্যালগরিদমের অনুরূপ):")
print(f" মিথ্যা কনটেন্টের গড় র্যাংক-পজিশন: {avg_rank_engagement:.2f}")
print(f" টপ-{TOP_N}-এ মিথ্যা কনটেন্টের সংখ্যা: {top_n_false_engagement} / {TOP_N}\n")
print(f"র্যান্ডম-র্যাংকিং বেসলাইন ({TRIALS} ট্রায়ালের গড়):")
print(f" মিথ্যা কনটেন্টের গড় র্যাংক-পজিশন: {avg_rank_random:.2f}")
print(f" টপ-{TOP_N}-এ মিথ্যা কনটেন্টের গড় সংখ্যা: {avg_top_n_false_random:.2f} / {TOP_N}")
একটি অ্যালগরিদমের "মিথ্যা তথ্য ছড়ানোর কোনো উদ্দেশ্য" না থাকলেও, যদি সেটি এমন একটি প্রক্সি মেট্রিক (এনগেজমেন্ট) সর্বোচ্চ করতে অপ্টিমাইজ করে যা সত্যতার সাথে অসম্পূর্ণভাবে সম্পর্কিত, তাহলে সিস্টেমগতভাবে সেনসেশনাল/মিথ্যা কনটেন্ট এগিয়ে যাওয়ার একটি কাঠামোগত প্রবণতা তৈরি হতে পারে। এটি L29-এর জেনারেশন-সাইড ঝুঁকি থেকে সম্পূর্ণ ভিন্ন, স্বতন্ত্র সমস্যা — এবং একটি সমাধান করলেই (যেমন হ্যালুসিনেশন কমানো) অন্যটি আপনাআপনি সমাধান হয় না।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ উপরের কোডে র্যাংকার কি কোথাও সরাসরি "এটা মিথ্যা, তাই কম দেখাও" এই যুক্তি ব্যবহার করে?
না। sorted(content_items, key=lambda c: c["engagement"], reverse=True) শুধুমাত্র
engagement ফিল্ড অনুযায়ী সাজায় — is_false ফিল্ডটি র্যাংকিং লজিকে কোথাও
ব্যবহৃতই হয় না, শুধু পরে ফলাফল বিশ্লেষণের জন্য গণনা করা হয়েছে। এটিই মূল বিষয় — অ্যালগরিদমকে "মিথ্যা
প্রচার করো" এমন কোনো নির্দেশ না দিয়েও, শুধু এনগেজমেন্ট অপ্টিমাইজ করার মধ্য দিয়েই এই skew তৈরি হতে
পারে।
প্র ০২ একটি প্ল্যাটফর্ম যদি L29-এর হ্যালুসিনেশন সমস্যা সম্পূর্ণ সমাধান করে ফেলে (LLM আর কখনো ভুল তথ্য তৈরি করে না), তাহলে কি এই পাঠের অ্যামপ্লিফিকেশন সমস্যাও সমাধান হয়ে যাবে?
না। উপরের সিমুলেশনে কনটেন্টের উৎস (AI না মানুষ) কোথাও বিবেচনা করা হয়নি — যেকোনো উৎস থেকে আসা সেনসেশনাল/মিথ্যা দাবি, যদি তার এনগেজমেন্ট-স্কোর বেশি হয়, তাহলে একই র্যাংকিং মেকানিজমের মাধ্যমে এগিয়ে যাবে। হ্যালুসিনেশন সমাধান করলে জেনারেশন-সাইড ঝুঁকি কমে, কিন্তু মানুষের লেখা মিথ্যা তথ্য বা বিভ্রান্তিকর কনটেন্টের অ্যামপ্লিফিকেশন সমস্যা আলাদাভাবে থেকে যায় — দুটি ভিন্ন সমস্যার ভিন্ন সমাধান দরকার।
প্র ০৩
উপরের কোডে TOP_N-কে ৫ থেকে ২০ (পুরো তালিকা) করে দিলে
top_n_false_engagement কী হবে, এবং কেন?
TOP_N = 20 করলে engagement_ranked[:20] পুরো তালিকার সমান হয়ে যাবে, তাই
top_n_false_engagement ঠিক মোট মিথ্যা আইটেমের সংখ্যা (৬)-এর সমান হবে — কারণ সাজানোর
ক্রম যাই হোক না কেন, পুরো তালিকা নিলে গণনা অপরিবর্তিত থাকে। skew শুধুমাত্র তখনই দেখা যায় যখন একটি
সাবসেট (যেমন টপ-৫, যা বাস্তবে ব্যবহারকারী প্রথমে দেখে) আলাদাভাবে বিবেচনা করা হয়।
অনুশীলন
-
চিন্তা করুন: একটি প্ল্যাটফর্ম কীভাবে এনগেজমেন্টের পাশাপাশি "নির্ভরযোগ্যতা" সংকেতও
র্যাংকিংয়ে যোগ করতে পারে, বাক-স্বাধীনতাকে সম্পূর্ণ উপেক্ষা না করে?
কিছু সম্ভাব্য পদ্ধতি — স্বাধীন ফ্যাক্ট-চেকারদের ফ্ল্যাগকে র্যাংকিং স্কোরে একটি নেতিবাচক ফ্যাক্টর হিসেবে যোগ করা (সরিয়ে ফেলা নয়, শুধু কম দেখানো — L32-এর মডারেশন প্রশ্ন থেকে আলাদা একটি হালকা হস্তক্ষেপ), উৎসের ঐতিহাসিক নির্ভরযোগ্যতা বিবেচনায় নেওয়া, অথবা দ্রুত-ছড়িয়ে-পড়া কনটেন্টকে অতিরিক্ত যাচাইয়ের জন্য সাময়িকভাবে ধীর করে দেওয়া। প্রতিটি পদ্ধতিই নিজস্ব নতুন ট্রেড-অফ তৈরি করে।
-
পরীক্ষা করুন: উপরের কোড সেলে পোস্ট #১-এর
engagementমান ৯৫ থেকে ৪০-এ কমিয়ে Run চাপুন —top_n_false_engagementকীভাবে বদলায়?পোস্ট #১-এর এনগেজমেন্ট ৪০ করলে সে টপ-৫-এ আর থাকবে না (নতুন ক্রমে তার অবস্থান নিচে নেমে যাবে), কিন্তু নতুন টপ-৫ হবে #২(৯০), #৩(৮৮), #৪(৮২), #৫(৭৬), #৬(৭০) — যার মধ্যে #৩, #৪, #৫, #৬ চারটিই মিথ্যা-লেবেলযুক্ত, তাই
top_n_false_engagementএখনও ৪-ই থাকবে, অপরিবর্তিত। কারণ #১ সরে গেলেও তার জায়গায় আরেকটি মিথ্যা-লেবেলযুক্ত আইটেম (#৬) উঠে আসে — একটি একক আইটেম বদলালেই সামগ্রিক skew বদলে যায় না, পুরো তালিকার গঠনের উপর নির্ভর করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরবর্তী পাঠ: অটোমেশন, চাকরি ও অর্থনৈতিক ব্যাঘাত L34 প্রযুক্তির সামাজিক প্রভাব নিয়ে আলোচনা চলতে থাকে — এবার শ্রমবাজারের উপর প্রভাব নিয়ে।
- L29 · হ্যালুসিনেশন ও মিসইনফরমেশন রিস্ক সহোদর পাঠ এই পাঠের ডিস্ট্রিবিউশন-সাইড অ্যামপ্লিফিকেশনের বিপরীতে — জেনারেশন-সাইড হ্যালুসিনেশন ঝুঁকি।
- আগের পাঠ: কনটেন্ট মডারেশন অ্যাট স্কেল L32 "কোন কনটেন্ট থাকবে" বনাম "কোন কনটেন্ট কতটা ছড়াবে" — দুটি সম্পর্কিত কিন্তু ভিন্ন প্রশ্ন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, Machine Learning, Deep Learning, System Design, Cybersecurity, Cloud Computing & DevOps, এবং আরও অনেক কোর্স — সব এক জায়গায়।