Guia de Treinamento de Redes Neurais no SisDEA

    Guia de Treinamento de Redes Neurais no SisDEA

    Para que serve

    O módulo de Redes Neurais Artificiais (RNA) do SisDEA aprende a relação entre as características de um imóvel (área, localização, idade, padrão construtivo, etc.) e o seu valor de mercado, a partir de uma base de dados de imóveis já avaliados. Depois de treinada, a rede pode estimar o valor de imóveis novos a partir das mesmas características.

    O “treinamento” é o processo de ajustar os parâmetros internos da rede (os “pesos”) para que suas estimativas fiquem o mais próximas possível dos valores reais observados na base de dados. O SisDEA oferece cinco algoritmos diferentes para fazer esse ajuste (a família RPE conta como um só, com três variantes — ver seção 2.5). Este guia explica, em linhas gerais, como cada um funciona e quando usar cada um.

    Os métodos de treinamento disponíveis

    Levenberg-Marquardt (LM) — recomendado como primeira escolha

    Analisa todos os dados de uma vez a cada rodada de ajuste e usa uma estratégia de busca mais sofisticada (de segunda ordem) para encontrar os pesos ideais mais rapidamente e com menos rodadas do que os métodos mais simples.

    • Vantagens: converge rápido, costuma dar os melhores resultados para bases de dados de porte pequeno a médio (centenas a poucos milhares de registros) — exatamente o perfil típico de uma base de avaliação de imóveis.
    • Cuidado: cada rodada é mais pesada computacionalmente (mais lenta por rodada, ainda que precise de menos rodadas no total). Com redes muito grandes (muitos neurônios ocultos) pode ficar lento.
    • Quando usar: é a opção recomendada por padrão para o cenário de avaliação imobiliária — base de dados “de uma vez só” (não chega em tempo real), poucas dezenas de variáveis, algumas centenas a ~1000 registros.

    Backpropagation em Lote (Batch BP)

    Também analisa todos os dados de uma vez a cada rodada, mas usa uma estratégia de ajuste mais simples (gradiente descendente clássico) — cada passo é mais leve, mas em geral são necessárias muito mais rodadas até convergir.

    • Vantagens: mais leve por rodada, útil se o Levenberg-Marquardt estiver muito lento numa rede grande.
    • Cuidado: costuma precisar de bem mais iterações para chegar a um resultado tão bom quanto o LM, e é mais sensível à escolha da taxa de aprendizado (parâmetro que controla o tamanho de cada passo de ajuste).
    • Quando usar: alternativa ao LM quando ele não é viável computacionalmente.

    Backpropagation Incremental

    Como o Batch BP, mas ajusta os pesos a cada imóvel processado, não só ao final de passar por toda a base. É o método mais próximo de um “aprendizado contínuo”.

    • Vantagens: pode reagir mais rápido a padrões fortes nos dados.
    • Cuidado: mais sensível à ordem em que os dados aparecem na base, e ao ruído entre registros individuais (um imóvel atípico pode “puxar” o ajuste de forma mais brusca do que no método em lote).
    • Quando usar: casos específicos onde os outros métodos não convergem bem; em geral, para uma base de imóveis “fechada” (não chega em tempo real), o Batch BP ou o LM são preferíveis.

    Backpropagation Estocástico

    Parecido com o Backpropagation Incremental (2.3) — também ajusta os pesos a cada imóvel processado —, mas sorteia a ordem dos imóveis a cada época, em vez de seguir sempre a mesma ordem sequencial (a cada imóvel usado, ele é reembaralhado para o fim da fila da época corrente). Isso reduz o risco de o ajuste ficar viciado pela ordem em que os imóveis aparecem na base.

    • Vantagens: é o único método que também aceita função de transferência Sigmoide na camada oculta, além de Linear e Tangente Hiperbólica (os demais métodos só reconhecem Linear e Tangente Hiperbólica). Útil como alternativa ao BP Incremental quando a ordem fixa dos dados parece estar causando resultados instáveis.
    • Cuidado: mesma ressalva de sobreajuste do BP Incremental — sem mecanismo de regularização embutido. Como não tem o critério de parada por “erro parou de melhorar” que LM/Batch BP/BP têm (ver seção 4.5), tende a rodar todas as Épocas configuradas até a Tolerância ser atingida.
    • Quando usar: alternativa ao BP Incremental, principalmente quando quiser testar a ativação Sigmoide na camada oculta.

    RPE — Erro de Predição Recursivo (Forgetting Factor / Constant Trace / EFRA)

    Família de três variantes (FF, CT, EFRA) de um método pensado originalmente para situações em que os dados chegam aos poucos, ao longo do tempo (ex.: um sensor gerando leituras continuamente), e a rede precisa se adaptar sem reprocessar tudo do zero a cada nova informação.

    • Vantagens: pode ser útil para retreinar/ajustar uma rede já treinada quando chegam novos imóveis à base, sem reprocessar a base inteira.
    • Cuidado importante: ao contrário do LM, as três variantes de RPE não têm nenhum mecanismo de regularização/controle de sobreajuste embutido. Numa base de imóveis de algumas centenas a ~1000 registros, isso aumenta o risco da rede “decorar” os dados de treino em vez de aprender o padrão geral (ver seção 4.2). Cada variante tem parâmetros próprios de sensibilidade (fator de esquecimento, traço mínimo/máximo, ou os parâmetros do EFRA) que precisam ser calibrados com cuidado — valores mal ajustados podem fazer a estimativa da rede “derivar” ao longo do treino. Esses parâmetros ficam visíveis e editáveis na tela assim que a variante correspondente é selecionada — ver seção 4.6 para a lista completa e as faixas de valores aceitas.
    • Quando usar: cenários de atualização incremental da base. Para o treinamento inicial de um modelo a partir de uma base histórica fechada de imóveis, prefira LM ou Batch BP.

    Poda de Pesos (Prune)

    Depois de treinar uma rede, o SisDEA oferece uma função de poda (remover conexões pouco relevantes da rede, ajustando-as para zero). Isso é útil para:

    • Simplificar o modelo, removendo variáveis ou combinações de variáveis que não contribuem de forma relevante para a estimativa.
    • Reduzir o risco de sobreajuste (redes menores generalizam melhor para imóveis fora da base de treino).

    Recomenda-se rodar a poda depois de um treinamento inicial satisfatório, não no lugar dele.

    Pontos importantes para dados de imóveis

    Normalização dos dados

    Os dados de entrada (área, valor, etc.) devem estar normalizados numa faixa fixa (o SisDEA usa a faixa 0,2 a 0,8) antes do treinamento. Isso é necessário porque a rede usa uma função de ativação (tangente hiperbólica) que “satura” fora de uma faixa razoável de valores — ou seja, deixa de distinguir diferenças entre valores muito grandes ou muito pequenos, e a rede para de aprender. Sempre confirme que a normalização foi aplicada antes de treinar; um preço de imóvel em valor absoluto (centenas de milhares) sem normalizar vai travar o aprendizado.

    Tamanho da amostra e sobreajuste (overfitting)

    Com algumas centenas a ~1000 imóveis na base, e várias variáveis (área, localização, idade, padrão, etc. — frequentemente correlacionadas entre si), existe risco real da rede se ajustar demais aos dados de treino e perder capacidade de generalizar para imóveis novos. Recomendações práticas:

    • Prefira redes com poucos neurônios ocultos — comece pequeno (poucas unidades) e só aumente se a qualidade da estimativa não for satisfatória.
    • Sempre que possível, separe uma parte da base como conjunto de validação (dados que a rede não vê durante o treino) para conferir se a estimativa continua boa em dados “novos” — é a forma mais confiável de perceber sobreajuste.
    • Entre os cinco métodos, o Levenberg-Marquardt é o único com controle de decaimento de peso (regularização) disponível — campo “Decaimento de peso (LM)”, ver seção 4.6 — outro motivo para preferi-lo como ponto de partida.

    Variáveis atípicas (outliers)

    O mercado imobiliário costuma ter alguns imóveis com valores bem fora do padrão (muito acima ou abaixo da média). Como os dados são normalizados numa faixa fixa, um outlier muito extremo “empurra” a escala de normalização de todos os outros imóveis. Vale revisar a base antes do treino e considerar tratar/remover casos claramente atípicos.

    Inicialização dos pesos e função de transferência

    Antes de começar a treinar, o SisDEA sorteia os pesos iniciais da rede (os valores de onde o ajuste parte). Esse sorteio é feito automaticamente numa faixa apropriada à função de transferência escolhida para cada camada (Linear, Sigmoide ou Tangente Hiperbólica) — o usuário não precisa (nem consegue) ajustar isso manualmente, mas vale entender o motivo:

    • Uma rede totalmente linear (Linear tanto na camada oculta quanto na de saída) equivale, matematicamente, a uma regressão simples — mas por trás ainda são dois conjuntos de pesos multiplicados entre si. Se os pesos iniciais forem sorteados numa faixa grande demais, o ajuste fica bem mais lento para chegar perto do resultado correto dentro do número de iterações configurado, mesmo a rede sendo simples. Por isso, para camadas Lineares o SisDEA usa uma faixa inicial pequena e fixa.
    • Para Tangente Hiperbólica e Sigmoide, o SisDEA usa faixas maiores (calculadas a partir do número de entradas/neurônios da camada), seguindo a prática usual para essas funções — a Sigmoide recebe uma faixa ainda maior que a Tangente Hiperbólica, porque ela responde mais “achatado” a variações nos pesos.
    • Essa escolha de faixa vale para todos os métodos de treinamento (LM, Batch BP, BP Incremental, RPE, BP Estocástico) e é aplicada por camada, de acordo com a função de transferência configurada para aquela camada especificamente — não é um ajuste único para a rede inteira.
    • Na prática: se o treinamento não estiver convergindo bem com a função de transferência Linear, aumentar drasticamente o número de iterações raramente ajuda tanto quanto revisar se a função de transferência escolhida (Linear/Sigmoide/Tangente Hiperbólica) é mesmo a mais adequada para os dados em questão.

    Critérios de parada do treinamento

    Os dois campos que o usuário configura na tela de treinamento são:

    • Épocas — número máximo de rodadas de ajuste. O treinamento sempre para aqui, mesmo que nenhum outro critério tenha sido satisfeito antes.
    • Tolerância — o quão pequeno o erro precisa ficar para o treinamento ser considerado concluído (quanto menor, mais exigente).

    Além desses dois, cada método tem critérios internos adicionais (não configuráveis pela tela) para decidir que “o treinamento parou de melhorar” mesmo sem ter atingido a tolerância — e é aqui que os métodos diferem entre si:

    • Levenberg-Marquardt (LM) e Batch BP: além de Épocas e Tolerância, param também quando todos os três sinais a seguir ficam pequenos ao mesmo tempo — a variação do erro entre rodadas, o maior gradiente (o quanto ainda dá para melhorar ajustando os pesos) e a maior variação de peso de uma rodada para a outra. Isso evita rodadas “de graça” quando a rede já não está mais progredindo, mas também significa que esses dois métodos podem, às vezes, parar antes da Tolerância configurada ser atingida.
    • Backpropagation Incremental (BP): mesma ideia do LM/Batch BP, mas olhando só a variação do erro entre rodadas (não os outros dois sinais).
    • BP Estocástico: para apenas por Épocas ou Tolerância — não tem esse critério adicional de “parou de melhorar”. Por isso, se a rede convergir rápido, o BP Estocástico tende a rodar todas as Épocas configuradas até a Tolerância ser atingida, ou até o limite de Épocas, o que vier primeiro.
    • RPE (FF/CT/EFRA): como não reprocessa a base inteira a cada rodada (ver seção 2.5), o critério principal é a Tolerância; o número de Épocas configurado ainda funciona como limite de segurança.

    Na prática: se o treinamento parar muito rápido (poucas iterações) com um erro ainda alto, verifique primeiro se não foi um desses critérios internos de “parou de melhorar” que agiu antes da Tolerância ser atingida — reduzir a Tolerância não ajuda nesse caso; o que costuma ajudar é revisar a taxa de aprendizado (Fator de Convergência) ou o Momentum. Já se dois métodos diferentes (por exemplo LM e BP Estocástico) treinados na mesma base e com a mesma Tolerância chegam a resultados apreciavelmente diferentes, vale conferir se um parou mais cedo que o outro por causa desses critérios internos, antes de desconfiar dos pesos ou da normalização.

    Parâmetros avançados por método

    Além dos campos comuns a todos os métodos (Taxa de Aprendizagem, Tolerância Máxima, Número de Épocas, Momentum, Neurônios na camada intermediária), a tela de treinamento tem uma seção Parâmetros específicos do método, com um grupo de campos para cada um dos quatro métodos que têm ajuste fino próprio (LM e as três variantes de RPE). Só o grupo do método atualmente selecionado fica habilitado — os demais ficam desabilitados (acinzentados) e não interferem no treinamento em curso.

    Antes desses campos existirem na tela, esses valores eram fixos no código, iguais para todo mundo, e alguns compartilhavam o mesmo campo (Momentum) para propósitos completamente diferentes dependendo do método — em particular, o ganho de correção do RPE-EFRA vinha do mesmo campo “Momentum” usado por LM/Batch BP/BP/BP Estocástico. Isso podia fazer o RPE-EFRA treinar mal (ou nem treinar) sem nenhuma indicação na tela do motivo. Agora cada parâmetro tem seu próprio campo, e o Momentum só se aplica aos quatro métodos que realmente o usam.

    Campo na telaMétodoFaixa aceitaPadrãoO que controla
    Decaimento de pesoLM0 a 100Regularização (penaliza pesos grandes) — 0 desliga
    Lambda inicialLMmaior que 01Ponto de partida do amortecimento do Levenberg-Marquardt (o algoritmo ajusta sozinho durante o treino)
    Fator de esquecimentoRPE-FFde 0 (exclusive) a 10,995Quanto o RPE-FF “esquece” dados antigos a cada rodada — 1 = nunca esquece
    Covariância inicial (p0)RPE-FFmaior que 010Incerteza inicial do RPE-FF sobre os pesos — valores maiores deixam o ajuste inicial mais agressivo
    Traço mínimoRPE-CTmaior que 00,001Limite inferior de “confiança” que o RPE-CT mantém nos pesos
    Traço máximoRPE-CTmaior que o traço mínimo10Limite superior de “confiança” que o RPE-CT mantém nos pesos
    Ganho alphaRPE-EFRAde 0 (exclusive) a 21Intensidade da correção aplicada aos pesos a cada amostra
    BetaRPE-EFRA0 ou maior0,001Evita que a incerteza interna do EFRA colapse a zero
    DeltaRPE-EFRA0 ou maior0,001Evita que a incerteza interna do EFRA cresça sem limite
    Fator de esquecimento (EFRA)RPE-EFRAde 0 (exclusive) a 10,995Mesma ideia do fator de esquecimento do RPE-FF, aplicada ao EFRA

    Na prática: os valores padrão da tabela funcionam bem na maioria dos casos — não é necessário mexer nesses campos rotineiramente. Vale ajustá-los principalmente ao usar RPE para atualização incremental de um modelo já treinado (seção 2.5): um fator de esquecimento mais baixo (ex.: 0,9) faz o modelo se adaptar mais rápido a imóveis novos, mas “esquece” mais rápido o histórico; um ganho alpha do EFRA mais alto acelera a correção, mas aumenta o risco da estimativa “derivar” com dados ruidosos (ver seção 2.5, cuidado importante).

    Resumo — fluxo recomendado para uma base de imóveis

    1. Normalize os dados (faixa 0,2–0,8) e revise a base em busca de outliers evidentes.
    2. Separe uma parte da base para validação, se possível.
    3. Treine com Levenberg-Marquardt, começando com uma rede pequena (poucos neurônios ocultos).
    4. Avalie o resultado nos dados de validação, não só nos dados de treino.
    5. Se necessário, rode a poda de pesos para simplificar a rede.
    6. Reserve os métodos RPE (FF/CT/EFRA) para quando precisar atualizar a rede com novos imóveis sem reprocessar a base inteira, e o Batch BP/BP incremental como alternativas caso o LM não seja viável.