Ana içeriğe geç

Orta9 dk

Halüsinasyon: neden olur, nasıl azaltılır

Önkoşul:Yaygın başarısızlık kalıpları

Kanca

Bir modele hiç var olmayan bir kitabın ismini sorsan, model “böyle bir kitap yok” mu der, yoksa uydurur mu? Bu ders, bu soruyu gerçek bir modelle, gerçek bir deneyle cevaplıyor.

Sezgi

“Halüsinasyon” (hallucination), bir modelin, yanlış ya da uydurma bir bilgiyi, doğru bir bilgiyle aynı güvenle sunmasıdır. Bu, bir “arıza” değil — bir dil modelinin mimarisinin doğrudan bir sonucudur: NLP kategorisinin 20. dersinde gördüğümüz gibi, softmax her zaman toplamı 1 olan bir olasılık dağılımı üretir — “bilmiyorum” diye bir seçenek yoktur.

Mekanizma

  1. kategorideki (NLP & LLM) aynı eğitilmiş mini-GPT’yi, eğitim verisinde hiç görmediği bağlamlarla test edelim:

Eğitim dışı girdide bile %100 güven

# Modeli, eğitim verisinde hiç görmediği bir bağlamla (aynı harfin üst üste tekrarı --
# "ABC" döngüsünde asla olmayan bir örüntü) test edelim.
model.eval()
print(f"\n{'Bağlam':<8} {'P(A)':<8} {'P(B)':<8} {'P(C)':<8} {'En olası':<10} {'Güven'}")
for baglam in ["AB", "AAAA", "BBBB", "CCCC"]:
    ids_b = torch.tensor([[stoi[c] for c in baglam]])
    with torch.no_grad():
        p = F.softmax(model(ids_b)[0, -1], dim=-1)
    en_olasi = VOCAB[p.argmax().item()]
    print(f"{baglam:<8} {p[0].item():<8.3f} {p[1].item():<8.3f} {p[2].item():<8.3f} {en_olasi:<10} {p.max().item():.3f}")

print("\n'AB' eğitim verisinde görülmüştü -- model haklı olarak %100 güvenle 'C' diyor.")
print("Ama 'AAAA', 'BBBB', 'CCCC' -- bunların hiçbiri eğitim verisinde yoktu ('ABC' döngüsünde")
print("aynı harf üst üste asla gelmez). Yine de model, her biri için tam %100 güvenle bir")
print("cevap üretti -- 'bilmiyorum' deme seçeneği yok, çünkü softmax her zaman toplamı 1 olan")
print("bir dağılım üretmek zorundadır (20. ders). Bu, halüsinasyonun yapısal kökenidir.")

Bağlam   P(A)     P(B)     P(C)     En olası   Güven
AB       0.000    0.000    1.000    C          1.000
AAAA     0.000    1.000    0.000    B          1.000
BBBB     0.000    0.000    1.000    C          1.000
CCCC     1.000    0.000    0.000    A          1.000

'AB' eğitim verisinde görülmüştü -- model haklı olarak %100 güvenle 'C' diyor.
Ama 'AAAA', 'BBBB', 'CCCC' -- bunların hiçbiri eğitim verisinde yoktu ('ABC' döngüsünde
aynı harf üst üste asla gelmez). Yine de model, her biri için tam %100 güvenle bir
cevap üretti -- 'bilmiyorum' deme seçeneği yok, çünkü softmax her zaman toplamı 1 olan
bir dağılım üretmek zorundadır (20. ders). Bu, halüsinasyonun yapısal kökenidir.

Matematik

Güven, doğruluğun garantisi değildir
∑i=1VP(xi∣bag˘lam)=1her zaman,bag˘lam ne olursa olsun\begin{gathered} \sum_{i=1}^{V} P(x_i \mid \text{bağlam}) = 1 \\ \text{her zaman,} \\ \text{bağlam ne olursa olsun} \end{gathered}

Bu matematiksel zorunluluk (softmax’ın tanımı), modelin gördüğü bağlamın kendi eğitim dağılımına ait olup olmadığına bakmaksızın geçerlidir. Model, “bu bağlamı hiç görmedim” diye bir sinyal üretmez — sadece elindeki bilgiyle en olası tahmini üretir. Bu dersteki deneyde, “AAAA” gibi tamamen yeni bir bağlamda bile en yüksek olasılık daima 1.0’a yakınsadı.

