Tuesday, April 22, 2008

IA por Bruno Ferreira e João Sousa


Na visão informática da Inteligência Artificial (IA) esta é definida como um campo de estudo que procura explicar e emular o comportamento inteligente em processos computacionais.

Um grande marco na história da IA foi a conferência de Verão em Darthmouth College em 1956 em que várias figuras se dedidcaram ao estudo do tópico Inteligência Artificial.
Mas já nas décadas de '40 e '50 Alan Turing debatia o assunto e deixou um dos maiores contributos para a IA: o Teste de Turing. Este teste consiste em avaliar se um computador tem a capacidade de ser inteligente através do teste de imitação, onde um interrogador tenta distinguir qual das interacções tem origem no computador.



Este teste ainda hoje é utilizado, principalmente no Loebner Prize, concurso que determina o chatterbot mais inteligente. Até hoje, ainda nenhum chatterbot conseguiu passar o Teste de Turing, mas houve um que ganhou a primeira medalha de prata: A.L.I.C.E.

A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) desenvolvido inicialmente por Richard Wallace em 1995. Ganhou por 3 vezes o prémio de programa mais humano do Loebner Prize e o seu desenvolvimento foi inspirado noutro chatterbot, ELIZA.
ELIZA foi o primeiro chatterbot alguma vez concebido. Criado em 1966 por Joseph Weizenbaum, este bot tenta simular o ambiente de um consultório psiquiátrico. Foi escolhido este ambiente, pois assim o bot não precisa de uma grande base de dados com conhecimentos do mundo real.



Há diversos tipos de linguagem para programar um programa em IA. Algumas das linguagens que podem ser utilizadas em IA são a IPL, a LISP, a SAIL, a KRL, a LOGO, a PROLOG, a PHYTON, a C++ e a JAVA.

A IA já tem algumas aplicações práticas hoje em dia:
Planeamento logístico - DART
Robótica - HipNav
Jogos - Deep Blue
Diagnósticos Médicos
Chatterbots - Programas que simulam conversações



Nos Sistemas Baseados em Conhecimento há uma separação clara entre conhecimento e raciocínio, ou seja, o controlo do programa não se mistura com a especificação do conhecimento.
Os Sistemas Periciais são um caso específico de Sistemas Baseados em Conhecimento, sendo um sistema informático que utiliza conhecimento, factos e métodos de raciocínio para resolver problemas que normalmente requerem peritos humanos.

Corpo do Sistema Pericial
-Base de Conhecimento (Contém o conhecimento sobre o domínio)
-Motor de Inferência (Gera novos factos a partir dos factos existentes e da base de conhecimento até chegar conclusões)
-Memória de trabalho (Contém os factos do problema dados pelo utilizador e os novos factos inferidos)

Componentes Adicionais Sistema Pericial
-Módulo de aquisição (Ferramenta que permite a introdução e verificação do conhecimento do domínio)
-Mecanismo de explicação (Responde às perguntas do utilizador acerca do processo de inferência)
-Interface com o utilizador (Faz a interacção entre o utilizador e o sistema pericial. Recebe factos, devolve a conclusão, fornece explicações)

Nos sistemas periciais existem 3 tipos de raciocinio: baseado em regras, em modelos e em casos.
Algumas das aplicações práticas dos sistemas periciais são: diagnóstico, interpretação, prescrição, concepção, planeamento, monitorização, controlo e instrução.
Exemplos de sistemas periciais: Dendral, Mycin, Puff, Pathfinder,...

As redes semânticas são um método de representação de conhecimento usando grafos compostos por nós e arcos onde os nós representam objectos e os arcos relações entre objectos.



A palavra heurística vem da palavra grega Heuriskein, que significa descobrir (e que deu origem também ao termo Eureca), sendo uma pesquisa realizada por meio da quantificação de proximidade a um determinado objectivo. Diz-se que se tem uma boa (ou alta) heurística se o objecto de avaliação está muito próximo do objectivo; diz-se de má (ou baixa) heurística se o objecto avaliado estiver muito longe do objectivo.

A biometria é um método de reconhecer uma pessoa com base numa característica fisiológica (Impressões digitais, íris,..) ou comportamental (Assinatura, forma de andar)

