Diferença entre decaimento do peso líquido neural e taxa de aprendizado

94

No contexto das redes neurais, qual é a diferença entre a taxa de aprendizado e a queda de peso?

Ryan Zotti
fonte

Respostas:

161

A taxa de aprendizado é um parâmetro que determina o quanto uma etapa de atualização influencia o valor atual dos pesos. Embora a redução de peso seja um termo adicional na regra de atualização de peso que faz com que os pesos decaem exponencialmente para zero, se nenhuma outra atualização estiver agendada.

Então, digamos que temos uma função de custo ou erro que queremos minimizar. A descida em gradiente nos diz para modificar os pesos na direção da descida mais íngreme em : onde é a taxa de aprendizado e, se for grande, você terá uma modificação correspondentemente grande dos pesos (em geral, não deve ser muito grande, caso contrário, você excederá o mínimo local em sua função de custo).w E w iw i - η EE(w)wE

wiwiηEwi,
ηwi

Para limitar efetivamente o número de parâmetros livres em seu modelo, a fim de evitar o excesso de ajuste, é possível regularizar a função de custo. Uma maneira fácil de fazer isso é introduzir um Gaussiano médio zero acima dos pesos, o que equivale a alterar a função de custo para . Na prática, isso penaliza grandes pesos e limita efetivamente a liberdade em seu modelo. O parâmetro de regularização determina como você troca o custo original com a penalização de grandes pesos.E~(w)=E(w)+λ2w2λE

Aplicando gradiente descendente a essa nova função de custo, obtemos: O novo termo proveniente da regularização faz com que o peso decaia na proporção de seu tamanho.

wiwiηEwiηλwi.
ηλwi
Mrig
fonte
2
Obrigado pela explicação útil. Uma pergunta: no pacote R "nnet" existe um parâmetro usado no treinamento da rede neural chamado "decaimento". Você sabe se a deterioração corresponde ao seu lambda ou ao seu eta * lambda?
Andrea Ianni 5
3
Eu também acrescentaria que a redução de peso é a mesma coisa que a regularização de L2 para aqueles que estão familiarizados com o último.
Sergei
2
@Sergei, por favor, não, pare de espalhar esta desinformação! Isso só é verdade no caso muito especial da baunilha SGD. Consulte o Decreto de fixação do peso para o papel Adam .
LucasB
Para esclarecer: no momento da redação deste artigo, os documentos do PyTorch para Adam usam o termo "decaimento de peso" (chamado entre parênteses "penalidade de L2") para se referir ao que eu acho que esses autores chamam de regulação de L2. Se bem entendi, essa resposta se refere ao SGD sem momento, onde os dois são equivalentes.
Dylan F
14

Além da resposta de @mrig (+1), para muitas aplicações práticas de redes neurais, é melhor usar um algoritmo de otimização mais avançado, como Levenberg-Marquardt (redes de pequeno e médio porte) ou descida em gradiente conjugado em escala (médio-grande redes), pois elas serão muito mais rápidas e não há necessidade de definir a taxa de aprendizado (ambos os algoritmos adaptam essencialmente a taxa de aprendizado usando curvatura e gradiente). Qualquer pacote ou biblioteca de rede neural decente terá implementações de um desses métodos, qualquer pacote que não o faça provavelmente será obsoleto. Eu uso a biblioteca do NETLAB para o MATLAB, que é um ótimo kit.

Dikran Marsupial
fonte
E os algos de otimização baseados em Rprop? Como eles se comparam?
poder
4
Acho que a maioria das pessoas está usando variantes de rprop + momentum, como RMSProp, adagrad, SGD + nesterov momentum. Veja a classe cs231 .
facuq
1
Bem, é claro que depende da sua aplicação. Mas para grandes conjuntos de dados / redes que estão na moda agora, acho que as pessoas estão encontrando os algoritmos que mencionei mais adequados.
facuq
6
@DikranMarsupial pode ser porque hoje em dia (quase cinco anos após a sua resposta) as pessoas tendem a usar o Adam?
ComputerScientist
2
Na verdade, esta resposta está muito desatualizada. Esses algoritmos não são práticos com a escala de modelos e conjuntos de dados que são típicos hoje em dia, e os pacotes mais usados, que certamente não são obsoletos, não possuem esses algoritmos.
LucasB