• Nenhum resultado encontrado

A UTOMÁTICA (AA) PARA A VALIAÇÃO DO P ROBLEMA DE S EGURANÇA EM A NÁLISE

3.4 M ÉTODOS DE AA U TILIZADOS

3.4.1 Redes Neuronais Artificiais (ANN)

As ANN consistem numa técnica estatística moderna que tem sido amplamente utilizada, como método de aprendizagem automática, em diversos domínios reais. O primeiro modelo de uma ANN surgiu no ano de 1943 com os trabalhos que se descrevem em [45], nos quais se pretendia estudar e modelizar as capacidades de aprendizagem dos humanos. Desde então, muitas variantes foram criadas, as quais se distinguem pelos modelos funcionais considerados e pelas técnicas de treino aplicadas. Não fazendo parte dos objectivos da presente dissertação realizar o estado da arte relativo a esta matéria, descreve-se apenas a estrutura extensamente utilizada em avaliação de segurança dinâmica de sistemas eléctricos, a qual foi adoptada nos trabalhos da presente tese: a rede neuronal do tipo Perceptrão Multicamada (denominada, na literatura anglo-saxónica, Multilayer Perceptrons – MLP). Tal como se cita em [21], este tipo

de ANN é frequentemente indicado como um dos métodos mais fiáveis dentro da aprendizagem automática. Estas ANN podem ser aplicadas para resolver problemas de

classificação ou de regressão, tendo a particularidade de serem capazes de resolver vários problemas ao mesmo tempo, através da consideração de mais do que uma variável de saída.

Como problemas da utilização deste tipo de modelo funcional, é costume referir-se o elevado tempo de cálculo exigido durante o processo de treino. Contudo, actualmente existem já muitos algoritmos de treino, alternativas aos tradicionais, que tentam minorar este aspecto. Para dar um exemplo das potencialidades destes algoritmos refira-se que, no presente trabalho, foram exigidos entre 2 a 3 minutos para o treino de uma ANN com 82 entradas, 6 unidades escondidas e uma variável de saída, tendo sido utilizados 2596 exemplos para o conjunto de treino e 1000 exemplos para o conjunto de validação. Para estes treinos recorreu-se ao algoritmo de Levenberg-Marquardt que se disponibiliza na Toolbox de Redes Neuronais do

programa MATLAB [46], tendo estes decorrido num PC com as seguintes características: Sistema operativo Windows XP, 512 MB de RAM, Pentium IV, 1.7 GHz. Apesar de 2 a 3 minutos parecer, à partida, pouco tempo, na realidade o processo de treino de uma ANN pode demorar bastante mais tempo. Isto porque, tal como se compreenderá após a leitura do presente capítulo, a procura de uma ANN com o melhor desempenho de previsão possível requer a repetição de vários treinos, de modo a que se testem diversas alternativas, como as que envolvem a escolha:

• dos valores a considerar, previamente ao treino, para os parâmetros da ANN; • da estrutura da ANN (número de camadas e unidades escondidas);

• do vector de variáveis de entrada; • do algoritmo de treino a adoptar.

As ANN são também, com frequência, consideradas “caixas pretas”, atendendo à dificuldade de se conseguir interpretar as relações entre cada variável de saída e de entrada a partir da simples observação da estrutura treinada. No entanto, esta última característica é, de alguma forma, compensada por a estrutura de uma ANN permitir que se calcule, de uma forma simples e eficaz, o valor da derivada de cada saída i em relação a cada entrada j (i.e.,

i j

y x

∂ ∂ ), para cada ponto do domínio do vector de entradas. O valor desta derivada poderá ser interpretado como correspondendo a uma estimativa da alteração que cada unidade de variação da variável de entrada xj provoca na variável de saída y , no caso de as restantes variáveis de i

entrada se mantiverem constantes. Esta capacidade das ANN foi já explorada em diversos trabalhos ([73][74][75]) para o fornecimento, em tempo real, de medidas de controlo

preventivo, através da implementação de algoritmos de optimização que se baseiam em técnicas de gradiente, nas quais o gradiente é fornecido por ANN. Nos trabalhos que se publicam em [47] e [48], a mesma capacidade das ANN foi explorada para o cálculo de índices de sensibilidade de cada saída em relação a cada entrada, com o objectivo de realizar uma ordenação de importância entre variáveis de entrada candidatas, de modo a seleccionar apenas as que permitem o treino de uma ANN com melhor capacidade de previsão (técnica que se denomina selecção de características e que se descreve em mais pormenor na secção 3.5.3.2).