Os bio-computadores utilizam sistemas biológicos que derivam de moléculas como o DNA ou proteínas, para realizarem cálculos computacionais como armazenamento e processamento de dados.
Por todo o mundo, mais de 39 empresas e o MIT, desenvolvem novos bio-blocos que os cientistas utilizam como peças de "LEGO", para criar verdadeiras máquinas microscópicas. Como exemplo temos as bactérias desenvolvidas na Universidade do Texas que mudam de cor quando expostas a luz vermelha. Através deste método consegue-se produzir uma imagem de alta resolução (cerca de 20 megapixels/cm2).

Uma rede neuronal artificial é composta de um número de unidades (neurónios artificiais) interligados, tendo cada unidade um comportamento específico (local). Consiste basicamente de um neurónio que executa uma função lógica. Os nós produzem somente resultados binários e as conexões transmitem exclusivamente zeros e uns.

Sistema de processamento é um sistema que interliga vários nós de processamento (computadores individuais, não necessariamente homogéneos) de maneira que um processo de grande consumo seja executado no nó "mais disponível", ou mesmo subdividido por vários nós, conseguindo-se grandes ganhos.

Um nano computador, é um computador cujas dimensões físicas são microscópicas, sendo esta a única diferença para os computadores normais. Isto é possível ao reduzido tamanho dos chips de silício, esta evolução dos circuitos integrados leva a um aumento da capacidade de armazenamento e de processamento.



Bibliografia:

http://www.dcc.fc.up.pt/~mcoimbra/lectures/PSI_0607/PSI_2007_Trabalho_Biometria.pdf
http://www.anossaescola.com/blog/bioscience.php?blogid=48&archive=2006-11
http://www2.dc.ufscar.br/~saito/download/topicos-pis/AULA02-RNA.ppt
http://pt.wikipedia.org/wiki/Sistema_de_processamento_distribu%C3%ADdo
http://whatis.techtarget.com/definition/0,,sid9_gci514014,00.html
http://www.citi.pt/educacao_final/trab_final_inteligencia_artificial/aplicacoes_de_ia.html
http://www.geocities.com/revistaintelecto/iamc.html
http://www.das.ufsc.br/gia/history/node1.html
http://www.das.ufsc.br/gia/softcomp/
http://ltodi.est.ips.pt/hgamboa/SP2003/SP2003.HTM
http://controlo.dem.isel.ipl.pt/inteligentes/inteligentes_index.asp?menu=2
http://www.esec-castro-daire.rcts.pt/ok/Professores/Departamentos/MatInf/informatico/sergio/interest.htm

IA por André Dias e Bruno França


A inteligência artificial é uma área de pesquisa da ciência da computação dedicada a descobrir métodos ou dispositivos computacionais que simulem a capacidade humana de pensar e ser inteligente. Nos últimos anos, houve uma revolução na metodologia da inteligência artificial. Agora é mais comum usar as teorias existentes como bases, em vez de propor teorias novas e fundamentar as informações em teoremas rigorosos, em vez de utilizar como base a intuição.

Muitos sistemas têm sido construídos a partir de tecnologias que eram áreas activas em pesquisa de IA, por exemplo planeamento automatizado, jogos, controlo autónomo, sistemas periciais, planeamento logístico, robótica, sistemas tradutores, redes neuronais, sistemas de álgebra computacional e chatterbots.

Chatterbot é um programa de computador que tenta simular um ser humano numa conversação. ELIZA, que é uma paródia de um psicólogo numa consulta inicial, foi criada por Weizenbaum e foi o primeiro chatterbot.

O Teste de Turing, que dispõe lado a lado um computador e um humano, pedindo a um utilizador que distinga ambos, é a base do Loebner Prize, que distingue os bots que mais se aproximam dum ser humano.


Um multiprocessador é um sistema integrado de computação que envolve dois ou mais processadores capazes de executar processos autonomamente. Cada processador contém sua própria unidade de controlo e o sistema de hardware é gerido por um único sistema operacional. Associado ao multiprocessamento está o processamento paralelo, que consiste em dividir uma tarefa nas suas partes independentes e na execução de cada uma destas partes em diferentes processadores.

