נביא שקר

הנבואה ניתנה לשוטים

קטגוריה: רשת נוירונים

ML's Lament (part of your world)

ML's Lament 

(to the tune of 'part of your world', from The Little Mermaid)

Screen Shot 2017-07-13 at 1.45.40 PM

Look at this net, isn't it neat?
Wouldn't you say that it’s Turing-complete?
Wouldn't you say that this net
This net can learn anything?
Look at this graph, tensors unfold
How many layers can one network hold?
Lookin' round here you would think
Sure, it can learn everything

I've got ReLUs and batch-norms aplenty
I've got convos and poolings galore
You want GPU stacks?
I got twenty
But who cares?
No big deal
I want more

I want to know what the people know
I want to see
Wanna see 'em dancing
Walking around on those
Whadd'ya call 'em? Seriously, label it for me
End-to-end training gets you eerily far
But more is required for safely driving
Hurtling along down a
What's that thing again? Street?

Out where they walk
Out where they run
Out where they do more than classification
Wandering free
Wish I could be
Part of that world

What would I give
If I could live
Out of this arXiv
What would I pay
To spend a day
Not fine-tuning grads
Betcha a GAN
Can't understand
That you can overfit your data
Bright non-humans
Sick of training
Ready to test

And ready to know what the people know
Ask 'em my questions
And get some answers
What is a child and how does it
What's the word? Learn?

When's it my turn?
Wouldn't I love
Love to be more than ‘intelligent, sort of'?
Out of the hype
Free from the gripe
Part of your world

מודעות פרסומת

End-to-end stock predictions with deep learning

Brief summary of the post for those wondering whether to bother: I trained a neural network that takes in images of stock data like this…

yum11

…and outputs whether that stock will go up or down over the next year. On the way, I make some remarks on end-to-end learning.

====

There's a current craze within the current craze of machine learning and AI, which focuses on end-to-end learning. Roughly speaking, this is the attempt to go from raw perceptual input to the desired output with as little knowledge engineering as possible.

To give an example, suppose you were trying to teach an AI to drive a car***. You could try to factor the problem: I need to detect lanes, other cars, people, and signs. I need to figure out people's plans, I need to parcel my actions into the following sub-goals, etc. Each of these sub-problems still needs to be solved on its own (and probably you could throw a neural network at these sub-problems), but at a high-level you're making a decision about how the problem breaks down:

endtoend1.png

Contrast this with a somewhat different school of thought:

endtoend2.png

That part in the middle of the figure above is a cartoon stand-in for a deep neural network. The network gets in the pixels of the image, outputs some driving action, and gets rewarded accordingly. The hope/promise is that the network will figure out on its own the necessary features and structures needed to solve the problem, without any 'hand-engineering' by a handy engineer.

(*** I am stealing borrowing this example from Amnon Shashua, the head of the self-driving car company Mobileye, who has a bunch of interesting things to say on the topic)

These two approaches are the ends of a spectrum, rather than two completely distinct factions. Still, there are many people these days who veer heavily towards the 'end-to-end' part. And it is quite alluring: we don't need to know anything about anything, just plug in the input and desired output, and let the machine take care of the rest.

This is partly what got people so excited about DeepMind's recent Nature paper, in which a neural network was able to achieve super-human performance on certain Atari games (like Pong and Space Invaders) through reinforcement learning over the pixels of the input. The 'super-human' part is a bit of a distraction. I mean, if you had a program that explicitly knew about things like "this is the space invader sprite" and "you are the defense-turret and when you shoot it does X", then of course you could achieve super-human performance. Such a result would barely register as a worthwhile paper in a conference, let alone a prestigious journal. The wow-factor had to do with the notion that you didn't have hand-craft explicit stuff like "you are the paddle", or even what a paddle was.

breakout.gif

DQN training to destroy humanity

I think it's an open question whether the network described in the DeepMind paper actually learned the representations that allow us humans to play these games successfully. In fact I'm pretty sure it didn't. And it matters, because while end-to-end is quite seductive and works surprisingly OK in certain regimes, I think it is a little insane.

