mei caminh pedr nunc esquec dess acontec vid retin tão fatig
2.4.1 Multilayer Perceptron (MLP)
Multilayer Perceptron é um tipo de rede neural feedforward multicamadas, obtido da generalização de um Perceptron de camada única, possuindo uma camada de entrada, uma ou mais ocultas e uma de saída. Além disso, seus neurônios estão completamente conectados, e utilizam funções de ativação não-lineares, como a sigmoide (FACELI et al., 2011;HAYKIN,
1994).
Seu aprendizado é supervisionado e ocorre por meio do algoritmo de backpropagation, ou retropropagação, sendo pertencente ao grupo de algoritmos de aprendizagem por correção de erro. Neste algoritmo, cada neurônio de uma MLP é responsável pelo cálculo e transmissão de dois tipos de sinal: funcional e de erro (PARKER,1987).
Um sinal funcional, também chamado de sinal de entrada, é calculado como uma fun- ção das entradas de um neurônio, junto aos pesos associados a elas, e é propagado para a frente, de neurônio a neurônio, até a saída. Enquanto isso, um sinal de erro é originado em um neurônio de saída e se propaga para trás, sendo calculado por uma função dependente do erro cometido pela rede, durante o processo de aprendizado.
Todos os neurônios das camadas ocultas e de saída calculam o sinal funcional e uma estimativa do vetor gradiente, utilizado na retropropagação, contendo os gradientes da superfície de erro, em relação aos pesos associados às suas entradas.
Figura 21: Multilayer Perceptron com sinais envolvidos na retropropagação
Fonte: a autora. Adaptado deHaykin(2010).
Existem dois métodos de implementação do backpropagation, sendo eles o método se- quencial e o método por lote. SegundoHaykin(1994), o sequencial possui diversas vantagens em relação ao modo por lote, dentre elas:
∙ as conexões sinápticas da rede exigem menos espaço de armazenamento; ∙ busca no espaço de exemplos possui natureza estocástica;
∙ o modo sequencial possui mais vantagens em conjuntos redundantes; e
∙ implementação simples que soluciona problemas grandes e difíceis com eficiência.
Por estas razões, neste trabalho, será apresentado somente o modo sequencial.
Para a inicialização do algoritmo, devem ser escolhidos bons valores iniciais para os pesos sinápticos e limiares, de modo a evitar saturação do neurônio (fenômeno que acarreta em diminuição da velocidade do aprendizado) e evitar que o processo de backpropagation ocorra em uma região muito plana em torno da origem da superfície de erro, o que também prejudica o aprendizado da rede neural.
Uma estratégia usada para esta escolha envolve selecionar os pesos sinápticos a partir de um conjunto de números com distribuição uniforme, tal que a média desta distribuição seja zero, e a variância seja definida de modo que o desvio padrão dos potenciais de ativação 𝑣 (ver
Equação (2.52)) dos neurônios esteja entre a parte linear e a parte saturada da função de ativação escolhida.
Com os pesos inicializados, inicia-se o processo de aprendizagem da rede com a apre- sentação de uma época à ela, sendo que uma época é uma apresentação completa do conjunto de treino sendo processado (HAYKIN,1994).
Cada exemplo nesta época é representado por um par (x(𝑛), d(𝑛)), onde x(𝑛) repre- senta o dado em si, com todos os seus atributos, na 𝑛-ésima iteração, e d(𝑛) representa a saída esperada para o exemplo. No caso de problemas de classificação, a saída é dada por um vetor, onde a posição com valor 1 representa a classe esperada, enquanto as outras posições recebem valor 0.
No modo sequencial de backpropagation, dada uma época (x(1), d(1)), ..., (x(𝑁 ), d(𝑁 )), os 𝑁 exemplos são apresentados aos neurônios da rede, um de cada vez, fazendo a computa- ção desse dado e os ajustes dos pesos a cada recebimento de dado, até que todos os exemplos desta época tenham sido processados. Em cada uma das épocas, a ordem de apresentação dos exemplos deve ser aleatória.
A computação dos exemplos ocorre em duas etapas, sendo a primeira delas a computa- ção para frente, também chamada de propagação.
Nesta etapa, considerando o exemplo (x(𝑛), d(𝑛)), tem-se que x(𝑛) é apresentado à camada de entrada, e d(𝑛), à camada de saída. Dadas estas informações, para cada neurônio, calcula-se o seu potencial de ativação que, no caso de redes multicamadas, como a MLP, é dada pela Equação: 𝑣𝑗(𝑙)(𝑛) = 𝑚0 ∑︁ 𝑖=0 𝑤𝑗𝑖(𝑙)(𝑛)𝑦𝑖(𝑙−1)(𝑛) (2.63) onde:
∙ 𝑤𝑗𝑖(𝑙)= peso sináptico entre a saída do neurônio 𝑖 (na camada 𝑙 − 1) e a entrada do neurônio 𝑗 (na camada 𝑙);
∙ 𝑦𝑖(𝑙−1)(𝑛) = sinal funcional de saída do neurônio 𝑖, presente na camada 𝑙 − 1, durante a iteração 𝑛; e
∙ 𝑚0representa o tamanho da camada de entrada.
O sinal de saída do neurônio, por sua vez, é dado por:
sendo ϕ𝑗 uma função de ativação sigmoide. Como visto na Seção2.4, um exemplo de
função sigmoide é a logística, que no caso da MLP, sua forma geral pode ser dada por:
ϕ𝑗(𝑣𝑗(𝑛)) =
1
1 + exp (−𝑎𝑣𝑗(𝑛))
, 𝑎 > 0, − ∞ < 𝑣𝑗(𝑛) < ∞ (2.65)
Também pode-se utilizar a função tangente hiperbólica, cuja forma geral é dada por:
ϕ𝑗(𝑣𝑗(𝑛)) = 𝑎 tanh (𝑏𝑣𝑗(𝑛)), (𝑎, 𝑏) > 0 (2.66)
Existem alguns casos especiais para o cálculo do sinal de saída. Temos que se o neurônio 𝑗 está na primeira camada intermediária, onde 𝑙 = 1, então 𝑦𝑗(0)(𝑛) = 𝑥𝑗(𝑛), enquanto que se
estiver na camada de saída, onde 𝑙 = 𝐿, sendo 𝐿 a profundidade da rede, será dada por:
𝑦𝑗(𝐿)(𝑛) = 𝑜𝑗(𝑛) (2.67)
Sendo que 𝑜𝑗(𝑛) representa o 𝑗-ésimo elemento do vetor de saída (HAYKIN,1994).
Com as saídas calculadas, o último passo da etapa de propagação é dado pelo cálculo do sinal de erro, para cada um dos neurônios da camada de saída da rede neural. Este cálculo é dado por:
𝑒𝑗(𝑛) = 𝑑𝑗(𝑛) − 𝑜𝑗(𝑛) (2.68)
Sendo 𝑑𝑗(𝑛) o 𝑗-ésimo elemento do vetor que contém a saída esperada, d(𝑛).
Com o erro calculado, pode-se definir a energia média do erro quadrado, dada por:
E 𝑚𝑒𝑑= 1 𝑁 𝑁 ∑︁ 𝑛=1 E (𝑛) (2.69) onde:
∙ 𝑁 representa o número de exemplos no conjunto de treino; e
∙ E (𝑛) representa o valor instantâneo da energia total do erro durante a iteração 𝑛. Este valor instantâneo da energia total do erro, por sua vez, se dá por:
E (𝑛) = 1 2
∑︁
𝑗∈𝐶
𝑒2𝑗(𝑛) (2.70)
sendo que 𝐶 é o conjunto dos neurônios da camada de saída, e 𝑒𝑗(𝑛) representa o sinal
A energia média, para um dado conjunto de treino, é uma função de custo, represen- tando uma medida do desempenho da aprendizagem da rede, sendo uma função de todos os parâmetros livres. Com isso, pode-se afirmar que o objetivo do algoritmo de backpropagation é ajustar os parâmetros da rede neural, de modo a minimizarE𝑚𝑒𝑑, fornecendo uma aproxima-
ção para a trajetória a se seguir no espaço de pesos (HAYKIN, 1994;KARNIN,1990;SILVA; ALMEIDA,1990).
Enfim, após o cálculo do sinal de erro, definido na Equação (2.68), passa-se para a próxima etapa do algoritmo, de computação para trás (retropropagação), onde são feitos os ajustes dos pesos sinápticos de acordo com os sinais de erro obtidos na camada de saída.
O ajuste a um dado peso sináptico 𝑤𝑗𝑖(𝑛) é proporcional ao gradiente local do neurônio
𝑗, ou seja, a um fator de sensibilidade que determina a direção de busca no espaço de pesos. O objetivo é sempre obter uma descida neste gradiente, buscando uma direção neste espaço que diminua a energia total de erroE (𝑛).
O ajuste pode ser dado pela regra delta:
∆𝑤𝑗𝑖(𝑛) = 𝜂𝛿𝑗(𝑛)𝑦𝑖(𝑛) (2.71)
sendo que:
∙ ∆𝑤𝑗𝑖(𝑛) = ajuste aplicado ao peso sináptico 𝑤𝑗𝑖(𝑛);
∙ 𝜂 = taxa de aprendizagem da rede neural; ∙ 𝛿𝑗(𝑛) = gradiente local (do neurônio 𝑗); e
∙ 𝑦𝑖(𝑛) = saída do neurônio 𝑖, recebida como entrada pelo neurônio 𝑗.
O cálculo do gradiente local depende de qual é a camada em que o neurônio avaliado está presente, conformeHaykin(1994). Temos os dois casos descritos na Equação a seguir:
𝛿(𝑙)𝑗 (𝑛) = {︃
𝑒(𝐿)𝑗 (𝑛)ϕ′𝑗(𝑣𝑗(𝐿)(𝑛)), se neurônio j está na camada de saída ϕ′𝑗(𝑣(𝑙)𝑗 (𝑛))′∑︀
𝑘𝛿 (𝑙+1) 𝑘 (𝑛)𝑤
(𝑙+1)
𝑘𝑗 (𝑛), se está na camada oculta l
(2.72)
sendo que ϕ′𝑗(·) representa a derivada da função de ativação associada, em relação ao argumento desta.
A taxa de aprendizagem 𝜂 tem influência direta sobre a velocidade de aprendizado e estabilidade da rede neural. Se seu valor for baixo, os pesos sinápticos sofrerão variações me- nores, mas o aprendizado será mais lento. Por outro lado, se for alto, o aprendizado será mais rápido, mas a rede se torna instável, oscilatória.
Para permitir o uso de uma taxa de aprendizagem mais alta com menor impacto à esta- bilidade do algoritmo,Rumelhart, Hinton e Williams (1986) propuseram uma modificação da regra delta, dada por:
∆𝑤𝑗𝑖(𝑛) = 𝛼𝑤𝑗𝑖(𝑛 − 1) + 𝜂𝛿𝑗(𝑛)𝑦𝑖(𝑛) (2.73)
sendo que 𝛼 é uma constante de momento, responsável pelo controle da realimentação do ajuste ∆𝑤𝑗𝑖(𝑛).
Com o ajuste do peso feito, termina-se a retropropagação, e por consequência, a com- putação feita para cada neurônio. Esta computação para frente e para trás é feita para todas as épocas apresentadas à MLP, até que se atinja o critério de parada definido para a rede, encer- rando o aprendizado e a execução do algoritmo.
Para formulação de critérios de parada, considera-se um vetor de peso mínimo sobre a superfície de erro, dado por w*. Para que seja mínimo, o vetor gradiente g(w), dado pela derivada parcial de primeira ordem da superfície de erro, em relação ao vetor de peso w, deve ser zero quando w = w*. É importante destacar que g(w*) = 0 é condição necessária, mas não suficiente.
Um critério de parada, proposto emKramer e Sangiovanni-Vincentelli(1989), diz que o algoritmo se encerra quando a norma euclidiana de g(w) atinge um limiar suficientemente pequeno. Outro critério de parada, citado porHaykin(1994), enuncia que o algoritmo de back- propagationtermina quando a taxa de variação do erro médio quadrado, por época, for sufici- entemente pequena. Como parâmetro, considera-se como suficientemente pequena uma taxa de variação entre 0,1% e 1% para cada época.
Cada critério citado possui suas desvantagens. O método proposto no trabalho deKra- mer e Sangiovanni-Vincentelli (1989) requer o cálculo de todo o vetor gradiente g(w) e pode aumentar o tempo de aprendizagem, enquanto o segundo critério proposto pode encerrar o aprendizado prematuramente.
Por fim, dentre as vantagens do MLP, vistas em Gardner e Dorling (1998), há o fato de que este algoritmo não depende de nenhuma suposição sobre a distribuição dos dados no conjunto de treino. Além disso, as medidas de entrada mais discriminantes são selecionadas durante o treinamento da rede neural, com o ajuste dos pesos nas conexões entre os neurônios.
Entretanto, o aprendizado é mais difícil de ser visualizado, por existirem neurônios ocul- tos na rede. Também é um processo mais complexo, visto que é necessário que a rede neural decida quais características do conjunto de dados serão representadas por estes neurônios ocul- tos, tendo que levar em conta um espaço maior de possíveis funções (HINTON,1989).