inteligência artificial - paginas.fe.up.ptprojfeup/submit_16_17/uploads/relat_1... ·...

34
Inteligência Artificial Trabalho realizado no âmbito da disciplina Projeto FEUP Mestrado Integrado em Engenharia Informática e Computação Equipa MIEIC04_4 Inês Marques 201605542 Juliana Marques 201605568 Miguel Ferreira 201605420 Tiago Ribeiro 201605619 Supervisor Prof. Jorge G. Barbosa Monitor Mafalda Falcão Outubro/Novembro 2016

Upload: trandieu

Post on 28-May-2018

234 views

Category:

Documents


0 download

TRANSCRIPT

Inteligência Artificial Trabalho realizado no âmbito da disciplina Projeto FEUP Mestrado Integrado em Engenharia Informática e Computação Equipa MIEIC04_4 Inês Marques 201605542 Juliana Marques 201605568 Miguel Ferreira 201605420 Tiago Ribeiro 201605619 Supervisor Prof. Jorge G. Barbosa Monitor Mafalda Falcão

Outubro/Novembro 2016

1. Índice 1. Índice 1

2. Índice de Figuras 3

3. Índice de Tabelas 4

4. Palavras-Chave 5

5. Introdução 6

6. O que é a Inteligência artificial? 7 6.1. Breve história da Inteligência Artificial 8

7. Aplicações da Inteligência Artificial 9 7.1. Processamento de Linguagem Natural 9

7.1.1. Análise Fonética 10 7.1.2. Análise Morfológica 10 7.1.3. Análise Sintática 11 7.1.4. Análise Semântica 12 7.1.5. Análise do Discurso 12 7.1.6. Análise Pragmática 12

7.2. Videojogos 13 7.2.1. História dos videojogos 13 7.2.2. A IA nos Jogos 16

7.2.2.1. Finite State Machine 17 7.2.2.2. Lógica nebulosa ou lógica Fuzzy 18 7.2.2.3. Árvores de decisão 18 7.2.2.4. Redes Neuronais Artificiais 20 7.2.2.5. Flocking 22

7.2.3. Vantagens e Desvantagens da inteligência artificial usada nos jogos 23 7.2.4. Conclusão 24

7.3. Robótica 25 7.3.1. História dos robôs 25 7.3.2. Aplicações da robótica 26 7.3.3. Leis da Robótica 28

8. Aplicação proposta 29 8.1. Funcionamento do produto 29

8.1.1. Debugging 29

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 1

8.2. Vantagens 30

9. Conclusão 31

10. Bibliografia 32

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 2

2. Índice de Figuras Imagem 1: Alan Turing Imagem 2: Arquitetura padrão de um sistema NLP Imagem 3: Árvore de parser Imagem 4: Árvore de parser com anexo semântico Imagem 5: Space Wars Imagem 6: Pong Imagem 7: Space Invaders Imagem 8: Pac-Man Imagem 9: Karate Champ Imagem 10: Herzog Zwei Imagem 11: Battle Cruiser 3000AD Imagem 12: Half Life Imagem 13: Máquina de estado finito Imagem 14: Árvore de decisão Imagem 15: Linha de montagem automatizada Imagem 16: Robô Doméstico Imagem 17: Cão robô Imagem 18: Logótipo do Produto

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 3

3. Índice de Tabelas Tabela 1: Tabela de sufixos Tabela 2: Etiquetagem sintática Tabela 3: Quadro comparativo entre cérebro e o computador Tabela 4: Quadro comparativo entre computadores e neuro computadores Tabela 5: Vantagens e Desvantagens dos diversos tipos de inteligência artificial em jogos

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 4

4. Palavras-Chave NLP: Natural Language Processing IA: Inteligência Artificial

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 5

5. Introdução

Este relatório, desenvolvido no âmbito da unidade curricular do projeto Feup, pretende aprofundar e dar a conhecer algumas das diversas aplicações da inteligência artificial, assim como o seu controverso conceito. Apesar da inteligência artificial ser um conceito relativamente recente, esta começa a ser sonhada no Renascimento com o aparecimento do mecanismo do relógio."Pode uma máquina pensar?" Essa é a questão que leva Alan Turing a dar forma ao conceito da I.A, que será reconhecida com ciência em 1956. Atualmente a inteligência artificial abrange uma variedade de temas, desde áreas de uso geral como aprendizagem e percepção até a tarefas especializadas como jogos de xadrez, detecção de fraudes, tradução autónoma, reconhecimento de voz e veículos autónomos. A IA está de tal forma presente no nosso dia a dia que muitas vezes esquecemos nos da sua existência. Está presente numa simples pesquisa no Google, ou numa simples fotografia, as máquinas fotográficas que fazem o foco automático no rosto das pessoas, ou mesmo nos corretores ortográficos dos processadores de texto de computador, já que é preciso um sistema inteligente para detectar que há um erro de sintaxe na frase e oferecer uma possível correção. Este relatório será focado nas seguintes aplicações da IA:

