universidade federal de santa catarina estudo e ... · 5.1 parte do log gerado para análise do...

49
UNIVERSIDADE FEDERAL DE SANTA CATARINA Estudo e Implementação de Redes Neurais para Aprendizado por Reforço ANDRÉ CHINVELSKI Florianópolis - SC 2005/2

Upload: phamthuan

Post on 05-Dec-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE FEDERAL DE SANTA CATARINA

Estudo e Implementação de Redes Neurais para Aprendizado por Reforço

ANDRÉ CHINVELSKI

Florianópolis - SC

2005/2

ANDRÉ CHINVELSKI

Estudo e Implementação de Redes Neurais para Aprendizado por Reforço

Trabalho de conclusão de curso apresentado como parte dos requisitos

para obtenção do grau de Bacharel em Ciências da Computação

Orientador

____________________________________Mauro Roisenberg, Dr.

Banca examinadora

____________________________________Jovelino Falqueto, Dr.

____________________________________Raul Sidnei Wazlawick, Dr.

Agradecimentos

Agradeço acima de tudo a meus pais: Casemiro Damasio Chinvelski e Maria Inês Chinvelski

que não mediram esforços para conseguir me dar condições de estar aqui e que sempre acre-

ditaram em mim e me apoiaram, e a meu irmão Tiago Chinvelski que me deu muita força,

principalmente no meio da correria final dos últimos meses.

Minha namorada Rafaela Fernanda Macário, que me aguentou nesses últimos meses, mesmo

com todas as dificuldades, sempre me apoiando e me dando forças.

Ao professor Mauro Roisenberg, Dr. que foi sempre muito atencioso, ajudando sempre

que podia. Teve muita paciência comigo e sempre me manteve motivado. Também agradeço

a Luciene de Oliveira Marin, Msc. que esteve participando do projeto, dando idéias para se

chegar a um bom resultado e ajudando na parte de implementação do projeto.

Agradeço a banca por ter aceitado o meu convite e por todas as crítica e sugestões, que

contribuiram para a melhora deste trabalho.

3

Sumário

Introdução 1

1 Inteligência Artificial (IA) 4

1.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2 Breve histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 IA Conexionista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.1 Redes Neurais Artificiais (RNA) . . . . . . . . . . . . . . . . . . . . . 5

1.4.2 Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4.3 Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Agentes 14

2.1 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2 Agentes e a Robótica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Ferramentas Utilizadas 18

3.1 WSU Khepera Robot Simulator . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Desenvolvimento 21

4.1 A arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

i

4.1.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1.2 Motivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.1.3 O sistema de RNA proposto . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.4 Configurações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2 O aprendizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2.1 Comportamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.3 Etapas do Projeto e Respectivas Metodologias no Desenvolvimento . . . . . . 27

4.3.1 Simulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.3.2 Rede ART1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3.3 O Sistema de Punição (SP) . . . . . . . . . . . . . . . . . . . . . . . . 29

4.4 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.4.1 O Sistema de Redes Neurais (SRN) . . . . . . . . . . . . . . . . . . . 30

4.4.2 Simulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.4.3 Simulador versus RNA . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.5 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5 Resultados 33

Conclusão 39

Bibliografia 40

ii

Lista de Figuras

1.1 Visualização de um neurônio e suas partes . . . . . . . . . . . . . . . . . . . . 6

1.2 Exemplo de topologia de redes diretas . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Exemplo de topologia de redes cíclicas, com retroalimentação da camada de

saída para a intermediária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 Estrutura da RNA ART1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.1 Um agente interagindo com seu mundo . . . . . . . . . . . . . . . . . . . . . 14

3.1 Ambiente Khepera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.1 Visão geral, estrutura de RNAs . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.2 Visão geral de propagação dos sinais no sistema . . . . . . . . . . . . . . . . . 24

4.3 Khepera em um labirinto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.1 Parte do log gerado para análise do sistema . . . . . . . . . . . . . . . . . . . 34

5.2 Resultado simulação, parte 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.3 Resultado simulação, parte 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.4 Resultado simulação, parte 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

iii

Resumo

Neste trabalho é proposto um modelo de Redes Neurais Artificiais, juntamente com um sis-

tema de aprendizado por reforço do tipo punição/recompensa que, por permitir adaptatividade,

implementando um sistema que pode ser autônomo, tem aplicação na área da robótica.

No primeiro capítulo são mostrados conceitos básicos de Inteligência Artificial, mais espe-

cificamente sobre Redes Neurais Artificais, dando-se enfoque nas áreas mais importantes para

o entendimento e desenvolvimento deste trabalho. No segundo capítulo são abordadas as Redes

Neurais Artificias e o sistema de aprendizado construído. É dada uma explicação sobre cada

um desses ítens, falando-se de detalhes de implementação e funcionamento geral do sistema.

No último capítulo é feita uma abordagem sobre os resultados obtidos.

Introdução

O aprendizado por reforço, juntamente com arquiteturas de redes neurais artificiais que permi-

tem adaptatividade, são atualmente pesquisadas para o desenvolvimento de agentes autônomos

[21][1][3]. Segundo autores como Barreto [3] e [24], pesquisas envolvendo agentes autôno-

mos estão na sua infância e muitos desses sistemas devem ser construídos e testados para se

consolidar os resultados obtidos [3].

Na robótica, atualmente tem-se o desafio de construir robôs cada vez mais inteligentes.

Para isso, uma parte de suas pesquisas está voltada à Inteligência Artificial[3][21]. Entre os

subcampos utilizados para a criação de agentes autônomos, tem-se: IA Simbólica, Computação

Evolucionária, Lógica Nebulosa e Redes Neurais Artificiais.

No presente trabalho é dado enfoque a modelos de redes neurais artificais adaptativas que

permitem a utilização de aprendizado por reforço e que podem ser utilizadas para aprendizado

em tempo real. Esta pesquisa, portanto, interessa o campo da robótica, na parte da construção

de robôs autônomos, pois no que diz respeito a IA,"robôs autônomos podem ser implementados

por agentes autônomos"[3].

Problematização

Redes neurais artificiais diretas, como a Multilayer Perceptron, com algoritmo de treinamento

backpropagation tem sido usados para uma ampla gama de aplicações como: reconhecimento

da fala, identificação de sinais de radar, diagnóstico médico e na economia (na parte de análise

de investimentos) [7], pois, possuem grande eficácia como aproximadoras universais de funções

[4].

No entanto, não são apropriadas para aplicações com agentes autônomos, como na área

da robótica, por exemplo, onde existem processos dinâmicos que necessitam treinamento não

supervisionado.

1

2

Ambientes para aplicações reais costumam ser apenas parcialmente observáveis e, por isso,

o pré treinamento supervisionado da rede neural pode ser impossível devido a dificuldade de se

conseguir um conjunto de treinamento ideal. Pois, se em tempo de execução do agente aparecer

um valor fora dos limites esperados no treinamento da rede, esta não terá como adaptar-se.

Segundo Carpenter e Grossberg [8] cai-se no dilema da plasticidade/estabilidade, não conseguir

manter a capacidade de aprender(plasticidade) e, ao mesmo tempo, não esquecer o que já foi

aprendido (estabilidade) sem ter que retreinar toda a rede.

Outra limitação para redes diretas seria, por exemplo, aplicações com agentes dinâmicos

onde, para cada ambiente em que o mesmo é inserido as características físicas do meio são

diferentes. Pois para cada estado do ambiente uma rede desse tipo pode ter apenas uma reação,

ou seja, se treinada para um ambiente não poderá ser utilizada em outro que exija comporta-

mento diferente. Como exemplo, podemos citar o uso de um robô que tem por funcionalidade

aprender a locomover-se em labirintos. Quando este tem suas redes neurais artificiais treinadas

para andar em um dado labirinto e depois é colocado em outro diferente, onde os caminhos que

este deve seguir são também diferentes, o robô não mais consegue cumprir seu objetivo, porque

seu comportamento, obtido através do aprendizado, foi feito para outro ambiente. Neste caso, a

solução seria usar um outro tipo de rede neural artificial que pudesse se modificar, fazendo com

que o robô se adaptesse ao novo ambiente da maneira mais eficiente possível.

Sistemas do mundo real, podem possuir um ambiente hostil, mutável e com presença de

ruídos, o que para o agente é um problema, já que este terá que estar observando o mundo ao

mesmo tempo em que toma decisões[6] e, além disso, pode ser necessário respostas rápidas a

cada novo estímulo recebido, portanto, pode ser inviável ter que treinar toda uma rede neural

artificial para cada novo padrão inesperado que apareça, pois este é um processo que exige

grande esforço computacional, o que para sistemas embutidos, por exemplo, pode ser incabível,

ainda mais levando-se em consideração questões como consumo de potência, que é atulamente

