word2vec: negatif örnekleme (meslekten olmayan kişiler için)?


Yanıtlar:


166

Buradaki fikir word2vec, metinde birbirine yakın (birbirleri bağlamında) görünen kelimeler için vektörler arasındaki benzerliği (iç çarpım) maksimize etmek ve olmayan kelimelerin benzerliğini en aza indirmektir. Bağlandığınız kağıdın denkleminde (3) üssü bir an için göz ardı edin. Var

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)

Pay, temelde kelimeler c(bağlam) ve w(hedef) kelime arasındaki benzerliktir . Payda, diğer tüm bağlamların c1ve hedef kelimenin benzerliğini hesaplar w. Bu oranın maksimize edilmesi, metinde birbirine daha yakın görünen kelimelerin, olmayan kelimelere göre daha benzer vektörlere sahip olmasını sağlar. Ancak, bunu hesaplamak çok yavaş olabilir çünkü birçok bağlam vardır c1. Negatif örnekleme, bu sorunu ele almanın yollarından biridir - sadece c1rastgele birkaç bağlam seçin . Sonuç olduğu takdirde catbağlamında görünür food, daha sonra vektör foodvektörü daha benzerdir catvektörleri daha (bunların nokta ürünün önlemler gibi) birçok rasgele seçilmiş kelimeler(örneğin democracy, greed, Freddy) yerine dildeki tüm diğer bir deyişle . Bu, word2veceğitmeyi çok daha hızlı hale getirir .


15
teşekkürler ya da güzel açıklama. Sanırım sadece örnekleme. ama neden "negatif" dendiğini biliyor musunuz?
HappyCoding

46
Terminoloji, sinir ağlarının yaygın bir uygulaması olan sınıflandırmadan ödünç alınmıştır. Orada bir sürü olumlu ve olumsuz örnek var. İle word2vec, verilen herhangi bir kelime için ona benzer olması gereken kelimelerin bir listesine sahip olursunuz (pozitif sınıf), ancak negatif sınıf (targer kelimesine benzemeyen kelimeler) örnekleme ile derlenir.
mbatchkarov

40

Softmax'ı hesaplamak (hangi kelimelerin mevcut hedef kelimeye benzer olduğunu belirleme işlevi) pahalıdır, çünkü genellikle çok büyük olan V'deki (payda) tüm kelimelerin toplamını gerektirir .

görüntü açıklamasını buraya girin

Ne yapılabilir?