● Robótica é, de uma forma simples, a ciência que visa a criação de máquinas funcionais independentes que auxiliem o ser humano na realização de tarefas.

● Processamento da linguagem natural que se resume à capacidade do computador compreender e comunicar na mesma linguagem que os humanos através de padrões associados com a fala deste.

● Videojogos que se resume á capacidade do computador aprender e ajustar o comportamento das personagens de acordo com o comportamento e progressão do jogador.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 6

6. O que é a Inteligência artificial?

A inteligência artificial é um conceito muito controverso que tem sido debatido ao longo dos anos. Os dicionários da língua portuguesa definem a I.A como “faculdade de aprender, compreender e adaptar-se”.

Para ultrapassar o problema da falta de consenso em relação à definição da I.A, Alan Turing propos em 1950 um teste capaz de determinar se uma máquina possui ou não inteligência. Para isso baseou-se no seguinte argumento:

“Não sabemos definir precisamente o que é inteligência e, consequentemente, não

podemos definir o que é inteligência artificial. Entretanto, embora não tenhamos uma definição de inteligência, podemos assumir que o ser humano é inteligente. Portanto, se uma maquina fosse capaz de se comportar de tal forma que não pudéssemos distingui-la de um ser humano, essa máquina estaria demonstrando algum tipo de inteligência que, nesse caso, só poderia ser inteligência artificial.” (Alan Turing 1950)

Imagem 1: Alan Turing

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 7

6.1. Breve história da Inteligência Artificial

A História da Inteligência Artificial (IA) começou na antiguidade com histórias de seres artificiais dotados com inteligência.

Em 1940 surge o primeiro computador digital programável, uma máquina baseada na essência abstrata da razão matemática. Este dispositivo e as idéias por trás inspiraram cientistas a começar a discutir seriamente a possibilidade de construir um cérebro eletrônico. O campo de pesquisa da inteligência artificial foi fundado em uma conferência no campus do Dartmouth College no verão de 1956.

Ao longo da história o progresso em pesquisas sobre a inteligência artificial sofreram e sofrem de altos e baixos, no entanto problemas que pareciam insolúveis em 1970 foram resolvidos e as soluções são agora utilizadas comercialmente. Atualmente, ainda nenhuma máquina foi construída ao nível de inteligência humano, ao contrário das previsões otimistas da primeira geração de pesquisadores."Nós podemos ver somente a uma curta distância à frente, mas nós podemos ver que pode ser feito.” admitiu Alan Turing em um artigo da década de 1950 que analisou a pesquisa moderna por máquinas pensantes.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 8

7. Aplicações da Inteligência Artificial

7.1. Processamento de Linguagem Natural O Processamento de linguagem natural (NLP) é um importante campo de pesquisa na

área da computação. Ao descobrirem padrões de linguagem, as crianças aprendem a diferença entre o singular e o plural, a usar nomes, adjetivos e verbos e a formar diferentes tipos de frases como imperativas ou declarativas. Se conseguirmos definir e descrever padrões da linguagem natural, então conseguiremos “ensinar” o computador como se fala e se entende frases em linguagem natural. (Kocaleva et al. 2016)

Através deste tipo de processamento é possível dotar o computador da capacidade de entender e comunicar na mesma língua que um ser humano.

Os elementos de uma arquitetura normal de um sistema NLP são os seguintes:

1. Reconhecimento de fala: Transformar a fala de uma pessoa num vetor de palavras. Esta é constituída por uma série de parâmetros relacionados com o ato de ouvir.

2. Compreensão da linguagem: Tem o objetivo de gerar um significado para as palavras ouvidas, que será utilizado posteriormente.

3. Gestão do diálogo: Tem o objetivo de coordenar e juntar todas as partes do sistema e utilizadores, além de estabelecer a conexão com outros.

4. Comunicação com sistemas externos: Tais como sistemas especialistas, bases de dados, ou qualquer outro tipo de aplicações informáticas.

5. Gerador de respostas: Preparar uma resposta a ser entregue pelo sistema. 6. Output da fala: Uso de diferentes técnicas para entregar a mensagem ao

utilizador. (Kocaleva et al. 2016)

Imagem 2: Arquitetura padrão de um sistema NLP

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 9

São utilizados normalmente seis níveis de análise da linguagem numa arquitetura

padrão de um sistema NLP com o objetivo de entender a linguagem humana, embora não seja obrigatório a utilização de todos eles.

7.1.1. Análise Fonética Corresponde ao modo como as palavras são produzidas e transmitidas. É um nível de

extrema importância para o entendimento da fala, não sendo relevante para o texto escrito.(Kocaleva et al. 2016)

7.1.2. Análise Morfológica Um morfema corresponde à mais pequena parte de uma palavra com algum

