পাঠ ০৬ · ৫৭-এর মধ্যে · মডিউল ২
Home / Courses / Human-Computer Interaction / কগনিটিভ লোড

ওয়ার্কিং মেমরির সীমা ও ইন্টারফেসে কগনিটিভ লোড

Working memory limits & cognitive load in interfaces
৯ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

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

  • মিলারের "৭±২" নিয়ম — এর প্রকৃত অর্থ ও সীমাবদ্ধতা
  • "চাঙ্কিং" কী এবং কেন এটি ওয়ার্কিং মেমরির সীমার বিরুদ্ধে কার্যকর একটি কৌশল
  • একটি সত্যিকারের, চলমান কোড ডেমো — কাঁচা বনাম চাঙ্ক করা তথ্যের সরলীকৃত ইলাস্ট্রেটিভ তুলনা
  • ইন্ট্রিনসিক, এক্সট্রেনিয়াস ও জার্মেন কগনিটিভ লোড — সোয়েলারের কগনিটিভ লোড থিওরির মূল ভাগ
  • ইন্টারফেস ডিজাইনে ওয়ার্কিং মেমরির উপর চাপ কমানোর বাস্তব কৌশল

১ · মিলারের "৭±২" নিয়ম

১৯৫৬ সালে মনোবিজ্ঞানী জর্জ মিলার একটি সুপরিচিত পর্যবেক্ষণ প্রকাশ করেন — মানুষের ওয়ার্কিং মেমরি একসাথে গড়ে মাত্র ৭±২ (অর্থাৎ ৫ থেকে ৯টি) "চাঙ্ক" তথ্য ধরে রাখতে পারে, তার বেশি হলে ভুল বা ভুলে যাওয়ার সম্ভাবনা বাড়ে। এটি HCI ও কগনিটিভ সাইকোলজির অন্যতম সবচেয়ে উদ্ধৃত ফলাফল। পরবর্তীতে গবেষণা (যেমন নেলসন কাওয়ানের ২০০১ সালের পর্যালোচনা) পরামর্শ দেয় যে কিছু পরিস্থিতিতে প্রকৃত সংখ্যা আরও ছোট, প্রায় ৪টি চাঙ্কের কাছাকাছি হতে পারে — কিন্তু মূল, ব্যবহারিক ইঙ্গিতটি অপরিবর্তিত থাকে: ওয়ার্কিং মেমরির ক্ষমতা ছোট এবং কঠোরভাবে সীমিত, এবং একটি ইন্টারফেস কখনোই এর বেশি একসাথে মনে রাখতে বলা উচিত নয়।

২ · চাঙ্কিং — কেন গোষ্ঠীকরণ কাজ করে

একটি গুরুত্বপূর্ণ কারিগরি ব্যাপার হলো — মিলারের নিয়ম "৭±২ সংখ্যা" বলে না, বলে "৭±২ চাঙ্ক"। একটি চাঙ্ক হলো সম্পর্কিত তথ্যের একটি গোষ্ঠী যা একটি একক ইউনিট হিসেবে মনে রাখা যায়। উদাহরণস্বরূপ, ফোন নম্বর 01712345678 — ১১টি আলাদা সংখ্যা হিসেবে মনে রাখলে তা ওয়ার্কিং মেমরির সীমা ছাড়িয়ে যায়, কিন্তু 01712-345-678 আকারে দলে ভাগ করলে সেটি মাত্র ৩টি চাঙ্ক — অনেক সহজ। এই কারণেই ক্রেডিট কার্ড নম্বর, ফোন নম্বর, এমনকি কোড (যেমন a1b2-c3d4 স্টাইলের লাইসেন্স কী) সবসময় দলে ভাগ করে দেখানো হয়।

নিচের কোড সেলে একটি সরলীকৃত ইলাস্ট্রেটিভ মডেল — কোনো নির্দিষ্ট বাস্তব সাইকোলজি এক্সপেরিমেন্টের সরাসরি উদ্ধৃতি নয় — একই ডিজিট-সিকোয়েন্সগুলো কাঁচা আকারে (প্রতিটি ডিজিট আলাদা আইটেম) বনাম ৩-টা করে চাঙ্কে ভাগ করে ধরে রাখলে "ধরে রাখতে হওয়া আইটেম সংখ্যা" কত হয়, এবং একটি সরল, ইলাস্ট্রেটিভ সূত্র দিয়ে অনুমানিত রিকল-সম্ভাবনা কীভাবে বদলায় তা দেখায় — ক্ষমতার সীমা (৭) ছাড়িয়ে যাওয়া প্রতিটি অতিরিক্ত আইটেমের জন্য একটি জরিমানা প্রয়োগ করে।

Python
import random

random.seed(42)

