Learn AI with Python · Aula

Ajuste fino: descongelamento e retreinamento

base_model.trainable = True, descongelamento camada a camada e taxas de aprendizado diferenciadas.

Aula 3 de 413 etapas

Ajuste fino: descongelamento e retreinamento é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.

Quando fazer o ajuste fino

Depois que a extração de características treinar sua camada final, o ajuste fino permite obter mais precisão ao adaptar a parte superior da base pré-treinada aos seus dados. Faça isso somente quando a camada final estiver estável; caso contrário, gradientes grandes de uma camada final aleatória podem danificar a base.

Descongelando a base

Defina base.trainable = True para tornar os pesos atualizáveis novamente. Por si só, isso descongela todas as camadas, o que geralmente é agressivo demais.

base.trainable = True
print("Trainable layers:", sum(l.trainable for l in base.layers))

Congele as primeiras N camadas

As camadas iniciais contêm detectores genéricos de bordas e texturas que você deseja preservar. Congele novamente as primeiras N camadas e faça o ajuste fino apenas das camadas mais profundas e específicas da tarefa.

base.trainable = True
freeze_until = 100   # keep first 100 layers frozen

for layer in base.layers[:freeze_until]:
    layer.trainable = False
for layer in base.layers[freeze_until:]:
    layer.trainable = True

Por que usar uma taxa de aprendizado muito baixa

O ajuste fino exige uma taxa de aprendizado muito baixa, como 1e-5. Os pesos pré-treinados já são bons; você quer apenas fazer pequenos ajustes. Uma taxa alta causa esquecimento catastrófico, apagando o conhecimento do ImageNet que você veio reutilizar.

Recompile após descongelar

Você precisa recompilar depois de alterar as sinalizações trainable, para que o Keras reconstrua quais pesos recebem gradientes. Defina aqui a taxa de aprendizado baixa.

from tensorflow.keras.optimizers import Adam

model.compile(
    optimizer=Adam(learning_rate=1e-5),
    loss="categorical_crossentropy",
    metrics=["accuracy"]
)

O processo em duas fases

  1. Fase 1 (extração de características): base congelada; treine a camada final a aproximadamente 1e-3 até que a precisão de validação atinja um platô.
  2. Fase 2 (ajuste fino): descongele as camadas superiores, recompile com aproximadamente 1e-5 e continue o treinamento.

Dividir o processo dessa forma estabiliza o treinamento e protege as características pré-treinadas.

Continuando o treinamento na fase 2

Retome o treinamento do ponto em que a fase 1 parou usando initial_epoch, para que os registros e as programações permaneçam contínuos.

history2 = model.fit(
    train_ds,
    validation_data=val_ds,
    epochs=20,
    initial_epoch=10   # phase 1 ended at epoch 10
)

Agendador da taxa de aprendizado

Um agendador reduz gradualmente a taxa de aprendizado ao longo do tempo, fazendo com que as atualizações diminuam à medida que o modelo converge. ReduceLROnPlateau a reduz automaticamente quando a perda de validação fica estagnada.

from tensorflow.keras.callbacks import ReduceLROnPlateau

lr_cb = ReduceLROnPlateau(
    monitor="val_loss", factor=0.5,
    patience=2, min_lr=1e-7
)
model.fit(train_ds, validation_data=val_ds,
          epochs=20, callbacks=[lr_cb])

Cuidado com BatchNorm

ResNet e EfficientNet contêm camadas BatchNormalization que acompanham estatísticas acumuladas. Ao fazer o ajuste fino, manter as camadas BN congeladas (ou no modo de inferência) geralmente produz resultados mais estáveis, pois atualizar suas estatísticas com um conjunto de dados pequeno pode prejudicar a precisão.

Fique atento ao sobreajuste

O ajuste fino adiciona muitos parâmetros treináveis, aumentando o risco de sobreajuste. Combata-o com aumento de dados, regularização por desligamento aleatório e EarlyStopping com base na perda de validação.

from tensorflow.keras.callbacks import EarlyStopping

stop = EarlyStopping(monitor="val_loss",
                     patience=4,
                     restore_best_weights=True)

Juntando tudo

Uma execução robusta de ajuste fino consiste em: treinar o head, descongelar as camadas superiores, congelar BN, recompilar com 1e-5 e então treinar com um agendador e parada antecipada. Compare sempre a acurácia de validação antes e depois para confirmar que o ajuste fino realmente ajudou.

Verificação rápida

Teste seus conhecimentos sobre ajuste fino.

Recapitulação

Você aprendeu a fazer ajuste fino definindo base.trainable=True, congelando novamente as primeiras N camadas, recompilando com uma taxa de aprendizado muito baixa (1e-5) e executando um processo em duas fases. Um agendador da taxa de aprendizado e a parada antecipada mantêm o processo estável, e as camadas BatchNorm exigem atenção. A seguir: modelos leves para implantação em dispositivos de borda.

Grátis para começar

Aprenda Python com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
53
Aulas
225

Perguntas Frequentes

A aula “Ajuste fino: descongelamento e retreinamento” é grátis?

Sim — o texto completo de “Ajuste fino: descongelamento e retreinamento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.

O que vou aprender em “Ajuste fino: descongelamento e retreinamento”?

base_model.trainable = True, descongelamento camada a camada e taxas de aprendizado diferenciadas. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Learn AI with Python?

Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Ajuste fino: descongelamento e retreinamento”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Learn AI with Python?

Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conceitos e estratégias de aprendizado por transferência
  2. Usando VGG16 e ResNet50 como modelos-base
  3. Ajuste fino: descongelamento e retreinamento
  4. MobileNet e EfficientNet para implantação na borda
← Voltar para Learn AI with Python