Word2vec

Word2vec היא שיטה לשיכון מילים (Word embeddings) המבוססת על זוג מודלים מבוססי רשתות נוירונים המאומנות לשחזר הקשרים לשוניים של מילים. Word2vec לוקח כקלט קורפוס גדול של טקסט ומייצר מרחב וקטורי, בדרך כלל של כמה מאות ממדים, כאשר לכל מילה ייחודית בקורפוס מוקצה וקטור במרחב. וקטורי המילים ממוקמים במרחב הווקטורי כך שמילים החולקות הקשרים משותפים בקורפוס ממוקמות קרוב זו לזו במרחב.

Word2vec נוצר ופורסם בשנת 2013 על ידי צוות חוקרים שהובל על ידי תומאש מיקולוב מגוגל ונכתב עליו פטנט. לאחר מכן נותח והוסבר האלגוריתם גם על ידי חוקרים אחרים. לשיכוני מילים (embedding vectors) שנוצרו באמצעות אלגוריתם Word2vec יש יתרונות רבים בהשוואה לאלגוריתמים קודמים כמו ניתוח סמנטי סמוי (latent semantic analysis ).

== CBOW ו-skip-grams ==
Word2vec יכולה להשתמש באחת מבין שתי ארכיטקטורות של מודלים כדי לייצר ייצוג מבוזר של מילים: bag of words רציף (continuous bag-of-words , CBOW) או skip gram רציף . בארכיטקטורת CBOW, המודל חוזה את המילה הנוכחית מתוך "חלון" של מילות-הקשר הנמצאות מסביבה. סדר המילים בהקשר אינו משפיע על החיזוי (הנחת bag-of-words). בארכיטקטורת skip-gram הרציפה, המודל משתמש במילה הנוכחית כדי לחזות את החלון שמסביבה של מילות הקשר. ארכיטקטורת skip-gram ממשקלת בחיזוי מילות הקשר קרובות כיותר משמעותיות מאשר מילות הקשר רחוקות יותר. על פי הערת המחברים, CBOW מהיר יותר בעוד ש-skip-gram עושה עבודה טובה יותר למילים נדירות.

== פרמטריזציה ==
תוצאות של אימון word2vec יכולות להיות רגישות לפי קביעת הפרמטרים. להלן כמה פרמטרים חשובים באימוני word2vec.

=== אלגוריתם האימון ===
ניתן לאמן מודל Word2vec בעזרת softmax היררכי או דגימה שלילית. כדי להתקרב לסבירות הלוגריתמית המותנית (conditional log-likelihood) שהמודל מבקש למקסם, שיטת הסופטמקס ההיררכית משתמשת בקוד האפמן כדי לצמצם את החישוב. לעומת זאת, שיטת הדגימה השלילית מתקרבת לבעיית המקסום על ידי צמצום פונקציית הנראות של מקרים שליליים שנדגמו. לטענת המחברים, softmax היררכי עובד טוב יותר למילים נדירות בעוד שדגימה שלילית עובדת טוב יותר למילים תכופות ויותר טובה עם וקטורים בממדים נמוכים. ככל שמתארך משך האימון, הסופטמקס ההיררכי מפסיק להיות שימושי.

=== דגימת משנה ===
מילים בתדירות גבוהה מספקות לעיתים קרובות אינפורמציה מועטה בלבד. ייתכן שמילים עם תדירות גבוהה מסף מסוים, יידגמו באופן חלקי בלבד כדי לקצר את משך האימון.

=== ממדיות ===
איכות שיכוני המילים עולה עם ממדיות גבוהה יותר. אך לאחר שתגיע לנקודה מסוימת, הרווח השולי יקטן. בדרך כלל, ממדי הווקטורים מוגדרים כ־100 ל -1,000.

=== חלון ההקשר ===
גודל חלון ההקשר קובע כמה מילים לפני ואחרי מילה נתונה ייכללו כמילות הקשר של המילה הנתונה. על פי הערת המחברים, הערך המומלץ הוא 10 עבור skip-gram ו-5 עבור CBOW.

== הרחבות ==
הוצעה הרחבה של word2vec לבניית שיכוני ממסמכים שלמים (ולא ממילים בודדות). הרחבה זו נקראת paragraph2vec או doc2vec ויושמה בכלי C, Python ו- Java / Scala (ראה להלן), כאשר גרסאות ה- Java וה- Python תומכות גם בהקשר לשיכון של מסמך על מסמכים חדשים שטרם נראו.

== וקטורי מילים לביואינפורמטיקה: BioVectors ==
אסגארי ומופרד הציעו להרחיב את וקטורי המילים עבור n-gram גם עבור רצפים ביולוגיים (למשל DNA, RNA וחלבונים ) ליישומי ביואינפורמטיקה . הם כינו את הווקטורים הללו ביו-וקטורים (BioVec) כאשר הם מתייחסים לרצפים ביולוגיים באופן כללי. וקטורים של חלבונים כונו ProtVec (רצפי חומצות אמינו) ווקטורי גנים כונו GeneVec, ניתן להשתמש בייצוג זה באופן נרחב ביישומים של למידת מכונה בפרוטאומיקה וגנומיקה. מהתוצאות עולה כי ביו-וקטורים יכולים לאפיין רצפים ביולוגיים מבחינת פרשנויות ביוכימיות וביו-פיזיות של התבניות הבסיסיות. גרסה דומה, dna2vec, הראתה כי יש קשר בין ציון הדמיון של Needleman -Wunsch לבין הדמיון הקוסיני של וקטורי המילים dna2vec.

== מימושים ==
* [https://github.com/tmikolov/word2vec C]
* [https://github.com/eabdullin/Word2Vec.Net #C]
* [https://github.com/tensorflow/tensorflow/blob/r1.1/tensorflow/examples/tutorials/word2vec/word2vec_basic.py פייתון (TensorFlow)]
* [http://radimrehurek.com/gensim/models/word2vec.html פייתון (Gensim)]
* [https://github.com/deeplearning4j/deeplearning4j Java / Scala]

==הערות שוליים==

==ביאורים==

קטגוריה:למידת מכונה
קטגוריה:בלשנות חישובית