Buscar

Redes Neurais Artificiais: Um Tutorial

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

REDES NEURAIS ARTIFICIAIS: UM BREVE TUTORIAL 
 
 
Renato Corrêa Vieira 
renatocv@inf.ufsc.br 
 
Mauro Roisenberg 
mauro@inf.ufsc.br 
 
 
 
Laboratório de Conexionismo e Ciências Cognitivas (L3C) 
 
Universidade Federal de Santa Catarina (UFSC) – Florianópolis –SC - Brasil 
 
 
Resumo 
 
O estudo das Redes Neurais Artificiais tem alta relevância para os 
pesquisadores de Inteligência Artificial, sendo objeto de crescentes pesquisas e 
servindo como valiosa ferramenta para diversas aplicações. 
Este trabalho tem em seu âmbito geral o objetivo de fazer uma breve 
introdução as Redes Neurais Artificiais, tentando explorar suas peculiaridades 
principais, de forma a seguir como um breve guia introdutório aos interessados nesta 
tecnologia. 
 Tendo em vista que o objetivo deste trabalho é fazer um apanhado geral do 
assunto, tentaremos nos direcionar para pontos cruciais como a descrição do 
neurônio biológico, aprendizado e treinamento das Redes Neurais Artificiais, também 
serão feitos comentários sobre as principais arquiteturas, mostrando uma aplicação 
real, utilizando para isso o software Matlab 6.0. 
 Este tutorial não tem exigência de nenhum pré-requisito especial, sendo um 
guia introdutório para o estudante interessado em conhecer a tecnologia das Redes 
Neurais Artificiais. 
 
1 – Introdução 
 
 O ser humano é dotado de complexos circuitos neurais cerebrais que constam 
de variadas conexões entre seus neurônios (sinapses) interagindo entre si de modo 
a fazer emergir comportamento inteligente. Sendo assim, surge a idéia de que se 
conseguirmos modelar computacionalmente estas conexões neurais, poderíamos 
fazer emergir comportamentos também inteligentes em máquinas. Neste contexto, 
surgem as redes neurais artificiais (RNAs) que são inspiradas na própria natureza 
das redes de neurônios e sinapses biológicas. Esta idéia de modelagem cerebral 
forma a vertente da Inteligência Artificial chamada Inteligência Artificial Conexionista. 
Outro ponto importante para sedimentar à utilização das redes neurais 
artificiais é que existem classes de problemas que a complexidade algorítmica é 
muito grande, de modo a se tornar inviável a resolução algorítmica convencional. 
Entretanto, o ser humano tem mecanismos intrínsecos que resolvem problemas 
complexos como reconhecimento de fala e segmentação de imagens de maneira 
inata. 
Além disso, as RNAs são dispositivos que permitem tolerância a ruídos e 
falhas, o que advém da capacidade de generalização das redes, sendo capaz de 
suportar ruídos e imperfeições no ambiente, ainda mantendo um resultado desejado. 
 Apesar do pouco conhecimento do cérebro humano, além da dificuldade de 
modelar mesmo o que já sabemos, as pesquisas em redes neurais tem se mostrado 
bastantes promissoras em diversas áreas, como engenharia, computação e até 
mesmo nas neurociências. Sendo também de grande utilidade para problemas como 
reconhecimento de padrões, agrupamento, previsão de séries temporais, etc. 
 Nas próximas seções deste trabalho veremos importantes pontos das RNAs 
como um breve levantamento de sua história, também veremos como se dá o 
funcionamento do neurônio artificial, bem como sua relação com o neurônio 
biológico, então passaremos a tratar do aprendizado e treinamento das redes, dando 
ênfase ao algoritmo de treinamento Backpropagation e finalmente mostraremos uma 
aplicação utilizado o software Matlab. 
 
2 – História 
 
 Podemos considerar que a história das Redes Neurais Artificiais remonta do 
ano de 1943 quando McCulloch e Pitts conceberam o primeiro modelo de neurônio 
artificial que se baseia em uma espécie de modelagem matemática do neurônio 
biológico (McCulloch & Pitts, 1943). O surgimento do neurônio de McCulloch e Pitts 
foi considerado como marco final da chamada época antiga das Redes Neurais, 
época esta caracterizada pelas conquistas da psicologia e neurofisiologia, apesar de 
terem sido feitas maiores conquistas na área da psicologia do que na neurofisiologia. 
 Neste contexto surge a Época Romântica da abordagem conexionista da 
Inteligência Artificial, esta época teve um grande marco que foi o trabalho de Donald 
Hebb que sugeriu em seu livro “Organization of Behavior” um modo de proporcionar 
capacidade de aprendizado às redes neurais artificiais. Além disso, cresceu a 
intenção em buscar inspiração na própria natureza para fazer emergir 
comportamentos inteligentes. Nesta fase as pesquisas eram limitadas pela baixa 
tecnologia computacional existente. 
 A época romântica culminou no famoso encontro do Darthmouth College onde 
