Upload
doankiet
View
218
Download
0
Embed Size (px)
Citation preview
Inteligência Artificial (IA) - Algoritmos 1/18
Inteligência Artificial
Algoritmos
Projeto FEUP 2016/2017 Mestrado Integrado em Engenharia Informática e Computação:
Prof. Manuel Firmino
Prof. J. Magalhães Cruz
Equipa 2, Turma MIEIC04,:
Supervisor: Prof. Jorge G. Barbosa
Monitora: Mafalda Falcão
Estudantes e Autores:
Amadeu Pereira [email protected] Bruno Oliveira [email protected]
João Ferreira [email protected] João Sousa [email protected]
Nuno Lopes [email protected]
Inteligência Artificial (IA) - Algoritmos 2/18
Resumo
O nosso relatório foi elaborado no âmbito da cadeira do Projeto FEUP, do 1º ano do Mestrado
Integrado em Engenharia Informática e Computação, tendo como tema a Inteligência Artificial,
abordando mais especificamente os algoritmos nela envolvidos.
O trabalho está dividido em quatro etapas. Primeiramente, é apresentada uma definição de
Inteligência Artificial, precedida de uma introdução ao algoritmo e ao seu papel no
desenvolvimento da IA. Segue-se uma análise a vários algoritmos de resolução de problemas,
com o intuito de se concluir uma forma de classificação dos mesmos. É apresentada também uma
abordagem aos principais desafios enfrentados pela IA, culminando com uma proposta de um
produto/software que possa ser usado neste ramo.
Palavras-Chave
Algoritmos, Inteligência, Computadores, Software, Autonomia, Informática, Computação,
Programação
Inteligência Artificial (IA) - Algoritmos 3/18
Agradecimentos
A realização deste projeto não seria possível sem a colaboração e a ajuda indispensável do
supervisor Prof. Jorge G. Barbosa e da monitora Mafalda Falcão. A primeira semana deste ano
letivo, a semana do Projeto FEUP, foi essencial para obtermos os conhecimentos e hábitos
necessários para a elaboração de um relatório, um poster e uma apresentação de acordo com os
parâmetros impostos pela cadeira.
As atividades e os desafios que realizamos nessa primeira semana, sustentados com a
informação teórica recebida pelas palestras, foram preciosos e determinantes. Queremos deste
modo agradecer quer ao monitor, quer ao supervisor, bem como à Faculdade de Engenharia da
Universidade do Porto, ao seu corpo docente e aos intervenientes que estiveram envolvidos neste
projecto.
Inteligência Artificial (IA) - Algoritmos 4/18
Índice
Lista de acrónimos
1. Conceito de Inteligência Artificial
2. Algoritmos em Inteligência Artificial
2.1 Classificação de Algoritmos
2.1.1 Métodos de Resolução de Problemas
3. Principais Desafios da Inteligência Artificial
4. Produto/ Software
5. Conclusão
6. Referências bibliográficas
Inteligência Artificial (IA) - Algoritmos 5/18
Lista de acrónimos
IA - Inteligência Artificial
DFS - Depth-first search
BFS - Breadth-first search
Inteligência Artificial (IA) - Algoritmos 6/18
1. Conceito de Inteligência Artificial
As pesquisas no campo da Inteligência Artificial não são tão recentes quanto o que se
possa pensar. De facto, logo após a Segunda Guerra Mundial um grupo bastante grande de
pessoas começou a trabalhar, de forma independente, no desenvolvimento de “máquinas
inteligentes”, tendo sido o matemático inglês Alan Turing o primeiro a dar uma palestra sobre o
tema, sugerindo que a resolução deste passaria, provavelmente, por uma forte programação em
vez de pela construção de máquinas e outros mecanismos.
De acordo com este, “A computer would deserve to be called intelligent if it could deceive a
human into believing that it was human.”, ou seja, um computador apenas deveria merecer ser
chamado de inteligente caso conseguisse convencer um humano a acreditar que este era uma
pessoa e não uma máquina.
Já em relação ao conceito, de acordo com a definição fornecida pela Universidade de
Cambridge e a Universidade de Oxford, Inteligência Artificial é a teoria, desenvolvimento e estudo
de como produzir sistemas computacionais que possuam habilidades que a mente humana
também possui, de forma a ser capaz de, por exemplo, entender e traduzir linguagem humana,
reconhecer imagens, resolver problemas e, fundamentalmente, ser capaz de tomar decisões e de
aprender automaticamente.
Uma vez mais, ao contrário do esperado, a Inteligência Artificial não se resume a simular a
inteligência humana. De acordo com John McCarthy, conceituado cientista da computação
estadunidense associado à Universidade de Stanford, apesar de por vezes tentarmos imitar o
nosso próprio pensamento através da Inteligência Artificial, o objetivo de grande parte dos
trabalhos nesta área é precisamente o contrário, ou seja, é o estudo da forma como esta resolve
problemas que nos são apresentados pelo mundo no dia a dia.
Inteligência Artificial (IA) - Algoritmos 7/18
2. Algoritmos em Inteligência Artificial
A inteligência artificial segue a máxima de Albert Einstein, ou seja, que os génios tornam a
simplicidade em complexidade. Por isso, à medida que o mundo se torna mais complexo, a
inteligência artificial torna-se essencial no século XXI, tal como o microprocessador o era no
século XX.
De um modo geral, a Inteligência Artificial (IA) é apenas um software. Na construção de
sistemas de IA, que são frequentemente grandes e complexos, houve a necessidade de serem
desenvolvidos algoritmos e ferramentas de software para estes. Os investigadores de IA foram
responsáveis por muitos dos recentes avanços na ciência de computadores, como por exemplo,
na procura de algoritmos, desenvolvimento da memória virtual e na alocação dinâmica de
memória.
O principal objetivo na investigação em Inteligência Artificial é encontrar algoritmos que
consigam fornecer soluções aproximadas sem a garantia de optimização. Estes algoritmos são
principalmente utilizados em grandes empresas como a Google, Facebook, Amazon…
No Google são utilizados algoritmos de machine learning para completar as solicitações de
pesquisa e que frequentemente prevêem com precisão o que alguém está à procura. Estes
algoritmos podem analisar milhares de milhões de sinais para direcionar as chamadas de
atendimento ao cliente automaticamente para o agente mais apropriado ou determinar que
clientes têm a maior probabilidade de comprar um produto em particular.
O Facebook e a Amazon usam algoritmos preditivos para fazer recomendações com base no
histórico de leitura e de compras do utilizador.
Em termos de cuidados de saúde, os algoritmos de "conhecimento profundo" podem ajudar os
médicos a identificar tipos de células cancerígenas ou anomalias intracranianas em qualquer lugar
do mundo em tempo real.
Inteligência Artificial (IA) - Algoritmos 8/18
2.1 Classificação de Algoritmos
Reiterando alguns aspetos sobre a Inteligência Artificial no seu conceito, Niederberger
considera-a a área da ciência da computação voltada a atribuir um comportamento inteligente a
máquinas, seja este comportamento humano ou não, sendo possível classificar a Inteligência
Artificial neste aspecto em quatro grandes abordagens.
Agir Humanamente - visa dar uma característica humana à máquina;
Pensar Humanamente - procura imitar da melhor forma o processo cognitivo humano,
dando primazia, não à solução encontrada, mas ao processo que levou a ela;
Pensar Racionalmente - usa ferramentas lógicas para resolver problemas;
Agir Racionalmente - age de forma a inferir sobre que maneira deverá agir dada uma
circunstância, a fim de alcançar um objetivo próprio.
Ora, face à enormidade de algoritmos desenvolvidos nos dias de hoje, direcionados ou não
para a Inteligência Artificial, torna-se complicado classificá-los sem qualquer linha de orientação.
Porém, nas quatro abordagens anteriores, destaca-se um objetivo de resolução de problemas,
associado a processos em busca de uma solução e que no seu decorrer podem variar a sua ação
dadas as circunstâncias.
Desta forma, centra-se a análise à área dos algoritmos na questão „Métodos de resolução de
problemas‟.
2.1.1 Métodos de Resolução de Problemas
De um modo genérico, a um problema em Inteligência Artificial associa-se uma arquitetura,
normalmente designada por Sistemas de Produção. Estes definem um problema como um
espaço de estados e as transições entre eles, sabendo estes que podem acarretar funções de
mérito/custo, isto é, uma espécie de „grandeza‟ que seja relativa ao problema (por exemplo,
distância percorrida, num problema de trajetos). O algoritmo procura então a solução para o
problema percorrendo este espaço desde o estado inicial até ao estado final. Neste processo
pode ou não haver memória do caminho armazenada, o que em função de caminhos mais
promissores, permite ao algoritmo decidir a melhor solução. Nem todos o fazem. De seguida,
encontra-se um esquema que atribui, ou não, esta e outras qualidades a determinados algoritmos.
Inteligência Artificial (IA) - Algoritmos 9/18
Outro conceito importante, antes da análise dos métodos, é o de Árvores/Grafos. Estes
constituem a forma gráfica de representar os sistemas de produção, sendo conhecidos
fundamentalmente por círculos e linhas, correspondentes respetivamente aos estados e às suas
transições.
Exige-se sempre alguma cautela quanto à divisão de características de algoritmos, isto porque
muitos deles partilham dos mesmos processos; pelo que podem pertencer a várias classificações
ao mesmo tempo.
No entanto, existem três tipos de métodos de resolução de problemas: métodos fracos,
métodos informados e pesquisa adversarial. Procura-se uma análise superficial ao
comportamento dos algoritmos em cada método, com o objetivo de encontrar constantes que
permitam uma classificação lógica nesta área da resolução de problemas.
Os métodos fracos correspondem a técnicas de pesquisa gerais e são independentes dos
problemas, isto é, estão preparados para agir sem necessitar de informações específicas ao
problema em questão.
Em geral, compõe os métodos fracos os seguintes algoritmos:
o Pesquisa em profundidade (DFS – Depth-first search)
- Não é completo (o caminho pode ser infinitamente grande);
- Não é ótimo (entrega a 1ª opção, que pode não ser a melhor);
o Pesquisa em largura (BFS – Breadth-first search)
- É ótimo (tendo as arestas todas o mesmo custo/valor, a solução apresentada
é necessariamente a melhor);
- É completo (se a ramificação for finita);
Inteligência Artificial (IA) - Algoritmos 10/18
o Custo uniforme
- É ótimo e completo (considerando até os vários custo das arestas)
- É mais complexo (representa o BFS e considera os custos).
o Aprofundamento Progressivo
- Espécie de DFS com ramificação limitada;
- É ótimo (para custos todos iguais);
- É completo (para ramificação finita);
Os métodos informativos, por sua vez, são dependentes do problema. Requerem alguma
informação sobre o problema, normalmente uma função heurística que atribui valor a estados,
melhorando a escolha das opções em detrimento de outros. A heurística pode por vezes
simplificar demasiado o problema, tornando-se má-heurística. Existem algoritmos genéricos,
denominados de meta-heurísticos, que baseados na heurística vão tentando melhorar
iterativamente uma solução candidata:
o Hill Climbing
- Recebe feedback para saber se um movimento é favorável ou não, visando a
chegada mais rápida à solução;
- Não é ótimo, por se tratar de um algoritmo ganancioso, podendo nem sequer
apresentar solução;
- Pode ser completo em funções de caminho finito;
o Simulated Annealing (usa probabilidades para melhorar a pesquisa, evitando que fique
preso em máximos/mínimos locais – as extremidades);
- Só é ótimo e completo em funções bem-comportadas
o Algoritmos Evolutivos (ideia de evolução e seleção natural)
- São lentos e podem levar a soluções difíceis de explicar;
- São úteis quando:
- Espaço de pesquisa é demasiado grande;
- Não é necessária uma solução ótima, mas apenas uma boa solução;
- Se tem capacidade computacional para implementar os algoritmos
paralelamente;
Inteligência Artificial (IA) - Algoritmos 11/18
o A* - A-Star (mistura entre „custo uniforme‟ com „métodos gananciosos‟)
- O custo uniforme só tem em conta os custos até ao sucessor;
- Os métodos gananciosos apenas tem em conta a heurística do sucessor;
- Logo, A* é a mistura entre estes dois (se custo é zero, algoritmo passa a ser
ganancioso; se heurística é constante, algoritmo passa a ser custo uniforme; se
custo é zero e heurística é constante, algoritmo passa a ser pesquisa em largura
(BFS).
- É dispendioso na memória
- Por vezes deriva em IDA* (que é um „aprofundamento progressivo‟ mas
com custo máximo em vez de profundidade (ramificação) limite).
Os casos anteriores demonstram situações em que se procura a melhor solução possível sem
qualquer entrave ao processo, o que nem sempre se aplica à realidade. A pesquisa adversarial
pressupõe uma competição face a um adversário, que quer dificultar o processo do algoritmo; algo
em que os algoritmos dos casos anteriores deixariam de funcionar.
Através da analogia max → jogador / min → adversário
o Minimax
- Atribui valores de V/E/D, propagando-os pelas possíveis jogadas do adversário
de forma a saber a que valor um estado nos pode levar;
- Torna-se complicado em jogos complexos com muitas ramificações;
o Minimax com Alpha-Beta running
- Corta testes desnecessários, reduzindo o espaço de pesquisa;
o Negamax
- Trata todos os níveis como maximizante (não-adversário), invertendo os valores
entre cada nível, melhorando o desempenho;
Existem também outras variantes associadas a esta área da resolução de problemas, como,
por exemplo, o método da decomposição. Este, basicamente, decompõe o percurso em
processos mais simples para uma resolução em várias máquinas. Outro conceito é o da
satisfação de restrições, que é mais vantajoso que os algoritmos de pesquisa uma vez que
reduz a quantidade de estados de pesquisa, não sendo preciso andar um caminho todo para se
saber se é possível ou não chegar a uma solução.
Inteligência Artificial (IA) - Algoritmos 12/18
Desta forma, destacam-se algumas características algo constantes na análise anterior, e que
permitem, na perspetiva deste trabalho, classificar estes algoritmos de inteligência artificial.
Condição fundamental para a resolução de problemas será a classificação de ótimo e/ou
completo, característica baseada na entrega da solução por parte dos algoritmos. Estes podem
ser delimitados por várias áreas de ação (retoma-se a observação anterior, sobre a possibilidade
de algoritmos poderem figurar em várias categorias de forma simultânea): pesquisa, genéricos,
probabilísticos, evolutivos e seletivos. Por fim, atendendo a algumas condições na análise
prévia, pode também considerar-se o grau de complexidade dos algoritmos, desde os mais
dispendiosos aos mais simples e que procuram métodos de simplificação.
Inteligência Artificial (IA) - Algoritmos 13/18
3. Principais Desafios da Inteligência Artificial
De acordo com Rodney Brooks, existem dois desafios claramente distintos sobre
Inteligência Artificial. Primeiro, os sistemas atuais possuem capacidades muito inferiores
comparados com os sistemas biológicos; segundo, um desempenho razoável de algumas
abordagens têm originado uma tendência crescente, a nível social, para estes sistemas em
detrimento de outras ideias, também bastantes promissoras. Levando a um evolução retrógrada
desta área.
Se compararmos quer sistemas informáticos quer robóticos com os biológicos,
descobrimos que os primeiros são incrivelmente frágeis e pouco desenvolvidos, por algumas
condicionantes a seguir descritas:
Problema 1: Os sistemas biológicos são capazes de se adaptar a diferentes ambientes -
não em todos, mas sobrevivem na maioria. Atualmente os programas de que dispomos são
criados com determinados propósitos e para funcionarem em determinados meios. Somos
capazes de criar um programa capaz de se instalar e executar sozinho num ambiente
desconhecido? Dificilmente. Isto induz, de certo modo, a algumas considerações de como o futuro
pode ser construído para que os programas sejam automaticamente configuráveis, e mais tarde
automatizados.
Problema 2: Trabalhos recentes sobre sistemas evolucionários têm produzido resultados
brilhantes (ex: Sims, 1994) mas é difícil saber como alcançar um determinado sucesso e aplicá-lo
a novos problemas. Não existe um “Perceptrons Book” (Minsky e Papert, 1969) para sistemas
evolucionários. É necessário um livro matemático que ajude a compreender os pontos fortes e
fracos desta recente aproximação.
Problema 3: Temos vivido com as bases formais de McCulloch e Pitts (1943) já há cerca
de 50 anos. Com o passar do tempo, temos permanecido “aprisionados” a maneiras fixas de
resolver determinados problemas. Por vezes, é preferível dar um passo atrás e olhar para os
problemas com diferentes perspetivas de modo a encontrar soluções igualmente distintas. Para
tal, é necessária iniciativa uma vez que nos primeiros tempos a solução alternativa pode não ser
tão eficaz como outras pré-existentes. No entanto, com trabalho e dedicação, pode tornar-se
possível, mais tarde, ultrapassar problemas existentes anteriormente, que com as soluções
inicialmente propostas não eram passíveis de serem resolvidas.
Inteligência Artificial (IA) - Algoritmos 14/18
Problema 4: Vivemos num ambiente em que fazemos uso excessivo de sons de variadas
categorias. Tem havido muito pouca vontade em compreender estes mesmos sons. Será possível
desenvolver sistemas interessantes capazes de o fazer?
Problema 5: Por último, mas não menos importante, será possível criar um sistema capaz
de dar vazão à excessiva evolução da humanidade, ao longo dos últimos anos, e capaz de se
adaptar e tornar-se útil para esta em vários setores de modo a ajudar a um desenvolvimento
ainda maior?
Noutra perspetiva, também são considerados “grandes desafios” para a IA aqueles cuja
resolução aparenta ser desafiante mas que ainda não foi encontrada. As soluções para os
grandes desafios da IA podem passar por abordagens diferentes que surjam com o avançar da
tecnologia e, caso sejam bem sucedidas, é expectável que causem um grande impacto na
sociedade. Apresentamos, assim, alguns destes desafios, considerados problemas de alto risco
cujo investimento na sua resolução pode não ser rentável.
Traduzir comunicações
Um sistema de tradução de comunicações é aquele em que, por exemplo, um japonês é capaz de
estabelecer contacto com um português em tempo real e na linguagem nativa de cada um. Isto
requer soluções para uma série de problemas: um sistema capaz de reconhecer um vasto
(possivelmente infinito) vocabulário, espontâneo e contínuo; um sistema natural capaz de lidar
com a ambiguidade, frases não-gramaticais e até por vezes incompletas e um sintetizador capaz
de preservar as características do orador.
Veículo que evita acidentes
Um veículo equipado com um sistema inteligente de cruise control através de laser, sonar e
sensores de visão seria capaz de eliminar 80 a 90% dos acidentes fatais e reduziria o custo do
veículo em aproximadamente 10%. Tal dispositivo iria necessitar de pesquisas profundas no
campo da visão, sensores, detecção de obstáculos e design de algoritmos e software.
Atualmente, o interesse por esta área tem vindo a aumentar e estão a ser atingidos resultados
próximos deste problema.
Inteligência Artificial (IA) - Algoritmos 15/18
Sistemas de aprendizagem autónomos
O interesse por sistemas capazes de aprender através de figuras, exemplos e observações, tem
vindo a crescer. Mais uma vez, estamos perante um obstáculo que requer pesquisas avançadas
na área da linguagem, técnicas de resolução, visão e programação. No fundo, procura-se um
sistema que saiba incorporar determinados conceitos e resoluções sem que seja necessário
transmitir todos os passos a executar.
A Google realizou também pesquisas neste campo, tendo elaborado uma lista com 5 dos
principais desafios da Inteligência Artificial:
1. Evitar efeitos colaterais - Como podemos garantir que um sistema de inteligência
artificial não vai perturbar o ambiente a seu redor de modo a conseguir realizar os seus
objetivos da forma mais eficiente possível?
2. Evitar “Reward Hacking” - Será que podemos afirmar que um sistema de IA cumpre
com precisão a tarefa que lhe foi atribuída, sem tentar fazer “batota”? Por exemplo,
quando é atribuída a um robô a tarefa de limpar uma divisão da casa, queremos que ele a
limpe, executando a tarefa pedida, e não que arranje forma de esconder ou tapar a
sujidade, simulando assim que cumpriu o seu dever.
3. Supervisão dos sistemas de inteligência artificial - Como podemos garantir que um
dado sistema de inteligência artificial respeita os objetivos esperados? Por exemplo: se um
sistema de inteligência artificial receber um feedback de um humano enquanto realiza a
tarefa, este tem que trabalhar em torno desse feedback e adaptar-se a ele.
4. Segurança - Como podemos garantir que um sistema de inteligência artificial não
vai realizar alguma atividade, num ato exploratório, com terríveis consequências
negativas?
5. Estabilidade nas permutas - Como podemos garantir que quando um sistema de
inteligência artificial vai reconhecer, e comportar-se de forma sistemática quando muda de
ambiente de trabalho completamente diferentes ao que está habituado?
Inteligência Artificial (IA) - Algoritmos 16/18
4. Produto/Software
Atualmente, vivemos num mundo onde existem grandes desigualdades sociais, vários
estilos de vida e maneiras diferentes de pensar acerca do mundo. Pelo planeta fora, é comum um
tipo de mentalidade das sociedades que incentive as suas crianças a desenvolver capacidades
em algumas áreas e quase que as reprime noutras. Desta forma, existem crianças mais aptas
para certos acontecimentos e situações de vida do que outras, como que se complementando
entre si.
Assim, a nossa proposta consiste num software que permite uma maior igualdade para
pessoas na realização de testes escolares. Previamente ao início das aulas seriam realizadas
provas (psicotécnicas/pessoais e de QI) permitindo a um sistema de IA compreender a situação
pessoal, o estilo de vida e a capacidade mental de cada pessoa de modo a sugerir um estilo de
ensino que melhor se adeque a cada indivíduo, criando assim uma maior igualdade de
circunstâncias entre todos os estudantes, trabalhando com os pontos fortes de cada um e
procurando ajudar a desenvolver os aspetos que estão menos desenvolvidos.
Com o desenvolvimento deste sistema, seríamos capazes de desenvolver, no aluno,
capacidades ou ensinamentos nos quais este tem possibilidade de se destacar, que ainda não lhe
tinham sido transmitidos pela sociedade envolvente, sendo possível tirar um maior proveito de
todas as capacidades, acima de tudo aquelas onde seja visível um bom desempenho por parte da
pessoa. Por exemplo, um aluno que tenha capacidades notórias na área da matemática deve ter
a oportunidade de exercer funções relacionadas com esse campo, no futuro, porque existem
grandes probabilidades de vir a ser um bom matemático, uma vez que demonstrou boas
capacidades nesse tema.
Inteligência Artificial (IA) - Algoritmos 17/18
5. Conclusão
Para ser bem sucedido, com ideias reais e plausíveis, é necessário identificar e implementar
medidas capazes de resolver o maior problema que a Inteligência Artificial enfrenta: a inevitável
falta de conhecimento acerca do mundo que os sistemas de IA vão experienciar. Apesar de
termos feito uma significativa evolução na aprendizagem acerca das decisões a tomar ainda
existe um vasto leque de outros difíceis problemas à espera de serem combatidos.
Inteligência Artificial (IA) - Algoritmos 18/18
6. Referências bibliográficas
- «artificial intelligence - definition of artificial intelligence in English | Oxford Dictionaries».
Oxford Dictionaries | English. https://en.oxforddictionaries.com/definition/artificial_intelligence.
- «artificial intelligence Meaning in the Cambridge English Dictionary».
http://dictionary.cambridge.org/dictionary/english/artificial-intelligence.
- Benioff, Marc. «À beira de uma revolução da inteligência artificial».
http://www.jornaldenegocios.pt/opiniao/economistas/detalhe/a_beira_de_uma_revolucao_da_i
nteligencia_artificial.
- McCarthy, John. «WHAT IS ARTIFICIAL INTELLIGENCE?». http://www-
formal.stanford.edu/jmc/whatisai/.
- «UNIVERSIDADE FEDERAL DE SANTA CATARINA - BrianTani-Artigo-TCC.pdf».
https://projetos.inf.ufsc.br/arquivos_projetos/projeto_91/BrianTani-Artigo-TCC.pdf.
- «Challenge Problems for Artificial Intelligence». http://research.microsoft.com/en-
us/um/people/horvitz/seltext.htm.
- «The Challenge of Artificial Intelligence».
http://psy.haifa.ac.il/~ep/Lecture%20Files/AI/The%20Challenge%20of%20Artificial%20Intellige
nce.htm.
- «Forget killer robots! Droids could BORE you to death: Google outlines the five challenges
facing artificial intelligence». http://www.dailymail.co.uk/sciencetech/article-3654714/Forget-
killer-robots-Google-identifies-five-mundane-challenges-facing-artificial-intelligence-including-
annoying.html.