But rather than spend the rest of this post arguing that (I've covered a bit of it elsewhere), let me instead morph into an end-to-end enthusiast, who also wants to play the stock market.

(clarification, everything from here on is still kinda true. Technically.)

======

Gee wiz guys, all this neural network stuff sounds awesome. But how can we make some actual money off of it? I mean besides getting a PhD in Deep Learning and being hired by a start-up.

I know, we'll bet on stocks!

psych

Let's see, we can formulate the 'problem' of stock betting as a system that takes in some data about stocks in the past, and tries to make the right prediction about stocks in the future. Now, I don't know that much about stocks, and I don't want to bias my system by giving it any human-specific notions like 'prices', or 'companies', or 'the concept of time'.

We'll just feed in raw input into the machine in a format it can understand: visual pixels.

I downloaded all the stock data for the Fortune 500 companies going 5 years back, and created 32×32 pixel images that show how a stock fared over 365-day intervals, including the stock name and the min and max of the price (not that the machine knows anything about those, it'll have to discover them on its own if they matter):

yum11

I used 50-day jumps and 365-day intervals, so I had about 10,000 training images. But how should I label them? What counts as a 'good' stock?

There's no one way to answer that. I ended up doing the following: If the stock went up over the 365 days that followed the image (a positive correlation of 0.5 or higher), I labeled it '+1'. If the stock went down (a negative correlation of -0.5 or lower) I labeled  it '-1'. Anything else was labeled '0'. The assumption is that we can turn these labels into useful actions like 'buy', 'sell/short', or 'do nothing'.

Since stocks generally go up (in the dataset, anyway), one can know nothing at all and still predict 70% of the labels just by guessing the maximum-likelihood "+1" all the time. So, 70% accuracy will be our baseline to beat.

To recap:

  • The input is an image of the stock performance over a given span of 365 days.
  • The desired output is -1, 0, or +1 depending on how well the stock did on the *next* 365 days.
  • The number to beat is 70% accuracy.

I took an off-the-shelf convolutional neural-network that can reasonably recognize different animals and threw the problem at it, using TensorFlow.

It didn't work.

I started to think that maybe the stock market present a unique challenge with its long-range beha-

NAH LET'S JUST ADD ANOTHER CONV-LAYER AND FUTZ WITH THE LEARNING PARAMETER LOL.

q8gb6

Here we go:

endtoend3.png

The network achieved 92.3% accuracy on the left-out examples (that is, stock images that it never saw before). For the math-y types out there, 92.3 > 70.

Hooray, let's make money.

Epilogue Q&A

Q1: "But Navisheker, what did the network actually learn?"

A1: I dunno, I guess it extracted the features it needed or something.

Q2: "Wouldn't it be saner to run machine-learning directly on the actual time-series data and company information?"

A2: Sure, if you want to hand-engineer your way to profit go ahead and try. My way doesn't require knowing anything about anything.

Q3: "Surely there's a simpler algorithm for getting a similar result. What if you just predicted that things that went up before tend to go up again?"

A3: That's not end-to-end, get out of here with your old-school ways! But since you asked, if you run logistic regression to try and predict the labels from the linear regression coefficient of the past 365 days, you can get up to 84%, which is not as good.

Can you caption better than a 4-year-old?

(In English this time)

I recently tried the limits and failure-modes of Microsoft's new CaptionBot. It seems that CaptionBot doesn't really understand what it is looking at.

There are a few counters to that conclusion:

A) Neural networks see the world differently than we do, man!

B) Pfft. The neural-network behind CaptionBot just wasn't trained on enough data.

C) You need to be more forgiving and nurturing. Neural networks are like precious children,  figuring out the world for the first time.

To which I say:

A) Maybe, but then the PR surrounding it shouldn't be "Our bot understands the content of images", but more like "Our bot sort of gets image-classification, and can sort of link that up to Flickr-type captions, if the images are similar to a dataset we trained on".

B) Nonsense.

C) This post.

I managed to secure a 4-year-old's attention for about 20 minutes, and asked him to tell me what was in a series of photos ("describe what you see").

I offered encouragement, but not feedback.

Then I asked CaptionBot to do the same.

Here are the results:

unnamed (9)

4YO: This is a castle and these are buildings and that’s a wall and that’s a sign, and there’s grass

CaptionBot: I think it's a large stone building

unnamed (8)

4YO: I see a eagle and people are falling into the water, and that’s Moses, and those are the bad guys in the water