segundo (BARRETO, 1997) foi o primeiro encontro conjunto para estudar a 
Inteligência Artificial (IA), sendo que os anos que se seguiram ao encontro em 
Darthmouth foram de muito otimismo para os pesquisadores de IA e estes pensavam 
que brevemente qualquer problema poderia ser resolvido com inteligência artificial, 
esta idéia ganhou ainda mais força com o Perceptron de Frank Rosenblatt. O 
Perceptron era uma rede neural de duas camadas de neurônios capaz de aprender 
de acordo com a lei de Hebb. 
 Em 1969, Minsky & Papert em seu livro Perceptrons (MINSKY & PAPERT, 
1969) provaram que a rede proposta anteriormente por Rosenblatt não era capaz de 
distinguir padrões linearmente separáveis como o problema do OU-Exclusivo. 
 O livro Perceptrons rapidamente fez as pesquisas em redes neurais artificiais 
estancarem, pois se gerou uma onda de pessimismo na comunidade acadêmica, 
esta fase ficou conhecida como Época das Trevas e durou até 1981. Todavia, as 
pesquisas em inteligência artificial continuaram com o intuito de resolver problemas 
em domínios restritos, sendo um estopim para o desenvolvimento de sistemas 
especialistas. 
 A Época de Renascimento (1981-1987) caracterizou-se pelo renascimento da 
inteligência artificial conexionista, tendo mais a função de preparação para a fase 
seguinte que seria já a Época Contemporânea, aonde vem acontecendo uma 
espécie de explosão nas aplicações que utilizam RNAs, esta explosão se deveu a 
junção de algumas inovações como o algoritmo de treinamento Backpropagatiom, 
proposto por Paul Werbos em 1974 (porém somente popularizado em 1986 pelo 
grupo PDP). Além da utilização de várias camadas nas de neurônios, podemos 
considerar importante também os estudos de John Hopfield que salientava as 
propriedades associativas de uma classe de redes neurais que apresentava fluxo de 
dados multidirecional e comportamento dinâmico. (ROISENBERG, 1998). Apesar de 
tudo, as redes neurais ainda possuem algumas limitações que são campo aberto 
para pesquisas como a falta de uma análise matemática profunda e estudos sobre 
computabilidade e complexidade computacional. 
 
3 – Neurônio Biológico 
 
 Um neurônio típico é composto por um corpo celular ou soma, um axônio 
tubular e várias ramificações arbóreas conhecidas como dendritos. Os dendritos 
formam uma malha de filamentos finíssimas ao redor do neurônio. Ao passo que o 
axônio consta de um tubo longo e fino que ao final se divide em ramos que terminam 
em pequenos bulbos que quase tocam os dendritos dos outros neurônios. O 
pequeno espaço entre o fim do bulbo e o dendrito é conhecido como sinapse, 
através da qual as informações se propagam. O número de sinapses recebidas por 
cada neurônio variam de 100 a 100.000, sendo que elas podem ser tanto excitatórias 
como inibitórias. Nas figuras 1 e 2 são mostradas ilustrações de um neurônio artificial 
e de uma sinapes, respectivamente. 
 
 
 Figura 1 – Neurônio Biológico 
 
 
 
 
Figura 2 – Representação da sinapse neural 
 
 A célula nervosa tem um potencial de repouso devido aos íons Na+ e K – 
estarem em concentrações diferentes dentro e fora da célula, de modo que qualquer 
perturbação na membrana do neurônio provoca uma série de alterações durante um 
curto período de tempo. 
 A alteração na concentração dos íons Na+ e K – gera um trem de pulso que se 
expande localmente nas proximidades dos dendritos. Dependendo da intensidade do 
estímulo, este tremde pulso pode exceder um certo limiar no corpo celular e gerar 
um sinal com amplitude constante ao longo do axônio. Na fronteira do momento do 
disparo do neurônio, é gerado um potencial de ação que impulsiona o fluxo do sinal 
gerado pelo corpo celular para outras células. 
 O pulso elétrico gerado pelo potencial de ação libera neurotransmissores que 
são substâncias químicas contidas nos bulbos do axônio, estes neurotransmissores 
são repassados para os dendritos do neurônio seguinte. Assim, quando o conjunto 
de neurotransmissores que chegam aos dendritos de um determinado neurônio 
atinge um certo limiar, eles disparam de novo um potencial de ação que vai repetir 
todo o processo novamente. 
 Convém ressaltar que as sinapses podem ser excitatórias, facilitando o fluxo 
dos sinais elétricos gerados pelo potencial de ação, como podem também ser 
inibitórias que tem como característica dificultar a passagem desta corrente. 
 Esta seção teve o intuito de apenas contextualizar a inspiração biológica a 
