Garfield
YZF Admin
Embedding katmanı, kategorik veya ayrık girdileri sinir ağının işleyebileceği yoğun sayısal vektörlere dönüştüren öğrenilebilir katmandır. Örneğin bir metindeki her kelime önce bir tam sayı kimliğine çevrilir; embedding katmanı bu kimlikleri 128 veya 768 boyutlu vektörlerle eşleştirir. Eğitim sırasında benzer bağlamlarda kullanılan girdilerin vektörleri birbirine yaklaşabilir. Böylece model, yalnızca “kelime 17” bilgisini değil, girdiler arasındaki öğrenilmiş ilişkileri de kullanabilir.
Bir embedding katmanının temelinde satırlardan oluşan bir ağırlık matrisi bulunur. Söz dağarcığında 10.000 farklı kelime ve vektör boyutu 128 ise matrisin boyutu 10.000 × 128 olur. Her satır bir kelimenin temsilidir. Girdi kimliği 17 olan kelime, sıfırdan başlayan satır indeksi 17 olan vektörü, yani matrisin 18. satırını seçer; katman normal bir sayısal hesap yapmaktan çok, ilgili vektörü tablodan getirir.
İlk başta bu vektörler genellikle rastgele değerler içerir. Model bir görev üzerinde eğitilirken hata geri yayılımı, tahmin hatasını azaltacak şekilde ilgili satırları günceller. Bu nedenle embedding değerleri çoğunlukla elle atanmış anlamlar değil, modelin eğitim verisinden öğrendiği temsillerdir.
Varsayımsal olarak aşağıdaki üç kelimeyi sayısal kimliklerle temsil edelim:
Girdi olarak
Bu örnekte “kedi” ve “köpek” vektörlerinin birbirine yakın görünmesi, modelin gerçekten bu iki kavramı her durumda eş anlamlı öğrendiğini kanıtlamaz. Yakınlık, kullanılan veri kümesine, eğitim görevine ve vektörlerin nasıl ölçüldüğüne bağlıdır.
Bir kategoriyi yalnızca tam sayı ile kodlamak, sayılar arasında anlamlı bir sıralama varmış izlenimi oluşturabilir. Örneğin “kedi” için 0, “köpek” için 1 ve “uçak” için 2 kullanıldığında model, 2’nin 1’den veya 1’in 0’dan belirli bir miktar uzak olduğunu varsayabilir. Bu uzaklıklar gerçek anlamı temsil etmez.
Embedding ise her kategori için birden fazla öğrenilebilir değer kullanır. Model, görevine yardımcı olan ilişkileri bu boyutlarda ifade edebilir. Bununla birlikte embedding, verinin kendi başına anlamını garanti etmez; model yalnızca eğitim sırasında kendisine sunulan örüntüleri öğrenir.
Embedding ile tek-sıcak kodlama arasındaki temel fark şöyledir:
Bu nedenle az sayıda kategori için tek-sıcak kodlama yeterli olabilir. Kategori veya kelime sayısı büyüdüğünde embedding, daha kompakt ve görevle birlikte öğrenilebilen bir temsil sunar.
Embedding katmanı en sık kelime, alt kelime, karakter, kullanıcı, ürün, şehir veya başka kategorik kimliklerde kullanılır. Bir öneri sisteminde kullanıcı ve ürün kimlikleri ayrı embedding katmanlarından geçirilip vektörleri karşılaştırılabilir. Bir dil modelinde ise kelime ya da belirteç kimlikleri embedding vektörlerine dönüştürülerek sonraki katmanlara verilir.
Söz dağarcığı boyutu
Embedding katmanı tek başına arama, bilgi getirme veya metin anlama sistemi değildir. Bir metni vektöre dönüştürmek, o metnin doğru yorumlandığını ya da iki metnin anlam bakımından kesin olarak eşdeğer olduğunu kanıtlamaz. Ayrıca eğitim verisindeki önyargılar ve eksikler embedding vektörlerine taşınabilir.
Bir embedding’i benzerlik araması için kullanacaksanız vektörleri üretmek yetmez; uygun bir benzerlik ölçüsü, veri saklama yöntemi, eşik değeri ve değerlendirme kümesi de belirlemeniz gerekir. Model eğitimi için kullanılan embedding katmanı ile hazır bir modelden metin vektörü çıkarma işlemi benzer fikre dayanır, ancak aynı kullanım amacı ve aynı mimari olmak zorunda değildir.
Embedding katmanı nasıl çalışır?
Bir embedding katmanının temelinde satırlardan oluşan bir ağırlık matrisi bulunur. Söz dağarcığında 10.000 farklı kelime ve vektör boyutu 128 ise matrisin boyutu 10.000 × 128 olur. Her satır bir kelimenin temsilidir. Girdi kimliği 17 olan kelime, sıfırdan başlayan satır indeksi 17 olan vektörü, yani matrisin 18. satırını seçer; katman normal bir sayısal hesap yapmaktan çok, ilgili vektörü tablodan getirir.
İlk başta bu vektörler genellikle rastgele değerler içerir. Model bir görev üzerinde eğitilirken hata geri yayılımı, tahmin hatasını azaltacak şekilde ilgili satırları günceller. Bu nedenle embedding değerleri çoğunlukla elle atanmış anlamlar değil, modelin eğitim verisinden öğrendiği temsillerdir.
Basit bir örnek
Varsayımsal olarak aşağıdaki üç kelimeyi sayısal kimliklerle temsil edelim:
- “kedi” → 0
- “köpek” → 1
- “çalışır” → 2
| Kimlik | Girdi | Örnek vektör |
|---|---|---|
| 0 | kedi | [0.21, -0.08, 0.44, 0.17] |
| 1 | köpek | [0.19, -0.05, 0.41, 0.22] |
| 2 | çalışır | [-0.31, 0.62, -0.14, 0.09] |
[0, 2] verilirse katman sırasıyla “kedi” ve “çalışır” satırlarını çıkarır. Çıktı, iki adet dört boyutlu vektör olur: [[0.21, -0.08, 0.44, 0.17], [-0.31, 0.62, -0.14, 0.09]]. Bu çıktı sonraki katmana, örneğin bir sıralı model, evrişim katmanı veya sınıflandırma katmanına aktarılır.Bu örnekte “kedi” ve “köpek” vektörlerinin birbirine yakın görünmesi, modelin gerçekten bu iki kavramı her durumda eş anlamlı öğrendiğini kanıtlamaz. Yakınlık, kullanılan veri kümesine, eğitim görevine ve vektörlerin nasıl ölçüldüğüne bağlıdır.
Embedding neden doğrudan sayısal kimlikten daha kullanışlıdır?
Bir kategoriyi yalnızca tam sayı ile kodlamak, sayılar arasında anlamlı bir sıralama varmış izlenimi oluşturabilir. Örneğin “kedi” için 0, “köpek” için 1 ve “uçak” için 2 kullanıldığında model, 2’nin 1’den veya 1’in 0’dan belirli bir miktar uzak olduğunu varsayabilir. Bu uzaklıklar gerçek anlamı temsil etmez.
Embedding ise her kategori için birden fazla öğrenilebilir değer kullanır. Model, görevine yardımcı olan ilişkileri bu boyutlarda ifade edebilir. Bununla birlikte embedding, verinin kendi başına anlamını garanti etmez; model yalnızca eğitim sırasında kendisine sunulan örüntüleri öğrenir.
Embedding ile tek-sıcak kodlama arasındaki temel fark şöyledir:
| Özellik | Tek-sıcak kodlama | Embedding |
|---|---|---|
| Temsil | Bir konum 1, diğerleri 0 | Yoğun, öğrenilebilir vektör |
| Boyut | Kategori sayısı kadar | Önceden seçilen embedding boyutu |
| Benzerlik ilişkisi | Doğrudan temsil edilmez | Eğitimle öğrenilebilir |
| Parametre öğrenme | Kodlama sabittir | Vektör değerleri güncellenir |
Embedding katmanı hangi girdilerde kullanılır?
Embedding katmanı en sık kelime, alt kelime, karakter, kullanıcı, ürün, şehir veya başka kategorik kimliklerde kullanılır. Bir öneri sisteminde kullanıcı ve ürün kimlikleri ayrı embedding katmanlarından geçirilip vektörleri karşılaştırılabilir. Bir dil modelinde ise kelime ya da belirteç kimlikleri embedding vektörlerine dönüştürülerek sonraki katmanlara verilir.
Söz dağarcığı boyutu
N ise standart tablo aramasında girdi kimlikleri 0 ile N − 1 arasındaki tam sayılardır; N geçerli bir satır indeksi değildir. Bilinmeyen bir kelime veya kategori için eğitim sırasında ayrılmış bir bilinmeyen-tokene ihtiyaç duyulur. Yeni bir kategorinin sözlüğe eklenmesi, kullanılan uygulamaya göre embedding matrisinin veya veri hazırlama sürecinin yeniden düzenlenmesini gerektirebilir.Embedding katmanı neyi sağlamaz?
Embedding katmanı tek başına arama, bilgi getirme veya metin anlama sistemi değildir. Bir metni vektöre dönüştürmek, o metnin doğru yorumlandığını ya da iki metnin anlam bakımından kesin olarak eşdeğer olduğunu kanıtlamaz. Ayrıca eğitim verisindeki önyargılar ve eksikler embedding vektörlerine taşınabilir.
Bir embedding’i benzerlik araması için kullanacaksanız vektörleri üretmek yetmez; uygun bir benzerlik ölçüsü, veri saklama yöntemi, eşik değeri ve değerlendirme kümesi de belirlemeniz gerekir. Model eğitimi için kullanılan embedding katmanı ile hazır bir modelden metin vektörü çıkarma işlemi benzer fikre dayanır, ancak aynı kullanım amacı ve aynı mimari olmak zorunda değildir.