পাঠ ৪৯ · ৫৭-এর মধ্যে · মডিউল ১১
Home / Courses / Ethics in Computing & AI Safety / অ্যাটেনশন ইঞ্জিনিয়ারিং

ডিজিটাল আসক্তি ও অ্যাটেনশন ইঞ্জিনিয়ারিং

Digital addiction & attention engineering
৯ মিনিট পড়া মধ্যবর্তী · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

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

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

১ · এনগেজমেন্ট-অপ্টিমাইজড ডিজাইন

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

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

২ · ভ্যারিয়েবল-রেশিও রিইনফোর্সমেন্ট: একটি সুপ্রতিষ্ঠিত মনস্তাত্ত্বিক নীতি

আচরণগত মনোবিজ্ঞানে ভ্যারিয়েবল-রেশিও রিইনফোর্সমেন্টVariable-Ratio Reinforcementএকটি পুরস্কার-শিডিউল যেখানে পুরস্কার কতবার প্রচেষ্টার পর আসবে তা অনিশ্চিত/এলোমেলো — যেমন একটি স্লট মেশিন। গড় পুরস্কার-হার একই রাখা সত্ত্বেও, এই অনিশ্চয়তা একটি ফিক্সড শিডিউলের (প্রতি নির্দিষ্ট সংখ্যক চেষ্টার পর পুরস্কার) চেয়ে বেশি স্থায়ী, উচ্চ-হারের প্রতিক্রিয়া (response rate) তৈরি করে বলে বহু দশকের গবেষণায় দেখা গেছে। একটি বহু-পরীক্ষিত, সুপ্রতিষ্ঠিত পর্যবেক্ষণ — পুরস্কার কখন আসবে তা অনুমান করা না গেলে, প্রাণী (মানুষ সহ) সেই পুরস্কারের উৎসের সাথে বারবার, আরও স্থায়ীভাবে যোগাযোগ করতে থাকে, এমনকি পুরস্কারের গড় হার একই থাকলেও। এই কারণেই স্লট মেশিন ফিক্সড-পেআউট গেমের চেয়ে বেশি "আঁকড়ে ধরে রাখে" বলে দীর্ঘদিন ধরে পরিচিত। ডিজিটাল প্রোডাক্টে "পুল-টু-রিফ্রেশ" করে নতুন কনটেন্ট আসা, বা নোটিফিকেশন ঠিক কখন আসবে তা অনিশ্চিত থাকা — এই ধরনের ডিজাইন সিদ্ধান্তগুলো একই অনিশ্চিত-পুরস্কার নীতির সাথে গঠনগতভাবে সাদৃশ্যপূর্ণ।

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

৩ · একটি সিমুলেশন: ফিক্সড বনাম ভ্যারিয়েবল শিডিউল

নিচের কোড সেলে দুটি সরল, সিন্থেটিক শিডিউল সিমুলেট করা হয়েছে — একই সংখ্যক ধাপ (৩০০) ও প্রায় একই গড় পুরস্কার-হারে (প্রতি ১০ ধাপে গড়ে ১টি পুরস্কার)। ফিক্সড শিডিউলে ধরে নেওয়া হয়েছে ব্যবহারকারী প্যাটার্নটি শিখে ফেলেছে, তাই শুধু পরবর্তী পুরস্কারের ঠিক আগের মুহূর্তে বেশি "চেক" করে, বাকি সময় কম। ভ্যারিয়েবল শিডিউলে পরবর্তী পুরস্কার কখন আসবে তা অনুমান করা যায় না, তাই মডেলটি প্রতিটি ধাপেই একটি স্থির, মাঝারি-উচ্চ মাত্রার "চেক" প্রবণতা ধরে রাখে। random.seed(42) ব্যবহার করা হয়েছে যাতে ফলাফল পুনরুৎপাদনযোগ্য (reproducible) হয়।

Python
# একটি সিন্থেটিক, ইলাস্ট্রেটিভ মডেল -- ভ্যারিয়েবল-রেশিও রিইনফোর্সমেন্ট নীতির একটি সরলীকৃত সিমুলেশন
# কোনো নির্দিষ্ট বাস্তব অ্যাপের ডিজাইনের দাবি নয়

import random
random.seed(42)  # reproducibility-এর জন্য নির্দিষ্ট সিড

STEPS = 300
INTERVAL = 10  # গড়ে প্রতি ১০ ধাপে একটি "রিওয়ার্ড" (যেমন নতুন কনটেন্ট/নোটিফিকেশন)

def simulate_fixed_schedule(steps, interval):
    rewards = 0
    checks = 0
    for i in range(1, steps + 1):
        position = i % interval
        if position == 0:
            rewards += 1
        # ফিক্সড শিডিউলে প্যাটার্নটি অনুমানযোগ্য -- তাই পরবর্তী রিওয়ার্ডের
        # ঠিক আগের ধাপ ছাড়া বাকি সময় চেক করার প্রবণতা কম থাকে
        near_reward = position == 0 or position == interval - 1
        check_prob = 0.60 if near_reward else 0.05
        if random.random() < check_prob:
            checks += 1
    return rewards, checks

def simulate_variable_schedule(steps, interval):
    rewards = 0
    checks = 0
    reward_prob_per_step = 1 / interval  # গড় রিওয়ার্ড-হার ফিক্সড শিডিউলের সমান
    # ভ্যারিয়েবল শিডিউলে পরবর্তী রিওয়ার্ড কখন আসবে তা অনুমান করা যায় না --
    # তাই প্রতিটি ধাপেই একটি স্থির, মাঝারি-উচ্চ চেক-প্রবণতা থাকে
    check_prob = 0.30
    for i in range(1, steps + 1):
        if random.random() < reward_prob_per_step:
            rewards += 1
        if random.random() < check_prob:
            checks += 1
    return rewards, checks

