Gradient Descent

O que é Gradient Descent?

A descida de gradiente é de fato um dos algoritmos de otimização mais amplamente usados no treinamento de modelos de aprendizado profundo e aprendizado de máquina. Por meio de ajustes iterativos nos parâmetros do modelo, a descida de gradiente visa minimizar a função de custo, atingindo o valor ideal. Este processo iterativo permite que o modelo melhore progressivamente à medida que aprende com cada atualização de parâmetros. O algoritmo continua a ajustar os parâmetros até a função convergir para um ponto de erro mínimo, facilitando o refinamento do desempenho do modelo.

Tipos de Gradiente Descendente

Existem três tipos de descida de gradiente usados no treinamento de redes neurais: lote, estocástico e mini-lote.

Descida de gradiente em lote

O Batch gradient descent tem que, em primeiro lugar, avaliar todas as amostras de treinamento e calcular os erros cumulativos antes de modificar o modelo.

É uma forma eficaz de treinar modelos devido ao fluxo preciso do processo. No entanto, pode levar a um tempo de computação mais longo para conjuntos de dados maiores. Digamos que temos um milhão de amostras para avaliar; a descida de gradiente em lote executará um milhão de épocas para encontrar o erro em cada amostra, após o que os soma e, em seguida, utiliza a derivada para ajustar o modelo. Isso levará muito tempo para ser concluído.

Descida de Gradiente Estocástico

Ao contrário da descida de gradiente em lote, a descida de gradiente estocástica avalia cada amostra de treinamento uma de cada vez e ajusta imediatamente o modelo em vez de esperar para somar todo o erro.

A descida gradiente estocástica requer menos memória do que a descida gradiente em lote, uma vez que só precisa de guardar uma amostra de cada vez na memória. É melhor para sair de mínimos locais devido às suas muitas actualizações. No entanto, a descida gradiente estocástica é melhor na aprendizagem, porque recebe todos os dados de uma só vez.

Descida de gradiente em mini-lote

A descida de gradiente em mini-lote cria um equilíbrio entre a descida de gradiente em lote e a descida de gradiente estocástica, combinando os dois conceitos. Divide o conjunto de dados de treino em lotes mais pequenos, permitindo-lhe efetuar actualizações em cada lote de uma só vez. Com a eficiência de computação da descida gradiente em lote e a velocidade da descida gradiente estocástica, pode obter o melhor das suas amostras de treino.

Papel da descida de gradiente na aprendizagem automática

A descida de gradiente desempenha um papel significativo na aprendizagem automática (ML), particularmente na formação de modelos ML para determinar os valores óptimos para as suas funções de perda. Trata-se de um algoritmo que funciona através do ajuste iterativo de um determinado conjunto de parâmetros (enviesamentos/pesos) que requerem otimização. Esta técnica visa aperfeiçoar continuamente estes parâmetros de modo a encontrar o melhor valor ou o valor ótimo dentro da função.

Ao utilizar a descida gradiente, os modelos ML melhoram a sua precisão de previsão com cada iteração de ajustes de parâmetros. Consequentemente, este processo iterativo tem como objetivo minimizar a disparidade entre os resultados previstos e os resultados reais, levando à assimilação de novos padrões pelo modelo.

Como funciona o algoritmo Gradient Descent?

