T-SNE

t-distributed Stochastic Neighbor Embedding) t-SNE) הוא אלגוריתם בלמידה חישובית להורדת ממדים, שפותח על ידי לורנס ואן דר מאטן וג'פרי הינטון.

זוהי שיטה לא-ליניארית להורדת ממדים שמתאימה במיוחד להורדת מימד של מרחבים ממימד גבוה למרחבים מממד 2 או 3 (מפות). האלגוריתם ממדל כל אובייקט מהמרחב הרב-ממדי בעזרת נקודה דו־ממדית או תלת־ממדית כך שאובייקטים דומים ימודלו לנקודות קרובות זו לזו, ואובייקטים רחוקים ימודלו לנקודות רחוקות זו מזו.

אלגוריתם ה-t-SNE כולל שני שלבים עיקריים. בהתחלה האלגוריתם בונה התפלגות עבור כל זוג אובייקטים ממימד גבוה כך שלאובייקטים דומים יש הסתברות גבוהה להיבחר, בעוד שלאובייקטים לא דומים יש הסתברות נמוכה מאוד (אינפיניטסימלית) להיבחר. שנית, האלגוריתם מגדיר התפלגות באופן דומה עבור כל זוג נקודות במפה ממימד נמוך. לאחר מכן האלגוריתם מנסה להביא למינימום את דיברגנץ קולבק-ליבלר (Kullback–Leibler divergence) בין שתי ההתפלגויות, ביחס למיקומים של הנקודות על המפה. האלגוריתם המקורי משתמש במרחק אוקלידי כדי למצוא מרחק בין שני אובייקטים, אך ניתן להשתמש במטריקות אחרות לחישוב המרחק.

אלגוריתם t-SNE שימושי במגוון רחב של תחומים, כגון אבטחת מחשב אישי ברשת, ניתוח מוזיקלי, חקר הסרטן וביואינפורמטיקה.

==פרטי האלגוריתם==

בהינתן סט של <math>N</math> אובייקטים ממימד גבוה, <math>\mathbf{x}_1, \dots, \mathbf{x}_N</math>, האלגוריתם מחשב קודם את ההסתברויות <math>p_{ij}</math> שהן פרופורציוניות 
לדמיון בין האובייקטים <math>\mathbf{x}_i</math> ו <math>\mathbf{x}_j</math>, באופן הבא:

<math>p_{j|i} = \frac{\exp(-\lVert\mathbf{x}_i - \mathbf{x}_j\rVert^2 / 2\sigma_i^2)}{\sum_{k \neq i} \exp(-\lVert\mathbf{x}_i - \mathbf{x}_k\rVert^2 / 2\sigma_i^2)},</math>

<math>p_{ij} = \frac{p_{j|i} + p_{i|j}}{2N}</math>

כאשר <math>\sigma_i</math> נקבע כך שה-perplexity (מידת השוואה להתפלגויות) של ההתפלגויות שהוגדרו (Q,P) יהיה שווה ל-perplexity מסוים שנקבע מראש על ידי חיפוש בינארי.

מטרת ה-t-SNE היא ללמוד מפה <math>d</math>-ממדית <math>\mathbf{y}_1, \dots, \mathbf{y}_N</math> (עם <math>\mathbf{y}_i \in \mathbb{R}^d</math>), שמשקפת את <math>p_{ij}</math>
בצורה כמה שיותר טובה.
בשביל מטרה זו היא מודדת את <math>q_{ij}</math>, הדמיון בין 2 נקודות במפה,<math>\mathbf{y}_i</math> ו <math>\mathbf{y}_j</math>, בצורה דומה לחישוב <math>p_{ij}</math>:

<math>q_{ij} = \frac{(1 + \lVert \mathbf{y}_i - \mathbf{y}_j\rVert^2)^{-1}}{\sum_{k \neq l} (1 + \lVert \mathbf{y}_k - \mathbf{y}_l\rVert^2)^{-1}}</math>

האלגוריתם משתמש בהתפלגות t כדי למדוד דמיון בין נקודות על המפה.

מיקום הנקודות <math>\mathbf{y}_i</math> במפה נקבעות על ידי מינימיזציה של דיברגנץ קולבק-ליבלר של ההתפלגות Q מההתפלגות P, כלומר הבאה למינימום של:
<math>KL(P||Q) = \sum_{i \neq j} p_{ij} \, \log \frac{p_{ij}}{q_{ij}}</math>

המינימיזציה של Kullback–Leibler divergence ביחס לנקודות <math>\mathbf{y}_i</math> מתבצע באמצעות אופטימיזציית gradient descent.

התוצאה של האופטימיזציה היא מפה שמשקפת בצורה טובה את הדמיון בין קלטי המרחב הרב ממדי.

==שימושים==
# הדמיית נתונים ממדיים גבוהים: T-SNE היא טכניקה פופולרית להצגה של נתונים עם יותר משלושה ממדים על ידי הפחתת הממדיות של הנתונים עד לשני ממדים או תלת־ממדיים, אותם ניתן לשרטט על גרף דו-ממדי או תלת-ממדי. זה יכול להיות שימושי לחקירת מבנה הנתונים ולמציאת דפוסים או אשכולות בתוכם.
# למידת פיצ'רים: T-SNE יכול לשמש גם כטכניקת למידת פיצ'רים, כאשר המטרה היא ללמוד סט של פיצ'רים שניתן להשתמש בהן כדי לייצג את הנתונים במרחב בעל מימד נמוך יותר. לאחר מכן ניתן להשתמש בפיצ'רים אלו כקלט למודל למידת מכונה, מה שעלול להוביל לשיפור ביצועי המודל.
# סיווג תמונה: ניתן להשתמש ב-T-SNE גם במשימות סיווג תמונות, כאשר המטרה היא להקצות תוויות לתמונות על סמך התוכן שלהן. על ידי הדמיית היחסים בין התמונות, ייתכן שניתן יהיה לזהות דפוסים או אשכולות התואמים לקטגוריות או אובייקטים שונים. זה יכול להיות שימושי לשיפור הביצועים של מודלים של למידת מכונה שהוכשרו לסיווג תמונות.
# ניתוח טקסט: נעשה שימוש ב-T-SNE בתחום עיבוד השפה הטבעית כדי להציג את היחסים בין מילים או מסמכים שונים. לדוגמה, ניתן להשתמש ב-T-SNE כדי להמחיש מרחב הטמעת מילים במימד גבוה, שבו מילים דומות ממוקמות קרוב יותר זו לזו במרחב המופחת.
# ניתוח גנים: T-SNE שימש גם בתחום הביואינפורמטיקה כדי להמחיש נתוני גנים. על ידי הפחתת הממדיות של הנתונים, T-SNE יכול לעזור לחוקרים לזהות דפוסים או אשכולות בתוך הנתונים ולהבין טוב יותר את הקשרים בין גנים שונים.

==קישורים חיצוניים==

* 

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