um dos grandes problemas para projetistas desse tipo de hardware [20].

Contudo, para um sistema ser adaptativo, é necessário que o mesmo altere seus valores

internos (pesos de uma rede neural) parcialmente, até chegar a um comportamento aceitável. E

para que o agente aprenda em tempo real e de forma autônoma, deve possuir uma arquitetura

de redes neurais, bem como, um sistema de treinamento que permitam a rede ter estabilidade e

plasiticidade e que possa sofrer uma adaptação dos pesos de suas conexões.

3

Objetivos

Estudo de arquiteturas e sistemas (entenda-se como estruturas de redes neurais artificiais com

uso de mais de uma arquitetura) de redes neurais artificiais, entre estas, redes ART por possui-

rem a capacidade de estabilidade e plasticidade e portanto serem importantes para solucionar

problemas que exigem aprendizado em tempo real (ou aprendizado online).

Implementação de um sistema de redes neurais artificiais, utilizando a arquitetura ART1 e

redes MLP, com aprendizado não supervisionado e por reforço, para contornar os problemas

descritos na seção acima.

Validar o sistema implementado, simulando seu funcionamento para avaliar seu compor-

tamento. Para isso o agente autônomo implementado, sem treinamento prévio, deverá obter

sucesso através do aprendizado online (em tempo real), adaptando-se a qualquer ambiente ao

qual seja submetido.

O agente e o ambiente são emulados via software (WSU Khepera Robot Simulator)[23].

Este tem a capacidade de simular ambientes reais. No programa o agente é representado por

um robô com objetivo de movimentar-se em ambientes, os quais possuem obstáculos e podem

ser, inclusive, labirintos. O robô deve conseguir, sozinho, desviar-se dos obstáculos ao mesmo

tempo que é treinado (adaptado ao ambiente).

Capítulo 1

Inteligência Artificial (IA)

1.1 Definição

No mundo acadêmico existem várias definições, dentre as quais: "O estudo das faculdades

mentais pelo uso de modelos computacionais"(Charniak e McDermott, 1985), "O estudo das

computações que tornam possível perceber, raciocinar e agir."(Winston, 1992), "A inteligência

computacional é o estudo do projeto de agentes inteligentes."(Poole et al., 1998), "Automati-

zação de atividades que associamos ao pensamento humano, atividades comum a tomada de

decisões, a resolução de problemas, o aprendizado..."(Bellman, 1978).

1.2 Breve histórico

Formalmente a área foi criada em 1956 em um seminário organizado por John McCarthy reali-

zado no Darthmouth College, reunindo os primeiros pesquisadores da área.

Naquela época haviam muitas expectativas sobre as potencialidades dessa área. Modelos

neurais artificiais baseados em neurônios de seres humanos foram criados, sendo o primeiro

criado por Rosenblatt, e chamado Perceptron. No entanto, em um livro lançado em 1968,

por Minsky e Papert, chamado "Perceptrons: An Introduction to Computational Geometry",

provou-se matematicamente que o Perceptron era limitado, não podendo aprender funções que

fossem não linearmente separáveis, como por exemplo, a fução XOR. Com isso a IA ficou

desacreditada e as pesquisas na área foram abandonadas. Somente na década de 80, as pesquisas

voltaram com força. Um dos motivos foi o surgimento de computadores mais potentes capazes

de rodar modelos de redes neurais mais complexos. Nesta década surgiram as redes de Hopfield,

multilayer perceptron, Kohonen e ART.

4

5

Desde aquela época até os tempos atuais houveram grandes evoluções e a IA se tornou um

vasto campo [24], pois suas aplicações tem trazido soluções a outras áreas, como: robótica,

medicina, prospecção de petróleo, entre outras.

1.3 Estudo

Existem duas linhas de estudo em que se pode dividir a IA, conexionista e cognitiva. Basi-

camente a linha conexionista, também denominada biológica ou ascendente, tenta modelar a

inteligência humana através do estudo e modelagem dos componentes do cérebro, ou seja, os

neurônios e conexões neurais, enquanto que a cognitiva, também denominada simbolista ou

descendente, está focada na forma como o ser humano raciocina, se baseia em símbolos e con-

juntos de regras para modelar sistemas inteligentes. No escopo deste trabalho o aspecto cone-

xionista será mais abordado, no entanto, devido ao fato de redes ART possuírem características

simbólicas, o sistema de redes neurais implementado é híbrido, ou sub-simbólico.

1.4 IA Conexionista

1.4.1 Redes Neurais Artificiais (RNA)

São modelos de redes neurais construídos baseados no estudo da estrutura de neurônios bioló-

gicos e do cérebro humano, com o intuito de obter um sistema artificial de neurônios com o

mesmo comportamento do modelo biológico.

Em geral sistemas artificiais possuem camadas de neurônios artificiais, sendo que estes são

conectados a neurônios de outras camadas, onde entre estas conexões existe um valor agregado,

este valor é chamado peso da conexão. Dessa forma, em RNAs o aprendizado se dá quando

esses pesos são alterados até se obter o resultado esperado.

Atualmente existem várias arquiteturas de RNAs diferentes, cada uma com suas caracterís-

ticas, que serão discutidas.

Fundamentos Biológicos

O cérebro humano é considerado o mais fascinante processador baseado em carbono existente,

sendo composto por aproximadamente 10 bilhões de neurônios. Todas as funções e movimen-

6

tos do organismo estão relacionados ao funcionamento destas pequenas células. Os neurônios

comunicam-se através de sinapses, e juntos formam uma grande rede, chamada REDE NEU-

RAL. As sinapses transmitem estímulos através de diferentes concentrações de Na+ (Sódio)

e K+ (Potássio). Esta grande rede proporciona uma fabulosa capacidade de processamento e

armazenamento de informação (texto extraído de [15]).

O sistema nervoso é formado por um conjunto extremamente complexo de neurônios. Neles

a comunicação é realizada através de impulsos, que quando recebidos são processados. Passado

um limite de ação, dispara um segundo impulso que produz uma substância neurotransmissora

o qual flui do corpo celular para o axônio (que por sua vez pode ou não estar conectado a um

dendrito de outra célula). O neurônio que transmite o pulso pode controlar a freqüência de

pulsos aumentando ou diminuindo a polaridade na membrana pós sináptica. Eles tem um papel

essencial na determinação do funcionamento, comportamento e do raciocínio do ser humano

(texto extraído de [15]).

Os principais componentes dos neurônios biológicos são:

Os dendritos, que tem por função, receber os estímulos transmitidos pelos outros neurô-

nios;

O corpo, também chamado de soma, que é responsável por coletar e combinar informa-

ções vindas de outros neurônios;

E finalmente o axônio, que é constituído de uma fibra tubular que pode alcançar até

alguns metros, e é responsável por transmitir os estímulos para outras células.

(Figura 1.1)

Figura 1.1: Visualização de um neurônio e suas partes

7

Topologias

RNAs são representadas por neurônios e conexões, normalmente agrupados em camadas. Onde

os neurônios de cada camada tem a característica em comum de receberem os sinais propagados

da mesma camada e propagarem esse sinal para a próxima. Topologia diz respeito a forma como

a conexão entre os neurônios é feita. Existem basicamente duas: direta e recorrente(cíclica).

Redes diretas São modelos de redes neurais, onde os sinais são propagados através das cama-

das de neurônios, de forma acíclica, e no grafo das conexões dos neurônios não possui ciclo[3].

Ou seja, existe um único fluxo de dados através da rede, sem realimentação. Como exemplo

podemos citar as redes multilayer perceptron. "Estas redes são atualmente as mais populares

por existirem métodos de aprendizado fáceis de usar"[22]. Um dos algoritmos usados para trei-

namento é o backpropagation, muitas vezes é tão relacionado com essas redes que iniciantes

costumam confundir o termo redes diretas com o nome desse algoritmo de treinamento [3].

Redes diretas tem uma dinâmica limitada não sendo muito convenientes para sistemas di-

nâmicos [22]. Por esse motivo neste trabalho as mesmas serão utilizadas associadas com uma

arquitetura de RNA recorrente, de forma a unir as potencialidades desta, importantes para o

sistema dinâmico, com características de aprendizado da rede direta.

(Figura 1.2)

Figura 1.2: Exemplo de topologia de redes diretas

Redes Recorrentes São modelos de redes neurais, que possuem ciclos no grafo das conexões

entre os neurônios, ou seja com realimentação entre camadas. A realimentação pode ser para a

mesma camada ou para anteriores[3].

8

Esse tipo de rede permite aprendizado não-supervisionado, importante para sistemas autô-

nomos, bem como quando associada com neurônios dinâmicos se torna adequada para repre-

sentar sistemas em tempo real.

(Figura 1.3)

