33 puan yazan GN⁺ 2025-01-16 | 2 yorum | WhatsApp'ta paylaş
  • 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

 
mhj5730 2025-01-20

Gerçekten harika bir kaynak derlemesi.

 
GN⁺ 2025-01-16
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

    • pgvector-python örneğinde yeniden sıralama için cross-encoder modeli kullanılıyor
    • Yeniden sıralama için bir dil modeli de kullanılabilir, ancak yeniden sıralamaya özelleşmiş modellere göre performansı daha düşük olabilir
    • Azure RAG yaklaşımında, Bing'in arama sonuçlarını yeniden sıralamak için kullandığı AI Search semantic ranker kullanılıyor
  • Kelime vektörleri, iki kelimenin aynı bağlamda yer almasa bile güçlü biçimde ilişkili olabilmesi sorununu çözer

    • "Python" ve "Ruby" aynı bağlamda görünmeyebilir, ancak "scripting" her ikisinin bağlamında da bulunabilir
    • Ancak boyut laneti nedeniyle bunun sık sık iyi çalışmadığı durumlar vardır
    • Kelime gömmelerini vektörler yerine düğümler olarak ifade etmenin mümkün olup olmayacağına dair bir fikir öne sürülüyor
  • ABD'de word2vec, espresso ile cappuccino'yu neredeyse aynı değerlendirebilir, ancak İtalya'da durum böyle değildir

    • İki öğeyi karşılaştırmak için doğrudan LLM sorgusu kullanmak en iyi yaklaşım
    • LLM, "Cüzdanımı nereye koydum?" ile "Anahtarlarımı nereye koydum?" ifadelerini çok benzer görebilir
  • Kosinüs benzerliği, derin öğrenme tabanlı semantik aramanın çoğunda kullanılır

    • SentenceTransformers gibi modeller, kosinüs benzerliği kullanacak şekilde eğitilir
    • CLIP gibi modeller de görüntülerin vektör gösterimleri için kosinüs benzerliğini kullanır
  • İki öğeyi karşılaştırmak için doğrudan LLM sorgusu kullanmak en güçlü yaklaşım

    • Cross encoder, yüksek performanslı ve hızlı bir çözümdür
  • HyDE, soruya varsayımsal bir yanıt üretip benzerliği karşılaştırma yöntemidir

    • Chunk biçimini standartlaştırıp aynı biçimde varsayımsal yanıt üretmek daha iyi bir yöntemdir
  • Kosinüs benzerliği ve top-k RAG artık eski usul gibi hissettiriyor

    • Kosinüs benzerliği, verinin tesadüfi bir özelliğinden ibaret
    • Yeni embedding modelleri, benzerlik ölçümü olarak kosinüs benzerliği kullanacak şekilde eğitiliyor
  • 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

    • Modelin embedding, biçim ve arama sürecini tanımlamasına izin vererek eğitim verisi modellemesi iyileştirilebilir
  • 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