Makineler Anlamı Nasıl Kavrar? Embedding Felsefesi ve Evrimi

Bir makine “kral” ile “kraliçe” kelimeleri arasındaki ilişkiyi veya bağlama göre tamamen değişen anlamları tam olarak nasıl kavrar?

Bilgisayarlar kelimelerden değil, sayılardan anlar. Bu gerçek, yıllarca doğal dil işlemenin (NLP) en büyük darboğazlarından biriydi. “kral” ve “kraliçe” kelimelerinin birbirine yakın, “elma” kelimesinin ise onlardan uzak olduğunu bir algoritmaya nasıl anlatırsınız? Embedding (sözcük temsilleri) kavramı bu problemi çözmek için doğdu. Bu yazıda, dili matematiksel bir vektör uzayına taşıma fikrini, zaman içinde aşılan problemleri ve çözümlerini anlatacağım.

1. Distributional Semantics (Dağılımsal Anlambilim)

Makinelerin doğal dili anlamlandırma süreci aslında bilgisayar bilimcilerinden ziyade bir dil bilimci olan John Rupert Firth’ün 1950’lerde ortaya attığı ve bugünkü büyük dil modellerinin temel felsefesini oluşturan bir önerme ile başlıyor:

Bir kelimeyi, birlikte bulunduğu kelimelerden tanırsın. (You shall know a word by the company it keeps)

Yani bir kelimenin sözlük anlamına bakmak yerine, o kelimenin cümlelerde nasıl ve nerede kullanıldığına bakarsanız daha doğru bir şekilde anlamlandırabilirsiniz. Makine de tam olarak bunu yapmaya çalışıyor. Kelimelerin sözlükteki tanımlarını ezberlemeye çalışmadan direkt devasa metin yığınlarını okuyarak* hangi kelimelerin aynı bağlamda (context) kullanıldığının istatistiğini tutar.

Türkçe’de bunun için “yüz” kelimesini örnek verebiliriz. Maskelenmiş bir cümle içerisinde yüz kelimesini görseniz cümlenin tamamına bakmadan anlamına tam olarak karar veremezsiniz (güleryüz, yüz lira, denizde yüz-mek vb.). Bu istatistikleri toplamak değil ama onları kullanılabilir bir forma sokmak bir sorundur. Milyonlarca kelime çifti arasındaki ilişkileri nasıl temsil edeceksiniz?

2. Vektör Uzayı: Sayıların Geometrisi

Milyonlarca kelime arasındaki istatistiksel ilişkiyi devasa bir tabloda tutmak hem donanımsal olarak verimsizdir hem de bize kelimeler arası “mesafe” kavramını vermez (karşılaşılan problemlere ve önerilen çözüm yöntemlerine değineceğim). Önerilen çözüm, her kelimeyi sayı dizisi, yani bir vektör olarak temsil etmektir.

İşte bu noktada lineer cebir konuşmaya başlıyoruz. Kelimeleri devasa ve seyrek (sparse) matrislerde tutmak yerine, onları d boyutlu sürekli bir uzayda yoğun (dense) vektörler olarak tanımlarız.

Bunu gözümüzde canlandırmak için kelimeleri 3 boyutlu bir uzaya yerleştirdiğimizi düşünelim. X ekseni “cinsiyet”, Y ekseni “kraliyet/soyluluk”, Z ekseni ise “canlılık” olsun. Bu hayali uzayda “Kral” kelimesi [1.0, 0.9, 1.0] gibi bir koordinata sahipken, “Kraliçe” [-1.0, 0.9, 1.0] koordinatında yer alabilir. “Elma” ise bambaşka bir yerde duracaktır.

Ancak günümüz modelleri 3 boyutla yetinmez. Modern embedding mimarileri kelimeleri 300, 768 hatta 1536 boyutlu uzaylara haritalar.

Kelimeler bu çok boyutlu uzayda birer noktaya dönüştüğünde, “anlam” dediğimiz o soyut kavram artık hesaplanabilir geometriye dönüşür. Birbirine benzeyen kelimeler bu uzayda birbirlerine yakın yerlerde dururken, benzemeyenler birbirlerinden uzaklaşır.