qual as redes neurais artificiais são idealizadas, para mais informações acerca do 
funcionamento do sistema neural, o leitor pode consultar (NICHOLLS2000) e 
(LAVINE, 1983) que foram utilizados como literatura base para esta seção. 
 
 
 
 
 
 
 
 
 
 
 
4 – Neurônio Artificial 
 
 Apesar dos esforços em se modelar os neurônios biológicos tudo que se 
conseguiu até hoje foi uma aproximação elementar. Neste trabalho mostraremos 
uma generalização do modelo proposto por Azevedo (Apud Roisenberg, 1998). A 
figura 3 ilustra este modelo. 
 
 
 
 
 
 
 
 
 
 
Figura 3 – Neurônio Artificial 
 
 
 
 Neste modelo as entradas do neurônio uj podem ser saídas de outros 
neurônios, entradas externas, um bias ou qualquer combinação destes elementos. 
Estas entradas são ponderadas pelos pesos wij que são inspirados na força da 
conexão sináptica. 
 Desta forma, temos o chamado net do neurônio que é geralmente o somatório 
de todas as entradas multiplicadas pelos seus respectivos pesos. Ou seja: 
ij
n
ji wunet ∑=
1
 
 Sendo que wij significa o peso da conexão sináptica do neurônio i para o 
neurônio j. 
 Também temos a função de ativação φ que só existe em neurônios dinâmicos, 
pois os estados futuros dos neurônios são afetados tanto pelo net de entrada como 
pelo estado atual do neurônio, ou seja, este tipo de neurônio tem uma certa 
“memória”que permite guardar esta informação de estados anteriores. Entretanto, em 
grande parte da literatura considera-se a função de ativação constante, tornando os 
neurônios em entidades estáticas. (ROISENBERG, 1998) 
 A função de saída η é quem produz a saída do neurônio e normalmente tem 
forma contínua e crescente, de tal sorte que seu domínio geralmente se encontra no 
âmbito dos números reais. Geralmente utiliza-se como função de saída as funções 
lineares, sigmoidal ou logística e a função tangente hiperbólica. 
 
5 – Topologia das Redes Neurais Artificiais 
 
 Para a vasta maioria dos problemas práticos um único neurônio não é 
suficiente, sendo assim utiliza-se neurônios interconectados, sendo que a decisão de 
: 
: 
un 
u3 
u2 
u1 
wn 
w3 
w2 
y 
net i φ η 
como interconectar os neurônios é uma das mais importantes decisões a se tomar 
em um projeto de uma rede neural artificial 
 No tocante de como os neurônios se interligam, é conveniente ressaltar a 
utilização de camadas intermédiárias (ou ocultas) que permitem as RNAs 
implementar superfícies de decisão mais complexas. Estas camadas permitem que 
seus elementos se organizem de tal forma que cada elemento aprenda a reconhecer 
características diferentes do espaço de entrada, assim, o algoritmo de treinamento 
deve decidir que características devem ser extraídas do conjunto de treinamento. A 
desvantagem em utilizar camada escondida é que o aprendizado se torna muito mais 
difícil. 
 As redes neurais artificiais podem ser diretas ou recorrentes, sendo que a 
principal diferença entre elas é que na primeira os neurônios não recebem 
realimentação em suas entradas, ou seja, seu grafo não tem ciclos. 
 Atualmente as redes neurais diretas são as mais utilizadas, principalmente 
pelo advento da popularização do algoritmo de treinamento backpropagation. Este 
tipo de rede pode ser considerado um aproximador universal de funções, sendo que 
seu nível de precisão dependerá principalmente do número de neurônios, bem como 
da escolha eficiente do conjunto de exemplos. 
Nas redes neurais recorrentes existe pelo menos um ciclo de 
retroalimentação, onde algum neurônio fornece o seu sinal de saída para a entrada 
de outro neurônio. Este tipo de rede se comporta melhor com problemas dinâmicos e 
que portanto necessitam de dinâmica da rede neural, entretanto neste trabalho 
trataremos apenas das redes neurais diretas, pela sua maior popularização. para 
saber mais sobre redes neurais recorrentes, procurar em (CLEEREMANS, SERVAN-
SCHREIBER, MCCLELLAND, J., 1989) (CASEY,1993) e (BURROWS e NIRANJAN, 
1993) 
As figuras 4 e 5 ilustram redes neurais diretas e recorrentes, respectivamente. 
É importante salientar que as conexões entre neurônios podem ser feitas de outras 
diversas maneiras, ou seja, podemos fazer ligações entre neurônios da mesma 
camada, podemos fazer ligações entre todos neurônios de uma camada com apenas 
alguns de outra camada, e assim por diante. A disposição das ligações dependerá de 
que tipo de rede neural se deseja utilizar, bem como novas arquiteturas ainda são 
objeto de pesquisa e o campo ainda está aberto para inovações neste sentido. 
 
 
 
Figura 4 – Rede Neural Direta. 
 
 
Figura 5 – Rede Neural Recorrente 
 
