• Nenhum resultado encontrado

Uso de Unidades de Memória em Redes Neurais Recorrentes para Acelerar a Otimização

N/A
N/A
Protected

Academic year: 2021

Share "Uso de Unidades de Memória em Redes Neurais Recorrentes para Acelerar a Otimização"

Copied!
46
0
0

Texto

(1)

Universidade Regional do Noroeste do

Estado do Rio Grande do Sul – UNIJUI

DCEEng – Departamento de Ciências Exatas e Engenharias

Eldair Fabrício Dornelles

Uso de Unidades de Memória em Redes

Neurais Recorrentes para Acelerar a Otimização

Ijuí, RS, Brasil

2015

(2)

Eldair Fabrício Dornelles

Uso de Unidades de Memória em Redes Neurais

Recorrentes para Acelerar a Otimização

Monografia final de curso de graduação em Ciência da Computação objetivando aprova-ção no componente de Trabalho de Conclusão de Curso. Unijuí – Universidade Regional do Noroeste do Estado do Rio Grande do Sul, DCEEng - Departamento de Ciências Exatas e Engenharias.

Orientador: Msc. Rogério Samuel de Moura Martins

Ijuí, RS, Brasil

2015

(3)

Eldair Fabrício Dornelles

Uso de Unidades de Memória em Redes Neurais

Recorrentes para Acelerar a Otimização

Monografia final de curso de graduação em Ciência da Computação objetivando aprova-ção no componente de Trabalho de Conclusão de Curso. Unijuí – Universidade Regional do Noroeste do Estado do Rio Grande do Sul, DCEEng - Departamento de Ciências Exatas e Engenharias.

Msc. Rogério Samuel de Moura Martins

Orientador

Msc. Édson Luiz Padoin

Convidado

Ijuí, RS, Brasil

2015

(4)

Dedico esta monografia a todos meus familiares e amigos que sempre me apoiaram e que ao longo dessa jornada serviram de inspiração para esta conquista.

(5)

Agradecimentos

Agradeço a UNIJUÍ que por meio do Programa Institucional de Bolsa de Iniciação Científica (PROBIC-FAPERGS), me concedeu uma bolsa de pesquisa, a qual possibilitou a realização dos estudos utilizados para o desenvolvimento deste trabalho. Agradeço aos professores orientadores do Grupo de Pesquisa em Computação Aplicada (GCA) pelo apoio e confiança. Aos meus colegas bolsistas que incentivaram e auxiliaram neste caminho de aprendizado. Em especial, agradeço ao meu orientador, o professor Msc. Rogério Samuel de Moura Martins, pela oportunidade e auxílio no desenvolvimento, e ao professor Msc. Édson Luiz Padoin pelas orientações durante minha graduação e por ter aceito o convite para fazer parte da banca avaliadora deste trabalho.

(6)

“Em vez de tentar produzir um programa para simular a mente de um adulto, por que não a de uma criança ?” (Alan Turing)

(7)

Resumo

Neste trabalho foi realizado a modelagem e a proposta de uma unidade de memória para ser incorporada à estrutura de uma rede neural artificial recorrente. Esta estrutura foi utilizada para evoluir um programa que tem por objetivo representar a inteligência de um agente inteligente com capacidade de atuar em ambientes parcialmente observáveis. Esta proposta visa acelerar e melhorar a convergência das redes neurais recorrentes, quando aplicada aos ambientes parcialmente observáveis. O agente em questão foi aplicado a uma versão modificada do problema presa predador. Para tal realizou-se um estudo sobre agentes inteligentes, ambientes de tarefas, redes neurais recorrentes, estruturas de memórias, e algoritmos genéticos. Foi modelado e implementado uma unidade de memória para ser adicionada a estrutura de uma rede neural recorrente, bem como a modelagem e implementação de um framework de redes neurais e outro framework de algoritmo genético, o qual foi utilizado para evoluir o programa de inteligência através da rede neural. Por fim realizou-se uma análise de desempenho do modelo computacional com unidades de memória aplicado ao problema presa predador modificado e inferido o quão próximo, ou melhor foi o seu desempenho em relação à rede neural recorrente convencional. Através da análise dos resultados obtidos, pode se perceber que a unidade de memória proposta neste trabalho, adicionada à estrutura de uma rede neural recorrente, apresentou melhor desempenho e tempo de convergência, em relação à estrutura convencional, aumentando em média 1,55% o percentual de captura da presa.

(8)

Abstract

In this work was made the modeling and the proposal of a memory unit to be incorporated into the structure of an artificial recurrent neural network. This structure was used to develop a program that aims to represent the intelligence of an intelligent agent capable of operating in partially observable environments. This proposal aims to accelerate and improve the convergence of recurrent neural networks, when applied to partially observable environments. The agent on concerned was applied to a modified version of prey predator problem. For this, a study was conducted about intelligent agents, task environments, recurrent neural networks, memory structures, and genetic algorithms. A memory unit has been modeled and implemented to be added to the structure of a recurrent neural network as well as the modeling and implementation of a framework of neural networks and other genetic algorithm framework, which was used to develop the program via the intelligence neural network.Finally was realized a computational model performance analysis with memory units applied to the problem predator and prey modified and inferred how close, or rather it was his performance in relation to conventional neural recurrent network. By analyzing the obtained results, it can be seen that the memory unit proposed in this work, added to the structure of a recurrent neural network, showed better performance and convergence time, compared with the conventional structure, increasing on average 1.55% the prey capture.

(9)

Lista de ilustrações

Figura 1 – Interação do agente com o ambiente de tarefa . . . 16

Figura 2 – Um típico mundo do aspirador de pó com apenas dois locais . . . 17

Figura 3 – Diagrama esquemático de um agente reativo simples . . . 21

Figura 4 – Diagrama de um agente reativo baseado em modelo . . . 22

Figura 5 – Diagrama de um agente baseado em objetivos . . . 22

Figura 6 – Diagrama de um agente baseado em modelo e orientado para utilidade 23 Figura 7 – Um modelo geral de agentes com aprendizagem . . . 24

Figura 8 – Esquema de um algoritmo genético . . . 25

Figura 9 – Neurônio biológico . . . 28

Figura 10 – Neurônio artificial . . . 28

Figura 11 – Ilustração da Rede Perceptron . . . 30

Figura 12 – Rede neural de Hopfield convencional . . . 31

Figura 13 – Problema de dissipação gradiente convencional . . . 32

Figura 14 – Estrutura de um bloco de memória da arquitetura LSTM . . . 33

Figura 15 – Gradiente de informação sendo preservado em uma rede LSTM . . . . 34

Figura 16 – Ilustração do modelo presa-predador(modificado) . . . 35

Figura 17 – Estrutura da unidade de memória . . . 37

Figura 18 – Estrutura da rede neural recorrente com unidades de memória . . . 38

Figura 19 – Gráfico de evolução das RNAs recorrentes . . . 41

Figura 20 – Comparativo entre RNA recorrente convencional e RNA recorrente com uma unidade de memória . . . 41

Figura 21 – Comparativo entre RNA recorrente convencional e RNA recorrente com uma unidade de memória . . . 42

Figura 22 – Comparativo entre RNA recorrente convencional e RNA recorrente com uma unidade de memória . . . 43

(10)

Lista de tabelas

Tabela 1 – Descrição de um ambiente de tarefa . . . 19 Tabela 2 – Desempenho alcançado pelas RNAs após os treinamentos . . . 43

(11)

Lista de abreviaturas e siglas

AG Algorítmo Genético RNA Rede Neural Recorrente

PEAS Performace, Environment, Actuators, Sensors LSTM Long Short Term Memory

(12)

Sumário

1 INTRODUÇÃO . . . 13 1.1 Justificativa . . . 14 1.2 Objetivo . . . 14 1.2.1 Objetivo Geral . . . 14 1.2.2 Objetivos Específicos . . . 15 1.3 Metodologia . . . 15 2 REFERENCIAL TEÓRICO . . . 16 2.1 Agentes e Ambientes . . . 16

2.1.1 Bom comportamento: O conceito de racionalidade . . . 17

2.1.2 Racionalidade . . . 17

2.1.3 Medidas de desempenho . . . 17

2.1.4 Aprendizado e autonomia . . . 18

2.1.5 Ambiente de tarefa . . . 18

2.1.6 Propriedades de ambientes de tarefas . . . 19

2.1.7 Estrutura de agentes . . . 20

2.1.7.1 Agentes reativos simples . . . 20

2.1.7.2 Agentes reativos baseados em modelos. . . 21

2.1.7.3 Agentes baseados em objetivos . . . 22

