Em Redes neurais – Parte 1 conhecemos o funcionamento de um neurônio artificial. Mas ficamos com a dúvida: de onde se original os valores utilizados inicialmente para os pesos e viés? A partir desta resposta, iniciamos este documento.
As redes neurais dependem enormemente de dois algoritmos essenciais: retropropagação e gradiente descendente. Além disso, o treinamento das redes neurais é um processo de otimização, envolvendo o aprendizado dos pesos e vieses que melhor se ajustam aos dados de treinamento.
O algoritmo geral de treinamento adota as seguintes etapas:
- Seleciona a arquitetura do modelo, incluindo o número de camadas ocultas, nós por camada e função de ativação.
- Inicializa de forma aleatória – mas inteligente – os pesos e vieses associados à arquitetura selecionada.
- Executa os dados de treinamento – ou um subconjunto – por meio do modelo e calcula o erro médio. Trata-se da passagem da forward pass.
- Usa a retropropagação para determinar quanto cada peso e viés contribui para esse erro.
- Atualiza os pesos e vieses segundo o algoritmo de gradiente descendente. A etapa anterior se refere à backward pass.
- Repete tudo da etapa 3 em diante, até que a rede seja considerada “boa o suficiente”.
E aqui esclarecemos alguns conceitos importantes desse processo:
- Arquitetura: o número de camadas, geralmente as camadas ocultas, usadas pela rede.
- Algoritmo: indica que o treinamento é um processo iterativo, repetido diversas vezes.
- Erro médio: Se enviarmos todos os dados de treinamento pela rede, ou um subconjunto representativo dele, podemos calcular o erro para cada amostra de treinamento e encontrar a média de todo o conjunto de treinamento. Quanto menor esse erro, melhor o modelo classifica a amostra. Essa é a medida a ser utilizada pelos algoritmos de retropropagação e de gradiente descendente para atualizar os pesos e vieses.
- Rede estar “boa o suficiente”: deve-se evitar que a rede sofra sobreajuste, quando ela aprende todos os detalhes dos dados de treinamento sem realmente aprender o que deveria para apresentar um bom desempenho.
No passado, a inicialização de peso significava escolher um pequeno número aleatório. Boa parte do tempo essa abordagem funcionava, mas não de forma consistente. Após o avanço do deep learning, pesquisadores voltaram à ideia da escolha do pequeno número aleatório, mas dessa vez considerando alguns princípios de inicialização. Precisamos considerar três fatores: a forma da função de ativação, o número de conexões provenientes da camada abaixo (fan-in) e o número de saídas para a camada acima (fan-out). Fórmulas foram elaboradas para usar todos os três fatores a fim de selecionar os pesos iniciais de cada camada. Em geral, os valores de viés são inicializados como zero. Ainda temos duas etapas do algoritmo de treinamento para analisar: retropropagação e gradiente descendente.
Gradiente descendente
O gradiente descendente é utilizado para ajustar os parâmetros de um modelo de IA. Seu objetivo é encontrar o mínimo de uma função – normalmente conhecido como função de custo ou função de perda – que mede o quão ruim está o desempenho do modelo.
Imagine que você está numa montanha, com uma venda nos olhos, tentando chegar até o ponto mais baixo do vale.
- A altura da montanha representa o erro do modelo.
- Sua posição na montanha representa os valores atuais dos parâmetros do modelo.
- Você sente a inclinação do chão para decidir para onde dar o próximo passo. Esse passo é o gradiente. Se seu pé sente que a inclinação é mais acentuada, você dá um passo maior em direção ao mínimo.
- Você quer sempre descer a montanha, não subir — por isso se move na direção oposta ao gradiente.
Imagine a função de custo como um U. O ponto mais baixo do U é o mínimo. Se você começar de um ponto na borda do U (com pesos aleatórios), o gradiente vai te dizer: “Ei, aqui está subindo! Vai pro outro lado!”. Então você dá um passo naquela direção. Repete isso até parar no fundo do U.
O mundo tridimensional da montanha corresponde ao mundo n-dimensional da rede, onde n é o número total de pesos e vieses, para os quais estamos buscando os melhores valores. Escolher a direção a seguir e caminhar um pouco nesse rumo é um passo (step) do algoritmo. Passos seguidos aproximam você do vale que está buscando. Este “vale” é a posição mínima buscada, onde existe o menor erro do conjunto de treinamento.
O imenso campo da montanha representa a função do erro, o erro médio em relação aos dados de treinamento ao usar os valores de peso e viés de sua posição atual. Cada posição na montanha representa um conjunto completo de valores para pesos e viés. A posição do vale corresponde ao menor erro que a rede pode cometer.
Entendemos então como funciona o treinamento da rede neural:
- O conjunto inicial de pesos e vieses é o ponto de partida em um espaço de n dimensões.
- O gradiente descente segue em direção ao mínimo.
- Cada nova posição no espaço n-dimensional é um novo conjunto de pesos e vieses, gerado a partir do conjunto anterior, com base na magnitude da inclinação.
- Quando o gradiente fica muito pequeno, acreditamos que dizemos tudo certo e corrigimos pesos e vieses
Retropropagação
A retropropagação é o algoritmo que nos fornece os valores da magnitude da inclinação por peso e viés. A retropropagação é a aplicação de uma conceituada regra do cálculo diferencial, campo da matemática que elenca como uma aspecto muda à medida que outro se altera. A retropropagação nos fornece a “velocidade” que representa como o erro da rede é alterado segundo a mudança em qualquer peso ou valor de viés. O gradiente descendente usa “velocidades”, multiplicadas por um fator de escala, conhecido como taxa de aprendizagem, a fim de avançar para a próxima posição no espaço n-dimensional, representado pelos n-pesos e vieses da rede.
O algoritmo se chama “retropropagação” porque calcula os valores de “velocidade” para cada peso e cada viés, começando com a camada de saída da rede e depois retrocedendo, camada por camada, até a camada de entrada. Ou seja, o algoritmo se move em sentido oposto pela rede para propagar o erro de uma camada para a camada anterior. O ponto fundamental é o seguinte: O gradiente descendente usa a direção de gradiente fornecida pelo algoritmo de retropropagação para atualizar iterativamente pesos e vieses; assim, minimiza o erro da rede no conjunto de treinamento.
Referências
Kneusel, Ronald T.. Como a Inteligência Artificial Funciona: Da Magia à Ciência
Comments (0)