Attention Is All You Need: ChatGPT’nin Arkasındaki Makale, Sade Dille

ChatGPT’deki “GPT” kısaltmasının son harfi bir makaleden geliyor. GPT, Generative Pre-trained Transformer demek; o “Transformer” da Haziran 2017’de yayımlanan bir makalenin icadı. Makalenin adı iddialı: Attention Is All You Need, yani “İhtiyacın Olan Tek Şey Dikkat”.

Makaleyi o sırada Google’da çalışan sekiz araştırmacı yazdı ve NeurIPS (o zamanki adıyla NIPS) konferansında sundu. Bugün yapay zekâ tarihinin en çok atıf alan makalelerinden biri. Bu yazıda makalenin ne dediğini formüllere boğmadan, günlük hayattan örneklerle ve birkaç satırlık Python koduyla anlatıyorum. Makine öğrenmesi bilmene gerek yok.

Makaleden önce: kelimeleri tek tek okuyan modeller

2017’den önce çeviri ve metin işleyen modellerin çoğu RNN (tekrarlayan sinir ağı) denen bir yapı kullanıyordu. RNN bir cümleyi senin bir kitabı okuduğun gibi okur: soldan sağa, kelime kelime. Her yeni kelimede o ana kadar okuduğunu kısa bir özet hâlinde aklında tutar ve yola devam eder.

Bunun iki sorunu vardı:

  • Uzun cümlede başı unutmak. Bir telefonda kulağı oyunu düşün. Mesaj kişiden kişiye geçtikçe bozulur. RNN’de de cümlenin başındaki bilgi, sona gelene kadar birçok adımdan geçip silikleşir.
  • Yavaş eğitim. 10. kelimeyi işlemek için 9. kelimenin bitmesini beklemek zorundasın. Bu yüzden işi birçok ekran kartına (GPU) bölüp aynı anda yaptırmak zordu. Model büyüdükçe eğitim haftalar sürüyordu.

Araştırmacılar bu sorunu hafifletmek için RNN’lere zaten “attention” (dikkat) denen bir eklenti takıyordu. Makalenin cesur fikri şuydu: RNN’i tamamen çıkar, sadece dikkat mekanizması kalsın. Başlığın “ihtiyacın olan tek şey” kısmı buradan geliyor.

Attention (dikkat) ne demek?

Şu cümleye bak:

Kedi sütü içti çünkü o acıkmıştı.

“O” kim? Sen hiç düşünmeden “kedi” dersin. Ama “Kedi sütü içmedi çünkü o bozulmuştu” deseydim, “o” artık süt olurdu. Bir kelimenin anlamı, cümledeki diğer kelimelere bakarak çıkıyor.

Dikkat mekanizması tam olarak bunu yapıyor: cümledeki her kelime, diğer tüm kelimelere bakıp “anlamımı çıkarmak için hangisine ne kadar dikkat etmeliyim?” diye soruyor. Sonuç her kelime için bir yüzde listesi oluyor.

Günlük hayattan bir benzetme: kalabalık bir toplantıda biri adını söylediğinde kulağın o tarafa döner. Herkesi aynı anda duyuyorsun ama hepsine eşit dikkat etmiyorsun. RNN sırayla tek tek dinliyordu; dikkat mekanizması herkesi aynı anda duyup kime kulak vereceğini seçiyor.

Küçük bir Python gösterimi

Bir bilgisayar kelimeleri anlamaz, sayıları anlar. Bu yüzden her kelime bir sayı listesine (vektöre) çevrilir. Birbirine anlamca yakın kelimelerin vektörleri de birbirine benzer. Aşağıdaki sayıları ben elle seçtim; gerçek bir model bunları milyonlarca cümleden kendisi öğreniyor.

import numpy as np
# Her kelimeyi 3 sayıyla temsil ediyoruz (gerçek modellerde yüzlerce sayı olur).
# Sayıları elle seçtik: "kedi" ile "o" birbirine benzesin diye.
kelimeler = ["kedi", "sütü", "içti", "çünkü", "o", "acıkmıştı"]
vektorler = np.array([
[2.7, 0.3, 0.0], # kedi
[0.3, 2.4, 0.3], # sütü
[0.6, 0.9, 2.7], # içti
[0.0, 0.3, 0.6], # çünkü
[2.4, 0.6, 0.3], # o
[1.5, 0.3, 1.8], # acıkmıştı
])
def softmax(x):
# Puanları toplamı 1 olan yüzdelere çevirir
e = np.exp(x - x.max())
return e / e.sum()
# "o" kelimesi diğer kelimelere ne kadar dikkat ediyor?
soru = vektorler[kelimeler.index("o")]
puanlar = vektorler @ soru # benzerlik puanı: iki vektörün çarpımı
agirliklar = softmax(puanlar / np.sqrt(3)) # makaledeki gibi boyutun köküne bölüyoruz
for kelime, a in sorted(zip(kelimeler, agirliklar), key=lambda t: -t[1]):
print(f"{kelime:<10} {a:.0%}")

Çıktı:

kedi 45%
o 34%
acıkmıştı 12%
içti 5%
sütü 3%
çünkü 1%

