UNIVERSIDADE DO PLANALTO CATARINENSE DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE SISTEMAS DE INFORMAÇÃO (BACHARELADO) THIAGO KRAMER FERTIG AUTENTICAÇÃO DE USUÁRIOS ATRAVÉS DO RECONHECIMENTO DE VOZ LAGES (SC) 2011 THIAGO KRAMER FERTIG AUTENTICAÇÃO DE USUÁRIOS ATRAVÉS DO RECONHECIMENTO DE VOZ Trabalho de Conclusão de Curso submetido à Universidade do Planalto Catarinense para obtenção dos créditos de disciplina com nome equivalente no curso de Sistemas de Informação Bacharelado. Orientação: Prof(ª). Daiana Petry Leite, M.Sc. LAGES (SC) 2011 THIAGO KRAMER FERTIG AUTENTICAÇÃO DE USUÁRIOS ATRAVÉS DO RECONHECIMENTO DE VOZ ESTE RELATÓRIO, DO TRABALHO DE CONCLUSÃO DE CURSO, FOI JULGADO ADEQUADO PARA OBTENÇÃO DOS CRÉDITOS DA DISCIPLINA DE TRABALHO DE CONCLUSÃO DE CURSO, DO 8º. SEMESTRE, OBRIGATÓRIA PARA OBTENÇÃO DO TÍTULO DE: BACHAREL EM INFORMAÇÃO SISTEMAS DE Lages (SC), 09 de Dezembro de 2011 Prof. Daiana Petry Leite, M.Sc. Orientador BANCA EXAMINADORA: Prof. Sérgio Murilo Schütz, M.Sc. UNIPLAC Prof. Madalena Pereira da Silva, M.Sc. UNIPLAC Prof. Sabrina Bet Koerich, M.Sc. Professor de TCC Prof. Sabrina Bet Koerich, M.Sc. Coordenador de Curso LISTA DE ILUSTRAÇÕES FIGURA 1 FIGURA 2 FIGURA 3 FIGURA 4 FIGURA 5 FIGURA 6 FIGURA 7 FIGURA 8 FIGURA 9 FIGURA 10 FIGURA 11 FIGURA 12 FIGURA 13 FIGURA 14 FIGURA 15 FIGURA 16 FIGURA 17 FIGURA 18 FIGURA 19 FIGURA 20 FIGURA 21 FIGURA 22 FIGURA 23 FIGURA 24 - Imagem da composição de um neurônio. .............................................17 Modelo do neurônio artificial proposto por McCulloch. ......................19 Neurônio artificial. ................................................................................19 Superfície de erro quadrática para neurônios de função linear. ............24 Superfície de erro para neurônios com funções de ativação nãolineares. .................................................................................................24 Grafo arquitetural de um perceptron de múltiplas camadas. ................26 Representação geral do sistema ............................................................33 Modelagem do banco de dados. ............................................................36 Diagrama das classes Usuario e SinalVoz ............................................37 Diagrama das classes de interface do usuário.......................................38 Diagrama das classes de gerenciamento de camada da MLP ...............38 Diagrama das classes de treinamento e utilização da fft ......................39 Diagrama das classes de gerenciamento dos neurônios da rede MLP .40 Diagrama de classe central da MLP .....................................................41 Configuração de variáveis da rede. .......................................................44 Inserção de um áudio. ...........................................................................45 Método de treinamento. ........................................................................46 Método treinar.......................................................................................46 Inicialização de variáveis do backpropagation. ....................................46 Tela inicial do protótipo. .......................................................................47 Inicializa a captura. ...............................................................................48 Interrompendo a captura. ......................................................................48 Gráfico gerado da palavra casa. ............................................................49 Autenticação realizada. .........................................................................50 QUADRO 1 QUADRO 2 QUADRO 3 QUADRO 4 QUADRO 5 QUADRO 6 QUADRO 7 QUADRO 8 - Requisito funcional – manter informações do usuário .......................31 Requisito funcional – treinamento do sinal. .......................................31 Requisito funcional – verificar compatibilidade. ................................32 Requisito funcional – realizar login ....................................................32 Requisitos suplementares ....................................................................33 Casos de uso ........................................................................................34 Caso de uso – gravar sinais de voz .....................................................34 Caso de uso – informar dados ao administrador .................................34 QUADRO 9 QUADRO 10 QUADRO 11 QUADRO 12 QUADRO 13 QUADRO 14 QUADRO 15 - Caso de uso – cadastrar usuário ..........................................................35 Exceção caso de uso – cadastrar usuário ............................................35 Exceção caso de uso – cadastrar usuário ............................................35 Caso de uso – treinamento da rede MLP ............................................35 Exceção caso de uso – treinamento da rede MLP ..............................35 Exceção caso de uso – realizar autenticação ......................................36 Caso de uso – realizar autenticação ....................................................36 TABELA 1 TABELA 2 TABELA 3 TABELA 4 TABELA 5 TABELA 6 TABELA 7 TABELA 8 TABELA 9 TABELA 10 TABELA 11 TABELA 12 TABELA 13 TABELA 14 TABELA 15 - Modelo da tabela de testes. ..................................................................52 Teste número um. .................................................................................52 Teste número dois. ...............................................................................53 Teste número três. ................................................................................53 Teste número quatro. ............................................................................53 Teste número cinco ..............................................................................53 Teste número seis. ................................................................................54 Teste número sete. ................................................................................54 Teste número oito. ................................................................................54 Teste número nove. ..............................................................................55 Teste número dez. ................................................................................55 Teste do método FFT número um. .......................................................56 Teste do método FFT número dois. .....................................................56 Teste com dupla camada intermediária número um. ...........................56 Teste com dupla camada intermediária número dois. ..........................56 LISTA DE ABREVIATURAS E SIGLAS FFT GMMs HMMs MCP MFC MFCCs MLP NCI NNE NNI NNS QTD RAL RNA SGBD SOM WIMP - Fast Fourrier Transform - Gaussian Mixture Models - Markov Models - McCulloch e Pitts - Mel-frequency Cepstrum - Mel-frequency Cepstral Coefficients - Multilayer Perceptron - Número de camadas intermediárias - Número de neurônios na camada de entrada - Número de neurônios na camada intermediária - Número de neurônios na camada de saída - Quantidade de sinais de audio utilizados para cada locator - Reconhecimento Automático de Locutor - Rede Neurais Artificial - Sistema Gerenciador de Banco de Dados - Self-Organizing Maps - Window, icon, menu and pointig devices RESUMO A grande demanda por uma dita portabilidade, onde cada vez mais tarefas rotineiras da população são transferidas para a máquina, vem de encontro ao paradigma da segurança de dados, pois todo dia tem-se buscado métodos de proteger a informação que é vinculada aos softwares, considerando a precariedade dos métodos mais utilizados para a autenticação de usuário, os quais são suscetíveis a diversos problemas. Para buscar uma possível solução a esta adversidade é que o principal objetivo deste trabalho é proposto, aplicar os conhecimentos de Redes Neurais Artificiais no reconhecimento de locutor para desenvolver um protótipo que realize a autenticação de usuários. A técnica utilizada no treinamento da rede e no reconhecimento dos sinais de áudio foi a MLP (Perceptron de Múltiplas Camadas). Durante a etapa de teste foram utilizadas três alternativas a rede, treinando-a com uma simples camada intermediária, configurando a primeira amostragem de maneira aleatória para posteriormente comparar resultados com outros treinamentos realizados com parâmetros de configuração diferentes. A utilização de duas camadas intermediárias também foi desconsiderada, já que nos testes realizados não se notou melhora no resultado, posteriormente a técnica FFT (Transformada Rápida de Fourier) foi adotada para tentar extrair algumas características nos sinais de voz. O modelo proposto cumpriu com o seu objetivo principal que visava realizar a autenticação de usuário corretamente através do reconhecimento de sua voz, porém a limitação da linguagem java para trabalhar com valores double impediu que os resultados fossem mais expressivos. Palavras-chave: Inteligência Artificial; MLP; reconhecimento de locutor; Redes Neurais Artificiais; Autenticação de Usuário. ABSTRACT The great demand for a so-called portability, where more and more population`s routine tasks are transferred to the machine, comes against of data security paradigm, because every day people have sought methods to protect personal information that are used in software. Given the user authentication methods`s precariousness, which are susceptible to various problems. Searching for a possible solution to this adversity, the project main objective is to apply all the knowledge of neural networks in speaker recognition to develop a prototype that performs an user authentication. The technique used on the network training and the audio signals recognition was the MLP (multilayer perceptron). During the test phase we used three alternative ways of network setup, training it with a simple intermediate layer, setting randomly the first sample and compare later the results with other training conducted with different setup parameters. The use of two hidden layers was also disregarded, as in the tests wasnt noted improvement on the result, then the Fast Fourier Transform`s technique is adopted to extract some speech signals features. The proposed model achieved its main objective which was authenticate the user correctly by recognizing his voice, but the limitation of Java language to work with double values does not allow the network to achieve better results Keywords: Artificial Intelligence, Authentication. MLP, Speaker Recognition, Neural Networks, User SUMÁRIO 1 INTRODUÇÃO ..........................................................................................................6 1.1 Apresentação .............................................................................................................6 1.2 Descrição do problema ..............................................................................................8 1.3 Justificativa ................................................................................................................8 1.4 Objetivo geral ............................................................................................................9 1.5 Objetivos específicos .................................................................................................9 1.6 Metodologia ...............................................................................................................9 2 RNAs e autenticação de usuários ............................................................................11 2.1 Introdução à autenticação de usuários .....................................................................11 2.1.1 Métodos de autenticação ................................................................................................. 12 2.1.2 Métodos de autenticação biométricos ............................................................................. 12 2.2 Introdução a RNA....................................................................................................13 2.2.1 Surgimento RNAs............................................................................................................. 14 2.2.2 Histórico .......................................................................................................................... 14 2.2.3 Redes biológicas .............................................................................................................. 16 2.2.4 Neurônios artificiais ........................................................................................................ 18 2.2.5 Principais arquiteturas .................................................................................................... 20 2.2.6 Aprendizado ..................................................................................................................... 21 2.2.7 Aprendizado supervisionado ........................................................................................... 22 2.2.8 Correções de erros .......................................................................................................... 23 2.2.9 Aprendizado não supervisionado .................................................................................... 25 2.2.10 Redes perceptron de múltiplas camadas ....................................................................... 25 2.2.11 Algoritmo de Back-Propagation .................................................................................... 25 2.2.12 Arquitetura MLP ........................................................................................................... 26 2.3 Outros trabalhos similares .......................................................................................28 2.4 Conclusão ................................................................................................................29 3 MODELAGEM DO PROTÓTIPO.........................................................................30 3.1 Sumário executivo ...................................................................................................30 3.2 Requisitos funcionais...............................................................................................30 3.3 Requisitos suplementares ........................................................................................32 3.4 Casos de uso ............................................................................................................33 3.5 Expansão de caso de uso .........................................................................................34 3.6 Modelagem banco de dados ....................................................................................36 3.7 Diagrama de classes do protótipo ............................................................................37 3.8 Conclusão ................................................................................................................41 4 IMPLEMENTAÇÃO DO PROTÓTIPO ...............................................................43 4.1 Captura do áudio......................................................................................................43 4.2 Conversão do sinal captado .....................................................................................43 4.3 Configurando a rede MLP .......................................................................................44 4.4 Treinamento da rede MLP .......................................................................................44 4.5 Treinamento em backpropagation ...........................................................................46 4.6 Apresentando a ferramenta ......................................................................................47 5 TESTES .....................................................................................................................51 5.1 Apresentação do modelo de testes ...........................................................................51 5.2 Primeira bateria de testes .........................................................................................52 5.3 Fast Fourier Transform (FFT) .................................................................................55 5.4 Testes com dupla camada intermediária..................................................................56 5.5 Conclusão ................................................................................................................56 6 CONSIDERAÇÕES FINAIS ...................................................................................58 REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................60 APÊNDICES ................................................................................................................62 6 1 INTRODUÇÃO 1.1 Apresentação Em consequência da constante evolução tecnológica, a sociedade utiliza-se de ferramentas que cada vez mais auxiliam as pessoas a realizarem tarefas simples do cotidiano. Proposto por Charles Babbage no século XVII, o computador é uma destas ferramentas, se não a principal entre elas (PAULA, 2000). De certa forma, cresce também de maneira semelhante a busca pela confiabilidade da informação, não só computacionalmente falando, pois sempre foi do interesse de muitos que certos dados importantes fossem mantidos em sigilo. Antigamente usavam-se cofres para armazenamento de documentos importantes, porém hoje em dia isso não é mais necessário. A evolução tecnológica chegou a tal ponto em que não se fazem mais necessários cofres para armazenar qualquer informação, podendo armazená-las digitalmente na memória de um computador. Nenhum método até hoje mostrou-se perfeitamente seguro, já que qualquer maneira de armazenamento digital não está livre de “brechas” e “bugs”. Porém a chance de falha vem diminuindo drasticamente durante os anos. Alguns anos atrás, Dam (1997), já propunha que fosse adotada uma quarta geração de interfaces, que ele chama de interfaces pós-WIMP (window, icon, menu and pointig device), que basicamente são interfaces que utilizam-se da interação do usuário (gestos e reconhecimento de voz). Com a adoção deste novo paradigma de interfaces, começa a ser cogitada a possibilidade de fazer com que a máquina reconheça seu usuário e para isso são 7 utilizados os métodos biométricos de reconhecimento humano, onde o usuário pode ser reconhecido através de suas caracteríscticas únicas, como a impressão digital, sua voz ou até mesmo a íris de seu olho. A identificação do usuário através do reconhecimento de sua própria voz passa a ser um recurso amplamente desenvolvido, mesmo que pouco disseminado na sociedade, pois através da voz a agilidade e confiabilidade na busca e armazenamento desses dados aumentam drasticamente. Atualmente os métodos mais utilizados para o reconhecimento de locutor são baseados na extração de coeficientes mel-ceptrais (MFCCs) 1das locuções, seguidos da identificação do locutor através da Hidden Markov Models (HMMs)2 ou quantização vetorial3. Esta preferência se deve à qualidade dos resultados obtidos, (MAFRA, 2002). Neste trabalho é proposta uma metodologia para a implementação de um sistema de Reconhecimento de Locutor, fazendo assim a distinção e reconhecimento de diferentes usuários rapidamente e minimizando possíveis problemas em relação a ambientes com ruídos e utilização de diferentes tipos de microfone. O presente trabalho apresenta-se dividido em 6 capítulos. No capítulo 1 é abordada a problemática do projeto, seus objetivos, sua justificativa e também a metodologia empregada no mesmo. O capítulo 2 mostra as redes neurais artificiais e também e técnicas de pré-processamento de voz. A modelagem do protótipo, assim como a especificação das técnicas escolhidas são demostradas no capítulo 3. No capítulo 4 é apresentado o sistema junto com sua implementação devidamente detalhada no capítulo 5, apresenta-se o protótipo e os resultados obtidos. Por fim, as considerações finais são registradas no capítulo 6. 1 Coeficientes que formam um mel-frequency cepstrum (MFC), que por sua vez pode ser considerado como uma representação do espectro de potência à curto prazo de um som. 2 Modelo estatístico de Markov considerado como a mais simples rede bayesiana dinâmica. (Modelo gráfico probabilístico que representa um conjunto de variáveis aleatórias e suas dependências. 3 Originalmente usado para compreção de dados, é uma técnica de quantização clássica que utiliza o processamento do sinal permitindo a modelagem de funções probabilísticas através da distribuição dos vetores do protótipo. 8 1.2 Descrição do problema A crescente inserção no mercado de sistemas que armazenam informações pessoais e dados bancários de usuários vem acompanhada de uma grande preocupação que consiste na confidencialidade destas informações. Ao mesmo passo em que a tecnologia ajuda-nos nas tarefas mais triviais do dia-a-dia, ela pode ser a causadora de grandes problemas já que dados pessoais estarão contidos ali. Com isso constantemente vê-se aumentar a demanda por softwares que priorizem a segurança da informação. 1.3 Justificativa Atualmente, a parte gráfica é crucial de um sistema computacional. Para que ela atenda devidamente as necessidades do usuário, deve ser extremamente usual, prática e visualmente interessante para assim ajudar na construção da imagem do produto, o que auxilia tanto nas vendas quanto na redução de custos (BIAS e MAYHEW, 2008). Ao mesmo passo em que as interfaces vão se aprimorando, vê-se uma busca incessante por praticidade e segurança nos dados veiculados no sistema. Para tal, a identificação do usuário torna-se um problema comum a projetos de engenharia. Várias formas de identificação pessoal são visíveis no cotidiano: documentos, chaves, cartões, códigos e até mesmo senhas de acesso. Todas essas maneiras citadas possuem algo em comum: a identificação da pessoa através de algo que só ela possua ou saiba, fazendo assim, que a mesma tenha que carregar objetos ou decorar códigos (MAFRA, 2002). Toda essa dependência gerada em torno do sigilo da informação acarreta em certos problemas, pois senhas podem ser esquecidas, assim como objetos podem ser perdidos ou até mesmo burlados. É devido a esses problemas e a essas falhas que a utilização de métodos de leitura biométricos, para reconhecimento do usuário, é cada vez mais constante. O 9 reconhecimento de características únicas das pessoas como: impressão digital, voz, íris do olho, entre outras, parece ser uma maneira de se evitar fraudes e conseqüentemente o uso incorreto das informações sigilosas armazenadas no sistema. Segundo Mafra (2002), dentre os métodos biométricos de identificação, a voz recebe bastante atenção dos pesquisadores da área. Esta atenção se deve principalmente à facilidade com que é produzida, capturada, processada e transmitida no estado tecnológico atual. 1.4 Objetivo geral Desenvolver uma aplicação baseada em redes neurais artificiais, para realizar a autenticação de usuários pelo reconhecimento de voz. 1.5 Objetivos específicos a) Apresentar a RNA e alguns métodos utilizados na autenticação de usuários; b) Identificar um modelo de rede neural que solucione o problema proposto no projeto; c) Desenvolver um protótipo para autenticação de usuários utilizando a RNA identificada. 1.6 Metodologia Este trabalho foi iniciado com o desenvolvimento do projeto, que consiste na redação do primeiro capítulo. A próxima etapa foi o desenvolvimento do capítulo 2 – O Reconhecimento de Locutor (padrões para identificação de locutor), que engloba o levantamento bibliográfico necessário para estudar e compreender o processamento de voz e as redes neurais artificiais. Nesta etapa foi realizado o estudo de trabalhos relacionados, 10 objetivando o conhecimento de o que já foi feito na área, para que assim, possa-se evitar a escolha de metodologias comprovadamente ineficazes para este propósito. Após o estudo das metodologias existentes, foram definidas algumas para usar no desenvolvimento do projeto, tais como linguagem de programação que será utilizada para o desenvolvimento do protótipo, técnica de pré-processamento de voz, Rede Neural mais eficaz, entre outras. A partir das especificações do protótipo foi desenvolvido o capítulo três, que consiste na modelagem e implementação do Protótipo. No capítulo quatro foi feita a apresentação do Protótipo, onde foi descrito o processo de implementação realizado. Com a conclusão do capítulo quatro, foi iniciada a etapa de testes, prevista no capítulo cinco, a qual contém a descrição de todo o processo de testes e resultados obtidos. Ao final (capítulo seis) são colocadas as considerações finais, incluindo sugestões para futuros trabalhos. 11 2 RNAs e autenticação de usuários Este capítulo aborda um estudo feito em volta das Redes Neurais Artificiais (RNA), com enfoque na técnica MLP (Multi-Layer Perceptron) e também sobre segurança de dados de autenticação e técnicas de autenticação de usuários. Foi feito também um estudo em cima do reconhecimento de palavras faladas e trabalhos realizados na área. 2.1 Introdução à autenticação de usuários Um dos grandes problemas que se tem hoje no quesito de segurança de dados é relativo à autenticação de usuários. Para que se entenda o conceito da autenticação de usuários, primeiramente deve-se entender o significado da expressão. De forma resumida, autenticação de usuário significa verificar se o usuário é autêntico, legítimo, se ele é realmente quem diz ser, ou seja, realizar um simples “login” é autenticar um usuário. A autenticação de usuário feita da maneira correta interessa diretamente não somente o usuário, mas também ao criador do programa. Qualquer sistema proprietário atualmente faz uso de uma ferramenta de autenticação de usuário, por mais simples que seja, pois é necessário que o cliente realize a autenticação para que seja comprovado que a cópia utilizada é original, obtendo assim um controle contra a pirataria do sistema. 12 2.1.1 Métodos de autenticação Em grande parte dos sistemas a autenticidade do usuário é verificada através de uma seqüência de caracteres alfanuméricos (senhas), que devem ser memorizada pelo usuário e depende do sigilo do mesmo para que a autenticação não seja burlada. (HEINEN, 2004). Outro método comum para autenticar um usuário é a utilização de objetos que contenham características únicas como: chaves, cartões com leitores magnéticos, entre outros. Porém este caso também não tem um nível de segurança elevado, expondo assim os dados confidenciais do usuário. Os maiores problemas com relação a esses métodos descritos acima é a facilidade com que podem ser burlados, pois senhas podem ser descobertas ou até mesmo esquecidas e os objetos podem ser perdidos, comprometendo assim todo o sistema, que depende diretamente da confidencialidade dessas informações. Segundo Petry et al (2004), existem alguns meios de reforçar a segurança dos dados, garantindo assim um crescimento na taxa de confiabilidade de um sistema. O uso da criptografia em dados importantes como senhas, informações bancárias e pessoais possibilita uma troca/transação segura de dados; a criação de senhas complexas também auxilia na proteção dessas informações, evitando que sejam facilmente descobertas. 2.1.2 Métodos de autenticação biométricos Devido aos problemas citados no parágrafo anterior, técnicas de autenticação baseadas em características biométricas físicas, como impressões digitais, voz, exames de retina e da palma das mãos vêm sendo utilizadas para se garantir a autenticidade dos usuários. Essas medidas biométricas atreladas ao usuário para sua autenticação surgem como uma maneira alternativa de diminuir as chances de erro. “A análise biométrica sem intervenção humana (automática) pode ser utilizada junto com os métodos já empregados ou até mesmo substituindo-os” (PETRY et al, 2004). 13 Ainda segundo Petry et al, (2004), a utilização da voz como característica biométrica marcante para a autenticação, também conhecida como reconhecimento automático de locutor (RAL), possui algumas vantagens notáveis quando comparado aos outros métodos de reconhecimento biométrico, tais como: • Hardware de baixo custo; • Facilidade de captura da voz; • Praticidade na aquisição do sinal (método pouco intrusivo); • Inexistência de treinamento prévio. Mesmo apresentando essas vantagens, o RAL possui problemas técnicos que precisam ser contornados para que se tenha um resultado adequado. A adequação do ambiente de captura (ruído externos), qualidade de captação do dispositivo utilizado (microfone), mudanças de estado emocional do usuário (entonação) e também sinais de patologia do aparelho vocal do usuário (usuário rouco, gripado, etc.). 2.2 Introdução a RNA A grande diferença entre o cérebro humano e a máquina, pode ser descrita pela capacidade cognitiva que o ser humano tem de detectar informações através da fala, tais como, sentimento, locutor, estado emocional entre outros. Até o momento a máquina consegue contornar esse problema através de periféricos, que não são a melhor solução no quesito velocidade (LOUZADA, 2010). RNAs são sistemas paralelos distribuídos compostos por unidades de processamento simples (neurônios artificiais) que calculam determinadas funções matemáticas (normalmente não-lineares). Tais unidades são dispostas em uma ou mais camadas e integradas por um grande número de conexões geralmente unidirecionais. Na maioria dos modelos essas conexões estão associadas a pesos, os quais armazenam o conhecimento adquirido pelo modelo e servem para ponderar a entrada recebida por cada neurônio da rede (BRAGA, 2007). 14 2.2.1 Surgimento RNAs As Redes Neurais Artificiais (RNA) tiveram seus primeiros estudos por volta do ano de 1943, porém foram somente com o avanço da computação que em 1980 foram retomados os conceitos de RNA e é por isso que essa década de 80 foi marcada pelo “ressurgimento” dessa área hoje amplamente difundida (BRAGA, 2007). Segundo Braga (2007) as RNAs são conhecidas também como conexionismo ou então sistemas de processamento paralelo e distribuído. Resumidamente é uma forma de computação inusitada (não-algoritmica) e tem como objetivo simular a estrutura neural humana, através de sistemas paralelos distribuídos, constituídos por neurônios artificiais os quais são encarregados de calcular certas funções matemáticas em sua maioria não lineares. Esses neurônios artificiais fazem parte de uma rede onde uma cadeia de conexões de sentido único interliga-os formando assim a chamada rede neural artificial, cada parte integrante dessa rede (neurônio) recebe um peso através das conexões equivalentes ao mesmo, possibilitando assim o armazenamento das informações pertinentes. O funcionamento padrão de uma rede neural passa por uma série de fases, iniciando pela parte da aprendizagem, onde um montante de dados é apresentado à rede que tem como objetivo retirar o máximo de informações úteis que posteriormente serão utilizadas na resolução do problema. Esse “sistema” disposto na solução de problemas utilizando uma RNA tem como diferencial o modo como a rede é treinada, na fase de aprendizagem, e como a mesma interpreta e apresenta as informações submetidas a ela. Outro fator importante na utilização de uma RNA é o modo como a informação é analisada, permitindo que a mesma apresente respostas às questões que não estavam explícitas nas informações de entrada (BRAGA, 2007). 2.2.2 Histórico No início da década de 40, mais precisamente no ano de 1943 surgiu o primeiro modelo artificial de um neurônio biológico, obra conjunta de Warren McCulloch e Walter Pitts, entitulada “A Logical Calculus of the Ideas Immament in 15 Nervous Activity” onde é feito um grande debate sobre as redes lógicas de neurônios artificiais, os quais foram chamados de neurônios de MCP, devido ao nome de seus criadores McCulloch e Pitts. A obra de ambos os pesquisadores focava na descrição do modelo de um neurônio artificial e qual a sua real capacidade computacional (MCCULLOCH 19434, apud BRAGA 2007). Somente alguns anos depois da pesquisa de McCulloch e Pitts é que se voltou a estudar sobre as redes biológicas e as possíveis redes neurais representadas. Donald Hebb em 1949 mostrou como a variação na fase de aprendizagem das redes neurais pode ser resultante da alteração dos pesos de entrada dos neurônios. A teoria de Hebb ficou conhecida como “regra de Hebb” e se baseia na variação das ligações sinápticas dos neurônios biológicos excitados e como elas influenciam diretamente no aprendizado do mesmo. Tendo uma interpretação puramente matemática a regra de Hebb é utilizada atualmente em muitos algoritmos de aprendizagem (BRAGA, 2007). Já em 1958 Frank Rosenblatt utilizou-se da RNA com neurônios MCP e provou que se utilizadas sinapses ajustáveis, seguindo a regra de Hebb, a RNA resultante poderia ser treinada a identificar certos tipos de padrões dentro das informações de entrada, este modelo ficou conhecido como perceptron. O perceptron é basicamente constituído por três camadas: a primeira é a camada de entrada, ela é fixa e fica responsável pela recepção dos estímulos, a segunda é a camada oculta ou camada de transição, ela recebe os impulsos da primeira camada através de sinapses (ligações) que podem ter seus pesos variados, e a terceira é a camada de saída, a qual combina as informações recebidas pela camada anterior e define o espaço de saída da rede (BRAGA, 2007). Após pesquisas aprofundadas, em 1969, Minsky e Papert perceberam algumas tarefas que o perceptron de uma única camada não era capaz de executar, como detecção de paridade, conectividade e simetria que são problemas nãolinearmente separáveis, que são exemplos de “problemas difíceis de aprender” (hard learning problems) (BRAGA, 2007). Em meados de 1970 devido aos resultados obtidos com o trabalho de Minsky 4 MCCULLOCH, W. S.; PITS, W. A logical calculus of the ideas immanent in nervous activity. Bull. Math. Biophysics, 5:115-133. 16 e Papert, a abordagem até então conexionista foi deixada de lado por grande parte dos pesquisadores, apesar de alguns nomes como Igor Aleksander, Kunihiko Fukushima e Teuvo Konohen darem continuidade a área (BRAGA, 2007). Em 1982 John Hopfield mostrou uma relação entre redes recorrentes autoassociativas e sistemas físicos, abrindo caminho para a utilização de correntes da física no estudo do modelo. Também foi constatado que a visão de Minsky e Papert sobre a abordagem conexionista era falha e as RNAs podem sim resolver os “hard learning problems”, essa análise só foi possível através da análise do algoritmo de backpropagation (BRAGA, 2007). A disseminação do interesse por RNAs só teve seu ápice a partir de 1980, quando a comunidade internacional despertou amplo fascínio sobre o assunto, Tal interesse cresce desde então, e tudo isso se deve a dois principais fatores: inicialmente o avanço da tecnologia em geral, principalmente a parte que abrange a microeletrônica, a qual permitiu a criação física de modelos de neurônios e suas sinapses (conexões), seguido do sucesso da escola de IA simbólica na solução de determinados tipos de problemas (BRAGA, 2007). 2.2.3 Redes biológicas Sabe-se que o cérebro humano possui cerca de 1011 neurônios e que cada um desses se comunica com milhares de outros neurônios de uma forma continua e paralela. É ai que fica a base de estudo das RNA, as quais tentam simular a estrutura organizacional de uma rede biológica (topologia, conexões e comportamento). O conjunto de neurônios biológicos é parte integrante do cérebro humano, compondo a parte responsável por armazenar informações (memória), interpretá-las e até mesmo reconhecer padrões não explícitos, tudo isso por experiência (KOVÁCS, 2006). Segundo Kovács (2006) a composição de um neurônio biológico, figura 1 em suma é baseada em três partes principais (seções), são elas: o corpo celular, que mede apenas alguns milésimos de milímetros e é responsável pelo processamento da informação e a partir daí gera novos impulsos que são transmitidos ao axônio e então aos dentritos, para assim chegar ao neurônio seguinte, o axônio compõe grande parte 17 de um neurônio e geralmente possuem calibre uniforme, por fim existem também os dentritos, que apresentam poucos milímetros de comprimento e tem como única função receber ou transmitir os impulsos nervosos para o corpo celular. A área situada entre os dentritos e a terminação axônica de outro neurônio é conhecida como sinapse, essa área sináptica é responsável pela união funcional de todos os neurônios, formando assim a rede biológica, funcionam também como controles de transmissão de impulsos nervosos dentre os neurônios (HAYKIN, 2001). FIGURA 1 - Imagem da composição de um neurônio. Fonte: BRAGA, 2000. Os impulsos gerados pelo corpo celular pré-sináptico são transmitidos para o neurônio pós-sináptico através dos dentritos, o corpo do neuronio pós-sinaptico analisa e compara a carga gerada pelo impulso e por todos os outros impulsos recebidos pelo corpo celular, caso o sinal de excitação do neurônio seja suficientemente alto a célula é ativada e propaga um impulso para os próximos neurônios. Todo esse sistema conjunto dos neurônios é o principal responsável pelas funções realizadas pelo nosso cérebro (HAYKIN, 2001). A comunicação entre os neurônios funciona de forma continua, onde o corpo celular recebe impulsos dos neurônios pré-sinápticos e os combina, caso essa carga combinada extrapole o limiar de excitação da célula, a mesma produz um impulso elétrico que é transmitido até as áreas sinápticas através do axônio, alcançando assim o próximo neurônio, que executa a mesma função de forma continua. Esse fenômeno deve-se ao fato de existirem diferentes níveis de potássio e sódio (interno e externo a célula respectivamente), e dessa forma sempre será mantida uma diferença de 18 potencial entre as duas partes. Quando a soma recebe os sinais elétricos dos neurônios pré-sinápticos e o limiar de excitação é atingido o fluxo de sódio e potássio da célula é invertido, é ai que a parte interna do neurônio se torna positiva em relação ao exterior, essa mudança súbita de polaridade é responsável pela propagação do sinal elétrico até o axônio, ao chegar na parte terminal do axônio os canais são abertos, liberando assim as moléculas neurotransmissoras até a clave sináptica, o tipo de molécula neurotransmissora é o que ira determinar a polarização do neurônio pós-sináptico, podendo tanto inibir quanto excitar (BRAGA, 2007 e KOVACS, 2006). Logo após ter disparado um impulso elétrico o axônio entra em estado de repouso, portanto ele leva um tempo até que consiga reestabilizar a polaridade da célula. Em suma o neurônio biológico funciona através de uma serie de entradas (impulsos), tanto excitatorios quanto inibitórios e quando toda essa carga acumulada no corpo celular ultrapassa seu limite de limiar um impulso é gerado para os neurônios subseqüentes (BRAGA, 2007 e KOVACS, 2006). 2.2.4 Neurônios artificiais A proposta de um neurônio artificial MCP feita por McCulloch e Pitts representado aqui na figura 2 é baseada na formação da cadeia de neurônios biológicos. Em sua composição podemos identificar várias ramificações de entrada que representam os dentritos, o núcleo, onde é realizada a soma dos pesos recebidos através das ramificações e faz-se o calculo da função de ativação. Cada terminal de entrada possui um peso “w” que substitui a carga da sinapse e por fim existe também uma única saída a qual assume o papel do axônio e transmite a nova carga para os neurônios artificiais subseqüentes, cargas essas que podem ser tanto inibitórias quanto excitatórias (negativa ou positiva). A descrição desse modelo está retratada na figura 3 (REZENDE, 2004 e KOVACS, 2006). 19 FIGURA 2 - Modelo do neurônio artificial proposto por McCulloch. Fonte: PAULA, 2000. FIGURA 3 - Neurônio artificial. Fonte: TAFNER, 1998. Em um neurônio biológico, todos os sinais pré-sinápticos são acumulados dentro do corpo celular e o mesmo só dispara quando atinge seu limiar de ativação. Algo similar acontece em um modelo MCP, onde todos os sinais de entrada são somados dentro neurônio (soma ponderada), feito isso decide-se se o neurônio deve ou não disparar um novo sinal baseado no limiar de ativação (threshold), que quando for 20 ultrapassado libera o impulso para o neurônio pós-sináptico (REZENDE, 2004 e KOVACS 2006). 2.2.5 Principais arquiteturas Os neurônios artificiais se analisados singularmente, possuem uma capacidade computacional extremamente limitada. A força computacional desses neurônios está justamente na rede neural formada por suas interconexões, esta rede sim é capaz de resolver problemas de alta complexidade (BRAGA, 2007). Ainda segundo Braga (2007) e Haykin (2001) indiferente a função de ativação utilizada, deve-se também escolher cautelosamente qual arquitetura será utilizada, pois cada tipo de arquitetura de rede serve a diferentes problemas. Dentre as principais arquiteturas de RNA encontramos: a) Rede feedfoward de uma única camada; b) Rede feedfoward de duas camadas; c) Rede com recorrência entre saídas e camada intermediária; d) Rede com recorrência auto-associativa. Primeiramente (representado em A) temos uma RNA de camada única que é alimentada para frente (feedfoward) e são ideais para resolver problemas de funções acopladas e multivalorados, porém existem certos empecilhos devido a sua única camada. A seguir em B temos que é uma melhoria da rede anterior, já que agora a rede possui uma segunda camada, permitindo assim uma aproximação das funções contínuas, porém ainda há uma persistência em sua arquitetura estática, a qual inviabiliza a recorrência na rede (BRAGA, 2007 e HAYKIN, 2001). Diferente das anteriores, as estruturas C e D possuem recorrência entre os neurônios. Em C, o valor resultante depende somente dos valores de chegada, mas também de seu valor atual já que as ligações entre camadas de níveis diferentes estão presentes, portanto essa arquitetura é utilizada na resolução de problemas temporais. Já em D temos uma estrutura típica de uma rede de Hopfield, já que há apenas uma camada de neurônios e entradas externas são inexistentes, pois cada neurônio é conectado diretamente a entrada de todos os outros presentes, resultando em uma 21 operação baseada na dinâmica da mudança de estados dos mesmos (BRAGA, 2007 e HAYKIN, 2001). De acordo com Braga (2007) basicamente a escolha da estrutura de RNA mais adequada para cada situação depende de uma série de fatores, onde podemos destacar: • Complexidade do problema; • Dimensionalidade do espaço de entrada; • Características dinâmicas ou estáticas; • Conhecimento sobre o problema; • Representatividade dos dados. 2.2.6 Aprendizado Uma parte vital na construção de uma RNA é a etapa de aprendizado, na qual a rede é submetida a uma carga de informações que tem por objetivo final treinar e capacitar a rede a realizar as tarefas que lhe foram incumbidas. Diferente da abordagem conexionista, não se treina uma RNA através de regras explícitas, o processo de aprendizado consiste em uma série de ajustes de alguns parâmetros importantes como o peso das conexões que ao final do processo irá armazenar todo conhecimento que a rede adquiriu. Segundo Mendel 19705, apud Braga 2007, o aprendizado de uma rede pode ser considerado da seguinte forma: “Aprendizado é o processo pelo qual os parâmetros livres de uma rede neural são ajustados por meio de uma forma continuada de estímulo pelo ambiente externo, sendo-o tipo específico de aprendizado definido pela maneira particular como ocorrem os ajustes dos parâmetros livres.” Um ponto importante de se enfatizar é o conceito de aprendizado, que está diretamente relacionado com a medida na qual melhora o desempenho da rede em questão, tudo seguindo critérios antes estabelecidos. Existem algoritmos na área de RNA que buscam calcular a taxa de erro quadrático médio e quando aplicados a uma 5 Mendel, J.M., and R. W. McLaren, 1970. “Reinforcement-learning control and pattern recognition systems,” in Adaptive, Learning, and Pattern Recognition Systems: Theory and Applications, vol. 66, J.M. Mendel and K.S. Fu, eds., pp.287-318, New York: Academic Press 22 rede, a tendência é que a incidência de erros diminua a cada ciclo de treinamento (HAYKIN, 2001). A fórmula genérica usada para calcular a taxa de erro é apresentada na equação 1.0, obtida através da variação de resultado do pulso da rede em relação ao resultado desejado, a carga faz diversas iterações na rede (vai e volta) e a cada ciclo desses um valor de variação é obtido, representado na fórmula por ” ∆w ” em função do tempo “t” que somado ao valor do peso de entrada “w(t)” resultará em um novo valor, que representará o peso “w” na próxima iteração da rede (t+1). Os algoritmos de aprendizado normalmente diferem somente quanto a maneira como se calcula a taxa variação do peso( ∆w ), dentre essas maneiras, vários algoritmos podem ser usados, sendo eles classificados como aprendizado supervisionado e aprendizado nãosupervisionado (BRAGA, 2007). w(t + 1) = w(t ) + ∆w(t ) (1.0) 2.2.7 Aprendizado supervisionado No caso do aprendizado supervisionado, a rede neural aplicada é dependente de um supervisor (professor), que tem por objetivo lançar os dados de entrada adaptados através da comparação entre a saída calculada pela rede e a saída desejada. Já que a resposta gerada pela rede é resultante de um calculo baseado nos pesos de entrada, o “professor” deve ajustar os novos valores de entrada de forma a aprimorar a rede a cada novo ciclo, até chegar ao valor mais próximo possível do desejável. A aproximação desse valor é incremental já que são feitos de pequenas modificações a cada iteração (REZENDE, 2005 e HAYKIN, 2001). Os modelos de aprendizado supervisionado mais conhecidos são: regra delta e sua fórmula adaptada para redes de múltiplas camadas, o algoritmo backpropagation. Ambos podem ser implementados de duas maneiras distintas: off-line e on-line. (BRAGA, 2007). Durante o treinamento off-line os dados obtidos através da resposta da rede são armazenados, portanto não mudam, caso seja necessário um novo treinamento esses dados não são sobrepostos, é iniciado um novo treinamento levando em conta os 23 dados obtidos anteriormente, mantendo assim a integridade dos dados em ambos os casos. Já no aprendizado on-line nada é mantido e a rede vive sobre constantes modificações (BRAGA, 2007). 2.2.8 Correções de erros O algoritmo baseado na correção de erros é uma base de tudo que foi descrito anteriormente, um método supervisionado que é alimentado através da taxa de erro calculada junto á variação de valores da rede (REZENDE, 2005). As equações de ajuste presentes nesse método são obtidas a partir da minimização da soma dos erros quadráticos das saídas e através dessas equações é que obtemos o erro mínimo global para cada conjunto de dados. Diretamente ligados ao tipo de unidade de processamento utilizado (lineares ou não-lineares), podemos obter formas diferentes de superfície de erros (REZENDE 2005 e HAYKIN 2001). • “No caso de a rede ser formada inteiramente por unidades de processamento lineares a superfície de erro é dada por uma função quadrática dos pesos da rede, podendo a mesma possuir um único mínimo, como mostrado na figura 4” (BRAGA, 2007); • “Para o caso de a rede ser formada por unidades de processamento nãolineares, a superfície de erro poderá ter uma forma irregular e vários mínimos locais, além do mínimo global. A figura 5 é um exemplo de superfície de erro irregular formada como conseqüência da utilização de funções de ativação não-lineares” (BRAGA, 2007); 24 FIGURA 4 - Superfície de erro quadrática para neurônios de função linear. Fonte: BRAGA, 2007. FIGURA 5 - Superfície de erro para neurônios com funções de ativação não-lineares. Fonte: BRAGA, 2007. Em ambos os casos, alcançar o mínimo global é o objetivo principal dos dois métodos de aprendizado, que são baseados no ponto arbitrário da superfície de erro. 25 No caso da função de ativação linear, essa é uma tarefa consideravelmente fácil de atingir, já que se trata de uma função quadrática sendo assim o mínimo global é facilmente atingido. Já no segundo caso, onde a função de ativação é não-regular, existem várias inconsistências na superfície de erro, tornando-as irregulares, fazendo a rede alcançar um mínimo local inadequado (BRAGA, 2007). 2.2.9 Aprendizado não supervisionado No esquema de aprendizado não supervisionado como o próprio nome sugere não se faz necessária a presença de um supervisor (professor) para acompanhar todo o processo. Neste caso o aprendizado se dá por uma seqüência de valores de entrada introduzidas a rede, o papel da rede é identificar padrões e similaridades dentre os dados coletados, e a existência dos mesmos torna o aprendizado possível. Esse tipo de aprendizado é aplicado ao reconhecimento de padrões de dados estatísticos de entrada relevantes como, por exemplo, em descoberta de classes, agrupamento de dados, datamining, entre outros. Os modelos mais conhecidos são os mapas autoorganizáveis de Kohonen e os modelos ART (BRAGA, 2007 e BARRETO, 2002). 2.2.10 Redes perceptron de múltiplas camadas A técnica de treinamento de redes neurais de uma única camada por meio de aprendizado supervisionado e correção de erros, realizado através da taxa de diferença entre a saída obtida e a saída desejada, porém para redes de múltiplas camadas, esse método pode ser aplicado somente às camadas de saída, pois as camadas intermediárias não possuem uma variável de comparação (saída desejada). Uma solução para esse problema surgiu com o algoritmo de “back-propagation”, resolvendo assim o problema do treinamento das MLPs (HAYKIN 2001). 2.2.11 Algoritmo de Back-Propagation A idéia principal por trás do algoritmo de retropropagação é a estimativa de erro das camadas intermediarias de uma MLP, este erro pode ser calculado através de 26 estimativas de efeito que elas causam na camada de saída. Uma vez obtido o erro da saída da rede, é lançado uma carga de informações de volta para a camada intermediária, a qual é ajustada de acordo com os valores das conexões entre camadas. Essa taxa de erro reajustada é chamada de gradiente descendente. Estas seqüências de camadas intermediariam da MLP tem por objetivo transformar de maneira sucessiva o problema em uma representação tratável para a camada de saída da rede (HAYKIN, 2001). 2.2.12 Arquitetura MLP As redes MLP, por possuírem uma camada intermediária, apresentam um poder computacional superior às redes de uma única camada. A qualidade de aproximação obtida por uma MLP está diretamente relacionada com a complexidade da rede em questão, ou seja, quanto mais neurônios forem utilizados nas camadas intermediárias maior será a capacidade de resolução da rede. A figura 6 apresenta um modelo típico de MLP (HAYKIN, 2001 e BRAGA, 2007). FIGURA 6 - Grafo arquitetural de um perceptron de múltiplas camadas. Fonte: HAYKIN, 2001. 27 2.2.12.1 Número de camadas Conforme foi descrito anteriormente, todo processo que ocorre nos neurônios de uma camada X é calculado pela combinação dos processamentos realizados por neurônios de camadas anteriores, conectados diretamente a ele. A cada camada que se segue em direção a saída, a dificuldade das funções utilizadas aumenta e a divisão do espaço de decisão torna-se mais complexa (BRAGA, 2007). A partir de um grande número de unidades intermediárias, qualquer conjunto de padrões de entrada pode ser representado, sendo que segundo Cybenko 19896, apud Braga 2007, “uma camada intermediária é suficiente para aproximar qualquer função continua, e duas camadas são suficientes para aproximar qualquer função”. Na prática, a utilização de uma única camada intermediária é suficiente para resolver a grande maioria dos problemas, e a utilização de camadas adicionais se faz necessário somente quando a função a ser aproximada possuir descontinuidades. Dessa forma, a utilização de camadas desnecessárias só atrapalhará o desempenho da rede (BRAGA, 2007). 2.2.12.2 Função de ativação Uma vez determinado a utilização de uma MLP, é necessário também que se resolva o número de neurônios e as funções de ativação de cada camada. Comumente utilizam-se funções de ativação lineares para as camadas de saída e sigmoidais para as camadas intermediarias (HAYKIN, 2001). 2.2.12.3 Treinamento de redes MLP O treinamento mais utilizado em redes MLP é o “back-propagation”, que já foi anteriormente descrito. Tal algoritmo e dividido em duas etapas: “foward” e “backward”. 6 Cybenko, G. (1989). Approximations by superpositions of sigmoidal functions. Math. Control, Signals, Systems, 2:303--314. 28 Durante a etapa foward, as entradas da rede são apresentadas aos neurônios da primeira camada escondida (intermediária), onde serão calculados os valores de saída da primeira camada, que será enviada a próxima camada intermediária (caso exista) (BRAGA, 2007). Ainda segundo Braga (2007) os valores de saída de primeira camada servirão de variáveis de calculo da saída da camada subseqüente, a qual após ter feito o calculo envia o impulso para a próxima camada e assim sucessivamente ate que a camada de saída seja atingida. Dentro da camada de saída, os valores recebidos são analisados e comparados com a saída desejada para a carga de entrada em questão e a partir desta comparação a taxa de erro correspondendo e calculada (HAYKIN, 2001). Já na etapa backward a taxa de erro obtida na camada de saída é utilizada para ajustar os pesos da camada anterior, os pesos de conexão entre as camadas são multiplicados pela taxa de erro, descobrindo assim um valor de erro estimado para cada neurônio da camada intermediaria que representa a medida de influência do neurônio atual em relação ao seu superior. Ao ajustar os pesos o sinal se propaga para a camada anterior a ele, na qual o mesmo processo é realizado sucessivamente até que a primeira camada escondida seja atingida e todos os neurônios sejam ajustados com base no vetor de entrada e na saída desejada (BRAGA, 2007 e HAYKIN, 2001). A mudança nos pesos realizada pelo algoritmo de back-propagation é utilizada no treinamento de redes Adaline que é baseada na regra delta proposta por Windrow e Hoff. 2.3 Outros trabalhos similares Após detalhado de maneira básica o funcionamento de redes neurais, enfatizando a implementação de uma MLP, foi realizado também um estudo de outros trabalhos na área do reconhecimento de palavras faladas e seus locutores. Resultantes dessa pesquisa foram consideradas as redes MLP e Kohonen ou SOM (SelfOrganizing Maps). 29 O trabalho baseado na rede de Kohonen foi desenvolvido por Petrônio de Luna Braga (BRAGA, 2006), cujo objetivo principal era construir um sistema que trabalhe no reconhecimento de fala baseado na fonética, ou seja, dada uma frase o programa seria capaz de reconhecer os fonemas contidos no mesmo. O protótipo de reconhecimento de fonemas teve uma taxa de acerto de 68%. Já na pesquisa desenvolvida por Ariane Luiza Fossatti Zancan (ZANCAN, 2010), foi desenvolvida em cima da linguagem de programação paschal, uma espécie de “quiz” a qual aceita somente respostas positivas e negativas, “sim” ou “não”. Obteve-se um resultado de 90% de acerto. Outro protótipo implementado com a MLP e de autoria de Elton Vitor Seemann (SEEMANN, 2006), é utilizado no reconhecimento de palavras através do processamento digital dos sinais de áudio discreto e classificação por uma MLP. O mesmo teve uma taxa de acerto de aproximadamente 95%. 2.4 Conclusão Neste capítulo foi apresentada uma explicação geral sobre o funcionamento das redes neurais, tanto biológicas quanto artificiais, foi colocado também um breve histórico sobre o desenvolvimento da RNA ao longo dos anos, assim como a explicação mais aprofundada da MLP, que foi o método escolhido para o desenvolvimento do protótipo, escolha essa baseada nos estudos realizados sobre outros trabalhos feitos na área do reconhecimento de palavras faladas e também o reconhecimento de locutor, os quais apresentaram taxas de acerto superiores a 90% mostrando assim a aplicabilidade da MLP para a resolução desse tipo de problema. Uma introdução sobre autenticação de usuários também foi incluído neste capítulo, onde apresentamos problemas de segurança e confiabilidade dos dados e métodos de autenticação utilizados com o decorrer dos anos. O estudo de RNA e suas aplicações são recorrentes, já que sempre houve a busca da representação matemática perfeita de um neurônio biológico e o desenvolvimento da IA nessa área específica busca o aperfeiçoamento desta prática. 30 3 MODELAGEM DO PROTÓTIPO Neste capítulo é descrita a modelagem do protótipo, juntamente com seus casos de uso, requisitos funcionais e suplementares, ou seja, um estudo de caso. 3.1 Sumário executivo Para o estudo de caso foi definido um sistema que tem como objetivo captar sinais sonoros (voz) através de um microfone, para então realizar a autenticação do usuário em questão. O sistema estará apto a ler o sinal produzido pelo usuário, comparar o resultado obtido por esse sinal ao índice cadastrado anteriormente no banco de dados, o qual foi obtido através do treinamento da rede MLP. Se os índices forem idênticos o usuário terá acesso liberado, caso contrário o mesmo lhe será negado. 3.2 Requisitos funcionais A extração dos requisitos e funcionalidades do sistema foi realizada através da análise das necessidades do mesmo. Os quadros 1 a 4 detalham os requisitos com suas respectivas restrições associadas. 31 QUADRO 1 - Requisito funcional – manter informações do usuário F1 Manter Informações do Usuário ( ) Oculto Descrição: O sistema deve permitir a inserção e exclusão de um usuário no banco de dados. Para isso deve-ser informar: nome, senha e amostras de áudio previamente gravadas. Requisitos Não-Funcionais Nome Descrição Categoria Obrigatór Permanente/ io/ Temporário Desejável NF 1.1 O usuário deve ser identificado pelo Interface O P Identificação do seu nome completo e sua senha. usuário. NF 1.2 Após o usuário passar as amostras de Implementação O P Armazenamento sinais vocais o administrador do do índice do sinal sistema deve gerar um índice vocal vocal. para o usuário. NF 1.3 Detalhes O campo nome deve ser composto Especificação O P do nome somente por letras e deve ter um limite de 50 caracteres NF 1.4 Detalhes O campo senha deve ser composto Especificação O P da senha por qualquer tipo de caractere, e deve possuir no mínimo 6 dígitos. NF 1.5 Detalhes O campo do índice vocal deve ser Especificação O P do índice vocal chamado de “sinal_voz” permitir qualquer tipo de caractere e deve permitir até 100 dígitos. QUADRO 2 - Requisito funcional – treinamento do sinal. F2 Gravação da voz ( ) Oculto Descrição: O sistema deve permitir ao administrador do mesmo realizar o treinamento da rede a partir das amostras de sinal vocal enviada pelo usuário. Requisitos Não-Funcionais Nome Descrição Categoria Obrigatór Permanente/ io/ Temporário Desejável NF 2.1 O sistema deve identificar o usuário Interface O P Identificação do através de seu índice vocal Usuário anteriormente cadastrado no banco de dados e configurar o índice de acordo com a variável de saída desejada. NF 2.2 O sistema deve selecionar Implementação O P Treinamento dos automaticamente os sinais vocais do Sinais Vocais. usuário para que possa utilizá-los no treinamento. NF 2.3 Detalhes O usuário deverá enviar uma série de Especificação O P da Amostra Vocal arquivos de áudio captados de sua própria voz falando a palavra selecionada. 32 QUADRO 3 - Requisito funcional – verificar compatibilidade. F3 Verificar Compatibilidade ( ) Oculto Descrição: O usuário deve falar a palavra “casa”, pré-determinada a ser a palavra de teste, uma vez. O sistema processa o sinal e compara o resultado com os índices existentes no banco de dados, caso haja algum compatível, ele retorna os dados de login do usuário, caso contrario ele impede a ação. Requisitos Não-Funcionais Nome Descrição Categoria Obrigatório Permanente/ / Desejável Temporário NF 3.1 Capturar O usuário deve falar a palavra Especificação O P Sinal “CASA” uma vez junto ao microfone, após selecionar o botão de captura de áudio. NF 3.2 Comparar O sistema deve comparar o resultado Especificação O P sinal com os índices vocais cadastrados no banco de dados. NF 3.3 Informar O sistema deve retornar os dados do Interface O P resultado usuário caso algum dos índices vocais cadastrados no banco seja compatível, caso contrario devera impedir a autenticação. QUADRO 4 - Requisito funcional – realizar login F4 Verificar Compatibilidade ( ) Oculto Descrição: Após o sistema retornar os dados de login do usuário o sistema deve permitir o usuário verificar o gráfico da freqüência do sinal vocal emitido e também permitir que o mesmo realize o login no protótipo. Requisitos Não-Funcionais Nome Descrição Categoria Obrigatório Permanente/ / Desejável Temporário NF 4.1 Gerar Após os dados de login aparecerem Interface O P Gráfico da na tela da aplicação o usuário deve Freqüência Vocal. ser capaz de visualizar o gráfico da freqüência do sinal emitido. NF 4.2 Realizar Após os dados de login aparecerem Interface O P Login na tela o usuário deve ser capaz de selecionar a validação do seu login e requisitar o acesso ao sistema. 3.3 Requisitos suplementares Os requisitos suplementares foram identificados baseados nas características estabelecidas pelos atributos do sistema, tais como desempenho, usabilidade e confiabilidade. Segue abaixo o quadro 5 com a lista dos requisitos suplementares. 33 QUADRO 5 - Requisitos suplementares Nome Restrição Categoria S2. Tipos de Interface As interfaces devem ser desenvolvidas no padrão Windows, para computadores com resolução de 1024 X 768. O sistema deve ser desenvolvido através do ambiente Netbeans 6.91 O protótipo deve ser desenvolvido na linguagem java. Os dados devem ser armazenados no banco de dados PostgreSQL O banco de dados deve ser gerenciado através do programa PgAdmin. S3. Tecnologia para Desenvolvimento S3. Linguagem Programação de S5. Banco de Dados S6.SGBD (Sistema Gerenciador de Banco de Dados) Interface Obrigatór io/ Desejável D Permanente/ Temporário P Implementação O P Implementação O P Armazenamento O P Armazenamento O P 3.4 Casos de uso O quadro 6 lista os processos de negócios identificados para o desenvolvimento do sistema, assim como apresenta a representação geral do mesmo na figura 7. Onde a tarefa “Utiliza programa treinado” é a representação do protótipo desenvolvido, os demais passos representam tarefas desenvolvidas separadamente do protótipo. FIGURA 7 - Representação geral do sistema 34 QUADRO 6 - Casos de uso Nome Atores Descrição UC 1. Gravar Sinais de Voz Usuário UC 2. Informar Dados ao Administrador Usuário UC 3. Cadastrar Usuário Administrador UC 4. Treinamento da rede MLP Administrador UC 5. Realizar Autenticação Usuário O usuário deve utilizar gravar sua voz ao pronunciar a palavra “CASA” e enviar ao administrador. É recomendado que se utilize o software TeamSpeak 3 para a gravação dos sinais e também são aconselháveis a gravação de 40 sinais de áudio. O usuário deve repassar ao administrador seu nome completo para ser usado como login, uma senha e fornecer os sinais vocais gravados anteriormente. O administrador deve realizar o cadastro do usuário no banco de dados do protótipo, gerando um índice vocal para ele. O administrador deve realizar o treinamento da rede através dos sinais vocais fornecidos pelo usuário e do índice vocal gerado anteriormente no banco de dados. O usuário seleciona o inicio da captura e fala a palavra “CASA” junto ao microfone e o sistema compara o sinal capturado com o sinal armazenado no banco de dados. Caso sejam correspondentes, o sistema libera o acesso ao usuário. Referências Cruzadas F1 F1 F1 F1, F2 F1, F2, F3, F4 3.5 Expansão de caso de uso Segue abaixo os quadros 7 a 15 com a expansão de cada caso de uso citado no quadro 6. QUADRO 7 - Caso de uso – gravar sinais de voz Caso de Uso: Gravar sinais de voz Autor: Usuário Fluxo Principal Passo Descrição O usuário realiza a gravação de 40 sinais vocais pronunciando a palavra “CASA” junto ao microfone, utilizando o software recomendado TeamSpeak 3. 1 [EV] QUADRO 8 - Caso de uso – informar dados ao administrador Caso de Uso: Informar dados ao administrador Autor: Usuário Fluxo Principal Passo 1 [EV] Descrição O usuário repassa ao administrador os 40 sinais vocais gravados junto ao seu nome completo, para ser usado como login do protótipo e uma senha de sua preferência. 35 QUADRO 9 - Caso de uso – cadastrar usuário Caso de Uso: Cadastrar usuário Autor: Administrador Fluxo Principal Passo Descrição O administrador cadastra o usuário no banco de dados do protótipo, gerando ao mesmo um índice vocal que também é inserido no registro do usuário. 1 [EV] QUADRO 10 - Exceção caso de uso – cadastrar usuário Exceções Passo Descrição 1.1 Nome de Usuário já existe 1.2 Requisita ao usuário se o nome informado está correto? 1.3 Requisita ao usuário que informe o nome corretamente. 1.4 Vai para o passo 1. QUADRO 11 - Exceção caso de uso – cadastrar usuário Exceções Passo Descrição 1.2.1 Nome de usuário está correto. 1.2.2 Administrador apaga o registro vinculado ao nome. 1.2.3 Vai para o passo 1. QUADRO 12 - Caso de uso – treinamento da rede MLP Caso de Uso: Cadastrar Questões Autor: Administrador Fluxo Principal Passo 1 [EV] 2 [RS] 3 [EV] 4 [RS] Descrição O administrador configura os valores de entrada da rede (sinais de áudio do usuário) e executa o programa. O sistema apresenta um botão para que seja iniciado o treinamento. O confirma o inicio do treinamento. O sistema treina a rede e apresenta um arquivo de texto no qual ficam armazenados os pesos da rede. QUADRO 13 - Exceção caso de uso – treinamento da rede MLP Exceções Passo 1.1 1.2 Descrição Os sinais de áudio não foram gravados. Vai para o passo 1 (Caso de Uso: Gravar sinais de voz) 36 QUADRO 14 - Exceção caso de uso – realizar autenticação Exceções Passo 4.1 4.2 Descrição O índice vocal não é compatível. O sistema envia uma mensagem de erro e impede a autenticação. Vai para o passo 1. 4.3 QUADRO 15 - Caso de uso – realizar autenticação Caso de Uso: Cadastrar Questões Autor: Usuário Fluxo Principal Passo 1 [EV] Descrição O usuário seleciona o botão para iniciar a captura do áudio. O sistema marca o botão de captura e começa a receber os sinais captados pelo microfone. O usuário fala a palavra “CASA” de forma clara junto ao microfone. O usuário interrompe a captura clicando no botão “Parar Captura”. O sistema armazena o áudio captado, submete à rede treinada, compara o índice vocal resultante junto ao banco de dados e caso exista algum índice compatível, retorna os dados de login do usuário em questão. O usuário valida o seu login selecionando o botão indicado pelo programa. 2 [RS] 3 [EV] 4. [EV] 4 [RS] 5 [EV] 3.6 Modelagem banco de dados A figura 8 apresenta o diagrama de entidade e relacionamento composto pelas classes Usuário e SinalVoz, representando a modelagem do banco de dados do protótipo. FIGURA 8 - Modelagem do banco de dados. 37 3.7 Diagrama de classes do protótipo Logo abaixo segue um demonstrativo do diagrama de classes do protótipo a ser desenvolvido. Os objetos de representação do sistema são demonstrados na figura 9, na figura 10 é representado o diagrama das interfaces gráficas e por fim nas figuras 11, 12, 13 e 14 é demonstrado a lógica de implementação da rede MLP. FIGURA 9 - Diagrama das classes Usuario e SinalVoz 38 FIGURA 10 - Diagrama das classes de interface do usuário FIGURA 11 - Diagrama das classes de gerenciamento de camada da MLP 39 FIGURA 12 - Diagrama das classes de treinamento e utilização da fft 40 FIGURA 13 - Diagrama das classes de gerenciamento dos neurônios da rede MLP 41 FIGURA 14 - Diagrama de classe central da MLP 3.8 Conclusão Neste capítulo foi apresentada a modelagem do protótipo desenvolvido para reconhecer o locutor (usuário) e fazer a autenticação do mesmo no protótipo. Na etapa do levantamento de requisitos e modelagem do sistema não foram encontradas maiores dificuldades, em virtude de o sistema ser simples e objetivar a 42 demonstração de rede neural em questão para o reconhecimento de locutor. O protótipo do sistema foi desenvolvido de maneira que possa ser manipulado por pessoas com pouco conhecimento de sistema computacionais. 43 4 IMPLEMENTAÇÃO DO PROTÓTIPO Neste capítulo é apresentado à implementação do protótipo, exemplificada através de partes da codificação presente no programa, separado por etapas. 4.1 Captura do áudio Para realizar o treinamento da rede MLP, é necessário que se capture alguns sinais de áudio para submeter à rede. Tais áudios devem ter um nível de qualidade considerável, pois a existência de ruídos no sinal tratado pode influenciar diretamente o resultado do reconhecimento. Para tal, foram usados alguns softwares já existentes para realizar essa captura, foram eles o Gravador de Áudio, programa nativo do Windows Seven Ultimate e também o TeamSpeak 3, software livre disponível para download no site da fabricante. 4.2 Conversão do sinal captado Para fazer o tratamento do sinal capturado é necessário que o mesmo esteja em um padrão aceitável e compatível com o reconhecido pelo protótipo, portanto para enquadrar o sinal captado nesses padrões foi usado o software “GoldWave7”. O áudio deve ser transformado na extensão wave (.wav) e deve seguir o formato de compactação PCM unsigned 8 bit, mono8. 7 O software GoldWave é desenvolvido pela organização GoldWave Inc. Formato de compactação desenvolvido pela empresa Microsoft, muito utilização na compactação de arquivos de extensão wave. 8 44 4.3 Configurando a rede MLP Tendo como base de códigos uma rede MLP adaptada, gerada para um trabalho em grupo referente a matéria de Inteligência Artificial do sétimo semestre do curso de Sistemas de Informação da UNIPLAC. Para realizar o treinamento da rede MLP, é necessário que antes sejam configuradas algumas variáveis importantes relacionadas ao funcionamento da rede. Localizadas na classe mlp, proveniente dos códigos previamente implementado para a confecção de uma rede MLP, é necessário que se de valor a uma taxaDeAprendizado, erroMinimo, numeroMaximoDeCiclos. Porém a parte mais importante para o funcionamento correto da rede é a configuração das camadas de neurônios. Na linha 18 temos a inicialização da camada de entrada a qual possui 10000 neurônios, referentes à freqüência máxima do áudio que será capturado. Já na linha 19 temos a camada intermediária que nesse caso está com 40 neurônios, porém esse número varia bastante durante os testes que foram feitos no decorrer da implementação e serão tratados mais tarde no capitulo referente aos testes. Por fim temos na linha 21 da figura 15 a criação da camada de saída, a qual nesse caso contem 2 neurônios pois o treinamento contou com áudios de 2 locutores diferentes. FIGURA 15 - Configuração de variáveis da rede. 4.4 Treinamento da rede MLP Uma vez que os sinais de áudio já foram capturados e devidamente tratados, é à hora de treinar a rede. A classe responsável pelo treinamento se chama 45 TreinamentoMLP. Para que tal classe tenha seu funcionamento adequado inicializamos um vetor de inteiros na linha 26 o qual chamaremos de freqüência, que servirá para receber a freqüência dos sinais de áudio, que nada mais é do que um vetor de valores simples os quais representam a variação da onda sonora. Será instanciada também na linha 27 uma classe para armazenar a cópia da freqüência, a qual é denominada Representação, e terá a capacidade de gerar uma freqüência em modo texto através do sinal de entrada inicial. Uma instância da classe MLP na linha 28 também é criada já que usaremos a mesma mais tarde. Para incorporarmos o sinal de áudio na execução é necessário a utilização do método abrirArquivo, que nada mais é do que uma instância do áudio capturado no vetor que representa a freqüência, o qual foi ajustado para 10000 posições, para realizar esse procedimento foi passado como parâmetro na linha 29 o diretório onde se encontra o áudio que se deseja treinar. Feito isso, a freqüência retornada pelo método anterior é armazenada na variável freqüência anteriormente citada, uma nova representação desta freqüência deve ser criada na linha 30 e instanciada na variável r, para por fim adicionar a representação a rede mlp através do método adicionarPadrao, encontrado na linha 31, o qual recebe como parâmetro a variável contendo a representação de qual locutor está sendo inserido, a representação da freqüência armazenada em r e a variável de indicação de pesos desejados. FIGURA 16 - Inserção de um áudio. Após ter adicionado todos os áudios ao programa, deve-se executar o método treinar, o qual terá seu processo explicado mais tarde. O resultado do treinamento é armazenado em uma variável de texto chamada de resultado. 46 Ao final do treinamento, se faz necessário o armazenamento dos pesos adquiridos através do mesmo. É para isso que utilizamos o método gravarPesos, da classe mlp, passando por paramento o nome do arquivo onde será armazenado o resultado. FIGURA 17 - Método de treinamento. 4.5 Treinamento em backpropagation Como dito anteriormente, durante o treinamento da rede MLP, foi utilizado o método de backpropagation, ao entrar no método treinar da classe mlp, como mostra a linha 35 da figura 18, a mesma nos redireciona para o método onde é feito o backpropagation. FIGURA 18 - Método treinar. Dentro do método de retropropagação, foram inicializadas algumas variáveis que irão armazenar o número de ciclos da rede e também a somaErroMedioQuadratico e mediaErroMedioQuadratico, que visam armazenar a variável que leva o mesmo nome como consta na figura 19. Na linha 54 ainda da figura 19, tem-se a inicialização dos pesos randômicos que darão inicio ao treinamento. FIGURA 19 - Inicialização de variáveis do backpropagation. 47 Tendo feito a inicialização de variáveis o método entra em um laço de repetição, onde executará até que a media do erro quadrático seja maior que o erro mínimo ou então que o número de ciclos ultrapasse o limite máximo que é configurado à rede. Dentro desse laço de repetição todas as fases da backpropagation são simuladas, desde a configuração dos valores com base nos resultados desejados como a parte do calculo da margem de erro da rede. Todo esse processo de treinamento é transcrito em uma variável de texto a qual será gerada como resultado após o treinamento. 4.6 Apresentando a ferramenta A ferramenta utilizada para empregar o reconhecimento de locutor é um protótipo que simula a autenticação de usuário de uma forma simples como pode ser visto na tela inicial junto à figura 20. FIGURA 20 - Tela inicial do protótipo. 48 Como se pode perceber na figura 21 temos os campos de login e senha os quais encontram-se desabilitados, o usuário deve clicar no botão Capturar Áudio para que seja iniciado a captura do som. Ao clicar no botão, a variável freqüência é zerada para que possa receber uma nova carga de áudio, variáveis referente a sinais de áudio nativas do Java também são instanciadas e por fim uma thread é iniciada para que se possa receber o sinal de áudio. FIGURA 21 - Inicializa a captura. Ao ter clicado no botão Capturar Áudio o mesmo permanece pressionado até que o usuário termine de gravar a palavra desejada para então clicar novamente no botão que conforme a figura 22 recebeu o nome de Parar Gravação, para que a variável booleana stopCapture receba um verdadeiro e encerre a captura do áudio. FIGURA 22 - Interrompendo a captura. 49 Uma vez realizado a captura do áudio o gráfico da frequencia deve ser gerado clicando no botão Gerar Gráfico indicado anteriormente na figura 23. Para gerar o gráfico o sistema trata o áudio capturado considerando como marco 0 do gráfico a freqüência 128 bytes, a partir daí tudo que for diferente de 128 bytes é decrescido desse mesmo valor formando assim um gráfico com valores positivos e negativos para a freqüência capturada. Para o auxílio na criação do gráfico foi utilizado um framework abeto do Java chamado jFreeChart, o qual facilita a criação de gráficos passando simples parâmetros de referência. Ao clicar portanto no botão Gerar Gráfico uma janela de dialogo modal é aberta e vinculada a MainFrame com o gráfico resultante do tratamento da freqüência do áudio capturado. FIGURA 23 - Gráfico gerado da palavra casa. Gerado o gráfico basta que o usuário clique na imagem que pode ser encontrada na figura 24 para que o programa realize a autenticação do usuário. O reconhecimento é baseado nos pesos anteriormente obtidos através do treinamento da 50 rede. O arquivo de texto com os pesos é inicializado e utilizamos a etapa foward do método de backpropagation para fazer a comparação entre o sinal enviado com os pesos obtidos, caso o resultado obtido seja reconhecido o mesmo enviará uma requisição ao banco de dados PostgreSQL através do framework Hibernate9, que de acordo com os registros cadastrados previamente na tabela usuário retornará o login e a senha do usuário em questão que serão inseridos na tela do programa realizando assim a autenticação. FIGURA 24 - Autenticação realizada. 9 Framework desenvolvido pela JBoss Community para realizar a parte de persistência dos dados para aplicações Java e .NET. 51 5 TESTES Neste capítulo é apresentada à seqüência de testes a qual o protótipo foi submetido, uma explicação geral sobre as mudanças de variáveis, os métodos utilizados e os resultados obtidos pelo mesmo. 5.1 Apresentação do modelo de testes Para facilitar os testes feitos no protótipo foram definidas algumas variáveis as quais serão alteradas a cada novo teste realizado, para que assim possamos comparar os resultados obtidos pelo protótipo. As variáveis escolhidas para a análise são: • Variáveis Editadas: • Quantidade de sinais de áudio utilizados para cada locutor (QTD); • Número de neurônios na camada de entrada (NNE); • Número de neurônios na camada intermediária (NNI); • Número de neurônios na camada de saída (NNS); • Número de camadas intermediárias (NCI); • Variáveis de Resultado: • Menor erro médio quadrático (MEMQ); • Tempo de treinamento (Temp); • Porcentagem de sinais de áudio reconhecidos corretamente para a locutora Raruana Macedo (%R0); • Porcentagem de sinais de áudio reconhecidos para o locutor Thiago Kramer (%T1). 52 QTD 40 NNE 1 NNI 1 NNS 2 NCI 1 MEMQ 0.01 Temp 10 min 20 seg %R0 32,5% ~ 50% %T1 5% ~ 25% TABELA 1 - Modelo da tabela de testes. 5.2 Primeira bateria de testes Para começar a bateria de testes foram coletados 40 sinais de áudio dos locutores Thiago Kramer e Raruana Macedo, para tal foi utilizado o software TeamSpeak 3.0, posteriormente os sinais de áudio foram convertidos para o formato correto aceito pela rede neural utilizando o software da organização GoldWave Inc, chamado GoldWave. Uma vez que todos os dados necessários haviam sido capturados foi configurada para a rede uma carga de 20.000 neurônios em sua camada de entrada, 12 neurônios na sua camada intermediária e por fim 2 neurônios na camada de saída, pois espera-se dois resultados que diferenciem os locutores em questão. Configurada a rede, a mesma é posta a treinar, levando 89 minutos e 20 segundos para realizar o processo. Para a etapa de reconhecimento foram submetidos ao protótipo os mesmos 80 sinais de áudio utilizados no treinamento, sendo 40 sinais de cada locutor, o protótipo reconheceu, segundo a tabela 2, 50% dos sinais gravados pela locutora Raruana Macedo sendo que e 65% dos sinais reconhecidos geraram um resultado correto, ou seja, 32,5% de reconhecimento correto. Já para o locutor Thiago Kramer o protótipo reconheceu 25% dos sinais de áudio enviados a ele, dos quais apenas 20% estavam corretos, resultando em baixos 5% de reconhecimento devido da rede. QTD 40 NNE 20000 NNI 12 NNS 2 NCI 1 MEMQ 1.138 Temp 89 min 20 seg %R0 32,5% %T1 5% TABELA 2 - Teste número um. Devido ao resultado inadequado os parâmetros citados anteriormente foram alterados e uma nova bateria de testes foi iniciada. Mantiveram-se os 40 sinais de áudio, porém o número de neurônios na camada intermediária foi alterado para 9 como 53 constatado na tabela 3, porém o resultado continuou o mesmo. QTD 40 NNE 20000 NNI 9 NNS 2 NCI 1 MEMQ 1.141 Temp 64 min 16 seg %R0 32,5% %T1 5% TABELA 3 - Teste número dois. Após constatar que a mudança pequena de neurônios na camada intermediária não gerou mudanças no resultado do reconhecimento, o NNI voltou a ser 12 e a quantidade de sinais de áudio passou para 30. O resultado como pode ser visto na tabela 4 foi negativo e nenhum sinal foi reconhecido, porém o valor do MEMQ diminuiu. QTD 30 NNE 20000 NNI 12 NNS 2 NCI 1 MEMQ 1.053 Temp 64 min 28 seg %R0 0% %T1 0% TABELA 4 - Teste número três. Posteriormente o número de sinais de áudio foi reduzido novamente tabela 5, e mais uma vez o valor do MEMQ caiu, o que pode ser considerado algo positivo, porém o resultado do reconhecimento continuou zerado. QTD 20 NNE 20000 NNI 12 NNS 2 NCI 1 MEMQ 1.009 Temp 42 min 45 seg %R0 0% %T1 0% TABELA 5 - Teste número quatro. Como a redução do número de sinais de áudio não surtia efeito diante do resultado do reconhecimento, voltou-se aos 40 sinais de áudio anteriormente utilizados. Outra mudança foi do número de neurônios na camada intermediária que passou a ser 15. O resultado gerado por esses parâmetros foi o melhor até então, já que o valor do MEMQ foi para 1.101 e o resultado do reconhecimento voltou para respectivos 32,5% e 5% conforme a tabela 6. QTD 40 NNE 20000 NNI 15 NNS 2 NCI 1 MEMQ 1.101 Temp 108 min 51 seg TABELA 6 - Teste número cinco %R0 32,5% %T1 5% 54 Após ter notado que o aumento de neurônios na camada intermediária teve resultado positivo, o valor de NNI foi alterado para 30 e os demais parâmetros continuaram estáticos. O resultado foi relativamente inadequado, conforme conferido na tabela 7. QTD 40 NNE 20000 NNI 30 NNS 2 NCI 1 MEMQ 1.135 Temp 229 min 40 seg %R0 0% %T1 0% TABELA 7 - Teste número seis. Constatado através do último teste que o aumento do NNI não alterou o resultado final, resolveu-se alterar radicalmente os parâmetros. A quantidade de sinais de áudio foi limitada a 3 e voltou-se a usar 12 neurônios na camada intermediária. Uma linha do código a qual limitava o número de casas decimais do valor do MEMQ também foi alterada. O resultado obtido foi interessante, chegando a um valor de MEMQ de 0.833 o menor até então. O resultado real do reconhecimento gerou número interessantes, somente 10% dos sinais de áudio da locutora Raruana Macedo foram interpretados pelo protótipo, porém 75% destes geraram resultados corretos. Já do locutor Thiago Kramer a quantidade de sinais de áudio interpretados foi de 20%, dos quais 50% obtiveram valores corretos como pode ser conferido na tabela 8. QTD 3 NNE 20000 NNI 12 NNS 2 NCI 1 MEMQ 0.833 Temp 3 min 47 seg %R0 7,5% %T1 10% TABELA 8 - Teste número sete. Na tabela 9 devido aos resultados obtidos no teste com 3 sinais de áudio de cada locutor, resolveu-se manter este valor alterando somente o valor do NNI. Outra vez o resultado final foi negativo. QTD 3 NNE 20000 NNI 30 NNS 2 NCI 1 MEMQ 1.166 Temp 9 min 32 seg TABELA 9 - Teste número oito. %R0 0% %T1 0% 55 Tentando achar um meio termo o número de neurônios na camada intermediária foi reduzido a 20, porém os resultados continuaram identicos ao teste anterior, verificado na tabela 10. QTD 3 NNE 20000 NNI 20 NNS 2 NCI 1 MEMQ 1.166 Temp 5 min 58 seg %R0 0% %T1 0% TABELA 10 - Teste número nove. Devido a ter sido o melhor desempenho até o momento, os parâmetros do teste número cinco foram replicados ao décimo teste tabela 11, porém reduzindo o número de posições do array da freqüência para 10000, conseqüentemente o número de neurônios na camada de entrada, porém o resultado não foi adequado. QTD 40 NNE 10000 NNI 15 NNS 2 NCI 1 MEMQ 1.087 Temp 50 min 1 seg %R0 0% %T1 0% TABELA 11 - Teste número dez. 5.3 Fast Fourier Transform (FFT) Após a bateria de dez testes a qual foi submetida a rede, obteve-se como melhores resultados os testes de número cinco e sete, mas nenhum dos dois chegou perto do resultado esperado. Uma vez que nenhum dos resultados foi adequado, resolveu-se implementar o método de Fast Fourier Transform (FFT), que é amplamente utilizado para a área de processamento digital de sinais. A freqüência que era tratada como um vetor de inteiros passou a ser utilizada como um vetor de valores de ponto flutuante (double) e a rede foi adaptada ao método de FFT. Foi realizada uma bateria com dois testes considerando os parâmetros utilizados no teste número cinco e no teste número sete. As entradas continuaram as mesma porém o resultado não foi o esperado, tendo o valor de MEMQ aumentado e nenhum sinal de voz pode ser realmente reconhecido como pode-se conferir na tabela. 12 e na tabela 13. 56 QTD 40 NNE 20000 NNI 15 NNS 2 NCI 1 MEMQ 1.292 Temp 122 min 23 seg %R0 0% %T1 0% TABELA 12 - Teste do método FFT número um. QTD 3 NNE 20000 NNI 12 NNS 2 NCI 1 MEMQ 1.033 Temp 4 min 32 seg %R0 0% %T1 0% TABELA 13 - Teste do método FFT número dois. 5.4 Testes com dupla camada intermediária Devido ao fraco resultado da implementação do método FFT, resolveu-se retornar ao modelo de teste anterior, porém com a adição de uma nova camada intermediária. O processo de treinamento da rede foi alterado para que o algoritmo fizesse a ligação entre as camadas intermediárias e a saída corretamente, alguns métodos foram acrescentados para que isso fosse possível. O treinamento durou mais que o esperado devido a transição de camadas, mas o resultado continuo sendo não satisfatório e o protótipo não conseguiu diferenciar os sinais, entendendo uma parte dos áudios submetidos ao reconhecimento como ambíguos, ou seja, pode ser referente ao locutor 1 ou ao locutor 2. Os testes podem ser conferidos na tabela 14 e na tabela 15. QTD 40 NNE 20000 NNI 15 NNS 2 NCI 2 MEMQ 1.193 Temp 202 min 23 seg %R0 0% %T1 0% TABELA 14 - Teste com dupla camada intermediária número um. QTD 3 NNE 20000 NNI 12 NNS 2 NCI 2 MEMQ 0.983 Temp 7 min 12 seg %R0 0% %T1 0% TABELA 15 - Teste com dupla camada intermediária número dois. 5.5 Conclusão Uma vez que todos esses testes foram feitos, conclui-se que a rede MLP da maneira como está configurada não consegue diferenciar os sinais sonoros característicos de cada locutor, levando em conta mais a palavra que estava sendo falada, sendo assim confundia os dois sinais de áudio como sendo da mesma pessoa. 57 Em outra grande parte dos áudios submetidos ao reconhecimento o protótipo interpretou como valores ambíguos, que pudessem ser tanto do locutor 1 como do locutor 2 e o restante dos sinais não foram interpretados, tendo seu reconhecimento nulo. Portanto o grande problema desta implementação da MLP, da maneira que está configurada foi extrair as características marcantes dos sinais de áudio, gerando assim uma diferenciação entre ambos para que pudesse fazer a autenticação do usuário com taxas de erro aceitáveis evitando assim que a rede encontrasse uma taxa de erro mínimo local e pudesse chegar a taxa de erro mínimo global da rede, gerando assim resultados mais adequados. 58 6 CONSIDERAÇÕES FINAIS Para as considerações finais do projeto, será apresentado neste capítulo um apanhado geral de como transcorreu o desenvolvimento do mesmo, confrontando os objetivos iniciais com os resultados obtidos através do protótipo. Durante o processo de desenvolvimento do TCC houveram uma série de dificuldades que tiveram de ser contornadas, na etapa inicial da adaptação da rede para sua utilização no protótipo ocorreram problemas relacionados ao tempo de treinamento da mesma, o qual era realizado em um notebook com um processador core 2 duo, para resolver esse problema passou a ser usado um computador desktop que possuía um processador mais eficiente core i7, o que possibilitava um ganho de tempo na parte do treinamento. Outro entrave que atrapalhou o projeto foi à utilização do software de captura de voz nativo do Windows, que em conjunto com o microfone de baixa qualidade geravam sinais de áudio com muito ruído e quase imperceptíveis. Para contornar esse problema foi utilizado um software específico para comunicação VOIP chamado TeamSpeak 3 que possibilitou trabalhar com sinais de áudio sem ruído. Por fim, já na etapa de testes do protótipo, a necessidade da utilização de um novo método de tratamento de sinais digitais se fez presente, a adequação do método de FFT gerou mais problemas, os quais foram contornados através da adaptação de grande parte da rede para a entrada de valores de ponto flutuante. Frente aos objetivos traçados na etapa de projeto do protótipo, pode-se dizer que os mesmos foram cumpridos, porém devido a problemas descritos anteriormente a solução ideal para o projeto não foi encontrada. Ao propor um levantamento bibliográfico sobre RNA e sua aplicação na 59 autenticação de usuários como o primeiro objetivo específico do projeto, o mesmo foi alcançado através da pesquisa de artigos e livros que abordassem o tema proposto, e o resultado do mesmo pode ser visto no capítulo 2 deste trabalho. Como segundo objetivo específico foi proposto a identificação de uma rede neural que solucionasse o problema. Pode-se considerar que o objetivo foi cumprido porém não demonstrado, pois através de teses encontradas na internet está provado a boa utilização da MLP para o reconhecimento de locutor, porém para este trabalho a configuração da rede não foi feita da maneira ideal, o que impediu que o problema fosse resolvido como pode ser conferido no capítulo de testes. Por fim, foi proposto o desenvolvimento de um protótipo que realizasse a autenticação do usuário através do reconhecimento de voz utilizando a RNA identificada, o qual foi realizado corretamente, porém a taxa de acerto da rede foi baixa e tratando-se de uma ferramenta de segurança, os níveis de reconhecimento devem superar 90%. O protótipo foi desenvolvido e testado como pode ser conferido nos capítulos 4 e 5. Diante dos resultados obtidos através do protótipo, pode-se considerar que o projeto é de grande valia para o entendimento do processo executado pela MLP relacionada ao reconhecimento de locutor, devido a limitações da linguagem java em relação a valores double e a não utilização de um método característico de extração de características resultaram em uma taxa de acerto inferior a 90%, que é a taxa adequada para projetos relacionados a segurança da informação. Para possíveis trabalhos futuros sugere-se o estudo e aplicação de métodos de extração de características de sinais de áudio, pois o fator preponderante para a não distinção das entradas sonoras foi o a falta de uma característica marcante que diferenciasse a freqüência e o timbre de cada locutor. Um processo sugerido é o MelFrequency Cepstral Coefficients, geralmente utilizado para o reconhecimento de palavras faladas ou também a Transformada de Wavelet Packet que foi uma adaptação da FFT para trabalhar com sinais sonoros. 60 REFERÊNCIAS BIBLIOGRÁFICAS BARRETO, J. M. Introdução às Redes Neurais Artificiais. Florianópolis: [s.n.], 2002. 57 p. Disponível em:http://www.educaonline.eng.br/UNISANTA/HTML/DOWNLOAD/AULAS/RNA. pdf>. Acesso em: 13 maio 2011. BIAS, R. G.; MAYHEW, D. J. Cost-Justifying usability. San Francisco: Morgan Kaufmann Publishers, 1994. BRAGA, A. de P.; CARVALHO, André Ponce de Leon F. de; LUDEMIR, Teresa Bernarda. Redes neurais artificiais:Teoria e Aplicações. 2. ed. Rio de Janeiro: Ltc, 2007. 226 p. BRAGA, A. P. et al. Redes Neurais Artificiais: Teoria e Aplicação. Rio de Janeiro: LTC, 2000. 262 p. BRAGA, P. de L. Reconhecimento de voz dependente de locutor utilizando Redes Neurais Artificiais. 2006. 85 f. Monografia (Bacharelado) - Curso de Engenharia da Computação, Departamento de Sistemas Computacionais, Escola Politécnica de Pernambuco – Universidade de Pernambuco, Recife, 2006. DAM, A. V. Post-WIMP User Interface. Communications of the ACM. V. 40, n. 2, p. 63-67, 1997. HAYKIN, S. Redes Neurais: Princípios e Prática. 2. ed. Porto Alegre: Bookman, 2001. 900 p. HEINEN, M. R.; OSÓRIO, F. S. Biometria comportamental: Pesquisa e desenvolvimento de um sistema de autenticação de usuários utilizando assinaturas manuscritas. Infocomp: Journal of Computer Science. São Leopoldo, p. 32. 01 nov. 2004. Disponível em: <http://osorio.wait4.org/Signatures/Heinen-OsorioInfocomp2004.pdf>. Acesso em: 04 jun. 2011. KOVÁCS, Z. L. Redes Neurais Artificiais: Fundamentos e Aplicações. 4. ed. São Paulo: Livraria da Física, 2006. 174 p. Disponível em: <http://books.google.com.br/books?id=O0nLxR67wmUC&printsec=copyright#v=one page&q&f=false>. Acesso em: 07 maio 2011. LOUZADA, J. A. Reconhecimento de palavras faladas utilizando Redes Neurais Artificiais. 2000. 67 f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Departamento de Computação, Pontifícia Universidade Católica de 61 Goiás, Goiânia. MAFRA, A. T. Reconhecimento automatico de locator em modo independente de texto por seld-organizing maps. 2002. 80 f. Tese (Mestrado) – Departamento de Engenharia, Universidade de São Paulo, São Paulo, 2002. PAULA, M. B. Reconhecimento automático de fala por computador. 2010. 108 f. Monografia (Bacharelado em Informática) – Instituto de Física e Matemática, Universidade Federal de Pelotas, Pelotas. PETRY, A.; SOARES, S. da S.; BARONE, D. A. C. Sistema para autenticação de usuários por voz em redes de computadores. In: WORKSHOP EM SEGURANÇA DE SISTEMAS COMPUTACIONAIS, IV., 2004, Gramado. [trabalhos apresentados]. [S.l.]: [s.n.], 2004. p.263-272. Disponível em: <http://www.ppgia.pucpr.br/~maziero/static/ceseg/wseg04/2610.pdf>. Acesso em: 05 jun. 2011. REZENDE, S. O. Sistemas Inteligêntes: Fundamentos e Aplicações. Barueri: Manole Ltda, 2005. 550 p. Disponível em: <http://books.google.com.br/books?id=UsJe_PlbnWcC&printsec=frontcover#v=onepa ge&q&f=false>. Acesso em: 15 maio 2011. SEEMAN, E. V. Reconhecimento de palavras usando redes neurais. 2006. 93 f. Trabalho de Conclusão de Curso (Bacharelado em Sistemas de Informação) – Departamento de Informática e Estatística, Universidade Federal de Santa Catarina, Florianópolis. TAFNER, M. A. Reconhecimento de palavras faladas isoladas utilizando redes neurais artificiais. 1996. 102 f. Dissertação (Mestrado em Engenharia de Produção), Universidade Federal de Santa Catarina, Florianópolis. ZANCAN, A. L. F. Protótipo de um sistema de reconhecimento de palavras faladas utilizando redes neurais artificiais. 2010. 69 f. Trabalho de Conclusão de Curso (Bacharelado em Sistemas de Informação) – Departamento de Ciências Exatas e Tecnológicas, Universidade do Planalto Catarinense, Lages. APÊNDICES APÊNDICE A - ARTIGO ...........................................................................................63 APÊNDICE A - ARTIGO Autenticação de Usuários Através do Reconhecimento de Voz Thiago Kramer Fertig, Daiana Petry Leite Departamento de Ciências Exatas – Curso de Sistemas de Informação – Universidade do Planalto Catarinense (UNIPLAC) – Lages – SC – Brasil [email protected], [email protected] Abstract. This article describes the question of the users authentication performed by the speaker recognition through the use of Artificial Neural Networks. The development of a prototype that performs user authentication will bring a greater level of security than the current user’s authentication models have to protect the user confidential information. Resumo. Este artigo aborda a questão do reconhecimento de locutor para realizar a autenticação de usuários através do uso de Redes Neurais Artificiais. O desenvolvimento de um protótipo que realize a autenticação de usuário trará um nível de segurança maior do que possuem os modelos atuais de autenticação para com as informações sigilosas do usuário. 1. Introdução Na medida em que a sociedade evolui, cresce também de maneira semelhante à busca pela confiabilidade da informação, não só computacionalmente falando, pois sempre foi do interesse de muitos que certos dados importantes fossem mantidos em sigilo. A evolução tecnológica chegou a tal ponto em que não se fazem mais necessários cofres para armazenar qualquer informação, podendo armazená-las digitalmente na memória de um computador. Nenhum método até hoje mostrou-se perfeitamente seguro, já que qualquer maneira de armazenamento digital não está livre de “brechas” e “bugs”. Porém a chance de falha diminui drasticamente com o passar dos anos. Com a adoção da nova geração de interfaces WIMP, proposta por Van Dam (1997) começa a ser cogitada a possibilidade de fazer com que a máquina reconheça seu usuário e para isso são utilizados os métodos biométricos de reconhecimento humano, onde o usuário pode ser reconhecido através de suas características únicas, como a impressão digital, sua voz ou até mesmo a íris de seu olho. Portanto, neste trabalho é proposta uma metodologia para a implementação de um sistema de Reconhecimento de Locutor, fazendo assim a distinção e reconhecimento de diferentes usuários minimizando possíveis problemas em relação a ambientes com ruídos e utilização de diferentes tipos de microfone. Tendo como objetivo principal o estudo de modelos de redes neurais artificiais para que seja escolhido um que consiga se adequar aos requisitos criando assim um protótipo que realize a autenticação de um usuário através do reconhecimento do locutor. Atualmente, a parte gráfica é essencial em um sistema computacional. Para que ela atenda devidamente as necessidades do usuário, deve ser extremamente usual, prática e visualmente interessante para assim ajudar na construção da imagem do produto, o que auxilia tanto nas vendas quanto na redução de custos (BIAS, 2008). A identificação do usuário torna-se um problema comum a projetos de engenharia. Várias formas de identificação pessoal são visíveis no cotidiano: documentos, chaves, cartões, códigos e até mesmo senhas de acesso. Todas essas maneiras citadas possuem algo em comum: a identificação da pessoa através de algo que só ela possua ou saiba, fazendo assim, que a mesma tenha que carregar objetos ou decorar códigos (MAFRA, 2002). Toda essa dependência gerada em torno do sigilo da informação acarreta em certos problemas, pois senhas podem ser esquecidas, assim como objetos podem ser perdidos ou até mesmo burlados. É devido a esses problemas e a essas falhas que a utilização de métodos de leitura biométricos, para reconhecimento do usuário, é cada vez mais recorrente. O reconhecimento de características únicas das pessoas como: impressão digital, voz, íris do olho, entre outras, parece ser uma maneira de se evitar fraudes e conseqüentemente o uso incorreto das informações sigilosas armazenadas no sistema. A grande diferença entre o cérebro humano e a máquina, pode ser descrita pela capacidade cognitiva que o ser humano tem de detectar informações através da fala, tais como, sentimento, locutor, estado emocional entre outros. Até o momento a máquina consegue contornar esse problema através de periféricos, que não são a melhor solução no quesito velocidade. (LOUZADA, 2010). Segundo Braga (2007) as RNAs são sistemas paralelos distribuídos compostos por unidades de processamento simples (neurônios artificiais) que calculam determinadas funções matemáticas (normalmente não-lineares). Conhecidas também como conexionismo ou então sistemas de processamento paralelo e distribuído. Resumidamente é uma forma de computação inusitada (não-algoritmica) e tem como objetivo simular a estrutura neural humana, através de sistemas paralelos distribuídos, constituídos por neurônios artificiais os quais são encarregados de calcular certas funções matemáticas em sua maioria não lineares. Esses neurônios artificiais fazem parte de uma rede onde uma cadeia de conexões de sentido único interliga-os formando assim a chamada rede neural artificial. Ainda de acordo com Braga (2007) o funcionamento padrão de uma rede neural passa por uma série de fases, iniciando pela parte da aprendizagem, onde um montante de dados é apresentado à rede que tem como objetivo retirar o máximo de informações úteis que posteriormente serão utilizadas na resolução do problema. Esse “sistema” disposto na solução de problemas utilizando uma RNA tem como diferencial o modo como a rede é treinada, na fase de aprendizagem, e como a mesma interpreta e apresenta as informações submetidas a ela. Outro fator importante na utilização de uma RNA é o modo como a informação é analisada, permitindo que a mesma apresente respostas às questões que não estavam explícitas nas informações de entrada. 1.1 Neurônio biológico 11 O que se sabe é que o cérebro humano possui cerca de 10 neurônios e que cada um desses se comunica com milhares de outros neurônios de uma forma continua e paralela. É ai que fica a base de estudo das RNA, as quais tentam simular a estrutura organizacional de uma rede biológica (topologia, conexões e comportamento). O conjunto de neurônios biológicos é parte integrante do cérebro humano, compondo a parte responsável por armazenar informações (memória), interpretá-las e até mesmo reconhecer padrões não explícitos, tudo isso por experiência (KOVÁCS, 2006) Ainda segundo Kovács (2006) a composição de um neurônio biológico em suma é baseada em três partes principais (seções), são elas: o corpo celular, que mede apenas alguns milésimos de milímetros e é responsável pelo processamento da informação e a partir daí gera novos impulsos que são transmitidos ao axônio e então aos dentritos, para assim chegar ao neurônio seguinte, o axônio compõe grande parte de um neurônio e geralmente possuem calibre uniforme, por fim existem também os dentritos, que apresentam poucos milímetros de comprimento e tem como única função receber ou transmitir os impulsos nervosos para o corpo celular. A comunicação entre os neurônios funciona de forma continua, onde o corpo celular recebe impulsos dos neurônios pré-sinápticos e os combina, caso essa carga combinada extrapole o limiar de excitação da célula, a mesma produz um impulso elétrico que é transmitido até as áreas sinápticas através do axônio, alcançando assim o próximo neurônio, que executa a mesma função de forma continua. 1.2 Neurônio artificial A proposta de um neurônio artificial MCP feita por McCulloch e Pitts representado é baseada na formação da cadeia de neurônios biológicos. Em sua composição podemos identificar várias ramificações de entrada que representam os dentritos, o núcleo, onde é realizada a soma dos pesos recebidos através das ramificações e faz-se o calculo da função de ativação. Cada terminal de entrada possui um peso “w” que substitui a carga da sinapse e por fim existe também uma única saída a qual assume o papel do axônio e transmite a nova carga para os neurônios artificiais subseqüentes, cargas essas que podem ser tanto inibitórias quanto excitatórias (negativa ou positiva). A descrição desse modelo está retratada na figura 1 (REZENDE, 2004 e KOVACS, 2006). Figura 1. Neurônio artificial. Fonte: TAFNER, 1998. Em um neurônio biológico, todos os sinais pré-sinápticos são acumulados dentro do corpo celular e o mesmo só dispara quando atinge seu limiar de ativação. Algo similar acontece em um modelo MCP, onde todos os sinais de entrada são somados dentro neurônio (soma ponderada), feito isso decide-se se o neurônio deve ou não disparar um novo sinal baseado no limiar de ativação (threshold), que quando for ultrapassado libera o impulso para o neurônio pós-sináptico (REZENDE, 2004 e KOVACS 2006). 1.3 Redes perceptron de múltiplas camadas Após um estudo detalhado sobre o funcionamento do neurônio artificial e como funciona a sua representação do neurônio biológico, um estudo aprofundado da rede MLP foi necessário. Em um primeiro momento foi estudado as especificações do perceptron de múltiplas camadas e suas características, para então aprofundar os estudos na técnica de backpropagation, que foi identificada como uma possível solução para o problema inicial. As camadas intermediárias não possuem uma variável de comparação (saída desejada), por isso a técnica de treinamento de redes neurais por meio do aprendizado supervisionado e correção de erros, a qual é realizada através da taxa de diferença entre a saída obtida e a saída desejada não pode ser aplicada. Uma solução para esse problema surgiu com o algoritmo de “back-propagation”, resolvendo assim o problema do treinamento das MLPs. Este modelo de rede por possuír uma camada intermediária, apresentam um poder computacional superior às redes de uma única camada. A qualidade de aproximação obtida por uma MLP está diretamente relacionada com a complexidade da rede em questão, ou seja, quanto mais neurônios forem utilizados nas camadas intermediárias maior será a capacidade de resolução da rede. (HAYKIN 2001). A partir de um grande número de unidades intermediárias, qualquer conjunto de padrões de entrada pode ser representado, sendo que segundo Cybenko 19891, apud Braga 2007, “uma camada intermediária é suficiente para aproximar qualquer função continua, e duas camadas são suficientes para aproximar qualquer função”. 1.3.1 Algoritmo Back-Propagation Segundo Haykin (2001) a idéia principal por trás do algoritmo de retropropagação é a estimativa de erro das camadas intermediarias de uma MLP, este erro pode ser calculado através de estimativas de efeito que elas causam na camada de saída. Uma vez obtido o erro da saída da rede, é lançado uma carga de informações de volta para a camada intermediária, a qual é ajustada de acordo com os valores das conexões entre camadas. 2. Materiais e métodos Para o estudo de caso do projeto foi definido um sistema que tem como objetivo captar sinais sonoros (voz) através de um microfone, para então realizar a autenticação do usuário em questão. O sistema estará apto a ler o sinal produzido pelo usuário, comparar esse sinal ao cadastrado anteriormente no banco de dados. Se os padrões de voz forem o mesmo o usuário terá acesso liberado, caso contrário lhe será negado acesso. Segue abaixo na figura 2 o diagrama de casos de uso para exemplificar a utilização do sistema. 1 Cybenko, G. (1989). Approximations by superpositions of sigmoidal functions. Math. Control, Signals, Systems, 2:303--314. Figura 2. Representação geral do sistema A figura 3 apresenta o diagrama de classe composto pelas classes Usuário e SinalVoz, representando o modelo de entidade e relacionamento (ER) do banco de dados do protótipo. Figura 3. Modelo ER do banco de dados do protótipo Para realizar o treinamento da rede MLP foi necessário preparar primeiramente alguns requisitos necessários. A captura dos sinais vocais para o treinamento foi feita através do programa TeamSpeak 3 e o tratamento e conversão do áudio para o padrão desejado foi realizado no software GoldWave. Para verificar a diversificação dos resultados obtidos foi necessária a configuração correta de uma seqüência de parâmetros referentes ao treinamento, os quais podem ser encontrados no bloco de código representado na figura 4. Na Lina 18 é instanciado a camada de entrada que segue com 10000 neurônios, seguido da camada intermediária na linha 19 que possui 40 neurônios e por fim na linha 21 temos a saída dupla representando os dois locutores da fase de testes do protótipo. Figura 4. Configuração de variáveis da rede A ferramenta utilizada para empregar o reconhecimento de locutor é um protótipo que simula a autenticação de usuário de uma forma simples como pode ser visto na tela inicial junto a figura 5. Figura 5. Tela inicial do protótipo A captura do áudio e a geração do gráfico representante da freqüência do sinal são representados nas figuras 6, 7 e 8. Figura 6. Captura do sinal de áudio Figura 7. Término da captura do sinal de áudio Figura 8. Gráfico da freqüência do áudio O usuário seleciona o botão de captura do áudio, em seguida fala a palavra designada junto ao microfone e então termina a captura do sinal utilizando o botão de parar a captura. Para gerar o gráfico da freqüência basta selecionar o botão de mesmo nome após ter interrompido a captura. O protótipo fará a comparação do áudio que acabara de submeter com o resultado previamente cadastrado no banco de dados através do treinamento da rede. Caso os resultados sejam equivalentes ele autorizará o login do usuário que só precisa confirmar selecionando o botão equivalente como demonstrado na figura 9. Figura 9. Autenticação confirmada. 3. Resultados Após a bateria de dez testes a qual foi submetida à rede, obteve-se como melhores resultados os testes representados nas tabelas 1 e 2 encontradas abaixo, porém nenhum dos dois obteve um resultado satisfatório, visto que a taxa de erro ficou elevada. QTD 40 NNE 20000 NNI 15 NNS NCI MEMQ Temp %R0 2 1 1.101 108 min 51 seg 32,5% Tabela 1. Resultado do protótipo número um %T1 5% QTD 3 NNE 20000 NNI 12 NNS NCI MEMQ Temp %R0 2 1 0.833 3 min 47 seg 7,5% Tabela 2. Resultado do protótipo número dois. %T1 10% 4. Discussão e conclusão Frente aos objetivos traçados na etapa de projeto do protótipo, pode-se dizer que eles foram cumpridos quase que em sua totalidade, porém devido a alguns problemas que serão descritos a seguir, a solução ideal para o projeto não foi encontrada. O propósito do projeto estava focado na implementação de um protótipo que através da utilização de uma rede neural artificial pudesse realizar corretamente a autenticação de usuários. Para tal a rede que foi escolhida foi a MLP, que possibilitou que o protótipo fosse desenvolvido e obtivesse resultados inadequados. Durante a etapa de levantamento bibliográfico teve-se de teve-se de fazer uma busca em livrarias fora da cidade e pesquisas na internet por artigos da área para que o aprendizado básico sobre inteligência artificial fosse adquirido. Logo ao iniciar o processo de adaptação da rede neural, ocorreram problemas relacionados ao tempo de treinamento da mesma, o qual era demasiadamente lento e atrasava o processo de desenvolvimento e adequação da rede. Tal problema foi contornado com a utilização de uma máquina com poder de processamento maior, diminuindo assim consideravelmente o tempo de treinamento da rede. Por fim, já na etapa de testes do protótipo, a necessidade da utilização de um novo método de tratamento de sinais digitais se fez presente, a adequação do método de FFT gerou mais problemas, os quais foram contornados através da adaptação de grande parte da rede para a entrada de valores de ponto flutuante. Para possíveis trabalhos futuros sugere-se o estudo e aplicação de métodos de extração de características de sinais de áudio, pois o fator preponderante para a não distinção das entradas sonoras foi o a falta de uma característica marcante que diferenciasse a freqüência e o timbre de cada locutor. Um processo sugerido é o Mel-Frequency Cepstral Coeffcients2, geralmente utilizado para o reconhecimento de palavras faladas ou também a Transformada de Wavelet Packet que é como uma adaptação da FFT para trabalhar com sinais sonoros. Referencias bibliográficas BIAS, R. G.; MAYHEW, D. J. Cost-Justifying usability. San Francisco: Morgan Kaufmann Publishers, 1994. BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDEMIR, Teresa Bernarda. Redes neurais artificiais:Teoria e Aplicações. 2. ed. Rio de Janeiro: Ltc, 2007. 226 p. DAM, A. V. Post-WIMP User Interface. Communications of the ACM. V. 40, n. 2, p. 6367, 1997. HAYKIN, S. Redes Neurais: Princípios e Prática. 2. ed. Porto Alegre: Bookman, 2001. 900 p. KOVÁCS, Zsolt László. Redes Neurais Artificiais: Fundamentos e Aplicações. 4. ed. São Paulo: Livraria da Física, 2006. 174 p. Disponível em: <http://books.google.com.br/books?id=O0nLxR67wmUC&printsec=copyright#v=onepage &q&f=false>. Acesso em: 07 maio 2011. LOUZADA, Jailton Alkimin. Reconhecimento de palavras faladas utilizando Redes Neurais Artificiais. 2000. 67 f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Departamento de Computação, Pontifícia Universidade Católica de Goiás, Goiânia. MAFRA, Alexandre Teixeira. Reconhecimento automatico de locutor em modo independente de texto por seld-organizing maps. 2002. 80 f. Tese (Mestrado) – Departamento de Engenharia, Universidade de São Paulo, São Paulo, 2002. REZENDE, Solange Oliveira. Sistemas Inteligêntes: Fundamentos e Aplicações. Barueri: Manole Ltda, 2005. 550 p. Disponível em: <http://books.google.com.br/books?id=UsJe_PlbnWcC&printsec=frontcover#v=onepage& q&f=false>. Acesso em: 15 maio 2011. SEEMAN, Elton Vitor. Reconhecimento de palavras usando redes neurais. 2006. 93 f. Trabalho de Conclusão de Curso (Bacharelado em Sistemas de Informação) – 2 Coeficientes que formam um mel-frequency cepstrum (MFC), que por sua vez pode ser considerado como uma representação do espectro de potência à curto prazo de um som. Departamento de Informática e Estatística, Universidade Federal de Santa Catarina, Florianópolis. TAFNER, M. A. Reconhecimento de palavras faladas isoladas utilizando redes neurais artificiais. 1996. 102 f. Dissertação (Mestrado em Engenharia de Produção), Universidade Federal de Santa Catarina, Florianópolis.