2.1.7.4 Agentes baseados em utilidade . . . 23

2.1.7.5 Agentes com aprendizagem . . . 23

2.2 Algoritmo Genético . . . 24

2.2.1 Reprodução . . . 25

2.2.1.1 Tipos de seleção . . . 26

2.2.1.2 Tipos de crossover . . . 26

2.3 Redes Neurais Artificiais . . . 27

2.3.1 Neurônio biológico . . . 27

2.3.2 Neurônio artificial . . . 28

2.3.3 Perceptron . . . 29

2.3.4 Redes neurais recorrentes de Hopfield . . . 30

2.4 Long Short Term Memory (LSTM) . . . 32

2.5 Ambiente Presa-Predador (Modificado) . . . 34

3 MODELAGEM E IMPLEMENTAÇÃO . . . 36

3.1 Estrutura da unidade de memória . . . 36

(13)

3.3 Processo de aprendizagem do agente . . . 38

3.4 Considerações sobre a modelagem e implementação . . . 39

4 TREINAMENTO, TESTES E RESULTADOS . . . 40

4.1 Treinamento . . . 40

4.2 Testes e Resultados . . . 42

5 CONCLUSÃO . . . 44

(14)

13

1 Introdução

Na modelagem da estrutura de uma rede neural artificial, a qual tem por objetivo evoluir um programa que irá representar a inteligência de um agente, deve ser amplamente considerado o ambiente para qual o mesmo será aplicado. Em determinados ambientes, tais como os parcialmente observáveis, as redes neurais podem apresentar dificuldades ou serem incapazes de evoluírem. Isto ocorre devido ao conceito de memória de curto prazo utilizado por elas. A inserção de unidades de memória em uma rede neural artificial tem por objetivo evoluir um programa para representar a inteligência de um agente inteligente com capacidade de tomar decisões, considerando informações recebidas a longo prazo.

Um agente inteligente é algo que tem a capacidade de perceber o ambiente por meio de sensores e de agir sobre este ambiente por intermédio de atuadores, tomando decisões de acordo com as percepções obtidas pelos sensores, visando atingir o objetivo ao qual foi projetado. A modelagem de um agente pode ser realizada através de alguns recursos oferecidos na área da inteligência artificial, dentre os quais podem se citar: programação genética e redes neurais artificiais. Para que um agente possa compreender e tomar as decisões adequadas, visando atingir um resultado ótimo ou o mais próximo possível, faz-se uso de algumas técnicas de aprendizado, podendo ser aprendizado supervisionado ou por reforço.

Os ambientes parcialmente observáveis apresentam problemas um tanto complexos para a modelagem de um agente inteligente, isto ocorre devido a algumas características destes ambientes que dificultam as tomadas de decisões por parte do agente. Dentre suas particularidades está o fato de não se ter informações completas sobre o meio no qual se está interagindo e a necessidade de armazenar informações sobre eventos ocorridos por um longo período.

Uma alternativa para melhorar o desempenho de uma rede neural artificial recor-rente em ambientes parcialmente observáveis, é fazer com que esta arquitetura armazene as informações, por um período indeterminado, de modo que ao evoluir está rede, seja definido de forma autônoma o tempo que uma determinada informação deve ficar armazenada para ser utilizada nas tomadas de decisões. Com base neste preceito é proposto neste trabalho a modelagem de uma unidade de memória para ser adicionado a estrutura de uma rede neural artificial recorrente.

(15)

Capítulo 1. Introdução 14

1.1

Justificativa

Desenvolver uma lógica para definir a inteligência de um agente é complexo, deve ser analisado o domínio ao qual o mesmo se destina e a partir dessa análise o programador deve inferir qual é a melhor estrutura para sua implementação. A estrutura definida terá relação direta com o seu desempenho, de modo que, se a mesma não for adequada ao problema, o agente pode não apresentar um bom desempenho ou o mínimo esperado.

Para auxiliar no desenvolvimento de uma lógica para um agente podem ser utilizados alguns recursos da área de inteligência artificial, dentre eles pode-se citar a programação genética, a qual utiliza estruturas discretas, através desta, o programador deve definir uma linguagem específica, sendo limitada ao domínio (poucas estruturas e operações), caso contrário, se utilizar uma linguagem geral a complexidade computacional pode aumentar de forma que se torna inviável a otimização. Porém devido à utilização de uma linguagem específica (limitada), acaba por limitar também as soluções geradas, podendo não obter resultados satisfatórios.

Outra técnica de inteligência artificial para modelagem de agentes inteligentes é a utilização de redes neurais artificiais, estas possuem estruturas completamente uniforme e analógicas, independente dos parâmetros, sempre produzirá respostas consistentes, assim todos os indivíduos gerados serão válidos. Porém agentes modelados com estruturas de redes neurais artificiais apresentam dificuldades em evoluir, quando aplicados a determinados ambientes, principalmente nos quais o agente necessita memorizar eventos por longo prazo.

Tendo em vista algumas limitações por parte de algumas técnicas de inteligência artificial para a modelagem de um agente inteligente, é proposto neste trabalho a modelagem de uma unidade de memória, a qual será adicionada a estrutura de uma rede neural recorrente para evoluir a inteligência de um agente, utilizando uma técnica evolutiva para seu aprendizado.

A partir da análise do desempenho desse modelo computacional aplicado ao pro-blema presa predador (modificado), foi inferido o quão próximo, ou melhor é o seu desempenho em relação a uma rede neural recorrente convencional.

1.2

Objetivo

1.2.1

Objetivo Geral

Proposta de uma unidade de memória para ser adicionada à estrutura de uma rede neural recorrente. Esta proposta visa otimizar o processo de convergência na evolução de um programa de inteligência artificial, utilizando técnicas evolutivas para o aprendizado desta estrutura. O programa evoluído será definido como a inteligência de um agente para

(16)

Capítulo 1. Introdução 15

atuar em ambientes parcialmente observáveis.

1.2.2

Objetivos Específicos

a) Modelar e implementar uma unidade de memória, que será utilizada em conjunto com uma estrutura de rede neural recorrente para evoluir um programa de inteligência para um agente.

b) Realizar análise e implementação do ambiente parcialmente observável presa pre-dador (modificado), o qual será utilizado como ambiente de testes e treinamento para a evolução da rede neural artificial com as unidades de memória.

c) Desenvolvimento de um framework de redes neurais artificiais, bem como a implementação de um framework de algoritmos genéticos para evoluir a arquitetura proposta.

d) Analisar e inferir o quão próximo, ou melhor, é o desempenho da estrutura proposta neste trabalho, em relação à estrutura de uma rede neural recorrente sem unidades de memória.

1.3

Metodologia

O desenvolvimento deste trabalho está dividido em quatro partes. Primeiramente, no capitulo 2, é apresentado uma revisão da literatura sobre os assuntos envolvidos neste trabalho. Na segunda etapa, capitulo 3, é abordado a modelagem da unidade de memória e o processo de evolução da rede neural artificial. A terceira etapa, capitulo 4, foi destinada à apresentação dos testes e resultados. Por fim na quarta etapa, capitulo 5, é apresentado análise e discussão dos resultados obtidos.

(17)

16

2 Referencial Teórico

Neste capítulo, inicialmente é feito uma abordagem sobre agentes inteligentes e ambientes de tarefas. Na sequência é explanado o funcionamento da meta-heurística Algoritmo Genético (AG). É também abordado alguns conceitos sobre Redes Neurais Artificiais (RNA) e estrutura de memória. Por fim é apresentado uma versão modificada do problema Presa-Predador.

2.1

Agentes e Ambientes

Um agente é algo que tem a capacidade de perceber seu ambiente por meio de sensores e de agir sobre este ambiente por intermédio de atuadores, com autonomia flexível visando atingir os objetivos para o qual foi projetado (DAI; AUGUSTIN; INFORMATI-ONSTECHNIK, 1997). Considerando uma agente do tipo humano, o mesmo tem olhos, ouvido, nariz e outros órgãos como sensores, que os auxiliam na percepção do ambiente, e possuem mãos, pernas, boca e outras partes do corpo que servem como atuadores. Outro exemplo de agente é um robô, este pode ter câmeras e detectores infravermelhos que servem como sensores, e diversos motores como atuadores. Na Figura 1 é ilustrada a forma que é realizada a iteração do agente com o ambiente de tarefa.

Figura 1 – Interação do agente com o ambiente de tarefa

Fonte: (NORVIG; RUSSELL, 2013, p. 34)