3.4.1.1 Estrutura de uma ANN

De uma forma geral, pode-se dizer que uma ANN é composta por elementos de processamento simples com um elevado grau de conexão entre eles. Na Figura 3.2 apresenta-se a estrutura típica de um desses elementos, que se denominam unidades (neuron, na literatura

anglo-saxónica,).

f

1

x

i

x

n

x

⋮ ⋮

. .

1

kn w ki w 1 k w k b k

s

y

k unidade k

f

1

x

i

x

n

x

⋮ ⋮

. .

. .

1

kn w ki w 1 k w k b k

s

y

k unidade k 1 n k ki i k i s w x b = =

× +

( )

k k y = f s

Figura 3.2 – Estrutura típica da unidade de uma ANN

Tal como se observa nesta figura, cada unidade k de uma ANN realiza o seguinte conjunto

de operações básicas em função das suas variáveis de entrada x (para i i=1,...,n): • soma pesada de todas as variáveis de entrada, dada por

1 n ki i i w x = ×

, onde cada parâmetro

ki

w corresponde ao peso da ligação (weight, segundo a literatura anglo-saxónica) entre a

variável de entrada i e a unidade k ;

• ao resultado da operação anterior, é somado um parâmetro b , o qual é denominado k

polarização (bias, segundo a literatura anglo-saxónica);

• finalmente, a saída da unidade, y , resulta da aplicação de uma função de activação k

( )

k

f s ao resultado do somatório atrás descrito, dado por

1 n k ki i k i s w x b = =

× + .

Note-se que a polarização b poderá ser vista como o peso da ligação entre uma variável de k

entrada unitária e a unidade k , pelo que este tipo de parâmetro é, por muitos autores,

considerado como um peso da ANN.

Na Figura 3.3 apresenta-se a estrutura (também denominada arquitectura) que é tipicamente utilizada para as ANN do tipo MLP. Este tipo de estrutura denomina-se, na literatura anglo- saxónica, multilayer feedforward network. Tal como se pode visualizar na figura, as unidades

são arrumadas por camadas, nas quais, com excepção da camada de entrada, cada unidade de uma camada é alimentada por todas as unidades da camada anterior. Por o sentido das ligações entre unidades ser sempre da camada de entrada para a de saída, estas ANN definem-se por ser do tipo feedforward. . . . . . . . . . . . . camada de entrada camada escondida camada de saída

Figura 3.3 – Estrutura típica de uma ANN do tipo Perceptrão Multicamada (ex. com uma camada escondida) As ANN do tipo MLP foram criadas, inicialmente, para aplicação em problemas de classificação, tendo posteriormente evoluído para serem também capazes de resolver problemas de regressão. No contexto da utilização em problemas de regressão, é costume considerar-se, como funções de activação, uma função não linear do tipo sigmóide para as unidades das camadas escondidas e uma função linear pura (i.e., do tipo y=x) para as unidades da camada de saída. Por sigmóide entende-se uma função monotonamente crescente, com um ponto de inflexão, que realize a transformação de uma grandeza com um domínio de valores no intervalo

[

−∞ +∞;

]

para um domínio de valores num intervalo finito, tal como

[

− +1; 1

]

no caso da tangente hiperbólica ou

[ ]

0 1; no caso da função 1 1

(

+ex

)

. Estas duas funções podem-se visualizar na Figura 3.4, em conjunto com a função linear pura.

-2 -1 0 1 2 x y y=tanh( x ) -2 -1 0 1 2 x y

(

)

1 1 x y= +e− -2 -1 0 1 2 x y y=x Figura 3.4 – Exemplo de funções de activação usualmente utilizadas em ANN

Relativamente à camada de entrada, cada unidade geralmente recebe apenas a variável de entrada respectiva, não sendo feito nenhum outro tipo de operação. Por esta razão, a camada de entrada é considerada, por alguns autores, não como uma camada, mas apenas como o vector de variáveis de entrada.

