Os métodos de gradiente geralmente funcionam melhor com a otimização de que porque o gradiente de geralmente é mais bem dimensionado . Ou seja, ele tem um tamanho que reflete de forma consistente e útil a geometria da função objetivo, facilitando a seleção de um tamanho de etapa apropriado e a otimização em menos etapas.p ( x ) log p ( x )registrop ( x )p ( x )registrop ( x )
Para ver o que quer dizer, comparar o processo de optimização gradiente para e . Em qualquer ponto , o gradiente de éSe multiplicarmos por , obteremos o tamanho exato da etapa necessária para atingir o ideal global na origem, não importa o quef ( x ) = log p ( x ) = - x 2 x f ( x ) f ' ( x ) = - 2 x . 1 / 2 xp ( x ) = exp( - x2)f( x ) = logp ( x ) = - x2xf( X )
f′( x ) = - 2 x .
1 / 2xé. Isso significa que não precisamos trabalhar muito para obter um bom tamanho da etapa (ou "taxa de aprendizado" no jargão da ML). Não importa onde esteja nosso ponto inicial, basta definir nosso passo para metade do gradiente e estaremos na origem em um único passo. E se não soubermos o fator exato necessário, podemos escolher um tamanho de etapa em torno de 1, fazer uma pesquisa de linha e encontraremos um ótimo tamanho de etapa muito rapidamente, que funcione bem, não importa onde
é. Essa propriedade é robusta para conversão e dimensionamento de
f ( x ) . Embora a escala
f ( x ) faça com que a escala ideal de etapas seja diferente de 1/2, pelo menos a escala de etapas será a mesma, independentemente de
xxf( X )f( X )xé, portanto, precisamos encontrar apenas um parâmetro para obter um esquema de otimização baseado em gradiente eficiente.
Por outro lado, o gradiente de possui propriedades globais muito ruins para otimização. Temos p ′ ( x ) = f ′ ( x ) p ( x ) = - 2 x exp ( - x 2 ) . Isso multiplica o gradiente perfeitamente agradável e bem comportado - 2 x com um fator exp ( - x 2 ) que decai (mais rápido que) exponencialmente como xp ( x )
p′( x ) = f′( x ) p ( x ) = - 2 x exp( - x2) .
- 2 xexp( - x2)xaumenta. No
, já temos
exp ( - x 2 ) = 1,4 ⋅ 10 - 11 , de modo que um passo ao longo do gradiente de vector é de cerca de
10 - 11 vezes demasiado pequena. Para obter um tamanho de passo razoável em direção ao ótimo, teríamos que escalar o gradiente pelo inverso disso, uma constante enorme
∼ 10 11 . Um gradiente tão mal dimensionado é pior do que inútil para fins de otimização - seria melhor tentar apenas uma etapa unitária na direção da subida do que definir nossa etapa escalando contra
p ′ ( x )x = 5exp( - x2) = 1,4 ⋅ 10- 1110- 11~ 1011p′( X )! (Em muitas variáveis,
se torna um pouco mais útil, pois pelo menos obtemos informações direcionais do gradiente, mas o problema de dimensionamento permanece.)
p′( X )
Em geral, não há garantia de que o tenha excelentes propriedades de escala de gradiente como este exemplo de brinquedo, especialmente quando tivermos mais de uma variável. No entanto, para praticamente qualquer problema não trivial, o log p ( x ) será muito, muito melhor que o p ( x ) . Isso ocorre porque a probabilidade é de um grande produto com vários termos, e o log transforma esse produto em uma soma, conforme observado em várias outras respostas. Desde que os termos de probabilidade sejam bem comportados do ponto de vista da otimização, seu log geralmente é bem comportado e a soma de funções bem comportadas é bem comportada. Porregistrop ( x )registrop ( x )p ( x )f′ ′( X )