Para ilustrar a ideia de percepção e ação de um agente em meio ao seu ambiente, pode ser usado um exemplo muito simples: o mundo de um aspirador de pó. No exemplo que segue esse mundo é constituído por apenas dois locais: os quadrados A e B. O agente

(18)

Capítulo 2. Referencial Teórico 17

deve perceber em qual quadrado ele está e se há sujeira no mesmo, caso houver ele deve aspirar, caso contrário ele deve se movimentar para a direita ou esquerda, dependendo da sua posição atual. Na Figura 2 é ilustrado esse exemplo.

Figura 2 – Um típico mundo do aspirador de pó com apenas dois locais

Fonte: (NORVIG; RUSSELL, 2013, p. 35)

2.1.1

Bom comportamento: O conceito de racionalidade

Conforme (NORVIG; RUSSELL, 2013, p. 35), um agente racional é aquele que faz tudo certo. De forma que através de suas ações o agente consiga obter maior sucesso. Visto que precisa se medir o quão bom foi o desempenho do agente, faz-se necessário portanto, definir algum método para calcular seu desempenho. Esse método, juntamente com a descrição do ambiente, dos sensores e atuadores do agente, fornecerá uma especificação completada da tarefa que o agente deve atentar. Dessa forma pode-se inferir com maior precisão a racionalidade de um agente.

2.1.2

Racionalidade

A racionalidade de um agente depende da interpretação de alguns fatores, tais como: medida de desempenho, conhecimento anterior que o agente tem do ambiente, ações que ele pode executar e sequência de percepções do agente até o momento. Segundo (NORVIG; RUSSELL, 2013, p.35), um agente deve selecionar uma ação correspondente a cada sequência de percepção possível, visando maximizar sua medida de desempenho, quanto maior o desempenho atingido maior o nível racional do agente.

2.1.3

Medidas de desempenho

Medidas de desempenho são constituídas de critérios para medir o sucesso do comportamento do agente (NORVIG; RUSSELL, 2013, p. 36). O comportamento de um agente é dado pela sequencia de ações geradas por ele de acordo com as percepções recebidas. Essas ações fazem com que o ambiente passe por uma sequencia de estados, se a sequência ocorrida é a desejada, significa que o agente funcionou bem.

(19)

Capítulo 2. Referencial Teórico 18

Um modelo apropriado da medida de desempenho para o exemplo “mundo de um aspirador de pó” seria recompensar o agente por deixar o chão limpo, ele poderia ser recompensado por cada quadrado limpo em um determinado período de tempo, e podendo ser aplicado a ele uma penalidade pela eletricidade consumida e ruído gerado.

2.1.4

Aprendizado e autonomia

O agente deve coletar informações do ambiente e também aprender tanto quanto possível do que ele percebe. Pode ser fornecido em sua configuração inicial algum conheci-mento referente ao ambiente, porém à medida que esse agente interage com o ambiente ele ganha experiência e o seu conhecimento pode ser ampliados. O conhecimento de um agente se divide em três períodos distintos: quando o agente é projetado, uma parte do cálculo é feita por seus projetistas. Quando o agente está em execução realiza mais cálculos e adquire conhecimento a partir da experiência, a partir dai, efetua mais cálculos para decidir como modificar seu comportamento (NORVIG; RUSSELL, 2013, p. 37).

Um agente racional deve possuir autonomia, ou seja, deve ser capaz de aprender o máximo possível para compensar seu conhecimento inicial, que na grande maioria das vezes é parcial ou incorreto. Após adquirir conhecimento suficiente sobre seu ambiente o agente racional pode se tornar independente de seu conhecimento anterior, chegando nessa etapa do conhecimento define se este agente como sendo um agente autônomo.

2.1.5

Ambiente de tarefa

Os ambientes são essencialmente os problemas para quais são projetados os agentes. Existem vários tipos de ambiente de tarefas e cada ambiente afeta diretamente o projeto de desenvolvimento do agente.

Ao projetar um agente deve se especificar o ambiente de tarefa o mais completo possível (NORVIG; RUSSELL, 2013, p. 39). Na especificação deste ambiente deve conter alguns elementos básicos, tais como: medida de desempenho, ambiente, atuadores, e sensores. Tais elementos são representados pelo acrônimo PEAS, (Performace, Environment, Actuators, Sensors).

• Medida de desempenho: é o desempenho que gostaríamos que o agente tivesse como objetivo, juntamente de suas qualidades desejáveis.

• Ambiente: se refere ao problema com o qual o agente terá que lidar, é de onde o agente receberá os mais diversos tipos de entradas e precisará interpreta-las para interagir com o mesmo.

• Sensores: é tudo aquilo utilizado pelo agente para perceber o ambiente e capturar os mais variados tipos de entradas para o qual foi projetado.

(20)

Capítulo 2. Referencial Teórico 19

• Atuadores: são os recursos disponibilizados ao agente, os quais são utilizados pelo mesmo para realizar as suas ações de forma alterar o estado do ambiente.

Na Tabela 1 é feita a descrição de algumas características básica para um ambiente de tarefa visando a atuação de um táxi automatizado.

Tabela 1 – Descrição de PEAS do ambiente de tarefa para um táxi automatizado.

Tipo Agente

Medida de desempenho Ambiente Atuadores Sensores

Motorista de táxi.

Viagem segura, rápida, den-tro da lei, confortável, maxi-mizar lucros. Estradas, outros tipos de tráfegos, pedestres, clien-tes. Direção, acelera-dor, freios, sinal, busina, visor.

Câmeras, velocime-tro, acelerômetro, sensores de motor, teclado.

Fonte: (NORVIG; RUSSELL, 2013, p. 40)

2.1.6

Propriedades de ambientes de tarefas

Existem diversos tipos de ambientes de tarefas que podem surgir na área da IA (Inteligência Artificial). Para facilitar no desenvolvimento do projeto apropriado de um agente e a sua aplicabilidade, pode se agrupar esses ambientes por categorias, de forma que as mesmas forneçam informações em comum a todas as do grupo(NORVIG; RUSSELL, 2013, p. 41). Seguem descritas algumas dessas categorias de ambientes de tarefas.

• Completamente observável: um ambiente de tarefa é completamente observável se o agente tem acesso ao estado completo do ambiente em cada instante. Os sensores detectam todos os aspectos que são relevantes para a escolha da ação.

• Parcialmente observável: um ambiente onde parte dos estados estão ausentes nos dados do sensor. Para ilustrar esse ambiente pode se usar o agente aspirador de pó com apenas um sensor de sujeira local, ele não poderá saber se há sujeira em outro quadrado a menos que se desloque até lá.

• Determinístico: é um ambiente no qual o próximo estado é determinado pelo estado atual e pela ação executada pelo agente.

• Estocástico: neste tipo de ambiente não é possível prever como será o próximo estado no ambiente pois o mesmo não é determinado apenas pelo estado atual e a ação do agente.

• Episódico: ambiente episódico é caracterizado pelo fato de não dependerem do estado anterior e nem se preocupar com o estado seguinte, a experiência do agente é dividida em episódios, onde cada episódio consiste na percepção do agente, as decisões tomadas afetam direta e unicamente o estado atual.

(21)

Capítulo 2. Referencial Teórico 20

• Sequencial: neste tipo de ambiente o estado atual e ação tomada podem influenciar no estado seguinte e afetar todas as decisões futuras. Um exemplo desse ambiente pode ser caracterizado pelo jogo de xadrez, de modo que o movimento de uma peça poderá impactar no movimento de todas as decisões seguintes.

• Estático: é um modelo de ambiente onde os estados não se alteram enquanto o agente está deliberando. Um exemplo desse ambiente pode ser observado em um jogo de palavras cruzadas.

• Dinâmico: ambiente dinâmico é um ambiente que pode sofrer alterações enquanto o agente está em execução.

• Discreto: um ambiente discreto é identificado por ter um número finito de estados distintos, o jogo de xadrez pode ser utilizado mais uma vez aqui para descrever esse tipo de ambiente, pois o mesmo possui um número finito de percepções e ações. • Continuo: é um tipo de ambiente no qual não é possível definir um número finito

de estados, para ilustrar esse ambiente pode ser usado o agente motorista de táxi, especificado na Tabela 1. Esse agente não tem um número definido de percepções, pois elas são continuas enquanto o mesmo estiver em execução.

• Agente único e Multiagente: a distinção entre esses dois ambientes pode ser feita através de dois exemplos práticos: um agente que resolve um jogo de palavras cruzadas sozinho está caracterizando um ambiente de agente único, já um jogo de xadrez jogado por dois agentes, caracteriza um ambiente multiagente.

