Post on 11-Nov-2018
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