Uso de Redes Neurais para o Reconhecimento de Padrões Márcia Cristina Cera Trabalho da disciplina CMP135 Arquiteturas Especiais de Computadores Professor: Philippe Olivier Alexandre Navaux Semestre: 2005/2
1
Introdução
De modo geral, a grande maioria dos computadores atuais foram concebidos com uma arquitetura voltada a computação matemática onde o objetivo principal é a realização de operações matemáticas. Essa arquitetura, conhecida como arquitetura de Von Neuman, não pressupõe nenhum tipo de inteligência nas ações da máquina. Isso implica que a máquina apenas executa comandos sem questioná-los ou armazenar algum tipo de conhecimento e assim poder realizar um uso inteligente dessa informação. Se fosse possível incorporar a extração e armazenamento de conhecimento nas arquiteturas de computadores, estas poderiam interpretar e relacionar dados e instruções tomando decisões de forma inteligente. Assim, as arquiteturas passariam a ter um comportamento semelhante ao cérebro humano. Buscando essa semelhança com o cérebro humano surgiram os sistemas conexionistas onde o exemplo mais popular são as redes neurais [1]. Uma rede neural é composta por um conjunto de neurônios (elementos de processamento) interconectados. Cada neurônio pode estar conectado com muitos outros compondo uma complexa estrutura de rede. As redes neurais são uma coleção massivamente paralela de unidades de processamento pequenas e simples, onde as interligações formam a maior parte da inteligência da rede. Essas redes são empregadas para aplicações de controle de processos na indústria química, reconhecimento de fala, reconhecimento de caracteres e em softwares adaptativos tais como agentes e robótica autônoma [8]. Uma importante aplicação dessas redes é no reconhecimeto de padrões (fala, caracteres, imagens, etc) e o foco deste trabalho está voltado ao uso das redes neurais nesse tipo de aplicação. O restante desse texto está organizado da seguinte forma. A próxima seção descreve brevemente as redes neurais e sua estrutura. Em seguida será mostrado como estas redes são empregadas no
1
reconhecimento de padrões. A seção seguinte apresenta algumas iniciativas para o desenvolvimento de hardware específico para redes neurais. Por fim serão apresentadas as conclusões e as referências utilizadas na elaboração do texto.
2
Redes Neurais
O cérebro humano é capaz de processar uma quantidade muito grande de informações muito rapidamente. Pesquisas em inteligencia artificial procuram organizar elementos processadores de forma similar a organização dos neurônios do cérebro humano (veja figura 1) buscando obter uma capacidade de processamento similar [5]. Analogamente ao cérebro humano, uma rede neural caracteriza-se por ser composta por elementos processadores, chamados reunônios, densamente interconectados que são capazes de adquirir conhecimento com o passar do tempo. O neurônio artificial adquiri conhecimento através de seu relacionamento com os demais neurônios, baseado na repetição de um conjunto de soluções onde a saída de um neurônio da rede compõem a entrada de outro.
Figure 1: Estrutura dos neurônios biológicos [1]
Para facilitar a compreenção das redes neurais computacionais a figura 2 apresenta a estrutura de um neurônio artificial. Cada neurônio possui um número I de entradas x i e uma saída y. Cada entrada possui um peso associado wi (i = 1, ..., I). Ainda pode existir um parâmetro adicional do neurônio w0 chamado de viés (bias) que pode ser visto como o peso associado com uma entrada x0 que é sempre 1. Um neurônio é feddforward, ou seja, as conexões são direcionadas da entrada para a saída do neurônio [4]. A figura 3 possui a representação da organização de uma rede neural, onde existem três níveis de neurônios. Nela, cada neurônio computa o somatório de suas entradas incluíndo o viés (b), formaliza esses falores através de uma função de transferência ou ativação. As redes neurais podem adquirir conhecimento usando um algoritmo chamado backpropagation. Com esse algoritmo, os dados de entrada são repetidamente apresendos para a rede neural. A 2
Figure 2: Estrutura de um neurônio artificial [4]
Figure 3: Representação de uma rede neural com três níveis [1]
casa apresentação a saída da rede neural é comparada com a saída desejada e um valor de erro é calculado. Esse erro é o propagado de volta (backpropagated) a rede neural e usado para ajustar os pesos buscando reduzir o erro a cada iteração para que o resultado aproxime-se cada vez mais da saída desejada. Esse processo é conhecido como "treinamento" [7]. Apesar das redes neurais serem inspiradas nas ligações entre neurônios do cérebro humano, existem algumas diferenças básicas entre as redes neurais do cérebro e as artificiais. O cérebro humano é composto por um grande número de componentes (em torno de 10 11 ) conectados com muitos outros componentes (em torno de 104 ). Cada componente realiza computações simples baseadas nas informações que recebe pelas suas conexões. Nas redes neurais, os neurônios estão conectados randomicamente ou uniformemente e todos eles realizam a mesma computação. A saída 3
de cada neurônio é um valor numérico simples computado com uma função nonotômica que reflete o produto das computações dos demais neurônios da rede [8]. Apesar de não se poder estimar com exatidão como as redes neurais naturais funcionam, podese fazer uma comparação especulativa sobre as redes neurais naturais e computacionais. Existem bilhões de neurônios no cérebro humano, salvo diferenças existentes entre os indivíduos, algo em torno de 2.1012 neurônios. Considerando que o tempo de repouso dos neurônios é em torno de 10 ms, isso implicaria em uma frequência de processamento de 100 Hz. O cérebro como um todo teria um poder de processamento de 2.1014 operações lógicas por segundo. Comparando com um processador de 64 bits PowerPC 970 com uma frequência de 3 GHz que corresponde a 2.10 11 operações lógicas por segundo. Lembrando que um neurônio possui mais de 1000 conexões, ele tem pelo menos 1000-bit ao invés de 64-bit. Como resultado, um neurônio pode processar aproximadamente 5, 8.1032 mais informações (2.101000 /2.1064 ), fazendo o cérebro aproximadamente 5, 8.1035 mais potente que um computador de última linha. Como pode ser visto pelas estimativas anteriores, o sistema composto pelos neurônios biológicos possui a abilidade de fazer operações paralelas distribuídas sobre muitos neurônios. Essa é uma das motivações para a construção das redes neurais computacionais, as quais buscam esse grande volume de computação paralela com representação distribuída. A próxima seção desse texto apresenta um emprego das iniciativas de redes neurais computacionais - a busca por reconhecimento de padrões.
3
Reconhecimento de Padrões
Os seres humanos são capazes de reconhecer padrões com grande rapidez. Faz parte da natureza humana, ao observar um objeto, fazer uma coleta de informações, as quais são comparadas com as propriedades e comportamentos conhecidos e armazenados em sua mente. Através dessa comparação os seres humanos são capazes de reconhecer o alvo de sua observação. Este conceito de reconhecimento é simples e familiar para todos em um ambiente real, mas no contexto da inteligência artificial, o reconhecimento não é uma tarefa trivial. Não existe nenhuma máquina ou software de inteligência artificial que seja capaz de igualar-se a capacidade de reconhecimento do cérebro humano [3]. As iniciativas para o reconhecimento de padrões artificialmente dividem-se em duas categorias: de reconhecimento de itens concretos e abstratos [3]. O reconhecimento de itens concretos envolve o reconhecimento de impressões digitais, assinaturas, objetos físicos, formas de ondas, voz, faces, enfim, o reconhecimento de itens que existem concretamente. Os elementos abstratos seriam itens sem forma física como por exemplo a solução para um determinado problema. O reconhecimento de padrões envolve três níveis de processamento: filtragem da entrada, extração de características e classificação [3]. A filtragem da entrada de dados tem o objetivo de eliminar dados desnecessários ou distorcidos fazendo com que a entrada apresente apenas dados
4
relevantes para o reconhecimento do objeto em análise. A extração de características consiste da análise dos dados de entrada a fim de extrair e derivar informações úteis para o processo de reconhecimento. O estágio final do reconhecimento de padrões é a classificação, onde através da análise das características da entrada de dados o objeto em análise é declarado como pertencente a uma determinada categoria. Quando busca-se realizar o reconhecimento de padrões em modelos estáticos, em especial a fase de classificação que é bastante onerosa, esses modelos são eficientes apenas quando suposições de limite são satisfeitas. A eficiência de modelos estáticos depende de um grande conjunto de suposições ou condições sobre as quais o modelo é construído. Para que o modelo seja empregado com sucesso, é necessário que os usuários possuam um bom conhecimento sobre as propriedade dos dados analisados e das capacidades do modelo [10]. As redes neurais são uma alternativa promissora para vários métodos de classificação convencionais. Elas possuem vantagens como ser adaptativas em função dos seus dados (data driven), ou seja, são capazes de se ajustar a si próprias sem a necessidade de qualquer especificação explícita. As redes neurais também são modelos não lineares capazes de modelar com flexibilidade as complexas relações do modelo do mundo real. A seguir serão apresentados alguns exemplos de emprego de redes neurais no reconhecimento de padrões.
3.1 Reconhecimento de faces As redes neurais são empregadas no reconhecimento faces pela sua capacidade de aprendizado (treinamento) que permite tratar eficientemente essaa complexa tarefa. Entretanto, uma desvantagem dessa arquitetura é necessitar de muitos ajustes (número de níveis, número de nós, razões de aprendizado, etc) para obter bom desempenho [9]. Uma série de métodos utilizando redes neurais foram propostos para o reconhecimento de faces, onde foi buscado encontrar os ajustes coerentes. Dentre os métodos de detecção de faces que utilizam redes neurais, um dos mais significantes foi proposto por Rowley et al. [6]. Este modelo emprega uma rede neural multi-nível treinando-a para o reconhecimento de padrões de face e padrões de não-face. Para a classificação dos padrões como faciais ou não, usa-se a rede neural para buscar uma função discriminante entre eles usando medidas de distância. O método proposto é composto por dois componentes principais: uma rede neural múltipla capaz de detectar padrões de face e um módulo de decisão para tomar a decisão final dentre os múltiplos resultados detectados. A figura 4 exemplifica o método. Nela, o método recebe uma imagem de 20X20 pixel e resulta em uma classificação de -1 a 1. Dado um padrão de teste, a saída de uma rede neural treinada indica a evidencia de um padrão não-face (valor aproximado a -1) ou face (aproximado a 1). Para o treinamento de uma rede neural, em torno de 1.050 faces simples de vários tamanhos, orientações, posições e intensidades são usadas. O segundo componente desse método busca unir detecções sobrepostas e arbitrar entre as saídas de múltiplas redes. Esquemas simples de arbitrágem são empregados para obter desempenho, como por exemplo operadores lógicos AND/OR ou por eleição. 5
Figure 4: Rede neural multi-nível [9]
3.2 Reconhecimento de Voz As redes neurais também são empregadas para o reconhecimento de padrões de voz. Para que seja possível realizar o reconhecimento são seguidos quatro passos básicos [2]. Primeiramente ocorre a digitalização da fala que se quer reconhecer. Um segundo passo realiza uma computação das características que representam o domínio espectral contido na fala (regiões de alta energia em frequências particulares). Esse passo é computado a cada 10 ms, sendo que cada seção de 10 ms é chamada de quadro (frame). O terceiro passo consiste do uso de uma rede neural para realizar a classificação de um conjunto de características dentro das características fonéticas básicas para cada frame. Por fim, o quarto passo aplica um método de busca para associar as saídas da rede neural com padrões de palavras a fim de encontrar a palavra com a qual as saídas da rede mais se assemelham. Um exemplo de método de busca é o Viterbi search [2], o qual foi empregado no exemplo apresentado aqui. A figura 5 apresenta uma representação desses passos incluíndo um passo onde o resultado é analisado através uma medida de confiança para a aceitação ou rejeição das palavras processadas. A figura 6 apresenta uma representação na qual fica mais claro entender como acontece o reconhecimento de voz a partir das redes neurais. A voz digitalizada em formato de onda é convertida para uma representação de domínio espectral. Nesse processo são tomadas medidas a fim de reduzir os efeitos de ruídos na fala analisada. Para obter informações sobre o índice acústico é aplicada uma janela de contexto (context window). Após, tem-se o quadro de interesse para o processamento e ainda os -60, -30, 30 e 60 ms longe do quadro de interesse, dessa forma é considerada a natureza dinâmica da fala. A saída da janela de contexto é enviada a rede neural (26 características por quadro em 5 quadros, ou seja, 130 características). A saída da rede neural é a classificação de cada quadro de entrada, medida em termos de probabilidade das categorias de fonemas básicos. Essas medidas de probabilidade são dispostas em uma matriz de probabilidades de categorias de fonemas básicos 6
Figure 5: Passos para o reconhecimento de voz [2]
sobre o tempo. A busca Viterbi é empregada para procurar o melhor caminho através da matriz de probabilidades. O melhor caminho encontrado corresponderá a palavra reconhecida.
Figure 6: Representação do modelo de reconhecimento de voz [2]
A figura 7 ilustra a rede neural empregada nesse caso, a qual possuia 130 nós de entrada, um para cada característica dos 5 quadros a serem analisados. Além das entradas, existem 200 nós escondidos e 544 nós de saída. A rede foi treinada usando 1500 amostras para cada categoria [2]. É importante lembrar que a função da rede neural não é determinar se o quadro analisado é ou não pertencente a uma determinada categoria, mas sim informar qual a probabilidade daquele quadro 7
pertencer a uma determinada categoria.
Figure 7: Rede Neural empregada [2]
4
Arquiteturas de Redes Neurais
Esta seção tem o objetivo de complementar as seções anteriores mostrando três sistemas de hardware de redes neurais. Duas das iniciativas são comerciais e uma desenvolvida por um grupo de pesquisa univarsitário.
4.1 Soluções Adaptativas CNAPS CNAPS-1064 é um circuito eletrônico desenvolvido por Dan Hammerstron que teve sua primeira iniciativa nos anos 80 com o circuito Inova N64000. O CNAPS-1064 possui 80 elementos de processamento mas apenas 64 deles estão abilitados, os quais operam de forma SIMD. Cada subprocessador tem 4 Kbytes de memória local e uma unidade de aritmética de ponto fixo de 1 bit , 8 bits ou 16 bits . O circuito não apresenta unidade de aritmética de ponto flutuante nem possibilita a realização de divisões. Cada sub-processador pode emular um ou mais neurôniso e múltiplos circuitos podem ser integrados.
4.2 IBM ZISC O circuito eletrônico ZISC036 foi desenvolvido pelo Laboratório IBM Essonnes em 1994. Cada circuito possui 36 neurônios ou protótipos com 64 entradas de 8 bits . Esse circuito é montado em três formatos de placas: 8
Figure 8: Foto do circuito CNAPS
Figure 9: Estrutura do circuito CNAPS
• Placa ISA: 16 circuitos com 576 protótipos (é permitido associar outras placas para obter protótipos adicionais); • SIZM: 6 circuitos em uma placa do tipo SIMM, visando ser um sistema de fácil expansão; • Placa PCI: 1 circuito com slots de expansão para 3 placas SIZM possibilitando 684 protótipos.
5
TOTEM
O circuito eletrônico TOTEM foi desenvolvido pela Universidade de Trento, o qual oferece bom desempenho para redes neurais feedforward. Esse circuito foi desenvolvido particularmente para a execução dos algoritmos de Reactive Tabu Search ou RTS. O cincuito é composto por 32 processadores simples que trabalha com uma razão de 30 MHz obtendo um desempenho de 1 bilhão de operações por segundo. Cada um dos processadors possui uma região de memória de 128 x 8 bits e um acumulador de 32 bits . Múltiplos circuitos podem ser combinados para construir grandes redes. 9
Figure 10: Foto do circuito ZISC036
Figure 11: Arquitetura do circuito ZISC036
6
Conclusão
Este texto apresentou uma breve descrição das características das redes neurais e de sua utilização para o reconhecimento de padrões. As aplicações de reconhecimento de padrões aproveitam a capacidade de aprendizado e a grande capacidade de processamento das redes neurais a fim de obter identificações de padrões dentro de categorias previamente estabelecidas mais rapidamente. Além disso, quando uma rede neural possui o treinamento adequado, ela consegue tolerar e contornar ruídos presentes na amostra analisada oferecendo um reconhecimento de padrões mais eficiente. Para a elaboração deste texto pesquisou-se projetos de hardware que implementam redes neurais. Constatou-se que a grande maioria das iniciativas encontradas datam da década de 80 e 90. Acredita-se que as redes neurais deixaram de ser das pesquisas de desenvolvimento de hardware
10
Figure 12: Foto do circuito TOTEM
por resultar em um dispositivo com um custo elevado quando comparada as redes neurais em nível de software . As redes neurais em software emulam o comportamento de um rede neural física oferecendo desempenho e comportamento similar com um custo de aquisição consideravelmente inferior.
References [1] M. Hagan, H. Demuth, and M. Beale. Neural Network Design. PWS Publishing Company, Boston, MA, 1996. [2] John-Paul Hosom, Ron Cole, and Mark Fanty. Speech recognition using neural networks at the center for spoken language understanding, 2005. http://cslu.bme.ogi.edu/tutordemos/nnet_recog/recog.html - acessado em outubro 2005. [3] John Peter Jesan. The neural approach to pattern recognition, 2005. Ubiquity: An ACM IT Magazine and forum - http://www.acm.org/ubiquity/views/v5i7_jesan.html - acessado em outubro 2005. [4] David J.C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge University Press, USA, 2005. [5] Tom M. Mitchell. Neural networks & connectionist systems, http://www.aaai.org/AITopics/html/neural.html - acessado em outubro 2005.
2005.
[6] H. Rowley, S. Baluja, and T. Kanade. Rotation invariant neural network-based face detection. In IEEE Conference Computer Vision and Pattern Recognition, 1998.
11
[7] Neuro Solutions. What is a neural network?, 2005. http://www.neurosolutions.com/products/ns/whatisNN.html - acessado em outubro 2005. [8] Wikipedia. Neural network, 2005. http://en.wikipedia.org/wiki/Neural_network - acessado em outubro 2005. [9] Ming-Hsuan Yang, David J. Kriegman, and Narendra Ahuja. Detecting faces in images: A survey. In IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, volume 24, 2002. [10] Guoqiang Peter Zhang. Neural networks for classification: A survey. IEEETSMC: IEEE Transactions on Systems, Man, and Cybernetics, 30, 2000.
12