Como Alterar a Taxa de Aprendizado do TensorFlow

Uma biblioteca de software de código aberto para inteligência artificial e aprendizado de máquina é chamada de TensorFlow. Embora possa ser aplicada a muitas tarefas, o treinamento e a inferência de redes neurais profundas recebem atenção especial.

O Google Brain, divisão de pesquisa de inteligência artificial da empresa, criou o TensorFlow. Desde seu lançamento inicial em 2015, cresceu para se tornar uma das bibliotecas de aprendizado de máquina mais amplamente utilizadas em todo o mundo.

Python, C++ e Java são apenas alguns dos idiomas de programação com os quais o TensorFlow é acessível. Além disso, é compatível com vários sistemas operacionais, incluindo Linux, macOS, Windows, Android e iOS.

O TensorFlow é uma ferramenta eficaz para aprendizado de máquina e inteligência artificial. Oferece muitas funcionalidades e é fácil de usar. O TensorFlow é um excelente ponto de partida se você estiver interessado em aprendizado de máquina.

O TensorFlow é uma biblioteca flexível que pode ser aplicada a muitos tipos de tarefas, como:

  • Classificação de imagens
  • Processamento de linguagem natural
  • Reconhecimento de fala
  • Sistemas de recomendação
  • Robótica
  • Imagem médica
  • Previsão financeira

A taxa de aprendizado no TensorFlow é um hiperparâmetro que regula a frequência com que os pesos do modelo são alterados durante o treinamento. O melhor valor vai variar dependendo das particularidades do problema a ser resolvido, da arquitetura do modelo e do tamanho do conjunto de dados. Geralmente é escolhido como um valor positivo pequeno, como 0,001 ou 0,01, mas nem sempre é esse o caso.

Como Alterar a Taxa de Aprendizado do TensorFlow

Você pode alterar a taxa de aprendizado no TensorFlow usando vários métodos e estratégias. Aqui estão três abordagens típicas:

Atribuição Manual da Taxa de Aprendizado

Mudando a taxa de aprendizado manualmente inserindo um novo valor na variável de taxa de aprendizado, é possível alterar a taxa de aprendizado de maneira mais simples. Este método especifica a taxa de aprendizado como uma variável TensorFlow ou uma variável Python, e seu valor é atualizado durante o treinamento. Por exemplo:

Python

 

import tensorflow as tf

# Defina a variável de taxa de aprendizado
learning_rate = tf.Variable(0.001, trainable=False)

# Durante o treinamento, atualize a taxa de aprendizado conforme necessário
# Por exemplo, defina uma nova taxa de aprendizado de 0,0001
tf.keras.backend.set_value(learning_rate, 0.0001)

O código acima explica como inserir manualmente um novo valor na variável de taxa de aprendizado do TensorFlow para alterar a taxa de aprendizado. As etapas são listadas abaixo:

Defina a variável para a taxa de aprendizado:

Python

 

learning_rate = tf.Variable(0.001, trainable=False)

Esta linha cria uma variável TensorFlow chamada learning_rate e a inicializa com um valor inicial de 0,001. O argumento trainable=False garante que a variável de taxa de aprendizado não seja atualizada durante o treinamento.

Atualize a taxa de aprendizado conforme necessário:

Python

 

tf.keras.backend.set_value(learning_rate, 0.0001)

Neste exemplo, a função set_value de tf.keras.backend é usada para atualizar o valor da variável de taxa de aprendizado. O primeiro argumento é a variável a ser atualizada (learning_rate), e o segundo argumento é o novo valor da taxa de aprendizado (0.0001 neste caso).

Você pode regular quando e como a taxa de aprendizado muda atualizando manualmente a variável de taxa de aprendizado durante o treinamento. Você pode experimentar diferentes configurações, alterar a taxa de aprendizado com base em circunstâncias específicas ou até mesmo criar seu próprio plano de taxa de aprendizado.

Neste método, você tem controle total sobre a taxa de aprendizado, mas deve modificá-la manualmente de acordo com suas necessidades.

Escalonamentos de Taxa de Aprendizado

Você pode alterar sistematicamente a taxa de aprendizado durante o treinamento usando escalonamentos de taxa de aprendizado. Vários escalonamentos de taxa de aprendizado integrados estão disponíveis no TensorFlow, incluindo:

tf.keras.optimizers.schedules.ExponentialDecay, tf.keras.optimizers.schedules.PiecewiseConstantDecay, ou tf.keras.optimizers.schedules.CosineDecay. Esses cronogramas alteram o ritmo de aprendizado por regras predeterminadas. Por exemplo:

Python

 

import tensorflow as tf