Figura 1.3: Exemplo de topologia de redes cíclicas, com retroalimentação da camada de saídapara a intermediária

1.4.2 Aprendizado

RNAs representam o conhecimento, guardando o valor do peso das conexões entre os neurônios

da rede. O aprendizado em redes neurais ocorre quando esses pesos são alterados para se obter

algum conhecimento. A forma pela qual os pesos das conexões são modificados é determinado

pelo tipo de treinamento da rede.

Aprendizado Supervisionado Nesse tipo de aprendizado ocorre treinamento da rede. É gui-

ado por meio de instruções, ou seja, para treinar a rede apresenta-se a ela um conjunto de

exemplos, onde para cada exemplo há um par de padrões, entrada e saída esperada, onde o

primeiro deve ser aplicado na entrada da rede, e o segundo, comparado com a saída da rede,

afim de verificar a taxa de erro do sinal de saída obtido , para que seja possível modificar o peso

das conexões fazendo com que haja uma adaptação em relação a função que se deseja aprender.

Exemplo desse treinamento é o backpropagation.

Aprendizado Não Supervisionado Não requer valor desejado de saída da rede, o aprendi-

zado se dá pela clusterização dos padrões apresentados, baseado em sua semelhança. Não

9

existe um instrutor e nem qualquer regra que possa guiar o aprendizado. Exemplo: treinamento

de redes competitivas.

Aprendizado por Reforço (semi-supervisionado) É uma forma de aprendizado aplicada em

sistemas dinâmicos. Nesta o agente recebe estímulos do meio e a partir desses tem uma ação.

Se esta for inadequada traz um estímulo negativo do meio como resposta, ou seja, uma punição,

o que faz com que o agente não repita a ação para o mesmo estímulo em um evento futuro.

De forma contrária pode-se, também, aplicar uma recompensa para cada decisão tomada pelo

agente que tenha correspondido em uma resposta adequada do meio. Como pode-se observar,

nesse sistema o aprendizado ocorre na tentativa e erro e por isso pode ser um treinamento um

pouco lento, dependendo da complexidade do ambiente e de quão guiado o aprendizado é.

Depende do objetivo do agente, esse sistema é chamado de semi-supervisionado, pois embora

não haja um professor, como no treinamento supervisionado, é preciso ter um sistemas de regras

que auxilie o agente, ou seja, que não diga o que este deve fazer necessariamente, mas que puna

caso tome alguma atitude que não é adequada, fazendo com que se obtenha um determinado

comportamento. Na prática o aprendizado se dá quando ao sofrer punição/recompensa a rede

tem modificada o valor de algum dos pesos de um dos neurônios. Neste trabalho a mudança

dos pesos se dá de forma aleatória.

Com raízes históricas no estudo de reflexos condicionados, o aprendizado por reforço logo

atraiu o interesse de engenheiros e cientistas da computação por sua relevância teórica e apli-

cações em campos como pesquisa operacional e robótica [6] e por isso também é alvo desse

trabalho.

1.4.3 Modelos

Perceptron

Um dos primeiros modelos de RNA, foi proposto por Frank Rosenblat em 1959 [15]. É uma

rede direta, composta por 2 camadas de neurônios, uma de entrada e outra de saída, onde entre

os neurônios existem conexões. Cada uma dessas conexões possui um peso. A saída desta rede

é binária. Pode ser utilizada para representar funções linearmente separáveis, como AND e OR

[3].

10

Redes Multilayer Perceptron (MLP)

É uma evolução do modelo Perceptron que foi criado por Rosenblatt em 1957. Nesta arqui-

tetura, no entanto, para contornar as limitações do modelo Perceptron, foi inserida uma nova

camada de neurônios, a camada oculta, ou escondida. Isso tornou possível que a rede apren-

desse funções mais complexas. A arquitetura dessa rede é composta de uma camada de entrada

de dados, uma ou várias intermediárias, e uma de saída para o meio.

Rede Competitiva Simples

Rede recorrente, que tem seu nome caracterizado pela forma como ocorre o treinamento. Neste

ao ser apresentado um padrão na entrada da rede, inicia-se uma competição entre os neurônios

para ver qual melhor o representa, ou seja, qual é o neurônio mais parecido com o padrão apre-

sentado. Ao ser escolhido, o neurônio vencedor é adaptado tendo seus pesos ajustados para se

representar melhor a entrada recebida. Esse processo de aprendizado é conhecido como:"winner

take all", o vencedor leva tudo.

Kohonen

Rede recorrente semelhante com a rede competitiva simples, no entanto, nesta, os neurônios

semelhantes são próximos fisicamente e o neurônio vencedor tem seus pesos atualizados bem

como o de seus vizinhos. Uma grande utilidade dessa rede está na forma como clusteriza pa-

drões, mapeando vetores com várias dimensões em duas dimensões, facilitando a visualização

dos dados classificados.

BAM

Memória bi-direcional associativa. Esta é uma rede recorrente heteroassociativa de conteúdo

endereçavel, onde na etapa de treinamento busca-se a estabilização da rede achando um estado

estável. Possui duas camadas de neurônios, cada um ligado consigo e com todos outros de outras

camada. O sinal se propaga de uma camada a outra na procura de informações. A entrada ou

saída da rede depende da direção atual da propagação[22]. É utilizada no processamento de

imagens e para operações na área de finanças[2].

11

Hopfield

Proposta por Hopfield em um artigo publicado em 1982, o qual demonstrava propriedades asso-

ciativas de uma classe de redes neurais[22]. "Seu treinamento visa encontrar o estado de maior

estabilidade possível"[19]. É baseada no conceito de energia da rede, onde esta é proporcional

à troca de estados da rede. Isto é, quanto maior for a oscilação entre um estado e outro na

saída, maior será a energia. É uma rede bináira, com auto-aprendizado e recorrente, utilizada

no reconhecimento de padrões.

Counterpropagation

A rede de Conterpropagation foi proposta por Robert Nielsen em 1987. Esse modelo mistura

duas arquiteturas de redes neurais, uma rede competitiva, que fica na camada intermediária, e

a Outstar proposta por Grossberg [22]. Nesta rede o padrão é apresentado, calcula-se o net e

depois é feita uma competição entre os neurônios para ver qual irá transmitir o sinal para a

camada Outstar.

Essa rede costuma ser eficiente no entanto pouco precisa [22].

"É muito utilizada em classificação de padrões, aproximação de funções, análise e aplica-

ções que requerem compressão de dados"[2].

Redes ART - Adaptive Ressonance Theory (Teoria da Ressonância Adaptativa)

Tem como desenvolvedores, Stephen Grossberg e Gail A. Carpenter em meados da década de

1980. O nome origina-se da forma como o aprendizado e a recuperação da informação ocorrem

na rede. Na física, a ressonância ocorre quando uma vibração de pequena amplitude em uma

frequência apropriada gera uma grande amplitude em um sistema elétrico ou mecânico [25].

Na ART, quando um sinal surge na entrada da rede, este entra em um estágio de reverberação

entre as camadas da rede, na tentativa de se adaptar. Se já é conhecido, a adaptação é rápida,

caso contrário pode haver um longo período de "vai e vem"entre as camadas até que finalmente

seja aprendido. Este processo é caracterizado como ressonância na rede neural.

Existem vários tipos de redes ART, entre estes, ART1, ART2, ART3, FUZZY ART e ART-

MAP. No entanto, dado o escopo deste trabalho vamos abordar apenas a ART1, que foi uma das

RNAs utilizadas.

12

Inspiração Biológica Baseada na memória humana, que tem a habilidade de aprender coisas

novas sem esquecer as que já foram aprendidas no passado. Como exemplo dessa memória

podemos citar nossa capacidade de reconhecer pessoas. Alguém que vá morar longe de seus

pais, mesmo ficando um longo período de tempo sem vê-los e conhecendo pessoas diferentes

nesse meio tempo, ainda sim continuará a reconhecê-los ao voltar.

Dilema da estabilidade-plasticidade Grossberg e Carpenter criaram as redes ART com o

objetivo de contornar o problema existente nas redes neurais de estabilidade/plasticidade. Ou

seja, a capacidade de um sistema poder aprender coisas novas (plasticidade), sem esquecer o

que já foi aprendido (estabilidade)[8].

As redes ART são baseadas em redes competitivas simples, onde para obter as características

desejadas usou-se um mecanismo de realimentação entre suas camadas, junto com um sistema

de controle para informar se a rede está em um processo adaptativo(plastico) ou estável[25].

ART1 Utilizada na clusterização de padrões, possui aprendizado não-supervisionado. Caracteriza-

se por possuir entrada binária.

Topologia Rede recorrente, com duas camadas, F1 e F2, onde a primeira é uma camada

característica de rede direta e a segunda é uma rede competitiva simples.

Funcionamento Quando um padrão é apresentado para a ART1, este é processado em