Neste tipo de estrutura, o número de unidades da camada de entrada e de saída é determinado pela dimensão dos exemplos utilizados para treino, i.e. pelo número de variáveis de entrada consideradas e pelo número de variáveis de saída que se pretende prever. Relativamente ao número de camadas escondidas e de unidades em cada camada escondida, estas são opções da estrutura que terão de ser definidas antes de se iniciar o processo de treino. Em [49] pode encontrar-se uma descrição das técnicas sugeridas por diversos autores, que visam ultrapassar o problema da definição da estrutura de uma ANN, sendo todas estas baseadas em pressupostos heurísticos. Uma alternativa à aplicação destas técnicas consiste na repetição de treinos, através de um processo de tentativa/erro, de onde se selecciona a estrutura que fornece o melhor desempenho em termos de capacidade de generalização.

Relativamente ao número de camadas escondidas, na literatura existente sobre ANN do tipo MLP é frequente encontrar-se a afirmação de que uma ANN com uma camada escondida pode aproximar-se a uma qualquer função contínua, com um desejado nível de precisão, desde que seja utilizado um número suficiente de unidades escondidas (como referências para esta afirmação, em [21] citam-se os trabalhos apresentados em [50] e [51]). Na prática, não é costume utilizarem-se mais do que duas camadas escondidas.

Relativamente à escolha do número de unidades das camadas escondidas, sabe-se à partida que será necessário encontrar um valor de compromisso. Efectivamente, se esse número for muito pequeno, a ANN não terá capacidade para se aproximar da função pretendida. Em contrapartida, se esse número for muito grande, a ANN perderá capacidade de generalização.

No contexto das ANN do tipo Perceptrão com apenas uma camada escondida, em [21] apresenta-se uma regra empírica, como sendo muito utilizada, que se descreve por:

ne np

k

= (3.10)

onde

np : número de parâmetros (pesos e polarizações) da ANN;

ne: número de exemplos do conjunto de treino;

k : constante, cujo valor pode variar, aproximadamente, entre 5 e 10.

Supondo uma estrutura em que, com excepção das unidade de entrada, todas as restantes unidades são dotadas de termo de polarização, então o número de parâmetros de uma ANN com uma camada escondida será dado por:

(

)

np=nu 1 n+ +ns +ns (3.11)

onde

nu: número de unidades escondidas; n: número de entradas da ANN; ns: número de saídas da ANN.

A partir da substituição da equação (3.11) em (3.10), pode estabelecer-se um valor empírico para o número de unidades escondidas a utilizar numa ANN com apenas uma camada escondida, através de:

ne 1 nu ns k 1 n ns   = − × + +   (3.12)

Por questões de simplicidade, para a definição da estrutura das ANN treinadas para o presente trabalho adoptou-se a solução usual de considerar apenas uma camada escondida, com a tangente hiperbólica como função de activação das unidades escondidas e com a função linear pura como função de activação das unidades de saída. Para a definição do número de unidades escondidas, adoptou-se a regra empírica que se descreve na equação (3.12).

3.4.1.2 Treino de uma ANN

Estando definida a estrutura da ANN, o processo de treino visa encontrar o valor dos parâmetros (pesos e polarizações) que melhor se adaptam à amostra utilizada para treino. Este treino consiste na resolução de um problema de optimização, no qual, em cada iteração, o

verdadeiro valor da saída para cada exemplo i do conjunto de treino, y , é comparado com a i

previsão fornecida pela ANN, ˆy ANNi

(

)

, sendo o resultado desta comparação utilizado para ajustar o valor de cada parâmetro da ANN de modo a minimizar as diferenças observadas entre

(

)

i

ˆy ANN e y . Este processo termina com sucesso, quando se supõe que foi encontrada a i

solução que maximiza a precisão da ANN, sendo esta avaliação de desempenho realizada, em cada iteração, com um conjunto de validação. Como exemplo, na Figura 3.5 apresenta-se a evolução típica dos erros de treino e de validação ao longo das iterações do processo de treino de uma ANN. Nas primeiras iterações deste processo, tipicamente, observa-se uma diminuição de ambos os erros de previsão. A partir de um determinado ponto do processo, o erro de validação deixa de acompanhar essa evolução, passando, geralmente, a aumentar com o número de iterações. Quando o erro de validação deixa de diminuir durante algumas iterações seguidas, o processo de treino deverá parar, pois a partir desse ponto a ANN corre o risco de ficar sobre-adaptada ao conjunto de treino.

erro de treino erro de validação