Redes Neuronais Artificiais são sistemas não lineares que imitam o mecanismo de processamento do cérebro humano, inclusive no seu comportamento, ou seja, aprendem, erram e fazem descobertas. São técnicas computacionais que apresentam um modelo inspirado na estrutura neuronal de organismos inteligentes e que adquirem conhecimento através da experiência.


A pesquisa por heurísticas, utilizada para saltar entre nodes numa rede neuronal, é uma pesquisa realizada por meio da quantificação de proximidade a um determinado objectivo. Diz-se que se tem uma boa (ou alta) heurística se o objecto de avaliação está muito próximo do objectivo; diz-se de má (ou baixa) heurística se o objecto avaliado estiver muito longe do objectivo.
Um nanocomputador é um computador cujas dimensões físicas são microscópicas. O campo da nano computação é parte emergente da nano tecnologia. Vários tipos de nano computadores foram sugeridos ou propostos por pesquisadores e futuristas. O objectivo é ser 1000 vezes mais rápido e armazenar 1000 vezes mais informação.

Os bio-computadores utilizam sistemas biológicos que derivam de moléculas como o ADN ou as proteínas, para realizarem cálculos computacionais como o armazenamento e processamento de dados. Já foram criados alguns bio-computadores, mas as suas capacidades, quando comparadas com as máquinas actuais, ainda são muito prematuras. Contudo são evidentes que as capacidades destas máquinas são do mais complexo e avançado que existe neste momento.

Sistema Pericial é um programa de computador destinado a executar tarefas que anteriormente eram desempenhadas unicamente por peritos no domínio de conhecimento em causa.

Biometria é o estudo estatístico das características físicas ou comportamentais dos seres vivos. Recentemente este termo também foi associado à medida de características físicas ou comportamentais das pessoas como forma de identificá-las unicamente (voz, impressão digital, assinatura, íris, etc.).

As linguagens de programação em Inteligência Artificial mais utilizadas são o LISP e o Prolog.

Bibliografia:
http://whatis.techtarget.com/definition/0,,sid9_gci514014,00.html#
http://ltodi.est.ips.pt/mmoreira/PUBLICACOES_P/introducao_redes_neuronais_1997.pdf
http://pt.wikipedia.org/wiki/Rede_neural
http://pt.wikipedia.org/wiki/Multiprocessamento
http://pt.wikipedia.org/wiki/Biometria
http://websig.civil.ist.utl.pt/msig/downloads/sp/documentos/acetatos_IV.pdf
http://pt.wikipedia.org/wiki/Heur%C3%ADstica_(computa%C3%A7%C3%A3o)
http://www.zabaware.com/home.html
http://pt.wikipedia.org/wiki/Prolog
http://pt.wikipedia.org/wiki/Bi%C3%B4nica
http://www.citi.pt/educacao_final/trab_final_inteligencia_artificial/index_centro.html
http://en.wikipedia.org/wiki/Lisp_programming_language

Inteligência Artificial por Akash & Sabino



Inteligência artificial é definido como um campo de estudo que procura explicar e imitar o comportamento inteligente em processos computacionais.

Os dois propósitos da Inteligência Artificial são: perceber melhor a natureza da inteligência e fazer com que os computadores desempenhem tarefas para as quais é necessária alguma inteligência.

Evolução Histórica:
1943 - Warren McCulloch e Watter Pitts propõem os fundamentos da arquitectura da inteligência na rede neural.
1950 - Alan Turing introduziu o “Turing Test” como forma de efectuar testes de comportamentos inteligentes.
1955 - Newell, Shaw e Simon desenvolvem a primeira linguagem de inteligência artificial, IPL (Information Processing Language).
1958 - MacCarthy introduziu a linguagem de programação LISP (LISt Processing) no Instituto Tecnológico de Massachusets.
1966 - Joseph Weizenbaum cria o programa de computador ELIZA.
1972 - Alain Colmerauer e Robert Kowalski criaram a linguagem de programação PROLOG (PROgramming in LOGic).
1980 - Hans Moravec desenvolveu o primeiro veículo controlado por computador com capacidade para contornar obstáculos.
1997 - O computador Deep Blue derrotou Garry Kasparov numa partida de xadrez.

