در حال بارگذاری 0%
// منو.exe
خانه رزومه بلاگ تماس
English فارسی
~/blog / ai / ai-hallucination

چرا هوش مصنوعی با اطمینان اشتباه می‌کند؟

وقتی برای اولین بار از یک مدل هوش مصنوعی سؤالی می‌پرسید، پاسخ معمولاً بسیار روان، منظم و قانع‌کننده به نظر می‌رسد — اما شاید پاسخ اشتباه باشد. چرا؟

# مدل حقیقت را تشخیص نمی‌دهد

برخلاف تصور بسیاری از افراد، مدل‌های زبانی پایگاه داده یا دانشنامه‌ای که هنگام پاسخ‌گویی آن را جستجو کنند ندارند. آن‌ها در اصل یک تابع احتمالی بسیار بزرگ هستند. هدف ریاضی مدل این است:
objective.py
# The entire objective of a language model:
# (Given all tokens seen so far, what is the most likely next token?)
 
P(next_token | previous_tokens)
یعنی: «با توجه به تمام توکن‌هایی که تاکنون دیده‌ام، محتمل‌ترین توکن بعدی چیست؟» همین. نه کمتر، نه بیشتر.
نکته علمی: این به معنای آن نیست که مدل هیچ چیزی را «یاد نگرفته». مدل در طول آموزش، الگوهای زبانی، ارتباطات معنایی و حتی بسیاری از حقایق را به‌صورت آماری در وزن‌های خود رمزگذاری می‌کند. مسئله این است که هیچ ماژولی برای اعتبارسنجی حقیقت وجود ندارد — مدل فقط محتمل‌ترین توکن بعدی را پیش‌بینی می‌کند، نه اینکه درستی آن را بررسی کند.

# همه چیز از Token شروع می‌شود

فرض کنید این عبارت را وارد می‌کنید: The capital of Australia is. قبل از اینکه مدل بتواند آن را درک کند، متن به توکن تبدیل می‌شود. هر توکن سپس به یک بردار چند هزار بعدی تبدیل می‌شود.
tokens.py — python3
import torch
 
# 1) Text is split into tokens
tokens = ["The", " capital", " of", " Australia", " is"]
print(len(tokens), "tokens")
 
# 2) Each token → a high-dimensional embedding vector
embedding = torch.randn(5, 4096)
print(embedding.shape)
5 tokens
torch.Size([5, 4096])
این اعداد هیچ معنی مستقیمی برای انسان ندارند، اما برای شبکه عصبی نمایش ریاضی کلمات هستند.
توضیح مهم — این یک مثال آموزشی است: در کد بالا از torch.randn (اعداد تصادفی) استفاده شده تا فقط شکل داده‌ها را نشان دهیم. در یک مدل واقعی، این بردارها پارامترهای یادگرفته‌شده هستند که در طول آموزش روی میلیاردها متن بهینه شده‌اند — تصادفی نیستند. این مثال صرفاً برای درک ابعاد داده است.

# مدل چگونه تصمیم می‌گیرد؟ (Logits و Softmax)

پس از عبور بردارها از ده‌ها لایه Transformer، لایه نهایی برای تمام واژه‌های ممکن یک امتیاز خام تولید می‌کند که به آن Logits می‌گویند. سپس تابع Softmax این امتیازها را به احتمال تبدیل می‌کند.
softmax.py — python3
import torch
 
# Raw scores (logits) for candidate tokens
logits = torch.tensor([
    8.2,   # Sydney
    7.9,   # Canberra
    2.1,   # Melbourne
    1.4    # Perth
])
 
# Convert logits → probabilities
probs = torch.softmax(logits, dim=0)
print(probs)
tensor([5.7334e-01, 4.2474e-01, 1.2859e-03, 6.3857e-04])
 
Sydney      0.573
Canberra   0.425
Melbourne 0.001
Perth      0.001
در این لحظه مدل فقط یک تصمیم می‌گیرد: بیشترین احتمال مربوط به Sydney است. اما توجه کنید — این به معنای «من مطمئنم Sydney پایتخت است» نیست. این فقط یعنی: «از بین گزینه‌ها، این توکن محتمل‌ترین است.» این دو کاملاً با هم فرق دارند.
فرضیه آموزشی — نه خروجی واقعی مدل: اعداد بالا کاملاً فرضی هستند و صرفاً برای توضیح مکانیزم Logits/Softmax ساخته شده‌اند. یک مدل واقعی و آموزش‌دیده احتمالاً Canberra (پایتخت واقعی استرالیا) را با احتمال بالاتری انتخاب می‌کند، زیرا در داده‌های آموزشی این ارتباط را به‌درستی یاد گرفته است. این مثال صرفاً برای نشان دادن این نکته است که اگر احتمال یک توکن اشتباه کمی بیشتر شود، مدل همان را انتخاب می‌کند — بدون هیچ مکانیسم بررسی حقیقت.

# انتخاب نهایی فقط یک خط کد است