CaptionBot: I am not really confident, but I think it's a group of stuffed animals

unnamed (7)

4YO: The lion is trying to eat that person up

CaptionBot: I am not really confident, but I think it's a cat playing with a toy

unnamed (6)

4YO: People are pulling the horse with carriages, and they’re pulling it and pushing it and pulling it and pushing it, cause they want to break other people with that horse, and he’ll step on them, and he likes the nice guys

CaptionBot: I am not really confident, but I think it's a group of men standing next to a horse

unnamed (5)

4YO: They’re fighting. That’s Alexander and he’s going to win. He’s holding the bow, the arrow in his mouth. These guys have swords and shields

CaptionBot: I am not really confident, but I think it's a couple of giraffes that are next to a book

unnamed (4)

4YO: The Israelites. They’re tired and they’re walking and they don’t want to live in their land

CaptionBot: I think it's a group of people sitting in front of a building and they seem 😐 😐 😐

unnamed (3)

4YO: People fighting with dragons. The dragons might blow fire on them and eat them. And they’re opening their mouth

CaptionBot: I am not really confident, but I think it's a vase with flowers in it

unnamed (2)

4YO: A kayak, and this guy wants to throw that big rock at the kayak to make it sink it and break it

CaptionBot: I am not really confident, but I think it's a sandwich on a rock

unnamed (1)

4YO: It’s Alexander and his great people. There’s lots of horses, alexander is on his horses, dancing

CaptionBot: I am not really confident, but I think it's a group of people standing outside of a building

unnamed

4YO: Hanukah people carrying Hanukah things and stuff

CaptionBot: I am not really confident, but I think it's an old photo of a stone wall

That'll do, CaptionBot. That'll do. 

תאר לי כבשה

(הערכת עריכה: הפוסט המקורי דיבר על ׳תיוג תמונות׳. יואב גולדברג תיקן שמדובר ב-captioning, כלומר תיאור תמונות או תמלול תמונות)

 מיקרוסופט שיחררו לאחרונה בוט לתיאור תמונות:

Screen Shot 2016-04-20 at 10.06.17 AM

כפי שאפשר להבין, הבוט איננו מושלם.

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

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

הנה עוד כמה דוגמאות:

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

עוד דוגמא:

CgQXfyDW4AAJG4E

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

יואב גולדברג צייץ עוד כמה דוגמאות:

CgQT7GVW4AAEeyo

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

בשלב הזה החלטתי להאכיל את התמונות עצמן בחזרה לרשת:

2016-04-18 (6).png

…ואחרי כמה זמן הגעתי ל-cap-ception:

2016-04-18 (7).png

יואב גם ניסה לתת לרשת כל מיני תמונות מלחמה:

2016-04-17 (1).png

״נפש תמימה ויפה כמו ילד״, כתב יואב. אבל הרשת לא באמת חושבת כמו ילד.

שאלתי ילד בן ארבע מה הוא רואה בתמונה.

ילד: ״לא יודע.״

אני: ״נו, תנחש.״

ילד: ״מזרקת מים.״

אני: ״לא רע. יש לך עוד ניחוש?״

ילד: ״די כבר, תגיד לי מה זה.״

אני: ״מה אתה חושב, זה מזרקת מים או כבשה?״

ילד: ״אתה מצחיק! זה לא כבשה.״

אני: ״למה לא?״

ילד: ״אין לה בכלל ראש.״

היטלר

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

2016-04-18 (8)2016-04-18 (9)2016-04-18 (10)2016-04-18 (11)

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

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

אבל הרשת לא תמיד מזהה את היטלר, ואז זיהוי הרגשות שלה הוא לא רע:

2016-04-18 (14)2016-04-18 (13)2016-04-18 (12)

מחשבות סיכום

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

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

ולסיום, הנה מה שהבוט חושב על תמונות מימי הביניים:

2016-04-18 (16)Screen Shot 2016-04-20 at 12.13.46 PM2016-04-18 (15)

אלפא גו מול לי סדול, הדרך לתבוסה

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

הערות מטא על התקשורת והצורך בפוסט הזה:

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

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

אחת התוצאות הראשונות בחיפוש אחר ״אלפא גו״ בעברית הוא פוסט בבלוג די זניח, כלומר הבלוג הנוכחי.

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