Bunun en çarpıcı kanıtı, kelimeler üzerinde yapabildiğimiz temel matematiktir. Eğer kelimeleri uzayda doğru bir şekilde haritaladıysanız, literatürdeki şu meşhur denklemi çözebilirsiniz:

\[Kral - Erkek + Kadın \approx Kralice\]

Makine “Kral”ın sadece vektör karşılığını bulundurduğundan, “Kral” vektöründen “Erkeklik” yönünü temsil eden uzamsal mesafeyi çıkarıp, “Kadınlık” yönünü eklediğinde, ulaştığı koordinatın “Kraliçe” vektörüne inanılmaz derecede yakın olduğunu bulur.

https://informatics.ed.ac.uk/news-events/news/news-archive/king-man-woman-queen-the-hidden-algebraic-struct

İki kelimenin anlamsal olarak ne kadar benzer olduğunu bulmanın birçok yolu var. Şuan kullanacağımız yöntem (Cosine Similarity), matematiksel olarak bu iki vektörün yüksek boyutlu uzayda birbirine ne kadar paralel olduğuna bakar. İki kelime vektörü arasındaki benzerlik, aralarındaki açının (theta) kosinüsü alınarak ölçülür:

\[\text{cos}(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|}\]

aynı yönü gösteren, yani birbiri ile aynı olan iki vektör için kosinüs değeri 1 olacaktır (cos(0) = 1). Birbiri ile tamamen ilişkisiz olan vektörler için ise kosinüs değeri 0 olacaktır.

Cosine Similarity denkleminin pay kısmında dot product, payda kısmında ise sonucu -1 ile 1 arasına getirmek için normalizasyon işlemi yapılıyor.

# 3. Statik Temsiller (Embeddings)

NLP’nin (Natural Language Processing) erken dönemlerinde literatürde kullanılan yaklaşımların en büyük ortak özelliği statik olmalarıydı. Statik bir modelde, kelimenin matematiksel karşılığı önceden hesaplanıyordu. Kelimenin o an hangi cümlede, hangi kelimelerle yan yana kullanıldığının hiçbir önemi yoktu. Öncesindeki ve sonrasındaki bağlam ne olursa olsun, bir kelime sisteme girdiği an sözlükteki o sabit vektörle temsil ediliyordu. Başlangıçta Bag of Words (BoW) veya TF-IDF gibi sadece kelime frekanslarına dayanan, kelimenin sırasını hiçe sayan bu statik ve seyrek (sparse) dünya, 2013’te Google tarafından duyurulan model mimarileri (Word2Vec) ile boyut değiştirdi.

3.1 Bag of Words (BoW) ve TF-IDF

Word2Vec içindeki mimarilere geçmeden önce NLP’deki ilkel yöntemleri de özet geçmek istiyorum.

Bag of Words (BoW), adından da anlaşılacağı üzere bir cümleyi veya bir dokümanı tarayıp içerisinde geçen kelimeleri bir “çantaya” atan modeldir. Çanta içerisindeki kelimelerin frekansına (sıklığına) bağlı bir yaklaşım uygular.

https://medium.com/@vamshiprakash001/an-introduction-to-bag-of-words-bow-c32a65293ccc

Problem: “ve”, “bir”, “bu” gibi her cümlede çok sık geçen ama anlamsal değeri düşük olan kelimelere (stop-words) yüksek ağırlık verir. Bu problem de modelin, belgenin veya cümlenin gerçek konusunu anlamasını zorlaştırır.

TF-IDF (Term Frequency-Inverse Document Frequency), BoW’un eksikliğini gidermek üzere geliştirilmiştir. Sadece kelimenin bir metinde ne kadar sık geçtiğine bakmaktan ziyade ne kadar nadir olduğuna da bakar.

Örneğin, elimizde 1000 adet tehdit istihbarat raporu var. “Zararlı” kelimesi hemen hemen her raporda geçiyor olsun, “Ransomware” ise sadece 10 tanesinde geçsin. TF-IDF’e göre “Zararlı” kelimesinin skoru, “Ransomware” kelimesine göre düşük çıkacaktır.

