שימוש בבינה מלאכותית להמלצות על סרטים

artifical intelligence

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

חיפוש קלאסי

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

אז גוגל מוצא ועוד מעט נדבר על הסיבה לכך שהצליח להתבלט מעל האחרים.
כי גוגל לא היה הראשון שחיפש, מצא והמליץ. קדמו לו יהאו ואקסייט ואלטה ויסטה הי"ד (או מנוחתם עדן, תלוי כמה השקעתם במניותיהם).
החיפוש הקלאסי התאפיין באיתור מילות מפתח. השיטה היתה פשוטה וישירה, לפחות ברמת הלוגיקה שלה: המחפשים/ות מייצרים שאילתה (query), שהיא החיפוש והמנוע יוצא לחפש עמודי תוכן שכוללים בתוכם את המספר הגבוה ביותר של אותן מילות מפתח. עמוד תוכן שכלל בתוכו את המספר הגבוה ביותר, התחרה עם עמודים אחרים בעלי אותו מספר מילות מפתח. ההכרעה על אילו מהם להמליץ למחפש/ת, היתה ועודנה תלויה במוניטין של אתר האינטרנט בו נמצא העמוד. גוגל הביאו את ענין ה'מוניטין' לכדי מלאכת מחשבת, אבל זה נושא לרשומה אחרת. 

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

"הי, עצור את הסוסים," אתם אומרים לו בחומרה. איך נדחוף את המילים האלה לטקסט?"
"נורא פשוט!" קורא מקדם האתרים של פעם ומתחיל לשכתב:

"לפני 70 שנה עלתה נפרדה סבתי מהוריה בפלונסק ועלתה על ספינת מעפילים שהיתה דומה למחדד. חלומה היה להקים חנות למכשירי כתיבה ברחוב הרצל. הספינה כמעט נטרפה בים, שהיה סוער כמו עט נובע, אבל היא התגברה על כל הקשיים, שיחדה בנמל את הקצין התורכי בשני מחקים וקלסר ספירלה (ועוד כמה בישליקים) והצליחה להשיג סרטיפיקט לארץ ישראל."

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

חתירה להבנת הכוונה של המחפשת

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

בלשנים עוסקים רבות בשאלה של הבנת ההבנה דרך הדיסציפלינות השונות של המקצוע. בתחביר (סינטקס) למשל, מניחים שמשפט הוא יחידת המידע הבסיסית של השפה. לכן תחביר עוסק בהבנת המבנה הלוגי של משפטים, לא של מילים. למשפטים יש לא רק מבנה שהופך אותם לאפשריים (Plausible) באזני דובר ילידי (Native Speaker), אלא גם ביחסים בין מרכיביהם.
במקביל, דיסציפלינות אחרות בבלשנות (ובפסיכולוגיה ובחקר המוח) מתענינות בשאלת ההבנה: מתי נוצרת הבנה של כוונת הדובר/ת (שימו לב, שוב "כוונה")? האם היא מצריכה שמיעה של כל המשפט? ואם כן, מתי היא מתרחשת? תוך כדי הגייתו, בהדרגה, או בבת אחת, בסופו, מתוך חיבור פתאומי של כל חלקיו תוך הסתכלות לאחור על מרכיבי המשפט?
ואיזה תפקיד יש להקשר בו נאמר המשפט (בסלון, באוטובוס, בשדה הקרב, במקום העבודה)? ולאינטונציה? ולידע תרבותי? ולגיל הדוברים? וליחסים ביניהם (אהבה, מרות, שנאה, זרות)? ולרמה בה כל אחד מבין את השפה? וליכולת השמיעה של כל דובר/ת? ולרעשי רקע? ולנוכחות אנשים אחרים?

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

Hummingbird