nº de iterações (épocas) erro de previsão

Figura 3.5 – Evolução típica dos erros de treino e de validação de uma ANN (adaptado de [49])

No presente trabalho, como critério de paragem do treino de uma ANN utilizou-se a verificação de alguma das seguintes situações:

• A magnitude do gradiente do erro de validação é inferior a 10−10; • O erro de validação sofreu, pelo menos, 5 aumentos consecutivos.

Tal como já se explicou, para se obter uma estimativa final da capacidade de generalização da ANN resultante do processo de treino, deverá ser utilizada uma terceira amostra, denominada conjunto de teste.

O primeiro método que foi proposto para resolver este problema de optimização consiste numa técnica de gradiente descendente, na qual o valor dos parâmetros se move na direcção negativa do gradiente definido pelo conjunto de derivadas parciais do erro de previsão da ANN

em relação a cada um dos parâmetros. Na sua formulação mais básica, em cada iteração k+1, a actualização de cada parâmetro p da ANN é efectuada segundo a expressão:

1 k k k p k p E p p p

η

+ = − ∂  (3.13)

onde

η

p é a taxa de aprendizagem do parâmetro p e E é o erro de previsão a minimizar. O

índice numérico normalmente utilizado para representar o erro de previsão de uma ANN é o erro quadrático médio, ou seja, o MSE que se descreve na equação (3.3). Relativamente à

definição de uma iteração, a técnica do gradiente descendente poderá ser implementada mediante um dos seguintes modos alternativos: no modo incremental ou no modo denominado, na literatura anglo-saxónica, batch. Segundo o modo incremental, a actualização dos

parâmetros é efectuada após o cálculo do erro de previsão fornecido para cada exemplo do conjunto de treino. Segundo o modo batch, a actualização dos parâmetros é feita com base no

erro de previsão resultante da consideração de todos os exemplos do conjunto de treino. Em qualquer dos dois modos, cada vez que se percorrem todos os exemplos do conjunto de treino, diz-se que foi atingida uma época do processo iterativo.

O cálculo das derivadas do erro de previsão em relação a cada parâmetro da ANN (∂ ∂E p) é usualmente realizado através de uma técnica denominada de retro-propagação (backpropagation, na literatura anglo-saxónica), por envolver a realização de cálculos

sucessivos no sentido da camada de saída para a camada de entrada. Em [52] e [53] pode encontrar-se uma boa descrição desta técnica.

Actualmente, existem diversos algoritmos alternativos à técnica do gradiente descendente, para encontrar o valor dos parâmetros que minimizam o erro de previsão de uma ANN. Todos estes algoritmos visam acelerar a convergência do processo iterativo, reflectindo-se geralmente numa redução dos tempos de treino. Refira-se, nomeadamente, a Toolbox de Redes Neuronais

do programa MATLAB [46], na qual se disponibilizam, para além da técnica clássica atrás referida e de algumas das suas variantes, diversos algoritmos de treino que se baseiam em métodos de gradiente conjugado, no método de Newton ou no algoritmo de Levenberg- Marquardt. Todos estes algoritmos são implementados no modo batch. Para além de

relativamente ao processo de treino clássico, a vantagem de obterem usualmente bons resultados com os valores que se consideram por omissão para os parâmetros de treino. Note-se que, mediante a aplicação do algoritmo de treino clássico, o valor considerado para as taxas de aprendizagem

η

p tem uma influência relevante no desempenho do processo de treino. Efectivamente, se for escolhido um valor muito elevado, o algoritmo poderá ficar instável. Em contrapartida, se for escolhido um valor muito pequeno, o algoritmo poderá ficar muito lento.

Não foi objectivo do trabalho apresentado nesta tese, realizar uma análise exaustiva do desempenho de todos estes algoritmos de treino, tendo-se, à partida, optado pelo de Levenberg- Marquardt [54], por ser, na literatura, sugerido como o que fornece geralmente menores tempos de treino.

3.4.1.3 Inicialização de uma ANN

