A descida gradual é indiscutivelmente a estratégia de optimização mais bem reconhecida utilizada na aprendizagem profunda e na aprendizagem de máquinas. Os cientistas de dados utilizam-na frequentemente quando existe a possibilidade de combinar cada algoritmo com modelos de treino. A compreensão do algoritmo de descida de gradiente é relativamente simples, e a sua implementação é ainda mais simples. Vamos discutir o funcionamento interno da descida de gradiente, os seus diferentes tipos, e as suas vantagens.

O que é a descida de gradiente?

Os programadores utilizam a descida de gradiente como um algoritmo de optimização quando treinam modelos de aprendizagem de máquinas. Com base em funções convexas, a descida de gradiente ajusta iterativamente alguns dos seus parâmetros para minimizar uma determinada função ao seu mínimo.
Os cientistas de dados utilizam a descida de gradiente para encontrar os valores dos parâmetros de uma função que reduzem ao máximo as funções de custo. Começam por estabelecer os valores dos parâmetros iniciais. A descida de gradiente utiliza o cálculo para ajustar iterativamente os valores para minimizar uma função de custo específica. É preciso saber o que são os gradientes para compreender completamente a descida de gradiente.

Compreender o gradiente

A principal função de um gradiente é medir as alterações em cada peso no que diz respeito à alteração dos erros. Pense nos gradientes como a inclinação de uma função. O declive será mais acentuado com base na altura do gradiente – é uma condição favorável para os modelos, uma vez que podem aprender rapidamente. No entanto, o modelo interromperá a aprendizagem se a inclinação se tornar zero. Matematicamente falando, um declive poderia ser melhor descrito como uma derivada limitada no que diz respeito aos seus inputs.
Pense numa pessoa de olhos vendados que queira subir o topo de uma colina com um esforço mínimo. O mais provável é que dê longos passos em direcção à direcção mais íngreme possível. No entanto, os passos desta pessoa tornar-se-ão menores para evitar a ultrapassagem. Pode usar o gradiente para descrever este processo matematicamente.
Os gradientes que começam em X0 e terminam em X1 são significativamente mais longos do que os que começam em X3 e terminam em X4. Porquê? Porque a inclinação da colina determina o comprimento do vector. Proporciona uma representação ideal da analogia da colina discutida anteriormente, uma vez que se torna menos inclinada à medida que a pessoa sobe mais alto.

Como é que a descida gradual funciona?

Em vez de subir uma colina, imagine a descida de gradiente como descer até ao fundo de um vale. Compreender esta analogia é mais simples, pois é um algoritmo de minimização que diminui uma função específica. Compreendamos a descida de gradiente com a ajuda de uma equação:
b representa a próxima posição do alpinista
a significa a sua posição actual
menos refere-se à parte da minimização do declive
A gama localizada no centro representa um factor de espera
(Δf (a) ) significa a direcção da descida mais íngreme

Pode confundir-se inicialmente com esta fórmula, mas ela é mais simples do que se pensa. Ela informa-nos sobre a próxima posição que devemos seguir: a direcção da descida.

Porque é que a Taxa de Aprendizagem é tão importante?

É essencial fixar as taxas de aprendizagem aos seus valores apropriados para ajudar a descida gradiente a atingir os mínimos locais. Portanto, seria melhor não os fixar excessivamente altos ou baixos. É fundamental porque atingir o mínimo pode tornar-se complicado com passos excessivamente longos. Portanto, se estabelecermos taxas de aprendizagem para valores mais pequenos, a descida de gradiente poderia eventualmente chegar aos seus mínimos locais. No entanto, pode levar algum tempo.

Como assegurar o seu funcionamento óptimo

Uma excelente forma de assegurar funções de descida gradiente de forma óptima é organizando a função de custos enquanto a optimização está a decorrer. Introduza a quantidade de repetições no eixo X, e o valor da função de custo irá entrar no eixo y. Ajudá-lo-á a ver o valor da função de custo após a iteração de cada descida de gradiente, ao mesmo tempo que lhe permitirá detectar a precisão da taxa de aprendizagem. Também pode tentar vários valores e traçar em conjunto.
A função de custo será reduzida após cada iteração se a descida de gradiente estiver a funcionar de forma óptima. A descida de gradiente converge quando não consegue reduzir o funcionamento do custo e permanece no mesmo nível. A quantidade de descidas de gradiente de iterações necessárias para a convergência varia drasticamente. Por vezes leva cinquenta iterações, e outras vezes pode chegar a dois ou três milhões. Causa dificuldade ao estimar as iterações antes do tempo.
Alguns algoritmos podem informar automaticamente se houve uma convergência na descida de gradiente. Contudo, seria melhor estabelecer um limiar de convergência com antecedência, o que também é bastante difícil de estimar. É uma razão significativa pela qual as parcelas simples são melhores para os testes de convergência.

Diferentes tipos de descendência de gradientes

Encontrará três tipos de descida de gradiente bem reconhecidos. Vamos dar-lhes uma vista de olhos atenta:

Descida de Gradiente por Lote

Também conhecida como descida de gradiente de baunilha, a descida de gradiente de lote calcula erros para cada exemplo no conjunto de dados de formação. No entanto, só o faz após cada exemplo de treino passar por uma avaliação rigorosa. É justo comparar este processo com um ciclo. Alguns indivíduos também se referem a um ciclo de formação.
A descida por gradiente de lotes tem várias vantagens. A sua eficiência computacional, em particular, é extremamente útil à medida que desenvolve uma convergência estável e um gradiente de erro estável. Dito isto, a descida de gradiente do lote tem também algumas desvantagens. Por vezes, o seu gradiente de erro estável pode resultar num estado de convergência desfavorável. Além disso, também necessita da presença do conjunto de dados de formação no seu algoritmo e memória.

Descida de Gradiente Estocástico

O SGD fornece actualizações de parâmetros individuais para cada exemplo de formação. Ajuda a dar atenção a cada exemplo, assegurando que o processo está livre de erros. Dependendo da questão, isto pode ajudar o SGD a tornar-se mais rápido em comparação com a descida do gradiente do lote. As suas actualizações regulares fornecem-nos taxas de melhoria detalhadas.
Dito isto, estas actualizações são computacionalmente caras, especialmente quando as comparamos com a abordagem utilizada pela descida de gradiente de lote. Além disso, a frequência da actualização pode causar gradientes ruidosos e pode impedir que a taxa de erro diminua. Em vez disso, a taxa de erro salta de um lado para o outro e torna-se problemática a longo prazo.

Descida do Gradiente de Mini-Lote

Os cientistas de dados utilizam a descida por gradiente de mini-batch como método de descida. Porquê? Porque é uma mistura perfeita de descida de gradiente estocástico e dos conceitos de descida de gradiente de lote. Divide os conjuntos de dados (treino) em lotes e faz uma actualização para cada lote, criando um equilíbrio entre a eficiência do BGD e a robustez do SCD.
Os mini-batches populares variam entre cinquenta e duzentos e cinquenta e seis, mas tal como vários outros métodos de aprendizagem de máquinas, não existem regras claras, uma vez que varia de uma aplicação para outra. As pessoas utilizam-no como uma opção de treino de redes neurais. É também um tipo de descida de gradiente popular dentro da paisagem de aprendizagem profunda.