I、Büyük model iş süreçlerinin bütünü
-
Yapay zekâ kümesi kurulumu:hesaplama, iletişim ve depolama altyapısının kurulması
-
Büyük model verileri: büyük model veri kümeleri, veri işleme, vektör veritabanları
-
Büyük model algoritmaları:Geleneksel NLP'den ön eğitimli büyük dil modellerine
-
Büyük model eğitimi:Yaygın eğitim algoritmaları ve kararlılık analizi
-
Dağıtık paralellik:model paralelliği, veri paralelliği, optimize edici paralelliği vb.
-
Büyük modellerde ince ayar:tüm parametrelerle ince ayar, az parametreyle ince ayar, talimatlarla ince ayar algoritmaları
-
Büyük model çıkarımı: nicemleme ile sıkıştırma, uzun dizileri genişleterek çıkarım, önbellekleme yöntemleri
-
Büyük model değerlendirmesi:NLP alt görevleri, CV alt görevleri, değerlendirme planı
-
Büyük model ajanları: RLHF süreci, ajanlar, yaşam boyu öğrenme
II、Vektörler
Köpekleri tanıyanlar ırklarını hızla ayırt edebilir. Bunu yapabilmemizin nedeni, onların özelliklerini farklı açılardan, örneğin vücut büyüklüklerine bakarak gözlemlememizdir.
Boyut özelliklerini bir koordinat ekseninde gösterirsek, bu köpekler farklı koordinatlara yerleşir. Ancak yalnızca vücut büyüklüğü özelliğine dayanmak yeterli değildir; bazılarının boyutları birbirine çok yakındır.
Ardından tüylerinin uzunluğu gibi özelliklerini inceler ve bir koordinat ekseni daha oluştururuz; böylece aynı boyut özelliklerine sahip köpeklerin bir kısmını birbirinden ayırmış oluruz
Ancak hâlâ kısmen örtüşenler olduğu için burun uzunluğu gibi daha fazla açıdan gözlemlemeye devam etmek gerekir.
Gözlerin büyüklüğü gibi daha fazla boyut da ekleyebiliriz. Dört boyutlu uzayda çizim yapamayız, ancak koordinat noktalarının sayısal değerleriyle bunu gerçekleştirmek oldukça kolaydır; sona eklemeye devam etmek yeterlidir.
Bir köpeğin özelliklerini daha fazla açıdan, yani boyuttan da inceleyebiliriz: bacaklarının kalınlığı, tüylerinin kıvırcıklığı, hatta itaatkârlığı ve iş görme yeteneği gibi soyut açılardan. Kullandığımız boyut sayısı arttıkça köpekleri birbirinden ayırt etme yeteneğimiz de güçlenir. Aynı zamanda koordinat noktalarının bulunduğu uzayın boyut sayısı da artar.
Yalnızca köpekler değil, aslında hemen her şey bu şekilde ifade edilebilir. Somut şeyler olabileceği gibi,
soyut sevinç, öfke, keder ve mutluluk; kavuşmalar ve ayrılıklar da olabilir. Farklı şeyler, farklı özellik boyutlarında farklı görünümler ya da başka bir deyişle farklı sayısal değerler sergiler; dolayısıyla sonuçta her biri yüksek boyutlu bir özellik uzayında bir koordinat noktasına karşılık gelir. Ancak kapsam bu kadar genişlediğinde, şeyleri iyi ayırt edebilmek için daha fazla özellik boyutuna ihtiyaç duyabiliriz. Bu sayı yüzlerce, binlerce, hatta on binin üzerinde olabilir.
Ancak üç boyuttan fazlasını çizemediğimiz için açıklamayı iki boyutlu koordinatlarla yapacağız。
Kavramsal olarak birbirine daha yakın noktaların uzayda daha çok kümelendiğini, kavramsal olarak çok farklı noktaların ise birbirinden çok uzakta olduğunu görürüz. Bir adım daha ilerlersek, koordinat başlangıcını başlangıç noktası, bu koordinat noktalarını da bitiş noktası olarak alabiliriz. İşte bunlar yönü ve büyüklüğü olan vektörlerdir.
Görüntüler vektörlere dönüştürülürse, benzer vektörler aranarak görselle arama işlevi gerçekleştirilebilir
Videolar vektörlere dönüştürülürse, benzer vektörler aranarak benzer videoların önerilmesi sağlanabilir
Ürünler vektörlere dönüştürülürse, benzer vektörler aranarak kullanıcının o anda görüntülediği ürünle ilgili öneriler sunulabilir
Metni vektörleştirirsek, akıllı bir soru cevap sisteminde kullanıcının mevcut sorusuna göre, daha önce çözülmüş benzer soruları başvuru amacıyla bulabiliriz
III. Vektör veritabanı
AI'ın gelişiyle birlikte vektörler önemli bir veri biçimi hâline gelecek. Geleneksel veritabanları vektör verilerini depolamak ve aramak için uygun olmadığından, bu sorunları ele almak üzere özel tasarlanmış bir veritabanına ihtiyaç var; bu, gelecekte veri katmanının temel altyapısı hâline gelebilir. Veri tablolarını depolayan ve ardından sorgu ifadeleriyle kesin aramalar yapan geleneksel veritabanlarından farklı olarak vektör veritabanları vektör verilerini depolar. Sorgulama süreci ise veritabanından sorgu vektörüne en çok benzeyen bazı vektörleri bulmaktır ve belirli ölçüde yaklaşık niteliktedir.