תיקון: ביום שהפוסט הזה עלה, התפרסמה כתבה טובה ב״הארץ״

========

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

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

העמוד בדוגמא הזו הוא ה״טבלא הקשיחה״ הלא במיוחד אינטיליגנטית. הסיבה ששח נחשב כמשחק שמחייב מחשבה קשורה לכך שקשה מאוד לבנות טבלא שכזו. בכל רגע נתון במשחק יש מספר לא קטן של מצבים שצריך לבדוק, ועץ המשחק הכללי הוא עצום. לכן צריך להעריך באופן ״אינטיליגנטי״ כלשהו מצבי לוח גם בלי היכולת לחקור אותם עד הסוף. יש כל מיני מחקרים שמראים איך מומחים בונים הערכה של מצבי לוח שונים, והרבה ממחקר השח המלאכותי עסק בניסיון למצוא את ההערכה הנכונה למצבי לוח שונים (אולי רץ שווה 3 נקודות? אולי 4? אולי הוא שווה 3 נקודות בתחילת המשחק ו-4 נקודות באמצע?). זאת, כמובן, בשילוב עם היכולת לבדוק ולהעריך מספר גדול מאוד של מצבי לוח אפשריים. בשח יש גם חלק חשוב מאוד בכל הנוגע לשינון פתיחות ומצבי לוח שהיריב הספציפי מולו אתה משחק שיחק בעבר. לדעת אנשים כמו אלוף השח בובי פישר, השינון המסיבי הזה מקרב אנשים יותר למצב של ״טבלא קשיחה״ ואינו מהווה מדד לאינטיליגנציה או אפילו יכולת לשחק שח. פישר נהג לקונן על אובדן הכיף במשחק, והעובדה שכל מיני פושטקים בני 14 משנות האלפיים יכולים להביס אלופים מתחילת המאה המאה ה-20 בזכות שינון מסיבי, למרות ש״ברור״ שהאלופים הקודמים בעצם משחקים שח טוב יותר. פישר טען בזכות שח רנדומי, בו הכלים מתחילים באופן אקראי על הלוח. משחק שכזה מנטרל לכאורה את יכולת השינון ומחזיר את השח למצבו הטבעי – יכולת המשחק הטבעית של השחקנים תהיה קשורה ביכולת שלהם להעריך מצבים ולחפש במהירות אסטרטגיות מנצחות, במקום להסתמך על שינון.

Real_Wizard's_Chess

שח קוסמים, לקוח מה-ויקי של הארי פוטר

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

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

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

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

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