Kod

Eğitimde görülen ve görülmeyen bağlamlarda model güvenini gösteren çubuk grafik; tüm çubuklar aynı yükseklikte, yaklaşık 1.0.(grafiği tam boyutta, yeni sekmede aç)
Eğitimde görülen 'AB' bağlamı (yeşil) ile hiç görülmeyen 'AAAA', 'BBBB', 'CCCC' bağlamları (turuncu) arasında, model güveni açısından hiçbir fark yok -- hepsi %100.

Bu bulgunun nedenini ve pratik azaltma yollarını özetleyelim:

Neden olur, nasıl azaltılır

print("\nHalüsinasyon neden olur:")
print("  1. Mimari zorunluluk: softmax her zaman 1'e toplanan bir dağılım üretir -- 'bilmiyorum'")
print("     diye bir seçenek yoktur, model her zaman 'en olası' bir token seçmek zorundadır.")
print("  2. Güven (confidence), doğruluğun garantisi değildir (bu dersteki örnek) -- eğitim")
print("     dağılımı dışındaki bir girdide bile model yüksek olasılıklı cevaplar üretebilir.")
print("  3. 4. dersteki bulgu: 'uzman' bir persona, yanlış bir cevabı daha ikna edici gösterebilir --")
print("     halüsinasyonu daha tehlikeli kılar (fark edilmesi zorlaşır).")
print("\nHalüsinasyon nasıl azaltılır:")
print("  1. Groundıng (temellendirme): modele, cevabı kendi hafızasından uydurmak yerine,")
print("     verilen bir kaynaktan alıntı yapmasını sağlamak -- 11. dersin (RAG) tam konusu.")
print("  2. Düşük temperature (22. ders): factual görevlerde T'yi düşürmek, modelin en olası")
print("     (genelde en güvenilir) cevaba yakınsamasını sağlar -- ama riski sıfırlamaz.")
print("  3. 'Bilmiyorum' seçeneğini açıkça izin vermek: istemde 'emin değilsen belirt' gibi bir")
print("     talimat, modelin yüksek olasılıklı ama temelsiz bir cevap yerine belirsizliğini")
print("     ifade etmesini (kısmen) teşvik edebilir.")
print("  4. İnsan doğrulaması: yüksek riskli kararlarda (tıbbi, hukuki, mali), model çıktısı")
print("     her zaman bir insan tarafından kontrol edilmelidir.")

Halüsinasyon neden olur:
  1. Mimari zorunluluk: softmax her zaman 1'e toplanan bir dağılım üretir -- 'bilmiyorum'
     diye bir seçenek yoktur, model her zaman 'en olası' bir token seçmek zorundadır.
  2. Güven (confidence), doğruluğun garantisi değildir (bu dersteki örnek) -- eğitim
     dağılımı dışındaki bir girdide bile model yüksek olasılıklı cevaplar üretebilir.
  3. 4. dersteki bulgu: 'uzman' bir persona, yanlış bir cevabı daha ikna edici gösterebilir --
     halüsinasyonu daha tehlikeli kılar (fark edilmesi zorlaşır).

Halüsinasyon nasıl azaltılır:
  1. Groundıng (temellendirme): modele, cevabı kendi hafızasından uydurmak yerine,
     verilen bir kaynaktan alıntı yapmasını sağlamak -- 11. dersin (RAG) tam konusu.
  2. Düşük temperature (22. ders): factual görevlerde T'yi düşürmek, modelin en olası
     (genelde en güvenilir) cevaba yakınsamasını sağlar -- ama riski sıfırlamaz.
  3. 'Bilmiyorum' seçeneğini açıkça izin vermek: istemde 'emin değilsen belirt' gibi bir
     talimat, modelin yüksek olasılıklı ama temelsiz bir cevap yerine belirsizliğini
     ifade etmesini (kısmen) teşvik edebilir.
  4. İnsan doğrulaması: yüksek riskli kararlarda (tıbbi, hukuki, mali), model çıktısı
     her zaman bir insan tarafından kontrol edilmelidir.

Nerede işe yarar