1、Vektör sorgusu
Vektör verilerinin başlıca kullanım alanlarından biri şudur:Bir sorgu vektörü verildiğinde, çok sayıda vektör arasından ona en çok benzeyen birkaç vektörü bulmak. Buna en yakın komşu problemi denir; bunu gerçekleştiren algoritmalara da en yakın komşu algoritmaları adı verilir. Akla ilk gelen yöntemlerden biri kaba kuvvet araması olabilir: tüm vektörlerin sorgu vektörüne benzerliğini sırayla karşılaştırıp en yüksek benzerliğe sahip birkaçını seçmek. İki vektörün benzerliğini karşılaştırmanın ise birçok farklı yöntemi vardır,Öklid uzaklığı ve kosinüs benzerliği.
-
Öklid uzaklığı, iki vektör arasındaki düz çizgi mesafesinin hesaplanmasıdır. İki boyutlu bir koordinat sisteminde p ve q adlı iki vektör olduğunu varsayarsak, Öklid uzaklığı p ile q'yu birleştiren düz çizginin uzunluğudur. Üç boyutlu bir koordinat sisteminde her vektör x, y ve z olmak üzere üç koordinat içerir; herhangi iki nokta arasındaki uzaklık formülle hesaplanır. n boyutlu bir koordinat sisteminde ise 100 koordinat noktası vardır ve herhangi iki nokta arasındaki uzaklık formülle hesaplanır. Uzaklık ne kadar kısaysa, bu iki vektörün belirli boyutlardaki benzerliği o kadar yüksektir

-
Bir başka yöntem de kosinüs benzerliğidir。Uzaklığın yanı sıra,vektörler arasındaki ilişkiyi aralarındaki açıyla da tanımlayabiliriz。İki boyutlu bir koordinat sisteminde,açı ne kadar küçükse,iki vektör arasındaki ilişki o kadar güçlüdür。Herhangi iki vektör arasındaki kosinüs benzerliğini bir formülle hesaplayabiliriz。Üç boyutlu bir koordinat sisteminde de,aynı ilkeyle herhangi iki vektör arasındaki açıyı ve kosinüs benzerliğini hesaplayabiliriz。