2.1.7

Estrutura de agentes

A estrutura de um agente é basicamente definida pelo conjunto arquitetura e programa. A arquitetura é composta por dispositivos físicos tais como sensores e atuadores, já o programa se refere à parte lógica, para essa existe algumas variações. Uma delas é mapear as percepções obtida do ambiente e através desse mapeamento orientar as ações, outro modelo seria um programa orientado a coo rotinas, de modo que a iteração do agente ocorra de forma assíncrona com o ambiente (NORVIG; RUSSELL, 2013, p. 44).

O desafio fundamental da IA é escrever programas que produzam um comporta-mento racional (NORVIG; RUSSELL, 2013, p. 44). Tendo esse desafio como meta, diversos programas podem ser desenvolvidos, segue descritos quatro programas de agentes que incorporam os princípios subjacentes a quase todos os sistemas inteligentes.

2.1.7.1 Agentes reativos simples

As ações desse agente são efetuadas com base na percepção atual, sem se preocupar com o histórico de percepções. Na Figura 3, é apresentado um diagrama esquemático

(22)

Capítulo 2. Referencial Teórico 21

representando a estrutura do agente reativo simples juntamente ao ambiente. Seguindo o diagrama pode se verificar que o agente percebe o estado atual através de seus sensores, verifica a regras de condição-ação, define a ação a ser executada e retorna a ação ao ambiente (DARTEL et al., 2005).

Figura 3 – Diagrama esquemático de um agente reativo simples

Fonte: (NORVIG; RUSSELL, 2013, p. 47)

2.1.7.2 Agentes reativos baseados em modelos

De acordo com Russel e Norvig (NORVIG; RUSSELL, 2013, p. 48), agentes reativos baseados em modelos armazenam uma espécie de estado interno, esse estado interno nada mais é do que um modelo do ambiente de tarefa, o qual é projetado através do histórico de percepções, ações executadas e as mudanças que estas ações provocam no estado do ambiente. Dessa forma o agente monta um modelo do ambiente, podendo prever o que acontecerá após executar determinada função e obter pelo menos alguns dos aspectos não observados do estado atual. Sendo assim esse tipo de agente controla o estado atual do mundo usando um modelo interno, em seguida escolhe uma ação a ser executada. A Figura 4, ilustra o diagrama de um agente reativo baseado em modelo.

(23)

Capítulo 2. Referencial Teórico 22

Figura 4 – Diagrama de um agente reativo baseado em modelo

Fonte: (NORVIG; RUSSELL, 2013, p. 49)

2.1.7.3 Agentes baseados em objetivos

O agente baseado em objetivos pode ser utilizado juntamente com a estrutura do agente baseado em modelo, acrescentando a essa estrutura algumas informações sobre objetivos, os quais descrevem as situações desejáveis para cada ação a ser executada. Na Figura 5, é ilustrado através de um diagrama um agente baseado em modelos orientado para objetivos.

Figura 5 – Diagrama de um agente baseado em objetivos

Fonte: (NORVIG; RUSSELL, 2013, p. 50)

(24)

Capítulo 2. Referencial Teórico 23

atingir, usando a combinação destas informações para a tomada de decisão sobre qual ação executar, objetivando alcançar seus objetivos (NORVIG; RUSSELL, 2013, p. 50).

2.1.7.4 Agentes baseados em utilidade

Conforme Russel e Norvig (NORVIG; RUSSELL, 2013, p. 50), o agente baseado em utilidade, leva em consideração a performace do agente, ele possui uma função de utilidade que mapeia um estado ou uma sequencia de estados e descreve o grau de sucesso associado ao desempenho do agente.

Pode ser utilizado em conjunto com a estrutura do agente baseado em modelo, dessa forma, ele usa um modelo juntamente com a função utilidade que mede suas preferências entre os estados do mundo, com base nessa combinação o agente escolhe a ação que leva ao resultado mais próximo do esperado. Na Figura 6 é representado através de um diagrama, a estrutura de um agente baseado em modelo e orientado a utilidade.

Figura 6 – Diagrama de um agente baseado em modelo e orientado para utilidade

Fonte: (NORVIG; RUSSELL, 2013, p. 51)

2.1.7.5 Agentes com aprendizagem

Em agentes sem aprendizagem tudo o que o agente sabe e o que ele faz foi determi-nado pelo projetista, porém é desejável que esses agentes possam adquirir conhecimento e tomar suas próprias decisões. É nesse intuito que surgem os agentes com aprendizados, esses agentes podem atuar em ambientes totalmente desconhecidos e se tornar mais eficientes

(25)

Capítulo 2. Referencial Teórico 24

à medida que seu conhecimento aumenta. Na Figura 7 é ilustrado um modelo de agente com aprendizagem.

Figura 7 – Um modelo geral de agentes com aprendizagem

Fonte: (NORVIG; RUSSELL, 2013, p. 52)

A distinção mais importante desse agente se dá entre o elemento de aprendizado, responsável pelo aperfeiçoamento, e o elemento de desempenho, responsável pela seleção das ações externas (NORVIG; RUSSELL, 2013, p. 52).

2.2

Algoritmo Genético

Segundo Linden (LINDEN, 2012, p. 46), Algoritmo Genético (AG) é uma meta-heurística, a qual busca uma otimização global. Baseia-se nos mecanismos de seleção natural e da genética. Basicamente é gerada uma população com n indivíduos (cromossomos), cada indivíduo contêm informações que geram uma determinada solução para o problema analisado, enquanto não for encontrado um indivíduo que contenha uma solução satisfatória é feito o cruzamento entre os indivíduos. O cruzamento é realizado de dois em dois e geram outros dois indivíduos, o critério de avaliação para selecionar cada dois indivíduos que irão cruzar, é a sua aptidão , ou seja, quanto maior a aptidão, maiores as chances de ele ser selecionado mais vezes para cruzar, quanto maior a aptidão de um indivíduo, melhor é a solução para o problema. Na Figura 8, é mostrado o diagrama do funcionamento de um AG.

(26)

Capítulo 2. Referencial Teórico 25

Figura 8 – Esquema de um algoritmo genético

Fonte: (LINDEN, 2012, p. 64)

Os cruzamentos são feitos até gerar uma população de filhos com o mesmo tamanho da população dos pais, quando atingir essa meta os pais são descartados e os filhos passam a ser a nova população, os mesmos podem sofrer mutação de acordo com uma taxa predefinida. Após a etapa de mutação, cada novo individuo passa por uma avaliação onde é verificado se as informações contidas geram uma solução satisfatória para o problema, caso isso não ocorra, reinicia o processo de seleção e cruzamento. Assim segue até uma solução satisfatória ser encontrada ou alcance um número de interações predefinidas.

2.2.1

Reprodução

O processo de reprodução dos indivíduos é dividido em duas etapas: seleção, onde os indivíduos com maior aptidão possui maior probabilidade de ser selecionado. Esses indivíduos são utilizados para gerar uma nova população (PINHO et al., , p. 9); e crossover, etapa na qual é feito o cruzamento entre os dois indivíduos escolhidos, gerando outros dois indivíduos (filhos), os quais herdam as características dos pais.

(27)

Capítulo 2. Referencial Teórico 26

2.2.1.1 Tipos de seleção

Para realizar a seleção dos indivíduos para a reprodução, existem variados métodos, segue descritos abaixo três desses métodos.

• Método da roleta viciada: nesse método é criada uma roleta (virtual), na qual cada indivíduo recebe um espaço percentual, proporcional á sua aptidão, observando que a soma dos espaços não pode ultrapassar 100%. Depois roda-se a roleta e o indivíduo referente ao espaço em que ela parar, será o selecionado para a reprodução (LINDEN, 2012, p. 77).

• Método do torneio: esse método consistem em selecionar uma serie de indivíduos de forma aleatória, dentre esses indivíduos o que tiver maior aptidão é selecionado para ser um dos pais no processo de reprodução (LINDEN, 2012, p. 204).

• Método por ranking: nesse método os indivíduos são ordenados de acordo com o valor da aptidão, em seguida é utilizada uma função (denominada linear) em que cada indivíduo recebe um novo valor, levando em consideração sua posição no ranking. Esse novo valor será utilizado como critério de avaliação na hora da seleção. Segundo Linden (LINDEN, 2012, p. 212), esse método evita a convergência prematura e a dominância de um super indivíduo.

2.2.1.2 Tipos de crossover

O termo crossover em algoritmos genéticos se refere ao processo de cruzamento entre dois indivíduos, segue descrito abaixo os tipos de crossover: um ponto, dois pontos e uniforme, conforme Linden (LINDEN, 2012).