ELIZA e A.L.I.C.E.
O programa ELIZA foi o primeiro trabalho na área da inteligência artificial e é um dos programas mais conhecidos na área da psicoterapia. O seu desenvolvimento teve como objectivo testar até que ponto um programa poderia ter um desempenho semelhante ao de um ser humano na utilização da linguagem natural. Este programa tem capacidade para manter um diálogo com um ser humano, respondendo às perguntas formuladas.



O programa A.L.I.C.E. (Artificial Linguistic Internet Computer Entity), simula uma conversa com um ser humano. Este foi projectado por Richard Wallace, segundo a filosofia do programa ELIZA, e permite manter um diálogo conforme as regras heurísticas, isto é, de descoberta ou procura dos caracteres de conversação.

Download Chatterbots

Aplicações Actuais:
Máquinas de Jogos
Reconhecimento de voz e processamento da linguagem natural
Visão por Computador
Redes neurais
Sistemas periciais

Linguagens
As linguagens que podem ser utilizadas em IA são: IPL, LISP, SAIL, KRL, LOGO, PROLOG, PHYTON, C++ e JAVA.

Multiprocessador - Sistemas computacionais que contam com mais de um CPU.

Com o maior número de processadores, espera-se a execução de mais tarefas, em menos tempo. Este acréscimo na produtividade dos sistemas não é directamente proporcional ao acréscimo de número de processadores. Outro benefício é a “confiabilidade”. A falha de um processador irá diminuir a eficiência do sistema, mas não o interromperá.

São comuns os sistemas multiprocessadores utilizarem multiprocessamento simétrico ou SMP (de Symmetric MultiProcessing). Nele, cada processador executa uma cópia idêntica do sistema operacional, que comunicam entre si como for necessário e tem tempo uniforme de acesso à memória.

Outra forma de trabalho é a de multiprocessamento assimétrico, na qual cada processador recebe uma tarefa específica. Um processador mestre controla o sistema e os outros (escravos) recebem instruções dele. A distinção pode ser implementada em hardware ou software.

Redes Neurais
Redes neurais artificiais são um conceito da computação que visa trabalhar no processamento de dados de maneira semelhante ao cérebro humano. As redes neurais artificiais são criadas a partir de algoritmos projectados para uma determinada finalidade. Sucintamente, uma rede neural assemelha-se ao cérebro em dois pontos: o conhecimento é obtido através de etapas de aprendizagem e pesos sinápticos são usados para armazenar o conhecimento.



Nano Tecnologia
Nanotecnologia é a construção de estruturas e novos materiais a partir de átomos.

Existem dois tipos actualmente a serem pesquisados e desenvolvidos. Os orgânicos, também denominados bionanorrobôs, e os inorgânicos.

Sistemas Periciais
Os sistemas periciais são sistemas desenvolvidos para efectuar o processamento de informação com o objectivo de proporcionar a resolução de problemas, num determinado domínio ou numa determinada área de aplicação, de forma semelhante à utilizada pelos peritos ou especialistas.

Os sistemas periciais podem ser utilizados na resolução de problemas, tais como: Diagnóstico, Interpretação, Prescrição, Concepção, Monitorização, Instrução, Controlo e Planeamento.

Áreas de Aplicação


Estrutura Fundamental
A estrutura fundamental de um sistema pericial é composta por uma base de conhecimentos e um motor de inferência.
A figura seguinte é o esquema básico representativo dos componentes de um sistema pericial e das suas interligações.


Base de Conhecimento
A base de conhecimentos é a parte do sistema pericial onde é armazenado todo o conhecimento do domínio em causa. Esta é organizada de acordo com os métodos usados na codificação do conhecimento.

A aquisição dos conhecimentos é obtida a partir do saber de um ou mais peritos ou especialistas no domínio em causa, transmitindo-o à equipa responsável pela construção do sistema pericial.
Uma base de conhecimentos é composta por uma base de regras e uma base de factos. A base de regras consiste num conjunto de regras que permitem tirar conclusões sobre factos, podendo originar novos factos ou relações. A base de factos é constituída pelos factos e pelas relações entre eles.

Bibliografia