significado, podendos ser radicais, afixos ou sufixos (exemplo: infelizmente - in+feliz+mente).(Kocaleva et al. 2016)

Através deste tipo de análise é possível reduzir significativamente o tamanho do dicionário a armazenar, visto que apenas tem que se armazenar o radical da palavra e respectivos sufixos. Estas são classificadas segundo tabelas de afixos. Por exemplo, a entrada zinho numa tabela está associada ao diminutivo, portanto a palavra bonezinho é um diminutivo de boné que corresponde ao seu radical.(Müller 2003)

Tabela 1: Tabela de sufixos

sufixo substantivo (radical) palavra derivada

-zinho boné bonezinho

botão botãozinho

-zinha árvore arvorezinha

flor florzinha

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 10

7.1.3. Análise Sintática Através da análise sintática consegue-se dividir uma frase nos seus respetivos

componentes.(Kocaleva et al. 2016) Existem três abordagens possíveis para efetuar este processo:

● Etiquetagem (tagging): Consiste na identificação das classes morfológicas a que pertencem as diferentes palavras através da implementação de parsers.

● Abordagem Probabilística: Consiste em utilizar cadeias de Markov para descobrir qual a sequência mais provável de palavras. Com base na análise estatística das frases processadas, torna-se possível prever qual a palavra com mais probabilidade de ser utilizada a seguir.

● Abordagem Funcionalista: Utiliza uma combinação de regras com o uso de probabilidades. Através da técnica conhecida como Transformation-Based Learning, é possível construir novas regras através das estatísticas recolhidas para complementar as básicas.(Müller 2003)

Tabela 2: Etiquetagem sintática

etiqueta descrição palavra

PPE Pronome Pessoal eu

VP Verbo no Passado tropecei

PAF Preposição+Artigo Feminino na

SSF Substantivo Singular Feminino

pedra

Imagem 3: Árvore de parser

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 11

7.1.4. Análise Semântica Enquanto que a análise sintática preocupa-se com a estrutura das frases, a semântica

analisa o significado das diferentes expressões. Como as mesmas palavras podem possuir diferentes significados, torna-se assim necessário analisar o resto da sentença para descobrir o sentido das mesmas. (Kocaleva et al. 2016)

Para isso são acrescentados às árvores de parser os anexos semânticos, podendo ser construídos durante o processo de análise, enquanto a árvore vai sendo completada.(Müller 2003)

Imagem 4: Árvore de parser com anexo semântico

7.1.5. Análise do Discurso Examina o significado de uma frase em relação com as restantes do mesmo

parágrafo ou texto. Como é uma estrutura bastante previsível, é utilizada pelo NLP para entender o papel de cada informação no documento.(Kocaleva et al. 2016)

7.1.6. Análise Pragmática Esta destina-se a analisar o modo como as mesmas frases são utilizadas em

diferentes contextos e como são alterados os seus significados dependendo da situação em que se encontram.(Kocaleva et al. 2016)

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 12

7.2. Videojogos

Jesse Schell em “A arte de Game Design” expõe que temos que ter em mente que o jogo não é a experiência, mas sim possibilita a experiência.

Diante desta afirmação, compreendemos que o desenvolvedor de videojogos deve, enquanto desenvolve jogo, estar preocupado com o jogador e consequentemente com as experiências que ele vivenciará diante do universo que encontrará no jogo (Universo fictício).

7.2.1. História dos videojogos

Imagem 5: Space Wars

Imagem 6: Pong

1977 - Space Wars 1972 - Pong Primeiros jogos eletrónicos (marco importante na sua história) Sem conceito de inteligência artificial

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 13

Imagem 7: Space Invaders

1978 - Space Invaders. Os Inimigos apresentam movimentos padronizados. Reagem disparando de volta para o jogador. Jogo de controlo simples

Imagem 8: Pac-Man

1980 - Pac-man Personagens com movimentos padronizados, com “personalidade”. Cada um deles apresentava uma forma distinta de comportamento.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 14

Imagem 9: Karate Champ

1984 - Karate Champ O primeiro jogo de luta com o computador como adversário.

Imagem 10: Herzog Zwei

1990 - Herzog Zwei Um dos primeiros RTS (real time strategy) da história. Implementação do algoritmo de pathfinding.

Imagem 11: Battle Cruiser 3000AD

1996 - Battle Cruiser 3000AD Primeiro jogo comercial a utilizar o conceito de redes neuronais. Os jogos a partir desta época destacam-se por utilizar um maior número de conceitos (FSM, PathFinding, Scripts, etc).

Imagem 12: Half Life

1998-Half Life Auge da inteligência artificial nos videojogos. O jogo faz grande uso de linguagens de script. Um ano antes Deep Blue derrotou o atual campeão mundial de xadrez Gary Kasparov.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 15

7.2.2. A IA nos Jogos

