[RIPRODUZIONE DI BRANI MUSICALI] SPEAKER: Bentornato, tutti. Questo è CS50. E oggi, abbiamo un sacco di cose interessanti di cui parlare. Prima, però, devo ricordare si di un paio di cose amministrative. Questa settimana è un quiz, Mercoledì o per la sezione Yale il martedì e il giovedì, il Giovedi. Non ci sono recensioni quiz stasera a Yale, 5:30-07:00. Ad Harvard, hanno registrato uno ieri. E tutti possono vedere che on-line. Inoltre, questa settimana o all'inizio della prossima settimana, abbiamo la nostra ultima lezione CS50. [Geme] Lo so. E 'venuto così presto. Studenti di Yale avranno un live conferenza qui in scuola di legge auditorium il Venerdì. Ci saranno torta. Studenti di Harvard avranno la ultima conferenza in Sanders il Lunedi. Ci sarà anche la torta. Inoltre, questa settimana il Venerdì, per chi di voi che stanno venendo a New Haven, abbiamo il CS50 Expo. Abbiamo più di 30 diversi gruppi registrati per mostrare tutto da barche a vela autonomi, a sistemi che riconoscono ritratti digitali, al calcolatore musica e computer music-prodotta. Quindi, unitevi a noi. Penso che sarà un grande momento. Oggi, però, si arriva a continuare a parlare di intelligenza artificiale, sull'intelligenza artificiale. E una delle cose che stiamo andando a raggiungere oggi è l'idea di come utilizzare AI per risolvere i problemi. Ora, come sempre, cominciamo con qualcosa di semplice. E stiamo per iniziare con una semplice idea. E questo è utilizzando la ricerca. Quindi immaginate per un momento che io hanno un compito che ho bisogno di eseguire. E mi piacerebbe avere questo compito automatizzato da un agente software. Immaginate che io sto cercando di prenotare un set di voli da, diciamo, Boston a San Francisco. Potrei andare attraverso e ho potuto usare uno della meravigliosa ricerca online strumenti, che sta per fare fondamentalmente lo stesso processo che siamo andando a piedi fino ad oggi. Ma se non si dispone di tale strumento, cosa faresti? Beh, si potrebbe guardare e vedo e dico, io sono a Boston. Quali voli sono disponibili per me? Ora, forse ho tre voli possibili su Boston che si adatta il tempo quando ho bisogno di lasciare. Potrei volare a Chicago. Oppure potrei volare a Miami. Oppure potrei volare a New York. Potrei poi guardare da ogni una di quelle città di destinazione e pensare a ciò che posizioni Avrei potuto raggiungere da ciascuno di tali singole città. Così forse da Chicago, posso ottenere un volo diretto a San Francisco. Questo è eccellente. Oppure avrei potuto ottenere un volo per Denver. Ora, forse questo volo per San Francisco è la soluzione perfetta per me, ma forse no. Forse sto cercando qualcosa che è un po 'meno o un po 'meglio per la mia pianificazione. E così ho potuto guardare per quello che altri possibilità potrebbero essere là fuori. Così ho potuto guardare a Denver. E da Denver, beh, forse Posso ottenere un volo per Austin. E da Austin, forse posso ottenere un volo a Phoenix, e da Phoenix a San Francisco. Ora, io non ho ancora finito. Perché forse c'è un volo diretto da New York a San Francisco che è perfetto per me. O forse c'è un volo da Miami attraverso Denver che è molto più economico. Quindi devo ancora andare. E ho ancora di guardare a tutti coloro le città che non ho ancora indagati. Devo controllare esaustivamente tutti le possibilità che io possa avere. Così da New York, forse posso ottenere un volo a Nashville, e da Nashville a Austin. E poi io so dove mi trovo. E poi so da Austin, posso volare a Phoenix, e da Phoenix a San Francisco. Se io volo prima a Miami, però, forse posso prendere un volo da Miami a Nashville, o da Miami a Austin. E ora che ho provato tutto delle possibilità. Ho costruito questa grafico che mi mostra tutti i possibili percorsi che potrei essere in grado di prendere. Quando noi rappresentiamo questi tipi di problemi, non stiamo andando a rappresentare esplicitamente come questo grafico, perché tale grafico non rappresenta la storia di dove siamo andati. Sapendo che ho volato da Phoenix a San Francisco non mi dire se sono venuto via Nashville, o tramite Denver, o via Miami. Così che cosa farò invece è Prendo questo stesso problema, e io rappresento come un albero. E alla radice dell'albero, al top, io metterò il luogo che ho iniziato, Boston. E da Boston, guarderò tutte le possibili posizioni che posso viaggiare. Beh, in questo caso, ho avuto tre, Chicago, New York e Miami. E poi mi esplorare ciascuno di questi bambini nella struttura. Da Chicago, ho visto che ho avuto due voli. Ho potuto volare direttamente a San Francisco o a Denver. Ora San Francisco, che è il mio obiettivo. Questa è la mia destinazione. Che sta per essere una foglia di questo albero. Cioè, io non intenzione di andare da qualche parte dopo San Francisco. Da Denver, però, Posso volare da Denver a Austin, da Austin a Phoenix, e da Phoenix a San Francisco. E ora di nuovo, ho raggiunto una foglia. Potrei poi tornare a quello successivo città che non ho completamente esplorata. Sarebbe New York, andare indietro fino alla cima del mio albero, scendere a New York. Da New York, posso volare a Nashville, da Nashville a Austin, da Austin a Phoenix, e da Phoenix a San Francisco. E, infine, una città che ho non sono ancora guardato, Miami. Beh, da Miami ho detto che avevo due possibilità, Nashville o Austin. Se io volo a Nashville, beh, allora io volo da Nashville, a Austin, a Phoenix, a San Francisco. Se io volo a Austin, io volo Austin, a Phoenix, a San Francisco. E ora ho un albero. Si tratta di un albero completo. E 'tutte le possibilità e tutti i percorsi che ho potuto prendere. Cioè, se comincio a radice dell'albero in alto e scendo ad una delle lascia, mi dice non solo dove sto andando a finire, San Francisco, ma mi dice che il percorso che Ho bisogno di prendere per arrivarci. Ora, che uno di questi è il migliore? Beh, niente di questo problema ma mi dice quali di questi è la soluzione migliore. Forse mi interessa di più di quanto tempo sono in aria, o la distanza che sto volando. In tal caso, Chicago a San Francisco potrebbe essere il minor numero di miglia in aria. Forse mi interessa costo. E tutti sappiamo voli diretti sono generalmente più costosi. Quindi forse se prendo questo tipo di percorso a ritroso attraverso Miami, Nashville, Austin, Phoenix, forse allora Ottengo un prezzo più basso. Ma potrei ottimizzare su qualsiasi criteri che mi preoccupo. Chi ha il migliore volo connessione Wi-Fi, o che aeroporti hanno il miglior cibo disponibile. E ciascuno di questi potrebbe darmi una soluzione diversa che vedo come il migliore. Questi tipi di problemi, dove stiamo andando per costruire questo albero di possibilità, e poi guardare ciascuno di questi percorsi individuali, ed esaminare quale di questi soddisfa un criterio per noi, stiamo andando a chiamare questi problemi di ricerca. E abbiamo un sacco di algoritmi, alcuni dei quali abbiamo visto già, ad andare ed esplorare quegli alberi. Potremmo farlo nel modo in cui io appena fatto, una ricerca in profondità, scendendo per quanto possibile fino a quando non ha colpito una foglia, e poi tornare su, e andando a destra indietro. Oppure potremmo fare ciò che è chiamato ricerca in ampiezza. Potremmo ampliare tutto in alto, e quindi tutto una riga sotto quella, e poi tutto una riga sotto quella. Quegli alberi di ricerca sono fondamentali per AI. Ma essi non riesce quasi mai bene tutto il tempo. Infatti, in molti casi che abbiamo davvero a cuore, vogliamo costruire un albero, ma non lo facciamo davvero arrivare a fare tutte le decisioni. Si tratta di situazioni chiamati Ricerca contraddittorio, noto anche come come scrivere gioco giocare sistemi e pagati per farlo. Ma questi sono i tipi di sistemi in cui mi potrebbe arrivare a scegliere quando vado da Boston, quale città vado a successivo. Ma dopo che, qualcun altro potrebbe arrivare prendere la decisione su dove io volo. Quindi, per costruire questi strutture generi, siamo andando a prendere leggermente approccio diverso ad esso. Non stiamo andando per essere in grado di basta cercare attraverso l'albero più, perché non siamo quello che è in controllo di ciascuno di tali punti di decisione. Quindi cerchiamo di immaginare una semplice gioco come tic-tac-toe. Potrei iniziare con un bordo completamente vuoto. E nel tic-tac-toe, X arriva a giocare per primo. E così ho potuto pensare a tutto il possibili mosse che X potrebbe fare. E se sono io quella di gioco X, che è grande. Ho nove possibile mosse che posso fare. Potrei mettere una X in uno qualunque di questi nove posizioni. E poi da ciascuno di questi, I poteva immaginare cosa succede dopo. Ebbene, in questo caso, l'altra giocatore dovrebbe arrivare a prendere una piega. O sarebbe arrivare a prendere una piega. E da ciascuno di questi, ci sarebbe otto luoghi diversi O che potrebbe mettere il proprio segnalino. Diciamo che ho deciso che ero andando a mettere una X al centro. Che sembra sempre come una buona mossa di apertura. Potevo guardare sotto quella, la otto possibili mosse che O fa. Ora, se sto giocando X, è meraviglioso. Mi capita di scegliere quale io andare, quella nel mezzo. Ma ora O deve scegliere. E io non ho il controllo su tale decisione. Ma a ciascuno di tali possibili posizioni di bordo, c'è poi un altro set di possibilità. Quando si tratta di essere Il mio turno di nuovo, vorrei arrivare a scegliere e dire, beh, se O si sposta nella, beh, il punto centrale sulla sinistra, poi Ho una serie di possibilità dove posso prendere la mia prossima mossa. Da quelli, ho potuto prendere in considerazione tutti le possibilità sotto di loro. E poi O otterrebbe di scegliere tra quelli. E potrei continuare a costruire questo albero fuori fino a quando ho avuto modo di punto dove sia qualcuno vince la game-- che è Deve essere considerata una foglia node-- o la scheda è completamente pieno e nessuno ha vinto. E questo anche sarà un nodo foglia. Che sta per essere un pareggio. Ma la cosa difficile di questo è se questo fosse solo una ricerca normale problema, sarei in grado di per esempio, beh, X dovrebbe andare qui. E O dovrebbe andare laggiù. E allora X dovrebbe andare qui. E poi O dovrebbe andare laggiù. E allora X può ottenere tre in fila, e vinco. E il gioco sarebbe finito in cinque mosse, tre per me, due per il mio avversario. Ma non sempre arrivare alla scelta che. Così, invece, ciò che siamo andando ad avere a che fare è che stiamo andando ad avere avere una nuova strategia. E la strategia che Algoritmi di gioco-gioco utilizzano spesso è ciò che è chiamato minimax. L'idea centrale Minimax è che siamo andando a scegliere la mossa che dà il nostro avversario peggiore possibile di mosse che si può fare. Non fa nulla di buono mi di scegliere una mossa in cui Potrei essere in grado di vincere dopo che, perché il mio avversario non è andando a darmi questa possibilità. Stanno andando a scegliere alcuni esito terribile per me. Quindi ho intenzione di fare il mossa che costringe il mio avversario di fare qualcosa di meglio per me. Tutto ok. Vediamo come che gioca fuori. Quindi, ecco il nostro algoritmo in pseudocodice. Stiamo andando a generare l'intero albero gioco. Stiamo andando a costruire l'intera struttura. E poi andremo attraverso. E in fondo a ciascuno dei nodi terminali, a ciascuna delle foglie, noi valuteremo come prezioso è che a me? E stiamo andando a cose di valore che sono buoni per me come essere positivo. Le cose che non sono buone per me sarà meno positivo, o zero, o addirittura negativo. Così nel tic-tac-toe, forse una vittoria per me è buona. Questo è uno. E una cravatta è zero. E qualcosa che è una perdita per me, forse è uno negativo. Tutto ciò che conta è che il meglio è per me, più alto è il punteggio riceve. Da queste possibilità al fondo, poi ci filtriamo verso l'alto. E quando è il mio possibilità di scegliere tra un insieme di alternative, Io sceglierò quello che è ha ottenuto il punteggio più alto. E ogni volta è il mio avversari rivolgono a scegliere, Darò per scontato che andranno a scegliere quello con il punteggio più basso. E se faccio questo tutto il senso fino alla cima dell'albero, Io ho scelto un percorso che dà me il miglior risultato che posso ottenere, partendo dal presupposto che il mio avversario rende tutte le mosse giuste. Va bene, vediamo questo in azione prima. E poi ci troveremo a guardare il codice per esso. Quindi immaginate ho questo grande albero. E ora non sto giocando tic-tac-toe. Volevo darvi qualcosa di un po 'più ricco. Così ho avuto qualche gioco in cui ci sono molti diversi punteggi che avrei potuto alla fine. E così ho costruito questo albero completo. E mi capita di passare per primo. Sono alla radice dell'albero. E posso scegliere che-- così ottengo per massimizzare attraverso quel primo nodo. E poi il mio avversario arriva a andare. E poi mi capita di andare ancora una volta. Quindi giù in fondo, ho un gruppo di possibilità che posso scegliere, diversi stati terminali del gioco. Se sono in tale all'estrema sinistra angolo mano, e vedo che ho un scelta tra un otto, un sette, e due, bene, sono io quello che deve scegliere. Quindi ho intenzione di scegliere il migliore di quelli. Ho intenzione di scegliere il otto. Quindi so che se avessi mai scendere a quel punto, Sarò in grado di ottenere che le otto punti. Se finisco al punto successivo sopra, il nodo successivo sopra, un nove, uno, o un sei, bene, sono andando a scegliere il migliore di quelli. Scelgo nove. Se ho una scelta tra due e quattro, e uno, Scelgo il quattro, il più alto. Ora, se guardo a livello superiore a quello, il mio avversario è quello arriva a fare questa scelta. Quindi il mio avversario ha a Scelgo, voglio dargli la cosa che sta succedendo per ottenere gli otto punti, o ne gli do la cosa che è intenzione di dargli nove punti, o la cosa che sta andando per dargli quattro punti? E il mio avversario, essendo razionale, sta andando scegliere il minimo di questi, sta per scegliere il quattro. E posso fare questo attraverso l'intero albero. Posso andare fino a quel insieme mezzo di tre. E posso scegliere tra uno, tre e cinque. E posso scegliere. Così ho scelto un cinque. Posso scegliere tre, nove, o due. Posso scegliere, così ho scelto il nove. Sei, cinque, o due, ho scelto. Mi capita di scegliere il sei. Livello superiore a quello, chi può scegliere? Chi arriva a scegliere? L'altro ragazzo, il mio avversario. Così hanno scelto cinque, nove, o sei, quale? PUBBLICO: I cinque. SPEAKER: Scelgono il cinque. Si arriva a scegliere il minimo. E poi l'ultimo, scegliere una, due, o tre. Posso scegliere, così ho scelto tre. Nove, sette, o due, scelgo nove. E 11, sei, o quattro, scelgo 11. Il mio avversario sceglie poi di tre, nove, o 11, sceglie il minimo. Mi dà un tre. E infine in cima l'albero, mi arriva a scegliere di nuovo. E mi capita di scegliere tra quattro, cinque, o tre. Così prendo il cinque. Se ho avuto modo di controllare tutto, mi piacerebbe prendere il sentiero che portava al 11. Ma io non arrivare a fare quella scelta. Se vado su questa strada. Il mio avversario mi costringerà in la scelta che porta a tre. Quindi la cosa migliore che posso fare è a prendere quel ramo di mezzo, fare questa scelta che è alla fine andando a mi portano a cinque punti. Questo è ciò che fa minimax. Tutto ok. Diamo uno sguardo a questo. Così qui in CS50 IDE è un programma che implementa minimax a giocare tic-tac-toe. Stiamo andando a costruire su una rappresentazione. Stiamo per avere due opponent-- o due giocatori, il nostro computer giocatore e un giocatore umano. Giocatore numero uno ci sarà O. che sarà il giocatore della macchina. Ottengono di muoversi secondo. E l'altro giocatore, il nostro giocatore umano, sarà X. E per rendere la mia vita un poco semplice, io vado etichettare quella lettore uno negativo. Quindi posso solo moltiplicare da un negativo di scambiare tra un giocatore e l'altra. Va bene, quindi cerchiamo di dare un'occhiata a quello che stiamo effettivamente andando a fare. Stiamo andando a definire la nostra tavola. Sta andando per essere, beh, stiamo andando per permettere che sia tre per tre, o possiamo anche giocare cinque da cinque o sette per sette tic-tac-toe Se desideri come, sulla base di una dimensione D. E avremo una coppia di funzioni di supporto basta così le cose come inizializzare il screen-- o dispiaciuto, inizializzare le nostre variabili, deselezionare la schermo, disegnare il bordo dello schermo, uno che controlla un consiglio per vedere se non c'è un vincitore, che analizza attraverso la riga di comando, solo per dare una mano, uno che legge ingresso, e una funzione chiamata minimax. E questo è quello ci preoccupa di più di. Ma diamo un'occhiata prima al principale. Cosa facciamo? Beh, stiamo andando a analizzare la nostra linea di comando, appena letto e vedere cosa bordo dimensione ci piacerebbe avere. Ti Inizializziamo nostra tavola. E poi ci entreremo uno grande anello selvaggio, ripetutamente accetta si muove fino a quando il gioco è ha vinto, o non ci sono movimenti di sinistra. Ogni volta che andiamo attraverso quella cappio, faremo cancellare lo schermo. Noi disegneremo la scheda sullo schermo. E siamo deliberatamente sorta di astraendo questi via come subroutine, in modo che noi non dobbiamo preoccuparci troppo circa i dettagli di come accadono. Avrete il codice più tardi oggi. E se si vuole guardare attraverso e scoprire, è possibile vederli tutti. Ma noi disegniamo una scheda sullo schermo. E poi controlleremo e vedere, abbiamo un vincitore? Qualcuno ha vinto questo gioco? Se hanno, faremo stampare un messaggio di vittoria. E finiremo il gioco. Ci sarà anche il check e vedere se c'è un pareggio. Sarà facile per vedere se c'è un pareggio. Ciò significa che tutti gli spazi sono pieni, ma non è stato ancora un vincitore. Siamo in grado di dichiarare un pareggio e da fare. Poi il vero meat-- se si tratta di un giocatore della macchina, ci permettiamo che giocatore della macchina per la ricerca attraverso l'utilizzo di questo algoritmo Minimax, per trovare la migliore mossa che può. E poi ci metteremo quella mossa su. In caso contrario, se si tratta di un giocatore umano, leggeremo qualche input da quella umana. E poi se è l'uomo giocatore o il giocatore della macchina, faremo un paio po ' bit di controllo degli errori, assicurarsi che rimanga entro i confini delle dimensioni effettive del consiglio che abbiamo, fare in modo che tale spazio è vuoto, che nessuno ha messo un pezzo in là già. E poi ci appena messo un pezzo sulla scacchiera, cambiare il giocatore al livello successivo, e incrementare il numero di mosse accaduto. Questo è il ciclo principale per il nostro gioco tic-tac-toe. Minimax, allora, è proprio l'algoritmo che prima. L'unica regolazione che abbiamo fatto in modo che si può giocare più alto tavole dimensionali è che abbiamo mantenuto questo parametro extra chiamato profondità. E profondità dice solo, se sono la ricerca verso il basso attraverso quell'albero e ho così in basso al di là di un certo livello di profondità che io non voglio di andare oltre, Ho intenzione di fermarsi e solo valutare il bordo in quel punto. Vado a controllare e vedere se c'è un vincitore. Se c'è un vincitore, li torno. In caso contrario, vado attraverso un ciclo. E io dico, per tutti le posizioni possibili che avrei potuto forse prendere come la mia mossa, io ti costruire una scheda ipotetico che include la mia mossa su quel bordo, e poi chiama ricorsivamente minimax. Se è la mia mossa, riesco a trovare il uno che ha ottenuto il maggior punteggio. Se si tratta di mossa del mio avversario, troviamo quello che ha ottenuto il punteggio minimo. E tutto il resto è tenuta proprio record. Va bene, vediamo questa corsa. A dire il vero, forse possiamo ottenere un paio di volontari a venire e giocare a tic-tac-toe. [Incomprensibile] uno, e uno di più, due, proprio lì. Vieni su. Quindi cerchiamo di andare avanti e riavviare questo completamente. Quindi, ciao. PUBBLICO: Ciao. SPEAKER: Qual è il tuo nome? PUBBLICO: Gorav. SPEAKER: Gorav. PUBBLICO: Io sono Layla. SPEAKER: E Layla, e Layla, mi dispiace. Vieni su. Gorav, stiamo per avere di andare prima. E ho intenzione di chiedere di essere un non terribilmente buon giocatore tic-tac-toe. OK, così tutta la pressione è su di voi. Vediamo, però, che la nostra macchina giocatore può realmente fare qualcosa di intelligente. Quindi, andare avanti. Stai andando a digitare il quale coordinare volete mettere il vostro X. A0, OK, e la macchina è andata subito e mettere il suo marchio in A1. Mettere la O sulla scheda. Va bene, ora andare avanti. Dove vorresti andare? C2. Il nostro giocatore ha preso la macchina la piazza centrale, è bloccato. Così che era un bene, cosa intelligente per poter fare. Hai bloccato esso. Questo è eccellente. Si batte il corner lì. E sta andando a costringere a prendere un ultimo spazio, B0. E la partita finisce in parità. Ma ha giocato un ragionevole gioco contro di te, giusto? Va bene, grazie mille, Gorav. [APPLAUSI] Va bene, Layla, stiamo andando il gioco su di voi qui. PUBBLICO: Oh, grande. SPEAKER: Stiamo andando a dare voi quattro da quattro tic-tac-toe. Ora, a quattro a quattro, devi vincere con quattro di fila, non tre di fila. Ed è tutto tuo. Così Layla ha preso D1. Stiamo andando a seguire il nostro giocatore di computer qui. Tre per tre tic-tac-toe è il tipo di cosa che è facile per tutti noi. Ma è ancora bello vedere la giocatore del calcolatore fare mosse intelligenti. Quattro per quattro arriva a essere un po 'più complicato. Ben fatto. Va bene, così Layla di finito fuori. Oh, e avremmo dovuto finita lì. Ma facciamo un altro qui. Così Layla, grazie. Ben fatto. [APPLAUSI] Così il nostro giocatore tic-tac-toe va attraverso e trova luoghi, risolve utilizzando questo minimax. E ho avuto una regolazione della profondità in tale modo che non avrebbe eseguito troppo veloce, che è probabilmente il motivo Layla è stato in grado di andare ben prima come ha fatto, e ha fatto molto bene. Ma questi sistemi che solo passare attraverso e forza bruta andare più a fondo, e più profondo, e più in profondità, e continuare a trovare la soluzione che hanno bisogno, questo tipo di sistemi sono molto successo a questi, beh, giochi da tavolo standard. E infatti, se guardiamo un tre per tre gioco tic-tac-toe, questo è fondamentalmente un problema risolto. E questo è un diagramma meraviglioso da Randall Munroe a XKCD, mostra che si muovono si dovrebbe prendere, dato le mosse dell'avversario. Questo è qualcosa che potremmo facilmente specificare prima del tempo. Ma cosa succede quando si arriva a più giochi complessi, i giochi più complessi, dove ci sono grandi tavole, più possibilità, la strategia più profondo? Si scopre che questo forza bruta alla ricerca ancora fa abbastanza bene, tranne quando si arriva al punto qualora tale albero è così grande che non si può rappresentare tutto. Quando non è possibile calcolare l'intero albero, quando non si può andare avanti e spingere voi stessi al punto in cui hai ottenuto l'intero albero in memoria, o se si può ottenere in memoria e sarà solo prendere troppo tempo per la ricerca in esso, devi fare qualcosa di più intelligente. Per fare questo, si hanno a che fare due cose. In primo luogo, è necessario trovare qualche modo di limitare la profondità. Beh, questo è OK. Possiamo trovare qualche bella, minimo e dire, si può solo andare così in profondità. Ma quando lo fate, che significa avere queste schede parzialmente incomplete. E devi scegliere, mi piace fare questa scheda parzialmente incomplete, o questo forum parzialmente incompleto? E sul nostro quattro da quattro gioco tic-tac-toe, il nostro giocatore di computer scese al fondo e detto, Ho due schede diverse. Nessuno dei due è una vittoria. Nessuno dei due è una perdita. Nessuno dei due è un pareggio. Come faccio a scegliere tra di loro? E non ha avuto un modo intelligente di farlo. Vediamo questo tipo di Valutazione accade tutto il tempo come otteniamo in giochi più complessi. Gli scacchi sono un grande esempio. Negli scacchi, abbiamo, prima di tutto, una tavola più grande. Abbiamo molti più pezzi. E il posizionamento di questi pezzi e il modo in cui questi pezzi muovono è di fondamentale importanza. Quindi, se voglio usare Minimax, Ho bisogno di essere in grado di specificare e dire, questa tavola, dove nessuno ha vinto o perso ancora, è in qualche modo meglio di questo altro bordo, dove nessuno ha vinto o perso. Per fare questo, potrei fare cose come potrei solo contare quanti pezzi devo e quanti pezzi avete? Oppure potrei dare diverso pezzi diversi punti. Mia regina vale 20 punti. La vostra pedina vale un punto. Chi ha il totale più punti? Oppure potrei considerare le cose come, chi è che ha avuto la meglio posizione di bordo? A chi tocca il prossimo, tutto ciò che posso non per valutare con maggiore precisione quale di queste possibilità è meglio senza esaustivamente in considerazione ogni mossa che potrebbe venire dopo. Ora, per fare quel lavoro, una delle cose che è sta per diventare veramente importante per noi non è solo muovendo dritto fino ad una profondità particolare limite, ma essere in grado di dire, una di queste idee che avere è così male che è Non vale la pena considerare tutti i modi possibili che le cose possono andare di male in peggio. Per fare questo, si aggiungerà in minimax un principio chiamato alph-beta. E alfa-beta dice: se si dispone di una cattiva idea, non perdete il vostro tempo cercando di scoprire esattamente quanto è fatto male. Così qui è quello che andremo a fare. Stiamo andando a prendere la stessa principi che avevamo prima, lo stesso tipo minimax di ricerca, solo noi siamo andando tenere traccia, non solo della valori reali che abbiamo, ma ce la faremo tenere traccia dei migliori possibili valore che ho potuto ottenere, e la peggiore possibile esito avrei potuto. E ogni volta che il peggiore possibile cosa sta cercando probabile, Io abbandonare quella parte dell'albero. E non voglio nemmeno guardando più. Va bene, quindi immaginiamo che cominciamo con questo stesso albero esatto gioco. E ora stiamo per andare giù di nuovo, fino in fondo a quello in basso a sinistra. E in quella in basso a sinistra angolo, ci guardiamo e valutiamo questa scheda. Forse è un quattro per quattro tic-tac-toe bordo, o forse è una scacchiera. Ma noi guardiamo, e valutiamo esso, e si ottiene un valore di otto. A quel punto, sappiamo che ci accingiamo a ottenere almeno otto punti di questa decisione di fondo. Non importa ciò che l'altro due sono, che sette e che due. Potrebbero essere i valori volevano essere. Stiamo per arrivare a almeno otto punti. Va bene, ma abbiamo potuto andare avanti e controllare. Forse uno di loro è meglio di otto. Guardiamo il sette. Va meglio di otto? No, questo non cambia nostro parere affatto. Guardiamo i due. Va meglio di otto? No, questo non cambia nostro parere affatto. Così ora sappiamo abbiamo esaurito tutte le possibilità lì. Non abbiamo intenzione di ottenere niente di meglio di otto. Stiamo per ottenere esattamente otto. E così cambiamo quel nodo e per esempio, che è ormai una certezza. Saliamo di un livello superiore a quello. E ora sappiamo qualcosa su quel livello di minimizzazione. Sappiamo che non riusciremo mai a ottenere più di otto punti se ci vanno giù quella direzione. Perché anche se quelli altri due rami risultano ad essere fantastico e vale la pena migliaia di punti ciascuno, il nostro avversario ci darà il minima, e ci danno l'otto. D'accordo, beh, vediamo. Vi terremo andando su questa strada. Scendiamo a quella centrale sulla sinistra. Guardiamo verso il basso e si vede c'è un nove. Sappiamo che stiamo andando a ottenere almeno nove punti scendendo quella strada di mezzo. E a questo punto, possiamo semplicemente mettere in pausa. E possiamo dire, guarda, io conoscere nel livello superiore, Ho intenzione di ottenere non più di otto punti scendendo questa direzione. Ma se sono andato giù la metà percorso anziché il percorso di sinistra, Vorrei avere almeno nove punti. Il mio avversario non sta andando mai fammi andare su questa strada di mezzo. Ottengono di scegliere. E che stanno andando a scegliere il percorso a sinistra verso le otto, piuttosto che giù la metà verso ciò che è di almeno nove punti. A quel punto, mi fermerò. E io dico, sai una cosa? Non devo guardare qualsiasi più in tale direzione. Perché sto andando mai arrivarci. Posso saltare quello, e posso saltare che sei, Perché questo è mai succederà. Quindi vado giù e ti considerare la possibilità successiva. Vado lì e dico, vedo due. So che se mi a qui, io sono andando ad ottenere almeno due. OK. Continuo ad andarci. Vedo un quattro. So che sto andando ottenere almeno quattro. C'è ancora molto tra quattro e otto, però. Quindi continuo ad andarci. Abbasso lo sguardo e vedo che c'è uno. Va bene, so che se Vado su questa strada, Ho intenzione di essere in grado di scegliere i quattro. Che cosa il mio avversario sta per fare? Tra una cosa che mi dà otto, qualcosa che mi dà quattro, e qualcosa che mi dà almeno nove, bene, ha intenzione di darmi il quattro. E so che ora al molto alto, ho intenzione per poter ottenere almeno quattro punti su questo gioco. L'intera idea di alfa-beta è quello di tagliare le parti l'albero in modo che io non li guardo più. Ma sembra ancora come se fossi stato guardando un sacco di albero. Andiamo avanti verso il basso. Andremo giù il prossimo ora. Nel fondo, ho trovato uno. So che sto andando ottenere almeno uno. Continuo a guardare. Trovo un tre. So che sto andando ottenere almeno tre. Continuo ad andarci. Trovo un cinque. So che sto andando ottenere cinque se Scendo in quel percorso. E so anche allora che il mio avversario, se io scegliere mezzo le tre grandi scelte, ha intenzione di darmi qualcosa che è cinque o meno. OK. Posso andare avanti lì. Posso guardare giù e io può dire, che cosa sono io che vado per ottenere, se vado giù la via di mezzo? Io vado a prendere, beh, tre lì. Ho intenzione di ottenere qualcosa che è almeno tre. Ci sono ancora cose tra tre e cinque, in modo da continuare a cercare. Oh, un nove, ci tornerò sicuramente prendere che nel corso di un tre. Ho intenzione di ottenere almeno nove se vado su questa strada di mezzo. Ora il mio avversario si ferma e dice: guarda, non c'è più nessun punto. So che il mio minimizzazione avversario, lui è andando a darmi la cosa che è minore o uguale a cinque, piuttosto che la cosa che è maggiore o uguale a nove. Mi fermo. Io non guardo più a questo. Continuo ad andarci. Abbasso lo sguardo su questo. Fino in fondo, trovo un sei. So che sto andando ottenere almeno sei. E che cosa posso fare? Posso smettere. Perché c'è una scelta tra qualcosa che è almeno sei e qualcosa che è inferiore a cinque, lui è andando a darmi la cosa che è inferiore a cinque. E adesso so che sto andando per ottenere esattamente quella scelta. Ho intenzione di ottenere che cinque scelta. Vado indietro fino alla cima. Quali sono io che vado a scegliere tra qualcosa che è maggiore o uguale a quattro, o qualcosa che è pari a cinque? Vado a prendere qualcosa che sono almeno cinque. Scendo l'ultimo percorso, tutto la via verso il fondo. C'è un uno. OK, almeno io vado a prendere un punto. Continuo ad andarci. Due, oh, che è meglio di uno. Ho intenzione di ottenere almeno due. Trovo un tre. So che sto andando ottenere tre. E il punto sopra che, il mio avversario sta andando darmi qualcosa che è minore o uguale a tre. E ora posso smettere. Perché nella scelta tra me essere in grado di ottenere un cinque e il mio avversario darmi qualcosa di meno di tre, Sono sempre andando a prendere quel cinque. Quindi non valuto che parte inferiore della struttura a tutti. Ora, questo può sembrare minore. Ma quando piccoli pezzi di aritmetica, superiore e inferiore, può tagliare via intere parti di questo albero in crescita esponenziale, che porta ad un enorme quantità di risparmio, risparmio che sono abbastanza grandi che ho può iniziare a giocare in modo competitivo a più giochi complessi. Va bene, se guardiamo le dimensioni e la complessità dei diversi giochi, tic-tac-toe è stato il nostro semplice esempio. Abbiamo una piccola tavola, tre a tre. Otteniamo, al massimo, una media di circa quattro diverse scelte come andiamo attraverso il gioco. Abbiamo da qualche parte intorno al 10 quinto possibili diverse foglie. E la costruzione di un tic-tac-toe giocatore, beh, abbiamo appena fatto. È facile. Se andiamo fino a qualcosa di più complesso, come Connect Four. Ti ricordi di questo gioco in cui si lascia cadere i piccoli gettoni? Si tratta di un sei da sette a bordo, Non che molto più grande, ancora ha circa la stessa ramificazione fattore come tic-tac-toe. Ho circa quattro scelte dove posso mettere le cose in. Ma ora, ho molto di più conduce, 10 al 21 di alimentazione. Questo è qualcosa che è facile abbastanza che risolviamo subito. Dama, più si complex-- ottenuto un otto per otto bordo. Tu sei solo su metà della in qualsiasi momento, anche se. Hai una ramificazione fattore che è circa 2,8. Bene, abbiamo un paio mosse si può prendere. Hai avuto circa 10 per le foglie 31, più grandi e più grandi, e grandi spazi. Come ho per la ricerca in quegli spazi sempre più grandi, in quel momento che le cose come alfa-beta e essere in grado di tagliare via i rami interi diventa essenziale. Ora, dama era abbastanza facile nel 1992. Un programma per computer chiamato Chinook battere le pedine mondo campione, Marion Tinsley. E da allora, non giocatore maestro umano ha stato in grado di battere i migliori sistemi computazionali. Se guardiamo a qualcosa come gli scacchi, ora ancora una volta, abbiamo un otto per otto bordo. Ma noi abbiamo molto più complessa pezzi, molto più complessi. movimenti Abbiamo un fattore di ramificazione di circa 35, 35 possibili mosse in media che posso prendere, e uno stato spazio, un numero di foglie che è cresciuto a 10 alla potenza 123, un enorme numero di possibilità. Ancora oggi, i moderni processori sono in grado di farlo con successo. Nel 1995 e poi nel 1997, un computer programma chiamato Deep Blue costruito da IBM che correva su un supercomputer gigante battere il campione del mondo in carica, Garry Kasparov. Questo è stato un punto di svolta. Oggi, tuttavia, lo stesso trattamento Potenza siede sul mio MacBook. Velocità di elaborazione continua sempre più veloce. Possiamo valutare più tavole più veloce. Ma ancora più importante, abbiamo una migliore funzioni di valutazione e una migliore potatura Metodi. Così possiamo cercare il spazio più complesso. Il più grande del consiglio di amministrazione giochi che si può pensare, qualcosa di simile Go che è ha ottenuto un 19 da 19 a bordo, ora improvvisamente, siamo oltre il punto dove sistemi computazionali possono vincere. Non c'è computazionale sistema là fuori che può battere un giocatore professionista Go. I migliori sistemi oggi rango esso su il genere di buon livello amatoriale. Quindi c'è ancora un bel po 'fuori lì che non si può ottenere ancora. Va bene, questi giochi da tavolo tradizionali, questi tipi di sistemi in cui costruire questo minimax, se è ottenuto alfa-beta o meno, questi algoritmi funzionano perché ci sono alcuni vincoli. Abbiamo informazioni perfetto sul mondo. Sappiamo dove tutti i pezzi sono. Il mondo è statico. Nessuno arriva a spostare il pezzi in tutto, mentre io sono seduto lì a pensare, prendendo il mio turno. C'è uno spazio di azione che è discreta. Posso mettere la mia pedina qui, o posso mettere la mia pedina qui. Non mi è permesso di mettere il mio pedone su la linea tra le due piazze. E, infine, le azioni sono deterministiche. Io so che se dico, Torre di cavaliere a tre, la mia Torre sta per finire al cavaliere tre, purché sia ​​una mossa valida. Non c'è incertezza su questo. Ora, come vado a più diversi tipi di giochi, dobbiamo spezzare tali ipotesi. Che cosa se vado a qualcosa come i videogiochi classici? Ecco una selezione video giochi da Atari 2600. Cosa devo lassù? Ho Frogger, Spazio Invaders, Pitfall, e Pac-Man. Quali tipi di ambienti devo qui ora? Quale di queste ipotesi devo rompere? Ebbene, dipende dal gioco. Potrei giocare a scacchi sul 2600, e sarebbe proprio come lo era prima. Per la maggior parte di questi sistemi, c'è conoscenza completa circa il mondo. C'è tutto azioni deterministiche. Ma di solito, il mondo del non statico. Cioè, mentre io sono seduto lì in attesa, qualcosa si sta muovendo. I fantasmi sono venuta a prendermi. Lo scorpione mi segue sotto. Gli invasori spaziali sono sempre più vicina. Come ben si può fare contro questi? Qualche anno fa, Google aveva un progetto chiamato DeepMind, dove si allenavano un computer programma per giocare Atari 2600 giochi. E se pensate che questo non è grave affari, i risultati del loro studio sono stati pubblicati su Nature, così solo circa buono una pubblicazione come si può eventualmente ottenere. Ed ecco quanto bene si sono esibiti. Hanno un algoritmo che sedeva e guardato solo gli ingressi dello schermo. Ha ottenuto istruzioni di sorta le regole del gioco. E avrebbe dovuto capire, ha basato la sua partitura, quanto bene si stava facendo. Questo era un sistema che utilizza qualcosa chiamato apprendimento per rinforzo. Cioè, ha guardato a suo punteggio. E se si fosse un buon punteggio, ha detto, Dovrei ricordare quelle cose. E devo fare quelli di nuovo. E se si ha un cattivo cliente, ha detto, Non dovrei fare di nuovo quelle cose. Questa è la performance di tali sistemi addestrati permesso di giocare per un poche ore su ogni gioco, confrontato con giocatori professionisti. Così per tutti i giochi che sono sul lato sinistro di questa linea, questo programma per computer autodidatta sovraperformato i giocatori professionisti. E per tutto il a destra, i giocatori professionali erano ancora il migliore. Per qualcosa che sapeva nulla circa le regole, che non sapeva nulla della struttura del giochi, questo è la prestazione impressionante. E questo è ciò che siamo in grado di fare oggi. OK, direte voi, ma se ci pensare di AI in giochi, Normalmente pensiamo al cose che possiamo realmente sedersi e giocare contro. Se mi siedo e suono StarCraft, o io gioco gratuito Sieve, l'avversario computer è il persona che controlla gli Zerg, o il controllo del altra civiltà. Come fanno quei giocatori effettivamente trovare loro mosse? Ebbene, questi giochi sono strutturati più o meno allo stesso modo in cui i nostri giochi da tavolo, questi giochi che ti collettivamente chiamare quattro giochi di X, esplorare, expand-- dimenticare quelli. Cosa sono? Esplora, espandere, e spegnere, Credo che sia l'ultima. Ma sono fondamentalmente esplorazione e impera giochi. In genere, il computer avversario ci deve informazioni limitate. Non sanno esattamente che cosa è succede dietro quella nebbia di guerra. Essi non arrivare a vedere che cosa avete nel vostro inventario. C'è un ambiente che è dinamico. Tutto sta cambiando tutto il tempo. Non si arriva a sedersi e l'ora di prendere la vostra mossa. Ma la maggior parte le cose sono ancora discrete. Devo mettere la mia città qui. O devo mettere la mia città qui. E tutto è deterministico. Quando dico, spostare la mia unità qui, la mia unità si muove qui, a meno che un ostacolo improvviso entra in gioco. Ora, questo non è tutto di computer giochi che sono là fuori oggi. Quando sarò andato e io gioco una prima persona di tipo gioco, qualcosa come ladro o Fallout o Skyrim, o Halo, ora Ho avversari controllati dal computer che sono là fuori che hanno una situazione molto diversa. Hanno, ancora, informazioni limitate. Hanno solo possono vedere un certo campo di vista. L'ambiente è ancora dinamico. Le cose stanno cambiando tutto il tempo. Ma ora ho un molto più spazio azione continua. Posso essere solo un Sbirciare po 'fuori dalla porta. E alcuni giochi, la mia azioni sono stocastico. Ho la possibilità di provare a saltare su quel muro, ma ho avuto la possibilità di fallire. Questi tipi di giochi sono sempre più vicini e più vicino al tipo di controller che costruiamo nella robotica. Nel campo della robotica, dobbiamo assumere che abbiamo informazioni limitate. Abbiamo sensori che ci raccontano il mondo. Abbiamo un sempre mutevole, ambiente dinamico. Abbiamo un mondo in cui lo spazio è continuo, piuttosto che discreta. E le nostre azioni, quando cerchiamo loro, hanno la possibilità di fallire. E infatti, calcio moderno controller per il tuo avversario Halo, o per quelle NPC in Skyrim, in fondo eseguire piccole architetture di robotica. Sentono il mondo. Costruiscono un modello del mondo. Calcolano basano su una serie di obiettivi che vorrebbero realizzare. Hanno in programma azioni basate su ciò che sanno. E questi sono esattamente gli stessi tipi di sistemi che costruiamo nella robotica. Quindi queste architetture, a portare questo nuovo insieme, sono spesso piuttosto stesso. Quindi vediamo se possiamo vedere che. Torniamo al nostro esempio tic-tac-toe. E ho intenzione di chiedere un paio di mia post-doc a venire e mi aiutano. Così Chen Ming, e Alessandro, e Olivier, se voi ragazzi sarebbe venuto fuori. E ho intenzione di bisogno un paio di volontari OK, ho visto una mano destra lì in mezzo. Mi permetta di prendere un altro, qualcuno ulteriormente nella parte posteriore forse. Va bene, laggiù. Vieni su. Tutto ok. Quindi cerchiamo di prendere quella copertina in basso. E se voi ragazzi sarebbero venuti a destra tornato intorno qui per me, fantastico. Quindi questo è un robot chiamato Baxter. E Baxter è un robot che è un piattaforma commerciale, progettata da una società chiamata Rethink. E questo robot è progettato per la produzione su piccola scala. Ma oggi stiamo andando a usarlo per giocare a tic-tac-toe. Ora, questo robot è anche qualcosa questo è relativamente unico. Perché se fossi stato da nessuna parte vicino a un sistema di automazione standard di fabbrica sistema, sarei molto gravi pericolo di essere feriti. Baxter, tuttavia, è progettato per essere relativamente sicuro per interagire. E così posso spingere su questo robot. E si può vedere che è un po ' po 'flessibili come si muove intorno. E posso riposizionarla dove mi piacerebbe andare. Ora, in un normale sistema robotizzato, avremmo una serie di giunti qui che sarebbe direttamente rispondere ai comandi di posizione. E non sarebbero necessariamente cura se si muovevano attraverso l'aria aperta, o se si muovevano attraverso la mia cassa toracica. OK. E di solito, se si fosse qui con un sistema industriale, si dovrebbe andare da nessuna parte vicino ad esso. Ci sarebbero giallo nastro di sicurezza tutto intorno. Questo sistema ha un design leggermente diverso per essere più gentile e più facile per le persone di interagire con, dal fatto che in ciascun giunto, c'è una molla. E piuttosto che controllare una posizione esatta, controlliamo una certa quantità di coppia, una certa quantità di forza, che vorremmo essere in quella primavera. Va bene, così mi permetta prendere i nostri volontari qui. Ciao come ti chiami? PUBBLICO: Louis. SPEAKER: Louis. Felice di vederti. E? PUBBLICO: David. SPEAKER: David. Felice di conoscerti. Se voi ragazzi avrebbe aspettato proprio qui per un secondo, Sto per darvi la possibilità di fare questo. Quindi questo robot, se è venuta e se si spinge delicatamente su di esso, si sta andando a vedere che si muove un po '. E se si afferra bene qui sul polso appena sopra dove quei pulsanti sono, sembra che si dovrebbe prendere i pulsanti, ma prendere a destra sopra di esso, invece, ti essere in grado di manipolare molto delicatamente attraverso lo spazio. Louis, si vuole fare un tentativo? Quindi dare solo un po ' spingere per iniziare. E poi se si mette le dita proprio lì e tenere su ad esso, perché si muoverà per voi allora. Va bene, si vuole fare un tentativo? Vieni su. Quindi dare solo un dolce spingere lì per iniziare. Si può sentire come ci si sente. E poi se si afferra proprio lì, sarete in grado di manovrare intorno. OK. Quindi tipicamente, questo tipo di un robot sarebbe essere utilizzato per la fabbricazione su piccola scala. E ho intenzione di spostare questo braccio solo giù di mezzo un po 'qui. Ma oggi, stiamo andando a utilizzare il stesso sistema di gioco tic-tac-toe sulla base di minimax che abbiamo costruito in precedenza. ok? Così, voi ragazzi siete ogni andando a giocare un gioco. Louis, si sta andando ad essere il primo. Vorrei solo tenere qui per un secondo. Sto per avere ti trovi a destra qui, solo così tutti possono vedere. Voi ragazzi impostare qui? ROBOT: Benvenuti. Giochiamo tic-tac-toe. Non cogliere il token prima Io dico che è il vostro turno. Avvio il gioco. È il mio turno. SPEAKER: Ora, se si poteva prendere uno dei i vostri pezzi e andare avanti e posizionarlo. ROBOT: È il tuo turno. [Risata] È il mio turno. [Risata] [Risata] Tocca a te. SPEAKER: La razza umana è Conto su di te qui, Louis. ROBOT: È il mio turno. SPEAKER: Così Baxter bloccato qui. ROBOT: È il tuo turno. È il mio turno. Tocca a te. È il mio turno. SPEAKER: E ti faremo Baxter completare la sua ultima mossa qui. [Risata] ROBOT: Questo è un pareggio. Io vincerò la prossima volta. [Risata] SPEAKER: Va bene, grazie mille, Louis. Grazie. Si può andare in questo modo. ROBOT: avvio il gioco. SPEAKER: Così mi spiego a voi un altro po ' po 'prima di arrivare la nostra rivincita qui. Che cosa sta succedendo? Quindi il robot ha una parte superiore della fotocamera fino qui. Ed è guardando la scacchiera. Ed è vedere se che ha un O rosso o blu e X. bianco come quelli ottenere immessi sul bordo, che è fondamentalmente lo stesso ingresso che saremmo leggendo in da la nostra struttura dati dal nostro schermo. E 'in esecuzione lo stesso algoritmo minimax di essere in grado di trovare dove mettere un buon segno. E poi stiamo dando un comando su dove ci piacerebbe un token da collocare. Il braccio si muove fuori. E 'con un pinza a depressione da applicare qualche aspirazione a quel pezzo di legno, raccoglierla, spostarla a destra posto, e quindi rilasciare l'aspirazione e rilasciarlo. Va bene, stiamo andando per dare un altro colpo con un po 'più intelligente giocatore qui. Sei pronto? Va bene, se si fosse stare fino qui e dare a-- girare in questo modo modo da poter vedere tutti. E poi [incomprensibile]. ROBOT: È il mio turno. SPEAKER: Baxter avrà inizio. Tocca a te. È il mio turno. Tocca a te. È il mio turno. [Risata] SPEAKER: [WHISPERING] Basta lasciatelo andare avanti e vincere. ROBOT: È il tuo turno. SPEAKER: Va bene. ROBOT: È il mio turno. [Risata] Io vinco. [Risata] Avvio il gioco. SPEAKER: Va bene, vi ringrazio molto. Va bene, penso che abbiamo tempo per un giocatore tic-tac-toe più eccellente, qualcuno che possa mettere questa cosa a corrispondono, che sa quello che stanno facendo. [Risata] Chi va a essere il nostro campione qui? Va bene, i tuoi amici ti volontario. Questo è abbastanza buono per me. Dimmi di nuovo il tuo nome. PUBBLICO: Tamir. SPEAKER: Tamir, bello vederti. Va bene, ancora una volta, stiamo andando a mettere proprio qui in modo che tutti possano vedere voi. Tu sei il nostro rappresentante in questa partita ora. Baxter è uno e oh oh e. O mi dispiace, uno oh e uno. E tocca a voi qui. Baxter si arriva a muoversi prima, però. Così. ROBOT: È il mio turno. [Risata] Tocca a te. È il mio turno. Tocca a te. È il mio turno. Tocca a te. [Risata] ROBOT: È il mio turno. SPEAKER: E 'molto più difficile quando si sta in piedi qui, gente. [Risata] ROBOT: Voi umani sono così facile da battere. [Risate e applausi] SPEAKER: Grazie mille. ROBOT: vinco. Avvio il gioco. SPEAKER: Va bene, allora grazie molto tanto da Olivier, e ad Alessandro, e di Chen Ming. [APPLAUSI] Voglio fare un ultimo punto. Così Baxter per lo finisce qui, truffato. E questo è stato inaspettato. Uno del fantastico cose di IA è che noi fare un lavoro in AI in modo che possiamo costruire davvero interessante e intelligente dispositivi. Ma facciamo anche il lavoro in AI perché ci dice qualcosa su come gli esseri umani sono intelligenti. Uno dei preferiti studi dal mio laboratorio è guardare cosa succede quando macchine inaspettatamente barare. Lo abbiamo fatto in origine non con Baxter giocare tic-tac-toe, ma con un robot più piccolo di nome Nao, che ha giocato rock-carta-forbici. E a volte dopo giocando un sacco di annoiare rock-carta-forbici giochi, il robot avrebbe gettato un gesto, perdere, e poi cambiare improvvisamente il suo gesto e dire, vinco. [Risata] Ora, a volte ci piacerebbe anche avere il robot, proprio come un controllo, lanciare un gesto, vincere, e cambiare il suo gesto da perdere, gettare la partita, imbrogliare per perdere. E che non è quasi come convincente. Il robot che inganna al fine di vincere la gente rispondere come se fosse fuori per loro, come si sta cercando attivamente la loro distruzione. [Risata] Diventa un agente. E 'come una persona. Ha convinzione e intenzione. E non è buona intenzione. E il robot che genera l' gioco è solo un malfunzionamento. E 'solo un dispositivo rotto. Mi permetta di mostrare un paio di esempi di che da alcuni dei nostri partecipanti. Quindi, ecco barare al fine di perdere. [RIPRODUZIONE VIDEO] - [Incomprensibile] vincere. Giochiamo. -Aspetta cosa? - [Incomprensibile] vincere. Giochiamo. [Incomprensibile] vincere. Giochiamo. SPEAKER: E qui è barare per vincere. Sì, ho vinto. Giochiamo. -Non Puoi farlo. [Risata] Sì, ho vinto. -Hai barato. Hai imbrogliato ora. Sì, ho vinto. Ehi, voi baro. Abusi, super imbroglione. [FINE RIPRODUZIONE] SPEAKER: Questi diverso Reazioni rapidamente cambiare la nostra percezione del dispositivo. Questo significa che abbiamo volutamente costruiamo macchine che ingannano perché è la migliore ingegneria che possiamo fare? No, ma ci dice qualcosa veramente interessante di persone. Quella cosa che voi e trucchi ruba la tua vittoria, che è qualcosa di vivo, che è animano, questo è fuori per voi. Ha stato mentale. Ha credenza. Ha intenzione. Quella cosa che porge la gioco a voi, che non è. Questo è solo un malfunzionamento. Questo in molti modi perché è facile buttare il gioco con i bambini. Ma se si tenta di imbrogliare loro e una sorta di cantare vittoria quando, si sa, solo per ridurre il gioco, che ti cattura subito. Questi tipi di effetti che vediamo che esce di AI, ci insegnano molto su noi stessi. Va bene, questo è tutto per oggi. Grazie infinite a David e il team di produzione di Harvard per scendere. [APPLAUSI] Ci vediamo per un quiz, e poi per un ultima lezione. Buona giornata. [APPLAUSI] [RIPRODUZIONE DI BRANI MUSICALI] DAVID J MALAN: Beh, abbiamo probabilmente bisogno di introdurre un qualche tipo di crittografia, destra? Perché allora le intestazioni dei queste richieste HTTP saranno strapazzate in modo che chiunque cercando di intercettare il traffico non sarà effettivamente in grado di vederli. Quindi qual è la soluzione a questo problema? Beh, abbiamo bisogno di introdurre in realtà crittografia nella formula, in modo che quando la persona è trasmissione dei dati da A a B, possiamo send-- sicuro [Risata] L'informazione in modo che il avversario non può, infatti, vedere.