באופן מפתיע, היכולת לשלב הבנת כוונה נכנסה לגוגל בשלב די מאוחר, ב - 2013 ליתר דיוק. קוראים לזה Hummingbird (יונק דבש) וזהו ניסיון של מנוע החיפוש להבין למה אנחנו מתכוונים כשאנחנו כותבים שאילתה במנוע חיפוש. מאחר שלחיפוש בגוגל יש גם מרכיב רגשי גדול, גוגל עושה מאמצי על להבין את גישתנו לנושא. רגשות כמו עוינות, הערצה, פחד, אימה, תשוקה, סקרנות פשוטה, חובה -- כל אלה משפיעים על התוצאה אותה נבקש לקבל. תחום זה מכונה Sentiment Analysis. הוא נפוץ מאוד בניחוש טעם של מנועי המלצות מוסיקה וסרטים, שם ההמלצה היא תלויית רגש והעדפות בלתי רציונליות באופן מובהק (גם באתרי דייטינג, אם כי יש רבים החולקים על כך וטוענים שהתאמת בני זוג היא מדע לשמו).
סטיב מאסטרס הגדיר באופן פילוסופי (וככל הנראה מדויק) את Hummingbird של גוגל כאשר קבע כי יוצרי התוכן שרוצים להתאים את עצמם לאלגוריתם זה, צריכים לחשוב למה מישהו מחפש מה שהוא מחפש ולא רק מה הוא מחפש. הם צריכים לחשוב על איך הם עונים על צרכיה של המחפשת ולא רק לספק לה עובדות.

מכונה לומדת

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

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

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

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

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

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

בינה מלאכותית

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

מנוע ההמלצות Movie Discovery

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

ההבדל בינינו לבין גוגל
* המנוע שלנו לא יעלה בתוצאות ההמלצה שום דבר שאינו סרט.
* גם כשנפנה לסרטים, נכניס רק את אלה שנמצאים במסדי נתונים מסוימים, למשל אלו של סרטי מובי דיסקברי או סרטים במאגרי סרטים אחרים ומוכרים, סרטים שניתנים לרכישה באופן ברור וידוע מראש, כדי למנוע תסכול של השגת סרט.
* המנוע שלנו אינו כולל מרכיב של ניתוח רגש (Sentiment Analysis). כאשר אתם מחפשים סרט להרצאה, אנונו מניחים שאתם מחפשים רציונליים. את מחרוזת החיפוש 'סרט כיפי לערב קיץ' תשאירו לזמן הפנוי שלכם (ולמנוע אחר), לא להרצאה.
* גוגל מחפש בדרך כלל את מרכיב השאלה בחיפוש. אנחנו לעומת זאת מבקשים מכם להכניס תקציר של מאמר. תקציר של מאמר כולל מצד אחד בטקסט קצר את כל הנושאים החשובים, מה שמעלה את הסיכוי לתוצאת חיפוש טובה ומצד שני, הוא אינו כולל בתוכו מרכיב של שאלה. הוא אדיש (גם אם יש מאחוריו אג'נדה). כך אנחנו גם מתייחסים אליו, מה שמעלה את הסיכוי לתוצאת המלצה טובה יותר.

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

פרפראות

כתבתי כאן שאנחנו לא מנתחים רגשות ודעות של המחפש/ת, מתוך הנחה שהמשתמשים שלנו מחפשים התאמה על בסיס רציונלי.
הנושא של ניתוח רגשות - Sentiment Analysis, נסקר כאן ברשומה למעלה. הלכתי ובדקתי עד היכן מגיעה טכנולוגיית ניחוש הרגשות בתחום מופלא זה.
נכנסתי למנוע ניתוח הרגשות של גוגל (יש כזה דבר). 
רשמתי שם את הטקסט הכי חד משמעי שיכולתי למצוא: "--- היא אהבתי האמיתית היחידה." שיהיה ברור, לא רשמתי --- אלא שם. רק מה - פרטיות...
הייתם מצפים שבתרחיש קל כזה, גוגל ינתח תוך שתי שניות שהרגש העולה מהמשפט הזה הוא חיובי.
התוצאה פרדוקסלית למדי:

sentiment analysis

נסו את המנוע כאן