Usabilidade

Pela definição da International Organization for Standardization (ISO), usabilidade é a extensão na qual um produto pode ser usado por usuários específicos para alcançar objetivos específicos com efetividade, eficiência e satisfação em um contexto de uso específico.

Segundo Dr. Henrique Nou Schneider, a usabilidade está relacionada aos estudos de ergonomia e da IHC, sendo diretamente ligada ao contato do usuário com a interface. Desta forma, é a capacidade do software permitir que o usuário alcance suas metas de interação com o sistema, oferecendo a ele facilidade de aprendizagem em um nível de utilização eficiente e apresentando poucos erros, limitando a necessidade de memorização da informação pelo usuário, elevando assim seu grau de satisfação.
Para Schneider entre os atributos da usabilidade têm-se:

  • Facilidade de Aprendizado: o sistema deve ser fácil de aprender de tal forma que o usuário consiga rapidamente explorá-lo e realizar suas tarefas com ele;
  • Eficiência de uso: o sistema deve ser eficiente a tal ponto de permitir que o usuário, tendo aprendido a interagir com ele, atinja níveis altos de produtividade na realização de suas tarefas;
  • Facilidade de memorização: após certo período sem utilizá-lo, o usuário não freqüente é capaz de retornar ao sistema e realizar a sua tarefa sem a necessidade de reaprender como interagir com ele;
  • Baixa taxa de erros: em um sistema com baixa taxa de erros, o usuário é capaz de realizar tarefas sem maiores transtornos, devendo o sistema recuperar-se de erros automaticamente, caso ocorram;
  • Satisfação subjetiva: o usuário deve considerar agradável a interação com o sistema e sentir-se subjetivamente satisfeito com ele.

A figura abaixo apresenta como se dá a aceitabilidade de um sistema pelo usuário, dividindo-se os valores necessários para atingir esse nível em aceitabilidade social e aceitabilidade prática. Pode-se verificar assim a importância da usabilidade e de seus cinco atributos na aceitabilidade prática de um sistema.


Estrutura hierárquica da aceitabilidade de um sistema

Ergonomia e Usabilidade em Jogos Casuais

A fim de melhor compreendermos a importância da Ergonomia e da Usabilidade em ICH, podemos estudar a aplicação das mesmas em um ramo que estudo bastante, o desenvolvimento de jogos casuais.

Segundo pesquisadores como Braga et al (2006), com os primeiros jogos, surgiram formas de controle com poucas opções de entrada de dados e interfaces gráficas bem simples, o que garantia o aprendizado dos mesmos por meio do método “tentativa-e-erro” de forma bem intuitiva e simples.

Entretanto, de acordo com a evolução histórica dos jogos eletrônicos, percebe-se que a entrada de comandos (joystick, teclado, mouse, etc.) diversificou-se tanto quanto a sua estrutura quanto a sua forma de uso, a fim de atender às necessidades dos diferentes gêneros dos jogos.

Além disso, as interfaces gráficas dos jogos tornaram-se mais sofisticadas e complexas, como forma de melhor prover novas opções e informações ao usuário.

Percebe-se assim que os jogos vêm se tornando cada vez menos ergonômicos e usáveis (BRAGA et al, 2006).

Desta forma, somente um grupo de pessoas, conhecidas como jogadores hardcore, podem tirar o máximo da interação com os jogos uma vez que estão acostumados aos mais diversos tipos de jogos, uma vez que estes ocupam uma boa parte de sua vida.

Entretanto, há alguns tipos de jogos que, ao serem projetados, visam atingir não somente os indivíduos supra citados, mas também os jogadores casuais: pessoas que gostam de jogar por prazer, mas que não o possuem como atividade de lazer primária.

Neste período de intensa disseminação tecnológica, os jogos para esse tipo de jogadores podem ser divididos em quatro grupos de acordo com o meio em que se desenvolve ou finalidade do mesmo: mobile games, jogos para TV digital, webgames e advergames.

Com a massificação do uso do celular, este se tornou uma forma de oferecer ao seu usuário entretenimento em qualquer lugar a qualquer hora em que ele assim deseje. Os mobile games são, portanto, uma forma de atender à demanda crescente por diversão.

Já o desenvolvimento da TV digital vem incentivando pesquisas para compreender-se todas as potencialidades com o advento da mesma. Uma das novas possibilidades é oferecer novos elementos lúdicos com maior interação entre o usuário e o programa do que aquela oferecida por simples filmes ou novelas.

Os webgames nasceram da disseminação da Internet e da exigência dos internautas por novo conteúdo, uso de mídias muito mais interativas e lúdicas por meio da grande Web.

Com a popularização dos jogos eletrônicos, surge uma nova forma de merchandising: o uso de jogos como forma de divulgação de uma marca e/ou produto. Os advergames buscam, através do entretenimento, apresentar ao usuário algum tipo de publicidade.

Observa-se então que, devido a natureza destes jogos, que um jogo casual precisa ser o mais ergonômico e usável possível, seja devido a limitações existentes na entrada de dados e na interface gráfica (caso dos celulares e da TV digital), seja de forma a atrair a atenção do jogador a fim de divulgar a sua propaganda (advergames) e oferecer o máximo de simplicidade em sua jogabilidade. Motivo este que leva os jogos casuais a buscarem utilizar-se de uma entrada de dados muito mais simplificada, interfaces gráficas com ótima visibilidade e uma estrutura interna do jogo que seja facilmente compreendida pelo usuário.

Outro fator importante é a curva de aprendizado de um jogo: quanto melhor ela for, mais usável ele será ao longo do tempo em que for jogado, sendo assim esta uma outra grande preocupação no desenvolvimento dos jogos casuais (BRAGA et al, 2006).

[Conteúdo pertencente ao Material do curso de Interação Humano-Computador]

Sem comentarios

Ergonomia - Parte 2

De acordo com a IEA, os domínios de especialização da ergonomia são:

  • Ergonomia física: está relacionada às características da anatomia humana, antropometria, fisiologia e biomecânica em sua relação à atividade física. Os tópicos relevantes incluem o estudo da postura no trabalho, manuseio de materiais, movimentos repetitivos, distúrbios músculos-esqueléticos relacionados ao trabalho, projeto de posto de trabalho, segurança e saúde;
  • Ergonomia cognitiva: refere-se aos processos mentais, tais como percepção, memória, raciocínio e resposta motora conforme afetem as interações entre seres humanos e outros elementos de um sistema. Os tópicos relevantes incluem o estudo da carga mental de trabalho, tomada de decisão, desempenho especializado, interação homem computador, stress e treinamento conforme esses se relacionem a projetos envolvendo seres humanos e sistemas;
  • Ergonomia organizacional: concerne à otimização dos sistemas sócio-técnicos, incluindo suas estruturas organizacionais, políticas e de processos. Os tópicos relevantes incluem comunicações, gerenciamento de recursos de tripulações (CRM - domínio aeronáutico), projeto de trabalho, organização temporal do trabalho, trabalho em grupo, projeto participativo, novos paradigmas do trabalho, trabalho cooperativo, cultura organizacional, organizações em rede, tele-trabalho e gestão da qualidade.

Porém, projetar objetos que melhor se adeqüem ao formato do corpo humano e a corrigir a postura dos usuários são uma das aplicações mais comuns da Ergonomia. Exemplos comuns incluem cadeiras projetadas para evitar que os usuários sentem em posições que tenham um efeito nocivo na coluna vertebral e a escrivaninha ergonômica que oferece uma gaveta ajustável para o teclado, uma tampa principal com altura ajustável e outros elementos que podem ser modificados pelo usuário.