## 3.2 Word2Vec

Google ekibi tarafından 2013 yılında duyurulan bir çerçevedir. Kullandığı 2 çeşit mimari var (Continous Bag of Words ve Skip-Gram) fakat bu yazıda ayrı ayrı detay vermeden aynı başlık altında değineceğim.

Word2Vec’in duyurulduğu (makalede 2 model architectures olarak değiniliyor) makalede sürekli “predict” denmesinden, hakkında yazılan tüm yazılarda “prediction-based” ifadesinin geçmesinden anlaşılacağı üzere kendisi önceki modellerin yaptığı gibi kelimeleri saymayıp, tahmin etmeye yönelik bir yaklaşım izliyor.

Asıl amacı makalede değinilen NNLM (Neural Network Language Model) mimarisinin hesaplama karmaşıklığını (milyarlarca kelime üzerindeki eğitim süresinden bahsediyor) düşürerek eğitim süresini makul bir süreye indirmek.

Continuous Bag-of-Words (CBOW) Mimarisi, basitçe bir kelimenin çevresindeki bağlamı oluşturan sözcükleri ortalayarak* hedef kelimeyi tahmin etme yaklaşımını uygular.

Buradaki “ortalayarak” ifadesinin anlamı şu: CBOW, tıpkı geleneksel BoW gibi kelimelerin sırasını önemsemez (zaten ismindeki Bag of Words buradan gelir). Sadece çevresindeki kelimelerin vektörlerini alır, matematiksel olarak birleştirir/ortalar ve ortaya ne çıkması gerektiğini bulmaya çalışarak matematiksel değerleri güncelleyerek öğrenir.

Skip-Gram ise bu sürecin tam tersi yönde işleyen modeldir. Hedef kelimeden yola çıkarak çevresindeki bağlamı tahmin etmeye odaklanır. Yani merkeze “malware” kelimesini koyduğunuzda, ağ size bu kelimenin etrafında “analiz”, “bulaşma”, “tersine” veya “mühendislik” kelimelerinin geçebileceğini tahmin etmeye çalışır. Yapısı gereği nadir kelimelerin temsillerini öğrenmekte CBOW’a göre çok daha başarılıdır.

Problem(ler):

https://spotintelligence.com/2024/10/08/out-of-vocabulary-oov-words/

4. Transformer’lar

2017 yılında Google araştırmacıları tarafından yayınlanan o meşhur “Attention Is All You Need” makalesiyle birlikte NLP dünyası iki ayrı zaman dilimine bölündü. Transformer mimarisinin teknik detaylarına, içindeki Encoder-Decoder yapılarına ve Self-Attention matematiğine farklı bir yazıda çok daha derinlemesine değineceğim. Fakat bu yazının ana konusu olan “makinelerin anlamı kavraması” felsefesinde, Word2Vec’in tıkandığı o büyük problemleri Transformer’ların nasıl çözdüğünü anlatmam gerekiyor.

4.1 Statik Embedding Problemine Çözüm: Dinamik (Contextual) Embedding

Word2Vec’in yaklaşımını, kelimeleri sadece sözlük anlamıyla ezberleyen ama gerçek hayatta iletişim kuramayan birine benzetebiliriz. Sözlükte “Yüz” kelimesini gördüğünde aklına hep aynı sabit, ortalama bir kavram gelir.

Transformer ise kelimelere statik değil, dinamik (contextual) bir yaklaşım sergiler. Günlük hayatta bir insanla sohbet ediyormuşsunuz gibi düşünün. Karşınızdaki kişi “yüz” dediğinde, cümlenin devamını duymadan ne demek istediğini tam olarak anlayamazsınız. “Suda yüz”, “yüz lira” veya “güleryüz”… Transformer da bizim gibi çalışır. Kelimenin anlamını direkt ezberden çekip almaz; cümlenin tamamını aynı anda gördüğü için, o anki bağlama bakar ve kelimeye, o cümleye özel yepyeni bir vektör sentezler. Dolayısıyla kelimeler birer matematiksel etiket değil, cümlenin içeriğine göre anlık şekillenen yapılardır.

