Freud e as Redes Neurais

Autor: Pedro Luis Kantek Garcia Navarro- GAC

O Aprendizado da Rede

Da diferença entre o que era esperado (0.2 e 1, neste exemplo), e a saída produzida (0.97 e 0.61, também neste exemplo), a rede começa a aprender.

Figura 9: O mecanismo de retropropagação que permite a correção dos erros.

Conforme vemos no desenho, o aprendizado se dá quando a rede compara o resultado que ela alcançou com o que era dela esperado. Da diferença entre ambos, devidamente processada, dá-se o ajuste dos valores dos pesos da rede. O algoritmo básico para este proceder atende pelo nome de retropropagação.

O objetivo deste algoritmo é minimizar o erro quadrático:

.

.

O método para este proceder é o do gradiente descendente3 ( 3O Gradiente de uma função em um ponto tem uma fórmula horrível,

mas um conceito bem simples. Imagine uma superfície irregular. Agora imagine um ponto qualquer sobre essa superfície. Neste ponto, poder-se-iam desenhar infinitas semi-retas partindo do ponto em todas as direções. Aquela semi-reta que mais apontasse para cima, seria a direção do gradiente daquela função representada pela superfícienaquele ponto.) e pode ser assim discriminado:

  1. a nova direção do aprendizado é dada pela direção antiga mais um delta;
  2. delta é obtido pelo produto de um fator de aprendizagem a multiplicado pelo gradiente no ponto w;
  3. gradiente no ponto w é a derivada parcial do erro médio quadrático.

Vejamos a seguir, o desenvolvimento matemático do que acima se disse:

onde D wij = variação do peso ij

a = coeficiente de aprendizado (0.1 £ a £ 0.05)

vj = valor original da saída do neurônio j

d i = erro retropropagado

Com essa base, podemos descrever o algoritmo de retropropagação.

Algoritmo de Retropropagação

1. Obter as derivadas de f(v). Naturalmente, estas derivadas dependem de qual é a função de ativação que se está empregando. A derivada da função linear u=v é 1. A derivada de tgh u é 1-u2;

2. Inverter o sentido do treinamento (das saídas para as entradas, daí o "retro" do nome);

3. Retropropagar o erro, de acordo com o desenvolvimento acima listado;

4. Calcular os novos pesos.

 

Para v = u,

 

Para v = tgh u,

- u2

 

As derivadas, para cada um dos neurônios da nossa rede exemplo, são:

 

Neurônio Ni

Derivada de v

N1 1 - (0.06)2 = 1
N2 1 – (0.46)2 = 0.79
N3 1 – (0.63)2 = 0.6
N4 1
N5 1 – (0.61)2 = 0.63

 

Os resultados numéricos são:

d 4 = (0.103)(1) = 0.103

d 5 = (0.386)(0.63) = 0.24

d 1 = [(0.103)(0.1) + (0.24)(0.5)] ´ 1 = 0.13

d 2= [(0.103)(-0.1) + (0.24)(0.2)] ´ 0.79 = 0.03

d 3= [(0.103)(-0.1) + (0.24)(1.1)] ´ 0.6 = 0.152

Estes novos valores vão substituir os pesos anteriores. Este ciclo, ocorrendo inúmeras vezes, vai diminuindo cada vez mais a diferença entre o real e o esperado. A partir de um certo ponto, a rede... "aprendeu".

Um Exemplo Real

A Companhia Siderúrgica Nacional (CSN) tem um alto-forno para produzir aço. Nesse forno, sempre entram os seguintes insumos:

  • ferro gusa (medido em toneladas), a uma determinada temperatura (medida em graus centígrados);
  • sucata de minério (medido em toneladas);
  • minério bruto (medido em toneladas);
  • calcita (medido em toneladas);
  • oxigênio injetado no forno, por um certo intervalo de tempo (medido em minutos).

Desse processamento, sai um determinado aço, com certa percentagem de carbono (medido em %) e de enxofre (também medido em %).

Existe em operação um sistema fenomenológico (isto é, baseado em fórmulas físicas), que orienta o processo. Como se verá adiante, este sistema é falho e muitas vezes o operador acaba se baseando muito mais em sua experiência (aprendizado) do que no sistema. É graças a esta característica (existe um conhecimento intrínseco ao problema, que não é mostrado pelas fórmulas físicas e que reside nos neurônios do operador) que se pode buscar uma rede neural artificial para substituir o processo fenomenológico.