A Inteligência artificial, apesar de ser aplicada em videojogos desde o passado (1977), ainda está bastante longe das capacidade expectáveis, bem como da sua complexidade nos jogos, devido ao grande avanço no campo da computação gráfica que desvia a atenção da Inteligência artificial. Isto verifica-se devido ao curto prazo que os programadores têm para lançar um jogo que, em alguns casos, é inferior a 1 ano. Portanto, todas as formas de inteligência artificial usadas no jogos são normalmente fáceis e rápidas de programar.

O principal objetivo da Inteligência artificial nos videojogos é criar experiências que afetem o jogador de forma direta e não dependam de meios de outros meios de comunicação (o jogador interage e “modifica” o seu percurso no jogo). Segundo esta filosofia, cada jogador tem portanto a possibilidade de escolher a sua própria narrativa ao longo da história do jogo, porque cada jogador tem uma forma diferente de interpretar a realidade que lhe é apresentada num mundo fictício.

A inteligência artificial, como o nome indica, dá uma certa capacidade de aprendizagem ao computador que se assemelha à inteligência nos humanos. No caso dos videojogos o computador vai registrando na sua memória situações e variáveis que usou no passado (com ou sem ajustes), de forma a poder tomar a decisão mais acertada numa situação futura. Porém, como o computador vai optar sempre pela melhor escolha, isso vai permitir ao jogador prever os movimentos do computador. Mesmo assim, o computador não vai cometer erros que o prejudiquem, sendo impossível a um humano para o derrotar (ex: em 1996, um supercomputador-Deep Blue venceu o melhor jogador de xadrez de todos os tempos-Garry Kasparov) . Por este motivo, os programadores optam por usar inteligência artificial não perfeita. São fornecidos dados e aproximações que não estão totalmente corretas e vão influenciar negativamente a prestação do computador, permitindo assim ao jogador a possibilidade de derrotá-lo, cumprindo assim a função lúdica do jogo. A Inteligência Artificial perfeita nao é real, ou seja, não imita a forma de pensar de um humano, que por vezes comete erros e falhas no raciocínio.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 16

7.2.2.1. Finite State Machine

Esta é uma técnica bastante utilizada na indústria dos videojogos (segundo Fairclough), devido à sua baixa complexidade e também por ser fácil de gerir. As Finite State Machine permitem que sejam armazenados tanto os estados das personagens como o ambiente. Desta forma, torna-se possível gerir o cenário e as personagens do jogo. No entanto, esta técnica é determinística (algoritmo determinístico- dada uma certa entrada, ela produzirá sempre a mesma saída. A máquina responsável passa sempre pela mesma sequência de estados), pelo que a estratégia do computador se torna facilmente previsível.

As Finite State Machine podem ser construídas em grande número e serem organizadas em hierarquia (Hierarchial Finite State Machines). Servem para implementações mais complexas, nas quais a função de transição de estado recebe as entradas e o estado atual e retorna o conjunto de saídas e um novo estado que passa a chamar-se estado atual.

Imagem 13: Máquina de estado finito

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 17

7.2.2.2. Lógica nebulosa ou lógica Fuzzy

A Lógica nebulosa ou Lógica de Fuzzy em honra a Lofti Asker Zadeh, matemático iraniano que a introduziu. A sua versatilidade faz dela uma excelente opção para aplicações que têm um certo grau de incerteza e precisam de grande flexibilidade e capacidade de adaptação. Esta lógica é a base para programação e armazenamento de dados imprecisos (embora não totalmente imprecisos) num computador. Isto conduz a que o computador realize cálculos imprecisos ou errados, já que partiu de conceitos que não são totalmente verdadeiros e precisos. Esta imprecisão aproxima a máquina (computador) à forma de pensar e de se comportar do ser humano, que nem sempre é precisa e adequada. Esta Lógica é um ramo da lógica booleana, já que admite os valores de Verdadeiro(1) e Falso(0). Para além destes dois valores, a Lógica Fuzzy admite ainda valores lógicos intermediários, como por exemplo 0,5 (nem Verdadeiro nem Falso). Este valor é portanto classificado como um valor difuso, podendo assumir qualquer valor entre 0 e 1. No domínio dos videojogos, esta lógica é usada na seleção de comportamentos e em situações que necessitem a tomada de uma decisão. Esta técnica é usada essencialmente para comandos condicionais de grande grau de complexidade.

7.2.2.3. Árvores de decisão

As árvores de decisão são usadas em problemas onde as ações ou decisões de um problema são descritas através de exemplos e casos. Os casos são representados por pares da forma: atributo-valor (que são introduzidos no processo). Esta técnica consiste na capacidade de uma personagem aprender com o jogador à medida que este progride no jogo. Esta informação (as experiências da personagem ao longo do jogo) é armazenada e organizada no formato de uma árvore. As árvores de decisão são bastante eficientes pela sua estrutura simples e portanto de fácil compreensão, sendo resistentes a interferências nos dados . Qualquer função lógica pode ser representada desta forma, o que lhe confere grande versatilidade.

