3 T ´ ECNICAS DE INTELIG ˆ ENCIA ARTIFICIAL
4.4.3 Desenvolvimento Self-Organizing Maps
Esta parte da aplicac¸˜ao possui todos os elementos de um Self-Organizing Map, introduzidos na Sec¸˜ao 3.3, divididos em v´arios arquivos. A aplicac¸˜ao tamb´em acessa o mesmo banco de dados utilizado nas outras partes (tanto de L´ogica Fuzzy quanto no Sistema Especialista).
Al´em destes itens, tamb´em foram inclu´ıdos mais dois itens em que os dados s˜ao trabalhados e a renderizac¸˜ao da imagem dos grupos formados ´e apresentada.
Na Figura 4.19, est´a o diagrama de componentes criado para dar base `a criac¸˜ao do aplicativo de Self-Organizing Maps.
Nas pr´oximas sec¸˜oes ser˜ao explicitadas como cada parte deste aplicativo descrita acima funciona.
Figura 4.19: Diagrama de Componentes do aplicativo de Self-Organizing Maps Neurˆonio
Esta classe contem todas as caracter´ısticas de um neurˆonio apresentadas na sec¸˜ao 3.3. Ela armazena tanto o valor do peso que o neurˆonio vai possuir na rede quanto a sua posic¸˜ao, definida pelas coordenadas X e Y.
Al´em das func¸˜oes para definir ou verificar qual ´e a posic¸˜ao e o peso atual do neurˆonio, mais duas func¸˜oes foram atribu´ıdas a esta classe: A primeira atualiza os pesos sin´apticos do neurˆonio, de acordo com a taxa de aprendizagem e da func¸˜ao de vizinhanc¸a definidas, conforme apresentado na equac¸˜ao 3.10. J´a a segunda func¸˜ao retorna qual ´e a distˆancia do neurˆonio em quest˜ao at´e outro neurˆonio dentro da mesma rede.
Rede de Neurˆonios
A rede de neurˆonios ´e representada por esta classe que basicamente serve como uma grande matriz que armazena os neurˆonios que ser˜ao utilizados para a posterior clusterizac¸˜ao.
cada uma das coordenadas da rede conter´a um neurˆonio. Portanto, se uma rede for definida com largura 30 e altura 50, ela poder´a armazenar 150 neurˆonios.
Outra func¸˜ao pertinente `a esta classe ´e a definic¸˜ao do Neurˆonio Vencedor, conforme ex- plicitado na sec¸˜ao 3.3, com a equac¸˜ao 3.9. Na primeira interac¸˜ao ´e assumido que o neurˆonio vencedor ´e aquele que est´a na posic¸˜ao X = 0 e Y = 0, entretanto isto s´o ocorre para que possa existir um local definido para se iniciar o processo. A partir da segunda interac¸˜ao, ´e a melhor distˆancia entre um neurˆonio e outro que define este atributo.
Treinador
Esta ´e a classe mais complexa do aplicativo de Self-Organizing Maps. Aqui toda a rede de neurˆonios ´e treinada por meio da taxa de aprendizagem pr´e-definida e toda a malha dada como entrada ´e modificada para a sa´ıda em cada interac¸˜ao.
S˜ao criadas v´arias threads, onde cada uma representa um treinamento de neurˆonio. Desta forma, eles podem ser realizados em paralelo, aumentando assim a performance do algoritmo e dinamizando a organizac¸˜ao da clusterizac¸˜ao que est´a em curso. Para cada thread criada, tamb´em ´e definido uma indicac¸˜ao se o treinamento que ela representa est´a ativo ou inativo.
Nesta classe tamb´em ´e definido o grau de participac¸˜ao, por meio de uma func¸˜ao que repre- senta a equac¸˜ao 3.7. Assim, para cada treinamento em curso, a largura efetiva (outro nome dado para o grau de participac¸˜ao) ´e definido, para que ent˜ao possa ser calculado qual ´e o neurˆonio vencedor de acordo com a entrada dada, ajustando assim a vizinhanc¸a para tal.
Este ajuste de vizinhanc¸a tamb´em est´a contido em uma das func¸˜oes desta classe, onde a equac¸˜ao 3.6 ´e implementada para sua utilizac¸˜ao no treinamento.
Vetor Euclidiano
Esta classe foi criada com o objetivo de auxiliar a definic¸˜ao dos pesos e do c´alculo da distˆancia entre dois neurˆonios que est˜ao dentro de uma rede que sera clusterizada.
Ela foi criada a partir de um vetor normal, portanto possui func¸˜oes pertinentes a este tipo de objeto, como, por exemplo, inclus˜ao e remoc¸˜ao de dados, verificac¸˜ao de um objeto espec´ıfico armazenado, ordenac¸˜ao, etc. Entretanto, foi criada uma func¸˜ao que calcula a distˆancia euclidi- ana entre dois pontos, por meio dos pesos atribu´ıdos a cada um deles.
Todos os neurˆonios do aplicativo s˜ao vetores euclidianos, fazendo com que desta forma seja poss´ıvel o armazenamento de dados e o c´alculo da distˆancia supracitada.
Apresentac¸˜ao e Renderizador
A classe apresentac¸˜ao ´e onde se encontra a chamada para todas as outras func¸˜oes, al´em da definic¸˜ao da entrada do algoritmo de SOM. Aqui s˜ao estipulados o tamanho da rede (definindo altura e largura), todos os vetores que formar˜ao os neurˆonios e a inicializac¸˜ao dos treinamentos. Nesta classe tamb´em ´e feita a conex˜ao com o banco de dados para acessar as informac¸˜oes capturadas pelas outras partes do aplicativo (apresentados nas sec¸˜oes 4.4.1 e 4.4.2). Assim, pode formar os neurˆonios que ser˜ao treinados para realizar a clusterizac¸˜ao.
A classe de renderizac¸˜ao foi criada para demonstrar graficamente como cada interac¸˜ao ´e realizada, demonstrando os agrupamentos criados a partir de cores pr´e-definidas para cada um deles.
Na Figura 4.20 ´e poss´ıvel ver um exemplo da tela de renderizac¸˜ao antes das interac¸˜oes do treinador.
Figura 4.20: Exemplo da forma como os neurˆonios s˜ao apresentados na tela do aplicativo de SOM
Cada um dos Neurˆonios apresentados na tela s˜ao formados pelos n´ıveis de afiliac¸˜ao grava- dos no banco de dados pelo aplicativo de L´ogica Fuzzy das ´areas de emoc¸˜oes apresentadas de cada um dos jogos estudados. Isto ´e, o peso de cada um dos neurˆonios ser´a definido pelo grau de filiac¸˜ao que a ´area que ele representa para cada jogo de Ac¸˜ao/Aventura escolhido para figurar na pesquisa.
O peso ´e definido por uma matriz de trˆes dimens˜oes, onde cada dimens˜ao ´e uma das cores do padr˜ao RGB (da sigla em inglˆes “Red, Green and Blue”, isto e, Vermelho, Verde e Azul). As cores foram utilizadas para facilitar a visualizac¸˜ao dos pesos na apresentac¸˜ao do neurˆonio na tela. Sendo assim, quanto mais pr´oximo de uma cor, maior ser´a o grau de filiac¸˜ao Fuzzy que aquele neurˆonio tem em relac¸˜ao `as ´areas de emoc¸˜oes apresentadas previamente.
Ao se iniciar o treinamento , os neurˆonios ser˜ao treinados para chegarem a uma das co- res descritas ao final desta sec¸˜ao, onde alguns tipos de agrupamento podem ser atingidos. A Figura 4.21 mostra como este treinamento est´a sendo executado com 67 iterac¸˜oes.
Figura 4.21: Representac¸˜ao do treinamento dos neurˆonios na tela do aplicativo de SOM
As cores utilizadas para representar cada agrupamento se pautam nos padr˜oes de cor RGB, conforme descrito anteriormente, e tamb´em nas cores do padr˜ao CMYK (da sigla em inglˆes “Cyan, Magenta, Yellow and Black”, isto ´e, Ciano, Magenta, Amarelo e Preto), atingidos por meio da mistura das cores do RGB. Est˜ao assim divididas:
- Vermelho: Representa o agrupamento das emoc¸˜oes Feliz Por, Ressentimento, Soberba, Pena, Esperanc¸a, Medo, Alegria e Ang´ustia. Todas estas emoc¸˜oes foram inclu´ıdas neste grupo,
pois s˜ao diretamente influenciadas pelas consequˆencias dos eventos, isto ´e, pela narrativa dos jogos do estilo Ac¸˜ao/Aventura.
- Verde: Cont´em no grupo as emoc¸˜oes Orgulho e Vergonha, isto ´e, emoc¸˜oes causadas dire- tamente pela ac¸˜ao do pr´oprio agente controlado pelo jogador.
- Azul: Agrupamento que inclui emoc¸˜oes como Admirac¸˜ao e Censura, que s˜ao voltadas para ac¸˜oes causadas por outros agentes presentes no ambiente.
- Amarelo: Grupo que contem as emoc¸˜oes Gratificac¸˜ao e Remorso, ligadas a como as ac¸˜oes do protagonista do jogo podem afetar a hist´oria apresentada.
- Magenta: Gratid˜ao e Raiva s˜ao emoc¸˜oes deste agrupamento. Elas fazem parte das emoc¸˜oes causadas pelas ac¸˜oes de outros personagens, que n˜ao o avatar controlado pelo usu´ario, que cau- sam efeito na narrativa do jogo.
- Ciano: Agrupamento que contem as emoc¸˜oes de atrac¸˜ao: Amor e ´Odio. Elas est˜ao relaci- onadas aos aspectos dos objetos presentes no universo do jogo digital.
- Preto: Grupo que aparece quando os neurˆonios representados na tela n˜ao conseguiram convergir para nenhum dos agrupamentos relatados acima, isto ´e, n˜ao possu´ıram afiliac¸˜ao rele- vante o bastante para causar potencial de impacto emocional no jogador.
O resultado final do treinamento mostrado nas figuras 4.20 e 4.21 pode ser visto no cap´ıtulo 5, onde a an´alise dos dados resultantes deste aplicativo ´e realizada.
DBSOM ´
E a classe que faz a conex˜ao com o banco de dados. Possui trˆes func¸˜oes: A primeira delas realiza a conex˜ao com o banco de dados, a segunda realiza uma consulta nele, por meio de um comando SQL definido pela chamada, e, por fim, a terceira func¸˜ao realiza a desconex˜ao com o banco.
No cap´ıtulo que segue ser´a apresentada a an´alise pertinente dos resultados obtidos por meio do aplicativo constru´ıdo.