Diferença no uso de gradiente normalizado e gradiente

15

Na configuração geral do algoritmo de descida em gradiente, temos que x n é o ponto atual, η é o tamanho da etapa e g r a d i e n t x n é o gradiente avaliado em x n . xn+1=xnηgradientxnxnηgradientxnxn

Eu já vi em algum algoritmo, as pessoas usam gradiente normalizado em vez de gradiente . Eu queria saber qual é a diferença no uso de gradiente normalizado e simplesmente gradiente .

Aprendiz
fonte
1
Posso fazer uma pergunta? como posso calcular o gradiente normalizado se já obtive o vetor gradiente? Se o vetor de gradiente for numérico grande, preciso normalizar o gradiente. Você poderia dar alguns exemplos intuitivos sobre a normalização do gradiente? Obrigado!

Respostas:

11

Em um algoritmo de descida de gradiente, o algoritmo prossegue encontrando uma direção na qual você pode encontrar a solução ideal. A direção ideal acaba sendo o gradiente. No entanto, como estamos interessados ​​apenas na direção e não necessariamente em quão longe nos movemos nessa direção, geralmente não estamos interessados ​​na magnitude do gradiente. Assim, o gradiente normalizado é bom o suficiente para nossos propósitos e deixamos que ηditar o quão longe queremos ir na direção computada. No entanto, se você usar descida de gradiente não normalizada, a qualquer momento a distância que você mover na direção ideal será ditada pela magnitude do gradiente (em essência ditado pela superfície da função objetivo, ou seja, um ponto em uma superfície íngreme terá alta magnitude, enquanto um ponto na superfície bastante plana terá baixa magnitude).

Pelo exposto acima, você deve ter percebido que a normalização do gradiente é um poder de controle adicional que você obtém (se é útil ou não, é algo do seu aplicativo específico). O que quero dizer com o exposto acima é:
1] Se você deseja garantir que seu algoritmo se mova em tamanhos de etapas fixos em cada iteração, convém usar a descida de gradiente normalizada com fixo . 2] Se você deseja garantir que o seu algoritmo se mova em tamanhos de etapas determinados por você, novamente você pode usar a descida de gradiente normalizada com sua função específica para o tamanho da etapa codificado em η .η
η
3] Se você deseja deixar a magnitude do gradiente ditar o tamanho da etapa, você usará descida de gradiente não normalizada. Existem várias outras variantes, como você pode deixar que a magnitude do gradiente decida o tamanho da etapa, mas você a limita e assim por diante.

Agora, o tamanho da etapa claramente influencia a velocidade da convergência e da estabilidade. Qual dos tamanhos de etapas acima funciona melhor depende apenas da sua aplicação (ou seja, função objetivo). Em certos casos, a relação entre velocidade de convergência, estabilidade e tamanho do passo pode ser analisada. Esse relacionamento pode dar uma dica sobre se você deseja ir com a descida de gradiente normalizada ou não normalizada.

Para resumir, não há diferença entre a descida do gradiente normalizada e a não normalizada (no que diz respeito à teoria por trás do algoritmo). No entanto, tem um impacto prático na velocidade da convergência e da estabilidade. A escolha de um sobre o outro é puramente baseada na aplicação / objetivo em questão.

TenaliRaman
fonte
Você pode adotar uma abordagem intermediária na qual normaliza com base no primeiro gradiente, por exemplo. Isso ainda tornaria o tamanho relativo do gradiente importante em termos de tamanho da etapa.
Dashnick
2

ηη

Brian Borchers
fonte
2

f(x)=xTxy(t)=x0 0/||x0 0||e-t. Portanto, a norma do gradiente diminui exponencialmente rapidamente à medida que você se aproxima do ponto crítico. Nesses casos, muitas vezes é melhor saltar de um lado para o outro algumas vezes do que abordá-lo muito lentamente. Em geral, porém, sabe-se que os métodos de primeira ordem têm uma convergência muito lenta em torno dos pontos críticos; portanto, você realmente não deve usá-los se realmente se preocupa com a precisão. Se você não puder calcular o Hessian de seu objetivo analiticamente, ainda poderá aproximar-se dele (BFGS).

fairidox
fonte