O modelo original
A rede do CNM é treinada por um algoritmo de aprendizagem supervisionada baseado em punição e recompensa. Esse treinamento consiste na aprendizagem da topologia da rede e dos pesos a partir da aplicação de algoritmos numéricos a um arquivo de casos históricos, denominado arquivo de treinamento, em que cada registro contém valores observados para um conjunto de variáveis de entrada e um único valor observado para a variável de saída. O número de neurônios da camada de entrada é igual ao número de valores possíveis para as variáveis de entrada, observados no arquivo de treinamento. De forma análoga, o número de neurônios da camada de saída é igual ao número de valores possíveis, observados no arquivo de treinamento, para a única variável de saída. Na camada combinatória são criados tantos neurônios para cada subconjunto S dos neurônios da camada de entrada, quanto o número de neurônios da camada de saída. Cada um desses neurônios da camada combinatória é ligado por um arco a cada um dos neurônio de S e a apenas um dos neurônios da camada de saída, iniciados com peso um.
Durante o treinamento, é atribuído um acumulador com valor zero, a cada arco da rede criada como descrito antes. Então é lido um caso do arquivo de casos históricos e propagada a evidência. Os acumuladores dos arcos no caminho de propagação da evidência lida, são incrementados quando a propagação levar à hipótese (valor) correta para a variável de saída e decrementado, caso contrário. O algoritmo pode ser resumido da seguinte forma:
Para
cada
caso do arquivo de treinamento faça: Propagar a evidência (valores lidos das variáveis de entrada) desde a camada de entrada até a camada de saída; Para
cada
arco que alcança um nó de hipótese faça: Se
o nó da hipótese alcançada corresponder à classe
correta: Então
retropropagar deste nó até o nó de entrada, incrementando o acumulador de
cada arco atravessado pelo fluxo evidencial (recompensa); Senão
retropropagar do nó de saída até a entrada decrementando o acumulador que
for atravessado pelo fluxo evidencial (punição); |
No final do processo de treinamento, o valor dos acumuladores de cada arco refletirá o suporte líquido que o arquivo de treinamento fornece para o caminho deste arco até a hipótese correspondente. Estes valores irão variar entre T e –T, onde T é o número de casos presentes no arquivo de treinamento.
Para se tornar operante a rede ainda precisa ser podada e os pesos de seus arcos devem ser normalizados. Desta forma, espera-se remover da rede as regras que estão associadas ao ruído contido no arquivo de treinamento. Os neurônios da camada combinatória e de entrada que ficarem desconectados de qualquer hipótese de saída também devem ser removidos.
Para realizar a poda, deve ser escolhido um ponto de poda pelo usuário, e todos os arcos cujos acumuladores forem menores que o limiar escolhido serão eliminados (podados). A escolha de um bom ponto de poda da rede é essencial para a performance do modelo.
A partir da rede podada, calculam-se os pesos sinápticos dos arcos (normalização). O peso de um arco é calculado como a razão entre o valor do acumulador do arco e o maior valor de acumulador da rede. Dessa forma, o valor de um peso sináptico reflete a crença relativa induzida a partir arquivo de treinamento para a regra correspondente.
Apesar de o CNM ser um modelo simples, ele apresenta alguns problemas. A geração prévia da camada combinatória com todas as possíveis combinações das entradas pode criar muitas combinações irreais (combinação de um mesmo atributo com valores distintos). Além disso, esta criação prévia tem um custo muito alto, devido à explosão combinatória que acontece quando o arquivo de treinamento tem muitos atributos e valores de entrada. Para controlar esta explosão combinatória, os autores deste modelo [MAC 89] propuseram a limitação das combinações até um limite arbitrário. Para este limite foi sugerido o critério do “número mágico” [MIL 56], que equivale a sete mais ou menos dois para estabelecer este limite superior. Porém esta abordagem apenas atenua o problema, deixando em aberto uma solução mais adequada.
Geração por contingência
A geração por contingência é uma otimização que tenta contornar o problema da explosão combinatória que, acontece na camada combinatorial, através da geração dos neurônios e suas conexões por contingência, ou seja, os neurônios e suas conexões somente serão criados quando existir um exemplo no arquivo de treinamento que exija a sua criação.
O algoritmo de construção proposto é mostrado a seguir:
Para
cada
exemplo do arquivo de entrada faça: Compute
todas as possíveis combinações baseadas no exemplo; Para
cada
combinação computada faça: Se
já existe uma combinação igual chegando à mesma
classe: Então
some 1 ao acumulador deste arco (Recompensa); Senão
crie um arco correspondente a esta combinação inicializando seu acumulador
com valor 1 (Recompensa); |
Algoritmo de geração por contingência.
Este método de construção
não prevê a retropropagação de punição, somente a recompensa é
computada durante a construção dos neurônios e dos arcos. A punição será
calculada ao final do treinamento, quando o valor de cada acumulador de cada
combinação é subtraído do valor dos outros acumuladores com a mesma combinação
que pertencem a classes diferentes.
Para calcular o valor final dos acumuladores dos arcos (“punição”), executa-se o seguinte algoritmo:
Para
cada
acumulador de cada combinação faça: ACC
:= valor do acumulador; Para
todas
as combinações iguais a anterior chegando a uma classe diferente faça: SOMA
:= SOMA + valor do acumulador; ACC
:= ACC – SOMA; |
Algoritmo de "punição" do método de geração por contingência.
A execução deste algoritmo sobre o modelo gerado pela geração por contingência equivale ao processo de punição executada no modelo original através da retropropagação, obtendo-se o mesmo resultado ao final.
Terminado este processo, ainda é preciso realizar a etapa de poda da rede, que é efetuada da mesma forma como foi descrita para o modelo original do CNM, baseando-se em um limiar de corte especificado pelo usuário, para que as sinapses fracas sejam removidas do modelo e esse possa se tornar operacional, podendo realizar inferências.