Para a construção de uma árvores de decisão é necessário decompor os problemas complexos em subproblemas mais simples, podendo também estes últimos ser subdivididos em outros que por sua vez são menos complexos. Essa organização pressupõe que a árvore seja construída de cima-para baixo (“Top-Down”). Esta técnica tem por base a regra: Se X então Y (se se verificar X então a decisão passa para Y). As árvores podem ser construídas de modo manual ou automático).

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 18

Construção de uma árvore de decisão: 1. Escolher um atributo. 2. Aumentar a árvore adicionando um ramo para cada valor do atributo. 3. Passar os exemplos para as folhas (tendo em conta o valor do atributo escolhido) 4. Se em cada folha os exemplos forem da mesma classe, essa classe deve ser associada à folha Representação na árvores de decisão: –Os nós contêm um teste a um atributo (do teste podem resultar vários resultados, e o processo avança por um determinado ramo)-A árvore deve ser construída com o menor número de nós possível. –Cada ramo descendente corresponde a um possível valor deste atributo. Cada ramo na árvore é uma conjunção de condições –Cada Folha está associada a uma classe.

Imagem 14: Árvore de decisão

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 19

7.2.2.4. Redes Neuronais Artificiais

“São sistemas de processamento de sinais ou de informações, compostos por um grande número de processadores elementares chamados neurónios artificiais, que operam de forma paralela e distribuída, de modo a resolver um determinado problema físico/computacional.”

Uma rede neuronal é uma tentativa de simulação do cérebro humano, quer a nível de estrutura, quer a nível de comportamento (possui capacidade de aprendizagem). Estas redes são modelos matemáticos que se inspiram nas estruturas neuronais biológicas e que têm capacidade computacional adquirida por meio de adaptação, apresentando propriedades de aprendizagem e generalização [Haykin, 1998]. Portanto, uma rede neuronal artificial tem como base o conceito de neurónio biológico, ou seja, uma unidade pertencente a uma rede de neurónios em que estes comunicam ativamente entre si.

Os neurónios artificiais são meras representações numéricas dos neurónios biológicos, computando funções matemáticas, com o objetivo de reproduzir os potenciais elétricos das células bem como a propagação do sinal entre neurónios. No caso dos neurónios artificiais, através de valores numéricos, nomeadamente de funções de soma e de transferência de valores dos potenciais simulados.

De entre os diferentes modelos de RNAs, um dos mais comuns e o mais simples é o das redes de neurónios do tipo Perceptron. Este modelo consiste em agrupar os neurónios de forma a que estes constituam redes de múltiplas camadas com o nome de MLP (Multi-Layer Perceptron Networks) [Frank Rosenblatt, 1957]. Esta rede foi o primeiro tipo de rede neuronal, tendo sido criada em 1957 por Frank Rosenblatt num laboratório de âmbito militar. Este tipo de rede é conhecido também por classificador linear, já que apenas soluciona problemas que possam ser linearmente separáveis em duas dimensões. Esta técnica é utilizada nos videojogos, nomeadamente na aprendizagem de jogos off-line. Parâmetros de controlo das diversas personagens são treinados através de processos de aprendizagem. Apesar disso, esta técnica não é muito utilizada pelos programadores, já que pode gerar comportamentos não aceitáveis nas personagens. Esta técnica acarreta ainda com problemas na sua implementação em videojogos, já que necessita de muito ajustes nos seus parâmetros.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 20

Tabela 3: Quadro comparativo entre cérebro e o computador

Parâmetro Cérebro

Computador

Material Material Orgânico Metal e plástico

Velocidade Milisegundos Nanosegundos

Tipo de Processamento Paralelo Sequencial

Armazenamento Adaptativo Estático

Controle de Processos Distribuído Centralizado

Número de elementos processados

10exp11 a 10exp14 10exp5 à 10exp6

Ligações entre elementos processados

10.000 <10

Tabela 4: Quadro comparativo entre computadores e neuro-computadores

Computadores

Neuro-computadores

Executa programas(não tem capacidade de aprendizagem)

Aprende

Executa operações lógicas Executa operações não lógicas, transformações, comparações

Depende do modelo ou do programador Descobre as relações ou regras dos dados e exemplos

Um computador equipado com uma RNA é capaz de aprender em função de um determinado acontecimento e usar esses conhecimentos adquiridos para aplicá-los no futuro. Esses conhecimentos ajudam o computador a ter uma vantagem num jogo, por exemplo não devido ao facto de testar todas as combinações possíveis (computador normal), mas sim por conhecer e ter aprendido. Podemos concluir portanto que um neurocomputador é mais semelhante ao cérebro humano em relação a um computador normal, embora ainda esteja longe de replicar a capacidade de aprendizagem inata do ser humano.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 21

7.2.2.5. Flocking