Halüsinasyonu tamamen ortadan kaldırmak (bu dersteki matematiksel nedenden ötürü) mümkün değildir — ama yönetilebilir:

  • En etkili yöntem grounding’dir (temellendirme): modele cevabı kendi hafızasından “hatırlamak” yerine, sana verdiğin bir kaynaktan alıntı yapmasını iste — 11. ders (RAG) bunu sistematik hale getirir.
  • Yüksek riskli görevlerde insan doğrulaması atlanmamalıdır — model güveni (bu dersteki gibi) yanıltıcı olabilir.
  • 4. dersteki bulguyu hatırla: “uzman” bir persona, yanlış bir cevabı daha ikna edici gösterebilir — bu, halüsinasyonu fark etmeyi zorlaştırır.

Bu 2 hatayı yaparsın:

  1. Modelin yüksek bir olasılıkla cevap verdiğini görünce, bunu “kesinlikle doğru” ile eş tutmak — bu dersteki deney, bunun yanlış olduğunu kanıtlıyor.
  2. Halüsinasyonun “gelecekte, daha büyük modellerle” tamamen çözülecek bir sorun olduğunu düşünmek — bu, softmax’ın matematiksel tanımından kaynaklanan yapısal bir özelliktir, sadece azaltılabilir.

Kendini test et

1. Notebook'ta model, hiç görmediği 'AAAA' bağlamında bile %100 güvenle bir cevap üretiyor. Bu neyi kanıtlıyor?
  1. Modelin bu örüntüyü de eğitimde gördüğünü
  2. Model mimarisinin, gördüğü bağlamın eğitim dağılımına ait olup olmadığını ayırt edemediğini -- softmax her zaman toplamı 1 olan bir dağılım ürettiği için, 'bilmiyorum' diye bir seçenek yoktur (doğru cevap)
  3. Bir hesaplama hatası olduğunu
  4. Modelin rastgele bir sayı ürettiğini

Neden: halusinasyon-kaniti bloğunda 'AB' (eğitimde görülen) ile 'AAAA' (hiç görülmeyen) arasında güven açısından hiçbir fark yok -- ikisi de tam 1.000.

2. Softmax'ın 'her zaman 1'e toplanan bir dağılım üretmesi' özelliği, halüsinasyonla nasıl ilişkilidir?
  1. Hiçbir ilişkisi yoktur
  2. Bu matematiksel zorunluluk, modelin 'bu konuda hiçbir fikrim yok' diye bir sinyal üretmesini imkansız kılar -- model her zaman, elindeki bilgiyle en olası bir tahmin üretmek zorundadır, bilgisi yetersiz olsa bile (doğru cevap)
  3. Softmax sadece eğitim sırasında kullanılır
  4. Bu özellik sadece küçük modellerde görülür

Neden: MathBox'ta bu formül açıkça gösteriliyor: toplam her zaman 1'dir, bağlam ne olursa olsun -- bu da halüsinasyonun yapısal/matematiksel kökenidir.

3. Halüsinasyonu azaltmak için en etkili yöntem olarak bu derste hangi teknik öne çıkarılıyor?
  1. Modeli daha büyük yapmak
  2. Grounding (temellendirme) -- modelden cevabı kendi hafızasından üretmesini istemek yerine, verilen bir kaynaktan alıntı yapmasını istemek; bu, 11. dersin (RAG) temel konusudur (doğru cevap)
  3. Sadece İngilizce kullanmak
  4. Temperature değerini yükseltmek

Neden: kullanım bölümünde grounding/RAG açıkça 'en etkili yöntem' olarak öne çıkarılıyor -- düşük temperature ve insan doğrulaması tamamlayıcı önlemler olarak listeleniyor, ama riski sıfırlamıyor.

Özet

Özet

  • Halüsinasyon, bir modelin yanlış bilgiyi doğru bilgiyle aynı güvenle sunmasıdır.
  • Bu, bir arıza değil -- softmax'ın "her zaman 1'e toplanan bir dağılım üretme" zorunluluğunun yapısal bir sonucudur.
  • Gerçek bir modelle deneyde, eğitim dışı bir bağlamda ('AAAA') bile güven tam %100 kaldı.
  • En etkili azaltma yöntemi grounding (temellendirme) -- modeli verilen bir kaynağa dayandırmak (11. ders, RAG).
  • Model güveni yüksek olsa bile, yüksek riskli kararlarda insan doğrulaması vazgeçilmezdir.
Sonraki adım: RAG'e giriş →