[Musik spiller] SPEAKER: Velkommen tilbage, alle. Det er CS50. Og i dag har vi en masse interessante ting at tale om. Men først jeg nødt til at minde dig om et par administrative ting. I denne uge er quiz én, onsdag eller til Yale afsnittet på tirsdage og torsdage, på torsdag. Der er quiz anmeldelser i aften på Yale, 5:30 til 07:00. På Harvard, indspillede de en i går. Og alle kan se, at online. Også denne uge eller begyndelsen af ​​næste uge, vi har vores sidste CS50 foredrag. [Stønner] jeg kender. Det kom så hurtigt. Yale studerende vil have en live foredrag her i jura auditorium på fredag. Der vil være kage. Harvard studerende vil have den sidste foredrag i Sanders på mandag. Der vil også være kage. Også i denne uge på fredag, for dem af jer, der kommer til New Haven, vi har CS50 Expo. Vi har mere end 30 forskellige grupper registreret at vise dig alt fra autonome sejlbåde, til systemer, der genkender digitale portrætter, til computeren musik og computer-produceret musik. Så vær venlig slutte sig til os. Jeg tror, ​​det kommer til at være et godt tidspunkt. I dag, selv om, vi kommer til at fortsætte med at tale om AI, om kunstig intelligens. Og en af ​​de ting, vi vil komme til i dag er ideen om, hvordan man bruge AI til at løse problemer. Nu, som altid, lad os starte med noget simpelt. Og vi kommer til at starte med en simpel idé. Og det er ved hjælp af søgning. Så forestil dig et øjeblik, at jeg har en opgave, som jeg har brug for at udføre. Og jeg vil gerne have, at opgaven automatiseret af nogle software agent. Forestil dig, at jeg forsøger at bestille et sæt på fly fra, lad os sige, Boston til San Francisco. Jeg kunne gå igennem og jeg kunne bruge en af ​​de vidunderlige online-søgning værktøjer, der vil gøre dybest set den samme proces, som vi er kommer til at gå gennem i dag. Men hvis du ikke har det værktøj, hvad ville du gøre? Nå, kunne du se og se og sige, jeg er i Boston. Hvilke flyvninger er tilgængelige for mig? Nu, måske jeg har tre mulige flyvninger ud af Boston der vil passe tiden når jeg har brug for at forlade. Jeg kunne flyve til Chicago. Eller jeg kunne flyve til Miami. Eller jeg kunne flyve til New York. Jeg kunne derefter se fra hver en af ​​disse destination byer og tænke over, hvad steder Jeg kunne muligvis nå fra hver af disse individuelle byer. Så måske fra Chicago, kan jeg få et direkte fly til San Francisco. Det er fremragende. Eller jeg kunne få et fly til Denver. Nu, måske det flyvning til San Francisco er den perfekte løsning for mig, men måske ikke. Måske jeg leder efter noget det er en lille smule billigere eller en lille smule bedre for min tidsplan. Og så kunne jeg se efter, hvad andre muligheder kan være derude. Så jeg kunne se på Denver. Og fra Denver, godt, måske Jeg kan få en flyvning til Austin. Og fra Austin, måske jeg kan få en flyvning til Phoenix, og fra Phoenix til San Francisco. Nu er jeg ikke færdig endnu. Fordi måske er der en direkte flyvning fra New York til San Francisco, der er perfekt for mig. Eller måske er der en flyvning fra Miami gennem Denver, som er meget billigere. Så jeg stadig nødt til at gå. Og jeg stadig nødt til at se på alle dem, byer, som jeg ikke har undersøgt endnu. Jeg er nødt til udtømmende kontrollere alle de muligheder, jeg måtte have. Så fra New York, måske kan jeg få en flyvning til Nashville, og fra Nashville til Austin. Og så ved jeg, hvor jeg er. Og så ved jeg fra Austin, kan jeg flyve til Phoenix, og fra Phoenix til San Francisco. Hvis jeg flyver først til Miami, selv om, måske jeg kan få en flyvning fra Miami til Nashville, eller fra Miami til Austin. Og nu har jeg prøvet alt af mulighederne. Jeg har opbygget denne graf, viser mig alle de mulige ruter at jeg kunne være i stand til at tage. Når vi repræsenterer disse former for problemer, Vi kommer ikke til at repræsentere dem eksplicit som denne graf, fordi det grafen ikke repræsenterer historien om, hvor vi har gået. Vel vidende, at jeg fløj fra Phoenix til San Francisco ikke fortælle mig, om jeg kom via Nashville, eller via Denver, eller via Miami. Så hvad jeg vil gøre i stedet er Jeg tager det samme problem, og jeg vil repræsentere det som et træ. Og ved roden af ​​træet, på top, jeg vil sætte det sted, jeg startede, Boston. Og fra Boston, vil jeg se på alle de mulige placeringer at jeg kan rejse til. Tja, i dette tilfælde havde jeg tre, Chicago, New York, og Miami. Og så vil jeg udforske hver af disse børn i træet. Fra Chicago, så jeg at jeg havde to flyvninger. Jeg kunne flyve direkte til San Francisco eller til Denver. Nu San Francisco, det er mit mål. Det er min destination. Det kommer til at være et blad af dette træ. Det vil sige, jeg aldrig kommer til at gå et eller andet sted efter San Francisco. Fra Denver, selv om, Jeg kan flyve fra Denver til Austin, fra Austin til Phoenix, og fra Phoenix til San Francisco. Og nu igen, har jeg nået et blad. Jeg kunne derefter gå tilbage til den næste by, som jeg ikke har fuldt udforsket. Det ville være New York, gå tilbage til toppen af ​​mit træ, komme ned til New York. Fra New York, kan jeg flyve til Nashville, fra Nashville til Austin, fra Austin til Phoenix, og fra Phoenix til San Francisco. Og endelig, en by, jeg har ikke kigget på endnu, Miami. Nå, fra Miami jeg sagde, jeg havde to muligheder, Nashville eller Austin. Hvis jeg flyver til Nashville, ja så flyver jeg fra Nashville til Austin, til Phoenix, til San Francisco. Hvis jeg flyver til Austin, jeg flyver Austin, til Phoenix, til San Francisco. Og nu har jeg et træ. Det er en komplet træ. Det er alle de muligheder og alle de stier, som jeg kunne tage. Det vil sige, hvis jeg begynder på roden af ​​træet øverst og jeg gå ned til en af ​​de blade, det fortæller mig ikke alene hvor jeg har tænkt mig at ender, San Francisco, men det fortæller mig den rute, som Jeg har brug for at tage for at komme dertil. Nu, hvor en af ​​disse er den bedste? Nå, ikke noget om dette problem endnu fortæller mig hvilken af ​​dem er den bedste løsning. Måske jeg bekymrer mest om hvor meget tid jeg er i luften, eller den afstand, jeg flyver. I så fald Chicago til San Francisco kan være den korteste antal af miles i luften. Måske jeg mig om omkostninger. Og vi ved alle, direkte flyvninger er normalt dyrere. Så måske hvis jeg tager denne slags baglæns rute gennem Miami, Nashville, Austin, Phoenix, måske derefter Jeg får en lavere pris. Men jeg kunne optimere på enhver kriterier, som jeg holder af. Hvem har det bedste i fly Wi-Fi, eller som lufthavne har den bedste mad til rådighed. Og hver af dem, måske give mig en anden løsning at jeg ser som værende den bedste. Disse former for problemer, hvor vi skal hen at opbygge denne træ muligheder, og derefter se på hver af dem, individuelle stier, og undersøge hvilke af disse honorerer et kriterium for os, vi kommer til at kalde disse søgning problemer. Og vi har masser af algoritmer, hvoraf nogle vi har set allerede, til at gå og udforske disse træer. Vi kunne gøre det på den måde, at jeg lige gjorde, en dybde-først søgning, gå ned så langt som vi kan, indtil vi ramte et blad, og så kommer tilbage, og gå tilbage ned. Eller vi kunne gøre, hvad der er kaldet bredde-først søgning. Vi kunne udvide alt foroven, og derefter alt én linje nedenunder, og derefter alt én linje under det. Disse søgetræer er grundlæggende for AI. Men de har ikke helt få det rigtigt hele tiden. I virkeligheden, i en masse af tilfældene at vi virkelig bekymrer sig om, vi ønsker at opbygge et træ, men vi gør faktisk ikke komme til at gøre alle de beslutninger. Det er situationer kaldes kontradiktorisk søgning, også kendt som, hvordan man skriver spil at spille systemer og blive betalt for det. Men disse er den slags af systemer, hvor jeg kan komme til at vælge, når jeg går fra Boston, hvilken by jeg går til næste. Men efter det, kan en anden får til at gøre beslutningen om, hvor jeg flyver. Så for at bygge disse slags strukturer, vi er nødt til at tage en lidt anderledes tilgang til det. Vi kommer ikke til at være i stand til bare søge gennem træet længere, fordi vi ikke er den, der er i kontrol hver af disse beslutningspunkter. Så lad os forestille os en simpel spil som Kryds og bolle. Jeg kunne starte med en helt blank board. Og i tic-tac-toe, X kommer til at spille først. Og så jeg kunne tænke på alle de mulige træk, at X kunne gøre. Og hvis jeg er den ene spiller X, det er fantastisk. Jeg har ni mulige bevæger sig, at jeg kan gøre. Jeg kunne sætte et X i et af disse ni positioner. Og derefter fra hver af dem, I kunne forestille sig, hvad der sker næste. Tja, i dette tilfælde, den anden spiller ville komme til at tage en tur. O ville komme til at tage en tur. Og fra hver af disse, der ville være otte forskellige steder at O kunne placere deres markering. Lad os sige, at jeg besluttede, at jeg var kommer til at sætte et X i midten. Der altid ser ud som en god åbning flytte. Jeg kunne se på under det, den otte mulige træk som O gør. Nu, hvis jeg spiller X, det er vidunderligt. Jeg får at vælge, hvilken en jeg gå til, den ene i midten. Men nu O får lov til at vælge. Og jeg har ikke kontrol i løbet af denne afgørelse. Men fra hver af disse mulige bestyrelsesposter, Der er så en anden sæt af muligheder. Når det kommer til at være Min vende igen, ville jeg komme til at vælge og sige, ja, hvis O bevæger sig ind i, ja, den midterste plet på venstre, derefter Jeg har et sæt af muligheder hvor jeg kan tage mit næste træk. Fra dem, kunne jeg overveje alle mulighederne under dem. Og så O ville få at vælge mellem disse. Og jeg kunne holde bygning denne træet ud, indtil jeg kom til det punkt, hvor enten en person vinder game--, der er fik at blive betragtet som en blad node-- eller bestyrelsen er helt fyldt og ingen har vundet. Og der er også kommer til at være et blad node. Det kommer til at være en uafgjort. Men det tricky ting med dette er hvis dette var blot en regelmæssig søgning problem, ville jeg være i stand til siger, godt, bør X gå her. Og O skal gå vejen derovre. Og så X skal gå over her. Og så O skal gå vejen derovre. Og så X kan få tre i træk, og jeg vinder. Og spillet ville være over i fem bevæger sig, tre for mig, to for min modstander. Men jeg tror ikke altid får at vælge det. Så i stedet, hvad vi er nødt til at gøre er vi vil have at have en ny strategi. Og den strategi, som spil-playing algoritmer ofte bruger er det, der hedder minimax. Den centrale idé i Minimax er, at vi er kommer til at vælge den bevægelse, der giver vores modstander den værst tænkelige sæt af bevæger sig, at de kan gøre. Det gør ikke mig noget godt til at vælge et træk, hvor Jeg kan være i stand til at vinde efter at fordi min modstander ikke er vil give mig den chance. De kommer til at vælge nogle frygtelige resultat for mig. Så jeg har tænkt mig at gøre flytte der tvinger min modstander at gøre noget bedre for mig. Okay. Lad os se, hvordan det udspiller sig. Så her er vores algoritme i pseudokode. Vi kommer til at generere hele spillet træ. Vi kommer til at bygge hele strukturen. Og så vil vi gå igennem. Og i bunden ved hver af de terminal noder, på hvert af de blade, vi vil vurdere, hvordan værdifulde er, at for mig? Og vi vil værdi ting, er godt for mig at være positiv. Ting, der ikke godt for mig vil være mindre positiv eller nul, eller endog negativ. Så i tic-tac-toe, måske en sejr for mig er god. Det er en en. Og et slips er nul. Og noget, der er et tab for mig, måske det er en negativ. Alle, der betyder noget, er, at jo bedre det er for mig, jo højere score den modtager. Fra disse muligheder på bund, så vil vi filtrere opad. Og når det er min chance for at vælge blandt et sæt af alternativer, Jeg vil vælge den, der er fik den højeste score. Og når det er min modstandere tur til at vælge, Jeg vil antage, at de vil vælge den med den laveste score. Og hvis jeg gør det hele vejen op til toppen af ​​træet, Jeg har valgt en vej, der giver mig det bedste resultat, som jeg kan få, under forudsætning af, at min modstander gør alle de rigtige træk. Okay, så lad os se dette i aktion først. Og så vil vi faktisk se på koden til det. Så forestil jeg har denne store træ. Og nu er jeg ikke spiller Kryds og bolle. Jeg ønskede at give dig noget lidt rigere. Så jeg har fået nogle spil, hvor der er mange forskellige scoringer at jeg kunne have i slutningen. Og så jeg bygge denne komplette træ. Og jeg kommer til at bevæge sig først. Jeg er ved roden af ​​træet. Og jeg får at vælge at-- så jeg får at maksimere tværs af denne første knudepunkt. Og så min modstander får lov til at gå. Og så får jeg at gå en gang mere. Så ned på bunden, jeg har et sæt af muligheder, som jeg kan vælge fra, forskellige terminal tilstande af spillet. Hvis jeg er fastsat i nævnte yderste venstre hjørne, og jeg kan se, at jeg har fået et valg mellem en otte, syv og en to, godt, jeg er den, der får lov til at vælge. Så jeg har tænkt mig at vælge den bedste af dem. Jeg har tænkt mig at vælge de otte. Så jeg ved, at hvis jeg nogensinde komme ned til det punkt, Jeg vil være i stand til at få det otte point. Hvis jeg ender på det næste punkt bliver den næste node i, en ni, en en eller en seks, ja, jeg er kommer til at vælge den bedste af dem. Jeg vil vælge de ni. Hvis jeg har et valg mellem to og fire, og en, Jeg vil vælge de fire, det højeste. Nu, hvis jeg ser på det niveau, ovenstående, min modstander er den man får til at træffe dette valg. Så min modstander får til vælger, ønsker jeg at give ham de ting, der sker at få ham otte point, eller skal jeg give ham det, som er vil give ham ni punkter, eller de ting, der sker at give ham fire point? Og min modstander, bliver rationel, går at vælge den mindste af disse, kommer til at vælge de fire. Og jeg kan gøre dette gennem hele træet. Jeg kan gå ned til det midterste sæt af tre. Og jeg kan vælge mellem en, tre og fem. Og jeg får at vælge. Så jeg vælger en fem. Jeg kan vælge tre, ni eller to. Jeg får at vælge, så jeg vælger ni. Seks, fem, eller to, vælger jeg. Jeg får at vælge de seks. Niveau over det, som sætter til at vælge? Hvem får til at vælge? Den anden fyr, min modstander. Så de vælger fem, ni eller seks, hvilken? PUBLIKUM: De fem. SPEAKER: De vælger de fem. De får at vælge den mindste. Og derefter den sidste, vælge en, to eller tre. Jeg får at vælge, så jeg vælger tre. Ni, syv, eller to, jeg vælger ni. Og 11, seks eller fire, jeg vælger 11. Min modstander derefter vælger tre, ni eller 11, vælger minimum. Han giver mig en tre. Og så endelig på toppen af træet, jeg får at vælge igen. Og jeg kommer til at vælge mellem en fire, fem eller tre. Så jeg tager fem. Hvis jeg kom til at styre alt, jeg havde tage den vej, der førte til 11. Men jeg kan ikke komme til at træffe dette valg. Hvis jeg går den vej. Min modstander vil tvinge mig ind valget, der fører til en tre. Så det bedste, jeg kan gøre, er at tage det midterste gren, træffe dette valg, der er i sidste ende kommer til at føre mig til fem point. Det er, hvad minimax gør. Okay. Lad os tage et kig på det. Så her i CS50 IDE er et program, implementerer minimax at spille tic-tac-toe. Vi kommer til at bygge en repræsentation. Vi kommer til at have to opponent-- eller to spillere, vores computer afspiller og en menneskelig spiller. Spiller nummer et vil spille den O. Det bliver maskinen afspilleren. De får at flytte sekund. Og den anden spiller, vores menneskelig spiller, vil være X. Og for at gøre mit liv en lidt simpel, jeg har tænkt mig til at mærke, at spilleren negativ. Så jeg kan bare formere af negativ at bytte mellem en spiller og den anden. Okay, så lad os tage et kig på hvad vi egentlig vil gøre. Vi kommer til at definere vores bord. Det kommer til at være, godt, vi kommer at lade det være tre gange tre, eller vi kan endda spille fem med fem eller syv af syv Kryds og bolle, hvis du ville lignende, baseret på nogle dimension D. Og vi vil have et par af hjælpefunktioner der vil gøre ting som initialisere screen-- eller ked af det, initialisere vores variabler, rydde skærmen, tegne brættet på skærmen, en, der kontrollerer en bestyrelse at se, hvorvidt der er en vinder, en, analyserer gennem kommandolinjen, bare for at hjælpe, en, der læser i input, og en funktion kaldet minimax. Og det er den ene vi interesserer mest om. Men lad os først se på de vigtigste. Hvad gør vi? Nå, vi kommer til at parse vores kommandolinjen, lige læst ind og se, hvad dimension bord vi gerne vil have. Vi vil initialisere vores bord. Og så vil vi indtaste én store vilde loop, gentagne gange acceptere flytter indtil spillet er vandt, eller der er ingen træk tilbage. Hver gang vi går gennem denne loop, vil vi rydde skærmen. Vi vil trække brættet på skærmen. Og vi er bevidst slags abstrahere disse væk som subrutiner, således at vi ikke behøver at bekymre dig for meget om detaljerne i, hvordan de sker. Du får koden senere i dag. Og hvis du ønsker at se gennem og finde ud af, du kan se dem alle. Men vi vil trække en bestyrelse på skærmen. Og så vil vi kontrollere og se, har vi en vinder? Har nogen vundet dette spil? Hvis de har, vil vi udskrive ud en sejr budskab. Og vi vil afslutte spillet. Vi vil også kontrollere og se, om der er en uafgjort. Det vil være let at se, om der er en uafgjort. Det betyder, at alle rum er fuld, men der har ikke været en vinder endnu. Vi kan erklære en uafgjort og være færdig. Så den virkelige meat-- hvis Det er en maskine-afspiller, vi vil tillade, at Maskinen afspiller for at søge ved at bruge denne minimax algoritme, for at finde det bedste spil, at det kan. Og så vil vi sætte det træk op. Ellers, hvis det er en menneskelig spiller, vi vil læse nogle input fra menneske. Og så om det er den menneskelige afspiller eller maskinen spiller vi vil gøre et par lidt stumper af fejlkontrol, sørg for at det holder sig inden for grænserne af de faktiske dimensioner af bestyrelsen at vi har, skal du sørge for at denne plads er tom, at ingen os sætte en brik i der allerede. Og så vil vi bare sætte en brik på brættet, ændre afspilleren til næste lag, og tilvækst, hvor mange flytter være sket. Det er den vigtigste loop for vores Kryds og bolle spil. Minimax er altså præcis algoritmen, som vi før. Det eneste tilpasning, vi har gjort, så vi kan spille højere dimensionelle brædder er vi har holdt denne ekstra parameter kaldet dybde. Og dybde bare siger, hvis jeg søger nedad gennem det træ og jeg får så langt ned ud over en vis grad dybde at jeg bare ikke ønsker til at gå videre, Jeg har tænkt mig at stoppe og bare evaluere bestyrelsen på det tidspunkt. Jeg vil kontrollere og se, om der er en vinder. Hvis der er en vinder, jeg returnere dem. Ellers vil jeg gå gennem en løkke. Og jeg vil sige, for alle De mulige placeringer at jeg kunne eventuelt tage som min flytte, vil jeg opbygge en hypotetisk bestyrelse, omfatter min Flyt på denne bord, og derefter kalder rekursivt minimax. Hvis det er min flytte, får jeg at finde den en, der har fået den største score. Hvis det er min modstanders træk, vi finder den, der har fået den mindste score. Og alt andet er bare journalføring. Okay, så lad os se denne kørsel. Faktisk, måske vi kan få et par frivillige til at komme op og spille Kryds og bolle. [Uhørligt] en, og én mere, to, lige der. Kom op. Så lad os gå videre og genstarte dette fuldstændigt. Så hej. PUBLIKUM: Hej. SPEAKER: Hvad er dit navn? PUBLIKUM: Gorav. SPEAKER: Gorav. PUBLIKUM: Jeg er Layla. SPEAKER: Og Layla, og Layla, undskyld. Kom op. Gorav, vi vil have dig gå først. Og jeg har tænkt mig at bede dig om at være en ikke frygtelig god Kryds og bolle-afspiller. OK, så alt presset er slukket på dig. Lad os se, selv om, at vores maskine Spilleren kan faktisk gøre noget smart. Så gå videre. Du kommer til at skrive, hvor koordinere du gerne vil sætte dit X i. A0, OK, og maskinen er gået højre væk og sætte sit præg i A1. Sæt O på brættet. Okay, nu gå videre. Hvor vil du gerne hen? C2. Vores maskine spiller har taget den midterste firkant, blokeret dig. Så det var en god, smart ting for den at gøre. Du har blokeret det. Det er fremragende. Det tager om hjørnet er der. Og det kommer til at tvinge dig til tage en sidste plads, B0. Og spillet ender i en uafgjort. Men det spillede en rimelig spil mod dig, ikke? Okay, tak meget, Gorav. [BIFALD] Okay, Layla, vi vil op spillet på dig her. PUBLIKUM: Åh, stor. SPEAKER: Vi vil give du fire af fire Kryds og bolle. Nu, i fire af fire, er du nødt til at vinde med fire i træk, ikke tre i træk. Og det er alle dine. Så Layla tog D1. Vi vil nu følge vores computer spiller her. Tre af tre Kryds og bolle er den slags af ting, der er nemt for os alle. Men det er stadig rart at se computer spiller gøre smart træk. Fire af fire bliver til være lidt tricky. Godt gjort. Okay, så Layla er færdig fra. Åh, og vi bør være endt der. Men lad os gøre én mere op her. Så Layla, tak. Godt gjort. [BIFALD] Så vores Kryds og bolle spiller går igennem og finder steder, løser dem ved hjælp af denne minimax. Og jeg havde en dybde indstilling på det, så det ikke ville løbe for hurtigt, som sandsynligvis er hvorfor Layla var i stand til at gå pænt i god som hun gjorde, og gjorde meget godt. Men disse systemer, der bare gå igennem og brute force gå dybere, og dybere, og dybere, og holde finde en løsning at de har brug for, den slags systemer er ganske vellykket på disse, godt, standard brætspil. Og i virkeligheden, hvis vi ser på et tre med tre Kryds og bolle spil, dette er dybest set et løst problem. Og det er en vidunderlig diagram fra Randall Munroe på XKCD, viser hvilke flytter du bør tage, givet din modstanders træk. Det er noget, vi kunne nemt angive forvejen. Men hvad sker der, når vi kommer til mere komplekse spil, mere komplicerede spil, hvor der er større boards, mere muligheder, dybere strategi? Det viser sig, at denne brute force søger stadig gør rimeligt godt, bortset fra når du kommer til det punkt hvor det træ er så stort at du ikke kan repræsentere det hele. Når du ikke kan beregne hele træet, når du ikke kan gå fremad og skub dig selv til det punkt, hvor du har fået hele træet i hukommelsen, eller om du kan få det i hukommelsen og det vil bare tage dig alt for lang tid at søge igennem det, er du nødt til at gøre noget smartere. For at gøre det, du nødt til at gøre to ting. Først skal du nødt til at finde nogle måde at begrænse din dybde. Tja, det er OK. Vi kan finde nogle nice, minimum og sige, du kan kun gå så dybt. Men når du gør det, det betyder at du har disse delvist ufuldstændige boards. Og du skal vælge, kan jeg godt lide dette delvist ufuldstændige bord, eller det delvist ufuldstændige board? Og på vores fire af fire Kryds og bolle spil, vores computer-spiller kom ned til bunden, og det sagde, Jeg har to forskellige bestyrelser. Hverken det ene er en win. Hverken det ene er et tab. Hverken den ene er en uafgjort. Hvordan vælger jeg imellem dem? Og det havde ikke en smart måde at gøre det på. Vi ser denne form for evaluering sker hele tiden som vi får i mere komplekse spil. Skak er et godt eksempel. I skak, vi har, først og fremmest et større bord. Vi har langt flere stykker. Og placeringen af ​​disse stykker og den måde, disse stykker bevæger er kritisk vigtigt. Så hvis jeg vil bruge minimax, Jeg har brug for at være i stand til at specificere og sige, dette board, hvor ingen har vundet eller tabt endnu, er på en måde bedre end dette andet bord, hvor ingen har vundet eller tabt. For at gøre det, kan jeg gøre ting som jeg måske bare tælle, hvor mange stykker har jeg og hvor mange stykker har du? Eller jeg kan give forskellige stykker forskellige punkter. Min dronning er værd 20 point. Din bonde er værd ét punkt. Hvem har flere point i alt? Eller jeg kunne overveje tingene lide, hvem der fik bedre bestyrelsen stilling? Hvis tur er det næste, noget, jeg kan behøver at vurdere mere præcist hvilke af disse muligheder er bedre uden udtømmende overvejer enhver bevægelse, der kunne komme efter det. Nu for at gøre dette arbejde, en af ​​de ting, der er kommer til at blive virkelig vigtigt for os er ikke bare bevæger sig lige ned til en bestemt dybde grænse, men at kunne sige, en af ​​disse ideer, som jeg har, er så dårlig, at det er ikke værd at overveje alle de mulige måder at tingene kan gå fra slemt til værre. For at gøre dette, vil vi tilføje i minimax et princip kaldes Alph-beta. Og alfa-beta siger, hvis du har en dårlig idé, ikke spilde din tid forsøger at finde ud af, præcis hvor slemt det er. Så her er, hvad vi vil gøre. Vi kommer til at tage det samme principper, som vi havde før, den samme minimax typen søgning, kun er vi vil holde styr, ikke blot for faktiske værdier, som vi har, men vi vil holde styr på den bedst mulige værdi, som jeg kunne få, og det værst tænkelige resultat jeg kunne have. Og helst det værst tænkelige ting ser sandsynligt, Jeg vil opgive den del af træet. Og jeg vil ikke engang gider ser på det længere. Okay, så forestille sig, at vi starter med samme nøjagtige spil træ. Og nu vi kommer til at gå ned igen, hele vejen ned til den nederste venstre hjørne. Og i den nederste venstre hjørne, vi ser, og vi vurderer dette board. Måske er det en fire af fire Kryds og bolle bord, eller måske er det et skakbræt. Men vi ser på det, og vi evaluerer det, og vi får en værdi på otte. På det tidspunkt ved vi, at vi kommer til at få mindst otte point fra denne nederste beslutning. Det er ligegyldigt, hvad den anden to er, at syv og to. De kunne være nogen værdier de ønskede at være. Vi kommer til at få på mindst otte point. Okay, men vi kunne gå videre og kontrollere. Måske er en af ​​dem bedre end otte. Vi ser på de syv. Er det bedre end otte? Nej, det ikke ændre vores mening overhovedet. Vi ser på de to. Er det bedre end otte? Nej, det ikke ændre vores mening overhovedet. Så nu ved vi, at vi har opbrugt alle de muligheder der. Vi kommer ikke til at få noget bedre end otte. Vi kommer til at få præcis otte. Og så vi ændre det node og sige, der nu er en sikkerhed. Vi går et niveau op over det. Og nu ved vi noget om det minimering niveau. Vi ved, at vi aldrig kommer til at få mere end otte point, hvis vi går ned den retning. For selv om de, to andre grene vise sig at være fantastisk og værd tusindvis af point hver, vores modstander vil give os den minimum og give os de otte. Okay, godt, lad os se. Vi vil holde gå den vej. Vi går ned til midten til venstre. Vi ser ned, og vi se, at der er en ni. Vi ved, at vi vil få mindst ni punkter ved at gå ned at midterste vej. Og på dette tidspunkt, kan vi bare holde pause. Og vi kan sige, se, jeg ved i niveauet ovenfor, Jeg har tænkt mig at få mere end otte peger ved at gå ned denne retning. Men hvis jeg gik ned midt vej i stedet for venstre bane, Jeg ville få mindst ni point. Min modstander er aldrig vil lad mig gå den midterste sti. De får at vælge. Og de kommer til at vælge den vej til venstre mod otte, snarere end på midten mod hvad der er mindst ni point. Så på det tidspunkt, vil jeg stoppe. Og jeg vil sige, ved du hvad? Jeg behøver ikke at se nogen mere ned i den retning. Fordi jeg aldrig kommer til at blive der. Jeg kan springe over, at man, og jeg kan springe over, at seks, fordi der er aldrig kommer til at ske. Så jeg vil gå ned, og jeg vil overveje næste mulighed. Jeg går ned der, og jeg siger, jeg ser en to. Jeg ved, hvis jeg får til her, er jeg kommer til at få mindst to. OK. Jeg holde ud. Jeg ser en fire. Jeg ved, jeg har tænkt mig at få mindst fire. Der er stadig en masse mellem fire og otte, selv om. Så jeg holde ud. Jeg ser ned og jeg ser der er én. Okay, jeg vide, om Jeg gå denne vej, Jeg har tænkt mig at være i stand til at vælge de fire. Hvad er min modstander kommer til at gøre? Mellem noget, der giver mig otte, noget, der giver mig fire, og noget, giver mig mindst ni, godt, han vil give mig de fire. Og jeg ved nu på helt i top, jeg har tænkt mig at kunne få mindst fire point ud af dette spil. Hele ideen med alfa-beta er at afskære dele træet, så at jeg ikke se på dem længere. Men det ligner stadig jeg har været ser på en masse af træet. Lad os holde gå ned. Vi vil gå ned i næste nu. Nede i bunden, jeg finder en en. Jeg ved, jeg har tænkt mig at få mindst én. Jeg holde søger. Jeg finder en tre. Jeg ved, jeg har tænkt mig at få mindst tre. Jeg holde ud. Jeg finder en fem. Jeg ved, jeg har tænkt mig at få fem hvis jeg får ned i den vej. Og jeg ved også, så at min modstander, hvis jeg vælge midten af de tre store valg, han vil give mig noget, der er fem eller mindre. OK. Jeg kan holde vil der. Jeg kan kigge ned og jeg kan sige, hvad jeg vil at få, hvis jeg går ned midt vej? Jeg har tænkt mig at få, ja, tre der. Jeg har tænkt mig at få noget der er mindst tre. Der er stadig ting mellem tre og fem, så jeg holde søger. Åh, en ni, jeg vil helt sikkert tage det over en tre. Jeg har tænkt mig at få mindst ni hvis jeg går ned, at midterste sti. Nu er min modstander stopper og siger, se, der er ingen mening længere. Jeg ved, at min minimering modstander, han er kommer til at give mig de ting, der er mindre end eller lig med fem, snarere end de ting, der er større end eller lig med ni. Jeg stoppe. Jeg ser ikke nogen mere ved det. Jeg holde ud. Jeg ser ned på denne ene. Ned til bunden, finder jeg en seks. Jeg ved, jeg har tænkt mig at få mindst seks. Og hvad kan jeg gøre? Jeg kan stoppe. Fordi der er et valg mellem noget, der er mindst seks og noget, der er mindre end fem, han er kommer til at give mig de ting der er mindre end fem. Og nu ved jeg, jeg har tænkt mig at få præcis dette valg. Jeg har tænkt mig at få at fem valg. Jeg går tilbage op til toppen. Som jeg vil vælge mellem noget der er større end eller lig med fire, eller noget, der er lig med fem? Jeg har tænkt mig at tage noget der er mindst fem. Jeg gå ned den sidste vej, alt vejen ned til bunden. Der er en en. OK, i det mindste jeg har tænkt mig at få et point. Jeg holde ud. To, åh, det er bedre end en. Jeg har tænkt mig at få mindst to. Jeg finder en tre. Jeg ved, jeg har tænkt mig at få tre. Og det punkt ovenstående, min modstander går at give mig noget, der er mindre end eller lig med tre. Og nu kan jeg stoppe. Fordi i valget mellem mig bliver kunne få en fem og min modstander giver mig noget mindre end tre, Jeg er altid kommer til at tage, at fem. Så jeg ikke vurdere, at nederste del af træet overhovedet. Nu kan det virke mindre. Men når små stumper af aritmetik, større end og mindre end, kan skæres væk hele dele af denne eksponentielt voksende træ, der fører til en enorm mængde af opsparing, opsparing der er store nok, at jeg kan begynde at spille konkurrencedygtige ved mere komplekse spil. Okay, hvis vi ser på størrelsen og kompleksiteten af ​​de forskellige spil, Kryds og bolle var vores nemme eksempel. Vi har fået et lille bord, tre med tre. Vi får højst et gennemsnit på omkring fire forskellige valg som vi går igennem spillet. Vi har et sted omkring 10 til femte mulige forskellige blade. Og opbygge en tic-tac-toe afspiller, godt, vi bare gjorde det. Det er nemt. Hvis vi går op til noget mere kompleks, som Connect Four. Kan du huske dette spil, hvor du taber de små tokens i? Det er en seks af syv bord, ikke så meget større, stadig har omtrent samme forgrening faktor som Kryds og bolle. Jeg har omkring fire valgmuligheder hvor jeg kan sætte tingene i. Men nu, jeg har fået en masse mere fører, 10 til 21. magt. Det er noget, der er nemt nok, at vi løser det med det samme. Brikker, mere complex-- dig fik en otte med otte bord. Du er kun på halvdelen af dem når som helst, selv om. Du har fået en forgrening faktor, der er ca. 2,8. Tja, vi har fået et par bevæger du kan tage. Du har fået omkring 10 til 31. blade, større, og større, og større rum. Som jeg er nødt til at søge gennem disse større og større rum, det er, når ting som alfa-beta og at kunne skåret væk hele brancher bliver afgørende. Nu var let nok i 1992 brikker. Et edb-program kaldet Chinook slog verdens brikker mester, Marion Tinsley. Og siden da, nej menneskelig mester spiller har været i stand til at slå de bedste beregningsmæssige systemer. Hvis vi ser på noget som skak, nu igen, har vi en otte med otte bord. Men vi har meget mere kompleks stykker, meget mere komplekse bevægelser. Vi har en forgrening faktor på ca. 35, 35 mulige træk i gennemsnit at jeg kan tage, og en stat rum, et antal blade, der er vokset til 10 til 123. strøm, enorme antal af muligheder. Selv stadig moderne processorer er i stand til at gøre dette med succes. I 1995 og derefter i 1997, en computer program kaldet Deep Blue bygget af IBM der kørte på en kæmpe supercomputer slå den nuværende verdensmester, Garri Kasparov. Det var et vendepunkt. I dag er dog, at samme behandling magt sidder på min MacBook. Behandling hastighed holder bliver hurtigere og hurtigere. Vi kan evaluere mere og mere bestyrelser hurtigere og hurtigere. Men mere vigtigt, har vi bedre evaluering funktioner og bedre beskæring metoder. Så vi kan søge i plads mere komplekst. Den største af bestyrelsen spil, som vi kan tænke på, noget lignende Go, der er fik en 19 med 19 bord, nu pludselig er vi forbi det punkt hvor beregningsmæssige systemer kan vinde. Der er ingen beregningsmæssige systemet derude der kan slå en professionel Go-afspiller. Det bedste systemer i dag rang det om slags god amatørniveau. Så der er stadig ganske lidt ud der, at du ikke kan komme til endnu. Okay, disse traditionelle brætspil, disse typer af systemer, hvor vi bygge denne minimax, uanset om det har fået alpha-beta eller ikke, disse algoritmer arbejder fordi der er visse begrænsninger. Vi har perfekt information om verden. Vi ved, hvor alle brikkerne er. Verden er statisk. Ingen får at flytte stykker rundt mens jeg er sidder der tænker, at tage min tur. Der er en handling plads, der er diskret. Jeg kan sætte min bonde her, eller jeg kan sætte min bonde her. Jeg er ikke tilladt at sætte min bonde på linien mellem de to felter. Og endelig de handlinger, er deterministisk. Jeg ved, at hvis jeg siger, tårn til ridder tre, mit tårn kommer til at ende på ridder tre, så længe det er et gyldigt træk. Der er ingen usikkerhed om. Nu, da jeg går til mere forskellige former for spil, vi nødt til at bryde disse antagelser. Hvad hvis jeg går til noget Ligesom klassiske videospil? Her er et udvalg af video spil fra Atari 2600. Hvad har jeg deroppe? Jeg har Frogger, Space Invaders, faldgrube, og Pac-Man. Hvilke typer af miljøer har jeg her nu? Hvilke af disse antagelser skal jeg nødt til at bryde? Tja, det afhænger af spillet. Jeg kunne spille skak på 2600, og det ville være ligesom det var før. For de fleste af disse systemer, der er fuldstændig viden om verden. Der er helt deterministiske handlinger. Men som regel, verdens ikke længere statisk. Det vil sige, mens jeg sidder der venter, er noget bevæger sig. De spøgelser kommer til at få mig. Skorpionen følger mig nedenunder. Space Invaders er kommer tættere og tættere. Hvor godt kan vi gøre mod disse? For et par år siden, Google havde et projekt kaldet DeepMind, hvor de trænede en computer program at spille Atari 2600 spil. Og hvis du tror, ​​det er ikke alvorligt virksomhed, resultaterne af deres undersøgelse blev offentliggjort i Nature, så kun om så god en publikation som du overhovedet kan få. Og her er, hvor godt de udføres. De har en algoritme, der sad og så bare skærmen indgange. Det fik ingen instrukser overhovedet om reglerne i spillet. Og det var meningen at regne ud, baseret sin score, hvor godt det gjorde. Det var et system, der brugte noget kaldes forstærkning læring. Det vil sige, det så på sin score. Og hvis det fik en god score, er det sagt, Jeg skal huske disse ting. Og jeg skal gøre dem igen. Og hvis det fik en dårlig score, er det sagt, Jeg skal ikke gøre disse ting igen. Dette er den ydelse, af disse uddannede systemer lov til at spille for en par timer på hvert spil, sammenlignes med professionelle gamere. Så for alle de spil, der er til venstre side af denne linje, denne selv-uddannede computerprogram udkonkurrerede de professionelle gamere. Og for alt til rigtige, professionelle gamere var stadig bedst. For noget, der vidste intet om reglerne, at vidste intet om strukturen af spil, det er imponerende præstation. Og det er det, vi er i stand til at gøre i dag. OK, du siger, men hvis vi tænke over AI i spil, normalt vi tænker på ting, vi kan faktisk sætte sig ned og spille mod. Hvis jeg sætter mig ned, og jeg spiller StarCraft, eller jeg spiller gratis Sieve, computerens modstander er den person, der kontrollerer Zerg, eller styring af en anden kultur. Hvordan disse spillere faktisk finde deres bevægelser? Nå, er disse spil struktureret meget på samme måde som vores brætspil, disse spil, at vi vil kollektivt kalder fire X Games, udforske, expand-- glemmer dem. Hvad er de? Udforsk, udvide, og slukke, Jeg mener, er den sidste. Men de er dybest set udforskning og erobre spil. Typisk computer modstander der har begrænsede oplysninger. De ved ikke præcis, hvad der er foregår bag den tåge af krig. De får ikke at se, hvad du har i din beholdning. Der er et miljø, der er dynamisk. Alt ændrer sig hele tiden. Du får ikke at sidde og vente med at tage din flytning. Men de fleste ting er stadig diskrete. Jeg nødt til at sætte min by her. Eller jeg nødt til at sætte min by her. Og alt er deterministisk. Når jeg siger, flytte min enhed her, min enhed bevæger sig her, medmindre en hindring pludselig kommer i spil. Nu, det er ikke alle computer spil, der er derude i dag. Hvis jeg går og jeg spiller en første person typen spil, noget som Thief eller Fallout eller Skyrim eller halogen, nu Jeg har computer modstandere der er derude, der har en helt anden situation. De har igen begrænset information. De kan kun se en visse synsfelt. Miljøet er stadig dynamisk. Tingene ændrer sig hele tiden. Men nu har jeg en meget mere kontinuerlig indsats plads. Jeg kan bare kigger en lidt ud af døråbningen. Og nogle spil, min handlinger er stokastisk. Jeg kommer til at forsøge at hoppe over muren, men jeg har fået en chance for at fejle. Disse typer af spil er at komme tættere og tættere på den slags controllere at vi bygger i robotteknologi. I robotteknologi, vi er nødt til at påtage sig at vi har begrænset information. Vi har sensorer, fortælle os om verden. Vi har en altid skiftende, dynamisk miljø. Vi har en verden, hvor pladsen er kontinuerlig snarere end diskret. Og vores handlinger, når vi forsøger dem, har en chance for at fejle. Og i virkeligheden, moderne spil controllere til din Halo modstander, eller for de NPC'ere i Skyrim, dybest set køre små robotteknologi arkitekturer. De fornemme verden. De bygge en model af verden. De beregne baseret på et sæt af mål, som de gerne vil udrette. De planlægger foranstaltninger baseret om, hvad de ved. Og dem er nøjagtig de samme typer af systemer, som vi bygger i robotteknologi. Så disse arkitekturer, til samle dette tilbage, er ofte helt den samme. Så lad os se, om vi kan se, at. Lad os gå tilbage til vores Kryds og bolle eksempel. Og jeg har tænkt mig at stille et par min post-docs for at komme op og hjælpe mig. Så Chen Ming, og Alessandro, og Olivier, hvis du fyre ville komme op. Og jeg har tænkt mig at brug et par frivillige OK, så jeg en hånd op til højre der i midten. Lad mig tage en mere, nogen yderligere i ryggen måske. Okay, derovre. Kom op. Okay. Så lad os tage den dækning ned. Og hvis du fyre ville komme ret tilbage omkring her for mig, fantastisk. Så dette er en robot kaldet Baxter. Og Baxter er en robot, der er en kommerciel platform, designet af et selskab kaldet Rethink. Og denne robot er konstrueret til mindre produktion. Men i dag vil vi bruge den til at spille tic-tac-toe. Nu, denne robot er også noget det er relativt enestående. Fordi hvis jeg stod overalt tæt på en standard fabrik automatisering systemet, ville jeg være i meget alvorlig fare for at blive skadet. Baxter er imidlertid designet til at være relativt sikkert at interagere med. Og så jeg kan skubbe på denne robot. Og du kan se det er lidt bit fleksibelt som den bevæger sig rundt. Og jeg kan flytte det hvor jeg gerne vil have det til at gå. Nu i en normal robotsystem, vi ville have en sæt sammenføjninger her der ville være direkte reagerer på position kommandoer. Og de ville ikke nødvendigvis pleje hvis de bevæger sig gennem fri luft, eller hvis de var på vej gennem min brystkasse. OK. Og typisk, hvis du var her med et industrielt system du ville gå langtfra det. Der ville være gul sikkerhed tape hele vejen rundt. Dette system har en lidt anderledes design at være mere brugervenlige og lettere for folk til at interagere med, i, at der i hver samling, er der en fjeder. Og i stedet for at styre en nøjagtig position, vi kontrollerer en vis mængde drejningsmoment, en vis mængde kraft, at vi gerne vil være på, at foråret. Okay, så lad mig tage vores frivillige her. Hej hvad hedder du? PUBLIKUM: Louis. SPEAKER: Louis. Dejligt at se dig. Og? PUBLIKUM: David. SPEAKER: David. Dejligt at møde dig. Hvis du fyre ville vente lige her for en anden, Jeg har tænkt mig at give dig en chance for at gøre dette. Så denne robot, hvis du kommer op og hvis du skubber forsigtigt på det, du kommer til at se, at den bevæger sig en lille smule. Og hvis du har fat i det rigtige her på håndleddet lige ovenfor, hvor disse knapper er det ser ud som du skal få fat i knapperne, men få fat i lige over det i stedet, vil du være i stand til meget forsigtigt manipulere den gennem rummet. Louis, du ønsker at give det en chance? Så giv det bare en lille smule skubbe til at starte med. Og så hvis du lægger dine fingre lige der, og holde fast til det, fordi det vil bevæge sig for dig så. Okay, du ønsker at give det en chance? Kom op. Så giver det bare en blid skubbe der til at starte. Du kan føle, hvordan det er. Og derefter, hvis du har fat i det rigtige der, vil du være i stand til at manøvrere på omkring. OK. Så typisk denne form for en robot ville anvendes til fremstilling i lille skala. Og jeg har tænkt mig at flytte denne arm bare ned af vejen lidt her. Men i dag, vi kommer til at bruge samme Kryds og bolle spille systemet baseret på Minimax at vi bygget tidligere. OK? Så du fyre er hver kommer til at spille et spil. Louis, er du nødt til at være først. Lad mig bare holde op her for en anden. Jeg har tænkt mig at have du står ret her, bare så alle kan se dig. Er du fyre oprettet her? ROBOT: Velkommen. Lad os spille Kryds og bolle. Du må ikke forstå din token før Jeg siger, at det er din tur. Jeg starter spillet. Det er min tur. SPEAKER: Nu, hvis du kunne tage en af dine brikker og gå videre og placere den. ROBOT: Det er din tur. [LATTER] Det er min tur. [LATTER] [LATTER] Det er din tur. SPEAKER: Den menneskelige race er regner med dig her, Louis. ROBOT: Det er min tur. SPEAKER: Så Baxter held blokeret her. ROBOT: Det er din tur. Det er min tur. Det er din tur. Det er min tur. SPEAKER: Og vi vil lade Baxter afslutte sin sidste træk her. [LATTER] ROBOT: Det er en uafgjort. Jeg vil vinde næste gang. [LATTER] SPEAKER: Okay, tak meget, Louis. Tak. Du kan gå på denne måde. ROBOT: Jeg starter spillet. SPEAKER: Så lad mig forklare til dig endnu en lille lidt, før vi får vores omkamp her. Hvad der præcist sker der? Så robotten har et kamera op øverst her. Og det ser ned på brættet. Og det er at se, om det har fået en rød O eller en blå og hvid X. Som dem, bliver placeret på bord, det er dybest set den samme indgang at vi ville være at læse ind fra vores datastruktur fra skærmen. Det kører det samme Minimax algoritme til at være stand til at finde, hvor at placere en god token. Og så giver vi en kommando om hvor vi gerne et token, der skal placeres. Armen bevæger sig ud. Det er ved hjælp af et vakuum griber til at anvende nogle sugning til det stykke træ, samle den op, flytte den til højre stedet, og slip derefter suge og slip det. Okay, vi kommer at give det en mere skudt med en lidt smartere spiller her. Er du klar? Okay, hvis du vil stå lige op her og give en-- vise sig på denne måde så du kan se alle. Og derefter [uhørligt]. ROBOT: Det er min tur. SPEAKER: Baxter starter. Det er din tur. Det er min tur. Det er din tur. Det er min tur. [LATTER] SPEAKER: [WHISPERING] Just lad ham gå videre og vinde. ROBOT: Det er din tur. SPEAKER: Det er OK. ROBOT: Det er min tur. [LATTER] Jeg vinder. [LATTER] Jeg starter spillet. SPEAKER: Okay, tak. Okay, jeg tror, ​​vi har fået tid til endnu en fremragende Kryds og bolle-afspiller, nogen, der kan sætte denne ting til matche, der ved, hvad de laver. [LATTER] Hvem kommer til at være vores mester her? Okay, dine venner meldte dig. Det er godt nok for mig. Fortæl mig dit navn igen. PUBLIKUM: Tamir. SPEAKER: Tamir, rart at se dig. Okay, igen, vi kommer til at sætte dig lige op her, så alle kan se dig. Du er vores repræsentant i denne kamp nu. Baxter er én og åh og åh. Eller ked af det, man oh og én. Og det er op til dig her. Baxter vil komme til at bevæge sig først, selv om. Så. ROBOT: Det er min tur. [LATTER] Det er din tur. Det er min tur. Det er din tur. Det er min tur. Det er din tur. [LATTER] ROBOT: Det er min tur. SPEAKER: Det er meget sværere, når du står op her, folkens. [LATTER] ROBOT: Du mennesker er så nemme at slå. [Latter og bifald] SPEAKER: tak. ROBOT: Jeg vinder. Jeg starter spillet. SPEAKER: Okay, tak meget meget til Olivier, og Alessandro, og Chen Ming. [BIFALD] Jeg vil gerne gøre et sidste punkt. Så Baxter ved meget ende der, snydt. Og det var uventet. En af de fantastiske ting om AI er, at vi udføre arbejde i AI, så vi kan bygge virkelig interessant og intelligent enheder. Men vi også gøre arbejdet i AI fordi det fortæller os noget om, hvordan mennesker er intelligente. En af de foretrukne undersøgelser fra mit laboratorium er se på, hvad der sker, når maskiner uventet snyde. Vi gjorde dette oprindeligt ikke med Baxter spiller Kryds og bolle, men med en mindre robot ved navn Nao, der spillede rock papir-saks. Og nogle gange efter spille masser og masser af kedelige sten-papir-saks spil, robotten ville kaste en gestus, taber, og så pludselig ændrer sin gestus og siger, jeg vinder. [LATTER] Nu, nogle gange ville vi også have robotten, lige som en kontrol, smide en gestus, vinde, og ændre sin gestus at tabe, smide kampen, snyde for at tabe. Og det er ikke nær så overbevisende. Robotten, der snyder med henblik på at vinde folk svare som om det er ud for at få dem, ligesom det søger aktivt deres ødelæggelse. [LATTER] Det bliver en agent. Det er ligesom en person. Det har tro og hensigt. Og det er ikke godt hensigt. Og robotten, der kaster Spillet er bare funktionsfejl. Det er bare en ødelagt enhed. Lad mig vise dig et par eksempler af, at der fra et par af vores deltagere. Så her er snyd for at tabe. [VIDEO PLAYBACK] - [Uhørligt] vinde. Lad os lege. -Vent, hvad? - [Uhørligt] vinde. Lad os lege. [Uhørligt] vinde. Lad os lege. SPEAKER: Og her er snyd at vinde. -Ja, Vinder jeg. Lad os lege. -Du Kan ikke gøre det. [LATTER] -Ja, Vinder jeg. -Du Snydt. Du snydt nu. -Ja, Vinder jeg. -Hey, Du snyder. Du snyder, super snyde. [END AFSPIL] SPEAKER: Disse forskellige reaktioner hurtigt ændre vores opfattelse af enheden. Betyder det, at vi bevidst bygger maskiner, der snyder, fordi det er den bedste teknik, som vi kan gøre? Nej, men det fortæller os noget virkelig interessant om mennesker. Den ting, der snyder dig og stjæler din sejr, det er noget, der er i live, det er animere, der er ude for at få dig. Det har mentale tilstand. Det har tro. Det har til hensigt. Den ting, der hænder spil til dig, det er ikke. Det er bare funktionsfejl. Det er på mange måder, hvorfor det er let at kaste spil med børnene. Men hvis du prøver at snyde dem og sortering af krav på sejren når, du ved, bare for at forkorte spil, vil de fanger dig med det samme. Disse former for effekter, vi ser kommer ud af AI, de underviser os en masse om os selv. Okay, det er det for i dag. Tak meget til David og Harvard produktion teamet for at komme ned. [BIFALD] Vi vil se dig for quiz én, og derefter til en sidste forelæsning. Hav en god dag. [BIFALD] [Musik spiller] David J MALAN: Nå, vi sandsynligvis har brug for at indføre en form for kryptering, højre? Fordi så overskrifterne i disse HTTP-anmodninger vil være scrambled så alle forsøger at snuse din trafik vil faktisk ikke kunne se dem. Så hvad er løsningen på dette problem? Nå, vi er nødt til rent faktisk at indføre kryptering i formlen, så når denne person er at overføre data fra A til B, vi kan sikkert send-- [LATTER] De oplysninger på en måde, at den modstander kan ikke, i virkeligheden, se det.