Ergonomia é assim muito mais ampla do que olhar o lado psicológico e anatômico do ser humano, apesar da psicologia dos seres humanos ser, também, um elemento chave nesta ciência.

Esta porção psicológica da ergonomia é usualmente referida como Fatores Humanos ou Engenharia de Fatores Humanos nos Estados Unidos da América, enquanto Ergonomia cognitiva é o termo usado na Europa. O entendimento do projeto em termos de carga de trabalho mental, erro humano, a maneira como seres humanos percebem o ambiente que os cerca e, muito importante, as tarefas que eles executam, são todos analisados pelos ergonomistas.

Segundo Schneider (s.d.), a ergonomia cognitiva, de interfaces e de concepção possui grande importância no desenvolvimento de softwares para melhor se adequarem às necessidades do usuário. Uma vez que se levam em consideração diversos aspectos sobre a capacidade de adaptação do software e o modelo mental construído pelo usuário, faz-se necessário o emprego de uma equipe transdisciplinar.

Schneider (s.d.) assevera que no estudo da capacidade ergonômica de um software, deve-se observar quatro princípios básicos:

  • Visibilidade: Indica que as ações pretendidas correspondem às realizadas. Ou seja, refere-se à escolha das informações que devem ser visíveis ao usuário e organização da mesma, de forma a facilitar a compreensão. Assim, apenas as coisas necessárias têm que estar visíveis. A falta de visibilidade pode levar um software ao fracasso, pois a falta da mesma torna os softwares difíceis de serem operados, causando desinteresse aos usuários;
  • Affordance: Indica que as ações percebidas são na realidade as propriedades reais dos objetos. Ou seja, refere-se à capacidade de o usuário compreender o funcionamento de um componente do sistema pela forma como o mesmo se apresenta, sem necessidade de explicações. Bom affordance faz com que os softwares tenham uma interface mais enxuta, pois as informações relativas às explicações sobre determinados objetos não são necessários, pois eles já são auto-explicativos;
  • Mapeamento: Indica o relacionamento entre as entidades e seus movimentos e resultados. Logo, um objeto é fácil de ser usado quando existe um conjunto visível de ações possíveis e os controles exploram mapeamentos naturais;
  • Feedback: Fornece ao usuário, no dispositivo de saída, informações sobre o estado das ações por ele executadas. Ou seja, a resposta é retornada pelo sistema ao usuário devido a uma ação executada. Assim, a falta de feedback pode confundir o usuário.

Para Borges (s.d.), algumas regras devem ser seguidas para a boa manutenção da ergonomia de um sistema:

  • Esforço Mínimo do Usuário: visa reduzir o número de ações a serem desempenhadas pelo usuário, sendo delegadas tais atividades ao sistema, evitando falhas;
  • Memória Mínima do Usuário: busca uma curva de aprendizado acelerado, de forma que o uso do software possa ser aprendido facilmente e com o mínimo de informações a serem memorizadas;
  • Frustração Mínima: o sistema deve facilitar a execução das tarefas do usuário, removendo possíveis empecilhos e oferecendo a informação necessária para que toda ação seja bem sucedida;
  • Maximizar o uso de padrões e hábitos: busca facilitar o aprendizado, reduzir a quantidade de informações a serem memorizadas e minimizar o esforço do usuário;
  • Máxima tolerância para diferenças humanas: o sistema deve adequar-se aos diferentes perfis de usuários;
  • Máxima tolerância para mudanças ambientais: o sistema deve suportar mudanças do ambiente de hardware/software com um mínimo de esforço do usuário;
  • Notificação imediata de problemas: capacidade do sistema de notificar o usuário sobre problemas atuais ou futuros de forma clara e coerente;
  • Controle máximo de tarefas pelo usuário: sempre que possível, o usuário deve ter total controle sobre a seqüência de execução das tarefas;
  • Apoio máximo às tarefas: o sistema deve ser auto-suficiente quanto à capacidade de oferecer as informações necessárias para a conclusão de uma tarefa.

[Conteúdo pertencente ao Material do curso de Interação Humano-Computador]

Sem comentarios

Ergonomia - Parte 1

A Ergonomia é a ciência que se preocupa com a relação homem-trabalho e respectivos problemas relativos à saúde e segurança no trabalho. Ao mesmo tempo, a publicidade de produtos “ergonomicamente corretos” tem invadido o mercado. Assim, impõe-se saber distinguir o “joio do trigo” e, sobretudo, quando e onde é necessária uma ação ergonômica e quem a pode levar a efeito. Há, pois, que desmistificar a ergonomia e dá-la a conhecer, sobretudo, àqueles que são responsáveis pela concepção de sistemas (de trabalho ou utilitários) ou pela organização do trabalho.

Em termos gerais, pode-se dizer que a ergonomia visa a adaptação das tarefas ao homem. Quer se trate de um produto para consumo público ou de um posto de trabalho, a ergonomia oferece vantagens econômicas através da melhoria do bem-estar, da redução de custos e da melhoria da qualidade e produtividade. Assim, a concepção de qualquer produto ou sistema deve integrar critérios ergonômicos desde a fase de projeto, de forma a assegurar a sua eficiência.

Os ergonomistas, ao projetarem equipamentos, produtos, estações de trabalho e sistemas, objetivam maximizar o conforto, a satisfação e o bem-estar, garantir a segurança e minimizar os custos humanos do trabalho e a carga física, psíquica e cognitiva do operador.

Resulta, conseqüentemente, um segundo objetivo, que é permitir ao homem utilizar da melhor maneira e por mais tempo possível suas experiências, habilidades e potencialidades.

A ergonomia visa adaptar o trabalho ao homem, com relação ao ambiente físico em que este se desenvolve. Seu foco é, portanto, antropocêntrico. Sua ação pode ter igualmente efeitos econômicos – aumentando a qualidade da produção, o rendimento do trabalho, a produtividade do sistema – mas uma ação que vise apenas objetivos econômicos é uma ação de organização e não uma ação ergonômica.

Assim, cumpre-se fazer esta distinção:

  • Por um lado, porque os conhecimentos e técnicas colocados em prática na empresa não permitem, por si só, distinguir aquilo que pertence à Ergonomia, daquilo que faz parte da organização do trabalho e mesmo da engenharia;
  • Por outro lado, para recordar que a vocação da Ergonomia é de estar, primacialmente, a serviço do homem no trabalho.

Em termo etimológico, a palavra ergonomia deriva do grego ergon (trabalho) e nomos (normas, regras, leis).

E, como definição oficial, pode-se apresentar a da Associação Internacional de Ergonomia (IEA) adotada em agosto de 2000:

“A Ergonomia (ou Fatores Humanos) é uma disciplina científica relacionada ao entendimento das interações entre os seres humanos e outros elementos ou sistemas, e à aplicação de teorias, princípios, dados e métodos a projetos a fim de otimizar o bem estar humano e o desempenho global do sistema.”