F1 e propagado para F2, onde ocorre uma competição entre os neurônios para ver qual melhor

representa o padrão apresentado. Após escolhido o neurônio, ocorre uma propagação de F2

para F1 e é analisado se o neurônio escolhido realmente representa a entrada recebida. Neste

ponto, existe uma constante que indica qual o grau de semelhança que deve haver entre os

padrões, de forma que se o neurônio escolhido é apto a representar o padrão de entrada, ele

tem seus pesos adaptados, caso contrário, uma nova competição ocorrerá na camada F2, onde

o ganhador anteriormente analisado estará excluso da competição. Se nenhum dos neurônios

conseguiu "casar"com o padrão apresentado, um novo neurônio será criado para representá-lo.

Ao final, todos os neurônios da camada F2 ficam novamente aptos a participar da competição

para um novo padrão.

(Figura 1.4)

13

Figura 1.4: Estrutura da RNA ART1[25]

Capítulo 2

Agentes

Agentes são sistemas, também conhecidos como sistemas embutidos, onde estes podem estar

fisicamente embarcados, como em um robô, por exemplo, ou podem ser simplesmente com-

putacionais estando apenas em sistemas de software de computadores[14]. Segundo Kaelbling

[14] o conceito de agente surgiu como uma forma de aproximar as diversas áreas em que se

desenvolviam pesquisas em IA na década de 80, como uma forma de unir conceitos permitindo

mais iteração e troca de conhecimentos entre estas entre estas.

Esses sistemas tem como característica estarem inseridos em um ambiente, e através de

sensores e atuadores interagirem com este. Segundo Russel e Norvig [24], um agente é tudo o

que pode ser considerado capaz de perceber seu ambiente por meio de sensores e de agir sobre

esse ambiente por intermédio de atuadores. (Figura 2.1)

Figura 2.1: Um agente interagindo com seu mundo[14]

14

15

2.1 Propriedades

Os termos agente e ambiente, são usados nos mais diferentes contextos (agentes de soft-

ware ou de hardware, por exemplo), servindo como uma forma de abstração quando se fala em

construção de sistemas. Existem alguns conceitos extras para caracterizar melhor um agente

específico:

Agente reativo simples Não possuem conhecimento global do meio onde estão, suas ações

são reativas, ou seja, baseadas apenas no estado atual do ambiente. Um exemplo desse tipo de

agente seriam os robôs de segunda geração, que são meramente reativos, não possuindo sistema

de aprendizado.

Agente reativo baseado em modelo Guardam informações sobre estados anteriores do am-

biente e podem basear suas ações futuras com base nas ações passadas. Em redes neurais

artificiais esse tipo de comportamento é obtido colocando-se recorrência entre as camadas na

rede, dessa forma a resposta da rede é baseada também no estado anterior.

Agente autonomo Quando a decisão sobre as ações parte do próprio agente e não de quem

o criou. Esse agente é o buscado nesse trabalho. Segundo [14],[21], [3], são díficeis de serem

obtidos. Aqui se procura resolver um problema simples baseado em apenas um aspecto do

ambiente, que são as paredes do labirinto.

Agente racional Ao se construir um agente, é dado um objetivo ao mesmo, então este tem

que contornar as adversidades do ambiente em que está de forma a obter o maior grau de

proximidade possível com o objetivo. Nesse caso se fala também em desempenho do agente,

ou seja, o quão eficaz/eficiente é para determinada função. Segundo Russel e Norvig [24] "É

aquele que age para alcançar o melhor resultado ou, quando há incerteza, o melhor resultado

esperado".

Racionalidade Para cada seqüência de percepções possível, um agente racional deve seleci-

onar uma ação que se espera venha maximizar sua medida de desempenho, dada a evidência

fornecida pela seqüencia de percepções e por qualquer conhecimento interno do agente [24].

16

Na IA geralmente espera-se que um agente seja o mais racional possível, autonomo e que

consiga se adaptar ao ambiente (RUSSEL, NORVIG, 2004). No entanto, para poder medir o

desempenho de um agente é necessário também considerar o seu ambiente e a complexidade

deste. Vejamos alguns aspectos de ambientes:

Grau de visualização Um ambiente pode ter os aspectos relevantes para a tomada de ação do

agente, completamente percebidos ou não pelos sensores. Quando não é totalmente percebido é

preciso dotar o agente de capacidade de adaptatividade, o agente deve ter a capacidade de tomar

decisões, ou seja, ser autônomo, e possuir uma forma de aprendizado de forma a minimizar

o número de ações erradas. Essa forma de aprendizado utilizada em RNAs é chamada de

aprendizado por reforço e consiste em punir ou recompensar o agente a cada decisão tomada

por ele.

Estático e dinâmico[24] O ambiente pode ser dinâmico, ou seja, sofrer alteração em seu

estado enquanto o agente esta tomando alguma ação, ou estático, mantendo-se imutável durante

todo o processo. Ambientes dinâmicos são mais dificeis de serem tratados, por serem mutáveis

exigem maior adaptividade por parte dos agentes, sendo que estes devem estar percebendo o

mundo o tempo todo, diminuindo o tempo de intervalo entre as percepções ou mesmo tentar

fazer uma predição do que irá ocorrer no mundo [14].

Discreto e contínuo Segundo Russel e Norvig [24] a distinção entre discreto e contínuo pode

se aplicar ao estado do ambiente, ao modo como o tempo é tratado, e ainda às percepções e

ações do agente. Ou seja se refere na forma como são vistos as informações do ambiente. Nos

ambientes reais a análise de tempo e distância podem possuir intervalo contínuo de dados.

2.2 Agentes e a Robótica

Segundo Barreto [3], a construção de robôs autônomos é um dos desafios que a IA está enfren-

tando com sucesso nos últimos anos. Pode-se também observar que em congressos de robótica

atuais, como o ARAS 2005 (Automation, robotics and Autonomous Systems)[1] foca-se aspec-

tos experimentais e teóricos dessa área, envolvendo, entre outras, utilização de redes neurais

aritificais, sistemas evolutivos e lógica nebulosa para obtenção de sistemas autônomos inteli-

17

gentes eficientes.

Inteligência Articial e robótica são campos diferentes, no entanto, "agentes autônomos im-

plementam robôs autônomos"[3], por isso para modelar sistemas robóticos inteligentes, pesqui-

sadores tem utilizado os estudos de IA na área de sistemas autônomos.

Capítulo 3

Ferramentas Utilizadas

Todo o projeto foi implementado utilizando-se apenas ferramentas livres, mostrando que ferra-

mentes de software livre podem ser suficientes e eficientes para implementação de projetos.

O sistema operacional utilizado foi Debian Gnu/Linux 3.1 [10], kernel 2.6.8-1-386. Esta é

a última versão estável do debian possuindo tantas facilidades quanto o sistema proprietário da

Microsoft. Possui interface gráfica amigável, auto configurável e de fácil instalação.

A linguagem de programação escolhida foi Java [13] versão 5.0, pois o software usado para

emular o robô é escrito em código Java, portanto para integra-lo com o modelo implementado

houve necessidade dessa linguagem. Sem contar que o Java por ser uma linguagem alto ní-

vel, bem documentada e com suporte a orientação a objetos facilita e agiliza o processo de

programação.

Foi usado ambiente de desenvolvimento Eclipse 3.1 [11], por ser uma excelente ferramenta,

que facilita a criação de código em Java. Através da instalação de pluguins é possível obter

facilidades como automatização da geração de código para interface gráfica. Essa ferramenta é

bastante completa, ajudando programadores na parte de "debug"do código, facilidades na nave-

gação pelos arquivos do projeto a ser desenvolvido, identação do texto, compilação e geração

de código executável automático.

Para o emulador do ambiente e robô, foi usado um sistema pronto, é o WSU Khepera Robot

Simulator [23], desenvolvido na Wright State University.

18

19

3.1 WSU Khepera Robot Simulator

Tenta simular um ambiente real para robô. O simulador é composto de uma arena onde é

possível colocar objetos, como: paredes, pontos de luz, bola e o robô. Este possui 8 sensores de

distância distribuidos ao longo de sua circunferência e duas rodas, roda direita e roda esquerda,

com velocidades que podem variar entre +10 e -10 unidades. A direção e sentido em que o

robô se move é baseado na velocidade das suas rodas. Estas podem ter velocidades negativas

o que faz o robô andar para trás, podem ter as duas velocidades positivas e então andar para

frente, sendo que se as velocidades tiverem mesmo módulo e mesmo sentido o robô descreve

um movimento em linha reta ou, caso contrário, se as velocidades das rodas tiverem módulo ou

sinais diferentes o robô descreve um movimento curvilíneo. Se as velocidades tiverem mesma

intensidade e sinais diferentes o robô gira em torno do próprio eixo.