“o” kelimesi dikkatinin en büyük payını “kedi”ye veriyor. Makaledeki formülün özü bu üç adım: benzerliği hesapla, boyutun köküne böl, softmax ile yüzdeye çevir. Gerçek modelde her kelime için üç ayrı vektör (soru, anahtar, değer; makalede query, key, value) kullanılıyor ve bu işlem paralel olarak birkaç kez yapılıyor. Makale buna multi-head attention (çok başlı dikkat) diyor: cümleye aynı anda farklı gözlüklerle bakmak gibi. Her başlık kelimeler arasındaki farklı türden bir ilişkiyi yakalayabiliyor.

Makale ne getirdi?

Transformer: sırayla değil, hepsi birden

Makalenin önerdiği mimarinin adı Transformer. İki parçadan oluşuyor:

  • Kodlayıcı (encoder): Girdi cümlesini okuyup anlamını sayılara döküyor.
  • Çözücü (decoder): Bu anlamdan yola çıkarak çıktıyı, örneğin çeviriyi, kelime kelime üretiyor.

Asıl fark şu: Transformer cümledeki tüm kelimelere aynı anda bakıyor. 10. kelime 9. kelimeyi beklemiyor. Bu da eğitimin GPU’lara bölünüp çok daha hızlı yapılmasını sağlıyor.

Peki kelimeler aynı anda okunuyorsa model sırayı nereden biliyor? “Kedi köpeği kovaladı” ile “Köpek kediyi kovaladı” aynı şey değil. Makale buna her kelimeye bir konum bilgisi (positional encoding) ekleyerek çözüm buluyor: kelimenin vektörüne “ben cümlenin 3. kelimesiyim” diyen bir işaret ekleniyor.

Sonuçlar

Makale modeli İngilizceden Almancaya ve İngilizceden Fransızcaya çeviri üzerinde denedi ve o dönemin en iyi sonuçlarını geçti. Çeviri kalitesini ölçen BLEU puanında İngilizce-Almanca için 28,4, İngilizce-Fransızca için 41,8 aldı. Daha da çarpıcı olanı maliyetti: büyük model sekiz GPU üzerinde 3,5 günde eğitildi. Bu, kendinden önceki en iyi modellerin harcadığı hesaplama gücünün küçük bir kısmıydı.

Sonrası: BERT, GPT ve ChatGPT

Makale bir çeviri modeli önerdi ama asıl etkisi sonradan görüldü. Araştırmacılar Transformer’ın iki parçasını ayırıp ayrı ayrı kullandı:

  • BERT (2018, Google): Sadece kodlayıcı kısmı kullanıyor. Metni anlamakta iyi; arama motorlarında, metin sınıflandırmada kullanıldı.
  • GPT serisi (2018’den itibaren, OpenAI): Sadece çözücü kısmı kullanıyor. Bir sonraki kelimeyi tahmin ederek metin üretmekte iyi. ChatGPT bu serinin üzerine kuruldu.

Bugün kullandığın büyük dil modellerinin neredeyse hepsi bu makaledeki fikrin bir varyasyonu. Bu yüzden makale 2026 itibarıyla 250 binden fazla atıf almış durumda.

Bir makale başlığındaki Beatles

Makalenin başlığı bilerek seçilmiş bir göndermeyle geliyor: Beatles’ın “All You Need Is Love” şarkısı. Bilimsel makaleler genelde “Şu Yöntemle Şu Problemin Verimli Çözümü” gibi uzun ve kuru başlıklar taşır. Bu başlık ise kısa, akılda kalıcı ve iddialı. Bugün yapay zekâ dünyasında “X Is All You Need” kalıbıyla yazılmış sayısız makale var; başlığın kendisi bir mim’e dönüştü.

Mimarinin adının hikâyesi de benzer şekilde basit: Wikipedia’daki anlatıma göre yazarlardan Jakob Uszkoreit “Transformer” kelimesini sadece kulağa hoş geldiği için seçmiş. Bir de bilinmeyen bir ayrıntı: makalede sekiz yazarın katkısı eşit sayılıyor ve isimlerin sırası rastgele belirlenmiş.

Benim yorumum

Bu makaleyi ilk kez bir eğitimde duymuştum. O zaman beni en çok şaşırtan şey şuydu: Google’da çalışan bir grup araştırmacı bir makale yayımlıyor ve bu makale bir süre sonra dünyayı değiştiriyor. Bir şirketin geliştirdiği fikri herkesin okuyabileceği şekilde paylaşması ve başkalarının o fikrin üzerine bambaşka ürünler kurması bana çok etkileyici gelmişti.

Bu yazı için araştırma yaparken başlığın bir Beatles şarkısına gönderme olduğunu öğrenmek de hoşuma gitti; dünyayı değiştiren bir çalışmanın arkasında biraz da oyunbazlık varmış.

Dürüst olmak gerekirse, bu makaleyi ilk gördüğümde aklımdan geçen cümle şuydu: “Ben de bir gün böyle bir çalışma yapmak istiyorum.” Bu yazıyı yazmak da o yolda attığım küçük bir adım.

Makalenin kendisini okumak istersen ücretsiz: arXiv: 1706.03762. Formüllerden korkma; giriş ve sonuç bölümleri bu yazıyı okuduktan sonra rahat anlaşılıyor.


Hatice Özbolat | Teknoloji ve AI Rehberi sitesinden daha fazla şey keşfedin

Son gönderilerin e-postanıza gönderilmesi için abone olun.

Comments

Bir yanıt yazın