A ergonomia é, assim, definida como uma ciência aplicada, na medida em que o seu objetivo - a atividade humana, quer seja profissional ou utilitária - nunca está desligado do contexto em que se insere nem dos objetivos em vista. Estes, prendem-se geralmente com a eficácia das ações, não perdem de vista a segurança e o conforto dos atores, podendo afirmar-se que este triângulo formaliza os objetivos da ação ergonômica, ou seja, a otimização das interações homem-sistema. Para alcançar este objetivo geral, a Ergonomia preconiza dois tipos de abordagem:

  • Uma ação sobre os sistemas, processos ou produtos, no sentido de torná-los adequados às características do homem e ao seu modo de funcionamento, eliminando todos os fatores de constrangimento, risco ou nocividade;
  • Uma ação sobre o homem através da formação, no sentido de torná-lo apto para a realização das tarefas que lhe são atribuídas e de prepará-lo para as transformações do trabalho decorrentes da evolução
    tecnológica (CASTRO, 2002, p. 43).

Trata-se, assim, de estudos referentes ao conforto, utilização, organização e documentação do software objetivando facilitar e aperfeiçoar o trabalho do usuário junto ao computador.

Desta maneira, os ergonomistas contribuem para o planejamento, projeto e a avaliação de tarefas, postos de trabalho, produtos, ambientes e sistemas de modo a torná-los compatíveis com as necessidades, habilidades e limitações das pessoas.

Portanto, a Ergonomia é uma área orientada para uma abordagem sistêmica de todos os aspectos da atividade humana. Para dar conta da amplitude dessa dimensão e poder intervir nas atividades do trabalho, faz necessário que os ergonomistas adotem uma abordagem holística de todo o campo de ação da área, tanto em seus aspectos físicos e cognitivos, como sociais, organizacionais, ambientais etc. Freqüentemente esses profissionais intervêm em setores particulares da economia ou em domínios de aplicação específicos. Esses últimos caracterizam-se por sua constante mutação, com a criação de novos domínios de aplicação ou do aperfeiçoamento de outros mais antigos.

[Conteúdo pertencente ao Material do curso de Interação Humano-Computador]

Um Comentario

Uma Introdução à Interação Humano-Computador

Definindo Interação Humano-Computador

Segundo Baecker e Buxton (1987), Interação Humano-Computador (IHC) é “o grupo de processos, diálogos e ações através do qual um usuário humano emprega e interage com um computador”.

Para a Association for Computing Machinery (ACM): “Interação Humano-Computador é uma disciplina que se preocupa com o projeto, avaliação e implementação de sistemas de computadores para o uso humano”.

A IHC é uma área multidisciplinar que não está voltada somente para o estudo de computação ou do ser humano, mas que envolve ciência da computação e psicologia, dentre outras, e que está voltada para a aplicação do conhecimento dessa série de áreas para a obtenção de interfaces “amigáveis” possibilitando a comunicação do homem com o objeto de estudo da computação: o computador. Em outras palavras, IHC deve oferecer o meio mais adequado para que o usuário consiga maximizar sua experiência na interação com o computador, apesar de suas limitações e/ou restrições de tecnologia existentes.

Diferenciando interação e interface

Há dois termos que são usados indistintamente, mas que são diferentes: a Interação e a Interface. O campo de atuação da interação em IHC é tudo que ocorre durante a comunicação do homem (a realização de tarefas) e o computador. Já o conceito de interface é o componente (software) que mapeia as ações do usuário quando este solicita certo processamento ao sistema, através de uma aplicação e apresentação dos resultados pelo mesmo. Assim, a interação envolve, além da interface, o ambiente físico onde o trabalho é desenvolvido.

Encontram-se problemas de interface na maioria das aplicações atualmente, apesar de os projetistas investirem horas com a mesma, em virtude da não preocupação de quem as construiu com os fatores humanos: a percepção visual, a psicologia da leitura e o modelo mental do usuário.

Como um usuário recebe informações e executa tarefas

A habilidade do usuário no processo de obtenção de uma informação de um sistema interativo envolve três dos seus sentidos: a visão, a audição e o tato. A maioria das interações humano-computador ocorre através da visão. Os usuários processam e interpretam a informação visual para, a partir dos seus modelos mentais, extrair o conhecimento. Logo uma especificação apropriada de comunicação visual é o  elemento chave de uma interface “amigável”. Mas, ainda hoje muito da informação apresentada aos usuários é feita de forma textual, não se preocupando nem mesmo em facilitar a exibição dessa informação.

A informação é armazenada de duas formas possíveis  na memória humana: ou pela memória de curta duração, que possui, obviamente, capacidade de armazenamento e recordação limitados, ou pela memória de longa duração que é onde reside o conhecimento humano. Dessa forma o projetista de IHC deve se preocupar como as informações e estrutura da interface irão afetar esses tipos de memória. Caso contrário, corre-se o risco de se ter um sistema de difícil utilização por parte do usuário, perdendo em competitividade com outros que atendam a esses requisitos.

Além disso, a interface deve ser especificada de modo que o usuário possa desenvolver heurísticas (procedimentos, regras e estratégias) que tendem a ser específicas do domínio do conhecimento, devendo permanecer consistentes nas diferentes fases de interação, pois a maioria das pessoas não aplicam raciocínio indutivo ou dedutivo quando se deparam com um problema, além de terem de ser baseadas no conhecimento de problemas similares.

Nos tópicos a seguir abordar-se-ão as três preocupações fundamentais de Interação Humano-Computador: a Ergonomia, a usabilidade e a acessibilidade.

[Conteúdo pertencente ao Material do curso de Interação Humano-Computador]

Um Comentario

Material do Curso de Interação Humano-Computador

Olá a todos! Após um longo tempo sem publicações de novos conteúdos didáticos (peço desculpas a todos, mas não estou mais atuando como professor, mas sim como desenvolvedor de jogos em tempo integral :-) ), decidi por organizar vários escritos meus e “montar um curso” de Interação Humano-Computador.

Àqueles que desconhecem, Interação Humano-Computador trata-se de uma disciplina que busca analisar como melhor adequar as ferramentas tecnológicas às necessidades e ergonomia do homem. Sendo assim, busca-se oferecer conforto e melhor produtividade por meio da adequação da máquina ao homem.

Vale salientar que podemos aplicar os princípios de IHC não somente ao hardware, à “parte anatômica” dos equipamentos, mas sim na forma como a pessoa interage com o mesmo a fim de concluir uma tarefa. É assim que podemos estudar Interação Humano-Computador para aplicar a dispositivos eletrônicos, desktop softwares, websites, etc.

Espero desta forma vir a preencher possíveis lacunas ou ao menos tentar trazer um pouco de minha experiência profissional para aqueles que estão interessados em tal assunto.

Os artigos do curso serão elaborados e publicados gradativamente aqui, infelizmente sem data prevista para cada uma delas, já que o estarei fazendo em minhas horas vagas.

Por sorte, tenho material suficiente para a parte inicial, que estarei extraindo da monografia que escrevi em conjunto com meu amigo Frederico Santos do Vale.

Aula 1 - Uma Introdução à Interação Humano-Computador

Aula 2 - Ergonomia - Parte 1

Aula 3 - Ergonomia - Parte 2

Aula 4 - Usabilidade

4 Comentarios

Games e Educação - Um novo blog para educar e entreter

Este artigo, diferente dos anteriores, tem como objetivo apresentar o blog de meu amigo Fábio de Melo Silva, o blog Games e Educação. Trata-se de um blog voltado principalmente (mas não somente) para educadores e outras pessoas interessadas em saber como se pode aplicar os jogos na educação dos nossos jovens.

Desta forma, com uma linguagem que une entretenimento e educação, o autor apresenta os principais eventos e publicações que abordam esse assunto tão comentado porém pouco aplicado na educação brasileira.

