- Terminologia (A a D)
- Controle de capacidade de IA
- AIOps
- Albumentações
- Desempenho dos Ativos
- Codificador automático
- Retropropagação
- Teorema de Bayes
- Big Data
- Chatbot: um guia para iniciantes
- Pensamento Computacional
- Visão de Computador
- Matriz de Confusão
- Redes Neurais Convolucionais
- Cíber segurança
- Tecido de dados
- Contação de histórias de dados
- Ciência dados
- Data warehousing
- Árvore de decisão
- Deepfakes
- Aprendizagem profunda
- Aprendizagem por Reforço Profundo
- devops
- DevSecOps
- Modelos de Difusão
- Digital Twin
- Redução de dimensionalidade
- Terminologia (E a K)
- IA de borda
- Emoção AI
- Ensemble Learning
- Ethical Hacking
- ETL
- IA explicável
- Aprendizagem Federada
- FinOps
- IA generativa
- Rede Adversarial Geradora
- Generativo vs. Discriminativo
- Intensificação de Gradiente
- Gradiente descendente
- Aprendizagem de poucos tiros
- Classificação de imagens
- Operações de TI (ITOps)
- Automação de Incidentes
- Engenharia de influência
- K-significa clusters
- Vizinhos mais próximos
- Terminologia (L a Q)
- Terminologia (R a Z)
- Aprendizagem por Reforço
- IA responsável
- RLHF
- Automação de Processo Robótica
- Estruturado x Não Estruturado
- Análise de Sentimentos
- Supervisionado x Não supervisionado
- Máquinas de vetor de suporte
- Dados Sintéticos
- Mídia Sintética
- Classificação de Texto
- TinyML
- Aprendizagem por transferência
- Redes Neurais Transformadoras
- Teste de Turing
- Pesquisa de semelhança vetorial
AI 101
O que é descida de gradiente?
Índice analítico
O que é uma descida de gradiente?
Se você leu sobre como as redes neurais são treinadas, é quase certo que já se deparou com o termo “gradiente descendente” antes. Gradiente descendente é o principal método de otimizar o desempenho de uma rede neural, reduzindo a taxa de perdas/erros da rede. No entanto, a descida gradiente pode ser um pouco difícil de entender para aqueles que são novos no aprendizado de máquina, e este artigo se esforçará para fornecer uma intuição decente sobre como funciona a descida gradiente.
A descida do gradiente é um algoritmo de otimização. É usado para melhorar o desempenho de uma rede neural fazendo ajustes nos parâmetros da rede de forma que a diferença entre as previsões da rede e os valores reais/esperados da rede (referidos como perda) seja a menor possível. A descida do gradiente pega os valores iniciais dos parâmetros e usa operações baseadas em cálculo para ajustar seus valores aos valores que tornarão a rede o mais precisa possível. Você não precisa saber muito de cálculo para entender como funciona a descida de gradiente, mas precisa ter uma compreensão de gradientes.
O que são gradientes?
Suponha que haja um gráfico que represente a quantidade de erros que uma rede neural comete. A parte inferior do gráfico representa os pontos de menor erro, enquanto a parte superior do gráfico é onde o erro é maior. Queremos ir do topo do gráfico para baixo. Um gradiente é apenas uma forma de quantificar a relação entre o erro e os pesos da rede neural. A relação entre essas duas coisas pode ser representado graficamente como uma inclinação, com pesos incorretos produzindo mais erros. A inclinação da inclinação/gradiente representa a rapidez com que o modelo está aprendendo.
Uma inclinação mais acentuada significa que grandes reduções no erro estão sendo feitas e o modelo está aprendendo rapidamente, enquanto se a inclinação for zero, o modelo está em um platô e não está aprendendo. Podemos descer a inclinação para menos erro calculando um gradiente, uma direção de movimento (mudança nos parâmetros da rede) para o nosso modelo.
Vamos mudar um pouco a metáfora e imaginar uma série de colinas e vales. Queremos chegar ao sopé da colina e encontrar a parte do vale que representa a menor perda. Quando começamos no topo da colina, podemos dar grandes passos descendo a colina e ter a certeza de que estamos indo em direção ao ponto mais baixo do vale.
No entanto, à medida que nos aproximamos do ponto mais baixo do vale, nossos passos precisarão se tornar menores, ou então poderemos ultrapassar o verdadeiro ponto mais baixo. Da mesma forma, é possível que, ao ajustar os pesos da rede, os ajustes possam realmente afastá-la do ponto de menor perda e, portanto, os ajustes devem diminuir com o tempo. No contexto de descer uma colina em direção a um ponto de menor perda, o gradiente é um vetor/instruções detalhando o caminho que devemos seguir e o tamanho de nossos passos.
Agora que sabemos que gradientes são instruções que nos dizem em qual direção mover (quais coeficientes devem ser atualizados) e quão grandes são os passos que devemos dar (quanto os coeficientes devem ser atualizados), podemos explorar como o gradiente é calculado.
Calculando gradientes e descida de gradiente
Para realizar a descida do gradiente, os gradientes devem primeiro ser calculados. Em ordem para calcular o gradiente, precisamos conhecer a função perda/custo. Usaremos a função de custo para determinar a derivada. Em cálculo, a derivada refere-se apenas à inclinação de uma função em um determinado ponto, então estamos basicamente calculando a inclinação da colina com base em a função de perda. Determinamos a perda executando os coeficientes através da função de perda. Se representarmos a função de perda como “f”, podemos afirmar que a equação para calcular a perda é a seguinte (estamos apenas executando os coeficientes por meio de nossa função de custo escolhida):
Perda = f(coeficiente)
Em seguida, calculamos a derivada ou determinamos a inclinação. Obter a derivada da perda nos dirá qual direção é para cima ou para baixo na inclinação, dando-nos o sinal apropriado para ajustar nossos coeficientes. Representaremos a direção apropriada como “delta”.
delta = função_derivativa(perda)
Agora determinamos qual direção é descendente em direção ao ponto de menor perda. Isso significa que podemos atualizar os coeficientes nos parâmetros da rede neural e, com sorte, reduzir a perda. Atualizaremos os coeficientes com base nos coeficientes anteriores menos a alteração apropriada no valor conforme determinado pela direção (delta) e um argumento que controla a magnitude da alteração (o tamanho do nosso passo). O argumento que controla o tamanho da atualização é chamado de “taxa de Aprendizagem” e vamos representá-lo como “alfa”.
coeficiente = coeficiente – (alfa * delta)
Em seguida, apenas repetimos esse processo até que a rede tenha convergido em torno do ponto de menor perda, que deve ser próximo de zero.
É muito importante escolher o valor certo para a taxa de aprendizado (alfa). A taxa de aprendizado escolhida não deve ser nem muito pequena nem muito grande. Lembre-se de que, à medida que nos aproximamos do ponto de menor perda, nossos passos devem se tornar menores ou então ultrapassaremos o verdadeiro ponto de menor perda e acabaremos do outro lado. O ponto de menor perda é pequeno e se nossa taxa de variação for muito grande o erro pode acabar aumentando novamente. Se os tamanhos dos passos forem muito grandes, o desempenho da rede continuará oscilando em torno do ponto de menor perda, ultrapassando-o de um lado e depois do outro. Se isso acontecer, a rede nunca convergirá para a verdadeira configuração de peso ideal.
Em contraste, se a taxa de aprendizado for muito pequena, a rede pode levar um tempo extraordinariamente longo para convergir para os pesos ideais.
Tipos de gradiente descendente
Agora que entendemos como o gradiente descendente funciona em geral, vamos dar uma olhada em alguns dos diferentes tipos de gradiente descendente.
Batch Gradient Descent: Esta forma de gradiente descendente percorre todas as amostras de treinamento antes de atualizar os coeficientes. Esse tipo de descida de gradiente provavelmente é a forma computacionalmente mais eficiente de descida de gradiente, pois os pesos são atualizados apenas quando todo o lote é processado, o que significa que há menos atualizações no total. No entanto, se o conjunto de dados contiver um grande número de exemplos de treinamento, a descida do gradiente em lote poderá fazer com que o treinamento demore muito.
Descida de Gradiente Estocástico: Na Descida de Gradiente Estocástico, apenas um único exemplo de treinamento é processado para cada iteração de descida de gradiente e atualização de parâmetro. Isso ocorre para cada exemplo de treinamento. Como apenas um exemplo de treinamento é processado antes que os parâmetros sejam atualizados, ele tende a convergir mais rapidamente do que o Batch Gradient Descent, pois as atualizações são feitas antes. No entanto, como o processo deve ser executado em todos os itens do conjunto de treinamento, pode levar muito tempo para ser concluído se o conjunto de dados for grande e, portanto, use um dos outros tipos de descida de gradiente, se preferir.
Mini-Batch Gradient Descent: Mini-Batch Gradient Descent opera dividindo todo o conjunto de dados de treinamento em subseções. Ele cria mini-lotes menores que são executados pela rede e, quando o mini-lote é usado para calcular o erro, os coeficientes são atualizados. A Descida Gradiente Mini-lote atinge um meio termo entre a Descida Gradiente Estocástica e a Descida Gradiente Batch. O modelo é atualizado com mais frequência do que no caso do Batch Gradient Descent, o que significa uma convergência ligeiramente mais rápida e robusta nos parâmetros ideais do modelo. Também é mais eficiente computacionalmente do que a descida de gradiente estocástica
Blogueiro e programador com especialidades em Machine Learning e Aprendizagem profunda tópicos. Daniel espera ajudar outras pessoas a usar o poder da IA para o bem social.
Você pode gostar
Deep Learning x Redes Neurais
Novo modelo cerebral neurocomputacional pode avançar na pesquisa de IA
Equipe desenvolve abordagem para comparar redes neurais
Tecnologia de hardware AI imita mudanças na topologia da rede neural
Autenticação biométrica por ranger os dentes
Componente de computador imita sinapses do cérebro humano