• Crossover de um ponto: esse método consiste em selecionar um ponto de corte entre dois genes do cromossomo (indivíduo), e na sequência separar os pais em duas partes, uma a esquerda do ponto e a outra a direita. Essas duas partes serão utilizada para gerar os filhos, de modo que o primeiro filho é composto da parte esquerda do primeiro indivíduo e da parte direita do segundo indivíduo, já o segundo filho é composto pelas partes restantes dos dois indivíduos.

• Crossover de dois pontos: semelhante ao crossover de um ponto, porém consiste em selecionar dois pontos de corte, dividindo o cromossomo em três partes, direita, centro e esquerda, de modo que o primeiro filho será composto da parte esquerda e a parte da direita do primeiro indivíduo e da parte central do segundo indivíduo, já o segundo filho é composto pelas partes restantes dos dois indivíduos.

• Crossover uniforme: esse método consiste em gerar um número (zero ou um), de modo aleatório para cada gene do cromossomo (indivíduo). Para realizar o crossover

(28)

Capítulo 2. Referencial Teórico 27

pode ser adotado o seguinte método: gerar um vetor com o mesmo tamanho do cromossomo e preencher o mesmo com valores zero e um de forma aleatória, com base nesse vetor seleciona-se os genes de cada cromossomo para formar os novos indivíduos, de modo que o primeiro filho receba os genes do primeiro indivíduo que correspondam às posições em que o numero sorteado tenha sido um, e receba do segundo pai os genes correspondentes às posições em que o numero sorteado tenha sido zero. Já o segundo filho será composto pelos genes restantes.

2.3

Redes Neurais Artificiais

Redes neurais artificiais são modelos computacionais inspirados no sistema nervoso de seres vivos, possuem capacidade de memorização e aprendizado e podem ser definidas como um conjunto de unidades de processamento, caracterizadas por neurônios artifici-ais, os quais são interligados(KOVÁCS, 2002, 40). Entre suas principais características pode-se destacar: adaptação por experiência, capacidade de aprendizado, habilidade de generalização, organização de dados, tolerância a falhas, armazenamento distribuído, e facilidade de prototipagem (SILVA; SPATTI; FLAUZINO, 2010, p. 24).

Entre as aplicabilidades das redes neurais artificiais pode se destacar: aproximador universal de funções, controle de processos, sistemas de previsão e otimização de sistemas (SILVA; SPATTI; FLAUZINO, 2010, p. 27).

A primeira publicação relacionada à neuro-computação data de 1943, tendo sido elaborado por McCulloch e Pitts em um artigo no qual os autores realizaram o primeiro modelamento matemático inspirado no neurônio biológico, resultando dai a primeira concepção de neurônio artificial (MCCULLOCH; PITTS, 1943, p. 115).

2.3.1

Neurônio biológico

O neurônio biológico é uma célula elementar do sistema nervoso cerebral, seu papel é conduzir impulsos (estímulos elétricos advindos de reações físico-químicas) sob determinadas condições de operação. Tal elemento biológico pode ser divido em três partes principais: dendritos, corpo celular e axônio (SILVA; SPATTI; FLAUZINO, 2010, p. 27). A função dos dendritos consiste em captar de forma continua os estímulos vindos de diversos neurônios, enquanto o corpo celular (composto por núcleo, mitocôndria, centríolo, lisossomo e outros) é incumbido de processar todas as informações vindas dos dendritos e gerar um potencial de ativação que ira permitir ou não que o neurônio dispare um impulso elétrico ao longo de seu axônio. Já o axônio tem como função conduzir os impulsos elétricos para outros neurônios. Ao término do prolongamento do axônio encontram-se as sinapses que viabilizam a transferência dos impulsos elétricos do axônio de um neurônio para os dendritos de outros. Na Figura 9 é ilustrado a estrutura de um neurônio biológico.

(29)

Capítulo 2. Referencial Teórico 28

Figura 9 – Neurônio biológico

Fonte: (SILVA; SPATTI; FLAUZINO, 2010, p. 29)

2.3.2

Neurônio artificial

As redes neurais artificiais foram desenvolvidas a partir de modelos do sistema nervoso biológicos, as unidades processadoras dessas redes são os neurônios artificiais, estes são modelos bem simplificados dos neurônios biológicos, procurando englobar as principais características de uma rede neural biológica que é o paralelismo e a alta conectividade, conforme afirma (SILVA; SPATTI; FLAUZINO, 2010, p. 33). Uma estrutura básica de um neurônio artificial é ilustrada na Figura 10.

Figura 10 – Neurônio artificial

Fonte: (SILVA; SPATTI; FLAUZINO, 2010, p. 34)

Analisando a Figura 10, verifica se que o neurônio artificial é composto por sete elementos básicos, os mesmos são descritos a seguir, segundo (SILVA; SPATTI; FLAUZINO, 2010, p. 34).

a) Sinais de entrada: {x1,x2,...,xn}. São os sinais recebidos do meio externo e que representam os valores assumidos pelas variáveis de uma determinada aplicação.

(30)

Capítulo 2. Referencial Teórico 29

b) Pesos sinápticos {w1,w2,...,wn}. São valores utilizados para ponderar as variáveis de entrada, permitindo quantificar suas relevâncias em relação à funcionalidade do respectivo neurônio.

c) Combinador linear:{ Σ }. É uma função que tem por objetivo gerar um potencial de ativação, sendo que este potencial é gerado através do somatório dos produtos das entradas com seus respectivos pesos sinápticos.

d) Limiar de ativação{ θ }.Também conhecido por bias, é uma variável agregada ao combinador linear, a qual especifica qual será o patamar apropriado para o resultado do combinador linear, de modo a gerar um valor de disparo em direção à saída do neurônio.

e) Potencial de ativação {u}. É o resultado gerado pela diferença do valor produzido pelo combinador linear e o limiar de ativação.

f) Função de ativação {g}. É uma função que tem por objetivo limitar os valores de saída de um neurônio dentro de um determinado intervalo. Existem diversas funções de ativação, as mesmas podem ser caracterizadas e divididas em dois grupos principais: parcialmente diferenciáveis (função degrau, função rampa simétrica, etc.) e funções totalmente diferenciáveis (função logística, função tangente hiperbólica, etc.).

g) Sinal de saída {y}. É o valor final, é a saída produzida pelo neurônio, a qual pode ser utilizada como entrada para outros neurônios ou realimentar o mesmo.

2.3.3

Perceptron

De acordo com (SILVA; SPATTI; FLAUZINO, 2010, p. 58), o perceptron é a forma mais simples de configuração de uma rede neural. Atua como um classificador de padrão, cuja função é dividir classes que sejam linearmente separáveis, sua estrutura é constituída de apenas uma camada e contém um único neurônio artificial, nessa estrutura, o fluxo de informações é sempre da camada de entrada em direção à camada de saída, sem haver qualquer tipo de realimentação de valores produzidos pela mesma. Na Figura 11, é ilustrada a estrutura de uma rede perceptron, constituída de n entradas representativas do problema a ser mapeado.

(31)

Capítulo 2. Referencial Teórico 30

Figura 11 – Ilustração da Rede Perceptron

Fonte: (SILVA; SPATTI; FLAUZINO, 2010, p. 58)

Representando em termos matemáticos a rede perceptron, pode-se transcrever a ilustração da Figura 11 através da Equação 2.1:

  u =Pn i=1xi· xi− θ y = g(u)   (2.1)

Para que a rede Perceptron esteja apta a fazer as respectivas classificações, é necessário que ela passe por um processo de treinamento. Esse treinamento é feito de forma supervisionada, ou seja, para cada conjunto de amostras de entradas, possui um valor desejado para a saída, dessa forma é feito o ajuste dos pesos sinápticos {w}, até que as saídas reais e as saída desejadas sejam idênticas.

2.3.4

Redes neurais recorrentes de Hopfield

As redes neurais recorrentes de Hopfield são constituídas de uma única camada, em que todos os neurônios são interligados, de forma que a saída de cada neurônio alimentam as entradas de todos os outros neurônios e a própria (SILVA; SPATTI; FLAUZINO, 2010, p. 201).

Segundo (SILVA; SPATTI; FLAUZINO, 2010, p. 199), as redes recorrentes de Hopfield destacam-se por seu comportamento tipicamente dinâmico, capacidade de memo-rizar relacionamentos, possibilidade de armazenamento de informações e sua facilidade de implementação em hardware analógico. Entre as principais áreas de aplicação deste modelo de rede neural estão: otimização de sistemas, programação dinâmica, programação linear, otimização não linear restrita e otimização combinatorial. Na Figura 12, é ilustra