CAPACITY = 7  # মিলারের "৭±২" -- ইলাস্ট্রেটিভ গড় ওয়ার্কিং-মেমরি আইটেম ক্ষমতা

def random_digits(n):
    return [random.randint(0, 9) for _ in range(n)]

def chunk(items, size):
    return [items[i:i + size] for i in range(0, len(items), size)]

def simulated_recall_probability(n_items, capacity=CAPACITY):
    # সরলীকৃত ইলাস্ট্রেটিভ মডেল মাত্র (কোনো নির্দিষ্ট বাস্তব এক্সপেরিমেন্টের ফলাফল নয়):
    # ক্ষমতা পর্যন্ত প্রতিটি আইটেমের জন্য সামান্য জরিমানা, ক্ষমতা ছাড়ালে অনেক বড় জরিমানা।
    if n_items <= capacity:
        return max(0.05, 0.98 - 0.01 * n_items)
    excess = n_items - capacity
    return max(0.05, (0.98 - 0.01 * capacity) - 0.12 * excess)

sequences = [random_digits(12) for _ in range(5)]

chunk_size = 3
total_raw_items = 0
total_chunked_items = 0
for seq in sequences:
    raw_items = len(seq)              # প্রতিটি ডিজিট আলাদা আইটেম হিসেবে ধরা হলো
    chunks = chunk(seq, chunk_size)
    chunked_items = len(chunks)       # প্রতিটি গ্রুপ একটি চাঙ্ক হিসেবে ধরা হলো
    total_raw_items += raw_items
    total_chunked_items += chunked_items

avg_raw = total_raw_items / len(sequences)
avg_chunked = total_chunked_items / len(sequences)

p_raw = simulated_recall_probability(avg_raw)
p_chunked = simulated_recall_probability(avg_chunked)

print(f"{len(sequences)}টি সিকোয়েন্স, প্রতিটি {len(sequences[0])} ডিজিট লম্বা")
print(f"গড় ধরে-রাখার-আইটেম -- কাঁচা: {avg_raw:.1f}   চাঙ্ক করা (৩-টা করে দলে): {avg_chunked:.1f}")
print(f"সরলীকৃত ইলাস্ট্রেটিভ রিকল-সম্ভাবনা -- কাঁচা: {p_raw*100:.1f}%   চাঙ্ক করা: {p_chunked*100:.1f}%")

    
কোডটি চালালে দেখা যায় — কাঁচা আকারে প্রতিটি সিকোয়েন্সের গড় ১২.০টি আইটেম ধরে রাখতে হয় (ক্ষমতা ৭-এর চেয়ে ৫টি বেশি), যেখানে সরলীকৃত মডেলের রিকল-সম্ভাবনা মাত্র ৩১.০%। কিন্তু ৩-টা করে চাঙ্কে ভাগ করলে গড় মাত্র ৪.০টি আইটেম (ক্ষমতার মধ্যেই) ধরে রাখলেই চলে, এবং সরলীকৃত মডেলের রিকল-সম্ভাবনা বেড়ে দাঁড়ায় ৯৪.০% — তথ্যের পরিমাণ একই থাকলেও, শুধু গোষ্ঠীকরণের কারণে। মনে রাখবেন — এই শতাংশগুলো একটি সরলীকৃত ইলাস্ট্রেটিভ মডেলের ফলাফল, বাস্তব মানুষের উপর চালানো কোনো এক্সপেরিমেন্টের প্রকৃত সংখ্যা নয় — তবে এটি প্রকৃত, প্রতিষ্ঠিত দিকনির্দেশনাটি স্পষ্টভাবে দেখায়।

৩ · কগনিটিভ লোড — ইন্ট্রিনসিক, এক্সট্রেনিয়াস, জার্মেন

জন সোয়েলারের কগনিটিভ লোড থিওরি একটি কাজ করার সময় ওয়ার্কিং মেমরির উপর মোট "বোঝা"-কে তিন ভাগে ভাগ করে:

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

ভালো ইন্টারফেস ডিজাইন এক্সট্রেনিয়াস লোড কমায় (অপ্রয়োজনীয় জটিলতা, অসামঞ্জস্য, একসাথে অনেক কিছু মনে রাখতে বাধ্য করা এড়িয়ে) যাতে ব্যবহারকারীর সীমিত ওয়ার্কিং মেমরি মূল কাজে (ইন্ট্রিনসিক লোড) ব্যয় হতে পারে। বাস্তব কৌশলের মধ্যে আছে — লম্বা ফর্মকে ধাপে ভাগ করা (wizard/multi-step), সম্পর্কিত ফিল্ডগুলোকে ভিজ্যুয়ালি গ্রুপ করা (M8/L08-এর গেস্টাল্ট প্রক্সিমিটি নীতির সাথে সরাসরি সম্পর্কিত), এবং ব্যবহারকারীকে একসাথে একাধিক ধাপ মনে রাখতে না বলে প্রতিটি পদক্ষেপে প্রয়োজনীয় তথ্য স্ক্রিনেই দেখানো (M4/L16-এর "রিকগনিশন ওভার রিকল" হিউরিস্টিকের সাথে মিলে যায়)।