Em geral, entram no forno cerca de 200T de ferro gusa a 1.700 graus centígrados, bem como partes menores dos demais componentes. Injeta-se oxigênio (o chamado "sopro") durante cerca de 15 minutos. Ao final deste tempo, retira-se uma amostra e é feita uma análise ultra-rápida, antes que a tralha toda resfrie. Dependendo do resultado, pode ou não haver a necessidade de um ressopro, ou seja, a injeção de mais oxigênio.

Em média, pelo processo atual, em cerca de 20% dos casos é necessário o ressopro, e isto custa caro, pois demora mais tempo para a produção do aço e, principalmente, desgasta o forno conversor. Há ainda um risco pior ainda, quando a coisa desanda: a chamada "projeção" que nada mais é do que um transbordo do material ígneo. Isso ocorre quando formam-se bolhas no forno e quando elas sobem e arrebentam. É um salve-se quem puder. Algo parecido acontece quando se frita um ovo que acabou de sair da geladeira e se está sem camisa. Imagine o que acontece no forno de aço, quando em vez de microgotículas de óleo quente são macrogotas de ferro gusa a 1700 graus.

Criou-se uma RNA com o objetivo de reduzir a zero a necessidade do ressopro e eliminar o risco da projeção. Vejamos como a coisa foi feita:

Levantaram-se na CSN, os dados de cerca de 3.000 rodadas passadas (dados históricos) referentes a ciclos de produção de aço.

Os dados se compunham de:

  • entradas: P(gusa), C(gusa), P(sucata), P(minério), P(calcita) e T(oxigênio);
  • saídas: C(gusa), %(carbono), %(enxofre) e Projeção(sim/não).

Desse levantamento desprezaram-se cerca de 700 amostras, por incompletude ou inconsistência dos dados. Sobraram, em conseqüência, 2.300 amostras. Estas, foram divididas em 2 universos: o universo de treinamento (1.600) e dados de teste (700). A seguir, os seguintes passos foram dados:

Passos para Resolver o Problema

1. Tratamento da entrada e da saída.

1.1 Normalização.

Das variáveis xi (entrada) e yi (saída). Se xi e yi são contínuos, faz-se uma transformação algébrica para que variem no intervalo –1 £ xi,yi £ 1.

Se xi e yi são lógicos, a transformação é tal que xi,yi Î {-1, 1}.

No exemplo, a P(gusa) era de 200T, com variação para mais ou menos de 10%. A normalização fez xi variar entre –1 e 1, com limites reais de 180 e 220.

1.2 Compactação do problema.

O objetivo desta fase é reduzir a dimensão do problema. Informações redundantes devem ser pesquisadas e, se encontradas, eliminadas. Busca-se como objetivo ter um número máximo de variáveis igual a 100.

1.3 Interpretação das saídas lógicas.

Se yi Î {-1, 1} e y’i = tgh ui , isto implica que –1 £ y’i£ 1, e então se y’i > 0, a resposta considerada será 1 e se y’i < 0, a saída considerada será –1. Aqui, um detalhe importante: esta convenção de respostas lógicas é feita apenas em tempo de operação e não em tempo de treinamento, sob pena de enlouquecer a rede.

2. Dimensionamento da rede.

2.1 Tipo de neurônio.

Na camada de saída, considera-se a regra: Se yi é contínuo, usa-se a função linear (v=u). Se, ao contrário, yi é lógico, usa-se a função tangente hiperbólica (v = tgh u).

Nas camadas intermediárias, usa-se sempre a função tangente hiperbólica.

2.2 Número de camadas.

Considerar-se-ão os seguintes dados: x Î Rn, y Î Rm, e n > m. Começa-se fazendo uma tentativa com uma única camada de n entradas e m neurônios. Segue-se um treinamento, teste, e análise do desempenho. Se satisfatório, OK! O problema está resolvido. Se não, parte-se para a solução de 2 camadas.