(32)

Capítulo 2. Referencial Teórico 31

a estrutura de uma rede neural de Hopfield convencional. O operador z-1 representa o atraso temporal de uma unidade.

Figura 12 – Rede neural de Hopfield convencional

Fonte: (SILVA; SPATTI; FLAUZINO, 2010, p. 201)

De forma simplificada, o comportamento de cada neurônio nesse modelo de rede pode ser representado conforme a Equação 2.2.

  uj(t) = −η · uj(t) +Pni=1wji· vi(t) + ibj, onde j = 1, ..., n vj(t) = g(uj(t))   (2.2) Onde:

uj(t): é o estado interno do j-ésimo neurônio, com uj(t) = du/dt;

vj(t): é a saída do j-ésimo neurônio;

wji: é o valor do peso sináptico conectando o j-ésimo neurônio ao i-ésimo neurônio;

i.bj: é o limiar (bias) aplicada ao j-ésimo neurônio;

g(.): é a uma função de ativação, monótona crescente, que limita a saída de cada neurônio

em um intervalo predefinido;

(33)

Capítulo 2. Referencial Teórico 32

xj(t): é a entrada do j-ésimo neurônio.

Baseado nas expressões citadas acima, o comportamento de uma rede neural recorrente pode ser sintetizadas pelos seguintes passos: aplicar um conjunto de sinais{x} nas entradas, obter o vetor de saída{v} e realimentar as entradas com as saídas {x ← v}, repetindo esses passos até que o vetor de saídas {v} permaneça estável entre iterações sucessivas , o que significa que a rede convergiu para a resposta final.

2.4

Long Short Term Memory (LSTM)

As redes neurais recorrentes convencionais, utilizam o conceito de memória de curto prazo, isto compromete sua eficiência para predições de eventos ocorridos em intervalos de grande prazo. Este problema ocorre porque a influência de uma entrada na camada intermediária, e consequentemente, seus impactos na camada de saída crescem exponencialmente ou são dissipados (MACHADO, 2011, p. 21).

Este problema é conhecido como dissipação gradiente (vanishing gradient), e dificulta o aprendizado de uma rede em tarefas que contenham mais de dez atrasos de tempo (timesteps) (GRAVES, 2012, p. 31). Na Figura 13 é possível observar a dissipação do gradiente com o tempo.

Figura 13 – Problema de dissipação gradiente convencional

Fonte: (MACHADO, 2011, p. 21)

Á medida que novas entradas são recebidas, a ativação da camada intermediaria é sobrescrita e a rede perde as informações recebidas pela primeira entrada. Para solucionar esse problema, foi proposta a rede LSTM (HOCHREITER; SCHMIDHUBER, 1997, p. 1735).

A arquitetura da rede LSTM é composta por um conjunto de sub-redes conectadas recorrentemente. Essas sub-redes são conhecidas como blocos de memória. Cada bloco possui uma ou mais células de memória autoconectadas, uma unidade de entrada e três unidades de multiplicação que definem a operação que deve ser realizada. Tais operações controlam a porta de entrada, a porta de saída e a porta de limpeza da memória do bloco

(34)

Capítulo 2. Referencial Teórico 33

(MACHADO, 2011, p. 22). Na Figura 14, é representado a estrutura de um bloco de memória da arquitetura LSTM.

Figura 14 – Estrutura de um bloco de memória da arquitetura LSTM

Fonte: (MACHADO, 2011, p. 23)

As unidades (entrada da rede, e as portas de entrada, esquecimento e saída), são unidades sigmóide (Y = S(P

wi.xi), em que o S é uma função de esmagamento, tal como a função logística). Suas funcionalidades são:

- Entrada da rede: calcula um valor que é condicionalmente alimentado como um valor de

entrada para a memória do bloco.

- Porta de entrada: gera um valor que irá definir se o valor fornecido pela entrada da rede

vai ser agregado ao valor existente na memoria, ou descartado.

- Porta de esquecimento: gera um valor que definirá se a memoria será limpa ou não. - Porta de saída: gera um valor que irá definir se o valor que está na memória vai ser

propagado para rede ou não.

Na Figura 15, é ilustrado a forma como o gradiente de informação é preservado em uma rede LSTM.

Para os blocos da camada intermediária, os círculos representam portas abertas e os traços portas fechadas. A porta em baixo do nó é a porta de entrada, a superior é a porta de saída e a lateral é a porta de esquecimento.

(35)

Capítulo 2. Referencial Teórico 34

Figura 15 – Gradiente de informação sendo preservado em uma rede LSTM

Fonte: (MACHADO, 2011, p. 23)

Quando a porta de esquecimento está aberta, a informação é preservada. Do mesmo modo, quando a porta de saída está aberta a informação da memória é propagada, e por fim quando a porta de entrada está aberta a nova informação é agregada a memória atual.

2.5

Ambiente Presa-Predador (Modificado)

O problema abordado neste trabalho é uma versão modificada do tradicional Presa-Predador. Este problema é uma forma simplificada do modelo matemático de Lotka-Volterra desenvolvido em 1925, o qual trata-se do primeiro modelo que tenta compreender a relação entre duas espécies (LÜTZ, 2011, p. 6). O ambiente presa-predador modelado e implementado neste trabalho é composto por:

- um predador, - uma presa,

- dois arbustos venosos e, - um arbusto não venoso

O objetivo do predador neste ambiente é capturar a presa sem encostar nos arbustos venosos. Ao iniciar o jogo, os arbustos venosos são posicionados nas posições [3,3] e [7,5] da matriz que representa o ambiente, a presa é posicionada na posição [5,5], o predador é inicializado na posição [0,0] da matriz-ambiente, e o arbusto não-venoso é posicionado de forma aleatória em uma posição que esteja vazia. Os movimentos da presa e do predador são intercalados, a cada ação executada pelo predador, a presa executa uma ação também.

Os movimentos da presa são todos realizados buscando se posicionar junto ao arbusto não venoso, com o objetivo de se esconder do predador. O predador recebe as informações da localização da presa desde a inicialização do jogo até o momento que ela

(36)

Capítulo 2. Referencial Teórico 35

se esconde, a partir deste instante a única informação recebida é o posicionamento dos três arbustos, porém sem o conhecimento de suas características. Uma ilustração deste ambiente é apresentado na Figura 16

Figura 16 – Ilustração do modelo presa-predador(modificado) .

Fonte: Prório autor

Conforme as propriedades de ambiente de tarefas descritas na subseção 2.1.6, o problema abordado neste trabalho pode ser classificado como: parcialmente observável, determinístico, sequencial, estático, discreto, e de único agente. Seguem descritas as especificações do ambiente de tarefa para esse jogo, seguindo alguns conceitos básicos, tais como: medida de desempenho, atuadores e sensores, descritos na subseção 2.1.5

• Ambiente de tarefa: o problema presa-predador modificado consiste em um ambiente representado por uma matriz de ordem dez. Este ambiente é constituído por dois arbustos venosos, um arbusto não venoso, uma presa e um predador.

• Medida de desempenho: o predador é pontuado positivamente pela captura ou pela proximidade que o mesmo se encontra em relação à presa no momento em que o jogo é encerrado. Sendo que ao capturar a presa recebe cem pontos, e a cada passo distante da presa é descontado cinco pontos. Caso o predador encoste em um arbusto venoso a pontuação obtida é dividida por dois.

• Atuadores: o predador possui quatro ações possíveis para interagir no meio ambiente, são elas: se movimentar para frente, para trás, para esquerda e para a direita. • Sensores: as percepções são passadas ao agente em forma de lista a cada

altera-ção ocorrida, esta lista contém as informações referente as posições (x,y) de cada componente do ambiente (arbustos, presa e predador).

(37)

36

3 Modelagem e Implementação

Neste capítulo é apresentado a estrutura da unidade de memória proposta para este trabalho, é apresentado também a estrutura da rede neural recorrente convencional com os blocos de memória adicionados. Por fim é exemplificado o processo de aprendizado desta nova estrutura, o qual é realizado através da meta-heurística algoritmo genético.

3.1

Estrutura da unidade de memória

A unidade de memória modelada neste trabalho, tem por objetivo amenizar a dissipação gradiente da informação, conforme apresentado na seção 2.4. Para modelagem da estrutura de memória proposta neste trabalho, buscou-se realizar um modelo simplificado do bloco de memória LSTM, objetivando manter a capacidade de memorização, porém, com um número reduzido de nós de decisões. A estrutura desta unidade de memória ficou estruturada conforme segue descrito.