# Defina um escalonamento de taxa de aprendizado
learning_rate_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
    initial_learning_rate=0.001,
    decay_steps=10000,
    decay_rate=0.96
)

# Crie um otimizador com o escalonamento de taxa de aprendizado
optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate_schedule)

O trecho de código acima demonstra como usar o escalonamento de taxa de aprendizado ExponentialDecay no TensorFlow. Aqui está uma explicação do que cada parâmetro faz:

  • initial_learning_rate: A taxa de aprendizado inicial no início do treinamento.
  • decay_steps: O número de passos após os quais a taxa de aprendizado será decaída.
  • decay_rate: A taxa na qual a taxa de aprendizado será decaída. Por exemplo, se decay_rate for definido como 0.96, a taxa de aprendizado será multiplicada por 0.96 a cada decay_steps passo.

Para criar um otimizador com o cronograma de taxa de aprendizado, você passaria o objeto learning_rate_schedule como o parâmetro learning_rate para o otimizador. No seu código, você está usando o otimizador Adam, mas você também pode usar este cronograma de taxa de aprendizado com outros otimizadores.

Ao usar o cronograma de taxa de aprendizado ExponentialDecay, a taxa de aprendizado diminuirá gradualmente ao longo do tempo, permitindo que o modelo convirja de forma mais eficaz durante o treinamento. Ajuste os valores de initial_learning_rate, decay_steps e decay_rate de acordo com seus requisitos específicos e as características de seus dados de treinamento.

Este método elimina a necessidade de intervenção manual ajustando automaticamente a taxa de aprendizado com base no cronograma definido.

Callbacks

O TensorFlow também fornece um mecanismo de callback que permite modificar a taxa de aprendizado dinamicamente com base em certas condições. Por exemplo, você pode usar o callback tf.keras.callbacks.LearningRateScheduler para definir um cronograma de taxa de aprendizado personalizado ou o callback tf.keras.callbacks.ReduceLROnPlateau para reduzir a taxa de aprendizado quando a perda de validação entra em platô. Aqui está um exemplo:

Python

 

import tensorflow as tf

# Defina uma callback para modificar a taxa de aprendizado dinamicamente
lr_callback = tf.keras.callbacks.ReduceLROnPlateau(
    monitor='val_loss',
    factor=0.1,
    patience=5,
    min_lr=0.0001
)

# Durante o treinamento do modelo, passe a callback para a função fit()
model.fit(
    x_train, y_train,
    validation_data=(x_val, y_val),
    callbacks=[lr_callback]
)

O trecho de código acima demonstra como usar a callback ReduceLROnPlateau para modificar a taxa de aprendizado dinamicamente durante o treinamento do modelo. Aqui está uma explicação do que cada parâmetro faz:

  • monitor: A métrica a ser monitorada. Neste caso, está definida como val_loss,’ o que significa que a callback monitorará a perda de validação.
  • factor: O fator resultante em uma diminuição na taxa de aprendizado. Se a condição fornecida for satisfeita, por exemplo, se o fator estiver definido como 0.1, a taxa de aprendizado será multiplicada por 0.1.
  • patience: O número de épocas sem melhoria, após o qual a taxa de aprendizado será reduzida. Se a perda de validação não melhorar pelo número de épocas definido em patience, a taxa de aprendizado será diminuída.
  • min_lr: O valor mínimo para o qual a taxa de aprendizado pode ser reduzida. Uma vez que a taxa de aprendizado atinge esse valor mínimo, não será mais reduzida.

Para usar essa callback, você a passaria como parâmetro para a função fit() ao treinar seu modelo. Certifique-se de substituir x_train, y_train, x_val e y_val pelos seus dados de treinamento e validação reais.

Python

 

model.fit(
    x_train, y_train,
    validation_data=(x_val, y_val),
    callbacks=[lr_callback]
)

Durante o treinamento, o callback ReduceLROnPlateau monitora a perda de validação, e se ela não melhorar por patience número de épocas, a taxa de aprendizado será reduzida pelo especificado fator. Isso permite ajuste adaptativo da taxa de aprendizado com base no desempenho do modelo durante o treinamento.

Com callbacks, você tem maior liberdade para modificar a taxa de aprendizado em resposta a circunstâncias ou eventos específicos durante o treinamento.

Essas são algumas maneiras típicas de modificar a taxa de aprendizado do TensorFlow. O método que você usa dependerá dos requisitos e casos de uso que você tem.

Conclusão

A melhor programação de taxa de aprendizado do seu modelo dependerá dos dados e da arquitetura do modelo. Você pode experimentar diferentes programagens para encontrar a que funciona melhor para o seu modelo.

Source:
https://dzone.com/articles/how-to-change-the-learning-rate-of-tensorflow