Esta contém n entradas, m saídas e p neurônios ocultos. O valor inicial de p é a média entre m e n. Segue-se o mesmo processo: treinamento, teste, e análise do desempenho. Se satisfatório, vai-se diminuindo p, até encontrar o valor mínimo para ele que gere desempenho da RNA aceitável. Se, de cara, o desempenho não é satisfatório, aumenta-se progressivamente o valor p.

3. Inicialização da rede.

Escolhem-se wij e bi de maneira randômica, em geral com seus valores variando entre –0.1 e 0.1.

4. Escolha do fator de aprendizagem.

Se a é grande, a rede pode divergir, e o faz com freqüência.

Se a é pequeno, o processo torna-se muito lento.

Em geral escolhe-se o a variando entre 0.001 e 0.2, sendo um a típico = 0.05 ou 0.1. Uma possibilidade bem interessante é a utilização de um a variável, sendo maior no começo do processo, para acelerar a convergência e menor ao final, para garantir o ajuste fino. Isso lembra um pouco a computação evolutiva, só que lá o operador crossover faz o papel de a grande e o operador mutação o de a pequeno.

O problema de manter o a grande em todo o processo, faz com que neste ponto, por exemplo, o ponto objetivo fique pulando de um lado para o outro, sem se aproximar do mínimo (ou máximo) absoluto.

5. Treinamento e teste

O conjunto de pares entrada-saída (xk, yk) deve ser estatisticamente representativo de seu universo. Lembremos que a rede aprende o que lhe é ensinado. A divisão entre treinamento e teste pode ser assim feita:

Fenômeno do Superaprendizado

Aqui ocorre o fenômeno para o qual o título deste artigo chama a atenção. O fenômeno é bem simples: durante o treinamento chega um ponto em que há que interrompê-lo. Se isso não for feito, a rede se vicia nos dados de treinamento e deixa de responder satisfatoriamente aos dados do ambiente – ainda desconhecido – com que defrontará depois.

A rede fica viciada nos dados de treinamento, e a eles responde com perfeição. Entretanto, seu desempenho no geral começa a decair. Essa é a finalidade de se dividir a massa de amostras em 2 partes: a rede é treinada com uma delas e depois testada com a outra. Quem manda a hora de parar o treinamento é a segunda amostra, e não a primeira.

Vejamos isso num gráfico:

Figura 10: Sub e supertreinamento em redes neurais artificiais.

 

Se o treinamento não for interrompido, o desempenho da rede segue a linha inferior. Cada vez o erro é menor, aproximando-se, no caso de treinamento, ad eternum, assintoticamente do zero erro.

O problema é que este zero erro refere-se apenas aos dados de treinamento. Desde o começo, o desempenho da rede sobre os dois conjuntos anda mais ou menos parelho: enquanto a rede é treinada ela atende bem ao conjunto de teste.

A partir de um certo ponto, identificado com n* no desenho acima, se o treinamento prossegue, o desempenho nos dados de teste (que são os que interessam, eles representam o universo), começa a piorar. Note como a curva do erro sobe a partir deste ponto.

A analogia meio forçada, mas impossível de deixar de notar, é entre os dados de treinamento com a mãe, e dos dados de teste com o mundo que a criancinha terá que enfrentar quando se tornar adulta. Espera-se das mães com "M" maiúsculo, que em algum momento da formação de seus filhos, mandem-nos se virarem sozinhos, mandem-nos se haverem diretamente com o mundo, sem a intermediação onipotente da mãe, que tudo sabe e tudo pode. Aos filhinhos que isso conseguirem, resta o prêmio de conseguirem lidar melhor com o que nos cerca. A aqueles a quem tal dádiva não for propiciada, resta uma inadequação, causa de sofrimento e dificuldades ao longo da sua vida. Essa dificuldade e esse sofrimento podem ser lidos no gráfico ao lado, que é o mesmo das redes neurais da página anterior, só que devidamente aderido ao que Freud e sua genial descoberta (a psicanálise) nos ensinam.

Figura 11: "Sub" e "supertreinamento" em seres humanos, nos primeiros anos de vida.

 

Observação: Este artigo é um dos resultados de minha participação no III Congresso Brasileiro de Redes Neurais, realizado em julho passado na cidade de Florianópolis. Meus agradecimentos ao Mendes, aos diretores da CELEPAR e aos demais colegas que propiciaram minha participação.