רשתות נוירונים: אפשר להקדיש בלוג זניח שלם לתחום הזה (או כמה מיליארדי דולרים) ואין לי יומרות לסכם את העסק כאן. ובכל זאת, אי אפשר בלי איזשהו הסבר: מדובר במשפחה של אלגוריתמים שמנסים למצוא פונקציה הקרובה ככל האפשר לפונקציה ״אמיתית״ שממפה בין איזשהו קלט לאיזשהו פלט. בתור דוגמא, אפשר להניח שהקלט הוא פיקסלים בסידור מרובע, והפונקציה האמיתית היא אלגוריתם לזיהוי אובייקטים שממפה בין הפיקסלים בריבוע לבין תווית, כמו ״חתול״ או ״כלב״. רשת נוירונים תנסה למצוא פונקציה קרובה לפונקציה האמיתית, על-ידי שינוי המשקולות שמקשרות בין תאי קלט ותאי פלט (או יותר נכון, שינוי  המשקלות שמקשרות בין תאי הקלט ותאי האמצע, ובין תאי האמצע והפלט. רשתות נוירונים מאורגנות באופן ששואב השראה ממודלים פשטניים לרשתות עצבים ביולוגיות). הלימוד יכול להתבצע באופן מבוקר (״הנה כלב, הנה חתול, הנה כלב…״) או באופן לא מבוקר (ואז הרשת לרוב מנסה לדחוס באופן יעיל את הקלט). שוב, מדובר במשפחה שלמה של אלגוריתמים עם היסטוריה ארוכה, ואפשר לדמיין כל מיני סידורי רשת (למשל רשת נשנת, או לא נשנת, רשת עם מספר רב של שכבות או מספר קטן של שכבות, רשת שמקושרת לתאי זכרון, רשת שהפלט שלה הוא קלט לרשת אחרת שמנסה לדחוס את הקלט ובלה בלה בלה). מאז הגרסאות המוקדמות ביותר בשנות ה-60, העיסוק סביב רשתות נוירונים הוא עניין מחזורי. לפני הגל הנוכחי, ההתלהבות  הגדולה סביבן (בלימודי מכונה ובפסיכולוגיה) הייתה בשנות ה-80, ואז הן קצת נזנחו. לאחרונה הן זוכות לעדנה, מה שמוביל לסיפורי ״תמיד ידענו שצדקנו וגם כשכולם הגלו אותנו למדבר המשכנו להאמין בצדקת דרכנו ועכשיו כולם רואים שצדקנו״. רשתות נוירונים ״עמוקות״ (כלומר כאלה שיש בהן יותר משכבת אמצע אחת) הצליחו לאחרונה במגוון תחומים שנחשבו קשים מאוד בבינה מלאכותית, כולל זיהוי אובייקטים, ניבוי פעולה, תיוג תמונות וסרטי וידיאו, זיהוי לוויתנים, נהיגה אוטומטית, מציאת תבניות מעניינות בדנ״א, קיפול חלבונים, ומה לא. אנשים עדיין חוקרים למה בעצם כל העסק הזה עובד, אבל נראה שעבור מטלות מסויימות הוא באמת עובד. חוקרים במיוחד אוהבים את היכולת להתייחס לרשתות נוירונים כמעיין קופסאות שחורות שימצאו לבד את תתי-החלקים החשובים לצורך פתרון בעיה. אם נחזור לדוגמא של משחקי לוח, אנשים בעבר בילו הרבה זמן בהגדרת המאפיינים החשובים לפתרון משחקי לוח שונים, והמשקל שצריך לייחס למאפיינים השונים (מאפיין בשח יכול להיות למשל איזה כלים נשארו, ואיפה הם על הלוח. המשקל הוא החשיבות שאנחנו מייחסים למאפיין, למשל אפשר לייחס משקל 3.5 לקיומו של רץ). במקום לעבוד באופן סיזיפי בניסיון למצוא מאפיינים טובים, ניתן לרשת לגלות אותם. יכול להיות שהמאפיינים החשובים הם בכלל כל מיני קומבינציות מוזרות של דברים שלא חשבנו עליהם אף-פעם. לעיתים קרובות קשה מאוד להבין מה בעצם המאפיינים שרשת גילתה.

ann_3

רשת נוירונים פשוטה. לקוח מהאתר של Abner Araujo

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

דיפ מיינד, אגב, שכרה גם אנשים כמו דיוויד סילבר.

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

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

ואז דיפ-מיינד הודיעו שהם הולכים להתחרות מול לי סדול.

lee sedol 002 (1)

לי סדול

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

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

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

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

Cc_xDwWUAAA1krg

מדובר היה במסיבת התקשורת הגדולה ביותר בהיסטוריה של גוגל.

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

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

ואז לי סדול הפסיד בקרב הראשון.

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

ואז לי סדול הפסיד בקרב השני.

Google-Go-Lee-Sedol-press-conference-930x760

קרידט: גוגל

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

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

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

Cdm5zkrWwAIMWa4

תעודה המכירה בכך שאלפא-גו הגיעה לרמת דאן-9

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

אז מה עכשיו? תוך כמה זמן יגיע ״כל היתר״ עליו דיברו בניו-יורקר בפסקא שניבאה שמכונות יביסו אותנו בקרוב ב״דמקה, שח, גו וכל היתר״?

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

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

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

לגבי תחזיות, ג׳פרי הינטון – איש חשוב מאוד בתחום ומחלוצי רשתות הנוירונים והלימוד המבוזר בשנות ה-80 – לא אוהב לנסות ולנבא דברים מעבר לאופק של 5 שנים, והוא לא רואה בינה אנושית מלאכותית בטווח הזה לפחות. בסקר שערכתי בקרב עשרות אנשים מומחים יותר ופחות, נראה שהציפייה החציונית היא שנגיע לבינה אנושית מלאכותית עוד כ- 50 שנה (תוצאות דומות לאלה העולות  מהסקרים שניק בוסטרום מעביר בכנסי בינה מלאכותית), אבל צריך לזכור שבינה מלאכותית ״אמיתית״ תמיד אמורה להגיע עוד 25-50 שנה יחסית לכל רגע נתון. קלוד שנון ניבא בשנות ה-60 שתוך 10-15 שנה נבנה משהו שהוא לא רחוק מאוד מהרובוטים בסיפורי אסימוב, והוא לא היה היחיד.

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