fixed_rewards, fixed_checks = simulate_fixed_schedule(STEPS, INTERVAL)
variable_rewards, variable_checks = simulate_variable_schedule(STEPS, INTERVAL)

print(f"ফিক্সড-ইন্টারভ্যাল শিডিউল:    {fixed_rewards} বার রিওয়ার্ড,   {fixed_checks} বার চেক ({fixed_checks/STEPS*100:.1f}% ধাপে)")
print(f"ভ্যারিয়েবল-ইন্টারভ্যাল শিডিউল: {variable_rewards} বার রিওয়ার্ড,   {variable_checks} বার চেক ({variable_checks/STEPS*100:.1f}% ধাপে)")

    
কোডটি Run করলে দেখা যাবে দুটি শিডিউলে রিওয়ার্ডের সংখ্যা প্রায় কাছাকাছি (যেহেতু গড় রিওয়ার্ড-হার ইচ্ছাকৃতভাবে সমান রাখা হয়েছে), কিন্তু ভ্যারিয়েবল শিডিউলের চেক-সংখ্যা ফিক্সড শিডিউলের চেয়ে অনেক বেশি — কারণ ফিক্সড শিডিউলে check_prob-এর সময়-গড় মান মাত্র (2×0.60 + 8×0.05) / 10 = 0.16, অথচ ভ্যারিয়েবল শিডিউলে প্রতিটি ধাপেই স্থির 0.30। প্রায় সমান পুরস্কার-হার সত্ত্বেও অনিশ্চয়তা একাই উল্লেখযোগ্যভাবে বেশি "চেকিং আচরণ" তৈরি করছে — এটিই ভ্যারিয়েবল-রেশিও রিইনফোর্সমেন্টের মূল, বাস্তব-জগতে বহুবার পর্যবেক্ষিত প্রভাব।
মূল কথা · Key takeaway

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

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

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

প্র ০১ উপরের কোডে দুটি শিডিউলের গড় পুরস্কার-হার কাছাকাছি রাখা হয়েছে কেন — এটি এলোমেলোভাবে করা হয়নি, কেন গুরুত্বপূর্ণ?

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

প্র ০২ "ম্যানিপুলেশন" ও "ভালো প্রোডাক্ট ডিজাইন"-এর মধ্যে সীমারেখা কোথায় টানা উচিত বলে আপনার মনে হয়?

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

প্র ০৩ উপরের কোডে INTERVAL-কে ১০ থেকে ৫ করলে (রিওয়ার্ড দ্বিগুণ ঘন-ঘন) ফিক্সড শিডিউলের সময়-গড় check_prob কীভাবে বদলাবে?

INTERVAL = 5-এ প্রতি ৫ ধাপের মধ্যে ২টি ধাপ (রিওয়ার্ড-ধাপ ও তার ঠিক আগের ধাপ) "near_reward" হবে, বাকি ৩টি নয়। তাই সময়-গড় check_prob = (2×0.60 + 3×0.05) / 5 = 0.27 — আগের 0.16-এর চেয়ে বেশি, কিন্তু তারপরও ভ্যারিয়েবল শিডিউলের স্থির 0.30-এর কাছাকাছি (কিন্তু এখনও কম)। এটি দেখায় যে রিওয়ার্ড যত ঘন-ঘন হয়, ফিক্সড শিডিউলও ভ্যারিয়েবলের কাছাকাছি আচরণ দেখাতে শুরু করে — পার্থক্যটি চরম ক্ষেত্রেই সবচেয়ে স্পষ্ট।

অনুশীলন

  1. চিন্তা করুন: আপনার নিজের ব্যবহৃত কোনো অ্যাপে "কখন নতুন কনটেন্ট/নোটিফিকেশন আসবে তা অনিশ্চিত" এমন কোনো বৈশিষ্ট্য আছে কি? এটি সরিয়ে ফেললে (যেমন নির্দিষ্ট সময়ে ব্যাচে নোটিফিকেশন দেওয়া) প্রোডাক্টের কার্যকারিতা কী হারাবে, আর ব্যবহারকারী কী ফিরে পাবে?

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

  2. পরীক্ষা করুন: উপরের কোড সেলে ভ্যারিয়েবল শিডিউলের check_prob-কে 0.30 থেকে 0.16-এ (ফিক্সড শিডিউলের সময়-গড়ের সমান) নামিয়ে Run চেপে দেখুন দুটি শিডিউলের চেক-সংখ্যা কতটা কাছাকাছি চলে আসে।

    check_prob = 0.16 করলে ভ্যারিয়েবল শিডিউলের প্রত্যাশিত চেক-সংখ্যা প্রায় 300 × 0.16 = 48-এ নেমে আসবে — যা ফিক্সড শিডিউলের প্রত্যাশিত 300 × 0.16 = 48-এর প্রায় সমান। অর্থাৎ পার্থক্যটি "ভ্যারিয়েবল হওয়া" থেকে আসেনি, এসেছিল ইচ্ছাকৃতভাবে বেছে নেওয়া উচ্চতর 0.30 মান থেকে — এই পরীক্ষাটি দেখায় মডেলের প্যারামিটার পরিবর্তন কীভাবে সরাসরি ফলাফল বদলে দেয়।

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

আগের পাঠ
অটোমেশন, চাকরি ও অর্থনৈতিক ব্যাঘাত