какво представлява векторът на дума в word2vec?

word2vec е инструмент с отворен код от Google:

  • За всяка дума предоставя вектор от плаващи стойности, какво точно представляват те?

  • Има и документ за вектор на параграф може ли някой да обясни как използва word2vec в ред за получаване на вектор с фиксирана дължина за абзац.


person user168983    schedule 20.11.2014    source източник
comment
Добрият отговор на вашия въпрос изисква обяснение на невронните мрежи и е извън обхвата на SO формата на въпроси и отговори.   -  person Chthonic Project    schedule 21.11.2014
comment
Намирам въпроса за много полезен и уместен за разпределени представяния на изречения и документ, както в статията, цитирана от питащия   -  person user305883    schedule 20.01.2017


Отговори (2)


TLDR: Word2Vec изгражда проекции на думи (вграждания) в латентно пространство от N измерения (N е размерът на получените вектори на думата) . Стойностите на float представляват координатите на думите в това N-мерно пространство.

Основната идея зад проекциите на латентното пространство, поставяйки обекти в различно и непрекъснато пространствено пространство, е, че вашите обекти ще имат представяне (вектор), което има по-интересни математически характеристики от основните обекти.

За думи това, което е полезно, е, че имате плътно векторно пространство, което кодира подобие (т.е. дървото има вектор, който е по-подобен на дърво, отколкото на танц). Това се противопоставя на класическото разредено кодиране с една гореща дума или „торба с думи“, което третира всяка дума като едно измерение, което ги прави ортогонални по дизайн (т.е. дърво, дърво и танци всички имат еднакво разстояние помежду си)

Алгоритмите на Word2Vec правят това:

Представете си, че имате изречение:

Кучето трябва да отиде ___ на разходка в парка.

Очевидно искате да попълните празното място с думата „отвън“, но бихте могли да използвате и „отвън“. Алгоритмите w2v са вдъхновени от тази идея. Бихте искали всички думи, които попълват празните места, да са близо, защото те са еднакви – Това се нарича Хипотеза за разпределение – Следователно думите „навън“ и „навън“ ще бъдат по-близо една до друга, докато дума като "морков" ще бъде по-далеч.

Това е нещо като "интуицията" зад word2vec. За по-теоретично обяснение на случващото се бих предложил да прочетете:

За векторите на параграфи идеята е същата като в w2v. Всеки параграф може да бъде представен със своите думи. В статията са представени два модела.

  1. По начин „Чорба с думи“ (моделът pv-dbow), при който един вектор на абзац с фиксирана дължина се използва за предвиждане на неговите думи.
  2. Чрез добавяне на абзац с фиксирана дължина в контекст на думата (моделът pv-dm). Чрез ретроразмножаване на градиента те получават "усещане" за това, което липсва, доближавайки абзац с едни и същи думи/липсваща тема.

Откъси от статията:

Векторът на абзаца и векторите на думата се усредняват или свързват, за да се предвиди следващата дума в контекста. [...] Токенът на абзаца може да се разглежда като друга дума. Той действа като памет, която запомня какво липсва в текущия контекст – или темата на параграфа

За да разберете напълно как се изграждат тези вектори, ще трябва да научите как се изграждат невронните мрежи и как работи алгоритъмът за обратно разпространение. (предлагам да започнете с този видеоклип и курса на Coursera на Andrew NG)

NB: Softmax е просто фантастичен начин да се каже класификация, всяка дума в w2v алгоритмите се счита за клас. Йерархично softmax/отрицателно вземане на проби са трикове за ускоряване на softmax и обработка на много класове.

person Cedias    schedule 02.12.2014

Контекстите с фиксирана ширина за всяка дума се използват като входни данни в невронна мрежа. Резултатът от мрежата е вектор от плаващи стойности - известен още като вграждане на думи - с дадено измерение (обикновено 50 или 100). Мрежата е обучена така, че да осигури добро вграждане на думи, като се има предвид обучаващият/тестовият корпус.

Човек може лесно да измисли въвеждане с фиксиран размер за всяка дума - кажете M думи отляво и N думи отдясно на нея. Как да направите това за изречение или абзац, чиито размери варират, не е толкова очевидно или поне не беше в началото. Без първо да чета статията, предполагам, че човек може да комбинира вграждането с фиксирана ширина на всички думи в изречението/абзаца, за да излезе с векторно вграждане с фиксирана дължина за изречение/абзац.

person Edi Bice    schedule 01.12.2014