Na maioria das tarefas de aprendizado de máquina, nas quais é possível formular alguma probabilidade que deve ser maximizada, na verdade, otimizaríamos a probabilidade do log vez da probabilidade para alguns parâmetros . Por exemplo, no treinamento de probabilidade máxima, geralmente é a probabilidade de log. Ao fazer isso com algum método de gradiente, isso envolve um fator:
Veja aqui ou aqui para alguns exemplos.
Obviamente, a otimização é equivalente, mas o gradiente será diferente, portanto, qualquer método baseado em gradiente se comportará diferente (especialmente métodos de gradiente estocástico). Existe alguma justificativa para que o gradiente funcione melhor que o gradiente ?
Respostas:
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 ) = - x2 x f( X )
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 )
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 )
fonte
Underflow
O computador usa uma representação de frações de ponto flutuante de dígito limitado, multiplicando tantas probabilidades que é garantida uma proximidade muito próxima de zero.
Com o , não temos esse problema.l o g
fonte
O logaritmo da probabilidade de múltiplas probabilidades conjuntas simplifica a soma dos logaritmos das probabilidades individuais (e a regra da soma é mais fácil do que a regra do produto para diferenciação)
O logaritmo de um membro da família de distribuições de probabilidade exponencial (que inclui o normal onipresente) é polinomial nos parâmetros (ou seja, a probabilidade máxima reduz os mínimos quadrados para distribuições normais)
A última forma é mais numericamente estável e simbolicamente mais fácil de diferenciar do que a anterior.
Por último, mas não menos importante, o logaritmo é uma transformação monotônica que preserva as localizações dos extremos (em particular, os parâmetros estimados em probabilidade máxima são idênticos para a formulação original e a transformação transformada em log)
fonte
É muito mais fácil usar uma derivada da soma dos logaritmos do que usar uma derivada do produto, que contém, digamos, 100 multiplicadores.
fonte
Como regra geral, o problema de otimização mais básico e fácil é otimizar uma função quadrática. Você pode encontrar facilmente o melhor de uma função, não importa por onde começar. Como isso se manifesta depende do método específico, mas quanto mais próxima sua função de uma quadrática, melhor.
Conforme observado por TemplateRex, em uma ampla variedade de problemas, as probabilidades que entram no cálculo da função de probabilidade provêm da distribuição normal ou são aproximadas por ela. Portanto, se você trabalha no log, obtém uma boa função quadrática. Considerando que, se você trabalha com as probabilidades, tem uma função que
Qual função você prefere otimizar, isso ou aquilo ?
(Na verdade, foi fácil; em aplicações práticas, sua pesquisa pode começar tão longe do ideal que os valores e gradientes da função, mesmo que você possa calculá-los numericamente, sejam indistinguíveis de 0 e inúteis para os propósitos da otimização. Mas a transformação para uma função quadrática torna isso um pedaço de bolo.)
Observe que isso é completamente consistente com os problemas de estabilidade numérica já mencionados. O motivo pelo qual a escala do log é necessária para trabalhar com essa função é exatamente o mesmo motivo pelo qual a probabilidade do log é muito melhor comportada (para otimização e outros fins) do que a original.
Você também pode abordar isso de outra maneira. Mesmo se não houvesse vantagem no log (o que existe) - usaremos a escala de log de qualquer maneira para derivações e cálculos; então, por que motivo aplicar a transformação exp apenas para calcular o gradiente? Também podemos permanecer consistentes com o registro.
fonte
Ao fazer um log, simplesmente melhoramos a faixa dinâmica de qualquer algoritmo de otimização, permitindo que ele trabalhe com valores extremamente grandes ou pequenos da mesma maneira.
fonte
Algumas respostas legais já foram dadas. Mas eu encontrei recentemente um novo:
fonte