Embedding Nedir? Kelimeler Nasıl Sayıya Dönüşür
Embedding, kelimeleri anlam taşıyan sayı dizilerine çevirir. Word2vec sezgisinden bağlamsal embedding'e, kosinüs benzerliğine ve kullanım alanlarına bakıyoruz.
embeddingword2vecNLPAI mimarisivektör
Bir bilgisayar “köpek” kelimesini nasıl anlar?
Bir bilgisayar programı temelde sayılarla çalışır; harflerden oluşan bir metni doğrudan “anlayamaz”. Peki büyük dil modelleri “köpek” ile “kedi”nin birbirine “kuş”tan daha yakın olduğunu nasıl biliyor? Cevap, her kelimeyi sabit uzunlukta bir sayı dizisine — bir vektöre — çevirmekten geçiyor. Bu sayı dizisine embedding deniyor ve modern yapay zekanın neredeyse her katmanının altında bu fikir yatıyor.
Embedding’i anlamanın en kolay yolu bir benzetmeyle başlamak: coğrafi koordinatlar. İstanbul’u “41.0, 28.9” gibi iki sayıyla tarif edebilirsiniz; bu sayılar şehrin konumunu taşır ve yakın şehirlerin koordinatları da birbirine yakın çıkar. Embedding de kelimeler için aynı işi yapar — sadece iki boyutlu bir haritada değil, yüzlerce hatta binlerce boyutlu bir “anlam uzayında”. Her kelime bu uzayda bir noktaya karşılık gelir ve anlamca yakın kelimeler birbirine yakın noktalara düşer. Sözlükte embedding maddesi kısa tanımı verir; bu yazıda mekanizmanın nasıl işlediğine ve nereden geldiğine bakacağız.
Word2vec: sayıların anlam taşıdığı an
Fikrin kendisi eskiye dayanır, ama pratikte işe yarayan ve yaygınlaşan ilk büyük adım 2013’te geldi. Tomas Mikolov ve Google’daki ekibi, “Efficient Estimation of Word Representations in Vector Space” başlıklı makalede word2vec’i tanıttı: kelimeleri, çevrelerindeki kelimelere bakarak vektöre çeviren, hesaplama açısından ucuz bir sinir ağı yöntemi. Yöntemin varsayımı dilbilimde eskiden beri bilinen bir gözleme dayanıyor: bir kelimenin anlamı, çoğunlukla yanında hangi kelimelerin geçtiğiyle belli olur. “Kahve” kelimesi genelde “fincan”, “içmek”, “sabah” ile birlikte görülür; word2vec milyonlarca cümleden bu birlikte-geçme örüntüsünü öğrenerek her kelimeye bir vektör atar.
Makalenin asıl şaşırtıcı bulgusu, bu vektörlerin sadece benzerliği değil, kelimeler arası ilişkileri de taşımasıydı. Yazarlar bunu vektör aritmetiğiyle gösterdi: “büyük” vektöründen “en büyük” vektörünü çıkarıp “küçük” vektörüne eklediğinizde, sonuca en yakın vektör “en küçük” kelimesine ait çıkıyordu. Coğrafi örnekte de aynı örüntü görülüyordu — “Paris” vektöründen “Fransa” vektörünü çıkarıp “İtalya” vektörünü eklediğinizde, uzayda en yakın nokta “Roma” oluyordu. Bu, modelin sadece kelimeleri kümelemediğini, “başkent-ülke” gibi soyut bir ilişkiyi de geometrik bir yön olarak öğrendiğini gösteriyordu. Bu sonuçları popülerleştiren “kral - erkek + kadın ≈ kraliçe” örneği de aynı sezgiyi anlatır: cinsiyet ve rütbe gibi kavramlar, vektör uzayında tutarlı yönlere karşılık gelir.
Word2vec’in pratikteki değeri de göz ardı edilemez: Mikolov ve ekibi, önceki yöntemlere kıyasla çok daha düşük hesaplama maliyetiyle, milyarlarca kelimelik veriden bir günde yüksek kaliteli vektörler üretebildiklerini gösterdi — bu verimlilik, embedding fikrinin laboratuvardan pratik uygulamalara yayılmasını sağladı.
Sınır: aynı kelime, tek vektör
Word2vec’in ciddi bir kısıtı vardı: her kelimeye tek bir sabit vektör atardı. Bu, “banka” kelimesinin “para yatırdığım banka” ile “nehir bankası” cümlelerinde aynı vektörle temsil edilmesi demekti — oysa bu iki kullanımın anlamı tamamen farklı. Word2vec, kelimeyi bağlamından bağımsız, sözlükteki tek bir madde gibi ele alıyordu.
Bu sorunu çözen adım, transformer mimarisiyle birlikte geldi. 2018’de Jacob Devlin ve Google ekibinin tanıttığı BERT modeli, kelimenin vektörünü cümledeki diğer tüm kelimelere bakarak, o anki bağlama göre yeniden hesaplıyordu. Devlin ve ekibinin makalesinin vurguladığı gibi, model metni hem soldan hem sağdan aynı anda okuyarak (“bidirectional”) derin bağlamsal temsiller öğreniyordu — daha önceki tek yönlü ya da sabit yöntemlerin aksine. Bunun mekanik omurgası attention mekanizması: modelin bir kelimeyi işlerken cümledeki hangi diğer kelimelere “bakacağına” ağırlık vermesi. Sonuçta “banka” kelimesi artık iki farklı cümlede iki farklı vektör alabiliyor; embedding statik bir sözlükten, bağlama duyarlı bir hesaplamaya dönüşmüş oluyor. Bu hesaplamanın adım adım işleyişini attention mekanizması yazısında anlattım.
Kelimeden cümleye: cümle embedding’leri
Bugüne kadar tek kelimeden bahsettik, ama pratikte çoğu zaman bir cümlenin tamamını tek bir vektörle temsil etmek gerekiyor — arama motoru bir sorguyu, öneri sistemi bir ürün açıklamasını karşılaştırmalı. BERT gibi modeller doğrudan bunun için tasarlanmamıştı; bir cümleyi BERT’e verip anlamlı, karşılaştırılabilir tek bir vektör almak hem yavaş hem de ek bir mühendislik gerektiriyordu.
2019’da Nils Reimers ve Iryna Gurevych’in yayımladığı Sentence-BERT makalesi bu açığı kapattı. Yazarlar, BERT’i “siamese” (ikiz) ağ yapısıyla eğiterek, cümleleri doğrudan karşılaştırılabilir vektörlere çeviren bir yöntem geliştirdi. Kazanç çarpıcıydı: makalenin verdiği örnekte, 10.000 cümle arasından en benzer çifti bulmak orijinal BERT ile yaklaşık 65 saat sürerken, Sentence-BERT ile bu iş yaklaşık 5 saniyeye iniyordu. Bu hız farkı, embedding’lerin arama ve RAG gibi milyonlarca belge üzerinde çalışan sistemlerde neden pratik olduğunu açıklıyor.
Benzerliği ölçmek: kosinüs benzerliği
İki kelime ya da cümle vektöre dönüştükten sonra, “bunlar ne kadar benzer” sorusunu nasıl sayısal bir cevaba çeviriyoruz? En yaygın yöntem kosinüs benzerliği. Sezgisi basit: iki vektörü, anlam uzayının merkezinden çıkan iki ok gibi düşünün. Bu oklar aynı yöne işaret ediyorsa (aralarındaki açı küçükse) kosinüs benzerliği 1’e yakın çıkar — yani anlamca çok yakınlar. Oklar birbirine dik ise benzerlik sıfıra yakındır, yani aralarında bir ilişki yoktur.
Burada kilit nokta, oyunun büyüklük değil yön üzerinden oynanması. İki vektörün uzunluğu farklı olsa bile aynı yöne işaret ediyorlarsa yüksek benzerlik alırlar — bu da kosinüs benzerliğini, cümle uzunluğu ya da kelime sıklığı gibi büyüklük farklarından etkilenmeyen, sağlam bir ölçüt yapar. RAG mimarisi üzerine yazdığım yazıda anlattığım “sorguya en yakın belge parçasını bulma” adımı, tam olarak bu kosinüs benzerliği hesabına dayanır.
Nerelerde kullanılıyor?
Embedding, arka planda çalışan ama üç uygulamayı doğrudan mümkün kılan bir katman:
Arama. Klasik anahtar kelime araması “kargo ne zaman gelir” ile “teslimat süresi nedir” sorularını farklı kelimeler kullandığı için birbirinden ayrı görür. Embedding tabanlı arama ikisini de aynı anlam bölgesine yerleştirdiği için, kullanıcı hangi kelimeyi seçerse seçsin doğru sonucu bulabilir.
RAG (bilgiyle güçlendirilmiş üretim). Bir dil modeline güncel ya da özel bir belgeyi “okutmak” istediğinizde, önce o belgeyi parçalara bölüp her parçayı embedding’e çevirirsiniz; kullanıcı soru sorduğunda soru da embedding’e çevrilir ve vektör veritabanında ona en yakın parçalar aranır. Bu zincirin ayrıntısını RAG mimarisi yazısında anlattım.
Öneri sistemleri. Bir ürünü, bir makaleyi ya da bir şarkıyı embedding uzayında bir noktaya yerleştirdiğinizde, “buna benzer olanlar” sorusu artık en yakın noktaları bulma problemine indirgenir — kullanıcı davranışına bakmadan bile, sadece içeriğin anlamsal yakınlığından öneri üretebilirsiniz.
Sınırları ve önyargı sorunu
Embedding sihirli değil; öğrendiği her şey, eğitildiği veriden gelir — verinin içindeki önyargılar da dahil. Tolga Bolukbasi ve ekibinin 2016’da yayımladığı “Man is to Computer Programmer as Woman is to Homemaker?” başlıklı makale, Google News verisiyle eğitilmiş yaygın word2vec vektörlerinin ciddi cinsiyet stereotipleri taşıdığını gösterdi. Araştırmacılar, cinsiyet önyargısının vektör uzayında belirli bir yön olarak kodlandığını; bu yönün “hemşire”, “sekreter” gibi mesleklerle kadın, “programcı”, “mimar” gibi mesleklerle erkek arasında anlamlı bir yakınlık ürettiğini ortaya koydu. Yazarlar bir düzeltme (debiasing) yöntemi de önerdi, ama bulgunun kendisi kritik bir uyarı taşıyor: embedding, dünyayı olduğu gibi değil, eğitim verisinde yazılmış olduğu gibi öğrenir.
Bunun pratik sonucu şu: bir embedding modelini üretime koyarken “bu model tarafsız” varsayımı yapılamaz. Arama sıralaması, öneri listesi ya da otomatik eşleştirme gibi kullanıcıyı doğrudan etkileyen sistemlerde, altta yatan embedding’in hangi veriyle eğitildiği sorgulanması gereken bir konu.
Aklınızda kalsın
- Embedding, kelime ya da cümleleri anlam taşıyan sayı dizilerine çevirir — anlamca yakın ifadeler bu uzayda birbirine yakın noktalara düşer; word2vec bunu ilk kez pratik ve ölçeklenebilir hale getirdi.
- Word2vec’in sabit, tek vektör sınırını bağlamsal embedding aştı — transformer tabanlı modeller (BERT gibi) aynı kelimeye cümledeki bağlama göre farklı vektörler üretir; Sentence-BERT ise cümleleri hızlı karşılaştırılabilir hale getirdi.
- Kosinüs benzerliği yönü ölçer, büyüklüğü değil — arama, RAG ve öneri sistemlerinin altında hep bu hesap var; ama embedding, eğitildiği verideki önyargıyı da taşır.
Kaynaklar
- Mikolov, T., Chen, K., Corrado, G. & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv. Word2vec’i tanıtan; kelime vektörlerinde vektör aritmetiğiyle anlamsal ilişkileri gösteren orijinal makale. arxiv.org/abs/1301.3781
- Devlin, J., Chang, M.-W., Lee, K. & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv. Kelime temsillerini sabit vektörden bağlama duyarlı, çift yönlü temsile taşıyan model. arxiv.org/abs/1810.04805
- Reimers, N. & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. EMNLP 2019 / arXiv. Cümleleri hızlı ve karşılaştırılabilir vektörlere çeviren, kosinüs benzerliğiyle kullanılabilecek yöntem. arxiv.org/abs/1908.10084
- Bolukbasi, T., Chang, K.-W., Zou, J., Saligrama, V. & Kalai, A. (2016). Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings. arXiv. Kelime embedding’lerindeki cinsiyet önyargısını ölçen ve bir yön olarak kodlandığını gösteren çalışma. arxiv.org/abs/1607.06520
Teoriyi anladın — şimdi uygula
Bu sitedeki her şey ücretsiz. Yapay zekâyı işinde gerçekten çalıştırmak istiyorsan — reklam, içerik, otomasyon — beAgents AI tam bunun için var.
beAgents AI'ı keşfet ↗