Jogos podem educar, isso é fato, todos nós já sabemos. Mas, como conseguir aplicar os jogos de forma tão educativa dentro e fora da sala de aula? Além de buscar responder essa pergunta, o blog do autor aponta várias fontes de referência onde podemos procurar mais informações e, assim, responder essa pergunta.

Dentre os destaques atuais do blog estão o SBGames (Simpósio Brasileiro de Jogos e Entretenimento Digital) e o Seminário Jogos Eletrônicos, Educação e Comunicação, que chega à sua sexta edição.

Além disso, você pode acessar e ler o artigo publicado no SBGames 2009, publicação da qual tive o prazer de participar, e que teve como autor principal Marcelo Cunha, um outro amigo nosso e também pesquisador focado na área games e educação.

Bem, é isso. A dica está dada: se você está interessado em aprender mais sobre jogos educativos ou o uso de quaisquer jogos na educação, não perca a oportunidade de conhecer mais por meio desse blog!

Se você gostou deste artigo, que tal...

O Uso de Agentes Inteligentes na Educação

Sem comentarios

Redes neurais baseadas em competição

Introdução

Em diversos exemplos estudados, as redes às vezes decidiam por mais de um valor como resposta em vez de um único valor correto, como aconteceu quanto a classificação de letras e a rede retornava como resposta a uma entrada que ela tanto poderia ser um E como um K.
Para resolver esse tipo de problema, pode-se forçar a rede a tomar uma decisão por meio de alguma estrutura adicional, mecanismo esse conhecido como competição.
A forma mais extrema de competição é conhecida como “o vencedor leva tudo”, na qual somente um neurônio deve possuir saída diferente de zero ao final da competição.
Algumas redes desse tipo são a Maxnet, Chapéu Mexicano, Quantização do Vetor de Aprendizagem (do inglês, Learning Vector Quantization – LVQ) e Mapeamentos Auto-Organizáveis de Kohonen (cuja abreviação em inglês é SOM).
Além da característica competitiva, podemos destacar o fato de que as redes de Kohonen utilizam-se de aprendizado não supervisionado, buscando similaridades nos vetores de entrada a fim de agrupá-los em clusters.
Várias das redes apresentadas no livro utilizam-se da regra de aprendizado conhecida como “aprendizado Kohonen”. Nesta forma de aprendizado, as unidades que atualizam seus pesos o fazem de forma a determinar o novo vetor de pesos como sendo a combinação linear do antigo vetor peso e do vetor de entrada atual, tomando-se o cuidado de escolher como unidade a ser atualizada aquela cujo vetor peso esteja mais próximo do vetor de entrada a ser aprendido.
Há duas principais abordagens para determinar o vetor peso mais próximo ao vetor padrão em redes auto-organizáveis.
A primeira delas emprega o cálculo do quadrado da distância Euclidiana (Dj) entre o vetor de entrada e o vetor peso, escolhendo o vetor peso de menor valor Dj como sendo o mais próximo.
O segundo método usa o produto escalar (dot product, em inglês) do vetor de entrada e do vetor peso, que é o valor de entrada (y_inj) para cada unidade. Quanto maior o produto escalar menor o ângulo entre os vetores peso e entrada (se o comprimento de ambos for um), podendo assim ser interpretado como a correlação entre esses vetores.

Mapeamentos Auto-Organizáveis de Kohonen

As redes neurais auto-organizáveis propostas por Kohonen possuem a característica de preservar topologias, aspecto esse não identificado em outras redes. Desta forma, assumem uma estrutura topológica entre as unidades de agrupamento (clusters). Essa característica também é observada no cérebro.
Algumas das observações a respeito do funcionamento de um mapa auto-organizável são:

  • Dados p sinais de entrada, cada qual formado por n-tuplas, são capazes de agrupá-los em m clusters;
  • Atualiza somente os vetores peso da unidade j e seus vizinhos (em uma vizinhança de raio R), sendo j a unidade cujo vetor peso está mais próximo do vetor entrada;
  • Seu aprendizado é não supervisionado.

Arquitetura
A figura abaixo apresenta a arquitetura de uma rede de Kohonen:

Já a figura abaixo ilustra as vizinhanças R = 0, 1 e 2 para unidades de uma rede dispostas em um array bidimensional em uma grade retangular:

Em uma grade hexagonal, teríamos a seguinte disposição gráfica:

Algoritmo

  • Inicialize pesos
  • Estabeleça parâmetros de vizinhança topológica
  • Estabeleça parâmetros de taxa de aprendizado
  • Enquanto condição de parada for falsa, faça
    • Para cada vetor de entrada x, faça
      • Para cada j
        • Dj = 0
        • Para cada i
          • Dj = Dj + (wij – xi)2
      • Encontre índice J tal que DJ seja mínimo
      • Para todas as unidades j na vizinhança especificada de J
        • Para todos os i
          • wij = wij + α[xi - wij]
    • Atualize taxa de aprendizado
  • Reduza raio da vizinhança topológica em tempos determinados

Observações:

  • A taxa de aprendizado decresce lentamente em função do tempo;
  • O raio de vizinhança também decresce enquanto o processo de clustering progride;
  • Valores aleatórios podem ser estabelecidos para os pesos inicialmente.

[Conteúdo pertencente ao Material do curso de Redes Neurais Artificiais]

Sem comentarios

Associação de Padrões

Algoritmos de Treinamento para Associação de Padrões

Redes associativas são redes cujo objetivo é associar determinados tipos de padrão a outros a fim de que a rede possa reconhecer ou não uma determinada entrada, mesmo que parte das informações estejam “perdidas” ou “erradas”.

Dado um par associado s:t composto por um vetor s de n elementos e um vetor t de m elementos, necessitamos então de uma rede com n vetores de entrada e m vetores de saída e os pesos podem ser representados em uma matriz W de n linhas por m colunas.

Desta forma, para testarmos se a rede associa corretamente um determinado padrão s a um padrão t, o produto de s por W, sendo aplicado à função de ativação, deverá resultar em t, ou seja:

f(s.W) = t

Regra Hebb

Regra mais simples para a determinação de pesos para uma rede neural associativa.

Algoritmo:

  • Inicialize todos os pesos wij = 0;
  • Para cada vetor de treinamento s:t faça
    • xi = si;
    • yj = tj;
    • wij = wij + xi*yj;

Como se pode perceber Cálculo de pesos de uma rede neural , ou seja, a matriz de pesos W é igual ao produto externo dos vetores s e t.

Matriz dos vetores de treinamento

Perfect recall versus cross talk

Quanto maior for a correlação dos vetores de entrada, maior será o cross talk (ou seja, há contribuições dos vetores nos pesos de forma a perder a precisão).
Já no caso de vetores ortogonais (que são não correlacionados) a rede Hebb irá produzir pesos corretos, conseguindo assim um perfect recall.

Regra Delta

A regra Delta consegue reproduzir melhores resultados que a regra Hebb quando os vetores de entrada do treinamento são não ortogonais.
Como já vimos, a regra Delta original expressa a variação de pesos da seguinte forma:

Variação dos pesos na regra delta original

Uma variação da regra Delta leva em consideração uma função de ativação diferenciável de forma que a diferencial desta entra no cálculo da variação de pesos da seguinte forma:

Variação dos pesos na regra delta modificada

Redes Neurais de Memória Heteroassociativa

São redes em que os pesos são determinados de tal forma que elas podem armazenar um conjunto P de associações padrões.
Uma rede heteroassociativa assemelha-se à representada na figura abaixo:

Exemplo de rede heteroassociativa

Em seu treinamento tanto a regra Hebb quanto a regra Delta pode ser empregada.

A função de ativação das unidades de saída pode ser de uma das seguintes formas:

  • Função de ativação step bipolar Função de ativação step bipolar
  • Função de ativação step binária Função de ativação step binária
  • Função de ativação incluindo um threshold θi (usada em redes de memória associativa bidirecional – BAM) Função de ativação incluindo um threshold

Dado um conjunto de associações padrões S = s(1):t(1), … , s(i):t(i), … , s(P):t(P), se treinarmos uma rede associativa por regra Hebb para cada um desses padrões, teremos matrizes de pesos W(1) , … , W(i), … , W(P). Uma rede heteroassociativa treinada por regra Hebb para o conjunto de padrões S terá uma matriz de pesos W = W(1) + … + W(2) + … + W(P).

Rede Autoassociativa

Uma rede autoassociativa trata-se de um caso especial de rede heteroassociativa na qual o vetor de entrada do treinamento e a saída desejada são idênticos, desta forma, o treinamento resulta naquilo que é chamado de armazenamento do vetor.
A arquitetura de uma rede autoassociativa é, então, da seguinte forma:

Modelo de rede autoassociativa

A matriz W de pesos será tal que possuirá n linhas por n colunas e pode ser encontrada a partir da seguinte forma:

Cálculo da matriz de pesos

Que expressa a soma das matrizes-peso para cada padrão por meio da regra Hebb em um único somatório.
É necessário dizer também que, após o cálculo da matriz W, é comum “zerar-se” (estabelecer seu valor para zero) a diagonal principal dessa matriz, pratica esta que visa aumentar a plausibilidade biológica e previne a produção da matriz identidade para os pesos (quando empregada a regra Delta), além de ser necessário no caso da rede ser iterativa.

Capacidade de Armazenamento

A capacidade de uma rede de armazenamento autoassociativa depende do número de componentes que os vetores armazenados possuem e da correlação existente entre eles, sendo que quanto menor a correlação entre eles, mais vetores podem ser armazenados, alcançando número máximo quando todos os vetores são ortogonais entre si.
Sendo assim, dados vetores bipolares mutuamente ortogonais de n componentes, n – 1 destes vetores é o número máximo que se pode armazenar usando a matriz peso da soma dos produtos externos (com os termos das diagonais “zerados”).

Rede Autoassociativa Iterativa

Algumas redes não são capazes de associar na primeira tentativa um vetor que possua muitas “incertezas” (no caso de padrões bipolares, representadas pelo valor zero), entretanto o fazem muito bem após iterar sobre o resultado, ou seja, utilizar o resultado obtido na iteração anterior como nova entrada, até que não mais haja incertezas sobre os dados.
Essas redes são conhecidas como redes autoassociativas iterativas e encontram nas redes de Hopfield algumas de suas mais fortes representantes.
Nesse tipo de rede é muito comum ter todos os n neurônios conectados entre si, o que leva a deixar de identificar suas camadas como camada de entrada e camada de saída.

Autoassociador Linear Recorrente

Trata-se do tipo mais simples de rede neural autoassociadora iterativa.
Apresenta todos os seus neurônios interconectados e os pesos podem ser encontrados pela regra Hebb.
Uma vez que a regra Hebb trata-se do somatório das componentes dos vetores de entrada (para ser mais específico, do quadrado das componentes), os pesos correspondentes podem crescer indefinidamente, alterando assim a confiabilidade das informações obtidas por essa rede.
Para resolver isso, desenvolveu-se uma modificação deste tipo de rede, criando assim o “Brain-State-in-a-Box” (redes BSB).
Essas redes possuem esse nome porque impõem limites ao crescimento por meio da modificação da função de ativação, restringindo assim os valores possíveis a um cubo. Neste tipo de rede, as autoconexões (os termos da diagonal principal da matriz) não são “zerados”, havendo uma autoconexão com peso 1.
Uma outra possibilidade é trabalhar com uma função de ativação baseada no threshold. Neste caso, podemos ter vetores de entrada bipolares, pesos simétricos ( wij = wji ) e nenhuma autoconexão ( wii = 0 ) tendo como função threshold a seguinte:
Função de ativação de autoassociador linear recorrente

Rede Discreta de Hopfield

As redes de Hopfield também são completamente interconectadas, possuem pesos simétricos e nenhuma autoconexão. O que realmente as difere das anteriores é o fato de que somente uma unidade terá seu valor de ativação atualizado de cada vez e cada uma dessas unidades continua a receber um sinal externo além do sinal de cada um dos outros neurônios na rede.
Essa atualização assíncrona permite a determinação da função de Lyapunov (ou função de energia), capaz de descrever de que forma a rede convergirá para a solução.
A inicialização dos pesos (lembrando que se trata de armazenamento de padrões, ou seja, uma rede autoassociativa) pode ser feita usando-se a regra Hebb e, após esta, para cada vetor de entrada deve-se atualizar de forma assíncrona (escolhendo aleatoriamente um neurônio de cada vez, mas tendo o cuidado de atualizar todos na mesma proporção) os valores de ativação, até que estes atinjam a convergência para aquilo que será a resposta de nossa rede.
Nossa função de ativação pode trabalhar com um valor θi ou ter como threshold o valor zero.
Inicialmente, a entrada externa (ou seja, os valores do vetor de entrada) era usada somente no início de cada passo, entretanto algumas modificações da rede de Hopfield podem utilizar-se da entrada externa durante todo o processo.

Função Energia

Função energia

Capacidade de Armazenamento
Hopfield para padrões binários - Capacidade de armazenamento para hopfield para padrões binários

Hopfield para padrões bipolares - Capacidade de armazenamento para hopfield para padrões bipolares

Memória Associativa Bidirecional (BAM)

Uma rede BAM é capaz de armazenar um conjunto de associações-padrão por meio da soma de matrizes de correlação bipolares.
Sua arquitetura consiste de duas camadas de neurônios, cada qual conectado a todos os neurônios da outra camada por meio de conexões bidirecionais.
Uma vez que o sinal será enviado e retornado entre essas camadas diversas vezes até convergir, é convencionado denominar essas camadas de “camada X” e “camada Y”, em vez de camadas de entrada e saída.
A arquitetura de uma rede BAM fica, então, da seguinte forma:

Modelo de rede BAM

BAM discreta

Há duas formas de rede BAM que se utilizam de padrões de entrada e saída discretos são as formas binárias e bipolares, ambas com um comportamento muito similar.
O cálculo do peso é encontrado mais uma vez por meio do produto externo das formas bipolares dos vetores pares de treinamento. Além disso, a função de ativação continua sendo uma função step, sendo que, agora, quando o valor de entrada for igual ao threshold, a função de ativação opta por manter o valor de ativação previamente conhecido.
Uma função de ativação pode ser, por exemplo (considerando uma rede BAM bipolar):
Função de ativação para rede BAM bipolar

BAM contínua

Uma rede BAM contínua transforma de forma suave e contínua a saída em um valor no intervalo [0, 1] usando para isso não mais uma função step, mas sim uma função sigmóide logística.
A função de ativação é:

Função de ativação para uma rede BAM contínua

O cálculo do y_inj leva em consideração o valor de um bias, diferentemente das outras redes associativas que temos visto aqui.

Outros Conceitos

Distância Hamming