Vektör verisi çok fazla olduğunda ise hiçbir teknik incelik içermeyen bu kaba kuvvet yöntemi, arama süresinin son derece uzamasına yol açar. Ancak her bir vektörü gerçekten karşılaştırdığı için arama kalitesi kusursuzdur. Dolayısıyla veritabanındaki veri miktarı azsa ve tüm vektörleri taramak için gereken süre kabul edilebiliyorsa, bu da iyi bir yöntem sayılabilir. Ne var ki gerçek uygulamalardaki veri miktarı genellikle pek küçük olmaz; bu nedenle optimizasyon için bazı yöntemler bulunması gerekir。
2、Vektör indeksi
Yukarıda vektör veritabanlarının arama prensibini anlattık, ancak gerçekte vektör veritabanlarında benzerlik eşleştirmesi yapılırken hesaplamalar bütünüyle formüle göre yürütülemez; çünkü vektör veritabanlarında veri miktarı genellikle çok büyüktür ve boyut sayısı da yüksektir. İki 1000 boyutlu vektör arasındaki benzerliği formülle hesaplamak oldukça fazla işlem gerektirir ve CPU üzerinde yoğun bir hesaplama yükü oluşturur. Yüz milyon vektör varsa ve her biri için bu hesaplamayı yapmak gerekiyorsa hem süre hem de hesaplama maliyeti daha da artar. Bu nedenle burada vektör indeksi adı verilen bir kavramı devreye sokuyoruz.
Vektör indeksi, ilişkisel veritabanlarındaki indekslere benzer, ancak bir fark vardır. Vektör veritabanlarında vektör indeksiyle bulunan sonuçlar yaklaşık sonuçlardır; 100% doğruluğa sahip sonuçlar değildir.Vektör indeksi, benzerlik derecesinin yüksekliğini ve düşüklüğünü tanımlar. Bu nedenle buna yaklaşık en yakın komşu araması (ANS) diyoruz. Vektör indeksi yoksa, bir vektörün benzerliğini aramak ilişkisel veritabanındaki tam tablo taramasına benzer. Ancak tam tablo taramasına ek bir hesaplama katmanı gerektiğinden, maliyeti ilişkisel veritabanındaki tam tablo taramasından çok daha yüksektir.
Uygulama yöntemine göre ANNS vektör indeksleri dört ana kategoriye ayrılabilir:
-
Ağaç tabanlı indeks
-
Graf tabanlı indeks
-
Hash tabanlı indeks
-
Nicemlemeye dayalı indeks
1、Ağaç tabanlı yöntemler
Ağaç tabanlı yöntemlerin temel fikri, verileri ikili arama ağacına benzer biçimde bölmektir. Böylece arama sırasında taranacak alan küçülür ve hızlı erişim sağlanır. Ancak bu yöntem yüksek boyutlu uzaylar için uygun değildir. Başlıca ağaç tabanlı yöntemler KDTree (K-Dimensional Tree) ve Annoy’dur (Approximate
Nearest Neighbors Oh Yeah).
1.1
KDTree
KDTree'nin oluşturulması da özyinelemeli bölme fikrine dayanır. Önce varyansı en yüksek boyut seçilir ve bu boyuttaki tüm verilerin medyanı bölme noktası olarak kullanılarak hiper dikdörtgen bölge iki alt bölgeye ayrılır. Medyandan küçük olanlar sola, medyandan küçük olanlar sağa ayrılır; tüm veriler bölünene kadar sol ve sağ alt ağaçlar özyinelemeli olarak oluşturulur.
KDTree tabanlı arama süreci:
1、p verisini sorgulayın; mevcut düğümün bölme boyutu d olsun. p verisinin d boyutundaki koordinat değerini düğüm değeriyle karşılaştırın; büyükse sol alt düğüme, küçükse sağ alt düğüme ilerleyin;
2、Bir yaprak düğüme ulaşıncaya kadar dolaşın, ziyaret edildi olarak işaretleyin ve yaprak düğüme olan mesafeyi en yakın mesafe olarak hesaplayın;
3、Yaprak düğümde geri izleme yapın; her geri izleme adımında p ile üst düğümde henüz ziyaret edilmemiş dal arasındaki mesafeyi değerlendirin.
a)Bu dal düğümünün p'ye uzaklığı mevcut en kısa uzaklıktan büyükse, kök düğüme ulaşana kadar yukarı doğru geri izlemeye devam edilir;
b)Bu dal düğümünün p'ye uzaklığı mevcut en yakın uzaklıktan küçükse bu dalı kullanın, yaprak düğüme ulaşana kadar 1 ve 2 adımlarını izleyin ve yaprak ile Q arasındaki en yakın uzaklığı güncelleyin.
1.2Annoy
Annoy, uzayı bölmek için hiper düzlemler kullanır. Hiper düzlemi belirlemek üzere KMeans(k=2) yardımıyla iki küme merkezi bulunur; bu merkezleri birleştiren doğruya dik düzlem, bölme hiper düzlemidir. Her alt uzaydaki veri sayısı belirtilen eşiğin altına düşene kadar işlem yinelenir.