(Figura 3.1)

Figura 3.1: Ambiente Khepera[23]

Quando o robô se move pela arena, ocorre um leve escorregamento em suas rodas pois,assim

como no mundo real, onde os agentes estão sujeitos a ruidos provenientes do ambiente, o emu-

lador também tenta simular irregularidades, fazendo com que o robô não descreva trajetórias

totalmente regurales. Além disso, os sensores de distância do robô captam distâncias de 0 a

1023 para caracterizar uma entrada contínua, já que assim é o mundo real. Por estes motivos,

e por se tratar de um emulador conhecido no meio acadêmico, sendo referenciado em vários

20

artigos, o mesmo foi usado com o intuito de analisar as RNAs implementadas.

Capítulo 4

Desenvolvimento

A evolução do projeto pode ser vista por dois aspectos, a criação e desenvolvimento da arqui-

tetura de RNAs e a do sistema para o aprendizado. A arquitetura, em si, já existia, bastando

implementá-la. O sistema de regras para o aprendizado foi desenvolvido ao longo do projeto,

conforme os problemas no aprendizado do agente apareciam. Outra parte do trabalho consistiu

no estudo do simulador bem como alterações do seu código fonte para adaptá-lo as necessidades

do projeto.

4.1 A arquitetura

Sistemas robóticos em tempo real necessitam de redes neurais adaptativas e que permitam serem

treinadas sem supervisionamento. A rede ART1 satisfaz essa condição e por isso foi utilizada.

O modelo utilizado, consiste de um sistema de RNAs que une uma rede ART a várias redes

MLP. Onde, dentre as redes ART, optou-se pela rede ART1. Esta é um pouco menos complexa

que outros modelos ART, no entanto é adequada para a solução do problema proposto.

A arquitetura utilizada nesse trabalho foi proposta pelo professor Mauro Roisenberg, Dr., e

sua co-orientanda de doutorado Luciene de Oliveira Marin. (Figura 4.1)

Na imagem podemos observar o modelo descrito para as redes neurais.

4.1.1 Descrição

Com o objetivo de obter-se um agente autônomo para resolver o problema do robô locomover-se

em um labirinto, com aprendizado em tempo de execução, utilizou-se uma arquitetura recor-

rente, entre as RNAs, onde a camada de saída da segunda rede neural é ligada a entrada da

21

22

Figura 4.1: Visão geral, estrutura de RNAs

primeira (ver figura 4.2). A recorrência é necessária para permitir certo grau de memória, se ba-

seando no estado anterior do comportamento obtido nos atuadores, para gerar uma nova saída,

caso contrário teria-se apenas um comportamento reativo, explicado a seguir (em 4.2.1).

Com isso, obtém-se um sistema capaz de reconhecer vários estados diferentes do ambiente

e para cada uma ou mais respostas possíveis.

O comportamento é ditado pelas MLPs (saída para atuadores), enquanto que a ART é res-

ponsável pelo mapeamento entre o estado do ambiente (sensores) e uma rede MLP referente ao

mesmo.

4.1.2 Motivo

Na robótica um dos desafios atuais é a obtenção de robôs autônomos[3], e é onde entra a IA.

Nesta existem estudos de modelos de redes neurais artificiais capazes de propor soluções. En-

tre estas, destacam-se as redes recorrentes, as quais possuem neurônios dinâmicos [21], como

exemplo pode-se citar as redes ART.

O presente trabalho propõe um modelo de RNA capaz de solucionar o problema de criar

um agente autônomo, representado por um robô, capaz de andar por ambientes na forma de

labirinto consistindo que este não se choque com obstáculos.

Como solução, procurou-se modelar uma rede que pudesse ser adaptativa, com neurônios

que têm seus pesos modificados gradativamente a cada novo estado apresentado.

Levando-se em consideração obter uma rede autônoma, a utilização de redes MLP, unica-

mente, treinadas previamente, com algoritmo backpropagation, por exemplo, não conseguiria

23

resolver . Pois, dessa forma, o agente estaria limitado a dar respostas compatíveis com o con-

junto de dados para o qual recebeu treinamento (supervisionado) e não poderia aprender nada

novo em tempo de operação, sem condenar a estabilidade da rede [25].

A autonomia é importante, pois, para o caso de o ambiente ser um labirinto, se por alguma

ação do meio, o robô sofresse um pequeno desvio de sua rota, este poderia ficar desorientado e

não conseguiria mais sair. Outro problema seria a colocação do robô em um labirinto diferente

daquele para o qual foi treinado, assim o robô também possivelmente teria problemas, pois

poderia tomar ações indevidas a cada obstáculo, como, por exemplo, mudar a direção para

a direita em um determinado estado, levando em consideração que para outro labirinto para o

qual foi treinado essa deveria ser a solução. Sendo assim, torna-se um equívoco já que tratam-se

de labirintos diferentes.

Situações inesperadas, como as citadas, não podem ser resolvidas usando-se apenas redes

MLP, pois estas, sozinhas, não são adaptativas[25], sendo que, adaptatividade é uma caracte-

rística que deve existir para se ter autonomia. Também, não daria para aplicar um treinamento

semi-supervisionado, como o aprendizado por reforço, devido a instabilidade dessa rede.

A alternativa encontrada foi aplicar o uso de uma rede recorrente com saída mapeada para

redes diretas. Assim é possível que a rede esteja em constante treinamento, onde estados des-

conhecidos apresentados a rede, podem ser aprendidos, adaptados ou simplesmente ignorados,

sem que para isso toda a rede precise ser retreinada.

4.1.3 O sistema de RNA proposto

Descrição

Como visto, consiste de uma rede ART1 e várias redes MLP, cada uma ligada a um neurônio

de saída da ART1. Posteriormente foi colocada uma recorrência (ciclo), das saídas da MLP até

a entrada da ART1.

Na figura a seguir, pode-se observar um visão geral do fluxo do sistema.

(Figura 4.2)

O sinal dos sensores é recebido no sistema de RNAs pela camada de entrada da ART1, que

recebe também o sinal de saída anterior da rede. Cada sinal diferente recebido pela ART1 ativa

um neurônio na camada F2(ou camada de saída) dessa rede , criando dinamicamente um novo

24

Figura 4.2: Visão geral de propagação dos sinais no sistema

neurônio caso nenhum dos atuais o represente.

Esse efeito descrito gera uma clusterização dos padrões recebidos, cada um destes é "cha-

veado"agora com uma rede MLP, ligando cada neurônio da camada F2 da ART1 para uma rede

MLP. Nessa etapa pode ser definido um grau de semelhança (pertencente a estrutura da ART)

que vai dizer o quão parecido os padrões devem ser, para serem representados pelo mesmo

neurônio.

Analisando em termos práticos, para o caso do robô no labirinto, por exemplo, essa estrutura

permite que cada estado do ambiente em que o robô esteja, seja mapeado para uma rede MLP,

permitindo que se use um processo de treinamento por reforço nesta até que se obtenha a saída

desejada, ou seja, para cada estado é alterada apenas uma MLP.

4.1.4 Configurações

A ART1 é iniciada com 8 neurônios em sua camada de entrada, 4 para o estado atual de percep-

ção das paredes em relação aos sensores e 4 para a realimentação. Os neurônios da camada de

saída são gerados dinamicamente conforme seja necessário, com pesos top-down e bottom-up

na rede definidos pelas fórmulas da ART1:

top-down: Zij > (B-1)/D, bottom-up: Zji < L/(L-1+M),

onde B, D e L são constantes da ART1 com os respectivos valores (definidos para este

25

trabalho): 1.5, 0.9 e 3.

Já as redes MLP possuem um neurônio na entrada, 3 na intermediária e 4 na saída. O sinal

recebido por esta é sempre o mesmo quando é ativada, de forma que tenha sempre a mesma

saída. Sendo que a saída só irá mudar quando a rede for reconfigurada durante o processo de

aprendizado por reforço.

4.2 O aprendizado

Com o objetivo de ter um sistema autônomo onde o aprendizado pudesse ocorrer em tempo real,

optou-se pelo aprendizado por reforço. Um agente, dessa forma, aprende através da tentativa e

erro [6][21]. Quando uma atitude tomada gera uma ação indesejada o agente é punido. Com

isso o agente tenderá a não mais tomar aquela ação.

As punições são aplicadas após ser feita uma análise do comportamento para uma dada

ação. Para isso é criado um conjunto de regras, chamado sistema de punição. Primeiramente

definiu-se os objetivos para o agente, depois foi feita uma análise do comportamento do mesmo,

com o intuito de verificar se estava sendo obtido o resultado esperado. Definiu-se como objetivo

para o robô do simulador não chocar-se com as paredes do ambiente, e se possível desviá-las

pegando uma rota ainda inexplorada.