A distância Hamming entre dois vetores x1 e x2 (denotada por H[x1, x2]) trata-se do número de componentes diferentes que estes possuem.
A distância média Hamming entre dois vetores é Cálculo da distância hamming
, valor este que expressa o percentual de diferenças que há entre os dois vetores.

Apagar uma associação armazenada

Seja xc o complemento de um vetor bipolar x (ou seja, um vetor que inverte os valores 1 por –1 e vice-versa).
Codificar uma matriz-peso para armazenar xc:tc é o mesmo que codificá-la para armazenar x:t.
Entretanto, se ela for treinada para armazenar xc:t ou x:tc, ela perderá as informações armazenadas a respeito do par associado x:t, o que é facilmente provado por meio de álgebra linear.

[Conteúdo pertencente ao Material do curso de Redes Neurais Artificiais]

Um Comentario

Redes Neurais simples para classificação de padrões

Como afirmamos anteriormente, redes neurais artificiais podem ser empregadas a fim de classificar determinados dados de entrada segundo padrões, buscando assim associar uma resposta a cada um deles. Essa classificação de padrões pode ser feita de diferentes formas, de acordo com o tipo de rede neural adotado, bem como a regra de aprendizado que o mesmo emprega.

Começaremos então nossos estudos analisando alguns modelos de redes neurais mais simples que satisfazem tal proposta.

Arquitetura

Por hora, será estudado o tipo de arquitetura mais simples possível para a classificação de padrões: redes neurais single-layer, isto é, de uma única camada.
Além disso, o uso de bias ajustável será necessário, de tal forma que podemos manter o threshold da função de ativação fixo em zero, variando assim somente
O uso de bias ajustável permitirá que se ajuste a região de separação dos padrões (sem necessitar ajustar o threshold da função de ativação, que permanecerá fixado em zero).
A figura abaixo representa o nosso modelo de uma rede neural para classificação de padrões:

Rede neural singlelayer para classificação de padrões

Separabilidade Linear

Entende-se por separabilidade linear a capacidade de uma rede de separar completamente dois padrões a partir de pesos e bias bem ajustados para tal.
Diz-se que é linearmente separável porque a representação gráfica do domínio dos parâmetros de entrada pode ser dividida por uma reta de forma a manter cada padrão de um dos lados da mesma, conforme demonstra a figura abaixo.

Representação gráfica da separabilidade linear

Tomando-se 1 e –1 como sendo os valores a dizer qual padrão encontrado, o valor zero determina a “fronteira” entre eles, ou seja, a reta que os separa, reta esta determinada por:

É provado também que se uma rede multilayer com funções de ativações lineares for utilizada, ela também só poderá solucionar problemas linearmente separáveis.

Rede Hebb

Na rede Hebb proposta pelo autor deste livro, os vetores de entrada devem estar na forma bipolar (1 ou –1) ou binária (1 ou 0), bem como os valores a serem atingidos (resultado de cada treinamento) será na forma bipolar. Além disso, o treinamento é supervisionado, ou seja, são dados vetores de entrada com seus respectivos resultados (target) a fim de que os pesos possam ser ajustados.
Os pesos são inicialmente zero e a cada vetor de entrada do treinamento os pesos são ajustados por meio da seguinte fórmula:

Onde:
wi – peso para a entrada i (lembrando que a entrada da bias é x0 = 1 e w0=b);
xi – valor da entrada i ( 1 ou – 1);
t – resultado desejado (1 ou –1);

Obs: Apesar de considerarmos a bias como sendo x0, sua representação será sempre ao final do vetor de entrada)

Abaixo, segue o treinamento de uma rede Hebb para a função AND:

INPUT
(x1 x2 1)
TARGET WEIGHT CHANGES
(Δw1 Δw2 Δb)
WEIGHTS
(w1 w2 b)
( 0 0 0 )
( 1 1 1 ) 1 ( 1 1 1 ) ( 1 1 1 )
( 1 0 1 ) -1 ( -1 0 -1 ) ( 0 1 0 )
( 0 1 1 ) -1 ( 0 -1 -1 ) ( 0 0 -1 )
( 0 0 1 ) -1 ( 0 0 1 ) ( 0 0 -2 )

Uma rede Hebb pode ser usada no reconhecimento de alguns padrões simples, por exemplo, distinguir um caractere “x” de um “o”.
Entretanto, não são todos os problemas linearmente separáveis que a rede Hebb é capaz de resolver. Problemas cuja saída não seja da forma bipolar são descartados e alguns, mesmo possuindo vetor de entrada e resultado na forma bipolar, não são possíveis.

Perceptron