6 – Aprendizado: Algoritmo Backpropagation 
 
 O conhecimento das redes neurais artificiais (RNA) se dá através da 
ponderação que os pesos da conexão entre os neurônios de diferentes camadas 
trocam entre si. Ou seja, encontrar solução para um determinado problema utilizando 
RNA seria, a grosso modo, encontrar a melhor topologia de rede, bem como ajustar 
corretamente os pesos das conexões entre os neurônios. A forma de aprendizado 
das RNAs podem ser classificadas em dois tipos: supervisionado e não 
supervisionado. 
 O aprendizado supervisionado inere em sua estrutura uma espécie de 
instrutor que confere o quanto a rede está próxima de uma solução aceitável, 
adaptando na concepção do treinamento os pesos entre os neurônios, de modo a 
prover uma menor diferença entre as saídas desejadas e a obtida. 
 Já o aprendizado não-supervisionado não possui conhecimento a priori das 
saídas da rede, e funciona de modo a distinguir classes de padrões diferentes dos 
dados apresentados à rede, através de algoritmos de aprendizado baseados 
geralmente em conceitos de vizinhança e agrupamento. 
 Na aprendizagem não-supervisionada a rede é ajustada de acordo com 
regularidades estatísticas dos dados de entrada, de tal forma que ela cria categorias, 
otimizando em relação aos parâmetros livres da rede uma medida da qualidade que 
é independente da tarefa a ser executada. Para mais informações sobre 
aprendizado não supervisionado, consultar (KOHONEN, 1987) e (FREEMAN 
SKAPURA, 1992). 
 Neste trabaho focaremos apenas o tipo de aprendizado supervisionado, 
apresentando o algoritmo de treinamento backpropagation, o qual é a alternativa 
mais utilizada para treinamento de redes neurais diretas. 
 O algoritmo backpropagation provê um aprendizado supervisionado, isto é, ele 
procura achar iterativamente a mínima diferença entre as saídas desejadas e as 
saídas obtidas pela rede neural, segundo um erro mínimo. Desta forma, ajustando os 
pesos entre as camadas através da retropropagação do erro encontrado em cada 
iteração. 
Uma solução para superar o problema do aprendizado da classificação de 
padrões não-linearmente separáveis é a utilização de uma camada intermediária de 
neurônios, chamada Camada Escondida ("Hidden Layer"), de modo a poder 
implementar superfícies de decisão mais complexas. A característica principal da 
camada escondida é que seus elementos se organizamde tal forma que cada 
elemento aprenda a reconhecer características diferentes do espaço de entrada, 
assim, o algoritmo de treinamento deve decidir que características devem ser 
extraídas do conjunto de treinamento. A desvantagem em utilizar camada escondida 
é que o aprendizado se torna muito mais difícil. 
Como até o início dos anos 70 nenhum algoritmo de aprendizado para estas 
redes multicamadas havia sido desenvolvido, as pesquisas na área de redes neurais 
acabaram caindo em descrédito, até que nos anos 80, um algoritmo chamado Retro-
propagação ou Backpropagation, veio fazer renascer o interesse geral pelas redes 
neurais. 
O algoritmo Backpropagation foi desenvolvido de maneira independente por 
vários pesquisadores trabalhando em diferentes áreas aproximadamente na mesma 
época. Em 1974, Werbos (WERBOS, 1974) apresentou o algoritmo enquanto 
desenvolvia sua tese de doutorado em estatística e o chamou de "Algoritmo de 
Realimentação Dinâmica". Parker (PARKER, 1982) redescobriu o algoritmo e 
chamou-o de "Algoritmo de Aprendizado Lógico". Porém, foi com o trabalho de 
Rumelhart, Hinton e Williams (RUMELHART e MCCLELLAND, 1986) do grupo PDP 
("Parallel Distributed Processing") do MIT em 1986 divulgou e popularizou o uso do 
Backpropagation para o aprendizado em redes neurais. O algoritmo Backpropagation 
é hoje em dia a técnica de aprendizado supervisionado mais utilizada para redes 
neurais unidirecionais multicamadas. 
Uma descrição sumária da operação da rede é apropriada neste instante para 
ilustrar como o Backpropagation é utilizado para o aprendizado de problemas de 
mapeamento complexo. Basicamente, a rede aprende um conjunto pré-definido de 
pares de exemplos de entrada/saída em ciclos de propagação/adaptação. Depois 
que um padrão de entrada foi aplicado como um estímulo aos elementos da primeira 
camada da rede, ele é propagado por cada uma das outras camadas até que a saída 
seja gerada. Este padrão de saída é então comparado com a saída desejada e um 
sinal de erro é calculado para cada elemento de saída. 
O sinal de erro é então retro-propagado da camada de saída para cada 
elemento da camada intermediária anterior que contribui diretamente para a 
formação da saída. Entretanto, cada elemento da camada intermediária recebe 
apenas uma porção do sinal de erro total, proporcional apenas à contribuição relativa 
de cada elemento na formação da saída original. Este processo se repete, camada 
por camada, até que cada elemento da rede receba um sinal de erro que descreva 
sua contribuição relativa para o erro total. Baseado no sinal de erro recebido, os 
pesos das conexões são então atualizados para cada elemento de modo a fazer a 
rede convergir para um estado que permita a codificação de todos os padrões do 
conjunto de treinamento. 
Como podemos ver da descrição acima, o Backpropagation utiliza o mesmo 
princípio da Regra Delta, qual seja, a minimização de uma função custo, no caso, a 
soma dos erros médios quadráticos sobre um conjunto de treinamento, utilizando a 
técnica de busca do gradiente-descendente. Por esta razão, o algoritmo 
Backpropagation também é chamado muitas vezes de Regra Delta Generalizada 
("Generalized Delta-Rule"). A modificação principal em relação a Regra Delta foi a 
utilização de funções contínuas e suaves como função de saída dos neurônios ao 
invés da função de limiar lógico. Como as funções de saída passaram a ser 
deriváveis, isto permitiu a utilização da busca do gradiente-descendente também 
para os elementos das camadas intermediárias. 
 