• Uma unidade de entrada: composta por uma função sigmoide que é aplicada ao somatório das entradas e seus respectivos pesos. Esta unidade tem por objetivo fornecer a informação que será armazenada. A expressão matemática que representa esta unidade é dada por: Y = S(Pn

i=0wn+i.xi).

• Uma unidade de decisão: composta por uma função sinal, a qual é aplicada ao somatório das entradas e seus respectivos pesos. Esta unidade tem a função de ativar ou não a porta de entrada, de modo que toda vez que for ativada, o valor fornecido pela unidade de entrada será armazenado. A expressão matemática que representa esta unidade é dada por: Y = S(Pn

i=0wi.xi)

• Uma unidade de armazenamento: esta se encarrega de armazenar o valor atual até que um novo valor seja fornecido.

Na Figura 17 é ilustrado a estrutura da unidade de memória modelada para este trabalho.

(38)

Capítulo 3. Modelagem e Implementação 37

Figura 17 – Estrutura da unidade de memória .

Fonte: Prório autor

3.2

Estrutura da rede neural proposta para o agente

Para definir a estrutura da rede neural, foi utilizada um versão da rede de Hopfield (subseção 2.3.4), e adicionado à mesma as unidades de memória. Esta rede foi modelada com uma estrutura dinâmica, de modo que possa ser definido pelo usuário a quantidade de neurônios e unidade de memórias, podendo os mesmos possuírem quantidades diferentes, ou ser composta apenas por neurônios ou por unidades de memória. Uma representação do modelo proposto para a rede neural é ilustrada na Figura 18.

(39)

Capítulo 3. Modelagem e Implementação 38

Figura 18 – Estrutura da rede neural recorrente com unidades de memória .

Fonte: Prório autor

No modelo apresentado na Figura 18, os neurônios são representados pelos círculos, e as unidades de memórias são representadas pelos quadrados com cantos arredondados.

3.3

Processo de aprendizagem do agente

O agente inteligente implementado neste projeto foi estruturado através de uma rede neural recorrente. O número de neurônios e de unidade de memória não foi fixado, podendo assim, variar os mesmos, visando encontrar uma combinação que proporcione uma convergência mais rápida aos resultados desejados.

Os pesos sinápticos utilizados pela rede neural são fornecidos pelo algoritmo genético, o qual gera uma população de indivíduos, onde cada indivíduo é formado por um vetor que

(40)

Capítulo 3. Modelagem e Implementação 39

contém uma combinação de pesos sinápticos (números reais), de acordo com o tamanho da rede neural.

O processo de otimização ocorre da seguinte maneira: com cada indivíduo da população do algoritmo genético, são definidos os pesos na rede neural, configurando assim a inteligência do agente a ser testado. Para cada um dos agentes é inicializado o jogo Presa-Predador (modificado) de modo que o jogo é finalizado se o agente encostar em um arbusto venoso, encontrar a presa ou atingir o número limite de iterações.

Para cada agente é realizado 100 execuções com o jogo, visando obter uma melhor precisão do desempenho, sendo que cada execução se refere a um novo jogo, onde a posição do arbusto não-venoso é definida de forma aleatória. Ao final das 100 execuções é retornado para o indivíduo do algoritmo genético a pontuação média obtida. Essa pontuação será utilizada como base para definir a eficiência deste indivíduo, sendo esse valor atribuído a sua variável aptidão. No passo seguinte o algoritmo genético se encarrega da otimização dos pesos, seguindo os seus critérios de evolução conforme apresentado na seção 2.2.

3.4

Considerações sobre a modelagem e implementação

Neste capítulo foi modelado e apresentado a estrutura da unidade de memória proposta para este trabalho. Foi descrito a nova estrutura da RNA recorrente com as unidades de memórias já adicionadas e explanado a forma como ocorre o processo de evolução através da meta-heurística algoritmo genético. As implementações foram realizadas em linguagem de programação C++, utilizando o ambiente de desenvolvimento Eclipse Luna SR1(4.4.1). O framework de AG e o framework de RNA, foram implementados em módulos separados, da mesma forma foi realizada a implementação da versão modificada do problema presa predador. Na sequência, todos os módulos foram integrados em um único sistema, o qual oferece as opções de configurações de todos os parâmetros dos módulos implementados e através do qual pode ser realizado os treinamentos e os testes.

(41)

40

4 Treinamento, Testes e Resultados

Neste capítulo são apresentados os parâmetros utilizados na configuração da meta-heurística do algoritmo genético e a definição da estrutura da rede neural (quantidade de neurônios e memórias). É apresentado também um conjunto de resultados, referente as estruturas que obtiveram melhor tempo de convergência e desempenho. Por fim é apresen-tado um comparativo entre a melhor estrutura de rede neural convencional encontrada e uma rede neural de mesmo tamanho com uma unidade de memória adicional.

4.1

Treinamento

Na fase de evolução da rede neural, buscou-se primeiramente encontrar as quantida-des de neurônios que representassem as estruturas com melhor convergência e quantida-desempenho. Nesta fase, após alguns testes alterando a quantidade de neurônios pode-se perceber que a RNA recorrente convencional com seis neurônios era a mais eficiente. Ao aumentar o número de neurônios nesta estrutura, aumentava também o espaço de busca por soluções, pois era maior o número de pesos sinápticos que precisariam ser ajustados, desta forma a convergência passava a ser mais lenta. Em seguida deu-se início a fase de ajuste dos parâmetros do algoritmo genético. Primeiramente foi definido a taxa de mutação em 5%, para proporcionar pequenas alterações nas informações dos indivíduos, e a taxa de elitismo em 2%, buscando preservar alguns dos melhores indivíduos para fazer parte da geração seguinte. O tamanho da população foi fixado em 500 indivíduos, pode se perceber que com esse número de indivíduos, já era possível obter boas convergências, e ao definir valores maiores como por exemplo 1000 ou 2000 indivíduos, o processo de treinamento se tornava lento e não trazia nenhum ganho significativo para o processo de evolução. Para o processo de seleção foi definido o tipo de seleção torneio, e o cruzamento foi realizado com o tipo de cruzamento simples, conforme apresentado na seção 2.2. O número de gerações ficou definido em 50, este valor foi fixado, devido ao fato de que as estruturas convergiam pouco antes de 50 gerações, e após, apresentavam apenas pequenas oscilações, tanto positivas quanto negativas.

As configurações definidas para o AG, foram mantidas para as evoluções de todas as estruturas de redes neurais, as quais serão exibidas nesta seção.

Após identificar uma estrutura com boa convergência (seis neurônios), foram realizados alguns treinamentos com estruturas contendo dimensões bem aproximadas, para verificar se em alguma dessas conseguiria uma convergência melhor. Através destes testes pode ser comprovar que, entre as estruturas de RNA recorrente convencional, a quantidade de seis neurônios representa a melhor estrutura para o ambiente que está sendo

(42)

Capítulo 4. Treinamento, Testes e Resultados 41

abordado. Na Figura 19 é apresentado um gráfico de evolução das RNAs com cinco, seis e sete neurônios.

Figura 19 – Gráfico de evolução das RNAs recorrentes

Fonte: Prório autor

Tendo em vista que a RNA recorrente convencional com seis neurônios obteve a melhor convergência, foi realizado alguns treinamentos com essa estrutura adicionando unidades de memória, (a qual foi proposta neste trabalho), tendo por objetivo verificar seus efeitos no aprendizado desta rede. Após alguns treinamentos pode se perceber que ao adicionar uma memória a estrutura convencional, havia uma melhora na convergência desta rede, porém ao adicionar duas ou mais memórias a essa estrutura, o seu grau de convergência era reduzido. Na Figura 20 é apresentado um gráfico comparativo entre as curvas de aprendizado da RNA recorrente composta por seis neurônios (com memória e sem memória).

Figura 20 – Comparativo entre RNA recorrente convencional e RNA recorrente com uma unidade de memória

(43)

Capítulo 4. Treinamento, Testes e Resultados 42

Através da análise do gráfico apresentado na Figura 20, percebe-se que a RNA recorrente com memória proporcionou um início de aprendizado mais eficiente e por fim se manteve por mais tempo com convergia maior que a RNA recorrente convencional.

Ao analisar o gráfico da Figura 19, nota-se que a estrutura da RNA com cinco neurônios teve uma convergência próxima da estrutura com seis neurônios, por este motivo foram realizado alguns treinamentos adicionais, incluindo a esta estrutura algumas unidades de memória. Na Figura 21, é apresentado o gráfico das curvas de aprendizado resultante destes treinamentos adicionais da RNA com cinco neurônios.