Bu uzaydaki herhangi bir noktayı aramak için ikili ağaç kökten başlanarak gezilebilir. Her ara düğüm (yukarıdaki ağaçta görülen küçük kareler) bir hiperdüzlem tanımlar; dolayısıyla hiperdüzleme göre bir sonraki adımda sol alt düğüme mi yoksa sağ alt düğüme mi gidileceği belirlenebilir. Bir noktanın aranması, ağacın yüksekliğine karşılık gelen logaritmik zamanda tamamlanabilir.
Avantajı:Düşük boyutlu verilerde doğruluk daha yüksektir Dezavantajı:Verilerin karmaşıklığını tam olarak yakalayamaz, yüksek boyutlu verilerde doğruluk daha düşüktür
2、Graf tabanlı yöntemler
Graf tabanlı yöntemler esas olarak graf veri yapısını kullanır; komşu düğümler arasındaki bağlantılardan yararlanarak hızlı geçiş yolları oluşturur ve problemi graf üzerinde gezinmeye dönüştürür. Böylece arama alanı hızla daraltılır ve arama hızlanır. Ancak graf veri yapısı oldukça karmaşıktır. En yüksek arama hızına ulaşmak için genellikle grafın tamamı belleğe yüklenir ve bu da çok yüksek bellek tüketimine yol açar; buna karşılık arama hızlıdır ve geri çağırma oranı yüksektir.
Günümüzde yaygın kullanılan graf arama algoritması başlıca HNSW'dir(Hierarchical Navigating Small World),NSW(Navigating Small World)ise onun öncül algoritmasıdır,onu da tanımak gerekir。
2.1 NSW
NSW, basit graf oluşturma yöntemine şu kuralları ekler: tüm düğümlerin komşu düğümleri olmalıdır; komşu düğümler arasında bağlantı bulunmalıdır; komşu sayısı kullanıcı tarafından belirlenen bir hiperparametredir. Esas olarak basit graf oluşturma yönteminin bazı sınırlamalarını gidermek için kullanılır.
NSW grafiğinin oluşturulma süreci:
Yeni bir düğüm eklenirken önce yeni düğüme en yakın m düğüm bulunur, ardından yeni düğüm bu m düğüme bağlanır.
NSW arama süreci:
q verisini sorgulamak için graftan rastgele bir giriş
noktası düğümü ve komşu düğümleri seçin, giriş noktası ile komşu düğümlerin p'ye uzaklığını hesaplayın; p'ye uzaklığı, p ile giriş
noktası arasındaki uzaklıktan küçük olan bir komşu varsa en kısa uzaklıktaki noktayı belirleyin; sonunda tüm komşularının sorguya uzaklığı bu noktanın uzaklığından büyük olan bir nokta bulunana kadar devam edin.
Yukarıdaki şekilde gösterildiği gibi, oluşturulmuş yakın komşu grafiğinde yeşil query düğümüne en yakın düğümleri aramak için, rastgele seçilen giriş
noktalarından başlanır, önce kırmızı uzun bağlantılar üzerinden hızla query yakınındaki düğümlere ulaşılır, ardından siyah kısa bağlantılar üzerinden koşulu sağlayan noktalar bulunur。
NSW de yaklaşık bir hesaplama yöntemidir; gerçek en yakın komşuyu bulmayı garanti edemez. Önce eklenen noktaların fazladan kenarları daha çoktur ve bunların otoyollar oluşturma olasılığı daha yüksektir. Noktalar ne kadar geç eklenirse otoyollara sahip olma olasılıkları o kadar düşer.
2.1 HNSW
HNSW, NSW'yi temel alan geliştirilmiş bir yöntemdir. Esas olarak atlamalı liste fikrinden yararlanır ve katmanlar kullanılarak gerçekleştirilir. Her katman bir NSW'dir; dolayısıyla katmanlı NSW yöntemi olarak da adlandırılabilir. Üst katmanlara çıkıldıkça düğümler seyrekleşir ve düğümler arasındaki mesafe artar; alt katmanlara inildikçe düğüm ve bağlantı sayısı artar, ortalama mesafe kısalır。
Avantajı:yüksek boyutlu verilerde benzer yakın komşuları bulabilir ve böylece arama performansını artırır,dezavantajı:grafiğin oluşturulma yöntemi karmaşıktır ve bellek verimliliğini etkiler。
3、Hash tabanlı yöntem
Hash tabanlı yöntemler esas olarak hash fonksiyonlarının özelliklerinden yararlanır: Benzerliği yüksek verilerin hash değerleri de benzerdir. Hash fonksiyonları yüksek boyutlu verileri düşük boyutlu verilere dönüştürerek oluşturma verimliliğini büyük ölçüde artırabilir. Ancak hash fonksiyonlarının başka bir sınırlaması da vardır: Hash değerleri benzer olan veriler mutlaka benzer değildir; bu da yöntemin geri çağırma oranının pek yüksek olmamasına yol açar. Hash tabanlı yöntemlerin başlıcası LSH'dir(Locality-Sensitive
Hashing, yerelliğe duyarlı hashleme). İki vektörün benzer olduğunu varsayarsak hash değerleri de benzerdir. Hash fonksiyonları kullanılarak benzer vektörler aynı kovaya eşlenir. Sorgulama sırasında önce sorgu vektörüne en çok benzeyen kova bulunur, ardından kova içindeki veriler sorgulanarak en benzer topk sonuç hesaplanır.
LSH (konuma duyarlı hash) de uzayın bölünmesine dayalı bir yöntemdir. Uygulaması şöyledir: Aşağıdaki görseldeki gibi rastgele bir doğru oluşturulur; bu doğru pozitif ve negatif tarafları ayırır. Bir vektör doğrunun pozitif tarafındaysa 1, negatif tarafındaysa 0 olur. Ardından rastgele başka bir doğru oluşturulur; yine pozitif taraf 1, negatif taraf 0 olur. Bu şekilde birden fazla doğru oluşturarak,
her vektör için 4 adet 0 veya 1 hesaplarız ve her biri için 4 bitlik bir ikili kod elde ederiz. Şimdi bu 4 ikili kodun benzerlik düzeyine bakalım.