در ساده‌ترین حالت (رمزگشایی حریصانه یا Greedy Decoding)، انتخاب توکن بعدی این‌گونه انجام می‌شود:
decode.py — python3
# Greedy decoding: pick the single most likely token
next_token = torch.argmax(probs)
print(tokens[next_token])
'Sydney'
یعنی: «محتمل‌ترین گزینه را انتخاب کن.» همین.
نکته فنی — Temperature: در عمل، مدل‌ها همیشه از argmax خالص استفاده نمی‌کنند. اغلب از نمونه‌برداری (Sampling) با پارامتری به نام Temperature استفاده می‌شود که میزان تصادفی بودن انتخاب را کنترل می‌کند. Temperature پایین‌تر = خروجی قطعی‌تر و قابل‌پیش‌بینی‌تر؛ Temperature بالاتر = خروجی خلاقانه‌تر اما پرریسک‌تر. با این حال، اصل ماجرا تغییر نمی‌کند: انتخاب همچنان بر اساس احتمال است، نه درستی.

# چرا پاسخ این‌قدر مطمئن به نظر می‌رسد؟

مدل‌های زبانی به‌صورت خودهمبسته (Autoregressive) تولید متن می‌کنند — هر توکن جدید بر اساس توکن‌های قبلی ساخته می‌شود. اگر اولین تصمیم اشتباه باشد، بقیه جمله روی همان مسیر ادامه پیدا می‌کند:
generate.sh — autoregressive
Sydney
Sydney is
Sydney is the
Sydney is the capital
Sydney is the capital of Australia.
// fluent, grammatical, confident — yet built on a wrong first token
به همین دلیل است که پاسخ بسیار روان و منطقی به نظر می‌رسد؛ حتی اگر از ابتدا اشتباه بوده باشد. مدل در حال «ادامه دادن» محتمل‌ترین دنباله است، نه اصلاح کردن آن.

# مثال واقعی‌تر: Hallucination در کد

فرض کنید از مدل می‌پرسید: «آیا در پایتون تابعی به نام isnumeric_ascii() وجود دارد؟» ممکن است مدل با اطمینان پاسخ دهد «بله» و چنین کدی تولید کند:
hallucination.py — python3
text = "12345"
 
if text.isnumeric_ascii():
    print("ASCII Number")
AttributeError: 'str' object has no attribute 'isnumeric_ascii'
در نگاه اول همه چیز طبیعی به نظر می‌رسد. اما اگر کد را اجرا کنید، با خطا روبه‌رو می‌شوید. دلیل چیست؟ مدل احتمالاً الگوی نام توابع واقعی مانند str.isnumeric()، str.isascii() و str.isdigit() را دیده و از ترکیب آن‌ها یک تابع کاملاً منطقی اما غیرواقعی ساخته است.
توضیح مهم — این مثال صرفاً برای آموزش است: این سناریو برای نشان دادن نحوه وقوع Hallucination ارائه شده است. این بدان معنا نیست که مدل‌ها همیشه این اشتباه خاص را می‌کنند. مدل‌های مدرن با آموزش دقیق‌تر (مانند RLHF) و تکنیک‌هایی مانند RAG و Grounding، میزان این خطاها را به‌شدت کاهش داده‌اند. اما از نظر معماری، ریشه مشکل همان است: پیش‌بینی توکن بعدی، نه اعتبارسنجی حقیقت.

# این پدیده Hallucination نام دارد

وقتی مدل اطلاعات یا کدی تولید می‌کند که از نظر نگارشی و منطقی صحیح به نظر می‌رسد اما در دنیای واقعی وجود ندارد یا نادرست است، می‌گوییم مدل دچار Hallucination (توهم) شده است. این به معنای خراب بودن مدل نیست — بلکه نتیجه طبیعی معماری مدل‌های زبانی است؛ زیرا وظیفه آن‌ها پیش‌بینی توکن بعدی است، نه اعتبارسنجی حقیقت.
حوزه فعال تحقیقات: Hallucination یکی از مهم‌ترین زمینه‌های تحقیقاتی در AI است. علل دقیق آن پیچیده است و صرفاً به «argmax اشتباه» خلاصه نمی‌شود — عواملی مانند توزیع داده‌های آموزشی، خطای تقریب در وزن‌ها، و تناقضات در داده‌ها نیز نقش دارند. راه‌حل‌های نوین شامل RAG (تولید تقویت‌شده با بازیابی)، Grounding، و اعتبارسنجی خارجی هستند.

# جمع‌بندی

هر بار که از یک مدل هوش مصنوعی پاسخ دریافت می‌کنید، به یاد داشته باشید که مدل در حال انجام میلیون‌ها ضرب ماتریسی، محاسبه Logits، اعمال Softmax و انتخاب محتمل‌ترین توکن بعدی است. در هیچ‌یک از این مراحل، مفهومی به نام «اطمینان از درست بودن پاسخ» وجود ندارد.
به همین دلیل، روان بودن متن یا لحن قاطع مدل، تضمینی برای درست بودن آن نیست. به بیان ساده:
takeaway.txt
مدل‌های زبانی حقیقت را تولید نمی‌کنند؛ آن‌ها محتمل‌ترین توالی کلمات را تولید می‌کنند.