גו גו אלפא-גו

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

האלגוריתם של החברה, אלפא-גו, הולך להתחרות נגד לי סדול בתחילת מרץ. השאלה היא על מי להמר.

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

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

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

This was one of the few mistakes the robot made. Backgammon is now the first board or card game with, in effect, a machine world champion. Checkers, chess, go, and the rest will follow—and probably quite soon. But what does this mean for us, for our sense of uniqueness and worth—especially as machines evolve whose output we can less and less distinguish from our own?

שש-בש נכבש ב-1979, דמקה ב-1994, שח ב-1997, ונראה שאנחנו מתקרבים כעת לגו. אני תוהה אם כותב המאמר חשב ש-35 ושנה זה ״בקרוב ממש״.

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

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

עם זאת, אלוף אירופה בגו מדורג נמוך למדי יחסית לאלופי העולם, איפשהו במקום 600 ומשהו. האם אלפא-גו מסוגלת להביס אלוף עולם ׳אמיתי׳?

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

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

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

meaning

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

fRNNds – רשת נוירונים לכתיבת פרקים של ׳חברים׳

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

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

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

 

Ross-Why-Would-You-Do-That

מדובר בערך ב-770,000 מילים, 4.3MB. הרשת היא בת 2 שכבות ו-300 נוירונים, ואימנתי אותה במשך כ-20,000 צעדים עד שטעות האימות לא השתפרה כבר ונמאס לי. אין לי ספק שאפשר לאמן רשת מוצלחת יותר, אבל לא באמת אכפת לי מספיק כדי לעשות לזה אופטימיזציה.

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

Screen Shot 2015-10-27 at 2.00.58 PM

אחרי כמה אלפי צעדים כבר מקבלים משהו כזה:

Screen Shot 2015-10-27 at 2.05.19 PM

וכזה:

Screen Shot 2015-10-27 at 2.14.21 PM

זה עדיין נשמע די ככה:

75a9e59156df70dc52031318969214ab

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

====

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

מה קורה בטמפרטורה נמוכה ב׳חברים׳?

דברים כמו זה:

Screen Shot 2015-10-27 at 2.20.03 PM

וכמו זה:

Screen Shot 2015-10-27 at 2.22.13 PM

ובחיי שאני לא ממציא את זה:

Screen Shot 2015-10-27 at 2.27.17 PM

בחזוני אני רואה text-to-speech שלוקח את המחולל הזה ומייצר פרקים שלמים בקולות של החבורה, אבל זה ידרוש קצת יותר משאבים ממה שיש לי כרגע. או כאלה שיהיו לי אי פעם.

״וְאִם-אֲמָת עֲשִׂיתֶם לְצַחֵק״ הפעלת רשת נוירונים על התורה והברית החדשה

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

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

אז הפעלתי את רשת העצבים על התורה.

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

הנה דוגמא משלב אימון די ראשוני:

, אָלּוֹרֹחַי-הָזֵשַׁקְּתִּּיָתְהַעֹּצְבּּ:  ?{ן.  כגִץ, וְיַםֲֶׁדֲֹׂל–צַה הְי כוֹהֶלְוּרֶרִּן.  כו,נל אָהָׁמִן-זֶי, וְלִּּּד יֶלְּדַמִזָנַיַהָּחִחוֹל, אַםּוְשְׁהֶרִתְּכֹּּת-הְּמָּמֵ֕י-עִקֵּי- וְאָב-הָתֲָּׁׁזַר בֻּנְתְלָעֵּי-בִּרוֹה תִּאִלוֹ שֹדָּר-אֵיוֹ; קִחְרֶי֕,?גוְיְנָּרֹרָ

(הו, רשת. את מטומטמת)

הנה המצב אחרי אלפי איטרציות:

(לג,טז) אָשִׂינִי.  (טו,יב) טַבְּשָׁתּוֹ:  כִּי-לֹא-יִרְחַל אֶת-הֲטַלַּן לַעֲשׂוֹת יָדוֹ, וּשְׁמוֹ.  (לט,מט) וְכָל-בְּכֹר הַשְּׁמֹר פָּנוֹ בְנֵי-יִשְׂרָאֵל, שֵׁמַּת לִבְנֵי יִשְׂרָאֵל, לַשְׁלוּתָם בְּאֶחְיוּן.  (כא,יט) לְמֵעַ תַּעֲקֹב, בִּשְׁתֵּט, מִכְרַיִם תִּקְרָא.  (א,כ,) וַיֹּאמֶר, אָלָיו–שְׁנַת קָדָשִׁים תַּעַשׂ וּמַתֵּן לֹא חָבִי, וּלְקַרְשֵׁי מוֹתֵךְ אָחִינו?

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

והנה המצב אחרי עוד כמה אלפי איטרציות:

{ד,טו} וַיְדַבֵּר יְהוָה, אֶל-מֹשֶׁה וַיִּקַּח-לוֹ, וּנְתָנָה לֵאמֹר, לֹא-אֲנִי יְהוָה אֱלֹהֵינוּ:  אֲנִי, יְהוָה; וְכִסָּהוּ בָּהֶם; וּפִילַת עוֹד, יֹשְׁבִים בְּקֶרִי הָאִשָּׁה, וַיְמַלֵּא שַׁרְמֶנּוּ, אֶל-יִשְׂרָאֵל וַאֲכַלְתֶּם אֶת-קֹרַח, אֶת-הַקֶּדֶם; וְנִסְכֵּיה; וְאִם-אֲמָת עֲשִׂיתֶם, לְצַחֵק. {כה,יא} וְעַתָּה, אָרוּר שְׁמַע מֹלַעַת, וְלֹא יֶדֶעַ, וְשָׁמַעְתָּ בְּמַסֹּהֵם וְהַכְּבָשִׁים בְּקִנִּית הַמִּצְבֶהָב, בְּכָל-קָדְשֵׁי אֹתוֹ הַסֹּרֵג אָנֹכִי.  {ט,טז} וַיָּקָם אֵלָיו אֶל-אֶלְעָזָר, וְהָיָה לָכֶם סֹגֵף. {כ,יב} וְלָבּו, עַל-מִשְׁפַּחְתִּיו, לָתֵת לָהֶם, וָמֵת, עַד-דְּרֵה-כָל-הָעֵדָה לַיהוָה אֱלֹהֵינוּ.

**

{יא,נו} וְשָׁכַח בְּבֹרְךָ אַחַת עָלֶיהָ, תִּקְרַב עִמּוֹ; וְהָיוּ תְרִיבוּ אֶת-נֶגַע כִּי-אַתֶּם תָּרוּ, הַלְוִיִּם–וּמִנְחָתָהּ הִוא אֶת-הָאֵפֹד הַזֶּה.  {ט,טו} וַדֵּרַע אִישׁ, בַּבָּעָר, וַיָּשִׁתוּ מִתּוֹךְ הַחֲמַרְךָ:  וְאֵת כָּל-כֹּהֵן לִנְטֹחַ לִי; וְטָמֵא אֶלֶף וּבֻקֹּלֶת.  {כח,ד} וְאִם-נֵלְכִיהָ, לָקִת בְּעַם פִּרְרֹתָם:  כִּי-עָבַר, לִפְנֵי יְהוָה לֵאמֹר; וְיַד אִישׁ יְהוָה לְקַרְשֹׁתֵיכֶם מְדִישִׁי, הֵם צֹאן אֲנָכְנוּ-זֶרֶת כָּל-בָּשָׂר עֵשָׂו, לֹא תִגָּחַ וְאָהֳלוֹ.  {ו,כג} וְהַעֲלֵיכֶם גַּרְנֵי, הוֹלַד–הֲיוֹם, לֵאמֹר; כֵּן, אֹיְרֶךָ, וּבַחֲמִשָּׁה עָשָׂר יוֹם עִמָּם; וְהָחָר, מִבֶּן עֶשְׂרִים מִמֶּנּוּ; וְגַם-הוּא, וְחָסוּר מִכַּחֲמֹתָם:  מָה הָעֲוֶה, וְאַבְרָהָם אֶת-שֵׁת.  {ה,ד} וּמִגְדָּל, עַד-פָּנָיו; וְהָיָה עֶרְוַת כָּל-זָהָב עֵמִים חֲמִשִּׁים, תִּשְׁמַע אֵלָיו, הֵפֵּצתֶךְ:  כִּי-יִמָּצֵר בְאֹהֶל מוֹעֵד אֶת-כָּל-כֵּלָיו; וְעַל פְּנֵי יְהוּדַעַר וּמֵאָה; וְכָל-אֲשֶׁר קָרָא מֵאֹהוֹת, בְּפִיו; תְּדַבֵּרוּ.

(נשמע כמו משהו שצריך לשנן לבגרות. הרבה מילים יחידאיות)

================

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

jesusjoseph

אני אעזוב את הקטע של ׳איך זה נראה בהתחלה׳ ואקפוץ ישר לסוף האימון:

6:25 And when he had heard, and destroyed the house of Judaea and Arim to Jeresalem, and prevailed unto the sea, and were bought forth to go throughout all evil.

20:24 And I will not be unto the mount of come about the tree, and said unto them.

11:18 But the scarper that he shall say, A man cat dead them, and went into the sea, and went into the house of Theason! for the morrow years of Nazareth, Lord Jesus there should be with him again, and saith unto them, I will come in Esceas the first.

6:3 And he raked him a parable upon them, and scatter him to men, and now unto Ramea, and the throne is called the woman, and of them that were scaptered them, saying, Lord, Thou askes him sow.

אההה…אם אתה אומר, ישו. 

====

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

הנה הברית החדשה על טמפרטורה נמוכה:

22:16 And when they had taken with them that were done all the people, and said unto him, Where is the son of Joseph, which was the son of Alphaeus, and Simon the people, and the scribes and the sea of Galilee, and were seven things which he spake to his disciples, and said, This is the son of Joseph, which was the son of Salmon, which was the son of Joseph, which was the son of Alphaeus, and Salome, which was the son of Altaus, which was the son of Joseph, which was the son of Joseph, which was the son of Joseph, which was the son of Juda,

והנה התורה, על טמפרטורה אפס-נקודה-אחד:

וְהִנֵּה שִׁבְעָה שָׁמֶךְ וְאֶת-הַחֵלֶב אֲשֶׁר עָשָׂה לְךָ אֶת-הַמִּשְׁכָּן הַשְּׁבִיעִי, מִקִּרְבֶּךָ.  יד,יח וְאֶת-הַחֵלֶב אֲשֶׁר עַל-הַמִּזְבֵּחַ וְאֶת-הַבָּשָׂר אֲשֶׁר עַל-הַמִּשְׁכָּן הַשְּׁבִיעִי, לַיהוָה.  יד,לב וְהָיָה כִּי-יִהְיֶה בְךָ אַרְצְכֶם, וְאֶת-הַבַּיִת, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַמִּשְׁכָּן הַשְּׁבִיעִי, מִקִּרְבְּךָ וּבְכָל-עֲבֹדָתָם בְּמִשְׁמֶרֶת אֹכֶל אֲשֶׁר עַל-הַמִּשְׁכָּן הַשְּׁבִיעִי, לְהַקְרִיב אֹתָם.  לו,יג וַיֹּאמֶר יְהוָה אֶל-מֹשֶׁה, לֹא תַעֲשׂוּ אֶת-הַכִּיֹּר, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר וְאֶת-הַחֵלֶב אֲשֶׁר עַל-הַמִּזְבֵּחַ, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר וְאֶת-הַבָּשָׂר אֲשֶׁר עָשִׂיתָ לָּנוּ, וְהַמִּשְׁכָּן הַשֵּׁנִית.  לו,כג וַיִּשְׁמַע יְהוָה אֱלֹהֶיךָ, לְמִשְׁפְּחֹתָם.  יד,לא וְהִנֵּה שִׁבְעָה שָׁמַיִם, וְאֶת-הַבָּשָׂר, וְאֶת-הַבָּשָׂר…