De forma a minimizar a dificuldade, inicialmente criou-se um agente autônomo apenas re-

ativo, ou seja, que simplesmente evitava a colisão. Para isso uma base com poucas regras foi

necessária. Como exemplo de regra utilizada, pode citar-se uma que punia o robô quando o

mesmo não variava suas coordenadas por um certo tempo (pois estava parado enquanto devia

estar se locomovendo).

As regras servem apenas para apontar se uma ação tomada pelo agente está errada, posteri-

ormente conforme este vai ganhando experiência essa ação tomada pode se manter ou não, ou

seja, é uma espécie de "instinto"para este.

Com o sistema inicial de aprendizado por reforço colocado, com as regras, "não gire"e "não

fique parado"por muito tempo, no agente, observou-se que, apesar da pouca eficiência, de fato o

agente ficava reativo e com o passar do tempo o número de punições diminuia. No entanto, esse

processo de aprendizado era muito demorado porque o agente muitas vezes estagnava em um

mesmo movimento de ficar andando uma posição para frente e uma para trás, incessantemente,

26

o que não estava errado, segundo as regras que o robô seguia, até que devido ao escorregamento

que ele ia sofrendo em suas rodas acabava chocando-se e sendo punido. Para contornar o

problema, foi feita uma regra de punição a "longo prazo", que estabelecia que se o agente

repetisse por um determinado tempo a mesma ação, este seria punido.

O sistema melhorou, mas ainda assim, estava complexo para ser analisado, com um processo

de aprendizado lento e não estava chegando ao comportamento adequado.

Para simplificar o sistema de regras, a análise do comportamento do robô e facilitar seu

aprendizado, substituiu-se as 8 entradas do agente provenientes dos sensores. Foram criadas

coordenadas geográficas (norte, sul, leste, oeste) e estas passaram a ser as entradas do agente,

4 coordenadas geográficas atuais indicando onde existe parede e 4 referentes ao último movi-

mento realizado.

A entrada da rede ART é binária, portanto, simbolizou-se 1 quando ativo e 0 inativo, ou

seja, parede ao leste, então a entrada da rede referente à leste era ativada com 1. Assim, para

uma configuração do ambiente onde houvesse parede a norte e sul, por exemplo, o vetor binário

recebido na entrada da rede seria 0101, onde se tem, respectivamente, um bit para leste, norte,

oeste e o último para sul.

Esse novo sistema funcionou, e fez o agente adaptar-se rapidamente a ambientes e labirintos

e tornou mais fácil a análise humana. Ficando apenas uma restrição: caso o robô seja colocado

em um labirinto com uma bifurcação, não garantirá sucesso na tomada de sua decisão.

4.2.1 Comportamento

Evoluiu de uma etapa inicial em que o sistema, aplicado na prática, aprendeu a não colidir com

obstáculos, demonstrando comportamento reativo. Nesta fase, ainda não estava sendo capaz de

desviar-se de um obstáculo e prosseguir a busca por novos caminhos, ou percorrer um labirinto,

por exemplo. Posteriormente para que isso fosse possível foi aplicada a realimentação, para

basear o comportamento atual no anterior, na hora de tentar pegar um novo caminho.

A realimentação, ou recorrência, é quando ocorre uma seqüência de propagação do sinal

pela rede de forma cíclica, ou seja, o sinal se propaga até a última camada e é reenviado, após,

para uma camada anterior. Para que o sistema não fosse meramente reativo, foi colocada uma

recursão entre a saída da MLP e entrada da ART1 (ver figura 4.2) . Com isso conseguiu-se

diferenciar mais estados, pois foi possível decidir através do estado atual dos sensores e da

27

saída da rede anterior.

(Figura 4.3)

Figura 4.3: Khepera em um labirinto

Na seguinte figura, observa-se o robô em um ambiente na forma de labirinto. Devido a

existência da recorrência, depois de o robô ter aprendido a andar pelo labirinto em um sentido,

neste caso no sentido horário, sem prejuízos ao aprendizado obtido pela rede, poderia-se fazer

o robô andar em sentido anti-horário. Pois apesar de os estados, referentes as paredes, serem os

mesmos, em relação ao comportamento anterior (recorrência) seriam diferentes, fazendo com

que mapeamentos para redes diretas diferentes fossem feitos.

4.3 Etapas do Projeto e Respectivas Metodologias no Desen-volvimento

Esta sessão trata da metodologia utilizada em cada etapa do projeto. Expõem-se as técnicas

e ferramentas utilizadas para facilitar o desenvolvimento e solucionar problemas encontrados.

A ordem em que aparece cada uma das subsessões é cronológica, caracterizando as principais

etapas do projeto.

4.3.1 Simulador

O primeiro passo do projeto consistiu em avaliar o simulador, ou seja, estuda-lo e testa-lo. Para

isso foi implementada e utilizada uma rede MLP, pré-treinada com o algoritmo de aprendizado

backpropagation, utilizando alguns exemplos de ações esperadas do robô quanto a presença

de obstáculos no seu caminho. Como exemplos de ações esperadas, que foram incluídas no

treinamento, pode-se citar: caso parede a esquerda e a frente, vire a direita; caso paredes nas

28

laterais, ande para frente... e assim por diante para vários casos imaginados. Posteriormente foi

aplicado no robô a RNA treinada com esses casos.

O resultado obtido foi satisfatório, o robô desviou-se de obstáculos para os quais sua rede

neural havia sido treinada, demonstrando boa iteração entre as percepções do Khepera, proces-

samento da RNA e posterior atuação das rodas.

É importante observar, que o simulador, além de funcionar como especificado, mostrou-se

fácil de usar, bem documentado e com código aberto e muito legível, devido principalmente

a sua implementação com paradigma de programação Orientada a Objetos (usando Java [13]),

bem organizada utilizando estrutura de classes com herança e polimorfismo, bem como utili-

zando nomenclatura padrão.

As RNAs implementadas, também em Java [13], foram adicionadas como um módulo do

software simulador Khepera. O acesso a essas, pelo software, se dá por meio de uma interface

disponibilizada no Khepera para implementar rotinas de controle.

4.3.2 Rede ART1

A rede ART1 possui um fluxo complexo de propagação de sinal. Por isso, com o objetivo

de ter uma implementação clara e com fácil manutenção, foi necessário um estudo detalhado

da rede para poder se fazer uma boa modelagem, antes de começar a construção do código,

caso contrário, este poderia ficar mal estruturado tornando muito difícil analisar a seqüência de

propagação do sinal na rede e eventualmente a parte de depuração de erros.

O paradigma de programação orientado a objetos, pode facilitar a parte de criação e manu-

tenção do código, já que permite uma maior clareza e estruturação deste, tornando mais fácil

modificá-lo ou mesmo estendê-lo.

De modo a facilitar e agilizar o processo de implementação, pode ser conveniente o uso de

metodologias. Entre estas, existem as ágeis, onde atualmente se encontra muito em evidência a

"Extreme Programming"[16]. Nesta, testes são feitos para validar cada etapa da implementação,

permitindo a correção de erros, tanto de código quanto de lógica, na medida em que aparecem. É

possível que sua utilização tenha sido responsável pela pequena quantidade de erros no código

ao final da implementação, sem contar que o sistema de testes facilitou significativamente o

trabalho tornando-o empolgante em todas as etapas, pois neste tem-se o desenvolvimento em

pequenos módulos onde sempre há uma parte operante do sistema.

29

As redes ART são ainda pouco usadas [3]. É difícil encontrar pesquisas explorando o seu

potencial. Para sua implementação foram feitos estudos utilizando o livro do Skapura [25] ,

o qual faz uma análise detalhada encima da ART1, bem como dos artigos [12], [18] (estes

como forma complementar) para entender o funcionamento e algoritmo da rede. A estrutura do

modelo multi-camadas teve sua implementação baseada na descrição de [24] e de [22].

4.3.3 O Sistema de Punição (SP)

Para que o aprendizado por reforço ocorra, um sistema de regras deve ser criado como forma

de avaliar as ações do robô no ambiente e em resposta puni-lo ou não. Esse sistema é chamado

Sistema de Punição.

Achar um SP adequado depende, além de conhecimento do tipo do ambiente, do agente e

objetivos, certa criatividade e, posteriormente, muitos testes com análise do comportamento do

agente, de forma a, com base nas observações feitas, fazer um refinamento do sistema de regras.

Ferramentas gráficas e logs mostrando o estado do sistema a cada instante, são importantes na

análise do comportamento do agente ao receber punição (como pode ser visto nos gráficos da

simulação no capítulo Resultados). É preciso ver se está sendo recebida punição no momento

certo, pois pode haver erro lógico ou de código, ou as regras estarem mal formuladas. Por isso

um gerador de gráfico dinâmico, bem como uma tela de status foram implementados com o

