- Veri bilimciler her şeyi vektöre dönüştürür. Bu, yapay zekanın dilidir
- Ancak kosinüs benzerliğini körü körüne uygulamak sizi yanlış yöne götürebilir
- Bu yazı, benzerliği daha bilinçli kullanarak daha iyi sonuçlar elde etmenin yollarını açıklıyor.
Gömüler (Embeddings)
- Gömüler, verinin vektörleştirilmiş temsilleridir; nesneler arasındaki ilişkileri göstermek veya benzer öğeleri bulmak için çok kullanışlıdır
- Örneğin, "brother" ve "sister" ham kimlikler olarak ilişkisiz görünür, ancak vektörleştirildiklerinde anlamsal ilişkileri ifade edebilirler
- Vektörler, makine öğrenimi modellerinin giriş yapısı olarak kullanılabildiği gibi kendi başlarına benzerlik aramada da kullanılabilir
- Büyük dil modeli (LLM) tabanlı cümle gömüleri bugün en popüler gömü kullanım örneklerinden biridir
- Bu güçlü yetenekler, veri güvenliği ve bilinçli kullanım konusunda sorumluluk gerektirir
Örnek: Kosinüs benzerliğiyle cümle karşılaştırma
- Üç cümleyi karşılaştıralım
- A: "Python can make you rich."
- B: "Python can make you itch."
- C: "Mastering Python can fill your pockets."
- Karakter tabanlı karşılaştırma
- Ham dizeleri karşılaştırdığımızda A ile B arasında 2 karakter fark varken, A ile C arasında 21 karakter fark vardır
- Ancak anlam bakımından A ile C daha benzerdir (parayla ilgili içerik)
- Vektör tabanlı karşılaştırma
- OpenAI text-embedding-3-large kullanılarak şu gömü vektörleri üretilir:
- A:
[-0.003738, -0.033263, -0.017596, 0.029024, -0.015251, ...]
- B:
[-0.066795, -0.052274, -0.015973, 0.077706, 0.044226, ...]
- C:
[-0.011167, 0.017812, -0.018655, 0.006625, 0.018506, ...]
- Vektör boyutu: 3072 (uzun ama kalite kaybı olmadan küçültülebilir)
- Kosinüs benzerliği hesaplaması
- A ile C: 0.750 (anlamsal olarak benzer)
- A ile B: 0.576 (yazımsal olarak benzer)
- Sonuç: Benzerlikte anlam, yazımdan daha önemli bir etkendir
Kosinüs benzerliği nedir?
- Kosinüs benzerliği (cosine similarity), iki vektör arasındaki açının kosinüsünü hesaplayarak benzerliği ölçer
- Vektörler yüksek boyutlu uzayda bulunduğu için sezgisel geometrik anlayış çoğu zaman yetersiz kalır
- Matematiksel olarak bu, normalize edilmiş vektörlerin nokta çarpımıdır (dot product)
- Temel özellikleri:
- Aynı vektörler için 1
- Rastgele vektörler için 0'a yakın (yüksek boyutta ortalama etkisi nedeniyle)
- Sonuç değeri -1 ile 1 arasındadır
- Bu sadelik yanıltıcı olabilir
- Değer 0 ile 1 arasında diye bunun bir olasılık ya da anlamlı bir ölçek olduğu sanılmamalıdır
- Örnek: 0.6 değeri güçlü bir benzerlik anlamına gelmeyebilir
- Negatif değerler nadiren anlamsal karşıtlığı ifade eder
- Çoğu durumda anlamsız ya da gürültüye yakın sonuçlardır
- Glove(
glove.6B.300d) ile "dog" sözcüğüne benzer kelimeler arandığında:
- Yakın kelimeler genelde beklendik çıkar
- En uzak kelimeler ise çoğu zaman anlamsız sonuçlar üretir
- Kosinüs benzerliği, "duct tape" gibi basit ve hızlı biçimde çeşitli vektörleri karşılaştırmayı sağlar
- Görüntü, metin, ses, kod vb. karşılaştırılabilir
- Ancak bu yalnızca geçici bir çözümdür ve daha derin sorunları gizleyebilir
- Örnek: Tesisatı duct tape ile tamir etmek gibi; güvenilmesi zor ve kalıcı değildir
- Kosinüs benzerliği etkili göründüğünde bile, başarısız olduğunda nedenini anlamak zordur
- Çoğu zaman doğaçlama çözümler aranır ve bu da yeni sorunlar yaratabilir
Kosinüs benzerliği ile korelasyon katsayısı arasındaki ilişki
- Pearson korelasyon katsayısı üç adımda hesaplanır:
- Ortalamayı çıkararak veriyi merkezlemek
- Vektörleri birim vektöre normalize etmek
- İki vektörün nokta çarpımını (dot product) hesaplamak
- Vektörler merkezlenmiş ve normalize edilmişse:
- Pearson korelasyon katsayısı = kosinüs benzerliği = nokta çarpımı
- Pratik kullanım biçimi
- Her çift karşılaştırmada vektörler yeniden merkezlenmez veya normalize edilmez
- Bunun yerine önceden işlenir ve yalnızca nokta çarpımı hesaplanır
- Kosinüs benzerliği kullanılabiliyorsa Pearson korelasyon katsayısı da aynı şekilde kullanılabilir
- İki ölçü pratikte aynı bağlamda değerlendirilebilir
Kosinüs benzerliğini benzerlik metriği olarak kullanmanın sorunları
- Kosinüs benzerliğini makine öğrenimi modelinin eğitim hedefi olarak kullanmak matematiksel olarak geçerlidir
- Sorun, kosinüs benzerliğinin uygunluğunun ötesindeki alanlarda ortaya çıkar:
- Model eğitiminde kullanılan kayıp fonksiyonu kosinüs benzerliği değilse
- Eğitim hedefi gerçek uygulamanın gereksinimlerinden farklıysa
- Genel olarak modeller normalize edilmemiş vektörlerle eğitilir:
- Örnek: Nokta çarpımına (dot product) dayalı olasılık tahmini ve lojistik kayıp fonksiyonu kullanımı
- Bazı modeller aynı sınıftaki öğeleri yakınlaştırmak için Öklid uzaklığını en aza indirir
- Normalizasyon matematiksel özellikler sağlar (sonucu -1 ile 1 arasına sıkıştırmak), ancak bu bir "geçici çözüm"dür
- Yalnızca kosinüs benzerliğiyle ya da onun doğrudan bir fonksiyonuyla eğitilmiş modeller güvenle kullanılabilir
- Model açıkça kosinüs benzerliğiyle eğitilmiş olsa bile, benzerliğin tanımı belirsiz kalabilir:
- Edebiyat eleştirmeni: ortak tema
- Kütüphaneci: tür sınıflandırması
- Okur: duygusal tepki
- Dizgici: sayfa sayısı ve biçim
- Kosinüs benzerliği, bu farklı tanımları tek bir sayıya indirgediği için yanıltıcı olabilir
- Örnek: "espresso" ve "cappuccino"
- word2vec bu iki sözcüğü neredeyse aynı kabul eder (ABD bağlamında)
- Ancak İtalya'da aynı kabul edilmezler
Kosinüs benzerliğinin başarısız olduğu durumlar
- Basit bir örnek: anahtar bulma sorusu
- Soru: "What did I do with my keys?"
- Karşılaştırılan cümleler:
- "I left them in my pocket"
- "They are on the table"
- "What did I put my wallet?"
- "What I did to my life?"
- Sorun
- Kosinüs benzerliğiyle alınan sonuçta:
- En yakın cümle, uygun bir yanıt yerine başka bir sorudur ("What I did to my life?")
- Anlamsal ilişki yerine yalnızca cümle yapısal benzerliğine dayanır
- Python ile ilgili cümlelerin benzerliği neredeyse 0'a yakındır; yani ilgisizliği doğru yansıtır
- Gerçek dünyadaki sınırlamalar
- Gerçek uygulamalarda binlerce belgeyle uğraşılır
- Bağlam penceresini aşan büyük veri kümelerinde daha fazla gürültüye duyarlı hale gelir
- Veri kümesi büyüdükçe benzerlik puanları yüksek boyutlu bir rulet gibi çalışır
Kosinüs benzerliği yerine hangi alternatifler kullanılabilir?
En güçlü yaklaşım
- LLM sorguları kullanmak:
- İki öğeyi karşılaştırmak için güçlü bir dil modeli kullanın
- Örnek: "Is {sentence_a} a plausible answer to {sentence_b}?"
- LLM kullanıldığında anlamlı karşılaştırmalar yapılabilir:
- Basit soru ve yanıt ayrımı
- Sonuçların JSON gibi yapılandırılmış biçimlerde verilmesi
- Ancak veri kümesi büyükse verimsiz ve maliyetlidir
Gömü optimizasyonu
- Göreve özel gömüler üretmek:
- Mevcut modelin ağırlıklarını ayarlayan ince ayar (Fine-tuning)
- Model bilgisinden yararlanarak yeni ve odaklı gömüler üreten transfer öğrenme (Transfer Learning)
- Simetrik benzerlik:
- "A ile B benzer mi?" sorusunu vektör uzayında temsil etmek
- Gereksiz boyutları azaltıp yalnızca ilgili özellikleri korumak
- Asimetrik benzerlik:
- Örnek: "Belge B, soru A için doğru yanıt mı?" sorusunu olasılık olarak ifade etmek
- Sorgu ve anahtarları ayrı ayrı özelleştirilmiş uzaylara dönüştürmek
Prompt mühendisliği
- Bağlam kurmak için prompt eklemek:
- Örnek: "Nationality of {person}" ile milliyet bağlamını vurgulamak
- Basit bir prompt yerine daha somut cümleler kullanmak:
- "This is a country that has produced many influential historical figures, including {person}"
- Sonuç kalitesi ciddi biçimde iyileşebilir, ancak kusursuz değildir
Metni yeniden yazma ve bağlam çıkarımı
- Gömüden önce metni ön işlemek:
- "Aşağıdaki metni standart İngilizceyle 200 kelimeyi aşmadan özetle" gibi basit bir prompt ile yüzeysel benzerlikleri kaldırmak
- Yazım hataları, biçimlendirme gibi gereksiz unsurları görmezden gelip içeriğe odaklanmak
- Yapılandırılmış bağlam üretmek:
- Müşteri konuşmalarını özetleyip net gereksinimleri ve sorunları çıkarmak:
- "Konuşmayı özetleyin ve en fazla 10 Markdown maddesi halinde yazın"
- Sayfaları da aynı biçime dönüştürerek daha hassas eşleştirme yapmak
Sonuç
- Çeşitli alternatif yöntemler, kosinüs benzerliğinin zayıf yönlerini telafi eder ve daha güvenilir sonuçlar sunar
- Projenin durumuna göre uygun yaklaşım seçilip uygulanmalıdır
Özet
- Kosinüs benzerliğinin sınırları:
- Kosinüs benzerliği -1 ile 1 arasında bir değer üretir, ancak bu değer olasılık olarak yorumlanmamalıdır
- Modellerin çoğu kosinüs benzerliğini hedefleyerek eğitilmez; sonuçlar yalnızca garanti edilmeyen korelasyonlardır
- Model kosinüs benzerliğini öğrenmiş olsa bile, bu benzerlik tanımının bizim gereksinimlerimizle örtüşüp örtüşmediğini anlamak gerekir
- Vektör benzerliğini etkili kullanma yolları:
- Veriye özel gömüler eğitmek
- İlgili yönlere odaklanan prompt'lar tasarlamak
- Gömü oluşturmadan önce metni temizleyip standartlaştırmak
2 yorum
Gerçekten harika bir kaynak derlemesi.
Hacker News görüşü
Kosinüs benzerliği kullanan RAG uygulamalarında, sonuçları yeniden sıralamak için "semantic re-ranker" veya "L2 re-ranking model" kullanmak iyi olur
Kelime vektörleri, iki kelimenin aynı bağlamda yer almasa bile güçlü biçimde ilişkili olabilmesi sorununu çözer
ABD'de word2vec, espresso ile cappuccino'yu neredeyse aynı değerlendirebilir, ancak İtalya'da durum böyle değildir
Kosinüs benzerliği, derin öğrenme tabanlı semantik aramanın çoğunda kullanılır
İki öğeyi karşılaştırmak için doğrudan LLM sorgusu kullanmak en güçlü yaklaşım
HyDE, soruya varsayımsal bir yanıt üretip benzerliği karşılaştırma yöntemidir
Kosinüs benzerliği ve top-k RAG artık eski usul gibi hissettiriyor
RAG yaklaşımını denedikten sonra hayal kırıklığı yaşadım ve modelin eğitim sırasında RAG yapabilecek şekilde yapılandırılması gerektiğini düşünüyorum
3D grafik ve fizikte önem ile doğruluk açıkça belliyken, makine öğrenmesinde vektör uzayı çok fazla şeyi temsil ettiği için dot product kullanımının belirsiz hissettirdiği söyleniyor