Underfitting e Overfitting em Redes Neurais Artificiais
- Hobbert Evergreen
- 28 de mar. de 2019
- 3 min de leitura
Atualizado: 9 de abr. de 2019
Uma das alegrias mais alegres de todo aprendiz de Redes Neurais é ver aquela rede treinada dando 100% de acerto!!
A pessoa vem toda contente de mostrar o resultado esperando que você fique feliz, mas você já viu aquela cena antes.
Como reagir??

Primeiro você fica feliz pela pessoa que conseguiu realizar os primeiros treinamentos da rede, está avançando no assunto... e logo em seguida precisa explicar: 100% em redes neurais nem sempre é um bom sinal!!
E nessa hora sempre vinha na minha cabeça qual era o caminho para demonstrar como que 100% de acerto não é um bom resultado?? A gente cresceu com a certeza que acertar todas as questões é um coisa boa!!
Se fosse resumir em apenas uma frase, a resposta seria algo como: "a rede está memorizando as respostas"... e um complemento seria "ela pode acabar ficando fraca na capacidade de generalizar"!!
Isso trás a tona uma das principais características de uma rede neural que é conseguir treinar com exemplos conhecidos, e acertar a partir de exemplos que ela nunca viu!! E isso é o que chamamos de generalizar!!
Imagine que você pede para um amigo buscar uma pessoa que ela não conhece no aeroporto. Você mostra 4 fotos da pessoa. E ela só tem essas 4 fotos. Ao vivo, no aeroporto, ela tem que reconhecer aquela pessoa! Essa é a ideia de generalização: com apenas 4 imagens, consigo reconhecer uma pessoa a partir de outras imagens que são totalmente diferentes!
E aí fica claro que "memorizar" é um problema!! Imagine que a pessoa decorou as 4 fotos e agora só consegue reconhecer aquelas 4 fotos!! Por exemplo, você tem 4 fotos de boné, aí se a pessoa tira o boné, não consegue mais reconhecer?? É um problema de generalização!
Para ser mais científico, vamos explicar com mais detalhes esta questão.
Imagine que você tem uma nuvem de pontos e quer achar um traço que melhor se adapte a tendência daqueles pontos:

No primeiro caso, os seus pontos possuem uma tendência que não é uma reta. E se você tentar traçar uma reta que melhor se adapte aos pontos, terá regiões com bastante acerto, porém outras com bastante erro!! Este caso é um "under-fit".
Em inglês FIT é quando uma coisa se encaixa em outra. UNDER significa abaixo do esperado. Então underfit significa que não encaixou bem porque ficou muito diferente.

No segundo caso a linha de tendência parece acompanhar os pontos, ficando numa região média o que significa que está acertando bem a tendência e é isso que esperamos.
Perceba que neste segundo caso, a linha não passa por cima de todos os pontos, ela é uma aproximação de todos os pontos! Como ela não acerta em cheio, dizemos que ela aproxima bem, que ela generaliza bem!! Quando houver um novo ponto próximo dessa tendência, ela irá dar um bom palpite
No terceiro e último caso, o traço acerta em cheio todos os pontos! Isso significa 100% de acerto!! Isso significa que a rede memorizou os dados!! E só acerta os dados exatamente como foram passados!!
E isso é o over-fit!! Over significa "muito/exagerado" !! Houve um encaixe exageradamente perfeito que fará com que peças perfeitamente iguais se encaixe!! Ela não é boa para generalizar, porque se o ponto não for exatamente igual, vai dizer que está errado!

No geral, esta regra vale para quase toda rede!!
Porém há casos que o overfit pode ser necessário!!
Vamos supor que o problema que você tem é que é muito difícil programar o reconhecimento de 10 padrões fixos. Esses padrões nunca mudam, e você quer memorizá-los!!
Neste caso a rede neural está sendo usada para memorizar, e isso não é um problema!! O problema é que você está usando a rede neural para evitar modelar um reconhecimento difícil!!
Assim como neste caso, outros casos podem surgir em que o overfit é desejado!! O tempo e os problemas a serem resolvidos que vão nos dizer!
Comments