6.1 – Formalização matemática do Algoritmo Backpropagation 
 
 Neste trabalho iremos dar apenas uma descrição resumida sobre como 
funciona a matemática do algoritmo backpropagation, para saber mais detalhes ver 
(FREEMAN & SKAPURA, 1992) e (HAYKIN, 1994). Para isto, utilizaremos como 
referência a arquitetura unidirecional apresentada na figura 5. 
 
1
i
n
x
x
x
k1
ki
kn
1
j
p
l
m
1
bias bias
w ji
h
θj
h
netkj
h
1
1
1
1
1
1
fj
h net
kj
h( )
wpj
o
θp
o
netkp
o fp
o net
kp
o( )
Camada de
Entrada
Camada 
Escondida
Camada de
Saída
...
...
...
...
...
...
 
Figura 5 – Arquitetura unidirecional multi-camada 
 
Suponhamos que tenhamos um conjunto de P pares de vetores (X1,Y1), 
(X2,Y2), ..., (XP, YP), no nosso conjunto de treinamento e que são exemplos de um 
mapeamento funcional definido como: 
 Y X X Yn m= ∈ℜ ∈ℜφ ( ) : , (1) 
 Desejamos treinar a rede de modo que ela consiga aprender uma 
aproximação da forma: 
 O Y X X Yn m= ′ = ′ ∈ℜ ′ ∈ℜφ ( ) : , (2) 
 
 O mapeamento funcional que foi proposto acima pode ser entendido como um 
conjunto de coordenadas cartesianas em que para cada xi de entrada existe um yi de 
saída, assim escolhendo para uma função qualquer um bom exemplo de pontos 
P(xi,yi) a rede será capaz, depois de treinada, de interpolar entre eles para 
reconhecer pontos não apresentados no conjunto de exemplos, desta forma 
aproximando a função. 
Continuando a descrição temos que os elementos de entrada distribuem os 
valores dos exemplos para os elementos da camada escondida, sendo que o valor 
do net para o jésimo elemento da camada escondida vale: 
net w xkj
h
ji
h
i
n
ki j
h= +
=
∑
1
θ (3) 
onde w ji
h é o peso da conexão entre o iésimo elemento da camada de entrada e o 
jésimo elemento da camada escondida h e θ p0 é o termo opcional chamado bias que 
provê um valor fictício de entrada igual a 1, dando um grau de liberdade maior para a 
função de saída do neurônio. 
 Assumindo que os neurônios são estáticos o valor da função de ativação será 
igual ao net, assim temos que o valor de saída para um neurônio da camada 
escondida vale: 
 
i f netkj j
h
kj
h= ( ) (4) 
 
 Da mesma forma para os neurônios da camada de saída teremos: 
 
net w ikp
o
pi
o
kj
j
l
p
o= +
=
∑
1
θ (5) 
 o f netkp p
o
kp
o= ( ) (6) 
 
 Como queremos minimizar o erro tal qual a regra Delta, definiremos o erro 
como sendo a diferença entre o valor desejado e o valor calculado pela rede, assim 
teremos para um único neurônio a seguinte formulação para o erro: 
E y okp kp kp= − ( ) (7) 
E para todos os neurônios podemos formular um erro total utilizando o erro 
médio quadrático sendo assim, teremos: 
E Ek kp
p
m
=
=
∑12
2
1
 (8) 
Como o que interessa é encontrar o menor erro quadrático, a busca na 
superfície de erros se dá pelo gradiente negativo, ou seja, a direção de modificações 
dos pesos será dada de acordo com a direção que o vetor gradiente seguir na 
superfície. A formulação matemática do vetor gradiente não será mostrada neste 
trabalho, ficando a cargo do leitor interessado buscar na bibliografia citada. 
 Finalmente, temos que a atualização dos pesos dos neurônios da camada de 
