Imagine que você criou um filtro de spam composto por uma série de instruções if (se). Se o assunto contiver FREE (grátis), marque como spam. Se o remetente terminar em .ru, marque como spam. Se o e-mail contiver wire transfer (transferência bancária), marque como spam.
Durante uma semana, tudo parece funcionar bem, mas depois a eficácia começa a cair. Surgem novos golpes que não utilizam as suas palavras-chave, e e-mails legítimos são sinalizados como spam porque um colega de trabalho escreveu “almoço grátis” em um convite de agenda. Nada na caixa de entrada está “quebrado” no sentido de causar uma falha no programa. As regras continuam executando exatamente o que você definiu, e é justamente aí que reside o problema.
Como o filtro baseado em regras não está funcionando adequadamente, o próximo passo é adotar um sistema cujo resultado (saída) mude depois de processar exemplos que você considera corretos. Um programa aprende quando o treinamento ajusta suas configurações internas, fazendo com que o mesmo e-mail de entrada gere uma classificação mais precisa — spam ou não spam — do que antes do treinamento.
Para tornar isso concreto, imagine uma caixa de entrada pequena onde cada e-mail vem acompanhado de um rótulo (label); esse rótulo representa a resposta correta que você deseja que o programa produza, como spam ou not_spam. Esse conjunto de exemplos constitui os dados, ou seja, entradas registradas associadas aos seus respectivos rótulos. O programa não processa o e-mail inteiro como se fosse mágica; ele utiliza características (features), que são propriedades observáveis e mensuráveis de um e-mail, como "contém a palavra invoice" (fatura) ou "o domínio do remetente termina em .biz".
Veja como os mesmos e-mails rotulados podem gerar resultados diferentes antes e depois do treinamento.
O ponto fundamental é que o treinamento altera o comportamento do filtro sem que você precise adicionar novas instruções condicionais (if). O processo de treinamento utiliza os rótulos para ajustar as configurações internas em direção a resultados que correspondam a esses rótulos com maior frequência; assim, uma mensagem que antes era classificada incorretamente passa a ser classificada corretamente após o ajuste.
Uma vez que o filtro é capaz de se modificar com base em exemplos, a questão seguinte é: que tipo de mudança pode ser considerada aprendizado? Se o programa apenas memoriza exatamente os e-mails usados no treinamento, ele pode obter um desempenho perfeito nesses exemplos, mas falhar ao lidar com a próxima tentativa de golpe que utilize uma redação diferente.
Diante de um e-mail novo, que o filtro nunca viu antes, o que um sistema baseado em padrões poderia utilizar para classificá-lo sem exigir a programação manual de cada novo truque? Ele pode reutilizar características que frequentemente se correlacionam com spam no conjunto de dados rotulados, como a presença da palavra “invoice” (fatura), domínios de remetente incomuns ou uma divergência entre o nome do remetente e o domínio.
Compare como um sistema de memorização por correspondência exata, um sistema de aprendizado baseado em padrões e um conjunto de regras fixas lidam com um e-mail inédito.