intuito de possibilitar visualizar os eventos na hora da simulação, o que tornou mais rápida a

verificação do processo de aprendizagem.

A construção das regras do SP, foi um processo feito em etapas, onde buscou-se inicialmente

definir metas com níveis de complexidade pequenos e, com isso, também um SP simples. No

início, por exemplo, a única regra, para o sistema em questão, era que o agente não deveria

ficar parado, o que não necessariamente faria ele conseguir andar por um labirinto, nem mesmo

o impediria de ficar girando em torno de si. Com a evolução e aprimoramento das técnicas

de punição estes problemas vão sendo resolvidos. Esta foi uma etapa caracterizada por muita

tentativa e erro.

30

4.4 Implementação

4.4.1 O Sistema de Redes Neurais (SRN)

A implementação, em particular, das redes, foi feita seguindo-se o algoritmo proposto em [25]

para ART1 e em [22] para MLP. Aqui será tratado apenas alguns detalhes e como foi feita a

união das duas estruturas em uma.

No sistema, cada neurônio da saída da ART (F2) está associado a uma rede direta através

de um "hashmap". Como os neurônios da camada F2 da ART internamente são guardados em

um vetor, sempre quando uma saída da ART é selecionada, é possível saber o valor do índice

do vetor do qual ela veio, e este valor é o usado como chave do hashmap. A rede MLP é o valor

guardado correspondente a essa chave.

A estrutura de dados utilizada para guardar os neurônios da F2 da ART é uma lista enca-

deada, para permitir que sejam adicionados dinamicamente. Quando um neurônio é gerado

dinamicamente, uma MLP também surge, com seus pesos aleatórios.

A ART foi configurada com oito neurônios na camada de entrada. Quatro correspondentes

ao estado atual do ambiente e quatro correspondentes ao último movimento realizado (norte,

sul, leste ou oeste), o grau de semelhança para padrões apresentados foi setado para um. As

redes MLP, possuem dois neurônios na entrada, três na intermediária e dois na saída. O valor

do sinal disparado quando uma MLP é sempre o mesmo, 0.5.

4.4.2 Simulador

O simulador Khepera é um software implementado em Java, possuindo seu código fonte dispo-

nível. Para implementar o controle do robô, existe uma classe, chamada "RobotControler"que

deve ser estendida. Esta dispõe de métodos para mudar a velocidade das rodas, bem como para

pegar o valor dos 8 sensores de distância. A classe possui um método responsável pela rotina de

controle, ou seja, que é iniciado por uma thread no começo da simulação. Como para o sistema

de punição necessitamos saber as coordenadas geográficas do robô, foi preciso entrar no código

fonte do simulador para dar acesso, através da rotina principal, da posição do robô e seu ângulo.

Um problema também foi acertar o tempo de dormida da rotina que controla o robô (sleep).

Pois o robô leva um tempo médio de 130 milissegundos para mudar sua posição, quando a

velocidade das rodas está no intervalo [-1,1], que foi à usada. Isso é muito importante saber,

31

pois quando se está analisando se o robô está se movendo ou não, é preciso fazer isso baseando-

se em um intervalo de tempo.

Para conseguir isso foram feitas algumas simulações para pegar o tempo que o robô levou

para se locomover e então pegou-se o valor de tempo mais alto obtido. Então garante-se que o

robô vai ter tempo de se movimentar nesse tempo.

4.4.3 Simulador versus RNA

Como a rede ART possui entrada de dados binária, e os sensores do simulador tem valores de

0 a 1023, criou-se uma função "treshold", ou seja, para transformar esses valores para binário

convencionou-se uma distância limite que o robô poderia chegar em relação a um obstáculo,

a partir do qual seu estado (para a ART) passa de 0 (não possui obstáculo) para 1 (possui

obstáculo).

A saída das RNAs também precisou de um treshold. Estas são responsáveis pela velocidade

das rodas e podem ter o valor igual a 1 ou -1.

4.5 Funcionamento

O sistema feito possui a seguinte seqüência de funcionamento para o exemplo do robô Khepera:

1) robô percebe ambiente através de sensores

2) a rede ART processa a informação obtida nos sensores e cria um novo neurônio (na

camada F2) para representá-la.

3) a este neurônio criado é associada uma rede MLP, a qual será responsável pelo compor-

tamento do robô, ou seja, agirá sobre os atuadores desse agente.

4) a rede MLP criada gera uma saída. Caso esta seja satisfatória, a rede é recompensada,

nada acontece, esta rede já está mapeada com um neurônio da ART. Se a saída é inválida, ou

seja, o robô bateu em uma parede, esta rede é punida, alterando-se aleatoriamente o peso de

algum neurônio de uma das camadas da MLP, até que o robô tenha uma ação que gere um

movimento válido.

Como pode-se observar, está sendo mexido em apenas uma rede MLP, a modificação dos

seus pesos não irá alterar a resposta gerada pelas outras MLPs associadas a outros neurônios do

32

sistema, ou seja, para outras entradas (dos sensores). Por isso a rede é estável.

Capítulo 5

Resultados

O projeto seguiu uma linha evolutiva de desenvolvimento, sendo construído a pequenos passos,

onde sempre que eram conseguidos resultados adequados passava-se a uma nova etapa.

Na implementação das RNAs, obteve-se bons resultados nos testes realizados para analisar

o comportamento das mesmas. A maior parte do tempo foi despendido no sistema de punição

do agente que precisou contornar deficiências da ART1.

A princípio esperava-se ter a ART1 como "chaveador"único para cada entrada da rede. No

entanto, foi constatado que, mesmo ajustando as constantes de semelhança para padrões de

entrada do sistema iguais a 1, ou seja, em teoria seria o máximo de semelhança possível, não

alcançou-se 100% de semelhança de início, para o mapeamento de entradas da rede ART1 com

os neurônios de saída. Isso torna mais lento o processo de aprendizado do agente, pois quando

uma mesma sabida da rede é utilizada para mais padrões, onde esses deveriam gerar saídas

diferentes, um altera a rede MLP treinada para o outro.

Outro problema foi o escorregamento das rodas fazer com que o robô recebesse punição em

situações indevidas. Com isso é sempre possível receber punição, mesmo após longo treina-

mento.

Para solucionar tais problemas e tornar mais fácil a criação de regras para o robô, estabele-

cemos um processo de punição baseado em coordenadas, norte, sul, leste e oeste, onde o robô

anda sempre para frente com exceção das vezes em que o mesmo choca-se em um obstáculo

e precisa recuar para conseguir analisar a situação e tomar a trajetória correta. Com isso a

recorrência da rede ficou não mais em função do antigo movimento das rodas, mas sim da úl-

tima trajetória dele em termos de coordenada geográfica. A partir dai foi feito refinamento das

técnicas de punição e através da análise do comportamento do robô e dos dados de log sobre

33

34

o sistema de punição percebeu-se que o objetivo havia sido alcançado. O fato do robô parar

e analisar o ambiente antes de tomar uma ação sanou o problema com o escorregamento nas

rodas.

(Figura 5.1)

Figura 5.1: Parte do log gerado para análise do sistema

Na figura acima, é possível analisar momento a momento, durante a simulação, o estado

do sistema. Nos 4 primeiros sinais tem-se o estado atual captado pelos sensores, ou seja, o

primeiro bit indica obstáculo a oeste, o segundo a norte, o terceiro leste e o quarto, sul. Após

temos 4 bits correspondentes ao movimento anterior, também no sentido oeste, norte, leste e

sul. A ação corresponde a saída da rede MLP em função da entrada recebida pela ART. Como o

robô só pode andar para uma direção, recebe punição se a rede MLP disser que o mesmo deve

andar em mais de uma direção ao mesmo tempo. Isso pode ser observado no arquivo de log,

onde "P"indica que o agente está sendo punido e em seguida vem o status da punição. Por fim

é dito o ângulo do robô para permitir analisar se a conversão dos sinais obtidos nos sensores de

distância para coordenadas geográficas não esta tendo problemas.

O robô como visto, teve seus movimentos restritos a norte, sul, leste ou oeste. Sempre

que precisar mudar a direção ele pára, gira 90 graus em torno do próprio eixo e volta a se

movimentar. Foi uma escolha feita para agilizar o trabalho, mas em nada restringe o objetivo

final do mesmo.

A seguir é mostrada uma simulação, através dos gráficos, onde pode-se observar a conver-

gência do número de punições a zero, demonstrando o aprendizado da rede. Na telas a seguir

podemos observar 3 partes diferentes: 1) o robô no labirinto. 2) log do sistema, onde é possível

analisar o comportamento do robô. 3) gráfico que indica o número de punições e recompensas.

A linha azul indica o número de recompensas e a vermelha o número de punições.

(Figura 5.2)