Esta técnica é normalmente implementada quando queremos construir um programa em que queremos simular o comportamento natural de um grande grupo de indivíduos (ex:multidão de pessoas, cardume, rebanho, etc.). Esta técnica simula ambientes com alto grau de realismo, que podem, no caso dum jogo, ser explorados pelo jogador. Nestes ambientes, cada um dos indivíduos realiza uma ação que não depende diretamente da ação de outro, conferindo-lhe assim bastantes semelhanças à Natureza. Na técnica de Flocking, cada indivíduo/personagem move-se e comportam-se de acordo com as leis implementadas no ambiente criado. Nesta técnica não são guardadas as informações de um momento para o outro, não existindo estados, o que economiza em muito a memória. A cada momento o indivíduo realiza uma ação, independentemente do que realizou no passado.

Na indústria do videojogos são bastante utilizados em jogos de primeira pessoa(FPS), para gerar comportamentos nas diversas personagens que compõem o ambiente. São usadas em alguns jogos de estratégia em tempo real, como por exemplo o “American Conquest”, simulando o movimento de cada unidade do exército a mover-se de forma realista. Esta técnica é simples e bastante eficiente nas áreas em que se utiliza (movimentação de grandes grupos de indivíduos).

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 22

7.2.3. Vantagens e Desvantagens das formas de inteligência artificial usados nos jogos

Tabela 5: Vantagens e Desvantagens dos diversos tipos de inteligência artificial em jogos

Vantagens Desvantagens Aplicações

Finite State Machine É simples, podendo ser utilizada em conjunto com outras técnicas e é económica

Má escalabilidade, fraca estrutura, determinística e tem a necessidade de se anteciparem as situações futuras

Destinadas à gestão do universo do jogo, objetos e personagens

Lógica Nebulosa Resolve problemas não lineares, permite muita flexibilidade. Apresenta uma alternativa para quando não há uma solução simples

Mais complexa de se construir e não constitui uma opção viável em comparação com soluções mais simples

Tomada de decisão( seleção de comportamentos), filtro para entrada/saída de dados. Controla a situação emocional dos personagens

Flocking É realista e reativa, requer pouca memória

Aplicações limitadas Controlo de movimento de unidades e grupos de NPCs

Árvores de Decisão Resistente a interferências nos dados, estrutura fácil de compreender. Possui um algoritmo de treino eficiente

Necessidade de ajustes nos parâmetros

Prever situações futuras, aprendizagem

Redes Neuronais Flexíveis, não determinísticas e não lineares

Necessidade do ajuste de parâmetros, técnica complicada, exige muitos recursos do computador

Reconhecimento de padrões e controlo de comportamento, classificação e memória

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 23

7.2.4. Conclusão

Segundo Correa e Pastor (2012), o papel da IA nos videojogos é o de simular um comportamento próximo do comportamento do ser humano. Este comportamento não deve ser levado ao extremo, ou seja, no intuito de atingir níveis de decisão e velocidade de raciocínio muito acima do normal do ser humano. A Inteligência Artificial tem portanto o objetivo de aumentar a diversão e a componente lúdica do jogo, imitando um jogador inteligente com os seus pontos fortes e propositadamente com algumas fraquezas.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 24

7.3. Robótica

A Inteligência Artificial preocupa-se com aplicações relacionadas com a manipulação de diferentes máquinas fazendo-as a cada vez melhores ao momento de receber e controlar informação exterior mediante sua programação e sensores especializados, nascendo, neste meio, os conhecidos Robôs.

A palavra robô é originária do termo checo robota e significa trabalho forçado, tendo sido criada pelo escritor Karel Capek. Segundo o R.I.A., (Robot Institute of America), a sua definição é: “Robô é um manipulador reprogramável e multifuncional projetado para mover materiais, peças, ferramentas ou dispositivos especializados através de movimentos variáveis programados para desempenhar uma variedade de tarefas.” .

Um robô é uma máquina capaz de funcionar sem intervenção humana direta, ou seja, que realize uma dada tarefa sem ser continuamente supervisionado por um operador humano. Os robôs podem ou não ter o aspecto semelhante ao de um humano. Em geral não têm, ou apenas possuem o aspecto de partes deste (como, por exemplo, um braço). Normalmente o seu principal objetivo é reduzir o esforço humano ou melhorar a precisão de certa tarefa.

7.3.1. História dos robôs

Através dos séculos o homem tem procurado novas formas de melhorar os seus processos produtivos. A partir da segunda metade do século XX a tecnologia desenvolveu-se e permitiu automatizar estes processos. Surgiram conceitos como “robô” e “inteligência artificial” mas levou cerca de 40 anos para os robôs estarem presentes em força nos processos industriais. Os primeiros robôs surgiram no final dos anos 50, início dos anos 60. tendo sido criado em 1954 por George Devol o primeiro robô industrial: UNIMATE. Devol definiu, inicialmente, o Unimate como um “dispositivo de transferência programada articulada” sendo um braço primitivo que podia ser programado para realizar tarefas especializadas. Devol uniu-se a Joseph F. Engelberger e, em 1962, o primeiro Unimate foi instalado obedecendo aos comandos passo a passo armazenados num tambor magnético e realizando funções de manipulação de peças e montagem.