Figura 21 – Comparativo entre RNA recorrente convencional e RNA recorrente com uma unidade de memória

Fonte: Prório autor

Ao adicionar unidades de memória à estrutura da RNA recorrente com cinco neurônios, pode-se perceber que os efeitos na curva de aprendizado foram semelhantes ao ocorrido na estrutura da RNA recorrente com seis neurônios. A adição de memórias nesta estrutura proporcionou uma melhora na curva de aprendizado, porém a RNA recorrente com seis neurônios e uma unidade de memória, se manteve mais eficiente em sua convergência.

4.2

Testes e Resultados

Após a realização dos treinamentos e definidos as melhores estruturas, foram realizados os testes e coleta dos resultados. Na fase de teste foram realizados 100.000 execuções para cada agente, sendo que cada nova execução, era gerado um novo jogo de modo que, os 2 arbustos venosos eram posicionados nas coordenadas [3,3] e [7,5] da matriz ambiente, a presa era posicionada na coordenada [5,5], o predador inicializado na coordenada [0,0], e o arbusto não-venoso posicionado de forma aleatória em uma das coordenadas que estivesse livre. Na Tabela 2, são apresentados em porcentagem os resultados dos testes.

(44)

Capítulo 4. Treinamento, Testes e Resultados 43

Tabela 2 – Desempenho alcançado pelas estruturas de RNAs após os treinamentos.

Estrutura RNA Capturou a presa Enconstou no

ar-busto venoso Limite de iterações atingido 5 neurônios 86,45% 8,78% 4,77% 6 neurônios 89,10% 8,76% 2,14% 7 neurônios 59,63% 5,49 34,88% 5 neurônios, 1 memória 89.50% 10.50% 0% 5 neurônios, 2 memória 61.74% 11.37% 26.89% 6 neurônios, 1 memória 90,65% 9,35 % 0% 6 neurônios, 2 memória 67.76% 10.78% 21.46%

Fonte: Prório autor

Através de uma análise da Tabela 2, pode-se perceber que entre as RNA recorrentes convencionais, a que obteve melhor desempenho após o treinamento feito através de 50 gerações, foi a rede com 6 neurônios. A estrutura com 7 neurônios capturou a presa 29,47% menos que a estrutura com seis neurônios, isto pode ser justificado através do aumento do espaço de busca das soluções, pois o mesmo torna a convergência mais lenta, de modo que em 50 gerações esta estrutura convergiu para um valor inferior à convergência da estrutura de 6 neurônios.

Ao adicionar uma unidade de memória a RNA recorrente com 6 neurônios, foi possível elevar em 1,55% o percentual de captura da presa. Na Figura 22 é apresentado um gráfico comparativo do desempenho destas duas estruturas.

Figura 22 – Comparativo entre RNA recorrente convencional e RNA recorrente com uma unidade de memória

Fonte: Prório autor

Ao analisar o gráfico pode-se perceber que a estrutura com memória, além de proporcionar melhor desempenho na captura da presa, em nenhum momento foi atingido o limite de passos estipulado para este ambiente, o qual havia sido fixado em cem iterações.

(45)

44

5 Conclusão

O foco da pesquisa realizada durante este trabalho foi o desenvolvimento de uma unidade de memória para ser adicionada a estrutura de uma RNA recorrente, visando agregar conhecimentos a esta estrutura, facilitar seu aprendizado e melhorar seu desempenho em ambientes parcialmente observáveis.

Em primeiro momento foi realizado uma análise sobre a arquitetura RNA recor-rente convencional e seus métodos de aprendizado, bem como um estudo sobre agentes inteligentes, ambientes de tarefas, métodos evolutivos de aprendizagem AG e blocos de memória LSTM. Em um segundo momento, o enfoque foi na modelagem e implementação da unidade de memória, a qual teve por base o bloco de memória LSTM, porém com menor número de nós de decisão, proporcionando desta forma, menor custo de processamento. Por fim foram realizados alguns treinamentos e testes com a RNA recorrente convencional e com a RNA recorrente contendo a unidade de memória que foi modelada neste trabalho. O treinamento das duas estruturas foram realizadas utilizando o ambiente presa-predador modificado.

No processo de treinamento, foi observado que a RNA recorrente com unidades de memória pode aprender de maneira mais eficiente, obtendo uma convergência melhor e mais rápida.

Na fase de testes pode-se perceber que ao adicionar a unidade de memória proposta neste trabalho à estrutura de uma RNA recorrente convencional a mesma melhorou o desempenho desta rede no ambiente ao qual foi aplicado.

Também foi observado que o número de neurônios convencionais definidos para compor a estrutura da RNA, afeta diretamente o seu desempenho, do mesmo modo, a quantidade de unidades de memória, deve ser ajustada de acordo com o problema que esta sendo abordado e a dimensão da RNA.

Como trabalhos futuros, pretende-se estudar e analisar o comportamento da unidade de memória desenvolvida neste trabalho aplicada a RNA recorrentes de diferentes dimensões com a finalidade de atuar em outros ambientes parcialmente observáveis visando firmar o seu grau de eficiência de modo geral.

(46)

45

Referências

DAI, P.; AUGUSTIN, G. S.; INFORMATIONSTECHNIK, F. Virtual Spaces:

VR Projection System Technologies and Applications. 1997. Disponível em:

<http://iem.at/~eckel/publications/eckel97c/Tutorial.V4.html>. Citado na página 16. DARTEL, M. V. et al. Reactive agents and perceptual ambiguity. Adaptive Behavior, SAGE Publications, v. 13, n. 3, p. 227–242, 2005. Citado na página 21.

GRAVES, A. Supervised sequence labelling with recurrent neural networks. [S.l.]: Springer, 2012. Citado na página 32.

HOCHREITER, S.; SCHMIDHUBER, J. Long short-term memory. Neural computation, MIT Press, v. 9, n. 8, p. 1735–1780, 1997. Citado na página 32.

KOVÁCS, Z. L. Redes neurais artificiais. [S.l.]: Editora Livraria da Fisica, 2002. Citado na página 27.

LINDEN, R. Algoritmos Geneticos, 2a edicao. [S.l.]: Brasport, 2012. Citado 3 vezes nas páginas 24, 25 e 26.

LÜTZ, A. F. Competição e Coexistência em Populações Biológicas. Tese (Doutorado) — Universidade Federal do Rio Grande do Sul, 2011. Citado na página 34.

MACHADO, S. C. S. Reconhecimento Offline de Escrita Cursiva usando RedesNeurais

Recorrentes Multidimensionais. 2011. Citado 3 vezes nas páginas 32, 33 e 34.

MCCULLOCH, W. S.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, Springer, v. 5, n. 4, p. 115–133, 1943. Citado na página 27.

NORVIG, P.; RUSSELL, S. Inteligência Artificial, 3a Edição. [S.l.]: Elsevier Brasil, 2013. Citado 9 vezes nas páginas 16, 17, 18, 19, 20, 21, 22, 23 e 24.

PINHO, A. F. de et al. Algoritmos genéticos: Fundamentos e aplicações. Citado na página 25.

SILVA, I. D.; SPATTI, D.; FLAUZINO, R. Redes Neurais Artificiais para Engenharia

e Ciências Aplicadas - Curso Prático. Rio de Janeiro: [s.n.], 2010. Citado 5 vezes nas

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

Contudo, sendo um campo de pesquisa e de atuação muito específico e novo no Brasil, ainda existe uma série de dificuldades para a eleição de parâmetros de conservação

da quem praticasse tais assaltos às igrejas e mosteiros ou outros bens da Igreja, 29 medida que foi igualmente ineficaz, como decorre das deliberações tomadas por D. João I, quan-

(2013 B) avaliaram a microbiota bucal de oito pacientes submetidos à radioterapia na região de cabeça e pescoço através de pirosequenciamento e observaram alterações na

Apesar da longa distância dos grandes centros urbanos do país, Bonito destaca- se, regionalmente, como uma área promissora dentro do Estado de Mato Grosso do Sul. Bonito,

O pagamento das taxas relativas à emissão de lavarás ou comunicação prévia previstas nos artigos 3.º, 9.º a 10.º e 23.º a 24.º da (TU) pode, por deliberação da

A partir dos fatores citados como predisponentes e determinantes criam-se perturbações hemodinâmicas locais que podem desencadear os fatores condicionantes,

Em estudos mais aprofundados, tem-se a análise dinâmica não linear geométrica de estruturas laminadas modeladas com elementos tridimensionais de barra considerando o efeito