A regra de aprendizado do perceptron permite abranger soluções para um número muito maior de problemas do que a regra de aprendizado Hebb.
Os primeiros perceptrons possuíam três camadas de neurônios – unidades sensoriais, unidades associadoras e uma unidade de resposta – formando um modelo aproximado da retina.
Os valores de entrada para cada neurônio, bem como da saída dos mesmos, podem ser 1 (atuando de forma excitatória), -1 (atuando de forma inibitória e 0 (indicando indecisão).
Para tal, a função de ativação passa a ser da forma:

Uma análise de como se comporta o threshold ( θ ) em um perceptron e percebe-se que o bias ( b ) apresenta agora um papel diferente daquele, já que o θ representa não somente o threshold, mas também a dimensão da região de indecisão (de - θ a + θ).
Um gráfico representando uma classificação de padrões por uma rede perceptron para o problema da função lógica AND pode possuir a seguinte forma:

Os pesos são inicialmente zero e a cada vetor de entrada do treinamento os pesos são ajustados por meio da seguinte fórmula:

Onde:
α – taxa de aprendizado ( )
wi – peso para a entrada i (lembrando que a entrada da bias é x0 = 1 e w0=b);
xi – valor da entrada i ( 1 ou – 1);
t – resultado desejado (1 ou –1);

Após a execução do treinamento para todos os vetores de entrada, verifica-se se houve algum peso alterado. Caso algum peso tenha sido alterado, executa-se novamente todo o processo para todos os vetores de entrada e, no momento em que não mais houver variações nos pesos, interrompe-se o treinamento: foram encontrados pesos adequados na classificação dos mesmos.
As duas retas que dividem o espaço em três regiões podem ser assim determinadas:

O treinamento de um perceptron para a função AND com entrada na forma binária e saída bipolar seria da seguinte forma (adotando-se θ = 0.2 e α = 1 , com todos os pesos inicialmente zero):

Clique aqui para ver a tabela com os dados do treinamento dessa rede Perceptron.

Como durante toda a época 10 não houve variação de pesos, então, alcançamos os pesos que classificam corretamente os vetores do treinamento.

O treinamento de um perceptron para a função AND com entrada na forma binária e saída bipolar seria da seguinte forma (adotando-se θ = 0.2 e α = 1 , com todos os pesos inicialmente zero):

Clique aqui para ver a tabela com os dados do treinamento dessa rede Perceptron.

Como durante toda a época 2 não houve variação de pesos, então, alcançamos os pesos que classificam corretamente os vetores do treinamento.
Com isso, fica claro que a forma como os dados são representados nos vetores de entrada e saída, bem como o threshold escolhido influenciam no tempo que levará para se alcançar os pesos adequados.

Adaline

Adaline (Adaptive Linear Neuron) utiliza principalmente ativações bipolares para a entrada e para a saída, entretanto não se restringe a estes.
A regra de aprendizado de redes Adaline é a regra delta, baseada na variação entre a saída esperada e a entrada da rede para cada neurônio. Apesar de ser aplicada a redes de uma única camada, há uma outra versão desta (a Madaline) que se encarrega do treinamento em redes de múltiplas camadas, conforme será visto mais adiante.
A função de ativação é dada por:

E o cálculo da variação de cada peso associado a um neurônio yj é:

Onde:
α – taxa de aprendizado ( 0 < α ≤ 1 )
wi – peso para a entrada i (lembrando que a entrada da bias é x0 = 1 e w0=b);
xi – valor da entrada i ( 1 ou – 1);
t – resultado desejado (1 ou –1);

O algoritmo para uma rede Adaline é (este algoritmo considera wn+1 = b, isto é, o bias é o peso associado à (n+1)-ésima entrada):


Inicializar todos os pesos (com valores aleatórios pequenos);
Atribuir valor de alpha;
HouveMudanca = verdadeiro (indica se houve alteração de pesos);
Enquanto (houveMudanca) Faça
houveMudanca = falso;
Para cada par de treinamento (entrada : target) faça
y_in = 0;
Para i = 1 até n
Para j = 1 até m+1
y_in = y_in + entradaj*wij;

Se y_in >= 0 então
y = 1;
Senão
y = -1;

Se y ≠ targeti então
houveMudanca = verdadeiro;
Para j = 1 até m+1
weightsij = weightsij + alpha*(targeti – y_in)*entradaj;
// Fim de todo o algoritmo;

Onde:
n número de neurônios na camada de saída;
m número de neurônios de entrada para cada neurônio na camada de saída;
target array de valores esperados na saída para cada neurônio para dada vetor de entrada;
entrada vetor de entrada do treinamento (para facilitar a resolução, assumimos que a última posição do vetor de entrada – m+1 – é sempre 1 – o valor de ativação para o bias);

Madaline

Madaline (Many Adaptive Linear Neuron) comporta-se como sendo um arranjo de vários Adalines agrupados em uma rede de múltiplas camadas.
Devido à estrutura de múltiplas camadas, o processo de treinamento de uma rede Madaline é mais complexo quando comparado com as anteriores.
Há duas formas de se treinar esta rede: por MRI (o algoritmo de treinamento original para uma Madaline), que varia somente os pesos associados aos neurônios da camada oculta, e por MRII (variação do MRI), que permite variar todos os pesos da rede em busca da solução.

No MRI, os pesos associados aos neurônios de saída são fixados (podendo estes, assim, atuar como AND ou OR, dependendo de seus valores) e os pesos dos neurônios ocultos são calculados da seguinte forma:

  • Calcule z_in (entrada da rede) e z (saída do neurônio por meio da função de ativação) para cada neurônio;
  • Calcule então y_in e y do neurônio de saída;
  • Se y for diferente do target, então é necessário ajustar;
    • Se o target é 1, então escolha o neurônio Zj cuja entrada de rede (z_in) for mais próximo de zero e incremente seus pesos por meio da fórmula:
    • Se o target é –1, então decremente os pesos de todos os neurônios Zj cuja entrada de rede são positivas:

O MRII procede similar ao MRI, alterando somente a forma como calcula-se a variação dos pesos dos neurônios. Este algoritmo procura selecionar dentre cada neurônio qual possui a entrada de rede mais próxima de zero, mudando então o sinal da saída e testando se, com o novo valor, o erro entre y e target é reduzido. Caso seja, ajusta-se os pesos nesta unidade (ou seja, encontrou-se uma unidade cuja saída é efetiva para a correção).

[Conteúdo pertencente ao Material do curso de Inteligência Artificial e ao Material do curso de Redes Neurais Artificiais]

2 Comentarios

Introdução às Redes Neurais

Em Inteligência Artificial, as Redes Neurais, ou se preferir Redes Neuronais, constituem principal objeto de estudo da abordagem conexionista, que estuda a forma como a informação é processada

Uma abordagem sobre as redes neurais

Uma rede neural (biológica) trata-se de uma complexa estrutura formada por neurônios e suas conexões, capaz de processar informações adquiridas a fim de armazená-las e aprender sobre elas, classificando-as por meio de padrões.

Cada neurônio é conectado a n outros neurônios por meio de dendritos (por onde os impulsos chegam) e axônio (por onde os impulsos são transmitidos).

O neurônio biológico é composto por três partes:

  • Dendritos - recebem os sinais de outros neurônios e os conduzem até o soma;
  • Soma - região da célula capaz de efetuar o somatório dos impulsos recebidos e, caso o impulso seja suficiente, transmitirá novos impulsos a outros neurônios por meio do axônio;
  • Axônio - parte do neurônio que conduz os impulsos produzidos pela mesma até outros neurônios.

Uma rede neural artificial trata-se de um sistema de processamento de informações que possui certas características de performance e processamento dos dados em comum com redes neurais biológicas.

Em uma rede neural, cada neurônio recebe impulsos de vários neurônios (x1, x2, …, xn), aplica pesos sobre cada um desses impulsos (w1, w2, …, wn), efetua o somatório desses valores (y_in), processando então por meio de alguma função a fim de encontrar um valor resultante (y) que irá lhe dizer se deve ou não transmitir novos impulsos a novos neurônios (z1, z2, …, zn) e quais devem ser os novos pesos (v1, v2, …, vn).

Desta forma, podemos dizer que as seguintes equações compõem parte do modelo matemático:
y_in = w1×1 + w2×2 + … + wnxn
y = f (y_in)
v1 = g1(y)
v2 = g2(y)

vn = gn(y)

Aplicações de Redes Neurais
Em Computação, várias são as possíveis aplicações de Redes Neurais, devido à capacidade de aprendizado que as mesmas possuem. Sendo assim, algumas das que podemos destacar aqui são:

  • Processamento de sinais, como em uma linha telefônica, por exemplo, onde se podem utilizar redes neurais a fim de eliminar ruídos e ecos nas chamadas telefônicas, causados por interferências. Redes do tipo ADALINE podem ser aplicadas para essa finalidade;
  • Controle de navegação e movimentação de veículos automatizados;
  • Reconhecimento de padrões, onde redes neurais multicamada são largamente empregadas;
  • Aplicações na medicina, onde uma rede neural pode ser treinada para reconhecer os sintomas e, assim, diagnosticar o tratamento adequado;
  • Reconhecimento e reprodução de voz.

Arquitetura de uma Rede Neural

A arquitetura de uma rede é formada por camadas, onde cada neurônio de uma dada camada somente se relaciona com neurônios de outra(s) camada(s) e possui função de ativação e pesos com algum tipo de padrão em relação aos outros neurônios da mesma camada em que se encontra.

Segundo o número de camadas (os neurônios de entrada não contam no momento da contagem de camadas), uma arquitetura pode ser classificada como:

  • Redes de uma única camada (singlelayer) - neste modelo, há somente unidades de entrada e unidades de saída;
  • Redes de várias camadas (multilayer) - neste modelo, além das unidades de entrada e unidades de saída, há neurônios denominados unidades ocultas.

A figura abaixo ilustra uma rede neural, onde os círculos representam neurônios e as setas indicam o fluxo de impulso (dados) de um neurônio para o outro. O neurônio Y é chamado de neurônio de saída, responsável por emitir o sinal resultante dos estímulos recebidos.

Exemplo de Rede Neural

Há também a aplicação de camadas competitivas, cuja representação gráfica difere um pouco daquelas que estamos discutindo.

O Treinamento de uma Rede Neural

O treinamento de uma rede geralmente é feito de forma iterativa por meio do ajuste de seus pesos.
Desta forma, podemos classificar uma rede quanto ao tipo de treinamento da seguinte forma:

  • Treinamento supervisionado - o treinamento é realizado por meio de testes sobre vetores de entrada cuja saída já é conhecida (memória associativa), desta forma, os pesos são ajustados de acordo com o algoritmo de aprendizado a fim de refletir o resultado esperado. Este tipo de treinamento é muito comum em classificação de padrões, podendo-se utilizar redes multilayer com treinamento por backpropagation para resolução de problemas mais difíceis;
  • Treinamento não-supervisionado - as redes são auto-organizáveis e o treinamento é feito por meio de uma seqüência de vetores testes provida, mas sem vetor de saída a ser associado. Desta forma, a rede modifica seus pesos a fim de conseguir associar os vetores de saída aos vetores de entrada.

Uma rede também pode ser projetada com pesos fixos, sendo capazes de resolver problemas de solução complicada se utilizando técnicas tradicionais. Além disso, alguns autores apontam uma terceira categoria: treinamento auto-supervisionado.

Funções de Ativação

Uma função de ativação representa aquela receberá o resultado do somatório do produto de cada entrada por cada peso e responderá com um único valor, usado como entrada para o próximo neurônio ou como resposta da rede neural.

Há várias funções de ativação possíveis de serem aplicadas, de acordo com o tipo de saída que desejamos. As mais comuns são:

  • Função identidade: empregada principalmente nas unidades de entrada, uma vez que as respostas destas devem ser iguais aos valores passados pelo ambiente;
  • Função identidade em rede neural

  • Função step, com threshold Ө: muito usada em redes single-layer a fim de restringir os parâmetros passados em valores binários (1 ou 0) ou bipolares ( 1 ou –1);
    • Step binária;
    • Função step binária em rede neural

    • Step bipolar;
    • Função step bipolar em rede neural

  • Função sigmóide: é especialmente útil em redes treinadas por backpropagation. Há principalmente dois tipos:
    • Sigmóide binária;
    • Sigmóide bipolar.

Observações a serem consideradas

Dada uma matriz W = (wij) formada pelos pesos para cada unidade Yj a partir dos estímulos recebidos das unidades Xi, podemos calcular y_inj para cada unidade como sendo produto de dois vetores, ou seja:

Cálculo dos estímulos recebidos por um neurônio artificial

Além disso, pode-se incluir um componente x0 = 1 como sendo um dos valores de entrada e utilizar-se de um peso w0j = bj, conhecido como bias. Desta forma, a equação fica:

Cálculo dos estímulos recebidos por um neurônio artificial com bias

O uso de bias em nossas redes neurais mostra-se importante, pois permite que fixemos o valor de threshold adotado em nossa função de ativação, sendo necessário então atualizar somente os pesos e o bias na rede. Como o bias pode ser encarado como sendo o peso para um neurônio cuja entrada é sempre 1, percebe-se que a mesma regra para atualização dos pesos é válida também para a atualização do bias, tornando assim mais fácil nossa tarefa. Ficou difícil de entender? Vamos então mostrar alguns números…

Suponha uma rede neural cuja função de ativação é a step bipolar, isto é, f(y_in) = 1, se y_in θ e f(y_in) = -1, caso contrário.

Sabemos que y_in = x1*w1 + x2*w2 + … + xn*wn, então podemos resumir nosso problema à inequação:

x1*w1 + x2*w2 + … + xn*wn θ

Que, sendo verdadeira, fará f(y_in) ter valor 1.

Então, para que nossa rede neural seja corretamente ajustada, precisaríamos ajustar não somente os pesos, mas também o threshold θ, tarefa não muito simples, já que precisaríamos ter alguma fórmula de ajuste do threshold. Entretanto, podemos fazer algumas alterações, veja só:

x1*w1 + x2*w2 + … + xn*wn θ

- θ + x1*w1 + x2*w2 + … + xn*wn 0

1*(-θ) + x1*w1 + x2*w2 + … + xn*wn 0

Agora, podemos considerar o primeiro termo 1*(-θ) = x0*w0, isto é, o valor de entrada sempre 1 um peso (que nós chamamos de bias, lembra?) cujo valor poderá ser ajustado da mesma forma que ajustamos os demais pesos (isto é, utilizando a mesma regra de aprendizado), o que seria o mesmo que ajustar o threshold. Ficou mais fácil de entender agora? :)