Softmax'a yaklaşmak için farklı stratejiler önerilmiştir . Bu yaklaşımlar softmax tabanlı ve örnekleme tabanlı yaklaşımlar olarak gruplandırılabilir . Softmax tabanlı yaklaşımlar, softmax katmanını sağlam tutan, ancak verimliliğini artırmak için mimarisini değiştiren yöntemlerdir (örneğin, hiyerarşik softmax). Öte yandan, örneklemeye dayalı yaklaşımlar softmax katmanını tamamen ortadan kaldırır ve bunun yerine softmax'a yaklaşan başka bir kayıp işlevini optimize eder (Bunu, softmax'ın paydasındaki normalleşmeye benzer hesaplaması ucuz olan başka bir kayıpla yaklaştırarak yaparlar. negatif örnekleme).

Word2vec'deki kayıp işlevi şuna benzer:

görüntü açıklamasını buraya girin

Hangi logaritma şu şekilde ayrışabilir:

görüntü açıklamasını buraya girin

Bazı matematiksel ve gradyan formülleriyle ( 6'da daha fazla ayrıntıya bakın ) şuna dönüştürüldü:

görüntü açıklamasını buraya girin

Gördüğünüz gibi ikili sınıflandırma görevine dönüştürüldü (y = 1 pozitif sınıf, y = 0 negatif sınıf). İkili sınıflandırma görevimizi gerçekleştirmek için etiketlere ihtiyacımız olduğundan, tüm bağlam sözcüklerini c doğru etiketler (y = 1, pozitif örnek) ve korporadan rastgele seçilen k kelimelerini yanlış etiketler (y = 0, negatif örnek) olarak belirleriz.


Aşağıdaki paragrafa bakın. Hedef sözcüğümüzün " Word2vec " olduğunu varsayın . 3 penceresinde ile, bağlam kelimelerdir: The, widely, popular, algorithm, was, developed. Bu bağlam sözcükleri olumlu etiketler olarak kabul edilir. Ayrıca bazı negatif etiketlere de ihtiyacımız var. Biz rastgele Dosya topluluğunun bazı kelimeler seçmek ( produce, software, Collobert, margin-based, probabilistic) ve negatif örneklerin olarak görüyoruz. Derlemeden rastgele bir örnek aldığımız bu tekniğe negatif örnekleme denir.

görüntü açıklamasını buraya girin

Referans :


1
Merhaba @amir, ilk sorum, negatif örnekleme kavramını anlamakta biraz sorun yaşıyorum ...
Andy K

1
Çok iyi açıklanmış ve kabul edilen cevaptan biraz daha teknik. Öyleyse mükemmel bir SO durumu: fikri almak için kabul edilen yanıtı okuyun ve ardından onu ayrıntılı olarak anlamak için bu yanıtı okuyun.
Ursin Brunner

22

Burada negatif örnekleme hakkında bir eğitim makalesi yazdım .

Neden negatif örnekleme kullanıyoruz? -> hesaplama maliyetini düşürmek için

Vanilya Skip-Gram (SG) ve Skip-Gram negatif örnekleme (SGNS) için maliyet fonksiyonu aşağıdaki gibi görünür:

görüntü açıklamasını buraya girin

Unutmayın ki Ttüm sözcüklerin sayısı. Eşdeğerdir V. Diğer bir deyişle, T= V.

SG'deki olasılık dağılımı p(w_t+j|w_t), Vbütünlükteki tüm sözcükler için şu şekilde hesaplanır :

görüntü açıklamasını buraya girin

VSkip-Gram modelini eğitirken onlarca bini kolayca aşabilir. Olasılığın Vzaman olarak hesaplanması gerekir , bu da onu hesaplama açısından pahalı hale getirir. Ayrıca, paydadaki normalleştirme faktörü fazladan Vhesaplamalar gerektirir .

Öte yandan, SGNS'deki olasılık dağılımı şu şekilde hesaplanır:

görüntü açıklamasını buraya girin

c_pospozitif kelime için bir kelime vektörüdür ve çıktı ağırlık matrisindeki W_negtüm Knegatif örnekler için kelime vektörleridir . SGNS ile, olasılığın yalnızca K + 1zaman hesaplanması gerekir , burada Ktipik olarak 5 ~ 20 arasındadır. Ayrıca, paydadaki normalleştirme faktörünü hesaplamak için fazladan yinelemelere gerek yoktur.

SGNS ile, her eğitim numunesi için ağırlıkların sadece bir kısmı güncellenirken, SG her eğitim numunesi için milyonlarca ağırlığı günceller.

görüntü açıklamasını buraya girin

SGNS bunu nasıl başarır? -> çoklu sınıflandırma görevini ikili sınıflandırma görevine dönüştürerek.

SGNS ile kelime vektörleri artık bir merkez kelimenin bağlam kelimelerini tahmin ederek öğrenilmez. Gerçek bağlam kelimelerini (pozitif) rastgele çizilmiş kelimelerden (negatif) gürültü dağılımından ayırt etmeyi öğrenir.

görüntü açıklamasını buraya girin

Gerçek hayatta, genellikle veya regressiongibi rastgele sözcüklerle gözlemlemezsiniz . Buradaki fikir şudur: Model olası (pozitif) çiftler ile olası olmayan (negatif) çiftler arasında ayrım yapabilirse, iyi kelime vektörleri öğrenilecektir.Gangnam-Stylepimples

görüntü açıklamasını buraya girin

Yukarıdaki şekilde, mevcut pozitif kelime-bağlam çifti ( drilling, engineer) 'dir. K=5negatif numune olan rasgele çekilen gelen gürültü dağılımı : minimized, primary, concerns, led, page. Model eğitim örnekleri boyunca yinelendiğinde, ağırlıklar optimize edilir, böylece pozitif çift p(D=1|w,c_pos)≈1olasılığı çıktılanır ve negatif çiftler olasılığı çıktılanır p(D=1|w,c_neg)≈0.


1
T, simge sayısı içindir (bir metinde geçen sözcükler). Kelime için V (benzersiz kelimeler) söyleyebilirim.
Adam

KOlarak ayarlarsak V -1, negatif örnekleme vanilya gram atlama modeli ile aynıdır. Anladığım doğru mu?
Shashwat

@Shashwat, her eğitim örneği için güncellenen kelime vektörlerinin sayısı aynıdır, ancak eğitim hedefi işlevi hala temelde farklı olacaktır
Eric Kim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.