Você está na página 1de 17

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 trem de 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.

u1

w2
u2 y
net i φ η
w3
u3 :
:
un wn

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:
n
net i = ∑ u j w ij
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
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 organizam 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.
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.

Camada de Camada Camada de


Entrada Escondida Saída

x k1 1 1
...
h
f (neth )
... w hji h j kj ...
netkj
θj
h
o
x ki i j w opj f (netokp )
o p
net
kp
θp
o
...
... p
...
l
x kn n m
1 1 1
1
bias 1 bias 1

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 ∈ℜ n ,Y ∈ℜ m (1)
Desejamos treinar a rede de modo que ela consiga aprender uma
aproximação da forma:
O = Y ′ = φ ′(X ) : X ∈ℜ n ,Y ′ ∈ℜ 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:
n
net = ∑ w hji xki + θ hj
h
kj (3)
i =1

onde w hji é 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 kj = f jh (netkjh ) (4)

Da mesma forma para os neurônios da camada de saída teremos:

l
o
netkp = ∑ w opi ikj + θ op (5)
j =1

okp = f po (net 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 kp = (y kp − o kp ) (7)
E para todos os neurônios podemos formular um erro total utilizando o erro
médio quadrático sendo assim, teremos:
1 m 2
Ek = ∑ Ekp
2 p =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 opj (t + 1)= w opj (t)+ ∆ k wopj (t) (9)

Onde,

∆ k w opj = η (ykp − okp )f po ′ (netkp


o
)i kj

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 po 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 proporcionalmente també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:
w opj (t + 1) = w opj (t ) + α∆ k w opj (t ) ,
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%.

Figura 7 – Gráfico das saídas desejadas Figura 8 – Gráfico das saídas emitidas pela
para o conjunto de teste rede para o conjunto de teste

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 das redes 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.
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.