קורס "מבוא לבינה מלאכותית", 24876 מוזיקה סינטטית מרצה: פרופ' ג'ף רוזנשיין / מתרגל: מר יועד לוינברג אור ש. עומר ד. "It's easy to make sounds, and to put sounds together into something that appears to be music, but it's just as hard as it always was to make good music" Bob Moog the inventor of the Moog synthesizer.
מבוא לפרויקט בפרויקט זה רצינו לקשר בין עולם המוזיקה לעולם המחשבים, והלכה למעשה לאפשר סינתזה של תוכן מוזיקלי חדש באופן אוטומטי. מכאן עלה הרעיון ליצור מנגינה נעימה לאוזן על ידי תוכנת מחשב. גישה לאחר שקילת גישות שונות, החלטנו לבסס את הפרוייקט על אלגוריתם גנטי. הרעיון היה ליצור "עולם" של מנגינות, כך שבכל דור אנחנו משביחים אותן על ידי בחירת המנגינות הטובות ביותר ויצירה של מנגינות חדשות מסינתזה שלהן. כאן נשאלת השאלה למה דווקא אלגוריתם גנטי? נקודת ההנחה הראשונית שלנו לביצוע הפרויקט הייתה שאם ניקח שתי מנגינות נעימות ונשלב אותן לרוב נקבל מנגינה חדשה נעימה גם כן. מכאן עולה הבחירה באלגוריתם גנטי, שבו תהליך השבחת הדורות בהתבסס על הפריטים המוצלחים בדור הקודם הוא המנגנון העיקרי עליו השיטה עובדת. אין ספק שמדי פעם שילוב של שתי מנגינות נעימות יכול להביא לתוצאה לא נעימה, אבל השימוש באלגוריתם גנטי שיוצר את המנגינות החדשות בהתבסס על המנגינות שדורגו גבוה בדור הקודם הביא אותנו להנחה שמנגינות לא נעימות לא ישרדו לדורות הבאים. עוד סיבה טובה לבחור באלגוריתם גנטי היא האפשרות לתת לקהל לעצב את המוסיקה)ובעצם להחליט אילו מהמנגינות ישרדו לדור הבא(, בעזרת fitness function )פונקציית התאמה( שמתבססת על חוות דעת אנושיות. הסיבה העיקרית שלא בחרנו בגישות אחרות היא ההנחה הבסיסית ששילוב קטעי מוסיקה נעימים ייצור מוסיקה חדשה נעימה. אף אלגוריתם אחר לא מתבסס על שילובים כאלו פרט לאלגוריתם גנטי.
אלגוריתם גנטי אלגוריתם גנטי הוא אלגוריתם חיפוש לוקאלי, שמסתמך על הברירה הטבעית ושיבוח הפרטים בכל דור על מנת ליצור את הדורות הבאים. המטרה בשימוש באלגוריתם גנטי היא ליצור פתרון הולך ומשתפר לבעיה על ידי הלחם ושיפור פתרונות קודמים. בכל דור ודור, כל אחד מפריטי האוכלוסייה מכיל "גנום" אישי, והתהליך הגנטי משלב שני פרטים )הורים( ויוצר מהם פרטים חדשים )ילדים( שנושאים תכונות )או גנים( שהיו קיימות אצל הפריטים ההתחלתיים. ברמה יותר פורמלית, האלגוריתם משתמש למעשה בשלוש מתודות שונות: מתודת ההתאמה fitness מתאימה ציון לכל אחד מהפרטים באוכלוסייה, שבא להעיד על התאמתו הכוללת כפתרון לבעיה שהאלגוריתם מנסה לפתור. מתודת ההלחם merge מקבלת שני פרטים באוכלוסייה, ומייצרת מהם ילד חדש, שנושא גנים שונים משני ההורים. מתודת המוטציה mutate מוסיפה מוטציה לפריטים באוכלוסייה. הכוונה בהוספת מוטציה היא עיוות של אחד הגנים המצויים בפרט המדובר. בתהליך יצירת דור חדש, האלגוריתם הגנטי בוחר את הפרטים שקיבלו את הציונים הטובים ביותר מפונקציית ההתאמה, ויוצר מתוכם, בעזרת פונקציית ההלחם, ילדים חדשים עבור הדור החדש. כל אחד מהילדים החדשים יכול לעבור דרך מתודת המוטציה בהסתברות נמוכה על מנת שנוכל להחשף מדי פעם לגנים חדשים שיכולים להיות מוצלחים. כל דור חדש מחליף את הדור הישן, וכך לאט לאט אנחנו משביחים את האוכלוסייה לקבלת פתרונות טובים יותר ויותר לבעיה המקורית.
גורמים עיקריים בתכנון המנגנון מתוך מטרה שהתוצאה הסופית תוכל להיות כמה שיותר נעימה לאוזן אנושית ההתאמה שנתנו לאיכות המנגינות שונות מאותו הדור. מכאן, התמקדנו במיקסום שני גורמים עיקריים: )"fitness function"( מדד בוסס על דירוג אנושי של מנגינות בתכנון ובניית הממשק והאלגוריתם הגנטי בהם השתמשנו הגורם הראשון להגיע לכמות תגובות אנושיות מקסימלית. ככל שאנחנו דוגמים יותר תגובות אנושיות, ההתאמה לאוזן האנושית יותר טובה, וכך התהליך האבולוציוני של האלגוריתם יותר טוב ומשפר את התוצאה. הגורם השני הגעה לשיפור גדול ככל האפשר באיכות המנגינות בכל שלב בהינתן כמות המשתמשים ומספר הדורות המוגבלים כך שהמנגינות שנוצרות מהדור האחרון תהיינה טובות ככל האפשר ביחס למנגינות מהדור הראשון. כדי להתמודד עם הגורמים הללו קיבלנו מספר החלטות בנוגע לעיצוב הפרויקט: יצירת ממשק משתמש אינטרנטי שיהיה כמה שיותר נוח, ידידותי ופשוט. כך, ננסה להגדיל את כמות התגובות. שימוש במנגינות קצרות )באורך של כ- 5 שניות(, כך שכל תגובה לא תארוך הרבה זמן, ומשתמשים יסכימו להשתתף בפרויקט, ואפילו מספר רב של פעמים. השימוש במנגינות קצרות אף עזר לנו בכך ש"מרחב האפשרויות" למנגינות שונות הוא מוגבל ומאפשר התכנסות למנגינה טובה מהר יותר מאשר עבור מנגינות ארוכות. בחרנו להגביל את תוכן המנגינות למספר קטן של צלילים 7 התווים על-פי ה- Notation ABC המקובל )אך ללא שימוש בדיאז, הבדלי אורך צליל וכו'(. על מנת לקבל כמות גדולה של תגובות אנושיות, נעזרנו בחיילי "תוכנית תלפיות" בה אנו חניכים, מהם ביקשנו להגיב על המנגינות השונות )ואכן קיבלנו עשרות רבות של משתתפים שהתנדבו, ובך הכל דירגו יותר מ- 099 מנגינות(.
השיטה }. כל מנגינה מלאה בבניית המנגינות ייצגנו כל תו באמצעות אות מתוך } של המנגינה )לדוגמה: תווים שיוצרת את מחרוזת ה"גנום" 09 כללה רצף של.) בכל דור מוסיקלי, היו לנו 25 מנגינות שנוצרו מהלחם של הדור הקודם, כאשר המנגינות ההתחלתיות היו אקראיות לחלוטין. נתנו למאזינים לדרג חמש מנגינות שנבחרו אקראית בכל שלב, כאשר הם התבקשו לעשות זאת 0 פעמים בכל דור ובכל סיבוב קיבלנו צלילים שונים. על-מנת לאפשר דירוג פשוט, יצרנו ממשק אינטרנטי זמין אליו ניתן לגשת מכל מחשב בכתובת.http://goo.gl/GXvAH4 האתר מאפשר השמעת 5 מנגינות שנבחרות רנדומלית )באמצעות מנגנון באדיבות הבלוג Better" )"This Could Be ממנגינות הדור הנוכחי ודירוגן, שלאחריו נבחרות 5 מנגינות אחרות. הדירוג הוא למעשה סידור מספרי של המנגינות לפי כמה הן היו נעימות לאוזן עבור המאזין. 5 המנגינות קיבלו ציון מספרי } { כך שהמנגינה האהודה ביותר קיבלה את הציון 4, הכי פחות אהודה 9, וכן הלאה. ממשק המשתמש
כך, לכל מנגינה יכולנו לסכום את הציון הכולל שקיבלה מהמאזינים, לחלק בכמות הפעמים שדורגה, ולקבל מדד אפקטיבי לאהדה לכל מנגינה. בחרנו לבנות את המערכת כך שעל המשתמש לדרג את המנגינות באופן יחסי ולא לתת לכל מנגינה ציון מוחלט על-מנת להימנע מהבדלים בין-אישיים בדירוגים וכך לדאוג לסטנדרטיזציה, וכן על-מנת לוודא הבדל משמעותי בין הצלילים. בסוף התהליך, לאחר מספיק השמעות )במקרה שלנו, קבענו זאת כ- 099 השמעות לכל דור( האלגוריתם יצר דור חדש, בהתבסס על 5 המנגינות המוצלחות ביותר מהדור הקודם לפי מדד האהדה שתואר לעיל. מתוך 5 המנגינות המוצלחות ביותר, ייצרנו 29 מנגינות חדשות לדור הבא באמצעות הלחם של כל זוג מנגינות ונוסף עליהן הוספנו לדור החדש את 5 המנגינות המוצלחות ביותר מהדור הקודם.
על את המנגינות יצרנו בתהליך crossing over של התווים שמרכיבים כל מנגינה, כלומר הולחמו לסירוגין בלוקים בגודל זהה משני "הורי" המנגינה החדשה. ככל שהתקדמנו בדורות, שמרנו חתיכות משמעותיות יותר מהמוסיקה המקורית כחתיכות מאוחדות, וזאת מתוך מטרה לאפשר "התכנסות" של התהליך, בדומה לעיקרון של :simulated annealing בדורות 0-0, שמרנו על בלוקים באורך 2 מכל מנגינה. בדורות 4-6, שמרנו על בלוקים באורך 0 מכל מנגינה. בדורות 7-0, שמרנו על בלוקים באורך 5 מכל מנגינה. דוגמה לתהליך הלחמה של שני פריטים, כאשר שומרים על בלוקים באורך 5 מכל מנגינה: כמו כן, כדי לאפשר דינמיות והרחבת מאגר המנגינות, הוכנס מנגנון של "מוטציות" ביצירת כל מנגינה, כל תו הוחלף בסיכוי של 5% לתו אחר כלשהו.
צורת ניתוח הצלחת הפרויקט בכדי לבדוק את הצלחתו של הפרויקט לעמוד ביעד העיקרי שלו יצירת מנגינה נעימה לאוזן, החלטנו לאסוף נתונים שונים מהדורות השונים שנוצרו במהלך הפרויקט, ולהשוות ביניהם. כלומר, לאחר איסוף כל הנתונים וסיום התהליך הגנטי, נתנו למאזינים נוספים לדרג צלילים שונים מדורות שונים. מטרת ההשוואה שיצרנו היא בדיקת העדפות של מנגינות שונות שסונתזו על ידי האלגוריתם הגנטי שלנו בשלבים שונים )כלומר בדורות שונים(, ומדידת הצלחת האלגוריתם האם ככל שהתקדמנו בדורות הצלילים נעשו טובים יותר? בפרט אנחנו מעוניינים בבדיקה של השיפור בין הדור הראשון לדור האחרון )כלומר בין הדור שנוצר באופן אקראי לבין הדור שנוצר מתהליך האלגוריתם הגנטי(. בתהליך בדיקה השמענו ל 09 מאזינים שונים ארבע מנגינות: המנגינה החציונית מהדור הראשון מנגינה זו היא לא אהודה ולא שנואה במיוחד, ומייצגת עבורנו את הדור הראשון שהוא אקראי לחלוטין. המנגינה האהודה ביותר בדור 0. המנגינה האהודה ביותר בדור 6. המנגינה האהודה ביותר בדור 0. בדומה לשיטת הדירוג הראשונית המתנדבים התבקשו לדרג את ארבע המנגינות מהאהובה ביותר לשנואה ביותר, ובהתאם לכך ניתחנו את הצלחת הפרויקט כולו.
מיקום ממוצע )יותר נמוך יותר אהוד( תוצאות הפרויקט וניתוחן 0 מנגינות הדורות השונים הושמעו בסך הכל 025 פעמים על-ידי משתמשים שונים, שיצרו דורות חדשים. לאחר איסוף הנתונים, התוצאות שקיבלנו הן: המנגינה האהודה ביותר מבין הדורות היא המנגינה מדור 6, עם הציון הממוצע של המקום ה 0.0 )מתוך 0-4, כאשר ככל שהמספר נמוך יותר כך המנגינה אהודה יותר(. המנגינה במקום השני היא המנגינה מהדור העדכני ביותר דור 0, עם ציון ממוצע של המקום ה 2.0. המנגינה במקום השלישי היא המנגינה מדור 0, בממוצע במקום ה 2.7. במקום האחרון המנגינה הכי פחות אהובה, היא המנגינה מהדור הראשון )והאקראי(, עם דירוג ממוצע של המקום ה 0. תרשים גרפי לדירוגים: דירוג ממוצע של הדורות המייצגים 3.5 3 2.5 2 1.5 1 0.5 0 6 דור המנגינה 0 0 0
דור ניתן בהחלט לראות בתוצאות שקיבלנו מגמה של שיפור באיכות המנגינות בכך שישנה עלייה מתמדת בין דורות 0 ל 0, ובין דורות 0 ל 6. היינו מצפים גם להעדפה של דור 0 על דור 6, אם כי אנו מאמינים שזוהי אנומליה בניגוד למגמה הכללית של התקדמות הגרף. תוצאה מעניינת נוספת שניתן להסיק מניתוח התוצאות הכוללות של התפתחות הדורות השונים נוגעת להתפלגות שכיחויות הופעות התווים בכל אחד מהדורות )כלומר במנגינות השונות בדורות השונים(. בשנתי תווים ניתן לראות שינוי עקבי משמעותי: התו D הידלדל באופן קונסיסטנטי במספר ההופעות מ 04% ממספר ההופעות בדור הראשון, ועד ל 0.5% בלבד בדור האחרון שנוצר. התו C התחזק באופן משמעותי מ 06% ממספר הופעות בדור הראשון, C התחזק ל 22% מהתווים בדור האחרון. גרף המציג את ההתפלגות: התפלגות התווים בדורות השונים אחוז מהתווים בדור 0% 20% 40% 60% 80% 100% 1 2 3 4 5 6 7 8 A B C D E F G 9
מבט לעתיד כיוונים להרחבות אפשריות של הפרויקט בהינתן משאבים אנושיים רחבים יותר כמו כמות מאזינים גדולה יותר, שיכולה להאזין למנגינות ארוכות יותר יכולים להיות: התאמת מוסיקה לתבנית התחלתית כלומר, המאזינים יקבלו קטע מוסיקה שמוגדר מראש כקטע "טוב", ובהתאם לבחירות שלהם יורחב קטע המוסיקה למנגינה ארוכה יותר. כלומר, המאזינים מקבלים שרשור של תחילית מוסיקלית קבועה להמשך משתנה, ומדרגים באופן דומה לנעשה בפרויקט שלנו המשך מתאים לתחילית זו. פרויקט שכזה יכול לשמש השראה לפרויקט גדול יותר שיכול לעסוק בהלחנת המשכים לשירים קיימים )למשל, במקרים רבים מלחינים ומשוררים שונים מחליטים להוסיף בית חדש לשיר מוכר מעת עתיקה ומתקשים למצוא לחן שיתאם לרוחו של השיר המקורי(. שימוש באורכי צלילים משתנים, אוקטבות שונות והשמעת תווים שונים בו זמנית אנו צופים שפרויקט שכזה יכול ליצור מנגינות מוצלחות מאוד, אבל הוא דורש כמות מאזינים גדולה בהרבה מהכמות שהייתה זמינה עבורנו. מספר האפשרויות לצלילים שונים הוא עצום, ולכן תהליך ההתכנסות לצלילים שנשמעים טוב יותר מהצלילים המקוריים הוא תהליך ארוך יותר. דוגמא לפרוייקט דומה שנעשה, בסקלה גדולה מאוד, הוא פרוייקט DarwinTunes )בו היו כ- 7,999 מאזינים ונעשו כ- 2,599 דורות(.
סיכום ומסקנות בפרוייקט זה הפקנו מכניזם ליצירת מנגינות קצרות שערבות לאוזן אנושית. מנגנון זה נבנה על-בסיס אלגוריתם גנטי שבנינו, המסתמך על דירוגים אנושיים כמדד לטיב מנגינה. המנגנון הלחים את המנגינות שדורגו במקומות הטובים ביותר בכל דור לכדי דור חדש. על-מנת לבחון את טיב המנגנון, ביקשנו ממתנדבים נוספים לדרג מנגינות מדגמיות משלבים שונים של הפרוייקט ואכן ניכרה מגמה עקרונית של שיפור בטיב המנגינות.