>> [MUSIC SPILLE]
>> SPEAKER: Velkommen tilbake, alle sammen.
Dette er CS50.
Og i dag har vi en rekke interessante ting å snakke om.
Men først må jeg minne du av noen administrative ting.
Denne uken er quiz en, onsdag eller for Yale seksjonen
på tirsdager og torsdager, på torsdag.
Det er quiz anmeldelser i kveld på Yale, 5:30 til 7:00.
Ved Harvard, spilte de en i går.
Og alle kan se at online.
>> Også denne uken eller tidlig neste uke, vi ha vår siste CS50 forelesning.
[Stønner] jeg vet.
Det kom så fort.
Yale studenter vil ha en live foredrag her i juss
auditorium på fredag.
Det vil være kake.
Harvard studenter vil ha siste forelesning i Sanders på mandag.
Det vil også være kake.
>> Også denne uken på fredag, for de av dere som kommer til New Haven,
vi har CS50 Expo.
Vi har mer enn 30 ulike grupper registrert
å vise deg alt fra selvstyrte seilbåter,
til systemer som gjenkjenner digitale portretter, til datamaskinen
musikk og dataprodusert musikk.
Så vennligst bli med oss.
Jeg tror det kommer til å bli en flott tid.
>> I dag, men vi kommer til å fortsette å snakke om AI,
om kunstig intelligens.
Og en av de tingene som vi kommer til å få til i dag
er ideen om hvordan du bruke AI til å løse problemer.
Nå, som alltid, la oss starte med noe enkelt.
Og vi kommer til å starte med en enkel idé.
Og det er ved hjelp av søk.
>> Så tenk et øyeblikk at jeg har en oppgave som jeg trenger for å utføre.
Og jeg vil gjerne ha den oppgaven automatiseres ved noen programvare agent.
Tenk deg at jeg prøver å bestille et sett på flyreiser fra, la oss si, Boston
til San Francisco.
Jeg kunne gå gjennom og jeg kunne bruke en av de fantastiske online søk
verktøy, som kommer til å gjøre utgangspunktet den samme prosessen som vi er
kommer til å gå gjennom i dag.
Men hvis du ikke har som verktøyet, hva ville du gjort?
>> Vel, du kan se og se og si, jeg er i Boston.
Hva flyreiser er tilgjengelige for meg?
Nå, kanskje jeg har tre mulige fly av Boston
som passer tiden når jeg trenger å forlate.
Jeg kunne fly til Chicago.
Eller jeg kunne fly til Miami.
Eller jeg kunne fly til New York.
Jeg kunne da se fra hver en av disse reisemål byer
og tenke på hva steder Jeg kunne muligens nå
fra hver av de individuelle byene.
>> Så kanskje fra Chicago, kan jeg få et direktefly til San Francisco.
Det er utmerket.
Eller jeg kunne få et fly til Denver.
Nå, kanskje det fly til San Francisco er den perfekte løsningen for meg,
men kanskje ikke.
Kanskje jeg leter etter noe det er litt billigere
eller litt bedre for min timeplan.
Og så kunne jeg se etter hva andre Mulighetene kan være der ute.
Så jeg kunne se på Denver.
Og fra Denver, vel, kanskje Jeg kan få et fly til Austin.
Og fra Austin, kanskje jeg kan få en fly til Phoenix, og fra Phoenix
til San Francisco.
Nå er jeg ikke ferdig ennå.
Fordi kanskje det er en direkte fra New York
til San Francisco som er perfekt for meg.
Eller kanskje det er et fly fra Miami gjennom Denver som er mye billigere.
Så jeg har fortsatt å gå.
Og jeg har fortsatt å se på alle de byer som jeg ikke har undersøkt ennå.
Jeg må uttømmende sjekke alle mulighetene for at jeg skulle ha.
>> Så fra New York, kanskje jeg kan få en fly til Nashville, og fra Nashville
til Austin.
Og så vet jeg hvor jeg er.
Og så vet jeg fra Austin, kan jeg fly til Phoenix, og fra Phoenix
til San Francisco.
Hvis jeg flyr først til Miami, skjønt, kanskje jeg kan få et fly fra Miami
til Nashville, eller fra Miami til Austin.
>> Og nå har jeg prøvd alt av mulighetene.
Jeg har bygget opp denne grafen at viser meg alle mulige ruter
at jeg kan være i stand til å ta.
Når vi representerer disse typer problemer,
Vi kommer ikke til å representere dem eksplisitt som denne grafen,
fordi at grafen ikke representerer historie hvor vi har gått.
Å vite at jeg fløy fra Phoenix til San Francisco
forteller meg ikke om jeg kom via Nashville, eller via Denver, eller via Miami.
>> Så hva jeg skal gjøre i stedet er Jeg vil ta dette samme problemet,
og jeg skal representere det som et tre.
Og ved roten av treet, på toppen, vil jeg sette det sted som jeg startet,
Boston.
Og fra Boston, vil jeg se på alle de mulige plasseringer
at jeg kan reise til.
Vel, i dette tilfellet, hadde jeg tre, Chicago, New York og Miami.
Og så vil jeg utforske hver av disse barna i treet.
>> Fra Chicago, så jeg at jeg hadde to fly.
Jeg kunne fly direkte til San Francisco eller til Denver.
Nå San Francisco, det er mitt mål.
Det er mitt mål.
Det kommer til å være et blad av dette treet.
Det vil si, jeg kommer aldri til å gå sted etter San Francisco.
Fra Denver, skjønt, Jeg kan fly fra Denver
til Austin, fra Austin til Phoenix, og fra Phoenix til San Francisco.
Og nå igjen, jeg har nådd et blad.
>> Jeg kunne da gå tilbake til neste byen som jeg ikke har fullt utforsket.
Det ville være New York, går tilbake til toppen av treet mitt,
komme ned til New York.
Fra New York, kan jeg fly til Nashville, fra Nashville til Austin,
fra Austin til Phoenix, og fra Phoenix til San Francisco.
Og til slutt, en by jeg har ikke sett på ennå, Miami.
>> Vel, fra Miami jeg sa jeg hadde to muligheter, Nashville eller Austin.
Hvis jeg fly til Nashville, vel da jeg fly fra Nashville, til Austin, til Phoenix,
til San Francisco.
Hvis jeg fly til Austin, jeg flyr Austin, til Phoenix, San Francisco.
Og nå har jeg et tre.
Det er en komplett tre.
Det er alle de muligheter og alle stiene som jeg kunne ta.
Det vil si, hvis jeg begynner på roten av treet på toppen
og jeg går ned til en av blader, det forteller meg ikke bare
hvor jeg kommer til å ender opp med, San Francisco,
men det forteller meg den ruten som Jeg må ta for å komme dit.
>> Nå er der en av disse er best?
Vel, ingenting om dette problemet ennå forteller meg
hvilke av disse som er den beste løsningen.
Kanskje jeg bryr meg mest om hvor mye tid jeg er i luften,
eller avstanden at jeg flyr.
I dette tilfellet, Chicago til San Francisco kan være den korteste antall
av miles i luften.
>> Kanskje jeg bryr meg om kostnadene.
Og vi vet alle direktefly er vanligvis dyrere.
Så kanskje hvis jeg tar dette slags baklengs rute
gjennom Miami, Nashville, Austin, Phoenix, kanskje da
Jeg får en lavere pris.
Men jeg kunne optimalisere på noen kriterier som jeg bryr meg om.
Hvem har den beste i flight Wi-Fi, eller som
flyplasser har den beste maten tilgjengelig.
Og hver av dem kan gi meg en annen løsning
som jeg ser som den beste.
>> Disse typer problemer, hvor vi går
å bygge ut dette treet av muligheter, og deretter
se på hver av dem enkelte baner, og undersøke
hvilke av disse Oppfyller et kriterium for oss,
vi kommer til å kalle disse søkeproblemer.
Og vi har massevis av algoritmer, hvorav noen
vi har sett allerede, å gå og utforske disse trærne.
Vi kunne gjøre det på den måten at jeg bare gjorde, en dybde-først søk,
går ned så langt vi kan før vi treffer et blad, og deretter kommer tilbake opp,
og går rett ned igjen.
Eller vi kunne gjøre det som er kalt bredde-først-søk.
Vi kunne utvide alt på toppen, og deretter
alt en linje under det, og deretter
alt en linje under det.
Disse søke trær er grunnleggende for AI.
Men de har ikke helt får det rett hele tiden.
Faktisk, i mange av tilfellene at vi virkelig bryr oss om,
vi ønsker å bygge et tre, men vi gjør faktisk ikke
kommer til å gjøre alle beslutninger.
>> Dette er situasjoner som kalles motstandere søk, også kjent
som hvordan å skrive spillet spilles systemer og få betalt for det.
Men disse er de typer av systemer der jeg
kan komme til å velge når jeg går fra Boston, hvilken by jeg går til neste.
Men etter det, kanskje noen andre få å ta beslutningen om hvor jeg flyr.
Så for å bygge disse typer strukturer, er vi
nødt til å ta en litt annen tilnærming til det.
Vi kommer ikke til å være i stand til å bare søke gjennom treet
lenger, fordi vi ikke er den som er i kontroll
av hver av disse beslutningspunkter.
>> Så la oss forestille en enkel spill som tic-tac-toe.
Jeg kan begynne med en helt tomt bord.
Og i tic-tac-toe, X får spille først.
Og så jeg kunne tenke på alt mulige trekk at X kan gjøre.
Og hvis jeg er den som spiller X, det er flott.
Jeg har ni mulige foreslår at jeg kan gjøre.
Jeg kunne sette en X i ett av de ni stillingene.
>> Og deretter fra hver av disse, I kunne forestille seg hva som skjer videre.
Også, i dette tilfelle den annen spiller ville komme til å ta en tur.
O ville komme til å ta en tur.
Og fra hver av disse, der ville være åtte forskjellige steder
at O kunne plassere markøren sin.
>> La oss si at jeg bestemte meg for at jeg var kommer til å sette et kryss i sentrum.
Det virker alltid som en god åpning trekk.
Jeg kunne se på under det, åtte mulige trekk at O ​​gjør.
Nå, hvis jeg spiller X, det er fantastisk.
Jeg kommer til å velge hvilken jeg gå til, den i midten.
Men nå O får velge.
Og jeg har ikke kontroll i løpet av den beslutningen.
>> Men fra hver av disse mulige styreverv,
det er da en annen satt av muligheter.
Når det gjelder å bli min tur igjen, ville jeg
får velge, og si, vel, hvis O beveger seg inn i, vel,
midten flekk på venstre, deretter Jeg har et sett av muligheter
hvor jeg kan ta mitt neste trekk.
Fra disse, kunne jeg vurdere alle muligheter under dem.
Og så O ville få til å velge blant de.
>> Og jeg kunne fortsette å bygge denne treet ut før jeg kom til et punkt
der enten noen vinner game-- det er
fikk å bli betraktet som et blad node-- eller styret er helt full
og ingen har vunnet.
Og som også kommer til å være en bladnode.
Det kommer til å være en uavgjort.
>> Men den vanskelige ting med dette er hvis dette var bare en vanlig søk
problem, jeg ville være i stand til å si, vel, X bør gå her.
Og O bør gå veien dit.
Og så X bør gå over her.
Og deretter O bør gå veien dit.
Og så X kan få tre på rad, og jeg vinner.
Og spillet ville være over i fem trekk, tre for meg,
to for min motstander.
Men jeg vet ikke alltid kommer til å velge det.
>> Så i stedet, hva vi er nødt til å gjøre
er vi kommer til å ha å ha en ny strategi.
Og den strategien som spill-spiller algoritmer bruker ofte
er det som kalles minimax.
Den sentrale ide minimax er at vi er
kommer til å plukke farten som gir vår motstander den verst tenkesett
trekk at de kan gjøre.
Det gjør ikke meg noe godt å velge en overgang der
Jeg kan være i stand til å vinne etter det, fordi min motstander er ikke
kommer til å gi meg den sjansen.
De kommer til å velge noen forferdelig utfall for meg.
Så jeg kommer til å gjøre flytte som tvinger min motstander
å gjøre noe bedre for meg.
Greit.
La oss se hvordan det utspiller seg.
Så her er vår algoritme i pseudokode.
Vi kommer til å generere hele spillet treet.
Vi kommer til å bygge hele strukturen.
Og så får vi gå gjennom.
Og helt nederst på hver av de terminal noder, på hvert av bladene,
Da vil vi evaluere hvordan verdifullt er det for meg?
Og vi kommer til å verdsette ting som er bra for meg som å være positiv.
Ting som ikke er bra for meg vil være mindre positiv eller null,
eller til og med negativ.
>> Så i tic-tac-toe, kanskje en seier for meg er bra.
Det er en en.
Og en uavgjort er null.
Og noe som er et tap for meg, kanskje det er en negativ en.
Alt som teller er at jo bedre det er for meg, jo høyere score
den mottar.
Fra disse mulighetene på bunn, så får vi filtrere oppover.
Og når det er min sjanse til å velge blant et sett av alternativer,
Jeg vil velge den som er fikk høyest poengsum.
>> Og når det er min motstandere slå til å velge,
Jeg vil anta at de kommer til å velge den med lavest poengsum.
Og hvis jeg gjør dette hele veien opp til toppen av treet,
Jeg har valgt en vei som gir meg det beste resultatet som jeg kan få,
forutsatt at min motstander gjør alle de riktige trekkene.
>> Greit, så la oss se dette i aksjon først.
Og så får vi faktisk se på koden for det.
Så tenk jeg har dette store treet.
Og nå er jeg ikke spille tic-tac-toe.
Jeg ønsket å gi deg noe litt rikere.
Så jeg har fått noen spill der det er mange forskjellige poengsummer
at jeg kunne ha på slutten.
Og så jeg bygge denne komplette treet.
Og jeg kommer til å flytte først.
Jeg er ved roten av treet.
>> Og jeg kommer til å velge at-- så jeg får å maksimere over at første noden.
Og da min motstander kommer til å gå.
Og så kommer jeg til å gå igjen.
Så ned på bunnen, jeg har et sett av muligheter for at jeg kan velge mellom,
forskjellige terminal statene i spillet.
Hvis jeg er nede i det Helt til venstre hjørne,
og jeg ser at jeg har et valg mellom en åtte, syv, og en to,
vel, jeg er den som får velge.
Så jeg kommer til å velge den beste av dem.
Jeg kommer til å velge åtte.
>> Så jeg vet at hvis jeg noen gang komme ned til det punktet,
Jeg vil være i stand til å få det åtte poeng.
Hvis jeg ender opp på neste punkt over, de neste node over,
en ni, ett, eller en seks, vel, jeg er kommer til å velge den beste av dem.
Jeg vil velge den ni.
Hvis jeg har et valg mellom to og fire, og en,
Jeg vil velge de fire, det høyeste.
>> Nå, hvis jeg ser på det nivået over det, min motstander
er det man får til å gjøre det valget.
Så min motstander blir til velge, ønsker jeg å gi ham
ting som skjer å få ham åtte poeng,
eller gi jeg ham det som er kommer til å gi ham ni poeng,
eller det som kommer å gi ham fire poeng?
Og min motstander, blir rasjonell, kommer
for å velge den minste av dem, kommer til å velge de fire.
>> Og jeg kan gjøre dette gjennom hele treet.
Jeg kan gå ned til at midterste sett av tre.
Og jeg kan velge mellom en, tre og fem.
Og jeg kommer til å velge.
Så jeg velger et fem.
Jeg kan velge tre, ni, eller to.
Jeg kommer til å velge, så velger jeg de ni.
Seks, fem, eller to, jeg velger.
Jeg kommer til å velge de seks.
Nivå over det, som får velge?
Hvem får velge?
Den andre fyren, min motstander.
Slik at de velger fem, ni, eller seks, hvilken?
>> PUBLIKUM: De fem.
>> SPEAKER: De velger de fem.
De får velge minimum.
Og så den siste, velge en, to, eller tre.
Jeg kommer til å velge, så velger jeg tre.
Ni, sju, eller to, velger jeg ni.
Og 11, seks eller fire, velger jeg 11.
Min motstander deretter velger tre, ni eller 11, velger minimum.
Han gir meg et tre.
Og deretter til slutt ved toppen av treet, får jeg til å velge på nytt.
Og jeg kommer til å velge mellom en fire, fem, eller et tre.
Så jeg tar det fem.
>> Hvis jeg fikk til å kontrollere alt, hadde jeg ta banen som førte til 11.
Men jeg får ikke til å gjøre det valget.
Hvis jeg går ned den veien.
Min motstander vil tvinge meg inn Valget som fører til et tre.
Så det beste jeg kan gjøre er å å ta det midterste gren,
ta det valget som er slutt kommer til å føre meg til fem poeng.
Det er det minimax gjør.
>> Greit.
La oss ta en titt på det.
Så her i CS50 IDE er et program som
implementerer minimax å spille tic-tac-toe.
Vi kommer til å bygge opp en representasjon.
Vi kommer til å ha to opponent-- eller to spillere, vår datamaskin
spiller og en menneskelig spiller.
Spiller nummer én skal spille den O. Det blir maskinen spiller.
De kommer til å flytte andre.
Og den andre spilleren, vår menneskelig spiller, vil være X.
>> Og for å gjøre livet mitt litt enkelt, jeg kommer
å merke at spilleren negativ en.
Så jeg kan bare formere med negativt å bytte
mellom en spiller og det andre.
Greit, så la oss ta en titt på hva vi faktisk kommer til å gjøre.
Vi kommer til å definere vårt styre.
Det kommer til å være, vel, vi skal for å tillate det å være tre av tre,
eller vi kan også spille five med fem eller syv
med sju tic-tac-toe hvis du hadde som, basert på noen dimensjon D.
>> Og vi vil ha et par av hjelpefunksjoner
som vil gjøre ting som initialisere screen-- eller sorry,
initial våre variabler, tømme skjermen, tegne brettet på skjermen,
en som sjekker et styre for å se hvorvidt
det er en vinner, en som analyserer via kommandolinjen,
bare for å hjelpe til, en som leser i innspill, og en funksjon som heter minimax.
Og det er den ene vi vil bry seg mest om.
Men la oss først se på de viktigste.
>> Hva skal vi gjøre?
Vel, vi skal til analysere vår kommandolinje,
bare lese inn og se hva dimensjon bord vi ønsker å ha.
Vi vil initial vårt styre.
Og så får vi inn én store vill loop, gjentatte ganger
godta trekk til spillet er vant, eller det er ingen trekk igjen.
Hver gang vi går gjennom det loop, vil vi tømme skjermen.
Vi vil trekke brettet på skjermen.
Og vi er bevisst slags abstrahere disse bort som subrutiner,
slik at vi ikke trenger å bekymre deg for mye om detaljene i hvordan de skjer.
>> Du vil ha koden senere i dag.
Og hvis du ønsker å se gjennom og finne ut, du kan se dem alle.
Men vi skal tegne et bord på skjermen.
Og så skal vi sjekke og ser, har vi en vinner?
Har noen vunnet denne kampen?
Hvis de har, vil vi skrive ut ut en seier melding.
Og vi vil avslutte spillet.
>> Vi vil også sjekke og se om det er uavgjort.
Det vil være lett å se om det er uavgjort.
Det betyr at alle mellomrommene er full, men det har ikke vært en vinner.
Vi kan erklære en uavgjort og bli ferdig.
Så den virkelige meat-- hvis det er en maskin-spiller,
vi vil tillate at Maskinen spiller å søke
gjennom å bruke denne minimax algoritmen, å finne den beste farten at det kan.
Og så får vi sette det farten opp.
>> Ellers, hvis det er en menneskelig spiller, vi vil lese noen innspill fra det menneskelige.
Og så om det er den menneskelige spiller eller maskinen spiller,
vi vil gjøre et par lite biter av feilsjekking,
sørg for at den holder seg innenfor grensene av de faktiske dimensjoner av styret
som vi har, sørge at denne plassen er tom,
at ingen har satt en brikke i det allerede.
Og så får vi bare sette en brikke på brettet,
endre spilleren til neste lag, og øke hvor mange trekk har skjedd.
>> Det er den viktigste løkke for vår tic-tac-toe spillet.
Minimax, da, er nøyaktig algoritmen som vi tidligere.
Den eneste justeringen som vi har gjort, slik at vi
kan spille høyere dimensjonale styrene er vi har
holdt denne ekstra parameter kalt dybde.
Og dybde bare sier, hvis jeg er søke nedover gjennom det treet
og jeg blir så langt ned utover et visst nivå dybde
at jeg vil bare ikke å gå videre,
Jeg kommer til å stoppe opp og bare evaluere styret på det tidspunktet.
Jeg skal sjekke og se om det er en vinner.
Hvis det er en vinner, jeg kommer tilbake dem.
Ellers vil jeg gå gjennom en loop.
Og jeg skal si, for alle mulige plasseringer
at jeg kunne muligens ta så mitt trekk, vil jeg
bygge en hypotetisk bord som omfatter mitt trekk på at styret,
og deretter rekursivt kaller minimax.
>> Hvis det er mitt trekk, får jeg til å finne den en som har fått den største poengsummen.
Hvis det er min motstanderens trekk, finner vi den som har fått minimum score.
Og alt annet er bare journalføring.
Greit, så la oss se denne kjøringen.
Egentlig, kanskje vi kan få et par frivillige
å komme opp og spille tic-tac-toe.
[Uhørbart] én og én mer, to, rett der.
Kom opp.
>> Så la oss gå videre og starte dette helt.
Så, hi.
>> PUBLIKUM: Hei.
>> SPEAKER: Hva heter du?
>> PUBLIKUM: Gorav.
SPEAKER: Gorav.
>> PUBLIKUM: Jeg er Layla.
>> SPEAKER: Og Layla, og Layla, beklager.
Kom opp.
Gorav, kommer vi til å ha deg gå først.
Og jeg kommer til å be deg om å være en ikke veldig god tic-tac-toe-spiller.
OK, så alt presset er på deg.
La oss se, men at vår maskin Spilleren kan faktisk gjøre noe smart.
Så sett i gang.
Du kommer til å skrive hvor koordinere du ønsker å sette X i.
A0, OK, og maskinen har gått med en gang og sette sitt preg på A1.
>> Sett O på brettet.
Greit, nå gå videre.
Hvor vil du reise?
C2.
Vår maskin spiller har tatt midten kvadrat, har blokkert deg.
Så det var en god, smart ting for den å gjøre.
Du har blokkert den.
Det er utmerket.
Det tar hjørnet der.
>> Og det kommer til å tvinge deg til å ta en siste plass, B0.
Og den kampen ender uavgjort.
Men det spilte en rimelig Kamp mot deg, ikke sant?
Ok, takk veldig mye, Gorav.
>> [BIFALL]
>> Greit, Layla, vi kommer opp spillet på deg her.
>> PUBLIKUM: Oh, great.
>> SPEAKER: Vi kommer til å gi du fire av fire tic-tac-toe.
Nå, i fire av fire, har du til å vinne med fire på rad, ikke tre på rad.
Og det er bare din.
Så Layla tok D1.
Vi nå kommer til å følge datamaskinen vår spiller her.
Tre og tre tic-tac-toe er den type ting som er lett for oss alle.
Men det er fortsatt hyggelig å se datamaskin spiller å gjøre smarte trekk.
Fire av fire får være litt vanskeligere.
>> Bra gjort.
All right, så Layla er avsluttet.
Oh, og vi burde ha havnet der.
Men la oss gjøre et mer opp her.
Så Layla, takk.
Bra gjort.
>> [BIFALL]
>> Så vår tic-tac-toe spiller går gjennom og finner steder,
løser dem ved hjelp av denne minimax.
Og jeg hadde en dybdeinnstilling på den, slik at den
ville ikke kjøre for fort, som er nok derfor
Layla var i stand til å gå pent på forhånd som hun gjorde, og gjorde det veldig bra.
Men disse systemene som bare gå gjennom og brute force
gå dypere, og dypere, og dypere, og holde finne løsningen
at de trenger, slike systemer er ganske vellykket på disse, vel,
standard brettspill.
>> Og faktisk, hvis vi ser på en tre og tre tic-tac-toe spill,
Dette er i utgangspunktet et løst problem.
Og dette er en fantastisk diagram fra Randall Munroe på XKCD,
som viser hvilke flytter du bør ta, gitt motstanderens trekk.
Dette er noe som vi kunne enkelt angi forhånd.
Men hva skjer når vi får mer komplekse spill, mer intrikate spill,
hvor det er større brett, mer muligheter, dypere strategi?
>> Det viser seg at denne brute force søker fortsatt
gjør rimelig bra, bortsett når du kommer til det punktet
hvor det treet er så stort at du ikke kan representere det hele tatt.
Når du ikke kan beregne hele treet, når du ikke kan gå fremover og presse
selv til et punkt der du har fått hele treet i minnet,
eller om du kan få det i minnet, og det vil bare
ta deg altfor lang tid å søke gjennom det, må du gjøre noe smartere.
>> For å gjøre det, må gjøre to ting.
Først må du finne noen måte å begrense din dybde.
Vel, det er OK.
Vi kan finne noen fine, minimum og si, du kan bare gå så dypt.
Men når du gjør det, betyr det at du har disse delvis ufullstendige boards.
Og du må velge, jeg liker dette delvis ufullstendig bord,
eller dette delvis ufullstendig bord?
>> Og på våre fire av fire tic-tac-toe spill,
datamaskinen vår spiller fikk ned til bunnen, og det er sagt,
Jeg har to forskjellige brett.
Verken en er en seier.
Verken en er et tap.
Verken en er uavgjort.
Hvordan kan jeg velge mellom dem?
Og det hadde ikke en smart måte å gjøre det.
>> Vi ser denne typen Evalueringen skjer hele tiden
som vi får inn mer komplekse spill.
Chess er et godt eksempel.
I sjakk, har vi først av alt, en større bord.
Vi har langt flere stykker.
Og plasseringen av disse brikkene og den måte at disse stykker beveger
er kritisk viktig.
Så hvis jeg ønsker å bruke minimax, Jeg må være i stand til å spesifisere
og si, dette forumet, hvor ingen har vunnet eller tapt ennå,
er liksom bedre enn dette andre bord, der ingen har vunnet eller tapt.
>> For å gjøre det, kan jeg gjøre ting som jeg kanskje bare
telle hvor mange brikker må jeg og hvor mange brikker har du?
Eller jeg kan gi forskjellig stk ulike punkter.
Min dronning er verdt 20 poeng.
Din bonde er verdt ett poeng.
Hvem har flere poeng totalt?
Eller jeg kan vurdere ting liker, hvem som fikk bedre styreverv?
Hvem sin tur er det neste, noe som jeg kan
trenger for å vurdere mer nøyaktig hvilke av disse mulighetene
er bedre uten uttømmende vurderer
hver bevegelse som kan komme etter det.
>> Nå for å gjøre dette arbeidet, en av de tingene som er
kommer til å bli veldig viktig for oss er ikke bare å flytte rett
ned til en bestemt dybde grense, men å være i stand til å si,
en av disse ideene som jeg har er så ille at det er
ikke verdt å vurdere alle de mulige måter
at ting kan gå fra vondt til verre.
For å gjøre det, vil vi legge inn minimax et prinsipp som kalles alph-beta.
Og alfa-beta sier hvis du har en dårlig idé,
ikke kast bort tid på å prøve å finne ut nøyaktig hvor ille det er.
>> Så her er hva vi skal gjøre.
Vi kommer til å ta den samme prinsipper som vi hadde før,
samme minimax typen søk, bare vi er
kommer til å holde orden, ikke bare av faktiske verdiene som vi har, men vi vil
holde styr på den best mulige verdi at jeg kunne få,
og den verst tenkelige Utfallet jeg kunne ha.
Og hver gang den verst tenkelige ting ser sannsynlig,
Jeg vil forlate den delen av treet.
Og jeg vil ikke engang bry å se på det lenger.
>> All right, så tenk at vi begynner med dette nøyaktig samme spillet treet.
Og nå skal vi gå ned igjen, helt ned
til at venstre hjørne.
Og i det nederste venstre hjørne, vi ser og vi evaluerer dette forumet.
Kanskje det er en fire av fire tic-tac-toe bord, eller kanskje det er et sjakkbrett.
Men vi ser på det, og vi evaluerer det, og vi får en verdi på åtte.
>> På dette tidspunktet vet vi at vi kommer til å få minst
åtte poeng fra denne bunnen avgjørelse.
Det spiller ingen rolle hva den andre to er, at syv og at to.
De kunne være noen verdier de ønsket å være.
Vi kommer til å få på minst åtte poeng.
Greit, men vi kunne gå videre og sjekke.
Kanskje en av dem er bedre enn åtte.
>> Vi ser på de syv.
Er det bedre enn åtte?
Nei, det betyr ikke endre vår mening i det hele tatt.
Vi ser på de to.
Er det bedre enn åtte?
Nei, det betyr ikke endre vår mening i det hele tatt.
Så nå vet vi at vi har brukt opp alle mulighetene der.
Vi kommer ikke til å få noe bedre enn åtte.
Vi kommer til å få nøyaktig åtte.
>> Og så vi endre det node og si, er at nå en visshet.
Vi går opp ett nivå over det.
Og nå vet vi noe om at minimalisering nivå.
Vi vet at vi aldri kommer til å få mer enn åtte poeng hvis vi går ned
den retningen.
For selv om de to andre grener slå ut
å være fantastisk og verdt tusenvis av poeng hver,
vår motstander vil gi oss minimum, og gi oss åtte.
Greit, vel, la oss se.
Vi vil fortsette å gå ned den veien.
Vi går ned til at midten på venstre side.
Vi ser ned, og vi ser det er en ni.
Vi vet at vi kommer til å få minst ni poeng ved å gå ned
at middelvei.
Og på dette punktet, kan vi bare ta en pause.
Og vi kan si, se, jeg vet i nivået ovenfor,
Jeg kommer til å få noe mer enn åtte poeng ved å gå ned denne retningen.
Men hvis jeg gikk ned på midten bane i stedet for den venstre bane,
Jeg ville få minst ni poeng.
>> Min motstander er aldri kommer til la meg gå ned den middelveien.
De kommer til å velge.
Og de kommer til å velge stien til venstre mot åtte,
heller enn på midten langs hva er minst ni poeng.
Så på det punktet, vil jeg stoppe.
Og jeg skal si, vet du hva?
Jeg trenger ikke å se noen mer ned i den retningen.
Fordi jeg aldri kommer til å komme dit.
>> Jeg kan hoppe over det ene, og jeg kan hoppe over at seks,
fordi det aldri kommer til å skje.
Så jeg skal gå ned og jeg skal vurdere neste mulighet.
Jeg går der nede og jeg sier, jeg ser en to.
Jeg vet at hvis jeg får til her, er jeg kommer til å få minst to.
OK.
Jeg holde det gående.
Jeg ser en fire.
Jeg vet at jeg kommer til å få minst fire.
Det er fortsatt mye mellom fire og åtte, skjønt.
Så jeg holde det gående.
Jeg ser ned og jeg ser det er ett.
Greit, jeg vet om Jeg går ned denne veien,
Jeg kommer til å være i stand til å velge de fire.
Hva er min motstander kommer til å gjøre?
Mellom noe som gir meg åtte, noe som gir meg fire,
og noe som gir meg minst ni,
vel, han kommer til å gi meg de fire.
Og jeg vet nå på Helt øverst, jeg kommer
å være i stand til å få minst fire poeng ut av dette spillet.
>> Hele ideen om alfa-beta er å kutte av deler treet slik
at jeg ikke ser på dem lenger.
Men det fortsatt ser ut som jeg har vært ser på mye av treet.
La oss holde det gående ned.
Vi vil gå ned neste nå.
Nede på bunnen, finner jeg en en.
Jeg vet at jeg kommer til å få minst én.
Jeg holde utkikk.
>> Jeg finner en tre.
Jeg vet at jeg kommer til å få minst tre.
Jeg holde det gående.
Jeg finner en fem.
Jeg vet at jeg kommer til å få fem- hvis jeg får ned i den banen.
Og jeg vet også da at min motstander, hvis jeg
velge midt de tre store valg,
han kommer til å gi meg noe som er fem eller mindre.
>> OK.
Jeg kan holde det gående der.
Jeg kan se ned og jeg kan si, hva skal jeg
å få hvis jeg går ned midt banen?
Jeg kommer til å få, vel tre der.
Jeg kommer til å få noe det er minst tre.
Det er fortsatt ting mellom tre og fem, så jeg holde utkikk.
Oh, en ni, vil jeg definitivt ta det over en tre.
Jeg kommer til å få minst ni hvis jeg går ned at middelveien.
>> Nå er min motstander stopper og sier: ser, er det ingen vits lenger.
Jeg vet at min minimering motstander, han
kommer til å gi meg det som er mindre enn eller lik fem,
snarere enn det som er større enn eller lik ni.
Jeg stopper.
Jeg ser ikke noe mer på det.
Jeg holde det gående.
>> Jeg ser ned på denne.
Ned til bunnen, finner jeg en sekser.
Jeg vet at jeg kommer til å få minst seks.
Og hva kan jeg gjøre?
Jeg kan stoppe.
Fordi det er et valg mellom noe som er minst seks
og noe som er mindre enn fem, er han
kommer til å gi meg den tingen det er mindre enn fem.
Og nå jeg vet at jeg kommer til å få akkurat det valget.
Jeg kommer til å få at fem valg.
>> Jeg går opp til toppen.
Som jeg kommer til å velge mellom noe
som er større enn eller lik fire, eller noe som er lik fem?
Jeg kommer til å ta noe som er minst fem.
Jeg går ned den siste banen, alle helt ned til bunnen.
Det er en en.
OK, minst jeg kommer til å få ett poeng.
Jeg holde det gående.
To, oh, det er bedre enn ett.
Jeg kommer til å få minst to.
Jeg finner en tre.
Jeg vet at jeg kommer til å få tre.
>> Og punktet som ovenfor, min motstander kommer
å gi meg noe som er mindre enn eller lik tre.
Og nå kan jeg stoppe.
Fordi i valget mellom meg å være stand til å få en fem og min motstander
gi meg noe mindre enn tre, Jeg er alltid kommer til å ta det fem.
Så jeg ikke vurdere det nederste del av treet i det hele tatt.
>> Nå kan dette virke mindre.
Men når små biter av aritmetikk, større enn og mindre enn,
kan skjære bort hele deler av denne eksponentielt voksende treet,
som fører til et stort Mengden av sparing, sparing
som er store nok til at jeg kan begynne å spille kompetitivt
på flere komplekse spill.
>> Greit, hvis vi ser på størrelsen og kompleksiteten av forskjellige spill,
tic-tac-toe var vårt enkle eksempel.
Vi har fått et lite bord, tre og tre.
Vi får i beste fall et gjennomsnitt på om fire ulike valg
som vi går gjennom spillet.
Vi har et sted rundt 10 til femte mulige forskjellige blader.
Og bygge en tic-tac-toe spiller, vel, vi bare gjorde det.
Det er lett.
>> Hvis vi går opp til noe mer Komplekset, som Connect Four.
Husker du dette spillet hvor du slippe den lille tokens i?
Det er en seks av sju bord, ikke så mye større, fortsatt
har omtrent samme forgrening faktor som tic-tac-toe.
Jeg har ca fire valg hvor jeg kan sette ting i.
Men nå har jeg fått mye mer fører, 10 til 21. makt.
Det er noe som er lett nok at vi løser det med en gang.
>> Checkers, mer complex-- deg fikk en åtte av åtte bord.
Du er bare på halvparten av dem når som helst, skjønt.
Du har en forgrening faktor som er omtrent 2,8.
Vel, vi har fått et par beveger du kan ta.
Du har ca 10 til 31. blader, større og større, og større områder.
Som jeg har til å søke gjennom de større og større områder,
det er da ting som alpha-beta og å være i stand til å kutte vekk hele grener
blir avgjørende.
>> Nå brikker var lett nok i 1992.
Et dataprogram som kalles Chinook slå verdens brikker
champion, Marion Tinsley.
Og siden da, nei menneskelige mester spiller har
vært i stand til å slå de beste beregningssystemer.
Hvis vi ser på noe som sjakk, nå igjen, har vi en åtte av åtte bord.
Men vi har mye mer kompleks stykker, mye mer komplekse bevegelser.
Vi har et forgrenings faktor på ca. 35, 35 mulige trekk i gjennomsnitt
at jeg kan ta, og en stat plass, et antall blader
som er vokst til 10 til 123. makt, enorme mengder av muligheter.
>> Enda moderne prosessorer er i stand til å gjøre dette vellykket.
I 1995 og deretter i 1997, en datamaskin program kalt Deep Blue bygget av IBM
som kjørte på en gigantisk superdatamaskin slå den gjeldende verdensmesteren,
Garry Kasparov.
Dette var et vendepunkt.
I dag, men at samme behandling makten sitter på min MacBook.
>> Prosessorhastigheten holder stadig raskere og raskere.
Vi kan vurdere mer og mer styrene raskere og raskere.
Men enda viktigere, har vi bedre evaluerings funksjoner og bedre beskjæring
metoder.
Så vi kan søke på plass mer complexly.
Den største av styret spill som vi kan tenke på,
noe sånt Go som er fikk en 19 med 19 bord,
nå plutselig er vi forbi det punktet hvor beregningssystemer kan vinne.
Det er ingen beregnings system der ute
som kan slå en profesjonell Go-spiller.
Den beste systemer i dag rang det om den slags god amatørnivå.
Så det er fortsatt ganske mye ut det at du ikke kan få til enda.
>> Greit, disse tradisjonelle brettspill,
slike systemer der vi bygge dette minimax, enten det har
alfa-beta eller ikke, disse algoritmene arbeide fordi det er visse begrensninger.
Vi har perfekt informasjon om i verden.
Vi vet hvor alle bitene er.
Verden er statisk.
Ingen får flytte brikkene rundt mens jeg er
sitter der og tenker, tar min tur.
Det er en handling plass som er diskret.
Jeg kan sette min bonde her, eller jeg kan sette min bonde her.
Jeg har ikke lov til å sette min bonde på linjen mellom de to rutene.
>> Og til slutt, handlingene er deterministisk.
Jeg vet at hvis jeg sier, tårn til ridder tre,
min tårn kommer til å ende opp på ridder tre, så lenge det er en gyldig flytte.
Det er ingen usikkerhet om det.
Nå som jeg går til mer forskjellige typer spill,
vi nødt til å bryte disse forutsetningene.
>> Hva hvis jeg går til noe liker klassiske videospill?
Her er et utvalg av video spill fra Atari 2600.
Hva har jeg der oppe?
Jeg har Frogger, Space Invaders, fallgruve, og Pac-Man.
Hva slags miljøer har jeg her nå?
Hvilke av disse forutsetningene må jeg bryte?
>> Vel, det kommer an på spillet.
Jeg kunne spille sjakk på 2600, og det ville være akkurat som det var før.
For de fleste av disse systemene, er det fullstendig kunnskap om verden.
Det er helt deterministiske handlinger.
Men vanligvis er verden ikke lenger statisk.
Det vil si, mens jeg sitter der venter, er noe bevegelse.
Spøkelsene kommer til å få meg.
Skorpionen følger meg under.
Space Invaders er kommer nærmere og nærmere.
Hvor godt kan vi gjøre mot disse?
>> For noen år siden, Google hadde et prosjekt kalt
DeepMind, der de trente en datamaskin program for å spille Atari 2600 spill.
Og hvis du tror dette er ikke alvorlig virksomheten, resultatene av sine studier
ble publisert i Nature, så omtrent så god en publikasjon
som du kan muligens få.
Og her er hvor godt de har utført.
>> De har en algoritme som satt og så bare skjerm innganger.
Det fikk ingen instruksjoner hodet om reglene i spillet.
Og det var ment å finne ut, baserte sin poengsum, hvor godt det gjorde.
Dette var et system som brukes til noe kalt forsterkning læring.
Det vil si, det så ut på sitt poengsum.
Og hvis det fikk en god score, det er sagt, Jeg bør huske disse tingene.
Og jeg skal gjøre dem igjen.
Og hvis det fikk en dårlig score, det er sagt, Jeg skal ikke gjøre disse tingene på nytt.
>> Dette er ytelsen av disse trente systemer
lov til å spille for en noen timer på hvert spill,
sammenlignet mot profesjonelle spillere.
Så for alle spillene som er til venstre side av denne linje,
Denne selv trent dataprogram bedre enn de profesjonelle spillere.
Og for alt til rett, profesjonelle spillere
fortsatt var best.
For noe som visste ingenting om reglene, som
visste ingenting om strukturen av spill, er dette imponerende ytelse.
Og dette er hva vi er i stand til å gjøre i dag.
>> OK, sier du, men hvis vi tenke på AI i spill,
normalt tror vi om ting som vi faktisk kan
sitte ned og spille mot.
Hvis jeg setter meg ned og jeg spiller Starcraft, eller jeg spiller Gratis Sieve,
datamaskinen motstanderen er person styre Zerg,
eller kontrollere andre kultur.
Hvordan gjør de spillerne faktisk finne sine trekk?
>> Vel, disse spillene strukturert mye på samme måte som våre brettspill,
disse spillene at vi vil kollektivt kaller fire X Games,
utforske, expand-- glemme de.
Hva er de?
Utforske, utvide og slukke, Jeg tror jeg er den siste.
Men de er i utgangspunktet lete- og erobre spill.
Vanligvis datamaskinen motstanderen det har begrenset informasjon.
De vet ikke nøyaktig hva som er skjer bak at krigens tåke.
De får ikke til å se hva du har i din beholdning.
>> Det er et miljø som er dynamisk.
Alt er i endring hele tiden.
Du får ikke til å sitte og vente med å ta ditt trekk.
Men det meste er fortsatt diskret.
Jeg må sette min by her.
Eller jeg må sette min by her.
Og alt er deterministisk.
Når jeg sier, flytte min enhet her, min enhet beveger seg her, med mindre en hindring plutselig
kommer inn i bildet.
Nå, det er ikke alle PC spill som er der ute i dag.
>> Hvis jeg går og jeg spiller et første person typen spill, noe som Thief eller Fallout
eller Skyrim, eller Halo, nå Jeg har datamotstandere
som er der ute som har en helt annen situasjon.
De har, igjen, begrenset informasjon.
De bare kan se en viss synsfelt.
Miljøet er fortsatt dynamisk.
Ting er i endring hele tiden.
>> Men nå har jeg en mye mer kontinuerlig virkning plass.
Jeg kan bare titte en litt ut av døråpningen.
Og noen spill, min handlinger er stokastisk.
Jeg får prøve å hoppe over den veggen, men jeg har en sjanse for å mislykkes.
Disse typer spill nærmer og nærmere typer kontrollerne
at vi bygger i robotikk.
>> I robotikk, må vi anta at vi har begrenset informasjon.
Vi har sensorer som fortelle oss om verden.
Vi har en alltid skiftende, dynamisk miljø.
Vi har en verden der plassen er kontinuerlig, i stedet for diskret.
Og våre handlinger, når vi prøver dem, har en sjanse for å mislykkes.
Og faktisk, moderne spill kontrollere for din Halo motstander,
eller for de NPCer i Skyrim, i utgangspunktet kjøre små robotikk arkitekturer.
>> De fornemme verden.
De bygger en modell av verden.
De Beregn basert på et sett av mål som de ønsker å oppnå.
De planlegger tiltak basert på hva de vet.
Og de er nøyaktig de samme typer systemer som vi bygger i robotikk.
Så disse arkitekturer, til bringe dette tilbake sammen,
er ofte ganske like.
>> Så la oss se om vi kan se det.
La oss gå tilbake til vår tic-tac-toe eksempel.
Og jeg kommer til å be om et par min postdoktorer til å komme opp og hjelpe meg.
Så Chen Ming, og Alessandro, og Olivier, hvis dere skulle komme opp.
Og jeg kommer til å trenge et par frivillige
>> OK, så jeg en hånd opp rett der i midten.
La meg ta ett, noen videre i ryggen kanskje.
Greit, over der.
Kom opp.
Greit.
Så la oss ta det dekselet ned.
Og hvis dere skulle komme rett tilbake rundt her for meg, fantastisk.
>> Så dette er en robot som heter Baxter.
Og Baxter er en robot som er en kommersiell plattform, utformet
av et selskap kalt Rethink.
Og denne roboten er utformet for småskala produksjon.
Men i dag skal vi bruke den til å spille tic-tac-toe.
Nå er denne roboten også noe det er relativt unik.
Fordi hvis jeg ble stående overalt nær en standard fabrikk automasjon
system, vil jeg være i svært alvorlig fare for å bli skadet.
>> Baxter, men er utformet for å være relativt trygt å samhandle med.
Og så jeg kan presse på denne roboten.
Og du kan se det er en liten bit fleksibel når den beveger seg rundt.
Og jeg kan flytte den hvor jeg ønsker at det skal gå.
Nå i en normal robotsystem, vi ville ha et sett av ledd her
som ville være direkte svarer på posisjonskommandoer.
Og de ville ikke nødvendigvis bryr seg hvis de var i bevegelse gjennom friluft,
eller om de var i bevegelse gjennom min brystkasse.
>> OK.
Og vanligvis, hvis du var her med en industriell system,
du vil gå langt nær den.
Det ville være gul sikkerhet tape hele veien rundt.
Dette systemet har en litt annen utforming
å være vennligere og lettere for folk å samhandle med,
ved at det i hver skjøt, er det en fjær.
Og i stedet for å kontrollere nøyaktig posisjon,
Vi kontrollerer en viss mengde dreiemoment, en viss mengde kraft,
at vi ønsker å være på den våren.
Greit, så la meg ta våre frivillige her.
Hei, hva heter du?
>> PUBLIKUM: Louis.
>> SPEAKER: Louis.
Hyggelig å se deg.
Og?
>> PUBLIKUM: David.
>> SPEAKER: David.
Hyggelig å møte deg.
Hvis dere vil vente her for en andre,
Jeg kommer til å gi deg en sjanse til å gjøre dette.
Så dette robot, hvis du kommer opp og hvis du trykker forsiktig på det,
du kommer til å se at den beveger seg litt.
Og hvis du ta det riktig her på håndleddet bare
over hvor disse knappene er, det ser ut som du bør ta tak i knapper,
men grip rett ovenfor den i stedet, vil du kunne veldig forsiktig manipulere det
gjennom rommet.
Louis, ønsker du å gi det et forsøk?
Så gi det litt presse til å begynne med.
Og så hvis du putter fingrene akkurat der og holde på til det,
fordi det vil flytte for deg da.
Greit, du ønsker å gi det et forsøk?
Kom opp.
Så gi det bare en svak skyve det å starte.
Du kan føle hvordan det er.
Og så hvis du ta det der, vil du være i stand til å manøvrere rundt.
>> OK.
Så typisk, denne typen en robot ville brukes for småskala produksjon.
Og jeg kommer til å flytte denne armen like ned ut av veien litt her.
Men i dag, kommer vi til å bruke samme tic-tac-toe spille system
basert på minimax at vi bygget tidligere.
OK?
Så, dere er hver kommer til å spille et spill.
Louis, du kommer til å være først.
La meg bare holde opp her for et sekund.
Jeg kommer til å ha deg stå rett her, så alle kan se deg.
Skal dere sette opp her?
>> ROBOT: Velkommen.
La oss spille tic-tac-toe.
Ikke ta tak token før Jeg sier at det er din tur.
Jeg starter spillet.
Det er min tur.
SPEAKER: Nå, hvis du kunne ta en av brikkene dine og gå videre og plassere den.
ROBOT: Det er din tur.
[LATTER]
Det er min tur.
[LATTER]
Det er din tur.
SPEAKER: Den menneskelige rase er regner med deg her, Louis.
>> ROBOT: Det er min tur.
>> SPEAKER: Så Baxter vellykket blokkert her.
>> ROBOT: Det er din tur.
Det er min tur.
Det er din tur.
Det er min tur.
SPEAKER: Og vi skal la Baxter slutt ut sin siste trekk her.
>> [LATTER]
>> ROBOT: Det er uavgjort.
Jeg vil vinne neste gang.
>> [LATTER]
>> SPEAKER: Greit, Tusen takk, Louis.
Takk.
Du kan gå på denne måten.
>> ROBOT: Jeg starter spillet.
SPEAKER: Så la meg forklare til deg en mer lite
litt før vi får vår omkamp her.
Hva skjer?
Så roboten har et kamera opp toppen her.
Og det ser ned på brettet.
Og det er å se hvorvidt det har en rød O eller en blå
og hvit X. Som de blir plassert på bord, det er i utgangspunktet den samme inngang
at vi ville være å lese i fra vår datastruktur fra vår skjerm.
Det kjører det samme minimax algoritme for å være
i stand til å finne hvor du skal plassere et godt tegn.
>> Og så gir vi en kommando om hvor vi ønsker en token skal plasseres.
Armen går ut.
Det er ved hjelp av en vakuumgriper til å søke noen sug til at tre stykke,
plukke den opp, flytte den til høyre spot, og deretter slippe suge
og slipper det.
Greit, vi skal for å gi den en mer shot
med en litt smartere spiller her.
Er du klar?
Greit, hvis du vil stå rett opp her og gi a-- slå ut på denne måten
så du kan se alle.
Og så [uhørbart].
>> 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: [hvisken] Just la ham gå videre og vinne.
ROBOT: Det er din tur.
SPEAKER: Det er OK.
>> ROBOT: Det er min tur.
>> [LATTER]
>> Jeg vinner.
>> [LATTER]
>> Jeg starter spillet.
>> SPEAKER: Ok, takk.
Greit, jeg tror vi har fått tid til enda en utmerket tic-tac-toe-spiller,
noen som kan sette denne tingen å matche, som vet hva de gjør.
>> [LATTER]
>> Hvem kommer til å bli vår mester her?
Greit, venner frivillig deg.
Det er bra nok for meg.
Si meg navnet ditt igjen.
PUBLIKUM: Tamir.
SPEAKER: Tamir, hyggelig å se deg.
Greit, igjen, vi kommer til å sette deg rett opp her slik at alle kan se deg.
Du er vår representant i denne kampen nå.
Baxter er en og oh og oh.
Eller sorry, én oh og en.
Og det er opp til deg her.
Baxter vil komme til å flytte først, though.
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 mye vanskeligere når du står opp her, folkens.
[LATTER]
ROBOT: Du mennesker er så lett å slå.
[Latter og applaus]
SPEAKER: Takk veldig mye.
ROBOT: Jeg vinner.
Jeg starter spillet.
>> SPEAKER: Greit, så takk veldig mye til Olivier, og Alessandro,
og til Chen Ming.
>> [BIFALL]
>> Jeg ønsker å gjøre en siste punkt.
Så Baxter helt slutt der, jukset.
Og det var uventet.
En av de fantastiske ting om AI er at vi
utføre arbeid i AI slik at vi kan bygge veldig interessant og intelligent
enheter.
Men vi gjør også arbeid i AI fordi det forteller oss noe
om hvordan mennesker er intelligente.
>> En av favoritt studier fra min lab er
å se på hva som skjer når maskiner uventet jukse.
Vi gjorde dette opprinnelig ikke med Baxter spille tic-tac-toe,
men med en mindre robot som heter Nao, som spilte Stein, Saks, Papir.
Og noen ganger etter spille masse, masse
kjedelig Stein, Saks, Papir spill, roboten ville kaste en gest,
taper, og så plutselig endre sin gest og si, jeg vinner.
>> [LATTER]
>> Nå, noen ganger vil vi også ha robot, akkurat som en kontroll, kaste en gest,
vinne, og endre sin gest å tape, kaste kampen,
jukse for å miste.
Og det er ikke på langt nær så overbevisende.
Roboten som jukser for å vinne mennesker
svare på som om den er ut for å få dem, som det
er aktivt søker deres ødeleggelse.
>> [LATTER]
>> Det blir en agent.
Det er som en person.
Det har tro og intensjon.
Og det er ikke god intensjon.
Og roboten som kaster Spillet er bare feil.
Det er bare en ødelagt enhet.
La meg vise deg et par eksempler av at fra noen av våre deltakere.
Så her er juks for å miste.
>> [VIDEO PLAYBACK]
- [Uhørbart] vinne.
La oss leke.
>> -Wait, Hva?
>> - [Uhørbart] vinne.
La oss leke.
>> [Uhørbart] vinne.
La oss leke.
>> SPEAKER: Og her er juks å vinne.
>> -Ja, Vinner jeg.
La oss leke.
>> -Du Kan ikke gjøre det.
>> [LATTER]
>> -Ja, Vinner jeg.
-Du Jukset.
Du snytt nå.
>> -Ja, Vinner jeg.
>> -Hei, Du juksemaker.
Du jukser, super cheat.
>> [END PLAYBACK]
>> SPEAKER: Disse annerledes reaksjoner raskt
endre vår oppfatning av enheten.
Betyr det at vi bevisst bygge
maskiner som jukser fordi det er den beste ingeniør at vi kan gjøre?
Nei, men det forteller oss noe veldig interessant om mennesker.
At ting som jukser du og stjeler din seier, det er
noe som er i live, det er animere, som er ute etter deg.
Den har mentale tilstand.
Den har troen.
Den har intensjon.
>> At ting som hender i spillet for deg, er det ikke.
Det er bare feil.
Dette er på mange måter hvorfor det er lett å kaste spill med barna.
Men hvis du prøver å lure dem og liksom kreve seier
når, du vet, bare for å forkorte spillet, vil de ta deg med en gang.
Slike effekter som vi ser kommer ut av AI,
de lærer oss mye om oss selv.
>> Greit, det er det for i dag.
Tusen takk til David og Harvard produksjonsteamet
for å komme ned.
>> [BIFALL]
>> Vi ser deg for quiz en, og deretter for en siste forelesning.
Ha en fin dag.
>> [BIFALL]
>> [MUSIC SPILLE]
DAVID J MALAN: Vel, vi trolig trenger å innføre noen form for kryptering,
høyre?
Fordi da hodene av disse HTTP-forespørsler blir
egge slik at alle prøver å snuse trafikken
vil faktisk ikke være i stand til å se dem.
Så hva er løsningen på dette problemet?
Vel, må vi faktisk introdusere kryptering inn i formelen,
slik at når den personen er overføring av data fra A til B,
vi kan sikkert send--
>> [LATTER]
>> Informasjonen på en måte som Motstanderen kan ikke, faktisk ser det.