TLDR: Word2Vec изгражда проекции на думи (вграждания) в латентно пространство от N измерения (N е размерът на получените вектори на думата) . Стойностите на float представляват координатите на думите в това N-мерно пространство.
Основната идея зад проекциите на латентното пространство, поставяйки обекти в различно и непрекъснато пространствено пространство, е, че вашите обекти ще имат представяне (вектор), което има по-интересни математически характеристики от основните обекти.
За думи това, което е полезно, е, че имате плътно векторно пространство, което кодира подобие (т.е. дървото има вектор, който е по-подобен на дърво, отколкото на танц). Това се противопоставя на класическото разредено кодиране с една гореща дума или „торба с думи“, което третира всяка дума като едно измерение, което ги прави ортогонални по дизайн (т.е. дърво, дърво и танци всички имат еднакво разстояние помежду си)
Алгоритмите на Word2Vec правят това:
Представете си, че имате изречение:
Кучето трябва да отиде ___ на разходка в парка.
Очевидно искате да попълните празното място с думата „отвън“, но бихте могли да използвате и „отвън“. Алгоритмите w2v са вдъхновени от тази идея. Бихте искали всички думи, които попълват празните места, да са близо, защото те са еднакви – Това се нарича Хипотеза за разпределение – Следователно думите „навън“ и „навън“ ще бъдат по-близо една до друга, докато дума като "морков" ще бъде по-далеч.
Това е нещо като "интуицията" зад word2vec. За по-теоретично обяснение на случващото се бих предложил да прочетете:
За векторите на параграфи идеята е същата като в w2v. Всеки параграф може да бъде представен със своите думи. В статията са представени два модела.
- По начин „Чорба с думи“ (моделът pv-dbow), при който един вектор на абзац с фиксирана дължина се използва за предвиждане на неговите думи.
- Чрез добавяне на абзац с фиксирана дължина в контекст на думата (моделът pv-dm). Чрез ретроразмножаване на градиента те получават "усещане" за това, което липсва, доближавайки абзац с едни и същи думи/липсваща тема.
Откъси от статията:
Векторът на абзаца и векторите на думата се усредняват или свързват, за да се предвиди следващата дума в контекста. [...] Токенът на абзаца може да се разглежда като друга дума. Той действа като памет, която запомня какво липсва в текущия контекст – или темата на параграфа
За да разберете напълно как се изграждат тези вектори, ще трябва да научите как се изграждат невронните мрежи и как работи алгоритъмът за обратно разпространение. (предлагам да започнете с този видеоклип и курса на Coursera на Andrew NG)
NB: Softmax е просто фантастичен начин да се каже класификация, всяка дума в w2v алгоритмите се счита за клас. Йерархично softmax/отрицателно вземане на проби са трикове за ускоряване на softmax и обработка на много класове.
person
Cedias
schedule
02.12.2014