মূল কথা · Key takeaway

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

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

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

প্র ০১ উপরের কোড ডেমোতে চাঙ্ক সাইজ ৩ থেকে বাড়িয়ে ৬ করলে কী হবে বলে আপনার ধারণা — একই ১২-ডিজিট সিকোয়েন্সের জন্য চাঙ্ক সংখ্যা ও সরলীকৃত রিকল-সম্ভাবনা কীভাবে বদলাবে?

চাঙ্ক সাইজ ৬ করলে ১২ ডিজিট মাত্র ২টি চাঙ্কে ভাগ হবে (৬+৬), যা ক্ষমতার (৭) অনেক নিচে — তাই মডেল অনুযায়ী রিকল-সম্ভাবনা এখনো বেশি থাকবে। তবে বাস্তবে একটি চাঙ্ক নিজেই যদি অনেক বড় হয় (যেমন ৬টি এলোমেলো ডিজিট একটি চাঙ্কে), সেই চাঙ্কটি নিজেই মনে রাখা কঠিন হয়ে যেতে পারে — তাই বাস্তব চাঙ্কিং কৌশলে চাঙ্কের ভেতরের আকারও একটি সীমার মধ্যে (সাধারণত ৩-৪) রাখা হয়, যা এই সরলীকৃত মডেলে ধরা পড়ে না।

প্র ০২ একটি সাইনআপ ফর্মে ১৫টি ফিল্ড একসাথে একই পেজে দেখানো আছে। কগনিটিভ লোডের ভাষায় এটি কোন ধরনের লোড বাড়ায়, এবং কীভাবে তা কমানো যায়?

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

প্র ০৩ একটি জটিল ডেটা-অ্যানালাইসিস টুল শেখার সময় কিছুটা কগনিটিভ লোড অনিবার্য এবং এমনকি উপকারীও হতে পারে। এটি কোন ধরনের লোডের উদাহরণ, এবং ডিজাইনার এখানে কী ভূমিকা রাখতে পারেন?

এটি জার্মেন লোড-এর উদাহরণ — ব্যবহারকারী যে নতুন মানসিক মডেল তৈরি করছে তা সরাসরি ভবিষ্যতে তাকে দক্ষ ব্যবহারকারী হতে সাহায্য করবে (M7/L07-এ মেন্টাল মডেল নিয়ে বিস্তারিত)। ডিজাইনারের ভূমিকা এই লোড দূর করা নয়, বরং নিশ্চিত করা যে এক্সট্রেনিয়াস লোড (অপ্রয়োজনীয় বিভ্রান্তি) সর্বনিম্ন থাকে, যাতে ব্যবহারকারীর সীমিত জ্ঞানীয় সম্পদ শুধু প্রকৃত, উপকারী শেখার দিকে ব্যয় হয়।

অনুশীলন

  1. পরীক্ষা করুন: উপরের কোড সেলে random_digits(12)-কে random_digits(9) এ পরিবর্তন করুন (এবং chunk_size = 3 রাখুন)। Run চাপার আগে অনুমান করুন — নতুন গড় কাঁচা-আইটেম সংখ্যা কি এখনো ক্ষমতা (৭) ছাড়িয়ে যাবে?

    ৯টি ডিজিট মানে গড় কাঁচা-আইটেম হবে ৯.০ — এটি এখনো ক্ষমতা ৭-এর চেয়ে ২টি বেশি, তাই সরলীকৃত মডেল অনুযায়ী রিকল-সম্ভাবনা এখনো কমবে (যদিও ১২-ডিজিটের চেয়ে কম কমবে, কারণ excess ৫ এর বদলে ২)। চাঙ্ক করা অবস্থায় (৩-টা করে) মাত্র ৩টি চাঙ্ক হবে, যা ক্ষমতার অনেক নিচে।

  2. ডিজাইন করুন: একটি ই-কমার্স চেকআউট পেজে ব্যবহারকারীকে একসাথে ঠিকানা, পেমেন্ট তথ্য, এবং অর্ডার সামারি — সবকিছু এক পেজে পূরণ করতে বলা হচ্ছে। ওয়ার্কিং মেমরি ও চাঙ্কিং নীতি প্রয়োগ করে এই পেজটি পুনর্ডিজাইন করার একটি সংক্ষিপ্ত পরিকল্পনা লিখুন।

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

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

আগের পাঠ
মানুষের ইনফরমেশন প্রসেসিং — পারসেপশন, অ্যাটেনশন, মেমরি