anncom – biblioteca de redes neurais artificiais para alto ... · as redes neurais são muito...

Download AnnCom – Biblioteca de Redes Neurais Artificiais para Alto ... · As redes neurais são muito úteis para a solução de problemas complexos de previsão ou aproximação de funções,

If you can't read please download the document

Upload: vannhi

Post on 11-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 4 Desenvolvimento de uma Biblioteca de Redes Neurais de Alto Desempenho ANNCOM

    Nos captulos anteriores foram apresentados alguns conceitos sobre o de-

    senvolvimento de sistemas considerando questes de qualidade e de desempenho,

    e a utilizao de placas grficas para computao de propsito geral. Neste captu-

    lo, ser apresentada uma biblioteca de redes neurais que, ao levar em considerao

    as questes acima, alcanou resultados muito significativos com relao s ferra-

    mentas e sistemas existentes no mercado.

    As redes neurais so muito teis para a soluo de problemas complexos de

    previso ou aproximao de funes, e j existem no mercado, h algum tempo,

    bibliotecas que auxiliam a modelagem, a criao, o treinamento e o teste dos v-

    rios tipos de redes conhecidos. Entretanto, tais bibliotecas apresentam limitaes

    quando o tamanho do problema ultrapassa determinado limite de complexidade,

    por exemplo, devido alta quantidade de informao (registros ou atributos) con-

    tida na base de dados utilizada nas fases de treinamento, validao e teste.

    Alm do tamanho da base, existe tambm um equilbrio entre a complexi-

    dade de cada iterao do algoritmo usado no treinamento e a melhora do acerto da

    rede a cada iterao, pois isto afeta diretamente o tempo total de treinamento. Por

    exemplo, se uma rede neural treinada por um algoritmo de retro-propagao

    com gradiente comum, o custo de cada passo relativamente pequeno, mas so

    necessrios mais passos para se treinar a rede; por outro lado, um algoritmo quasi-

    newton requer muito menos iteraes, mas com um custo computacional muito

    maior.

    A biblioteca de redes neurais desenvolvida neste trabalho utiliza a capacida-

    de computacional das placas de vdeo e uma estrutura diferenciada com o objetivo

    de reduzir o tempo de aprendizado, de forma a suportar problemas mais comple-

    xos e bases de dados maiores. A maior parte da ANNCOM foi escrita na lingua-

    gem C#, sobre a plataforma .NET 3.5, e o restante, em linguagem C estendida

    para CUDA.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 52

    4.1. Levantamento de Requisitos e Arquitetura

    Para iniciar o desenvolvimento da biblioteca, analisaram-se as necessidades

    de aplicaes tpicas e fez-se um levantamento das ferramentas utilizadas na rea

    de redes neurais artificiais. Das necessidades encontradas, as mais importantes

    foram:

    Ter um sistema modular para criao de redes neurais que possa ser

    utilizado diversas vezes, minimizando o retrabalho e facilitando ex-

    tenses e trabalhos de manuteno;

    Treinar rapidamente muitas redes neurais com bases de dados com

    muitos registros e atributos.

    Essas necessidades transformaram-se em requisitos no funcionais e leva-

    ram escolha da plataforma .NET, que suporta linguagens orientadas a objetos e

    oferece flexibilidade e robustez, alm de ser uma plataforma voltada a alta produ-

    tividade. Outro fator que influenciou na escolha da linguagem C# foi o suporte

    dado pela ferramenta de desenvolvimento da Microsoft, o Visual Studio.

    Ao se fazer o levantamento das ferramentas da rea de redes neurais, respei-

    taram-se os seguintes critrios: grau de utilizao (quantos laboratrios ou empre-

    sas utilizam a ferramenta) e preo. Entre os softwares testados, o Matlab (The

    MathWorks, Inc., 2010) foi selecionado para testes de validao e de desempenho

    dos treinamentos das redes, e a MKL (Intel Corporation, 2010) foi utilizada para

    comparaes de desempenho dos clculos numricos.

    Alm dos requisitos principais apresentados anteriormente, outros requisitos

    levantados foram:

    Requisitos Funcionais

    o Trabalhar com arquivos XML para carregar e salvar configu-

    raes de redes e resultados de treinamento;

    o Possibilitar a insero dos componentes de redes neurais na

    caixa de ferramentas do Visual Studio, permitindo a criao

    de redes em tempo de desenvolvimento (Design Time), por

    meio de simples clique e arraste, alm da configurao por

    meio de janelas;

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 53

    o Suportar conexes com diversos tipos de bancos de dados;

    o Possibilitar a compatibilidade com o Matlab por meio de

    funes que gerem vetores de pesos.

    Requisitos No Funcionais

    o Apresentao de uma interface grfica para modelagem, cria-

    o, treinamento, validao e teste de redes neurais e comits

    de redes neurais (onde, por exemplo, vrias redes votam em

    uma classe).

    A partir das bases tericas sobre arquitetura de software apresentadas no ca-

    ptulo 2 e dos requisitos supracitados, pode-se obter uma viso geral do sistema,

    conforme mostra a Figura 18. Nessa figura, os componentes brancos (Elman, RBF

    e MLP) so instncias do componente de redes neurais, chamado NeuralNet; os

    cinza-claros so instncias do treinamento chamado NetTrain, e o componente

    JacobianCUDA a parte do sistema desenvolvida utilizando-se a tecnologia da

    NVIDIA, com o objetivo de atender restrio de desempenho do treinamento.

    NeuralNet

    Neuron

    1 *1 *

    NetTrain LevenbergMarquardt : NetTrain RBF : NetTrain

    BackPropagation : NetTrain

    MLP : NeuralNet

    RBF : NeuralNet

    Elman : NeuralNet

    JacobianCUDA

    Layer

    Figura 18 Viso geral dos componentes principais da ANNCOM.

    A arquitetura foi decomposta em componentes orientados a objetos de for-

    ma a suportar novas funcionalidades, como um novo algoritmo de treinamento,

    um novo tipo de rede neural, um comportamento diferente para os neurnios, etc.

    Essa caracterstica no foi encontrada em nenhuma das ferramentas avaliadas Por

    exemplo, nelas no possvel propagar um sinal por uma rede MLP utilizando

    uma funo de ativao diferente das j existentes, ou ajustar individualmente

    todos os parmetros das gaussianas, inclusive o desvio padro, dos neurnios no

    treinamento de redes radiais (o Matlab, por exemplo, utiliza um nico valor de

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 54

    desvio padro para todos os neurnios da camada escondida). Na ANNCOM, para

    adicionar alguma funcionalidade nova, basta criar um novo componente derivado

    de um mais genrico (NeuralNet, NetTrain, etc.) e implementar a funcionalidade

    nova. Ao se criar um componente derivado, herda-se todas as funcionalidades e

    comportamento do componente pai, o que facilita e torna mais produtivo o desen-

    volvimento, uma vez que s necessrio implementar a parte adicional. No caso

    do Matlab, vale lembrar que possvel desenvolver funes novas, mas sem a

    facilidade de se herdar funcionalidades previamente desenvolvidas.

    Outro detalhe da arquitetura o suporte a conexes com vrios tipos de ge-

    renciadores de bancos de dados (SGBD Sistema Gerenciador de Banco de Da-

    dos). Essa funcionalidade, apoiada por classes dedicadas interface com bancos

    de dados disponveis no arcabouo da Microsoft, permite que as redes neurais se

    conectem com diversos tipos de SGBD diferentes, facilitando a portabilidade e a

    implantao dos sistemas que utilizam a biblioteca, conforme mostra a Figura 19.

    Alm disso, atravs de uma conexo direta entre a biblioteca e o SGBD, pode-se

    passar todo o processamento dos dados para o SGBD, de forma a respeitar polti-

    cas mais rgidas de manipulao de dados, muitas vezes adotadas pelos setores de

    TI (Tecnologia da Informao). Nesse caso, a TI fica responsvel pela gerncia

    dos procedimentos dentro do SGBD, enquanto a biblioteca apenas faz a leitura,

    sem ter a necessidade de processos para exportao e importao dos dados.

    ANNCOM

    SQL

    My SQL

    Oracle

    ...

    PatternSet

    O objeto PatternSet utiliza

    qualquer provedor ADO.NET

    para se conectar a qualquer

    tipo de SGBD

    Figura 19 Suporte a conexo com vrios tipos de SGBD.

    Para facilitar o desenvolvimento de novos sistemas com a ANNCOM, os

    componentes principais podem ser adicionados caixa de ferramentas do Visual

    Studio (Microsoft Corporation, 2010). Com isso, no desenvolvimento de aplica-

    es novas, o usurio s precisa clicar e arrastar novas redes ou treinamentos para

    o sistema que est sendo desenvolvido, e edit-los de forma visual e intuitiva. A

    Figura 20 ilustra a utilizao dessa funcionalidade, apresentando, no lado direito,

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 55

    a janela de ferramentas (Toolbox) com trs componentes (NeuralNet, Gradien-

    tDescendent e LevenbergMarquardt). Na parte de baixo da figura, encontram-se

    duas instncias de componentes j adicionadas ao projeto (neuralNet1 e leven-

    bergMarquardt1); o componente de treinamento aparece selecionado. Na lateral

    esquerda da figura, esto listadas as propriedades do componente selecionado.

    Essas propriedades podem ser alteradas e verificadas em tempo real e, dessa for-

    ma, o desenvolvimento de um novo sistema se torna mais intuitivo, j que fica

    disponvel na tela, toda a informao sobre o componente.

    Como as redes neurais artificiais possuem uma estrutura com muitas cole-

    es (uma rede possui um coleo de camadas, as camadas possuem uma coleo

    de neurnios e estes possuem uma coleo de sinapses), a ANNCOM tambm

    oferece um editor com janelas para facilitar a manipulao de tais estruturas, co-

    mo mostra a Figura 21.

    Figura 20 Suporte da ANNCOM para tempo de execuo no Visual Studio.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 56

    Figura 21 Adio e edio de colees na ANNCOM.

    O requisito que trata do desempenho da biblioteca exigiu uma completa

    mudana de paradigma na implementao habitual de treinamento de uma rede

    neural. Neste trabalho, uma parte do treinamento foi modelada para ser executada

    em uma GPU com suporte a CUDA (Figura 22), levando-se em considerao a

    Lei de Amdahl (seo 3.1.1). Outras partes da biblioteca tambm incorporaram

    inovaes para que o tempo de execuo fosse reduzido. Essas inovaes incluem

    o uso de threads, sistemas com vrios processadores e vrios computadores. A

    seguir, sero descritos em maiores detalhes os dois componentes principais da

    biblioteca: o NeuralNet e o NetTrain. Alm disso, ser apresentada uma ferramen-

    ta grfica para auxiliar a criao de solues envolvendo redes neurais.

    Clculos com

    matrizes grandes

    Vrios treinamentos sendo

    executados em paralelo

    Figura 22 Viso geral do desvio de parte do treinamento para GPU.

    4.2. Estrutura Bsica

    Para facilitar a leitura e a organizao do cdigo, a biblioteca foi dividida

    em partes que foram definidas como Espaos de Nomes, conforme mostra a Figu-

    ra 23. Alm dos espaos principais, de Redes Neurais (NetStructure), de Calcula-

    dores de Erros (NetError) e de Treinamento (Training), que sero descritos nas

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 57

    sees seguintes, existem o Espao de Modelos (Templates), onde ficam os mode-

    los de redes neurais implementados, o Espao de Funes de Ativao (Activate-

    Functions), cujo contedo so as funes de ativao das redes neurais e o Espao

    de Sadas (NetOutput). Esse ltimo tambm ser descrito em uma prxima seo.

    NetStructure

    NeuralNet Templates

    MLP

    Elman

    RBF

    NetOutput

    Training

    NetError

    NetOutput

    Sadas derivadas

    do NetOutput

    NetTrain

    GradientDescent

    NetError

    LevenbergMarquardt

    ActivateFunction

    IActivateFunctions

    Figura 23 Esquema com todos os espaos de nomes da biblioteca ANNCOM.

    Alm dessas partes, foram desenvolvidas outras secundrias que do suporte

    s conexes com bancos de dados e clculos de erro. Para trabalhar com bancos

    de dados e arquivos de texto ou XML, a ANNCOM possui uma estrutura chamada

    PatternSet, que armazena e manipula as entradas e alvos para treinamento, emba-

    ralha-os, transforma-os em matrizes ou divide-os em subgrupos para treinamentos

    com validao cruzada.

    4.2.1. Componente NeuralNet

    Com o objetivo de facilitar a explicao sobre o componente NeuralNet, a

    Figura 24 ilustra uma rede neural Multi Layer Perceptron (MLP). Nela, as cama-

    das destacadas em azul e cinza possuem colees de neurnios, os quais, possuem

    uma coleo de sinapses prpria. O processamento dos padres de entrada, oriun-

    dos, no caso da Figura 24, do banco de dados (BD), feito propagando-os atravs

    da rede, que coloca o resultado no neurnio, ou nos neurnios, da ltima camada.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 58

    Figura 24 Representao de uma rede neural MLP.

    O componente NeuralNet representa uma rede neural artificial completa, in-

    cluindo todas as camadas com os neurnios e sendo o responsvel pela propaga-

    o dos sinais de entrada pela rede. Fica tambm a cargo desse componente o de-

    ver de manter um estado consistente em toda a estrutura da rede neural. Neste

    trabalho, uma rede neural considerada consistente quando todos os seus neur-

    nios possuem um valor de sada referente ao ltimo sinal propagado por ele. Co-

    mo o NeuralNet uma representao genrica de uma rede, todos os modelos

    desenvolvidos so uma especializao dele e, assim como o NetError, que ser

    descrito mais adiante, podem-se criar novos modelos simplesmente herdando do

    componente pai, nesse caso, o NeuralNet.

    A primeira inovao da ANNCOM a estrutura do NeuralNet que com-

    posta por vrios objetos menores, conforme apresentado no padro de projeto

    Composio (Figura 3). Nessa estrutura, a rede neural formada por uma coleo

    de camadas que, por sua vez, formada por uma coleo de neurnios, e estes

    possuem uma coleo de sinapses. Assim sendo, os componentes da biblioteca se

    apresentam de forma mais intuitiva, pois as partes do modelo terico se transfor-

    maram em objetos ou componentes independentes, que podem ser especializados,

    modificados ou atualizados, sem afetar o resto da estrutura.

    Alm de uma estrutura mais intuitiva, o modelo estrutural da biblioteca

    permite uma gerncia de memria melhor, mesmo custando mais espao, pois as

    BD

    Camadas Escondidas

    Camada de Sada

    Sada

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 59

    informaes que a rede possui ficam distribudas em vrios objetos que so geren-

    ciados pelo componente NeuralNet. Normalmente, uma rede neural tratada co-

    mo uma cadeia de vetores ou vrias matrizes, o que pode ser mais simples de im-

    plementar, mas que pode gerar blocos contnuos suficientemente grandes de me-

    mria a ponto de serem paginados para o disco rgido, implicando em um desem-

    penho menor no treinamento.

    4.2.2. Modelos de Redes Neurais Artificiais

    Para facilitar o uso da biblioteca, alguns dos modelos mais utilizados de re-

    des neurais foram implementados e so indicados na Figura 25. Esses objetos so

    especializaes do componente mais genrico e possuem algumas restries de

    funcionalidades ou comportamentos para que o modelo terico da rede no seja

    desrespeitado. Por exemplo, no modelo Elman, Figura 26, onde x(k) = entrada da

    rede, an(k) = sada dos neurnios, z-1

    (k) = vetor de estados e y(k) = sada da rede,

    os neurnios da camada escondida esto ligados aos neurnios da camada de en-

    trada e, ao se criar uma rede a partir de uma instncia do objeto Elman da biblio-

    teca ANNCOM, essa ligao ser feita de forma automtica.

    No caso das redes radiais (RBF), ao se criar uma nova rede, deve-se ajustar

    os parmetros das funes de ativao (gaussiana) dos neurnios que so criados a

    partir dos padres de treinamento. Esse processo tambm executado automati-

    camente ao se criar um objeto RBF da ANNCOM.

    Figura 25 Diagrama de classes simplificado dos modelos de redes neurais im-

    plementados nesse trabalho.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 60

    Figura 26 Modelo de uma rede Elman.

    As redes MLP so as mais comuns e sua estrutura j foi apresentada na Fi-

    gura 24. Para esse tipo de rede, a biblioteca ANNCOM impede o uso de algumas

    funes de ativao e funes de agregao, e conecta automaticamente os neur-

    nios, de modo que o sinal sempre siga na direo da sada, pois isso uma carac-

    terstica de tipo de rede, tambm denominado MLP Feed-forward Only.

    4.2.3. Estrutura NetOutput

    Para decodificao dos resultados, a ANNCOM possui um objeto chamado

    NetOutput. Essa decodificao converte as sadas dos neurnios da ltima camada

    da rede para um formato compatvel com o problema. Por exemplo, se uma rede

    neural est sendo usada para avaliar se um cliente pode ou no pegar um emprs-

    timo bancrio, o NetOutput deve transformar as sadas dos neurnios em sim ou

    no. Desse objeto derivam vrios outros mais especficos, como sadas Numri-

    ca, de Classificao e outras, seguindo o padro de projeto Estratgia. Alm disso,

    como a ANNCOM orientada a objetos, podem-se criar novos decodificadores

    herdeiros do NetOutput. A Figura 27 apresenta um diagrama de classes resumido

    com a estrutura j implementada na biblioteca.

    O tipo Approximation apenas desnormaliza os sinais, caso eles tenham sido

    normalizados antes de serem apresentados rede. Esse tipo de sada normalmen-

    te usado em previses de sries e aproximaes de funes. O tipo Classification

    utilizado em problemas como classificao de clientes, apoio a decises e etc.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 61

    Na ANNCOM, o tipo Classification foi derivado em mais trs classes, com nomes

    auto-explicativos para especialistas na rea de redes neurais: One of N, Thermo-

    meter, Binary. O tipo Clustering foi criado para agrupamento de subconjuntos.

    Esse tipo de sada se adqua a problemas como minerao de dados ou problemas

    de classificao onde as classes ainda no so conhecidas.

    Figura 27 Diagrama de classes com as estruturas de decodificao das sadas das

    redes neurais.

    4.2.4. Estruturas para Clculo de Erro

    Para fornecer suporte ao cmputo de erros, a biblioteca possui uma estrutura

    (NetError) com diversos tipos de clculos conhecidos, como Erro Mdio Quadr-

    tico, Erro Absoluto Mdio, U de Theil, entre outros. Alm disso, possvel criar

    novos objetos para clculo de erro, simplesmente herdando do objeto NetError. A

    Figura 28 apresenta um diagrama de classes simplificado, com os objetos para

    clculo de erro implementados na ANNCOM.

    Figura 28 Diagrama de classes com os objetos para clculo de erro, implemen-

    tados na ANNCOM.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 62

    A mtrica U de Theil serve para determinar a acercea de uma previso (Pi)

    comparando o conjunto previsto com os valores reais (Ai), conforme a Equao 4.

    Caso a previso seja perfeita, o resultado ser zero, e se um modelo nave, onde a

    previso igual ltima realizao da srie, for utilizado, o resultado ser um.

    Dessa forma, modelos melhores daro resultados entre zero e um.

    ( )

    Equao 4

    O objeto chamado ClassificationError fornece um resultado percentual dos

    erros de classificao a partir de uma matriz de confuso como a da Equao 5,

    onde C1 o acerto da rede no grupo um, C0 o acerto da rede no grupo zero, F1

    o erro da rede no grupo um e F0 o erro da rede no grupo zero. A partir dessa

    matriz, pode-se calcular a sensibilidade (S) (Equao 6) e a especificidade (E)

    (Equao 7).

    [

    ]

    Equao 5

    Equao 6

    Equao 7

    A mtrica MAE (Mean Absolute Error Erro Absoluto Mdio) como o

    nome sugere uma mdia dos erros absolutos da previso e dado pela Equao 8,

    onde e representa o erro da previso. Essa mtrica usada em previses de sries

    e aproximaes de funes, assim como a mtrica MAPE (Mean Absolute Percen-

    tage Error Erro Mdio Percentual Absoluto). A MAPE dada pela Equao 9,

    onde A a srie real e F a srie prevista. Essa mtrica apresenta alguns proble-

    mas prticos como, por exemplo, ocorrncias de divises por zero quando existem

    zeros na srie real.

    | |

    Equao 8

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 63

    |

    |

    Equao 9

    As mtricas MSE (Mean Squared Error Erro Mdio Quadrtico) e sua de-

    rivao chamada RMSE (Root Mean Squared Error Raiz do Erro Mdio Qua-

    drtico) so definidas, respectivamente, na Equao 10 e na Equao 11. Como o

    MSE o momento de segunda ordem do erro, incorpora tanto a varincia do esti-

    mador quanto a sua parcialidade (BERGER e CASELLA, 2001). Para um estima-

    dor no viesado, isto , quando a diferena entre o valor esperado e o valor esti-

    mado zero, o MSE a varincia e ambos tm a mesma unidade de medida. Em

    uma analogia ao desvio-padro, tomando a raiz quadrada do MSE produz-se o

    RMSE, que tem as mesmas unidades que a quantidade estimada por um estimador

    imparcial. O RMSE a raiz quadrada da varincia, conhecida como o erro padro

    (BERGER e CASELLA, 2001).

    Equao 10

    Equao 11

    4.3. Modelo de Treinamento

    Antes de apresentar o modelo de treinamento da biblioteca ANNCOM, se-

    ro descritos os dois principais algoritmos de treinamento de redes neurais, ambos

    envolvendo o clculo do gradiente. O primeiro deles chamado Gradiente De-

    crescente, e um algoritmo de otimizao de primeira ordem, que utiliza o nega-

    tivo do gradiente para encontrar o mnimo local de uma funo. Conforme mostra

    a Figura 29, cada passo do algoritmo tem a direo do vetor gradiente.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 64

    Figura 29 Ilustrao de uma descida por gradiente (WIKIPEDIA, 2010).

    Para treinar as redes neurais, o objeto GradientDescent propaga, a cada ite-

    rao ou passo, todos os padres de entrada da rede (modo batch), calculando o

    erro dos neurnios da ltima camada para cada padro (Equao 12, onde t o

    valor real, y a sada da rede, p o ndice do padro e i o ndice dos neurnios

    da ltima camada da rede).

    Equao 12

    Com isso encontra-se o erro total (Equao 13) que ser usado para encon-

    trar o MSE da rede neural (Equao 14, onde n o nmero de padres e k o n-

    mero de neurnios na ltima camada da rede).

    ( )

    Equao 13

    Equao 14

    Esse erro propagado para as camadas anteriores levando-se em conta os

    valores dos pesos (w) das sinapses (Equao 15, onde wij o peso que liga o neu-

    rnio j ao neurnio i).

    Equao 15

    A partir da, mede-se a contribuio delta (i) de cada padro ao somatrio

    ai (Equao 16, onde ai a soma ponderada das entradas para o neurnio i).

    Equao 16

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 65

    O primeiro termo da Equao 16 obtido da Equao 18 (vlido apenas pa-

    ra SSE Sum Squared Error) e o segundo termo da Equao 19, resultando na

    Equao 17.

    ( ) Equao 17

    ( ) Equao 18

    ( ) Equao 19

    Na Equao 19, a funo f a derivada da funo de ativao de cada neu-

    rnio. Considerando que os neurnios influenciam o erro pelo efeito deles sobre

    os neurnios das camadas subseqentes, o clculo do delta (Equao 20, onde w

    o peso de uma sinapse) para os neurnios nas camadas escondidas feito de for-

    ma indireta (REED e MARKS, 1999).

    Equao 20

    Aps calcular os deltas de todos os neurnios, a atualizao dos pesos fei-

    ta a partir da Equao 21, no utilizando momento (HAYKIN, 2007), ou da Equa-

    o 22, utilizando momento (HAYKIN, 2007). Nessas equaes, o representa a

    taxa de aprendizado (HAYKIN, 2007).

    Equao 21

    Equao 22

    O segundo algoritmo de treinamento usado na ANNCOM baseado no al-

    goritmo LMA Levenberg-Marquardt Algorithm (MARQUARDT, 1963) para

    mnimos quadrticos no lineares, que foi incorporado retro-propagao para

    treinamento de redes neurais em (HAGAN e MENHAJ, 1994). O mtodo uma

    aproximao do mtodo de Newton, que descrito na Equao 23 e tem o objeti-

    vo de minimizar o erro ( ) da Equao 13, com relao ao vetor x, que

    representa o vetor de pesos da rede neural.

    [ ( )] ( ) Equao 23

    Na Equao 23, ( ) a chamada matriz Hessiana (Equao 24) e ( )

    o gradiente.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 66

    ( ) ( )

    [ ( )

    ( )

    ( )

    ( )

    ]

    Equao 24

    Entretanto, o custo computacional do mtodo de Newton pode ser muito al-

    to, por causa da complexidade de se calcular a matriz Hessiana e sua inversa, pelo

    fato que essa matriz pode ser singular. De forma a contornar esses dois problemas,

    o LMA, mesmo no possuindo uma convergncia to rpida quanto o mtodo de

    Newton, possui iteraes computacionalmente mais baratas e um ajuste para mi-

    nimizar a ocorrncia de matrizes singulares.

    Para simplificar o mtodo de Newton, o LMA assume que ( ) uma so-

    ma de quadrados na forma da Equao 25, o que possibilita utilizar o mtodo de

    Gauss-Newton (MARQUARDT, 1963) e, com isso, reescrever as duas componen-

    tes da Equao 23 na forma da Equao 26, onde J a matriz Jacobiana (Equao

    27) e S dado pela Equao 28.

    ( )

    ( ) Equao 25

    ( ) ( ) ( )

    ( ) ( ) ( ) ( ) Equao 26

    ( )

    [

    ( )

    ( )

    ( )

    ( )

    ]

    Equao 27

    ( )

    ( ) ( ) Equao 28

    Como o mtodo de Gauss-Newton assume que ( ) , a Equao 23 po-

    de ser reescrita na forma da Equao 29.

    [ ( ) ( )] ( ) ( ) Equao 29

    Para minimizar a ocorrncia de matrizes singulares, o algoritmo LM modifi-

    ca a Equao 29 obtendo a Equao 30 (MARQUARDT, 1963), onde I a matriz

    identidade e um parmetro que multiplicado, a cada iterao, por um fator

    enquanto a funo ( ) minimizada.

    [ ( ) ( ) ] ( ) ( ) Equao 30

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 67

    Caso o valor da funo de erro aumente, o parmetro dividido pelo fator

    . importante perceber que, quando muito grande, tem-se uma maior con-

    vergncia com um passo de , e quando muito pequeno, o algoritmo tende

    ao mtodo de Gauss-Newton.

    O ponto mais importante para incorporao desse algoritmo ao treinamento

    o clculo da matriz Jacobiana a partir dos pesos da rede, por meio de pequenas

    modificaes no algoritmo do gradiente decrescente j apresentado. Lembrando

    que a funo de erro dada pela Equao 31 (onde sada da rede neural para

    o padro p), no caso da retro-propagao padro, a derivada dada pela Equao

    32, onde k o ndice dos neurnios da ltima camada da rede, que possui um total

    de K neurnios, e l o ndice da camada.

    (

    ) (

    )

    Equao 31

    ( ) ( )

    ( ) Equao 32

    Para os elementos da matriz Jacobiana, necessrio calcular a Equao 33.

    Lembrando que o clculo da Equao 33 para a ltima camada no processo de

    retro-propagao do gradiente decrescente dado pela Equao 17, esses elemen-

    tos so calculados com a modificao dada pela Equao 34 na ltima camada.

    ( )

    ( )

    Equao 33

    Equao 34

    Na ANNCOM, utiliza-se uma abordagem inovadora para se treinar redes

    neurais. Na maioria dos programas avaliados, as redes neurais apontam para o

    algoritmo de treinamento que ser usado para trein-la. Na biblioteca deste traba-

    lho, concebeu-se um modelo de treinador e aluno. A principal diferena entre as

    duas abordagens se evidencia ao se modelar um sistema envolvendo muitas redes

    neurais: a nova abordagem torna a gerncia dos treinamentos mais intuitiva, j que

    podem ser criadas salas de aula com redes neurais, como mostra a Figura 30.

    Nessa figura, as salas de aula representam treinadores com diferentes configura-

    es, que so responsveis por treinar todos os seus alunos, no caso, as redes neu-

    rais. Por exemplo, considere que a sala A representa um treinamento usando o

    LMA e as redes 1, 2 e 3 so redes MLP com diferentes nmeros de camadas e

    neurnios. Nesse caso, o treinador A deve treinar, validar e testar as redes 1, 2 e 3

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 68

    usando suas prprias configuraes. O treinador B, por sua vez, treina, valida e

    testa as redes 4 e 5, usando outras configuraes e at outro algoritmo de treina-

    mento.

    Treinador A Treinador B

    Rede Neural 1 Rede Neural 2 Rede Neural 3 Rede Neural 4 Rede Neural 5

    Sala de Aula A Sala de Aula B

    Figura 30 Exemplo de duas salas de aula onde vrias redes so treinadas.

    Alm desse novo modelo para treinamento, foram adicionadas algumas fun-

    es para aumentar a produtividade dos programadores que fizerem uso da biblio-

    teca, como por exemplo, o treinamento com validao cruzada automtica, que

    faz vrias divises na base de entrada, embaralhando os padres e selecionando a

    rede que melhor atende aos critrios de avaliao do sistema em questo Error!

    Reference source not found.. Nessa figura, os dados da base de entrada so lidos

    pelo treinador, que os embaralha de modo que, ao dividir a base misturada, gere

    novos grupos de treinamento, validao e teste. Depois de embaralhar e dividir a

    base de entrada, o treinador inicia o treinamento nas suas redes alunas. Esse pro-

    cesso pode ser repetido diversas vezes e serve para maximizar as chances de su-

    cesso no treinamento (HAYKIN, 2007).

    Treinador divide

    base em

    Treinamento,

    Validao e Teste

    Base de

    Entrada

    Validao

    Teste

    TreinoTreinador

    embaralha os

    padres da Base

    de Entrada

    Treinador usa a

    nova base para

    treinar as redes

    Figura 31 Validao cruzada automtica da ANNCOM.

    Para avaliar os resultados com diferentes critrios de erro, o NetTrain possui

    um gerenciador para clculos de erro, que responsvel por calcular os erros refe-

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 69

    rentes aos padres da base de validao ou teste Figura 32. Nessa figura, o re-

    tngulo cinza o incio do processo com os padres sendo propagados atravs da

    rede neural. Aps a propagao, o treinador invoca o gerenciador de erro para

    executar os clculos necessrios. Por sua vez, o gerenciador de erro, executa os

    clculos, salva os resultados e devolve o controle ao treinador. Caso no tenha que

    executar nenhum clculo, informa ao treinador para continuar. Por exemplo, se

    um sistema treina uma rede neural utilizando, para teste, as mtricas Erro Percen-

    tual Absoluto Quadrtico e U de Theil, a sada desse treinamento ter dois vetores

    com os resultados dos clculos de erro de teste de cada poca, alm das informa-

    es padres, como tempo decorrido, erro do treinamento e status final.

    Rede propaga os

    padres da base

    Treinador solicita

    clculo de erro

    para as sadas

    Calcula erro?

    GE informa que

    treinador pode

    prosseguir

    No

    GE calcula os

    erros segundo as

    mtricas indicadas

    Sim

    GE salva os

    resultados e indica

    que treinador

    pode prosseguir

    Figura 32 Exemplo de funcionamento do Gerenciador de Erro (GE) para clculo

    de erros de validao e teste durante o treinamento.

    Alm das funcionalidades j apresentadas, o NetTrain oferece dois tipos de

    inicializao de pesos para as redes neurais: uma aleatria e baseada em (REED e

    MARKS, 1999) e outra baseada em (NGUYEN e WIDROW, 1990) usada no Ma-

    tlab. Com o objetivo de melhorar o desempenho da biblioteca, o treinamento pode

    ser feito utilizando vrios processadores, atravs do recurso de threads. A parte do

    cdigo paralelizada responsvel pelo clculo da matriz Jacobiana quadrada e da

    variao dos pesos a partir dessa matriz, conforme Equao 30 (HAGAN e

    MENHAJ, 1994). Tal clculo representa mais de 70% do tempo de processamento

    para uma base de tamanho pequeno e pode chegar a quase 90% em bases maiores.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 70

    4.3.1. O Treinamento em GPGPU

    Considerando que a Equao 30 executada uma vez a cada poca do trei-

    namento e que nela a matriz J possui tamanho ( ), onde w o nmero de pesos

    da rede e p o nmero de padres, mesmo utilizando vrios ncleos, o tempo total

    de um treinamento pode no ser satisfatrio, uma vez que a matriz, pode conter

    milhes de elementos. Na verdade, esse tempo pode chegar a 90% do tempo total,

    conforme apresentado anteriormente.

    A utilizao de placas grficas se mostrou promissora, pois o nmero de n-

    cleos de processamento em uma nica placa pode chegar a centenas. Alm disso,

    o tempo para se gerenciar threads na parte C# da ANNCOM pode custar mais do

    que 10% do tempo total de treinamento, enquanto que, conforme indicado no ca-

    ptulo 3, a arquitetura CUDA pode tratar threads sem custo adicional. Outro ponto

    positivo, percebido ao se utilizar a tecnologia da NVIDIA, foi a possibilidade de

    se trabalhar com vrias placas grficas, permitindo a execuo de vrios treina-

    mentos simultneos.

    A Figura 33 apresenta uma viso geral do treinamento e o fluxo do progra-

    ma atravs do host e do device. Nessa figura, a Equao 30 enviada para a GPU,

    de forma que o vetor com as variaes dos pesos da rede fosse obtido diretamente

    na placa grfica e a partir da matriz Jacobiana, dessa forma, a placa de vdeo

    responsvel por calcular toda a Equao 30, transferindo para a memria RAM da

    CPU apenas o resultado de ..

    CPU C# GPU CUDA

    Treinamento

    propaga padres

    pela rede neural

    (incio da poca)

    Treinamento

    calcula o erro de

    treinamento

    Treinamento

    monta a matriz

    Jacobiana

    Treinamento

    calcula x a partir

    da matriz

    Jacobiana

    PCI-

    E

    PCI-

    E

    Treinamento

    aplica x na rede

    neural

    Treinamento salva

    a rede neural

    (Final da poca)

    Me

    m

    ria

    RA

    M d

    a C

    PU

    Me

    m

    ria G

    lob

    al d

    a G

    PU

    Figura 33 Segundo modelo (resumido) proposto, que executa uma poro maior

    do cdigo na placa grfica.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 71

    4.3.2. Implementao na GPU

    A implementao da Equao 30 na GPU foi dividida em duas partes (kernels)

    principais: a primeira parte responsvel pela multiplicao matricial das

    matrizes e a segunda responsvel por calcular a inverso matricial de um dos

    resultados da primeira parte. A Figura 34 mostra como foi dividido o

    processamento em kernels.

    Figura 34 - Diviso do processamento em kernels.

    4.3.3. Segunda Parte: Inverso Matricial

    O clculo da matriz inversa, apesar de no representar a parte mais custosa da

    Equao 30, a parte mais complexa do desenvolvimento. Para aproveitar

    velocidade da memria compartilhada da placa grfica, cujos acesos pode chegar

    a ser 300 vezes mais rpido do que o acesso memria global, o primeiro passo

    foi dividir a matriz em blocos conforme a Figura 35, da mesma forma como foi

    feito na multiplicao matricial. A vantagem do tratamento baseado em blocos

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 72

    dividir a matriz em submatrizes e transferi-las para memria compartilhada. Dessa

    forma, os acessos memria global so limitados a uma nica leitura e escrita,

    melhorando o desempenho. A partir da, aplica-se a eliminao gaussiana no

    bloco, onde os pivs so calculados.

    a b c d

    1

    p1 f g h

    1

    p2 p3 k l

    1

    p4 p5 p6 p

    1

    1

    1

    1

    1

    Figura 35 Diviso da matriz em blocos de tamanho n (nesse caso, n 4).

    A partir dos pivs calculados, atualizam-se as n linhas adjacentes das matrizes,

    conforme a Figura 36. Essa operao feita nos diversos blocos que, nesse

    exemplo, esto marcados com cores diferentes. Esta operao executada linha a

    linha de forma independente, mas os pivs so modificados antes da atualizao

    da prxima coluna, o que exige uma sincronizao entre os blocos.

    a b c d

    1

    p1 f g h

    1

    p2 p3 k l

    1

    p4 p5 p6 p

    1

    1

    1

    1

    1

    Figura 36 Atualizao das linhas adjacentes.

    Os elementos abaixo do piv do bloco da etapa 1 so necessrio para produzir o

    bloco seguinte. Depois disso, as colunas so calculadas novamente a partir dos

    pivs gerados nos passos anteriores, e, em seguida, coluna por coluna do bloco,

    propaga o resultado para as colunas do bloco 0 salvando os pivs gerados em cada

    linha. A Figura 37 mostra como fica o bloco depois dos passos j apresentados.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 73

    a b c d

    x

    0 f g h

    x x

    0 0 k l

    x x x

    0 0 0 p

    x x x x

    p1a p1b p1c p1d

    1

    p2a p2b p2c p2d p2e

    1

    p3a p3b p3c p3d p3e p3f

    1

    p4a p4b p4c p4d p4e p4g p4h

    1

    Figura 37 Blocos atualizados.

    A partir dos pivs calculados na etapa 3, so calculadas as linhas remanescentes

    da matriz e da unidade matriz original novamente. Esta a parte mais custosa do

    algoritmo e que requer para os clculos os seguintes elementos:

    Pivs do respectivo bloco (bloco azul escuro na Figura 38);

    Linhas de fatores para a multiplicao dos pivs (destacado em amarelo na

    Figura 38);

    O bloco a ser ajustado (de cinza, vermelha, azul claro na Figura 38)

    Os clculos dentro de um bloco so independentes uns dos outros, mas as

    operaes nas coluna devem ser sincronizadas.

    a b c d

    x

    0 f g h

    x x

    0 0 k l

    x x x

    0 0 0 p

    x x x x

    p1a p1b p1c p1d

    x x x x x

    p2a p2b p2c p2d p2e

    x x x x x x

    p3a p3b p3c p3d p3e p3f

    x x x x x x x

    p4a p4b p4c p4d p4e p4g p4h

    x x x x x x

    x

    Figura 38 Linha de fatores para a multiplicao dos pivs.

    Finalmente, todos os elementos abaixo da diagonal principal so iguais a zero. A

    partir desse ponto, basta repetir os passo 1 ao 4 usando o sub-bloco do passo 1 ao

    longo da diagonal. Para o restante do processamento, a transformao do resultado

    a ser observado que a matriz triangular inferior no preenchido com 0, mas com

    valores numricos.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 74

    4.4. Ferramenta Grfica para Criao de Solues Utilizando Redes Neu-rais Clinn

    Nesta seo apresentada a ferramenta denominada Clinn, que significa

    Client of Neural Network, que utilizou, como biblioteca de redes neurais, a ANN-

    COM, j apresentada anteriormente neste captulo. O Clinn, cuja tela inicial

    apresentada pela Figura 39, tambm foi desenvolvidos sobre a plataforma .NET

    da Microsoft, pelos motivos j citados anteriormente.

    O Clinn oferece diversos modos de trabalho e visualizao para projetos en-

    volvendo uma ou vrias redes neurais. Alm disso, existem vrios modelos pas-

    so-a-passo que auxiliam na construo das solues ou projetos e em estratgias

    para criar e treinar redes genricas ou baseadas em algum modelo (ex: MLP, El-

    man).

    Figura 39 Tela inicial do Clinn.

    4.4.1. Interface utilizando Docas Flutuantes

    As interfaces grficas que utilizam docas flutuantes so muito comuns nos

    programas atuais, pois apresentaram diversas informaes na tela de forma orga-

    nizada. Na Figura 39 possvel verificar diversas funcionalidades disponveis em

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 75

    forma de docas flutuantes. Essas janelas internas possuem diversas funcionali-

    dades que facilitam o trabalho do cliente. A Figura 40 mostra a possibilidade de se

    criar um ambiente completamente personalizado e que pode ser salvo, tornando

    mais fcil a adaptao ao programa.

    Alm das docas de funcionalidades (propriedades, explorador de soluo e

    explorador de banco de dados), existe a doca de documentos, onde so editadas as

    redes neurais por meio de arquivos em formato XML. No futuro, o editor de texto

    ser melhorado de forma a interpretar em tempo real o texto digitado, alm de

    colori-lo, a fim de auxiliar na edio dos arquivos XML. Entretanto, j existe su-

    porte para validao, que feita cada vez que os documentos so salvos. Nos pa-

    rgrafos seguintes, cada uma das docas de funcionalidades disponveis no Clinn

    ser descrita com maiores detalhes.

    Figura 40 Movimentao das docas pelo programa.

    A doca Propriedades auxilia na edio das redes de uma forma simples e r-

    pida. A Figura 41 mostra maiores detalhes da doca e como simples ler qualquer

    informao contida no componente. Por essa doca possvel inserir um padro

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 76

    manualmente na camada de entrada da rede neural e propag-lo atravs dessa re-

    de, atravs da propriedade InputPattern.

    As Figura 42, Figura 43 e Figura 44 mostram a possibilidade de editar as es-

    truturas internas da rede como, respectivamente: camadas, neurnios e sinapses.

    Na Figura 42, so mostradas as camadas contidas nesta coleo ( direita). Nela,

    as camadas podem ser removidas e adicionadas, alm de poderem ter sua ordem

    alterada. Neste modo possvel alterar qualquer propriedade das camadas indivi-

    dualmente. Na Figura 43, todas as propriedades dos neurnios so mostradas.

    Nessa figura, possvel observar que algumas propriedades so somente-leitura

    para preservar a consistncia da rede neural. Na Figura 44, destaca-se o vetor de

    pesos, que permite visualizar ou editar os mesmos. Nesta tela, todas as proprieda-

    des das sinapses podem visualizadas, e algumas, alteradas pelo mesmo motivo

    indicado anteriormente.

    Figura 41 A doca de propriedades em detalhes. direita, a figura mostra a faci-

    lidade de navegao pelo componente.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 77

    Figura 42 Editor de coleo de camadas.

    Figura 43 Editor de coleo de neurnios.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 78

    Figura 44 Editor de coleo de sinapses.

    A doca Explorador de Soluo organiza as redes j criadas na soluo cor-

    rente, uma vez que, para se encontrar uma boa rede para um problema, necess-

    rio se testar vrias redes com diferentes arquiteturas. Por exemplo, se uma estrat-

    gia de treinamento configurada para que se crie redes MLP variando a quantida-

    de de neurnios em uma determinada camada, podem ser geradas muitas redes.

    Com o objetivo de organizar essas redes, o Explorador de Soluo as agrupa como

    mostra a Figura 45. Nessa figura, pode-se ver uma soluo j criada com algumas

    redes neurais. Para editar qualquer rede contida na rvore, basta clicar duas vezes

    sobre a mesma e esta ser aberta pelo editor de documentos que ser apresentado

    em breve. Alm disso, esta doca permite apagar os arquivos, adicionar novos e

    alterar seus nomes.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 79

    Figura 45 Doca exploradora de soluo.

    A doca Explorador de Bases de Dados (Figura 46) permite a conexo com

    bases simultneas e a visualizao de tabelas ou visualizaes dessas tabelas de

    forma simples e rpida. Na Figura 46, o explorador est conectado a uma base de

    dados SQL e mostra o contedo da mesma. Essa doca foi criada, pois a manipula-

    o dos dados uma parte fundamental na soluo de um problema utilizando

    redes neurais. A rpida visualizao e manipulao desses dados podem economi-

    zar algumas horas no final de um projeto. A Figura 47 mostra a visualizao e a

    edio de tabelas ou visualizaes dessas tabelas.

    Figura 46 Explorador de bases de dados.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 80

    Figura 47 Possibilidade de visualizar e editar as informaes das tabelas.

    A doca de treinamento oferece algumas funes que automatizam o proces-

    so de criao de uma rede. Nela possvel realizar operaes para adicionar trei-

    namento, interconectar a rede, desconectar a rede e inicializar os pesos. A opera-

    o de adicionar treinamento cria um componente de treinamento e o liga rede

    neural. Interconectar a rede significa interligar todos os neurnios da rede atravs

    de sinapses. Os neurnios da camada n so ligados aos da camada n-1 at a pri-

    meira camada escondida, pois esta ligada ao vetor de entrada atravs da In-

    putSynapses. A operao de desconectar toda a rede remove todas as conexes da

    rede neural em questo. Quando esse comando acionado, uma janela de confir-

    mao exibida, pois todo um treinamento pode ser perdido com este comando. A

    inicializao dos pesos da rede neural pode ser feita de trs formas: (1) o usurio

    escolhe um valor fixo que ser copiado para todos os pesos. Isto pode ser til

    quando se quer experimentar diferentes tipos de treinamento; (2) o usurio fornece

    uma semente inicial para gerao de pesos pseudo-randmicos. Este mtodo gera

    pesos prximos de zero para evitar o problema de paralisia da rede; e (3) o usurio

    deixa o programa gerar pesos pseudo-aleatrios por conta prpria. Isto pode ser

    til quando se quer experimentar diversas vezes um determinado treinamento.

    Futuramente, esta doca suportar mais opes alm de uma integrao mai-

    or com a doca exploradora de base de dados a fim de tornar mais dinmico o pro-

    cesso.

    As docas apresentadas acima so utilizadas para manipular a soluo e, de

    forma grfica, as propriedades dos componentes utilizados na soluo. Para se

    editar as tabelas, visualizaes e redes neurais, a doca de documentos. Ela tem um

    comportamento de lista, onde as abas representam os documentos abertos que

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 81

    podem ser fechados ou reordenados. Isto bastante til quando se trabalha com

    muitos documentos abertos ao mesmo tempo. A Figura 48 mostra alguns docu-

    mentos abertos nessa doca. importante salientar que os arquivos de configura-

    o de rede neural so validados cada vez que os mesmos so salvos, com o obje-

    tivo de mant-los sempre vlidos. Outra caracterstica interessante o back-up

    automtico dos arquivos, que salva de tempos em tempos os arquivos para prote-

    g-los de falhas no sistema. Mesmo se um arquivo nunca foi salvo, uma cpia

    temporria deste fica salva no disco rgido. Alm das funcionalidades apresenta-

    das, a doca de documentos fornece suporte para o passo a passo que ser detalha-

    do a seguir.

    Figura 48 Doca de documentos com uma lista de arquivos abertos.

    4.4.2. Processo de Criao Automatizada

    Uma maneira mais fcil de criar novas redes usando o modelo passo a pas-

    so que pode ser visto na Figura 49. Neste modo, as configuraes das redes so

    selecionadas de maneira intuitiva e fcil. Alm disso, todos os detalhes da rede

    vo sendo aprofundados a cada passo. Na primeira parte, caractersticas como

    nome, tipo de estrutura, nmero de entradas, tipo de normalizao, funes de

    treinamento, tipo de clculo de erro so apresentados apenas como uma seleo

    simples.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 82

    Figura 49 Modelo passo a passo para se criar uma nova rede neural.

    Depois de escolher essas primeiras caractersticas, o usurio pode montar a

    estrutura de camadas das redes adicionando os neurnios e selecionando, para

    cada neurnio, as funes de ativao e agregao, o que possibilita montar estru-

    turas com vrias funes distintas. Na terceira e ltima parte desta primeira tela

    possvel escolher o formato de sada da rede entre classificao e aproximao

    (para as redes de agrupamento, essas opes ficam desabilitadas). Como so mui-

    tas telas para descrever os diferentes caminhos possveis no modo passo a passo,

    apenas a primeira tela aqui apresentada.

    4.4.3. Processo de Treinamento

    Para treinar as redes, o Clinn oferece outro modelo passo a passo que cria

    estratgias de treinamento. Nessas estratgias, possvel escolher limites para

    variar o nmero de neurnios nas camadas, programar alteraes nas funes de

    ativao e agregao, o nmero de pocas, o valor do momento e at ativar uma

    sintonizao automtica para os limites superiores e limites inferiores nas sadas

    dos neurnios da ltima camada em rede neurais de classificao. Por exemplo, o

    grfico da Figura 50 mostra um limite superior (upper threshold) em 0,8 e um

    DBDPUC-Rio - Certificao Digital N 0812723/CA

  • Desenvolvimento de uma Biblioteca de Redes Neurais Auxiliada por Placa Grfica 83

    limite inferior (lower threshold) em 0,1. Isto quer dizer que todos os valores maio-

    res ou iguais a 0,8 sero interpretados como um e todos os valores menores que

    0,1, como zero. A regio entre esses dois valores chamada de regio de dvida.

    Neste caso a rede neural no sabe informar a que grupo ou classe o padro apre-

    sentado pertence. Nesta ltima opo, futuramente ser possvel executar um al-

    goritmo gentico para mapear os melhores valores.

    Figura 50 Funo sigmoid de um neurnio da ltima camada da rede neural.

    DBDPUC-Rio - Certificao Digital N 0812723/CA

    4 Desenvolvimento de uma Biblioteca de Redes Neurais de Alto Desempenho ANNCOM4.1. Levantamento de Requisitos e Arquitetura4.2. Estrutura Bsica4.2.1. Componente NeuralNet4.2.2. Modelos de Redes Neurais Artificiais4.2.3. Estrutura NetOutput4.2.4. Estruturas para Clculo de Erro

    4.3. Modelo de Treinamento4.3.1. O Treinamento em GPGPU4.3.2. Implementao na GPU4.3.3. Segunda Parte: Inverso Matricial

    4.4. Ferramenta Grfica para Criao de Solues Utilizando Redes Neurais Clinn4.4.1. Interface utilizando Docas Flutuantes4.4.2. Processo de Criao Automatizada4.4.3. Processo de Treinamento