índice
No processo de treinamento do modelo, um ponto muito importante é como ajustar
学习率(lr)
o hiperparamétrico para
学习率
otimização. Existem muitos,
warmup
é um dos métodos mais importantes e eficazes.
1. Definição de aquecimento
warmup
, Que significa pré-aquecimento, é um método de pré-aquecimento da taxa de aprendizado mencionado no artigo da ResNet. Ele primeiro escolhe usar uma taxa de aprendizado menor no início do treinamento e treina algumas épocas ou etapas (como 4 épocas, 10000 etapas) e, em seguida, modifica para a aprendizagem predefinida para treinamento.
2. Taxa de aprendizagem relacionada
- Definição da taxa de aprendizagem
A configuração da taxa de aprendizagem, teoricamente falando, geralmente a seguinte situação: a
taxa de aprendizagem é muito pequena → →→ A convergência é muito lenta, a taxa de aprendizagem é muito grande→ →→ Faltando o ótimo local;
na verdade, a taxa de aprendizagem é muito pequena→ →→ Não converge, a taxa de aprendizagem é muito grande→ →→ Não converge, mas atualmente não existe uma teoria geral para explicar por que isso acontece.
-Algumas maneiras de definir a taxa de aprendizagem
1. Em circunstâncias normais, a taxa de aprendizado e alguns outros parâmetros afetarão uns aos outros, mas o impacto não é muito grande, então geralmente recomendamos escolher uma taxa de aprendizado adequada ao escolher a taxa de aprendizado no início, a taxa de aprendizado aqui. não se refere à taxa de aprendizado que pode atingir a melhor precisão, mas quando a precisão é um pouco reduzida, mas a velocidade de convergência se torna mais rápida, isso pode economizar muito tempo para ajustar outros parâmetros.
2. O tamanho da amostra tem um impacto relativamente grande na taxa de aprendizado. Geralmente, não há necessidade de ajustar a taxa de aprendizado quando o tamanho da amostra permanece inalterado. Se o tamanho da amostra for expandido, a taxa de aprendizado precisa ser reconsiderada.
3. Reduza a taxa de aprendizado no estágio final. Este último fica
mais estável no final. É mais fácil encontrar o local ideal reduzindo a taxa de aprendizado. Você pode aumentar o tamanho do lote, que é mais estável
., Reduza o aprendizado avalie e execute novamente. Afinado.
4. taxa de aprendizagem comuns incluem: 1e-05
, 2e-05
, 5e-05
,
formação geral a partir do zero, de 0,01 para começar julgamento, problemas no ajuste, se a convergência é muito rápido, e logo sobre o sobre-montagem do conjunto de treinamento, pode reduzir a taxa de aprendizagem, se o treinamento Se for muito lento ou não convergir, você pode aumentar a taxa de aprendizagem;
3. Função de aquecimento
- aquecimento constante
Como os pesos do modelo são inicializados aleatoriamente no início do treinamento, se uma taxa de aprendizado maior for selecionada neste momento, o modelo pode ficar instável (oscilação). Escolha Aquecimento para aquecer a taxa de aprendizado. A taxa de aprendizado em alguns épocas ou algumas etapas no início do treinamento é pequeno. Sob a pequena taxa de aprendizado de aquecimento, o modelo pode se estabilizar gradualmente. Depois que o modelo estiver relativamente estável, selecione a taxa de aprendizado predefinida para o treinamento para fazer o modelo convergir. mais rápido e o efeito do modelo é melhor.
Exemplo : ao usar um ResNet de 110 camadas para treinar em cifar10 no artigo Resnet, primeiro treine com uma taxa de aprendizagem de 0,01 até que o erro de treinamento seja inferior a 80% (cerca de 400 etapas de treinamento) e, em seguida, use uma taxa de aprendizagem de 0,1 para treinamento.
- aquecimento gradual
A desvantagem do aquecimento constante é que mudar de uma taxa de aprendizado pequena para uma taxa de aprendizado relativamente alta pode fazer com que o erro de treinamento aumente repentinamente. Então, em 18 anos, o Facebook propôs um aquecimento gradual para resolver esse problema, ou seja, a partir da pequena taxa de aprendizado inicial, cada etapa aumenta um pouco, até atingir a taxa de aprendizado relativamente grande inicialmente definida, use a taxa de aprendizado inicialmente definida para o treinamento .
1. O código de simulação de implementação de aquecimento gradual é o seguinte:
"""
Implements gradual warmup, if train_steps < warmup_steps, the
learning rate will be `train_steps/warmup_steps * init_lr`.
Args:
warmup_steps:warmup步长阈值,即train_steps<warmup_steps,使用预热学习率,否则使用预设值学习率
train_steps:训练了的步长数
init_lr:预设置学习率
"""
import numpy as np
warmup_steps = 2500
init_lr = 0.1
# 模拟训练15000步
max_steps = 15000
for train_steps in range(max_steps):
if warmup_steps and train_steps < warmup_steps:
warmup_percent_done = train_steps / warmup_steps
warmup_learning_rate = init_lr * warmup_percent_done #gradual warmup_lr
learning_rate = warmup_learning_rate
else:
#learning_rate = np.sin(learning_rate) #预热学习率结束后,学习率呈sin衰减
learning_rate = learning_rate**1.0001 #预热学习率结束后,学习率呈指数衰减(近似模拟指数衰减)
if (train_steps+1) % 100 == 0:
print("train_steps:%.3f--warmup_steps:%.3f--learning_rate:%.3f" % (
train_steps+1,warmup_steps,learning_rate))
2. A taxa de aprendizagem de pré-aquecimento de aquecimento implementada pelo código acima e o gráfico de decadência (sin ou exp decaimento) após a taxa de aprendizagem de pré-aquecimento ser concluída são os seguintes:
4. Métodos comuns de aquecimento
4.1 aquecimento constante
A taxa de aprendizagem aumenta linearmente de um valor muito pequeno para o valor predefinido e, em seguida, permanece inalterada. O coeficiente da taxa de aprendizagem é mostrado na figura abaixo:
4.2 Aquecimento Linear
A taxa de aprendizado aumenta linearmente de um valor muito pequeno para um valor predefinido e, em seguida, diminui linearmente. O coeficiente da taxa de aprendizagem é mostrado na figura abaixo.
4.3 Aquecimento de cosseno
A taxa de aprendizado primeiro aumenta linearmente de um valor pequeno para a taxa de aprendizado predefinida e, em seguida, cos
atenua de acordo com o valor da função. O coeficiente da taxa de aprendizagem é mostrado na figura abaixo.
Este artigo se refere a: [método de ajuste] - taxa de aprendizado de aquecimento e aquecimento