Catastrophic Forgetting
O esquecimento catastrófico é a perda abrupta de habilidades anteriores quando uma rede neural é treinada com novos dados. Veja por que isso acontece, exemplos e formas de mitigá-lo.
O esquecimento catastrófico, também chamado de interferência catastrófica, é a perda abrupta de habilidades aprendidas anteriormente quando uma rede neural é treinada com novos dados que já não incluem exemplos da tarefa antiga. O treinamento atualiza os mesmos pesos do modelo que armazenavam o conhecimento antigo, e nada na nova perda incentiva sua preservação; por isso, a precisão na tarefa original pode desabar em poucas centenas de atualizações. McCloskey e Cohen descreveram esse efeito em 1989, em redes que aprendiam fatos aritméticos em sequência, e ele continua sendo o principal obstáculo ao aprendizado contínuo e um risco recorrente no ajuste fino.
Por que ocorre o esquecimento catastrófico#
O conhecimento em uma rede neural é distribuído: cada peso contribui para várias saídas, e cada saída depende de vários pesos. O treinamento em uma nova tarefa desloca os pesos na direção em que sua perda diminui mais rapidamente, sem qualquer termo que meça a tarefa antiga; assim, o modelo se afasta da região em que a tarefa antiga funcionava. A classificação intensifica o efeito na camada de saída. Quando apenas novas classes aparecem nos dados de treinamento, cada etapa reduz as pontuações das classes ausentes, até que o modelo deixa completamente de prevê-las. Uma pequena rede treinada com os dígitos manuscritos de 0 a 4 e depois com os dígitos de 5 a 9 demonstra isso, além de mostrar como repetir uma pequena amostra dos dados antigos limita o efeito:
import torch
from sklearn.datasets import load_digits
torch.manual_seed(0)
X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
train = torch.arange(len(y)) < 1400 # hold out the last 397 images for testing
task_a, task_b, test_a = train & (y < 5), train & (y >= 5), ~train & (y < 5)
replay = task_a & (torch.rand(len(y)) < 0.1) # keep 10% of task A for replay
for name, second_task in [("task B only", task_b), ("task B + 10% replay", task_b | replay)]:
model = torch.nn.Sequential(torch.nn.Linear(64, 64), torch.nn.ReLU(), torch.nn.Linear(64, 10))
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# Train on digits 0-4 (task A), then on digits 5-9 (task B)
for mask in (task_a, second_task):
for _ in range(200):
loss = torch.nn.functional.cross_entropy(model(X[mask]), y[mask])
optimizer.zero_grad()
loss.backward()
optimizer.step()
accuracy = (model(X[test_a]).argmax(1) == y[test_a]).float().mean()
print(f"{name}: held-out digits 0-4 accuracy {accuracy:.1%}")Após a tarefa A, a rede classifica corretamente 92,4% dos 198 dígitos de 0 a 4 reservados para teste. O treinamento apenas com os dígitos de 5 a 9 reduz esse valor para 0,0%, pois o modelo agora prevê apenas as novas classes. A inclusão de 66 imagens repetidas da tarefa A na segunda etapa mantém a precisão em 74,7%.
Esquecimento catastrófico na prática#
- Detecção de objetos: Um detector treinado com pedestres e sinais de trânsito e depois ajustado apenas com imagens de novos sinais de obras deixa de detectar pedestres. Qualquer pedestre que apareça sem rótulo nas novas imagens é explicitamente ensinado como plano de fundo, o que acelera o esquecimento.
- Modelos de linguagem grandes: Durante o ajuste contínuo de instruções de LLMs de 1 bilhão a 7 bilhões de parâmetros, o conhecimento de domínio, o raciocínio e a compreensão de leitura se deterioraram, e o esquecimento se tornou mais grave à medida que o tamanho do modelo aumentava dentro dessa faixa. Ajustar modelos alinhados, mesmo com dados inofensivos, pode enfraquecer seu comportamento de segurança.
Esquecimento catastrófico e termos relacionados#
- Aprendizado contínuo: A área de pesquisa que estuda como aprender uma sequência de tarefas sem esquecer as anteriores. O esquecimento catastrófico é o problema que essa área busca resolver.
- Colapso do modelo: Perda gradual de qualidade e diversidade quando os modelos são treinados com dados gerados por modelos anteriores, mesmo na mesma tarefa.
- Sobreajuste: Ajustar-se tão bem ao ruído dos dados de treinamento atuais que o desempenho em novos dados da mesma tarefa cai. O esquecimento é a perda de uma tarefa anterior.
- Desaprendizado de máquina: Remoção deliberada de dados ou conhecimentos específicos de um modelo treinado, a contraparte intencional do esquecimento.
- Dilema entre estabilidade e plasticidade: O equilíbrio entre manter estável o conhecimento antigo e continuar suficientemente flexível para aprender novas tarefas, que cada método de mitigação resolve de forma diferente.
Como reduzir o esquecimento catastrófico#
As estratégias de mitigação se dividem em três famílias: repetição, regularização e isolamento de parâmetros; as restrições do projeto geralmente determinam qual delas se aplica:
- Repetição: Misturar exemplos armazenados de tarefas anteriores ao novo treinamento é a solução mais confiável, como mostra o exemplo dos dígitos. Para detectores YOLO26, os arquivos YAML de dados da Ultralytics aceitam uma lista de pastas de imagens de treinamento; assim, repetir exemplos significa listar uma amostra das imagens originais junto às novas, usando uma lista de classes combinada.
- Regularização: A consolidação elástica de pesos (EWC) penaliza alterações em cada peso proporcionalmente à sua importância para tarefas anteriores, estimada a partir das informações de Fisher. O método Learning without Forgetting usa destilação de conhecimento, treinando o modelo para continuar reproduzindo suas saídas antigas nos novos dados.
- Isolamento de parâmetros: Congelar camadas compartilhadas, adicionar cabeças específicas para cada tarefa ou treinar adaptadores como LoRA mantém intactos os pesos originais. Em tarefas de programação e matemática, LoRA aprendeu menos do que o ajuste fino completo, mas também esqueceu menos, e o ajuste fino completo aprendeu alterações de pesos com posto 10 a 100 vezes maior do que as configurações típicas de LoRA.










