Sobes.tech
Middle — Senior

Какво е negative sampling при обучението на word2vec и защо е необходим?

sobes.tech AI

Отговор от AI

Отрицателното семплиране е техника за оптимизация, използвана при обучението на модела word2vec за ефективно обучение при задачи с много голям речник. Вместо да изчислява вероятността за всички думи в речника (което е много скъпо), отрицателното семплиране избира няколко "негативни" примера (думи, които не са част от контекста на дадената дума) и обучава модела да различава реалните двойки думи (положителни примери) от случайните (негативните).

Това позволява значително ускоряване на обучението и намаляване на изчислителните разходи, като същевременно запазва качеството на получените вграждания. В крайна сметка моделът учи да увеличава вероятността на близките думи и да намалява вероятността на случайните думи.

Пример: за двойка (дума, контекст) — положителен пример — се избират няколко случайни думи от речника като негативни, и моделът се учи да ги различава.

# Псевдокод за отрицателно семплиране
for target_word, context_word in corpus:
    positive_pair = (target_word, context_word)
    negative_samples = sample_negative_words(k)  # k — брой негативни примери
    update_model(positive_pair, negative_samples)