saída será dada por: 
 
w t w t w tpj
o
pj
o
k pj
o( ) ( ) ( )+ = +1 ∆ (9) 
 
 
Onde, 
 
∆ k pj
o
kp kp p
o
kp
o
kjw y o f net i= −
′η ( ) ( ) 
 
Sendo que o fator η é um parâmetro chamado taxa de aprendizado que escala 
a mudança dos pesos na direção do gradiente. 
Convém ressaltar que a função f p
o precisa ser uma função diferenciável para 
que seja possível implementar a busca do gradiente descendente. 
Os cálculos para os neurônios das camadas escondidas são similares, salvo 
pelo fato de não sabermos a priori qual o valor desejado de saída para os neurônios 
destas camadas. Assim, o cálculo é feito em função das saídas desejadas pela 
camada de saída, pois estas estão intimamente ligadas com as saídas dos neurônios 
das camadas intermediárias. 
Em determinadas superfícies de erro o vetor gradiente pode oscilar bastante 
entre pontos da superfície, dificultando e diminuindo a velocidade de convergência 
para o erro médio quadrático desejado. Sendo assim, surge um termo chamado de 
momento que tenta contornar este tipo de situação. 
O termo de momento faz com que a alteração dos pesos na iteração corrente 
dependa proporcionalmentetambém a alteração de pesos da iteração anterior. A 
adição deste termo é feita na regra de atualização dos pesos dada em (9). Assim 
teremos: 
)()()1( twtwtw opjk
o
pj
o
pj ∆+=+ α , 
Onde α é o termo de momento. 
 
6.2 – Considerações Práticas 
 
 É interessante fazer um comentário a respeito de que valores utilizar para os 
parâmetros que tangem o treinamento de uma rede neural artificial. Todavia, estas 
recomendações são para a maioria dos problemas, podendo existir problemas em 
que a solução mais viável foge dos comentários aqui recomendados, isto é uma forte 
premissa que sugere que as redes neurais artificiais ainda precisam de uma análise 
matemática mais profunda. 
 Podemos iniciar citando que os pesos devem ser inicializados com valores 
aleatórios e pequenos, geralmente no intervalo de [-0,1,0,1]. Isto é explicado pelo 
fato de que a utilização de pesos de grande magnitude pode levar a uma saturação 
nos neurônios da camada intermediária. 
 Devemos também citar que quanto melhor a escolha dos exemplos, isto é, um 
equilíbrio entre quantidade e qualidade, melhor será a resposta da rede, pois ela terá 
um intervalo abrangente para interpolar. 
 O parâmetro taxa de aprendizado que é o valor do “passo” que o vetor 
gradiente irá dar na superfície de erro geralmente deve ficar entre 0,1 à 0,3 , pois 
valores muito grandes para este parâmetro pode fazer o vetor gradiente ficar 
“saltando” de um lado para o outro na superfície de erros. 
 O termo de momento deve ter um valor “alto” como 0,8 e 0,9 para que o vetor 
gradiente fuja de mínimos locais, bem como mantenha uma direção adequada a ser 
seguida. 
 O treinamento deve ser paralisado quando um erro médio quadrático aceitável 
for achado ou se um certo número de épocas (iterações) pré-fixadas forem atingidas. 
É importante ressaltar que o exagero no treinamento pode levar a rede a piorar sua 
capacidade de generalização. 
 O número de camadas intermediárias e de neurônios geralmente é obtido por 
tentativa-e-erro, sendo a experiência a principal heurística do projetista da RNA. 
Todavia, deve se levar em consideração que com um número muito pequeno de 
neurônios a rede pode não ter recursos suficientes para aprender. Além disso, a 
utilização de um número muito grande de neurônios e conexões pode fazer a rede 
perder sua capacidade de interpolação, pois ela decora os exemplos, ficando assim 
“cristalizada”. 
 
7 - Aplicação 
 
Neste trabalho iremos abordar o problema da interrupção da ventilação 
mecanicamente assistida1. A interrupção do suporte respiratório para um paciente 
que esteja recebendo ventilação mecânica requer a avaliação da capacidade do 
paciente de continuar respirando sem auxílio, de maneira estável clínica e 
fisiologicamente. 
Retirar o auxílio prematuramente pode levar ao sofrimento do paciente, 
enquanto que deixar tempo a mais, representa gasto desnecessário de um recurso 
escasso e pode ser porta para entrada de infecções no paciente. 
Métodos tradicionais de avaliação do momento de retirada da ventilação 
assistida não são confiáveis (um médico especialista ressaltou que um método 
atualmente utilizado para tomar a decisão é “verificar se o paciente tem um ‘brilho’ no 
olhar”). 
Geralmente o médico deve tomar esta decisão baseado nas seguintes 
variáveis que são facilmente obtidas dos pacientes: 
§ Pico negativo da pressão inspiratória (cm.H2O). 
§ Taxa respiratória (respirações/minuto). 
§ Volume Tidal. 
Neste contexto treinaremos uma RNA com o algoritmo backpropgation com 21 
tentativas de interromper a ventilação mecanicamente assistida, neste conjunto 9 
tiveram sucesso e 12 falharam. Em suma, a rede receberá 21 exemplos (tabela 1), 
onde cada um deles será formado pelas seguintes entradas: pressão inspiratória 
 
1 Esta aplicação foi proposta em (Ashutosch et al, 1992) 
negativa (PIN) em cm .H2O; volume tidal (VT) e taxa respiratória(TR) dada em 
respirações por minuto e obterá como resposta se o médico teve sucesso ou falha 
em retirar o equipamento. 
Esta rede terá três neurônios na camada de entrada, cada um deles 
representando as variáveis descritas acima, além disso, terá apenas uma camada 
escondida, bem como um único neurônio na camada de saída que representará se o 
especialista teve sucesso ou falha em retirar o equipamento. 
 
Tabela 1 – Conjunto de treinamento da RNA 
PIN VT TR Resultado 
-24 300 24 Sucesso 
-30 500 17 Falha 
-23 300 29 Sucesso 
-26 265 44 Falha 
-18 370 32 Falha 
-22 350 30 Falha 
-10 320 29 Falha 
-60 650 16 Sucesso 
-20 225 46 Falha 
-24 276 38 Falha 
-15 270 40 Falha 
-30 250 30 Sucesso 
-42 950 13 Sucesso 
-12 220 32 Falha 
-20 124 33 Falha 
-42 750 24 Sucesso 
-32 530 21 Sucesso 
-40 916 22 Sucesso 
-30 500 19 Sucesso 
-25 412 30 Falha 
-28 400 38 Falha 
 
 Depois da rede ser treinada com os dados descritos na tabela 1 ela deve ser 
capaz de acertar o resultado (sucesso ou falha) para novas entradas que não foram 
apresentadas a rede no momento do treinamento. Sendo assim, separamos um 
conjunto de testes que a rede deve ser capaz de prever o resultado correto. Este 
conjunto de testes está descrito na tabela 2. 
Tabela 2 – Conjunto de testes 
PIN VT TR Resultado 
-40 465 23 Sucesso 
-15 450 25 Falha 
-22 400 41 Falha 
-28 310 24 Falha * 
-48 380 24 Sucesso 
-34 530 28 Sucesso 
-40 740 19 Sucesso 
-42 550 27 Sucesso 
-55 480 19 Sucesso 
 
Este tipo de problema é facilmente resolvido com o auxílio das redes neurais 
artificiais, para mostrar esta resolução utilizaremos o software Matlab 6.0 que é um 
ambiente de desenvolvimento bastante difundido tanto no contexto acadêmico, 
quanto no âmbito comercial. O Matlab é uma poderosa ferramenta para problemas 
de cunho matemático, tendo ferramentas gráficas avançadas para análise e 
visualização de dados. Além disso, o Matlab possui uma toolbox exclusiva para 
redes neurais artificiais, isto é, possui um conjunto de funções pré-definidas que são 
de grande valia para o projetista de redes neurais artificiais. 
Voltando ao problema, o conjunto de treinamento foi então apresentado a rede 
neural para que o algoritmo backpropagation atuasse, sendo importante salientar que 
escolhemos 0,05 como valor de erro médio quadrático que o algoritmo deveria 
alcançar, isto significa que o algoritmo backpropagation irá fazer várias iterações de 
atualização dos pesos até atingir este valor de erro. Na figura 6 mostramos o gráfico 
de busca do vetor gradiente na superfície de erro. 
Figura 6 – Gráfico do andamento do treinamento 
 
 O treinamento procedeu sem problemas e a rede conseguiu convergir para o 
valor de erro que determinamos. Alguns parâmetros do algoritmo backpropagation 
utilizados para treinar esta rede são descritos na tabela 3. 
 
Tabela 3 – Parâmetros utilizados para o algoritmo Backpropagation 
Parâmetros Valor 
Taxa de aprendizagem 0,01 
Erro 0.05 
Número de neurônios na camada oculta 6 ou 5 
Função de transferência da camada oculta tangente sigmoidal 
Função de transferência da camada saída sigmoidal 
 
Como a rede já foi treinada podemos apresentar as entradas do conjunto de 
testes de forma que ela deve ser capaz de apresentar a saída correta, ou seja, os 
valores das variáveis (PIN, VT e TR) serão apresentados aos neurônios de entrada e 
a rede será capaz de interpolar entre o que ela já aprendeu para dar seu veredicto de 
sucesso ou falha. 
Obtivemos ótimos resultados neste problema, pois a rede deu o resultado 
correto em todos os casos. Nas figuras 7 e 8 são mostrados os gráficos do resultado 
desejado do teste e do resultado obtido pela rede, percebe-se que ambos os gráficos 
são iguais, confirmando o acerto de 100%. 
 
 
 
8 – Considerações Finais 
 
 As redes neurais artificiais vêm ganhando cada vez mais adeptos, de modo 
que as pesquisas nesta área estão evoluindo geometricamente, portanto, isto a torna 
uma tecnologia bastante promissora para o desenvolvimento de aplicações utilizando 
inteligência artificial. 
 O sucesso dasredes neurais está diretamente relacionado com a sua alta 
versatilidade no que tange o escopo de suas aplicações, pois existem aplicações 
para as mais variadas áreas, podendo ser utilizada para tarefas que vão desde o 
desenvolvimento de sistemas especialistas, passando por aplicações nas 
neurociências e podendo servir até mesmo para problemas complexos de análise 
estatística. 
 O problema da ventilação mecanicamente assistida citado neste trabalho 
serviu para mostrar a viabilidade para a solução de problemas utilizando RNAs. È 
importante ressaltar que poderíamos resolver este problema utilizando outros 
parâmetros ou outras arquiteturas de redes neurais, a maneira que resolvemos foi 
escolhida para manter o escopo pretendido neste trabalho. 
Este documento teve o intuito de fazer dar uma visão global sobre o assunto, 
isto significa que os leitores interessados em mais detalhes devem consultar as 
referências bibliográficas descritas, além disso, os autores se colocam a disposição 
para eventuais dúvidas e sugestões. 
 
8 – Referências Bibliográficas 
 
ASHUTOSCH et al. Prediction criteria for successful weaning from respiratory 
support: Statistical and connectionist analyses. Critical Care Medicine, Vol. 20, No.9. 
pp 1295-1301, 1992. 
Figura 7 – Gráfico das saídas desejadas 
para o conjunto de teste 
Figura 8 – Gráfico das saídas emitidas pela 
rede para o conjunto de teste 
 
AZEVEDO, F. M. Contribution to the Study of Neural Networks In Dynamical 
Expert Systems. Ph.d. thesis, Institut d´Informatique, FUNDP, Belgium, 1993. 
 
Barreto, Jorge M. Inteligência Artificial: No limiar do século XXI. Duplic Edições, 
1997. 
 
Burrows, T. and NIRAJAN, M. The use of feed-forward and recurrent networks 
for system identi_cation. Technical Report CUED F-INFENG TR158, Cam- 
bridge University Engineering Dept., Cambridge U., Cambridge, UK, Dec. 
1993. 
 
Casey, M. Computation dynamics in discrete-time recurrent neural networks. 
In Proceedings of the Annual Research Symposium, volume 3, p. 78{95, UCSD, 
La Jolla, CA, 1993. Institute for Neural Computation. 
 
CLEEREMANS, A., SERVAN-SCHREIBER, D., and MCCLELLAND, J. Finite state 
automata and simple recurrent neural networks. Neural Computation, (3):372{381, 
1989. 
 
FREEMAN, James A. & SKAPURA, David M. Neural Networks: Algorithms, 
Applications and Programming Techniques. Addison-Wesley Publishing, 1992. 
 
HAYKIN, Simon. Neural Networks: a comprehensive foundation. IEEE Press, 1994 
 
KAELBLING L. P., LITTMAN. L. , MOORE A. W. Reinforcement Learning: A Survey. 
In: Journal of Artificial Intelligence Research, Volume 4, p. 237-285, 1996 
 
KOHONEN,T. Self Organization and Associative Memory. Springer-Verlag, Berlin, 
1987. 
 
LAVINE, R. A. Neurophysiology: The Fundamentals. The Collamore Press, 1983. 
 
McCulloch, W.S. & PITTS, W. A Logical Calculus of the Ideas Immanent in Nervous 
Activity. Bulletin of Mathematical Biophysics 5 (1943), 115-133 
 
MINSKY, M. L. & PAPERT, S. A. Perceptrons: an introduction to computacional 
geometry. The MIT Press, Massachussets, 1969 
 
NICHOLLS, J. G. et a.l From Neuron to Brain. Sinauer Associates, Inc., 2000. 
 
Parker, D. Learning logic. Invention Report S81-64, File 1, O_ce of Techno- 
logy Licensing, Stanford University, 1982. 
 
ROISENBERG, M."Emergência da Inteligência em Agentes Autônomos através de 
Modelos Inspirados na Natureza". Tese de Doutorado. Departamento de Engenharia 
Elétrica, 1998. 
 
RUMELHART,D. E., MCCLELLAND J. L., and PDP Group. Parallel Distributed Pro- 
cessing, volume 1, Foundations. The MIT Press, Cambridge, Massachusetts, 
1986. 
 
WERBOS, P. J. Beyond regression: new tools for prediction and analysis in the 
behavioral sciences. PhD thesis, Harvard University, Cambridge, MA, 1974.

Continue navegando