Imagem 15: UNIMATE

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 25

7.3.2. Aplicações da robótica

● Na indústria: os robôs industriais substituem o Homem no desempenho de tarefas nocivas ou demoradas. podendo ser usados para unir peças, cortar ou soldar, por grandes empresas automovilistas, em processos especiais, empacotar, pintar, para transportar peças de carga. São ainda muito utilizados em processos de produção em série pela sua capacidade de fazer a mesma atividade várias vezes não se cansando, nem cometendo erros por fadiga como os humanos.

Imagem 15: Linha de montagem automatizada

● No lar: os robôs empregados no lar podem fazer diferentes tarefas como servir as pessoas, dar segurança, funcionam também como meio de entretenimento, podem fazer tarefas como de limpeza e reparo, são multifuncionais e adaptam-se à tarefa que queira ser realizada.

Imagem 16: Robô Doméstico

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 26

● Meios Perigosos: os robôs neste campo são robôs especiais desenhados para entrar em meios perigosos para o ser humano. Alguns destes por exemplo são os destinados a desarmar bombas, limpar locais perigosos, trabalhar com desperdícios químicos, ajudar em resgates ou mergulhar no oceano como submarinos.

● Exploração: os chamados robôs espaciais trabalham no espaço, alguns coletam informação para depois ser estudada.

● Saúde: na área da saúde os robôs são usados para realizar operações de grande precisão, alguns também desenhados para ajudar os idosos e pessoas discapacitadas.

● Entretenimento: são robôs desenhados estritamente ao entretenimento como por exemplo os pequenos robôs de figuras conhecidas como, cães, gatos dinossauros, figuras de ação, etc.

Imagem 17: Cão robô

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 27

7.3.3. Leis da Robótica Existem princípios idealizados pelo escritor Isaac Asimov como objetivo de

controlar e limitar os comportamentos dos robô: ● Lei 0: um robô não pode causar mal à humanidade ou, por omissão, permitir que

a humanidade sofra algum mal.

● Lei 1: Um Robô não pode ferir um humano (ou por inação permitir que tal aconteça)

● Lei 2: Um Robô deve obedecer às ordens dadas por humanos, exceto nos casos em que tais ordens entrem em conflito com a primeira lei.

● Lei 3: Um Robô deve proteger a sua própria existência, desde que não entre em conflito com as leis anteriores.

O objetivo das leis, segundo o próprio Asimov, era tornar possível a coexistência de robôs inteligentes e humanos; impedindo assim que eles se rebelem contra estes. ( Isaac Asimov em Eu, Robô)

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 28

8. Aplicação proposta Partindo da aplicação da Inteligência Artificial no Processamento de Linguagem

Natural, propõem-se a utilização da mesma num novo e inovador produto na área das tecnologias de informação e comunicação.

Através desta tecnologia pretende-se dotar o computador da capacidade de entender e transformar linguagem natural em código máquina que possa ser executado pelo hardware da máquina.

Espera-se que com este produto seja possível simplificar ao máximo o processo de programação de software, tornando dispensável a aprendizagem de uma linguagem de programação, sendo esta substituída pela linguagem natural do ser humano.

Imagem 18: Logótipo do Produto

8.1. Funcionamento do produto Baseando-se na utilização da NPL, pretende-se que o computador entenda as

instruções dadas pelo utilizador e as converta em código que possa ser processado pelo hardware.

Com a aplicação dos seis tipos de análise do discurso enunciados anteriormente, o computador consegue interpretar o papel de cada frase no texto do utilizador. De seguida divide as frases e descobre o significado de cada um dos seus componentes de modo a poder converter a fala em linguagem que possa ser entendida e executada pelo hardware.

8.1.1. Debugging Para fins de debugging, o processo inverso também será possível, de modo a

que o utilizador tenha acesso, também em linguagem natural, ao código que tenha sido anteriormente enunciado.

Para isto acontecer, o computador converte cada linha de código em frases, utilizando as tabelas de significado que foram previamente carregadas no sistema.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 29

8.2. Vantagens Com a utilização deste produto espera-se obter um enorme ganho a nível de

tempo e dinheiro durante o processo de desenvolvimento de software. Isto é devido à eliminação da necessidade de se investir tempo na aprendizagem

e utilização de linguagens de programação, além do facto de se eliminar uma importante barreira no processo de converter o raciocínio para um programa ou algoritmo concreto, facilitando imenso o trabalho do programador.