Em termos técnicos, a descida de gradiente é uma técnica de otimização que encontra o mínimo local ou global em uma [função de custo] (https://www.simplilearn.com/tutorials/machine-learning-tutorial/cost-function-in-machine-learning). A lógica matemática por trás da descida do gradiente é ajustar o parâmetro em uma direção que reduz o valor da função com base no parâmetro inicial e na inclinação.

A descida de gradiente é um algoritmo de formação muito poderoso que pode ser aplicado à aprendizagem profunda e a várias lógicas de aprendizagem automática, como redes neurais, regressão linear e regressão logística. Ao otimizar conjuntos de dados utilizando uma estrutura de elevado rendimento, a descida de gradiente devolve o custo mais baixo de uma função.

Agora, a questão é: como é que o gradiente descendente sabe em que direção deve ir (declive), que passo deve dar em cada iteração (taxa de aprendizagem) e quando é que pára de aprender (mínimo local ou global)?

Explicação passo a passo

Parâmetro inicial: Digamos, por exemplo, que está à procura de casa e quer saber quanto custarão todas as casas em que está interessado. Para obter um intervalo de preços, deve ter em conta a zona onde se situam as casas, o tamanho das casas, etc. Ao analisar todos estes parâmetros, deve chegar a uma estimativa de preços que o pode orientar para os preços reais. Depois de prever um intervalo de preços, o gradiente descendente passa a otimizar o preço previsto para obter o preço real. Nos modelos de aprendizagem automática, em vez de o preço ser o parâmetro, são utilizados pesos ou enviesamentos.

Função de custo: Agora que temos um parâmetro inicial como o preço previsto, precisamos de definir uma função de custo que podemos utilizar para medir o erro entre o nosso valor inicial e o valor real ou esperado. O objetivo da função de custo é quantificar o quão boa ou má é uma previsão em relação ao seu valor definitivo, permitindo que o modelo ajuste continuamente o seu parâmetro até chegar ao ponto de erro mais baixo.

Inclinação: A inclinação ou gradiente indica o caminho e a enormidade da forma como a função de custo se irá orientar a partir da posição atual. Aponta na direção do aumento mais significativo da função de custo.

NP = OP - SS

SSS = Taxa de aprendizagem x declive

A fórmula para otimização em Gradient Descent

Matematicamente, a fórmula para alcançar a descida de gradiente é NP = OP - SS. NP é o novo parâmetro, OP é o antigo parâmetro, e SS é o tamanho do passo ou taxa de aprendizado x inclinação. A taxa de aprendizagem é o tamanho do passo necessário para que a descida do gradiente se mova na direção do mínimo local. Por exemplo, se estiver a caminhar para o trabalho a partir de casa e estiver atrasado, dará passos maiores porque está a tentar chegar ao trabalho a tempo, mas assim que começar a aproximar-se do escritório, o tamanho do passo diminui porque está quase a chegar ao seu destino (mínimo local). Estes passos são o que a taxa de aprendizagem representa.

Desafios da Descida de Gradiente

Apesar de ser um dos algoritmos de otimização mais poderosos, o gradiente descendente tem alguns desafios que podem prejudicar o seu desempenho. Alguns deles são os seguintes:

  • Mínimo local: O gradiente descendente tende a confundir o mínimo local com o mínimo global, especialmente no caso de haver mais de um pico ou ponto de sela. Normalmente, o gradiente de descida pára de aprender quando a função de custo atinge o seu mínimo ou zero. No entanto, quando se trata de um declive com um ponto de sela contínuo, a descida do gradiente precisa de convergir para o [mínimo global em vez do mínimo local] (https://vitalflux.com/local-global-maxima-minima-explained-examples/).
  • Gradiente de desaparecimento:** Um gradiente de desaparecimento ocorre devido ao facto de o gradiente ser demasiado pequeno. À medida que o gradiente retropropaga, torna-se mais pequeno, resultando assim num processo de aprendizagem mais lento para o gradiente. Quando isto continua a acontecer, os parâmetros de peso são actualizados e tornam-se gradualmente insignificantes, fazendo com que a descida do gradiente pare de aprender, o que é referido como gradiente de desaparecimento.
  • Gradiente explosivo:** Um gradiente explosivo, por outro lado, acontece quando o gradiente é demasiado grande, resultando na instabilidade do modelo. No caso de um gradiente explosivo, é possível utilizar uma técnica de redução da dimensionalidade, que ajuda a minimizar a complexidade do modelo.

Perguntas frequentes

O que significa Gradient Descent em IA?

Em termos simples, a descida de gradiente é um algoritmo que minimiza uma função de custo através da otimização dos seus parâmetros. Ele é usado para treinar modelos de [aprendizado de máquina] (https://www.ibm.com/topics/machine-learning) e redes neurais para reduzir a taxa de erro em seu conjunto de dados, iterando continuamente seus parâmetros até atingir o ponto de convergência.

Cada formação começa com um palpite aleatório, após o que a descida do gradiente pega nesse palpite e optimiza-o, modificando continuamente o seu parâmetro em relação às derivadas, até atingir o ponto de erro mais baixo ou uma função de custo reduzida.

A Descida de Gradiente é útil?

Apesar de certos desafios, a descida de gradiente continua sendo um dos algoritmos de otimização mais eficazes para aprendizado profundo e treinamento de modelo. Embora a descida gradiente possua várias qualidades favoráveis como um algoritmo de otimização, sua adequação pode variar dependendo do contexto e do problema em questão. Algumas das vantagens que obtém com a descida de gradiente são:

  • Eficiência
  • Aceitação
  • Versatilidade
  • Paralelização
  • Fiabilidade
  • Facilidade de computação