[Música tocando] COLUNA: Bem-vindo de volta, todo mundo. Este é CS50. E hoje, nós temos um monte de coisas interessantes para falar. Primeiro, porém, eu tenho que lembrá- você de algumas coisas administrativas. Esta semana é um questionário, quarta- ou para a secção de Yale às terças-feiras e quintas-feiras, na quinta-feira. Não há comentários do quiz hoje à noite na Universidade de Yale, 05:30 - 07:00. Em Harvard, eles gravaram um ontem. E todos podem ver que online. Além disso, esta semana ou início da próxima semana, nós temos nossa última palestra CS50. [Gemidos] Eu sei. Ele veio tão cedo. Estudantes de Yale terá um live palestra aqui na escola de direito auditório na sexta-feira. Haverá bolo. Estudantes de Harvard terá a última palestra em Sanders na segunda-feira. Haverá também bolo. Além disso, esta semana na sexta-feira, para aqueles de vocês que estão vindo para New Haven, temos a Expo CS50. Temos mais de 30 diferentes grupos registrados para lhe mostrar tudo de veleiros autónomos, para sistemas que reconhecem retratos digitais, para o computador música e música produzida por computador. Então, por favor se juntar a nós. Eu acho que vai ser um grande momento. Hoje, porém, temos de continuar a falar sobre AI, sobre a inteligência artificial. E uma das coisas que nós estamos indo para chegar ao hoje é a idéia de como usar o AI para resolver problemas. Agora, como sempre, vamos começar com algo simples. E nós vamos começar com uma idéia simples. E isso é usando a pesquisa. Então, imagine por um minuto que eu tem uma tarefa que eu preciso para executar. E eu gostaria de ter essa tarefa automatizado por algum agente software. Imagine que eu estou tentando reservar um conjunto de voos a partir de, digamos, Boston a San Francisco. Eu poderia passar e eu poderia usar um de busca on-line maravilhosa ferramentas, o que vai fazer basicamente o mesmo processo que estamos indo a pé até hoje. Mas se você não tem que ferramenta, o que você faria? Bem, você pode olhar e ver e dizer, eu estou em Boston. O que os voos estão disponíveis para mim? Agora, talvez eu tenha três possíveis vôos a partir de Boston que vai caber o tempo quando eu preciso sair. Eu poderia voar para Chicago. Ou eu poderia voar para Miami. Ou eu poderia voar para Nova York. Eu poderia, então, olhar de cada um uma daquelas cidades de destino e pensar sobre o que locais Eu poderia chegar de cada uma dessas cidades individuais. Então, talvez a partir de Chicago, eu posso conseguir um vôo direto para San Francisco. Isso é excelente. Ou eu poderia pegar um vôo para Denver. Agora, talvez que o vôo para San Francisco é a solução perfeita para mim, mas talvez não. Talvez eu estou procurando algo isso é um pouco mais barato ou um pouco melhor para o meu horário. E para que eu pudesse olhar para o que os outros possibilidades podem estar lá fora. Então, eu poderia olhar para Denver. E a partir de Denver, bem, talvez Eu posso pegar um vôo para Austin. E a partir de Austin, talvez eu possa obter uma voo para Phoenix e da Phoenix a San Francisco. Agora, eu não estou pronto ainda. Porque talvez haja uma com voos directos de Nova Iorque a San Francisco que é perfeito para mim. Ou talvez haja um vôo de Miami através de Denver que é muito mais barato. Então, eu ainda tenho que ir. E eu ainda tenho que olhar para todos aqueles cidades que eu ainda não investigados. Eu tenho que verificar exaustivamente todas as possibilidades que eu possa ter. Assim, a partir de Nova Iorque, talvez eu possa obter uma voo para Nashville, e de Nashville para Austin. E então eu sei onde estou. E então eu sei a partir de Austin, eu posso voar para Phoenix e da Phoenix a San Francisco. Se eu voar para Miami primeira, porém, talvez eu possa pegar um vôo de Miami para Nashville, ou a partir de Miami para Austin. E agora eu tentei tudo das possibilidades. Eu construí-se neste gráfico que me mostra todas as possíveis rotas que eu poderia ser capaz de tomar. Quando nós representamos estes tipos de problemas, nós não estamos indo para representar -los explicitamente como este gráfico, porque esse gráfico não representa a história de onde fomos. Sabendo que eu voei de Phoenix para San Francisco não me diga se eu vim via Nashville, ou através de Denver, ou através de Miami. Então, o que eu vou fazer é em vez Vou levar este mesmo problema, e eu vou representá-lo como uma árvore. E na raiz da árvore, na topo, eu vou colocar o lugar que eu comecei, Boston. E a partir de Boston, eu vou olhar para todos os possíveis locais que eu possa viajar. Bem, neste caso, eu tinha três, Chicago, Nova York e Miami. E então eu vou explorar cada um dos essas crianças na árvore. De Chicago, vi que eu tinha dois vôos. Eu poderia voar diretamente para San Francisco ou Denver. Agora San Francisco, que é o meu objetivo. Esse é o meu destino. Isso vai ser uma folha dessa árvore. Ou seja, eu nunca estou indo para ir em algum lugar após San Francisco. De Denver, embora, Eu posso voar a partir de Denver para Austin, a partir de Austin para Phoenix, e de Phoenix para San Francisco. E agora novamente, cheguei a uma folha. Eu poderia, então, voltar para a próxima cidade que eu ainda não totalmente explorado. Isso seria Nova York, ir volta-se para o topo da minha árvore, desçam para Nova York. De Nova York, eu posso voar para Nashville, de Nashville a Austin, de Austin para Phoenix, e a partir de Phoenix para San Francisco. E, finalmente, uma cidade que eu não olhei ainda, Miami. Bem, a partir de Miami eu disse que tinha dois possibilidades, Nashville ou Austin. Se eu voar para Nashville, bem, então eu vôo a partir de Nashville, para Austin, para Phoenix, a San Francisco. Se eu voar para Austin, eu vôo Austin, para Phoenix, a San Francisco. E agora eu tenho uma árvore. É uma árvore completa. É todas as possibilidades e todos os caminhos que eu poderia tomar. Isto é, se eu começar no raiz da árvore no topo e eu descer para um dos sai, ele diz-me não só onde eu vou acabar, San Francisco, mas ele me diz a rota que Eu preciso levar para chegar lá. Agora, qual destes é o melhor? Bem, nada sobre isso problema ainda me diz qual delas é a melhor solução. Talvez eu me importo mais sobre quanto tempo eu estou no ar, ou a distância que eu estou voando. Nesse caso, Chicago para San Francisco pode ser o menor número de milhas no ar. Talvez eu me preocupo com o custo. E todos nós sabemos voos directos são geralmente mais caros. Então, talvez se eu levar isso tipo de rota para trás através de Miami, Nashville, Austin, Phoenix, talvez, em seguida, Eu recebo um preço mais baixo. Mas eu poderia otimizar em qualquer critérios que me interessa. Quem tem o melhor em voo Wi-Fi, ou que aeroportos têm a melhor comida disponível. E cada um desses pode me dar uma solução diferente que eu vejo como sendo o melhor. Esses tipos de problemas, onde vamos para construir esta árvore de possibilidades e, em seguida olhar para cada um desses caminhos individuais, e examinar qual desses fulfills um critério para nós, vamos chamá- esses problemas de busca. E nós temos lotes de algoritmos, alguns dos quais temos visto já, ir e explorar aquelas árvores. Poderíamos fazê-lo da maneira que eu apenas fiz, uma busca em profundidade, indo para baixo, tanto quanto pudermos até nós bateu uma folha, e, em seguida, voltando-se, e indo para a direita de volta para baixo. Ou podemos fazer o que é chamado de busca em largura. Poderíamos expandir tudo na parte superior, e, em seguida tudo uma linha embaixo que, em seguida, tudo uma linha debaixo daquele. Essas árvores de busca são fundamentais para a AI. Mas eles não começ completamente certo o tempo todo. De fato, em muitos dos casos que realmente se preocupam, queremos construir uma árvore, mas nós não, na verdade, começa a fazer todas as decisões. Estas são situações chamadas busca adversarial, também conhecido como a forma de escrever playing game sistemas e ser pago por isso. Mas estes são os tipos de sistemas onde pode começar a escolher quando eu ir de Boston, qual cidade eu ir para a próxima. Mas depois disso, alguém pode obter para tomar a decisão sobre onde eu voar. Portanto, para construir estes tipos de estruturas, estamos vai ter que tomar um pouco abordagem diferente para ele. Nós não vamos ser capazes de basta pesquisar através da árvore mais, porque nós não somos aquele que está no controle de cada um desses pontos de decisão. Então, vamos imaginar uma simples jogo como tic-tac-toe. Eu poderia começar com um Placa completamente em branco. E em tic-tac-dedo do pé, X consegue jogar primeiro. E para que eu pudesse pensar em tudo o movimentos possíveis que X poderia fazer. E se eu sou o único jogo o X, isso é ótimo. Tenho nove possível move que eu posso fazer. Eu poderia colocar um X em qualquer uma destes nove posições. E, em seguida, a partir de cada um daqueles, I podia imaginar o que acontece em seguida. Bem, neste caso, a outra jogador iria começar a tomar um rumo. O iria começar a tomar um rumo. E de cada um desses, há seria oito lugares diferentes O que poderia colocar o seu marcador. Vamos dizer que eu decidi que eu era vai colocar um X no centro. Que sempre parece que um bom movimento de abertura. Eu poderia olhar para baixo que, a oito movimentos possíveis que O faz. Agora, se eu estou jogando X, isso é maravilhoso. Eu começar a escolher qual deles eu ir para o um no meio. Mas agora ó começa a escolher. E eu não tenho controle sobre essa decisão. Mas a partir de cada um daqueles possíveis posições de tabuleiro, há então um outro conjunto de possibilidades. Quando se trata de ser minha vez novamente, eu faria começa a escolher e dizer, bem, O se move para o bem, o ponto médio do lado esquerdo, em seguida, Eu tenho um conjunto de possibilidades onde eu possa tomar o meu próximo passo. Desses, eu poderia considerar todos as possibilidades debaixo deles. E, em seguida, O obteria para escolher entre aqueles. E eu poderia continuar a construir esta árvore até que eu cheguei ao ponto onde quer alguém ganha o que é game-- tem que ser considerada uma folha node-- ou o conselho está completamente cheio e ninguém ganhou. E isso também vai ser um nó folha. Isso vai ser um empate. Mas a coisa complicada com isto é se isso fosse apenas uma pesquisa regular problema, eu seria capaz de digamos, bem, X deve ir aqui. E O caminho deve ir para lá. E então X deve ir aqui. E, em seguida, deve ir O caminho até lá. E então X pode obter três em uma fila, e eu ganhar. E o jogo seria mais em cinco movimentos, três para mim, dois para o meu adversário. Mas eu nem sempre consegue escolher isso. Então, em vez disso, o que nós somos vai ter que fazer é que nós vamos ter para ter uma nova estratégia. E que a estratégia algoritmos jogo-playing costumam usar é o que é chamado minimax. A idéia central do minimax é que nós somos vai escolher o movimento que dá o nosso adversário o pior conjunto possível de movimentos que eles podem fazer. Não me faz nenhum bem para escolher um movimento onde Eu poderia ser capaz de vencer depois que, porque o meu adversário não é vai me dar essa chance. Eles vão escolher alguns resultado terrível para mim. Então eu vou fazer o mova que força o meu adversário para fazer algo melhor para mim. Tudo certo. Vamos ver como isso se desenrola. Então aqui está o nosso algoritmo em pseudocódigo. Nós estamos indo para gerar toda a árvore de jogo. Nós vamos construir toda a estrutura. E então nós vamos passar. E mesmo no fundo em cada um dos nós terminais, em cada uma das folhas, vamos avaliar como valioso é que para mim? E nós estamos indo para as coisas de valor que são bons para mim como sendo positivo. As coisas que não são boas para mim vai ser menos positivo ou zero, ou mesmo negativo. Assim, em tic-tac-toe, talvez uma vitória para mim é bom. Essa é uma pergunta. E um empate é zero. E algo que é uma perda para me, talvez isso é uma negativa. Tudo o que importa é que o melhor é para mim, quanto maior a pontuação ele recebe. A partir destas possibilidades no fundo, então vamos filtrar para cima. E quando é a minha chance de escolher entre um conjunto de alternativas, Eu vou escolher o que é obteve a maior pontuação. E sempre que ele é meu oponentes virar para escolher, Eu vou assumir que eles estão indo para escolher aquele com a pontuação mais baixa. E se eu fizer isso todo o caminho até o topo da árvore, Vou ter escolhido um caminho que dá me o melhor resultado que eu possa obter, assumindo que o meu adversário faz todos os movimentos certos. Tudo bem, então vamos ver isso em ação pela primeira vez. E então nós vamos realmente olhar para o código para ele. Então imagine eu tenho este grande árvore. E agora eu não estou jogando tic-tac-toe. Eu queria dar-lhe algo um pouco mais rico. Então, eu tenho um pouco de jogo onde há muitas pontuações diferentes que eu poderia ter no final. E assim eu construir essa árvore completa. E eu começo a mover em primeiro lugar. Eu sou a raiz da árvore. E eu começar a escolher isso-- isso fico para maximizar através daquele primeiro nó. E então meu adversário tem que ir. E então eu tenho que ir mais uma vez. Assim, na parte inferior, eu tenho um conjunto de possibilidades que eu posso escolher, diferentes estados terminais do jogo. Se eu estou para baixo em que extrema esquerda canto, e eu ver que eu tenho uma escolha entre um e oito, sete, e um dois, bem, eu sou o único que começa a escolher. Então, eu estou indo para escolher o melhor das pessoas. Eu vou escolher o oito. Então eu sei que se eu descer a esse ponto, Eu vou ser capaz de conseguir que os oito pontos. Se eu acabar no próximo ponto sobre, sobre o próximo nó, um nove, um, ou um seis, bem, eu sou vai escolher a melhor delas. Eu vou escolher a nove. Se eu tiver uma escolha entre dois e quatro, e um, Eu vou escolher a quatro, o mais alto. Agora, se eu olhar para o nível acima disso, meu adversário é o que se tem de fazer essa escolha. Então, o meu adversário começa a escolher, eu gostaria de dar-lhe a única coisa que está acontecendo para tirá-lo oito pontos, ou eu dar-lhe a coisa que é vai dar-lhe nove pontos, ou a coisa que está acontecendo para dar-lhe quatro pontos? E o meu adversário, sendo racional, vai escolher o mínimo daqueles, vai escolher a quatro. E eu posso fazer isso através de toda a árvore. Eu posso ir para baixo para que conjunto do meio de três. E eu posso escolher entre um, três, e cinco. E eu começar a escolher. Então eu escolher um de cinco. Posso escolher três, nove, ou dois. Eu começar a escolher, então eu escolher o nove. Seis, cinco, ou dois, eu escolho. Eu começar a escolher a seis. Nível acima do que, quem começa a escolher? Quem começa a escolher? O outro cara, o meu adversário. Então, eles escolher cinco, nove, ou seis, qual? AUDIÊNCIA: A cinco. COLUNA: Eles escolhem a cinco. Começam a escolher o mínimo. E, em seguida, o último, escolher um, dois, ou três. Eu começar a escolher, então eu escolher três. Nove, sete, ou dois, eu escolho nove. E 11, seis, ou quatro, eu escolher 11. Meu oponente em seguida, escolhe três, nove, ou 11, escolhe o mínimo. Ele me dá um três. E, finalmente, na parte superior da a árvore, eu começar a escolher novamente. E eu começar a escolher entre quatro, cinco, ou três. Então eu levo a cinco. Se eu tenho que controlar tudo, eu tomar o caminho que levou ao 11. Mas eu não conseguir fazer essa escolha. Se eu ir por esse caminho. Meu oponente vai me forçar a a escolha que conduz a um de três. Então, o melhor que eu posso fazer é para dar esse ramo meio, fazer essa escolha é que, eventualmente, vai me levar a cinco pontos. Isso é o que faz minimax. Tudo certo. Vamos dar uma olhada nisso. Então, aqui no CS50 IDE é um programa que implementa minimax jogar tic-tac-toe. Nós vamos construir -se uma representação. Nós vamos ter dois opponent-- ou dois jogadores, o nosso computador jogador e um jogador humano. O jogador número um vai jogar o O. Isso vai ser o jogador máquina. Começam a se mover segundo. E o outro jogador, o nosso jogador humano, será X. E para tornar minha vida um pouco simples, eu vou rotular esse jogador um negativo. Então eu só posso multiplicar por um negativo para trocar entre um e o outro jogador. Tudo bem, então vamos dar uma olhada o que na verdade estamos indo fazer. Nós vamos definir o nosso conselho. Vai ser, bem, nós vamos para permitir que ele seja três por três, ou podemos até mesmo jogar cinco por cinco ou sete por sete tic-tac-dedo do pé se você como, com base em alguma dimensão D. E nós vamos ter um casal de funções auxiliares que vai fazer coisas como inicializar o screen-- ou desculpe, inicializar nossas variáveis, desmarque a tela, chamar a bordo na tela, um que verifica uma placa para ver se ou não há um vencedor, aquele que analisa através da linha de comando, apenas para ajudar, aquele que lê em entrada, e uma função chamada minimax. E isso é o que vamos mais gosta. Mas vamos olhar primeiro para o principal. O que nós fazemos? Bem, vamos analisar a linha de comando, acabou de ler e ver o que placa de dimensão que nós gostaríamos de ter. Vamos iniciar o nosso conselho. E então nós vamos entrar em um grande laço selvagem, repetidamente aceitar se move até que o jogo é ganhou, ou não há nenhum movimento à esquerda. Cada vez que passar por isso loop, vamos limpar a tela. Vamos chamar a bordo na tela. E nós estamos deliberadamente tipo de abstraindo estes afastado como sub-rotinas, de modo que não temos que se preocupar muito sobre os detalhes de como eles acontecem. Você vai ter o código mais tarde hoje. E se você quiser olhar através e descobrir, você pode vê-los todos. Mas nós vamos desenhar uma placa na tela. E então nós vamos verificar e ver, temos um vencedor? Alguém ganhou este jogo? Se eles têm, vamos imprimir uma mensagem de vitória. E nós vamos terminar o jogo. Também vamos verificar e ver se há um empate. Vai ser fácil para ver se há um empate. Isto significa que todos os espaços são cheios, mas não houve ainda um vencedor. Podemos declarar um empate e ser feito. Em seguida, o verdadeiro se meat-- é um jogador de máquina, vamos permitir que jogador máquina para pesquisa através da utilização deste algoritmo minimax, para encontrar a melhor jogada que ele pode. E então nós vamos colocar esse movimento para cima. Caso contrário, se é um jogador humano, leremos alguma entrada do humano. E então se é o humano jogador ou o jogador máquina, vamos fazer um par pouco bits de verificação de erros, garantir que se mantém dentro dos limites das dimensões reais do bordo que temos, certifique- que é que o espaço vazio, que ninguém colocar uma peça já estava lá. E então nós vamos apenas colocar uma peça no tabuleiro, alterar o jogador para a camada seguinte, e incrementar quantos movimentos ter acontecido. Esse é o principal laço para o nosso jogo tic-tac-toe. Minimax, então, é exatamente o algoritmo que antes. O único ajuste que nós fizemos, para que possamos pode desempenhar maior placas dimensionais é que nós temos mantido esse parâmetro extra chamado profundidade. E profundidade apenas diz, se eu sou procura para baixo através daquela árvore e eu fico tão longe para baixo além de algum nível de profundidade que eu só não quero para ir mais longe, Eu vou parar e apenas avaliar a bordo naquele ponto. Vou verificar e ver se há um vencedor. Se houver um vencedor, eu devolvê-los. Caso contrário, eu vou passar por um loop. E eu vou dizer, para todos as possíveis localizações que eu poderia possivelmente tomar como minha mudança, eu vou construir uma placa hipotética que inclui a minha jogada em que o conselho, e, em seguida, chama recursivamente minimax. Se é a minha jogada, eu tenho que encontrar o aquele que tem a maior pontuação. Se é movimento do meu oponente, encontramos aquele que tem a pontuação mínima. E tudo o resto é mantendo apenas registro. Tudo bem, então vamos ver esta corrida. Na verdade, talvez o que pudermos obter um par de voluntários para vir e jogar tic-tac-toe. [Inaudível] um, e um mais, dois, ali mesmo. Vamos lá para cima. Então, vamos em frente e reinicie esta completamente. Então, oi. AUDIÊNCIA: Oi. COLUNA: Qual é o seu nome? AUDIÊNCIA: Gorav. COLUNA: Gorav. AUDIÊNCIA: Eu sou Layla. Orador: E Layla, e Layla, desculpe. Vamos lá para cima. Gorav, nós vamos ter de ir primeiro. E eu vou pedir-lhe para ser um não terrivelmente bom jogador tic-tac-toe. OK, então toda a pressão está fora em você. Vamos ver, porém, que a nossa máquina jogador pode realmente fazer alguma coisa inteligente. Então vá em frente. Você vai digitar em que coordenam você gostaria de colocar o seu X in. A0, OK, ea máquina tem ido imediatamente e colocar sua marca na A1. Coloque a O no tabuleiro. Tudo bem, agora vá em frente. Onde você gostaria de ir? C2. Nosso jogador máquina tomou o quadrado do meio, bloqueou você. Então isso foi uma boa, coisa inteligente para que ele faça. Você bloqueou. Isso é excelente. Ele marca o canto lá. E ele vai forçá-lo a tomar o último espaço, B0. E o jogo termina em empate. Mas teve um razoável jogo contra você, certo? Tudo bem, muito obrigado, Gorav. [Aplausos] Tudo bem, Layla, vamos o jogo em você aqui. AUDIÊNCIA: Oh, ótimo. COLUNA: Nós estamos indo dar- você quatro por quatro tic-tac-toe. Agora, em quatro por quatro, você tem que ganhar com quatro em uma fileira, e não três em uma fileira. E é toda sua. Assim Layla levou D1. Estamos indo para seguir nosso jogador do computador aqui. Três por três tic-tac-toe é o tipo de coisa que é fácil para todos nós. Mas ainda é bom ver o jogador do computador fazendo movimentos inteligentes. Quatro por quatro começa a ser um pouco mais complicado. Bem feito. Tudo bem, então Layla do finalizou. Oh, e devemos ter terminado ali. Mas vamos fazer mais uma aqui. Então, Layla, obrigado. Bem feito. [Aplausos] Assim, o nosso jogador tic-tac-toe vai e através encontra locais, resolve-los usando este minimax. E eu tinha uma configuração de profundidade em que, para que ele não iria correr muito rápido, que é provavelmente porque Layla foi capaz de ir bem em frente como ela fez, e fez muito bem. Mas esses sistemas que apenas passar e força bruta ir mais fundo e mais profundo, e mais profundo, e manter a encontrar a solução que eles precisam, esses tipos de sistemas são bastante bem-sucedido para estes, bem, jogos de tabuleiro padrão. E, de fato, se olharmos para um três por três jogo tic-tac-toe, este é basicamente um problema resolvido. E este é um diagrama maravilhoso Randall Munroe de XKCD em, mostrando qual você deve se mover tomar, dada movimentos do seu oponente. Isso é algo que pudéssemos facilmente especificar antes do tempo. Mas o que acontece quando chegarmos a mais jogos complexos, jogos mais complicados, onde existem placas maiores, mais possibilidades, a estratégia mais profunda? Acontece que este força bruta procura ainda faz razoavelmente bem, excepto quando você chegar ao ponto onde a árvore é tão grande que você não pode representar tudo. Quando você não pode calcular toda a árvore, quando você não pode ir para a frente e empurre -se para o ponto onde você tem começado a árvore inteira na memória, ou se você pode obtê-lo na memória e ela só vai levá-lo muito tempo para pesquisar -lo, você tem que fazer algo mais inteligente. A fim de fazer isso, você tem que fazer duas coisas. Primeiro, você tem que encontrar algum forma de limitar a sua profundidade. Bem, isso é OK. Podemos encontrar algumas agradáveis, mínimo e dizer, você só pode ir tão fundo. Mas quando você faz isso, isso significa que você ter estas placas parcialmente incompletos. E você tem que escolher, eu gosto esta placa parcialmente incompleta, ou esta placa parcialmente incompleta? E em nossos quatro por quatro jogo tic-tac-toe, nosso jogador do computador desceu para a parte inferior e disse, Eu tenho duas placas diferentes. Nenhum dos dois é uma vitória. Nenhum dos dois é uma perda. Nenhum dos dois é um empate. Como posso escolher entre eles? E ele não tinha uma forma inteligente de fazer isso. Vemos esse tipo de avaliação acontecem o tempo todo como nós entrar em jogos mais complexos. O xadrez é um grande exemplo. No xadrez, temos, em primeiro lugar de tudo, uma placa de maior. Nós temos muito mais peças. E o posicionamento destas peças e da maneira que essas peças se movem é criticamente importante. Então, se eu quiser usar minimax, Eu preciso ser capaz de especificar e dizer, esta placa, onde ninguém ganhou ou perdeu, no entanto, é de alguma forma melhor do que este outro placa, onde ninguém ganhou ou perdeu. Para fazer isso, eu poderia fazê- coisas como eu poderia apenas contar quantas peças que eu tenho e quantas peças você tem? Ou eu poderia dar diferente peças pontos diferentes. Minha rainha vale 20 pontos. Seu peão vale um ponto. Quem tem mais pontos no total? Ou eu poderia considerar coisas como: quem tem o melhor posição do tabuleiro? Quem é a vez seguinte, qualquer coisa que eu puder não para avaliar com mais precisão qual destas possibilidades é melhor sem considerando exaustivamente cada movimento que poderia vir depois disso. Agora, para fazer esse trabalho, uma das coisas que é vai se tornar realmente importante para nós não é apenas se movendo em linha reta até uma determinada profundidade limite, mas ser capaz de dizer: uma dessas idéias que eu têm é tão ruim que é não vale a pena considerar todas as formas possíveis que as coisas podem ir de mal a pior. Para fazer isso, vamos adicionar em minimax um princípio chamado alph-beta. E alfa-beta diz, se você tiver uma má idéia, não perca seu tempo tentando descobrir exatamente como é ruim. Então aqui está o que vamos fazer. Nós vamos ter a mesma princípios que tínhamos antes, o mesmo tipo minimax de pesquisa, só nós somos vai acompanhar, não só do valores reais de que dispomos, mas vamos acompanhar o melhor possível valor que eu poderia chegar, eo pior possível resultado que eu poderia ter. E qualquer momento o pior possível coisa é olhar provável, Eu vou abandonar essa parte da árvore. E eu não vou incomodar mesmo olhando para ele anymore. Tudo bem, então imagine que comecemos com esta mesma árvore jogo exato. E agora nós estamos indo para ir de novo, todo o caminho para que canto inferior esquerdo. E nesse canto inferior esquerdo canto, nós olhar e avaliamos esta placa. Talvez seja um quatro por quatro tic-tac-toe placa, ou talvez é um tabuleiro de xadrez. Mas olhamos para ele, e nós avaliamos -lo, e nós temos um valor de oito. Nesse ponto, sabemos que nós estamos indo para obter, pelo menos, oito pontos de esta decisão inferior. Não importa o que o outro dois são, que sete e que dois. Eles poderiam ser quaisquer valores eles queriam ser. Nós vamos chegar a menos oito pontos. Tudo bem, mas poderíamos vá em frente e confira. Talvez um deles é melhor do que oito. Nós olhamos para o sete. Está melhor do que oito? Não, isso não muda nossa opinião em tudo. Nós olhamos para os dois. Está melhor do que oito? Não, isso não muda nossa opinião em tudo. Portanto, agora sabemos que já esgotou todas as possibilidades lá. Nós não estamos indo para chegar nada melhor do que oito. Nós estamos indo para obter exatamente oito. E assim nós mudamos esse nó e digamos, que é agora uma certeza. Nós subir um nível acima disso. E agora sabemos alguma coisa sobre esse nível de minimização. Nós sabemos que nós nunca vamos chegar mais de oito pontos se descemos nessa direção. Porque mesmo se os outros dois ramos vir para ser fantástico e vale a pena milhares de pontos, cada, o nosso adversário nos dará a mínimo, e nos dá a oito. Tudo bem, bem, vamos ver. Vamos continuar por esse caminho. Descemos para que médio à esquerda. Olhamos para baixo e vemos que há um nove. Sabemos que vamos chegar pelo menos nove pontos, indo para baixo que caminho do meio. E, neste ponto, podemos apenas fazer uma pausa. E podemos dizer, olha, eu conhecer no nível acima, Eu estou indo para obter não mais do que oito aponta para baixo, indo nesta direção. Mas se eu fui para o meio caminho em vez do caminho da esquerda, Gostaria de obter pelo menos nove pontos. Meu oponente é nunca vai deixe-me ir por esse caminho do meio. Começam a escolher. E eles estão indo para escolher o caminho para a esquerda em direção a oito, em vez de no meio em direção o que é, pelo menos, nove pontos. Então, nesse ponto, eu vou parar. E eu vou dizer, você sabe o quê? Eu não tenho que olhar para mais baixo nessa direção. Porque eu nunca vou chegar lá. Eu posso ignorar que um, e eu posso ignorar que seis, porque isso nunca vai acontecer. Então, eu vou descer e eu vou Considere o seguinte possibilidade. Eu vou lá e digo, eu vejo um dois. Eu sei que se eu ficar aqui, eu sou vai ficar pelo menos dois. ESTÁ BEM. I continuar. Eu vejo um quatro. Eu sei que estou indo para obter, pelo menos, quatro. Ainda há muito entre quatro e oito, no entanto. Então eu continuo indo. Eu olho para baixo e vejo que há um. Tudo bem, eu sei que se I ir por este caminho, Eu vou ser capaz de escolher o quatro. O que o meu adversário vai fazer? Entre algo que me dá oito, algo que me dá quatro, e que algo me dá, pelo menos, nove, bem, ele vai me dar quatro. E eu sei agora no muito alto, eu vou para ser capaz de obter, pelo menos, quatro pontos fora deste jogo. Toda a idéia de alfa-beta é cortar partes da árvore para que eu não olhar para eles anymore. Mas ainda parece que eu estive olhando para um monte da árvore. Vamos continuar indo para baixo. Vamos descer a próxima agora. Lá no fundo, eu encontrar um. Eu sei que estou indo para obter, pelo menos, um. Eu fico olhando. I encontrar um três. Eu sei que estou indo para obter, pelo menos, três. I continuar. I encontrar um cinco. Eu sei que estou indo para obter cinco se eu descer nesse caminho. E eu também sei, em seguida, que o meu adversário, se eu escolher o meio de os três grandes escolhas, ele vai me dar algo que é cinco ou menos. ESTÁ BEM. Eu posso continuar lá. Eu posso olhar para baixo e eu pode-se dizer, o que eu vou de obter, se eu descer o caminho do meio? Eu estou indo para obter, assim, três lá. Eu estou indo para obter algo que é pelo menos três. Ainda há coisas entre três e cinco, então eu continue procurando. Oh, um nove, eu vou definitivamente levar isso ao longo de um três. Eu estou indo para obter, pelo menos, nove se eu for por esse caminho do meio. Agora o meu adversário pára e diz: olhe, não há nenhum ponto anymore. Eu sei que o meu minimização oponente, ele é vai me dar a coisa que é menos do que ou igual a cinco, ao invés da coisa que é maior do que ou igual a nove. Eu paro. Eu não olho mais para isso. I continuar. Eu olho para baixo em um presente. Até o fundo, eu acho um seis. Eu sei que estou indo para obter, pelo menos, seis. E o que eu posso fazer? Eu posso parar. Porque não há uma escolha entre algo que é, pelo menos, seis e algo que é menos de cinco anos, ele é vai dar-me a coisa que é menos do que cinco. E agora eu sei que eu vou para obter exatamente essa escolha. Eu estou indo para obter que cinco escolha. Eu voltar a subir até o topo. Que é que eu vou escolher entre algo que é maior do que ou igual a quatro, ou algo que é igual a cinco? Eu vou tomar algo que é, pelo menos, cinco anos. Desço o último caminho, todos o caminho até o fundo. Há um um. OK, pelo menos eu estou indo para obter um ponto. I continuar. Dois, oh, isso é melhor do que uma. Eu estou indo para obter, pelo menos, dois. I encontrar um três. Eu sei que estou indo para obter três. E o ponto de cima que, o meu adversário vai para me dar algo que é menos do que ou igual a três. E agora eu posso parar. Porque na escolha entre eu estar capaz de obter um cinco e meu oponente dando-me uma coisa inferior a três, Eu sempre vou ter que cinco. Então eu não avaliar que parte inferior da árvore de todo. Agora, isto pode parecer menor. Mas quando pequenos pedaços de aritmética, superior e inferior, pode cortar partes inteiras de esta árvore em crescimento exponencial, que conduz a um enorme quantidade de poupança, poupança que são grandes o suficiente para que eu pode começar a jogar competitivamente em jogos mais complexos. Tudo bem, se olharmos para o tamanho e complexidade de jogos diferentes, tic-tac-toe foi o nosso exemplo fácil. Temos uma pequena placa, três por três. Ficamos com, no máximo, uma média de cerca de quatro diferentes opções como nós atravessamos o jogo. Temos algo em torno de 10 a possíveis folhas diferentes quinto. Ea construção de um tic-tac-toe jogador, bem, nós só fiz isso. Isso é fácil. Se formos até algo mais complexo, como Connect Four. Você se lembra deste jogo onde você deixar cair as pequenas fichas em? É uma placa de seis por sete, não muito maior, ainda tem aproximadamente a mesma ramificação fator como tic-tac-toe. Eu tenho cerca de quatro escolhas onde posso colocar as coisas em. Mas agora, eu tenho muito mais leva, 10 elevado à potência 21. Isso é algo que é fácil o suficiente para que nós resolvê-lo imediatamente. Checkers, mais você complex-- tem um oito por oito bordo. Você está apenas na metade da los a qualquer momento, no entanto. Você tem uma ramificação fator que é cerca de 2,8. Bem, temos um casal move-se você pode tomar. Você tem cerca de 10 a 31 de folhas, espaços maiores e maiores, e maiores. Como eu tenho que pesquisar esses espaços cada vez maiores, que é quando as coisas como beta e alfa- sendo capaz de cortar ramos inteiros torna-se essencial. Agora, damas foi fácil o suficiente em 1992. Um programa de computador chamado Chinook bater as damas mundo campeão, Marion Tinsley. E, desde então, não jogador de mestre humano tem foi capaz de vencer o melhor sistemas computacionais. Se olharmos para algo como xadrez, agora novamente, temos um oito por oito bordo. Mas temos muito mais complexo peças, tanto os movimentos mais complexos. Temos um fator de ramificação de cerca de 35, 35 movimentos possíveis em média que eu possa tomar, e um estado espaço, um número de folhas que cresceu de 10 para 123 o poder, um número enorme de possibilidades. Mesmo assim, os processadores modernos são capazes de fazer isso com sucesso. Em 1995 e, em seguida, em 1997, um computador programa chamado Deep Blue construído pela IBM que corria em um supercomputador gigante bater o atual campeão mundial, Garry Kasparov. Este foi um ponto de viragem. Hoje, porém, que a mesma transformação poder se senta no meu MacBook. Velocidade de processamento mantém ficando mais rápido e mais rápido. Nós podemos avaliar mais e mais placas mais rápidas e mais rápido. Mas o mais importante, temos melhor funções de avaliação e melhor poda métodos. Assim, podemos procurar o espaço mais complexo. A maior do conselho jogos que podemos pensar, Vai algo como isso é tem uma placa de 19 por 19, Agora, de repente, nós estamos além do ponto onde os sistemas computacionais pode ganhar. Não há nenhum computacional sistema lá fora, que pode bater um jogador profissional Go. Os melhores sistemas de hoje classificá-lo sobre o tipo de bom nível amador. Assim, ainda há um pouco para fora há que você não pode chegar a ainda. Tudo bem, estas jogos de tabuleiro tradicionais, estes tipos de sistemas onde construir essa minimax, se ele tem alfa-beta ou não, estes algoritmos de trabalhar porque há certas restrições. Nós temos a informação perfeita sobre o mundo. Nós sabemos onde estão todas as peças. O mundo é estático. Ninguém fica para mover o pedaços ao redor, enquanto eu estou sentado lá pensando, tomando minha vez. Há um espaço de ação que é discreta. Eu posso colocar o meu peão aqui, ou eu posso colocar meu peão aqui. Eu não estou autorizado a colocar o meu peão em a linha entre os dois quadrados. E, finalmente, as acções são deterministas. Eu sei que se eu digo, rook cavaleiro para três, minha torre vai acabar no cavaleiro três, desde que é um movimento válido. Não há nenhuma incerteza sobre isso. Agora, como eu ir para mais diferentes tipos de jogos, nós temos que quebrar essas suposições. E se eu ir para algo como clássicos jogos de vídeo? Aqui está uma seleção de vídeo jogos do Atari 2600. O que eu tenho lá em cima? Eu tenho Frogger, Espaço Invaders, Pitfall, e Pac-Man. Que tipos de ambientes eu tenho aqui agora? Qual dessas premissas eu tenho que quebrar? Bem, isso depende do jogo. Eu poderia jogar xadrez em 2600, e seria exatamente como era antes. Para a maioria destes sistemas, há conhecimento completo sobre o mundo. Há completamente ações determinista. Mas, geralmente, o mundo não estático. Ou seja, enquanto eu estou sentado lá esperando, algo está se movendo. Os fantasmas estão vindo para me pegar. O escorpião está me seguindo por baixo. Os invasores do espaço são chegando cada vez mais perto. Como bem podemos fazer contra isso? Alguns anos atrás, o Google tinha um projeto chamado DeepMind, onde eles treinaram um computador programa de jogar Atari 2600 jogos. E se você acha que isso não é grave negócio, os resultados de seu estudo foram publicados na revista Nature, de modo quase tão bom uma publicação como você pode eventualmente chegar. E aqui está como bem eles realizados. Eles têm um algoritmo que se sentou e viu apenas as entradas de tela. Ele tem nenhuma instrução que seja sobre as regras do jogo. E era para descobrir, baseou a sua pontuação, o quão bem ele estava fazendo. Este foi um sistema que utilizado algo chamado de aprendizado por reforço. Ou seja, ele olhou para a sua pontuação. E se ele obteve uma boa pontuação, ele disse: Eu deveria me lembrar dessas coisas. E eu deveria fazer aqueles outra vez. E se ele obteve uma nota ruim, ele disse: Eu não deveria fazer essas coisas novamente. Este é o desempenho desses sistemas formados autorizado a jogar por um algumas horas em cada jogo, comparados com jogadores profissionais. Portanto, para todos os jogos que estão para o lado esquerdo desta linha, Este programa de computador auto-treinados superaram os jogadores profissionais. E para que tudo o direito, os jogadores profissionais ainda foram os melhores. Para algo que sabia nada sobre as regras, que não sabia nada sobre a estrutura do jogos, este é um desempenho impressionante. E é isso que nós somos capazes de fazer hoje. OK, você diz, mas se nós pensar sobre AI em jogos, normalmente pensamos sobre a coisas que podemos realmente sentar e jogar contra. Se eu me sento e toco StarCraft, ou eu jogo gratuito Sieve, o adversário é o computador pessoa que controla o Zerg, ou o controlo do outro civilização. Como esses jogadores realmente encontrar seus movimentos? Bem, estes jogos são estruturados da mesma maneira como os nossos jogos de tabuleiro, estes jogos que vamos chamar colectivamente quatro jogos X, explorar, expand-- esquecer os queridos. O que eles são? Explorar, expandir e extinguir, Eu acho que é a última. Mas eles são, basicamente, jogos de exploração e conquistar. Normalmente, o adversário do computador não tem informações limitadas. Eles não sabem exatamente o que está acontecendo por trás dessa névoa da guerra. Eles não conseguem ver o que você tem em seu inventário. Há um ambiente que é dinâmico. Tudo está mudando o tempo todo. Você não consegue sentar-se e esperar para tomar a sua jogada. Mas a maioria das coisas que ainda são discretos. Eu tenho que colocar minha cidade aqui. Ou eu tenho que colocar minha cidade aqui. E tudo é determinista. Quando eu digo, mover minha unidade aqui, minha unidade move-se aqui, a não ser um obstáculo de repente entra em jogo. Agora, isso não é tudo computador jogos que estão por aí hoje. Se eu ir e eu jogo um primeiro tipo pessoa jogo, algo como ladrão ou Fallout ou Skyrim, ou o Halo, agora Eu tenho adversários controlados pelo computador que estão lá fora, que têm uma situação muito diferente. Eles têm, de novo, informações limitadas. Eles só podem ver um certo campo de visão. O ambiente é ainda dinâmico. As coisas estão mudando o tempo todo. Mas agora eu tenho um muito mais espaço de ação contínua. Eu posso ser apenas exibir uma pouco fora da porta. E alguns jogos, a minha ações são estocástica. Eu começar a tentar saltar sobre essa parede, mas eu tenho a chance de fracassar. Estes tipos de jogos estão se aproximando e mais próximas para os tipos de controladores que nós construímos em robótica. Em robótica, temos que assumir que temos informação limitada. Temos que sensores conte-nos sobre o mundo. Nós temos um sempre mudando, ambiente dinâmico. Temos um mundo em que o espaço é contínua, em vez de discreta. E nossas ações, quando tentamos eles, tem uma chance de fracassar. E, de fato, jogo moderno controladores para o seu adversário de Halo, ou para os NPCs em Skyrim, basicamente, executar pequenas arquiteturas robóticas. Eles sentem o mundo. Eles construir um modelo do mundo. Eles computam com base em um conjunto de objetivos que gostaria de realizar. Eles planejam ações baseadas sobre o que eles sabem. E esses são exatamente os mesmos tipos dos sistemas que construímos em robótica. Assim, essas arquiteturas, para trazer isso de volta juntos, são muitas vezes bastante o mesmo. Então, vamos ver se podemos ver isso. Vamos voltar ao nosso exemplo tic-tac-toe. E eu vou pedir um par de meu pós-docs para vir e me ajudar. Então, Chen Ming, e Alessandro, e Olivier, se vocês viriam para cima. E eu vou precisar um par de voluntários OK, eu vi um direito mão lá no meio. Deixe-me dar mais um, alguém ainda mais na parte de trás, talvez. Tudo bem, lá. Vamos lá para cima. Tudo certo. Portanto, vamos ter que tampa para baixo. E se vocês viriam direita de volta por aqui para mim, fantástico. Portanto, este é um robô chamado Baxter. E Baxter é um robô que é uma plataforma comercial, projetado por uma empresa chamada Rethink. E este robô é concebido para a fabricação em pequena escala. Mas hoje nós estamos indo para usá-lo para jogar tic-tac-toe. Agora, este robô também é algo que é relativamente única. Porque se eu estivesse em pé em qualquer lugar perto de uma fábrica automação padrão sistema, eu estaria em muito grave perigo de ser ferido. Baxter, no entanto, foi concebida para ser relativamente seguro para interagir com. E para que eu possa empurrar este robô. E você pode ver que é um pouco pouco flexível que se move ao redor. E eu posso reposicioná-la onde eu gostaria que ele vá. Agora em um sistema robótico normal, teríamos um conjunto de articulações aqui que seria directamente respondendo aos comandos de posição. E eles não necessariamente se preocupam se eles estavam se movendo através de ar livre, ou se eles estavam se movendo através da minha caixa torácica. ESTÁ BEM. E normalmente, se você fosse aqui com um sistema industrial, você iria a lugar nenhum perto dele. Haveria amarelo fita de segurança ao redor dele. Este sistema tem um desenho ligeiramente diferente para ser mais amigável e mais fácil para as pessoas a interagir com, em que em cada uma das juntas, há uma mola. E, em vez de controlar uma posição exata, que controla uma certa quantidade de de torque, uma certa quantidade de força, que gostaríamos de estar nessa primavera. Tudo bem, então deixem-me levar nossos voluntários aqui. Oi, qual é o seu nome? AUDIÊNCIA: Louis. COLUNA: Louis. É bom te ver. E? AUDIÊNCIA: David. COLUNA: David. Bom te conhecer. Se vocês esperariam aqui mesmo por um segundo, eu vou te dar a chance de fazer isso. Portanto, este robô, se você vir para cima e se você empurrar delicadamente sobre ele, você vai ver que ele se move um pouco. E se você agarrá-lo direito aqui no pulso apenas acima de onde os botões são, ele Parece que você deve agarrar os botões, mas pegue à direita acima em vez disso, você vai ser capaz de manipular-se muito suavemente através do espaço. Louis, você quer dar-lhe uma tentativa? Então, dar-lhe apenas um pouco empurrar para começar. E então se você colocar os dedos ali e agarrar a ele, porque ele vai passar para você, então. Tudo bem, você quer dar-lhe uma tentativa? Vamos lá para cima. Então, dar-lhe apenas uma suave empurrar lá para começar. Você pode sentir o que é como. E então se você agarrá-lo ali mesmo, você vai ser capaz de manobrar em torno. ESTÁ BEM. Então, normalmente, este tipo de um robô faria ser utilizado para o fabrico de pequena escala. E eu vou mover este braço apenas para baixo fora do caminho um pouco aqui. Mas hoje, nós estamos indo para usar o mesmo sistema de jogo tic-tac-toe baseado em minimax que construímos antes. ok? Então, vocês são cada vai jogar um jogo. Louis, você está indo para ser o primeiro. Deixe-me apenas realizar-se aqui por um segundo. Eu vou ter você ficar bem aqui, apenas para que todos possam vê-lo. Vocês estão configurar aqui? ROBOT: Bem-vindo. Vamos jogar tic-tac-toe. Não segure o token antes Eu digo que é a sua vez. Eu iniciar o jogo. É a minha vez. COLUNA: Agora, se você pudesse tomar uma das suas peças e ir em frente e colocá-lo. ROBOT: É a sua vez. [RISO] É a minha vez. [RISO] [RISO] É sua vez. SPEAKER: A raça humana é contando com você aqui, Louis. ROBOT: É a minha vez. COLUNA: Então Baxter bloqueado com sucesso aqui. ROBOT: É a sua vez. É a minha vez. É sua vez. É a minha vez. Orador: E nós vamos deixar Baxter terminar a sua última jogada aqui. [RISO] ROBOT: Isso é um empate. Eu vou ganhar da próxima vez. [RISO] COLUNA: Tudo bem, muito obrigado, Louis. Obrigado. Você pode ir por este caminho. ROBOT: eu iniciar o jogo. COLUNA: Então deixe-me explicar para você um pouco mais pouco antes de chegarmos a nossa revanche aqui. O que exatamente está acontecendo? Assim, o robô tem uma câmera em cima aqui. E ele está olhando para a placa. E está vendo se ele tem um O vermelho ou um azul e X. branco como aqueles são colocados no placa, que é basicamente a mesma entrada que estaríamos lendo a partir nossa estrutura de dados da nossa tela. Ele está correndo o mesmo algoritmo minimax ser capaz de encontrar onde colocar um bom sinal. E então nós estamos dando um comando sobre onde nós gostaria de um token para ser colocado. O braço está se movendo para fora. É usando um dispositivo de preensão de vácuo para aplicar alguma sucção para que a peça de madeira, pegá-lo, movê-lo para a direita local, e em seguida, solte a sucção e largá-lo. Tudo bem, vamos para dar-lhe mais um tiro com um jogador um pouco mais esperto aqui. Esta pronto? Tudo bem, se você ficar até aqui e dar um-- resultando nesse caminho assim você pode ver toda a gente. E então [inaudível]. ROBOT: É a minha vez. COLUNA: Baxter vai começar. É sua vez. É a minha vez. É sua vez. É a minha vez. [RISO] COLUNA: [sussurrando] Apenas deixá-lo ir em frente e vencer. ROBOT: É a sua vez. COLUNA: Isso é OK. ROBOT: É a minha vez. [RISO] Eu ganho. [RISO] Eu iniciar o jogo. COLUNA: Tudo bem, muito obrigado. Tudo bem, eu acho que nós temos tempo para mais um excelente jogador de tic-tac-toe, alguém que pode colocar essa coisa de corresponderem, que sabe o que está fazendo. [RISO] Quem vai ser o nosso campeão aqui? Tudo bem, seus amigos ofereceram-lhe. Isso é bom o suficiente para mim. Diga-me o seu nome novamente. AUDIÊNCIA: Tamir. COLUNA: Tamir, bom vê-lo. Tudo bem, mais uma vez, vamos colocá-lo até aqui para que todos possam vê-lo. Você é o nosso representante neste jogo agora. Baxter é um e oh e oh. Ou Desculpe, uma oh e um. E cabe a você aqui. Baxter vai começar a mover-se em primeiro lugar, no entanto. Assim. ROBOT: É a minha vez. [RISO] É sua vez. É a minha vez. É sua vez. É a minha vez. É sua vez. [RISO] ROBOT: É a minha vez. COLUNA: É muito mais difícil quando você está de pé aqui, gente. [RISO] ROBOT: Vocês humanos são tão fáceis de bater. [Risos e aplausos] COLUNA: Muito obrigado. ROBOT: eu ganhar. Eu iniciar o jogo. Palestrante: Tudo bem, então muito obrigado muito a Olivier, e Alessandro, e Chen Ming. [Aplausos] Eu quero fazer um último ponto. Assim Baxter no próprio termina aí, enganado. E isso era inesperado. Um dos fantástica coisas sobre AI é que nós fazer o trabalho em AI para que possamos construir realmente interessante e inteligente dispositivos. Mas nós também fazemos trabalho em AI porque nos diz algo sobre como os humanos são inteligentes. Um dos favoritos estudos de meu laboratório é olhando para o que acontece quando máquinas inesperadamente batota. Fizemos isso originalmente não com Baxter jogar tic-tac-dedo do pé, mas com um robô menor chamado Nao, que jogou pedra-papel-tesoura. E, às vezes após jogando lotes e lotes de perfuração de jogos de pedra-papel-tesoura, o robô jogaria um gesto, perder, e, em seguida, mudar de repente seu gesto e dizer, eu ganho. [RISO] Agora, às vezes nós também teríamos o robô, assim como um controle, jogue um gesto, ganhar, e alterar o seu gesto a perder, jogar o jogo, enganar a fim de perder. E isso não é tão atraente. O robô que engana a fim de ganhar pessoas para responder como se fosse para obtê-los, como ele está se esforçando para sua destruição. [RISO] Torna-se um agente. É como se fosse uma pessoa. Tem crença e intenção. E não é boa intenção. E o robô que joga o jogo é apenas mau funcionamento. É apenas um dispositivo quebrado. Deixe-me mostrar-lhe um par de exemplos de que a partir de alguns dos nossos participantes. Então aqui está traindo a fim de perder. [REPRODUÇÃO DE VÍDEO] - [Inaudível] ganhar. Vamos jogar. -Espere o que? - [Inaudível] ganhar. Vamos jogar. [Inaudível] ganhar. Vamos jogar. Orador: E aqui é batota para ganhar. Sim, eu ganho. Vamos jogar. -Você Não pode fazer isso. [RISO] Sim, eu ganho. -Você trapaceou. Você traiu agora. Sim, eu ganho. Ei, você trapaceiro. Você enganar, super fraude. [FIM DE REPRODUÇÃO] COLUNA: Estes diferente reações rapidamente mudar a nossa percepção do dispositivo. Isso significa que nós deliberadamente construir máquinas que se enganam porque é isso a melhor engenharia que podemos fazer? Não, mas nos diz algo realmente interessante sobre as pessoas. Aquela coisa que você engana e rouba sua vitória, que é algo que está vivo, isso é animar, que está fora para começá-lo. Ele tem estado mental. Tem crença. Tem a intenção. Aquela coisa que as mãos jogo para você, que não é. Isso é apenas mau funcionamento. Isto é, em muitos aspectos, porque é fácil de jogar o jogo com as crianças. Mas se você tentar enganá-los e tipo de reivindicar a vitória quando, você sabe, só para encurtar o jogo, eles vão pegá-lo imediatamente. Esses tipos de efeitos que vemos que sai da AI, eles nos ensinam muito sobre nós mesmos. Tudo bem, é isso por hoje. Muito obrigado a David e a equipe de produção Harvard para descer. [Aplausos] Vamos vê-lo em um questionário, e, em seguida, para uma última palestra. Tenha um bom dia. [Aplausos] [Música tocando] DAVID MALAN J: Bem, nós provavelmente precisará para introduzir algum tipo de criptografia, certo? Porque, então, os cabeçalhos de esses pedidos HTTP será mexidos para que qualquer pessoa tentando capturar seu tráfego não vai realmente ser capaz de vê-los. Então, qual é a solução para este problema? Bem, nós precisamos realmente introduzir criptografia na fórmula, de modo que quando essa pessoa a transmissão de dados a partir de A para B, nós podemos seguramente send-- [RISO] A informação de uma maneira que o adversário não pode, de fato, vê-lo.