4.2 Fixed Context Window Problemine Çözüm: DİKKAT ve Paralel İşleme

Word2Vec’in uzağı göremeyen, sadece kelimenin sağındaki ve solundaki birkaç kelimeye bakan yapısına “Fixed Context Window” demiştik. Bu dar pencere yüzünden, cümlenin en başındaki bir kelimenin, 50 kelime sonraki bir eylemi nasıl etkilediği gözden kaçıyordu. Üstelik Transformer’lardan önce kullanılan eski nesil dil modelleri (RNN’ler) de metni soldan sağa sırayla okudukları için uzun cümlelerin sonuna geldiklerinde başını unutuyorlardı.

Transformer, bu hafıza problemini Self-Attention (Öz-Dikkat) mekanizmasıyla çözüyor.

Dikkat mekanizmasının çıkışı Dzmitry Bahdanau’nun makalesi. 2014 yılında yayınlanan makale: “Neural Machine Translation by Jointly Learning to Align and Translate” Attention is All You Need makalesinde de buna atıfta bulunuluyor.

Self-Attention‘ı, bir kelimenin cümledeki diğer tüm kelimelerle anlık “göz teması kurması” olarak düşünebiliriz. Bütün kelimeler sisteme aynı anda girdiğinde, her bir kelime odak noktası olur ve cümledeki diğer tüm kelimelere matematiksel olarak şu soruyu sorar: “Benim şu anki bağlamımı tam olarak kazanabilmem için hanginize, ne kadar dikkat etmem gerekiyor?

Bunu klasik bir zamir problemi üzerinden, günlük bir örnekle canlandıralım: “Banka soyguncusu, çaldığı paraları aceleyle ona ait olan gizli kasaya sakladı.” Model “ona” kelimesini işlerken, bu kelimenin kim veya ne olduğunu anlamak zorundadır. “Ona” kelimesi, cümledeki tüm kelimelerle matematiksel bir çarpışma (sorgu) yaşar. “Paraları” ile düşük bir skor, “kasaya” ile orta bir skor üretirken; cümlenin en başındaki “soyguncusu” kelimesiyle yüksek bir “dikkat skoru” (attention weight) üretir.

Self-Attention skorlaması sayesinde, kelimelerin arasına 10 kelime de girse, 100 kelime de girse, birbiriyle anlamsal bağı olan kelimeler aradaki gürültüden (gereksiz kelimelerden) hiç etkilenmeden birbirlerini bulurlar. Okuma işlemi sırayla yapılmadığı için mesafe kavramı tamamen ortadan kalkar. Model, metni sadece yan yana duran kelimeler yığını olarak değil, her kelimenin birbiriyle dikkat skorlarıyla doğrudan bağlı olduğu devasa bir ağ olarak görmeye başlar.

4.3 Out of Vocabulary (OOV) Problemine Çözüm: Subword Tokenization

Word2Vec kelimeleri bölünemez bütünler olarak kabul ettiği için, karşısına eğitim setinde hiç görmediği bir kelime çıktığında afallıyordu. Transformer tabanlı modern mimariler ise alt-kelime (subword tokenization) algoritmaları kullanır. Daha önce hiç görmediği “kitaplıktakiler” diye uzun bir kelimeyle karşılaştığında hata vermez; kelimeyi “kitap”, “lık”, “taki” ve “ler” gibi alt parçalarına böler. Kökün ve eklerin matematiksel karşılıklarını bildiği için, bu parçaları birleştirerek bilinmeyen o kelimenin anlamını olay anında oluşturabilir.

5. Sonuç

Bütün bu evrimsel sürece dönüp baktığımızda aslında yapay zekanın “anlam” arayışındaki yolculuğunu görüyoruz. Bag of Words ve TF-IDF kelimelerin sadece istatistiğini tutarak işe başladı. Word2Vec, kelimeleri devasa bir uzaya taşıyarak onlara sabit birer matematiksel konum verdi. Son olarak Transformer’lar ise bu kelimelere, cümlenin tamamına aynı anda bakarak anlık şekillenen bir bağlam kazandırdı.