Avantajı:büyük veriye ölçeklendiğinde çok hızlıdır,dezavantajı:doğruluğu orta düzeydedir
5、Nicemleme (Quantized) tabanlı indeks
5.1、Kümeleme
Sorgu vektörü için yaklaşık bir arama alanı belirleyip aramayı bu alanda yapabilirsek arama hızını büyük ölçüde artırabiliriz. Önce istediğimiz sınıf sayısını seçeriz; örneğin aşağıdaki görselde 4 sınıf vardır. Rastgele 4 merkez noktası oluşturur, ardından her vektörü en yakın olduğu merkez noktasına atarız. Sonra aynı sınıfa atanmış vektörlerin ortalama vektör noktasını hesaplayıp merkez noktasının konumunu bu ortalama noktaya taşırız; ardından her vektör noktasının hangi merkeze en yakın olduğunu yeniden belirleyerek sınıflandırmayı tekrarlarız. Bu tekrar sürecine eğitim denir; sonunda merkez noktaları kararlı hâle gelir, başka bir deyişle yakınsar. Arama sırasında sorgu vektörüne en yakın küme merkezini bulup yalnızca bu kümeye ait vektörlerde arama yapmak yeterlidir. Böylece arama alanını daraltma amacına ulaşılır
5.2、Nicemleme(Quantization)
Ancak çok büyük miktardaki vektör verilerinde, arama hızının yanı sıra bellek kullanımı da büyük bir zorluktur. Gerçek uygulamalarda binlerce boyutlu vektörler ve yüz milyonlarca vektör verisi hiç de sıra dışı değildir; dolayısıyla bellek kullanımı çok yüksek olabilir.
Yukarıdaki kümelemeden merkez noktasını öğrendik; aslında buna ağırlık merkezi denir. Kümedeki noktaları ağırlık merkeziyle temsil edebilir miyiz?Muhtemelen edebiliriz; aslında bu yöntem tipik bir Kayıplı sıkıştırma ,görselle örneklersek aşağıdaki gibidir:

Bu işlem vektör değerlerinin bir kısmını kaybettirse de küme merkezinin ait olduğu sınıftaki vektörlerle olan ilişkisi sayesinde özgün bilginin bir bölümünü büyük ölçüde korur. Bu kayıplı sıkıştırmanın bazı ayrıntıları yitirmesine karşılık sağladığı faydalar oldukça büyüktür. Veriler aşağıdaki görseldeki gibi depolanabilir; böylece belirli bir vektör kullanılırken kod değeriyle kod kitabındaki ilgili merkez bulunur, ardından merkeze karşılık gelen somut değerler geri elde edilir. Vektörü merkezinin koduyla ifade etmeye vektör nicemleme (Quantization) denir
5.3、Çarpım niceleme PQ(Product Quantization)
Vektör nicemlemesinden sonra ise fazladan bir kod kitabı ortaya çıkar. Vektörlerin kendi bellek yükü elbette azalır, ancak bu kod kitabı yeni ve oldukça büyük bir bellek yükü oluşturur. Düşük boyutlarda bu pek belirgin değildir; fakat gerçek senaryolardaki yüzlerce, binlerce vektör boyutunda kod kitabı korkutucu ölçüde büyür. Sayı sabitken nicemleme kalitesini korumak için dağılımı daha seyrek olan vektörler daha fazla küme vektörü gerektirir.




Gerçek uygulamalardaki yüzlerce, hatta binlerce boyutlu vektörlerde veriler çok seyrek olur. Bu nedenle yüksek boyutlu uzaylarda nicemleme kalitesini korumak için çok sayıda kümeye ihtiyaç duyabiliriz. Tipik bir durum aşağıdaki şekilde gösterilmiştir: 128 boyutlu bir vektör için 2 üzeri 64 adet küme merkezi gerekebilir. Bu da merkez kodlarını kaydetmek için kullanılan kod kitabını son derece büyük hâle getirir. Bu kod kitabını saklamak için tüketilen bellek, nicemlemenin kendisiyle sağlanan bellek tasarrufunu çoktan aşar
Bu sorunu çözmenin yolu, önce yüksek boyutlu vektörü birkaç düşük boyutlu alt vektöre bölmek, ardından bu düşük boyutlu alt vektörlerde bağımsız olarak nicemleme yapmaktır. Örneğin, 128 boyutlu bir vektör 8 adet 16 bitlik alt vektöre bölünür, ardından 8 adet 16 boyutlu alt vektörün her birinde bağımsız kümeleme eğitimi yapılır.
Böylece her vektör, 8 alt uzayın eğitim sonuçlarıyla kendisine karşılık gelen 8 alt vektörü nicemleyebilir. Her alt vektörün boyutu 16 olduğundan çok yüksek değildir; bu nedenle 16 boyutlu her alt uzayda yalnızca 256 küme kullanılarak oldukça iyi bir nicemleme sonucu elde edilebilir. Dolayısıyla her alt vektörün kod değeri 0-255 aralığındadır. 8 alt vektörün nicemleme kodları birleştirildiğinde, özgün vektörün nihai nicemleme kodu elde edilir. Yani artık bir vektör 8 kod değerine nicemlenmiştir. Aynı şekilde her alt uzay kendi alt kod kitabını da oluşturur. Kullanım sırasında 8 kod değeriyle alt kod kitaplarından 8 adet 16 boyutlu alt vektör bulunur ve bunlar birleştirilerek 128 boyutlu bir vektör yeniden oluşturulur