Todos os algoritmos de treino atrás referidos recorrem ao cálculo do gradiente do erro de previsão da ANN em função dos seus parâmetros. Como é bem conhecido da literatura, os métodos de optimização que se baseiam no cálculo do gradiente, correm o risco de convergir para mínimos locais. Este risco é evidente no caso de treino das ANN utilizadas no presente trabalho, uma vez que, sendo dotadas de funções de activação do tipo não linear, a hiper- superfície do erro de previsão1 estará, com certeza, povoada por mínimos locais. Por esta razão, os valores inicialmente considerados para os parâmetros da ANN costumam ter uma influência não desprezável na solução encontrada pelos algoritmos de treino. Desta propriedade resulta o procedimento habitual de se realizarem diversos treinos, nos quais, cada treino difere dos restantes por considerar uma diferente solução de valores iniciais para os parâmetros da ANN, sendo no final seleccionada a ANN que fornecer melhores índices de desempenho.

Este procedimento foi também adoptado no trabalho da presente tese, tendo sido utilizados os procedimentos de inicialização que se disponibilizam na Toolbox de Redes Neuronais do

programa MATLAB. Nomeadamente, para os parâmetros da camada com funções de activação linear, foi realizado o sorteio de valores entre -1 e 1. Para os parâmetros da camada com funções de activação do tipo sigmóide, foi utilizado um procedimento de inicialização baseado na técnica descrita em [55], a qual pretende acelerar o processo de treino.

1

Note-se que a hiper-superfície do erro define-se num sistema de eixos ortogonais, sendo um relativo ao erro de previsão e os restantes relativos a cada parâmetro da ANN.

3.4.1.4 Comparação de desempenho entre alternativas para o vector de entradas

Devido à propriedade de os valores iniciais considerados para os parâmetros da ANN terem uma influência não desprezável na solução encontrada pelo processo de treino, é necessário ter alguns cuidados quando se pretende realizar uma análise de desempenho entre diferentes alternativas do processo de construção de uma ANN, tais como as que envolvem a escolha da sua estrutura, do vector de variáveis de entrada ou de saída, ou ainda do algoritmos de treino a adoptar.

Atendendo a este aspecto e no âmbito da procura do melhor conjunto de variáveis de entrada a considerar para caracterizar, através de uma ANN, o problema de segurança em análise, nos trabalhos da presente tese a comparação entre cada duas alternativas, A e B , para

o vector de variáveis de entrada de uma ANN foi efectuada através da realização do seguinte teste de hipóteses estatístico: teste à diferença entre os valores esperados de duas populações quaisquer (tal como se caracteriza em [56]). Neste procedimento, foram seguidas as etapas que se descrevem a seguir.

• Etapa 1 – Treino:

Para cada uma das duas alternativas, A e B , foi obtido um conjunto composto por diversas

ANN treinadas com diferentes valores iniciais. Tendo-se considerado 50 soluções diferentes de valores iniciais, deste processo de treino resultou um conjunto de 50 ANN para cada alternativa testada.

• Etapa 2 – Avaliação de desempenho:

Para cada conjunto, foi feita uma avaliação de desempenho de cada ANN treinada, através do cálculo de um índice numérico E que caracteriza o erro de previsão fornecido para os

exemplos do conjunto de teste. A seguir, para cada conjunto de erros de previsão foi calculada a média amostral E e a variância amostral s , nomeadamente, 2E E , A E , B sE ,A2 e sE ,B2 .

• Etapa 3 – Teste de hipóteses:

Por fim, supondo que os valores esperados das duas populações desconhecidas de erros de previsão se designam µE ,A e µE ,B, foi testada a seguinte hipótese nula:

0

H : µE ,AE ,B (3.14)

a qual considera que as duas alternativas fornecem erros de previsão semelhantes. Se for possível supor, com uma elevada probabilidade, que H é falsa, então considera-se válida a 0

seguinte hipótese alternativa: 1

H : µE ,AE ,B (3.15)

a qual considera que, de entre as duas alternativas, a A fornece pior desempenho de previsão.

Esta inferência foi realizada através do cálculo da seguinte estatística de teste:

2 2 A B E ,A E ,B A B E E ET s s N N − = + (3.16)

onde N e A N representam as dimensões das amostras de erros de previsão (que, no presente B

trabalho, foi 50). Admitindo que H é verdadeira, então ET segue uma distribuição Normal 0

Padronizada, ou seja, uma distribuição do tipo N

( )

0 1, . Partindo deste pressuposto, será então possível obter, por consulta dos valores da distribuição N

( )

0 1, , um valor crítico para ET ,

denominado ET

( )α

, como sendo o valor para o qual a variável ET tem uma probabilidade

α