Nessa primeira figura o robô está andando pela primeira vez no labirinto. Nesse momento

ele reconhece os obstáculos. Fazendo uma análise do gráfico (3) é possível ver que se está

recebendo punições devido a ações inadequadas que o mesmo está tomando. Podemos dizer

35

Figura 5.2: Resultado simulação, parte 1

que esta é a etapa de aprendizado.

(Figura 5.3)

Nesse momento o robô já percorreu todo o labirinto mais de uma vez, observa-se que não

está mais recebendo punição, apenas recompensa. E como podemos ver na última imagem

(abaixo) notamos que com o passar do tempo recebe-se apenas recompensa pois o robô já está

perfeitamente adaptado para o dado ambiente (labirinto).

(Figura 5.4)

Por fim, foi observado que conseguiu-se chegar a um agente inteligente com aprendizado

autônomo em tempo de execução, usando o modelo proposto na descrição do projeto. No emu-

lador khepera ao ser colocado em labirintos o robô tem mostrado bons resultados, se adaptando

36

Figura 5.3: Resultado simulação, parte 2

rapidamente as configurações do ambiente, para casos onde não existam bifurcações e quando

as paredes do corredor do labirinto não estão muito distantes, pois os sensores do robô precisam

perceber as paredes para conseguir andar sem ter problemas. Um exemplo de ambiente labirinto

podemos ver na imagem a seguir.

37

Figura 5.4: Resultado simulação, parte 3

Conclusão

Ao se estudar a fundo um campo da inteligência artificial, como as Redes Neurais Artificiais,

percebe-se que assim como dito por autores como [3] e [24], em IA muito ainda tem a se

descobrir. Na área estudada para o presente trabalho, existe uma grande gama de modelos

diferentes propostos. Entre estas, como em [26], tem se feito uso também de estruturas neurais

com sistemas evolucionários. Todos estes trabalhos realizados são importantes pois ajudam

a construir e solidificar resultados, aumentando os estudos que podem ser feitos nessa área e

facilitando o trabalho de outros pesquisadores que podem se valer desses.

Neste trabalho foi abordado o uso de uma estrutara de redes neurais com aprendizado por

reforço, para modelar um agente inteligente de forma que esse aprendesse a mover-se por um

labirinto. No final do trabalho obteve-se o resultado esperado. Ocorreram alguns problemas du-

rante o desenvolvimento do projeto devido a imprevistos no comportamento do Khepera, como

o escorregamento nas rodas, por exemplo, e o cálculo do tempo aproximado que o robô levava

para mudar a posição(x,y). Não estava havendo uma boa convergência para o aprendizado ideal

do robô, com isso um sistema de punição diferente foi construido nas etapas finais do projeto,

este constituido de coordeandas geográficas, não permitindo o robô andar para trás (a menos

que fosse necessário para conseguir girar em torno do próprio eixo) e parando para analisar

o ambiente na hora de decidir por uma nova ação (no caso da troca de estado). Emulando o

agente no simulador Khepera, percebeu-se que ao coloca-lo em um labirinto o mesmo conse-

guiu aprender a deslocar-se através deste, sendo que o número de punições tendeu a zero com

o passar do tempo, demonstrando que estava havendo aprendizado. Isso indica que o trabalho

realizado é válido para construção de agentes autônomos.

Além de redes MLP levou-se em consideração as redes ART1 e ART2, sendo que a primeira

foi escolhida por ser suficiente para validar o modelo proposto. A segunda poderia ter sido feita

com regras de punição diferentes, por ser determinística se aplicada ao problema proposto,

devido a sua capacidade de entrada de dados de forma analógica, conseguindo representar de

38

39

forma ideal o ambiente real. Devido a escolha da ART1 foram utilizados "thresholds"para

trabalhar com entradas não binárias, transformando dessa forma entradas analógicas em digitais.

Em trabalhos futuros seria interessante a implementação da ART2 e com isso uma mudança

no sistema de punição atual. Bem como implementar uma proposta para garantir o correto

funcionamento da rede mesmo em um ambiente com bifurcações

Referências Bibliográficas

[1] ARAS 2005 "The International Conference on Automation, Robotics

and Autonomous Systems ARAS 2005”, site acessado em 23/10/2005:

"http://www.icgst.com/ARAS05/conference/index.html"

[2] ALMEIDA, M. A. F., BARRETO, S. "Introdução as redes neurais artificiais”,

site acessado em 17/10/2005: "www.eps.ufsc.br/disciplinas/fialho/aprenant/grupo_6/

grupo_61.html".

[3] BARRETO, JORGE MUNIZ"Inteligência Artificial no Limiar do Século XXI”, Impresso

por Duplic - Prestação de Serviços, Florianópolis (1999).

[4] BASSO, D.M., ENGEL, P.M."Uma Abordagem Conexionista para Geração de Padrões”,

XXV Congresso da Sociedade Brasileira de Computação, São Leopoldo, RS (2005).

[5] BITTENCOURT, GUILHERME"Breve história da Inteligência Artificial”, site acessado

em 26/09/2005: "www.das.ufsc.br/gia/history/", Florianópolis.

[6] CARLOS H. C. R."Aprendizado por reforço”, Instituto Tecnológico de Aeronáutica, São

José dos Campos(1999).

[7] CARDON, A., MÜLLER, N. D."Introdução as redes neurais artificiais”, site acessado em

17/10/2005: "http://www.ulbra.tche.br/ danielnm/ia/rna/rna.html".

[8] CARPENTER, A. GAIL , GROSSBERG, STEPHEN"Invariant Pattern Recognitin and

Recall by an Attentive Self-Organizing ART Architecture in a Nonstationry World”, IEEE

First International Conference on Neural Networks, San Diego, CA (Junho de 1987).

[9] CARPENTER, A. GAIL , GROSSBERG, STEPHEN"A Massively Parallel Architecture

for a Self-Organizing Neural Patten Recognition Machine”, Computer Vision, Graphics,

and Image Processing, 37:54-115, 1987

40

41

[10] www.debian.org"Site do Sistema Operacional GNU/Linux Debian”, Site acessado em:

24/10/2005..

[11] www.eclipse.org"Site da plataforma Eclipse”, Site acessado em: 24/10/2005..

[12] HEILEMAN G.L., GEORGIOPOULOS M., ABDALLAH C."A Dynamical Adaptive

Resonance Architecture”, IEEE.

[13] java.sun.com"Site da Tecnologia Java”, Site acessado em: 24/10/2005.

[14] KAELBLING, LESLIE PACK "Learning in Embedded Systems”, A Bradford Book, Mas-

sachusetts (1993).

[15] KAETSU, DEISI Y., TATIBANA, CASSIA Y."Redes Neurais”, site do departa-

mento de informática da Universidade Estadual de Maringá. Acessado em 05/10/2005:

"http://www.din.uem.br/ia/intelige/neurais2/".

[16] KENT BECK "Programação Extrema ( XP ) Explicada: Acolha as Mudanças”, Editora

Bookman (2004).

[17] KOVÁCS, ZOLT LÁSZIO "O Cérebro e a sua mente: uma introdução a neurociência

computacional”, Edição Acadêmica, São Paulo (1997).

[18] MARTIN E. "Visualisation of processes in ART neural networks”, Technical Report. Vic-

toria University of Wellington, Department of Computer Science. (1993).

[19] Souza, M., Silva, H. M."Redes Neurais com Aprendizado por Reforço:Estudos e Aplica-

ções”, Trabalho de conclusão de curso, UFSC (2002).

[20] MARWEDEL, P."Embedded System Design”,2nd edition, Kluwer Academic Publishers

(2003).

[21] ROISENBERG MAURO"Emergência da Inteligência em Agentes Autônomos através de

Modelos Inspirados na Natureza”, Tese de doutorado submetida a Universidade Federal

de Santa Cataria, Florianópolis (1998).

[22] ROISENBERG MAURO"Curso de Redes Neurais”, site com curso de Re-

des Neurais do professor Dr. Mauro Roisenberg. Acessado em 29/10/2005:

"http://www.inf.ufsc.br/ mauro/ine6103/slide/cursoredesneurais/".

42

[23] PERRETTA S. J., GALLAGHER J. C."WSU Khepera Robot Simulator Manual”, 2003.

[24] NORVIG, P., RUSSEL, S."Inteligência Artificial”, Editora Campus (2004).

[25] FREEMAN J.A., SKAPURA D.M."Neural networks, algorithms, applications, and pro-

gramming techniques”, Addison-Wesley Publishing Company, (1991).

[26] XIN L., VADAKKEPAT, P., LEE, T. H., PENG, X., KIM, P.K."Comparasion of Khe-

pera Robot Navigation by Evolutionary Neural Networks and Pain-based Algorithm”,

Department of Electrical and Computer Engineering , National University of Singapure,

IEEE(2002).