Algumas redes neurais

  • Neurônios de McCulloch-Pitts - primeiras redes neurais, foram concebidas como uma combinação de neurônios utilizando um tempo de espera entre a transmissão de um neurônio e outro, o que permitiu modelar alguns processos fisiológicos, como a percepção de quente e frio. Utiliza-se de um valor de threshold na tomada de decisões;
  • Aprendizagem Hebb - primeiras redes neurais capazes de aprender por meio do reajuste de pesos. Também se utiliza de uma função de threshold;
  • Perceptron - contando com regras de aprendizagem mais poderosas que o Hebb, utiliza-se de pesos fixos entre as unidades de entrada e suas conexões e pesos ajustáveis entre as demais unidades. Da mesma forma que os dois anteriores, utiliza-se de uma função threshold;
  • Adaline - trata-se de uma rede single-layer que se utiliza de uma regra de aprendizagem conhecida como regra delta, que busca reduzir a diferença entre a saída de uma dada unidade e a saída realmente desejada. Madaline é uma extensão multilayer do Adaline;
  • Backpropagation - utiliza-se da propagação das informações sobre os erros nas unidades de saída para as unidades ocultas, a fim de realizar o reajuste;
  • Redes de Hopfield - Estas redes funcionam como redes de memória associativa, o que permite resolver problemas em um número de iterações mais satisfatório;
  • Neocognitron - redes neurais especializadas em reconhecimento de caracteres;
  • Máquina de Boltzman - redes neurais não-determinísticas, nas quais os pesos e ativações são alterados por meio de funções de densidade probabilística;
  • Implementações em Hardware.

Alguns nomes que se destacaram nos anos 70 são Kohonen (desenvolvedor de redes para reconhecimento de voz e problema do caixeiro viajante), Anderson (aplicações em diagnósticos médicos), Grossberg (146 trabalhos publicados) e Carpenter (desenvolvedor da teoria da ressonância adaptativa).

O Neurônio de McCulloch-Pitts

Principais características do modelo de neurônio proposto por McCulloch e Pitts:

  • A ativação do neurônio de McCulloch-Pitts é binária;
  • Neurônios são conectados por caminhos direcionados e baseados em pesos;
  • Uma conexão é excitatória se o peso associado for positivo, caso contrário, ela é inibitória;
  • Há um threshold fixado para cada neurônio;
  • Caso haja uma entrada inibitória diferente de zero, o neurônio não pode disparar (inibição absoluta);
  • Há um tempo de atraso na transmissão do sinal de um neurônio para outro.

Função de ativação para um neurônio de McCulloch-Pitts

Algumas redes neuronais de McCulloch-Pitts

(Usando θ = 1 como threshold)

Rede Neural AND
Rede Neural AND

Rede Neural OR
Rede Neural OR

Rede Neural AND NOT
Rede Neural AND NOT

Rede Neural XOR
Rede Neural XOR

Rede Neural Quente-Frio
Rede Neural Quente-Frio

[Conteúdo pertencente ao Material do curso de Inteligência Artificial e ao Material do curso de Redes Neurais Artificiais]

Um Comentario