Com esta aplicação torna-se possível alcançar pela primeira vez um grau de abstração total am relação ao hardware, permitindo programar um computador com os mesmos métodos de ensino utilizados em pessoas, sem ter em conta os aspetos técnicos do funcionamento do seu hardware.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 30

9. Conclusão Em jeito de conclusão, a inteligência artificial é uma área com bastante potencial

de desenvolvimento e aplicação no futuro. A sua utilização é crucial em diversas áreas, começando na robótica e automação, onde substitui a mão de obra humana na realização de diversas tarefas em áreas como a indústria ou a saúde. Passando também pelos videojogos, onde permite a criação de ambientes virtuais muito realistas, populados por elementos inteligentes capazes de reagir e influenciar as decisões do jogador. Por fim, ao criar uma plataforma de processamento de linguagem natural, permite pela primeira vez que um humano fale com um computador como de outra pessoa se tratasse.

Mas este não deixa de ser um tema extremamente controverso, devido principalmente ao desconhecimento que se têm acerca das suas reais capacidades. Além de descartar a utilização da inteligência humana em muitas áreas, originando problemas como o crescimento do desemprego, ninguém tem ainda a completa certeza das potenciais consequências nefastas que o uso desta tecnologia poderá trazer.

Com base nos conhecimentos adquiridos durante a realização deste projeto, foi proposto um produto. Este, caso seja possível de ser implementado com base nos recursos tecnológicos disponíveis na atualidade, permitirá uma programação totalmente abstraída dos componentes e do funcionamento da máquina, representando uma autêntica revolução em todo o processo de desenvolvimento de aplicações informáticas.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 31

10. Bibliografia 1. Mirjana Kocaleva et al., «Pattern Recognition and Natural Language Processing: State

of the Art» (Macedónia, 2016), http://www.temjournal.com/content/52/TemJournalMay2016_236_240.pdf.

2. Daniel Nehme Müller, «Processamento de Linguagem Natural» (Porto Alegre: Unversidade Federal do Rio Grande do Sul, Março de 2003), http://www.inf.ufrgs.br/~danielnm/docs/pln.pdf.

3. Alvarenga, Matheus, Diogo Correa, e Fernando Osório. «Redes Neurais Artificiais aplicadas no Reconhecimento de Gestos usando o Kinect | Alvarenga | Anais do Computer on the Beach». Acedido 12 de Outubro de 2016. http://siaiap32.univali.br/seer/index.php/acotb/article/view/6602/3747.

4. Garcia, Simone, e Luis Alvares. «Árvores de decisão – algoritmos ID3 e C4.5 | Garcia | Cadernos de Informática». Acedido 19 de Outubro de 2016. http://seer.ufrgs.br/index.php/cadernosdeinformatica/article/view/v1n1p52-55/8809.

5. «IA - Aula_5_TEBD_2013_Arvores_KNN.pdf». Acedido 19 de Outubro de 2016. http://wiki.icmc.usp.br/images/8/8e/Aula_5_TEBD_2013_Arvores_KNN.pdf.

6. «Microsoft PowerPoint - 3-ArvoresDecisao-ApreMaq.ppt - 3-ArvoresDecisao-ApreMaq.pdf». Acedido 19 de Outubro de 2016. http://www.ppgia.pucpr.br/~alekoe/AM/2005/3-ArvoresDecisao-ApreMaq.pdf.

7. «(Microsoft PowerPoint - Arvores de Decis\343o.ppt) - arvores_de_decisao.pdf». Acedido 19 de Outubro de 2016. https://www.dcc.fc.up.pt/~ines/aulas/MIM/arvores_de_decisao.pdf.

8. «Redes Neurais Artificiais aplicadas no Reconhecimento de Gestos usando o Kinect | Alvarenga | Anais do Computer on the Beach». Acedido 12 de Outubro de 2016. http://siaiap32.univali.br/seer/index.php/acotb/article/view/6602/3747.

9. Ritter, Roger, e Guilherme Taufer. «Técnicas de inteligência artificial em jogos eletrônicoss». 07:51:22 UTC. http://pt.slideshare.net/rogerritter/tcnicas-de-inteligncia-artificial-em-jogos-eletrnicoss.

10. Tatibana, Cassia, e Deisi Kaetsu. «Uma Introdução às Redes Neurais». Acedido 19 de Outubro de 2016. http://www.din.uem.br/ia/neurais/.

11. classroom.orange.com/pt. «Robótica e Inteligência Artificial». Acedido 20 de Outubro de 2016. http://classroom.orange.com/pt/robotica-e-inteligencia-artificial.html.

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 32

12. «Robótica»: Acedido 20 de Outubro de 2016. http://www.citi.pt/educacao_final/trab_final_inteligencia_artificial/robotica.html

13. “Wikipedia” Acedido a 28 de Outubro de 2016 https://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_intelig%C3%AAncia_artificial

Equipa MIEIC04_4 | Inteligência Artificial | Outubro/Novembro 2016 33